{"id":"126aac7660bdfad2eeca903ba3be3259","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@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\";\nimport {AccessControl} from \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract TestCurrency is ERC20, AccessControl {\n  bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n  bytes32 public constant BURNER_ROLE = keccak256(\"BURNER_ROLE\");\n\n  uint8 internal immutable _decimals;\n\n  constructor(\n    string memory name_,\n    string memory symbol_,\n    uint256 initialSupply,\n    uint8 decimals_,\n    address admin\n  ) ERC20(name_, symbol_) {\n    _decimals = decimals_;\n    _mint(msg.sender, initialSupply);\n    _grantRole(DEFAULT_ADMIN_ROLE, admin);\n  }\n\n  function decimals() public view virtual override returns (uint8) {\n    return _decimals;\n  }\n\n  function mint(address recipient, uint256 amount) external onlyRole(MINTER_ROLE) {\n    // require(msg.sender == _owner, \"Only owner can mint\");\n    return _mint(recipient, amount);\n  }\n\n  function burn(address recipient, uint256 amount) external onlyRole(BURNER_ROLE) {\n    // require(msg.sender == _owner, \"Only owner can burn\");\n    return _burn(recipient, amount);\n  }\n}\n"},"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n    struct RoleData {\n        mapping(address account => bool) hasRole;\n        bytes32 adminRole;\n    }\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n    /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n    struct AccessControlStorage {\n        mapping(bytes32 role => RoleData) _roles;\n    }\n\n    // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n    bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n    function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n        assembly {\n            $.slot := AccessControlStorageLocation\n        }\n    }\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with an {AccessControlUnauthorizedAccount} error including the required role.\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    function __AccessControl_init() internal onlyInitializing {\n    }\n\n    function __AccessControl_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        return $._roles[role].hasRole[account];\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n     * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n     * is missing `role`.\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert AccessControlUnauthorizedAccount(account, role);\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        return $._roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n        if (callerConfirmation != _msgSender()) {\n            revert AccessControlBadConfirmation();\n        }\n\n        _revokeRole(role, callerConfirmation);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        $._roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        if (!hasRole(role, account)) {\n            $._roles[role].hasRole[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n        AccessControlStorage storage $ = _getAccessControlStorage();\n        if (hasRole(role, account)) {\n            $._roles[role].hasRole[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.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 reininitialization) 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 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        assembly {\n            $.slot := INITIALIZABLE_STORAGE\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.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 */\nabstract contract UUPSUpgradeable is Initializable, 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    function __UUPSUpgradeable_init() internal onlyInitializing {\n    }\n\n    function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\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 virtual 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     * See {_onlyProxy}.\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-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 \"../../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     * All two of these values are immutable: they can only be set once during\n     * 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    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        ERC20Storage storage $ = _getERC20Storage();\n        return $._totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\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    /**\n     * @dev See {IERC20-allowance}.\n     */\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 set 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.1.0) (token/ERC20/extensions/ERC4626.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 {ERC20Upgradeable} from \"../ERC20Upgradeable.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {IERC4626} from \"@openzeppelin/contracts/interfaces/IERC4626.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {Initializable} from \"../../../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: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 */\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        (bool success, bytes memory encodedDecimals) = address(asset_).staticcall(\n            abi.encodeCall(IERC20Metadata.decimals, ())\n        );\n        if (success && encodedDecimals.length >= 32) {\n            uint256 returnedDecimals = abi.decode(encodedDecimals, (uint256));\n            if (returnedDecimals <= type(uint8).max) {\n                return (true, uint8(returnedDecimals));\n            }\n        }\n        return (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    /** @dev See {IERC4626-asset}. */\n    function asset() public view virtual returns (address) {\n        ERC4626Storage storage $ = _getERC4626Storage();\n        return address($._asset);\n    }\n\n    /** @dev See {IERC4626-totalAssets}. */\n    function totalAssets() public view virtual returns (uint256) {\n        ERC4626Storage storage $ = _getERC4626Storage();\n        return $._asset.balanceOf(address(this));\n    }\n\n    /** @dev See {IERC4626-convertToShares}. */\n    function convertToShares(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /** @dev See {IERC4626-convertToAssets}. */\n    function convertToAssets(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /** @dev See {IERC4626-maxDeposit}. */\n    function maxDeposit(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /** @dev See {IERC4626-maxMint}. */\n    function maxMint(address) public view virtual returns (uint256) {\n        return type(uint256).max;\n    }\n\n    /** @dev See {IERC4626-maxWithdraw}. */\n    function maxWithdraw(address owner) public view virtual returns (uint256) {\n        return _convertToAssets(balanceOf(owner), Math.Rounding.Floor);\n    }\n\n    /** @dev See {IERC4626-maxRedeem}. */\n    function maxRedeem(address owner) public view virtual returns (uint256) {\n        return balanceOf(owner);\n    }\n\n    /** @dev See {IERC4626-previewDeposit}. */\n    function previewDeposit(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Floor);\n    }\n\n    /** @dev See {IERC4626-previewMint}. */\n    function previewMint(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Ceil);\n    }\n\n    /** @dev See {IERC4626-previewWithdraw}. */\n    function previewWithdraw(uint256 assets) public view virtual returns (uint256) {\n        return _convertToShares(assets, Math.Rounding.Ceil);\n    }\n\n    /** @dev See {IERC4626-previewRedeem}. */\n    function previewRedeem(uint256 shares) public view virtual returns (uint256) {\n        return _convertToAssets(shares, Math.Rounding.Floor);\n    }\n\n    /** @dev See {IERC4626-deposit}. */\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    /** @dev See {IERC4626-mint}. */\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    /** @dev See {IERC4626-withdraw}. */\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    /** @dev See {IERC4626-redeem}. */\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        ERC4626Storage storage $ = _getERC4626Storage();\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($._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        ERC4626Storage storage $ = _getERC4626Storage();\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($._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 \"../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-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n    function __ERC165_init() internal onlyInitializing {\n    }\n\n    function __ERC165_init_unchained() internal onlyInitializing {\n    }\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/access/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"./IAccessControl.sol\";\nimport {Context} from \"../utils/Context.sol\";\nimport {ERC165} from \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n    struct RoleData {\n        mapping(address account => bool) hasRole;\n        bytes32 adminRole;\n    }\n\n    mapping(bytes32 role => RoleData) private _roles;\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with an {AccessControlUnauthorizedAccount} error including the required role.\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role);\n        _;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n        return _roles[role].hasRole[account];\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n     * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n     */\n    function _checkRole(bytes32 role) internal view virtual {\n        _checkRole(role, _msgSender());\n    }\n\n    /**\n     * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n     * is missing `role`.\n     */\n    function _checkRole(bytes32 role, address account) internal view virtual {\n        if (!hasRole(role, account)) {\n            revert AccessControlUnauthorizedAccount(account, role);\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n        return _roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been revoked `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n        if (callerConfirmation != _msgSender()) {\n            revert AccessControlBadConfirmation();\n        }\n\n        _revokeRole(role, callerConfirmation);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        bytes32 previousAdminRole = getRoleAdmin(role);\n        _roles[role].adminRole = adminRole;\n        emit RoleAdminChanged(role, previousAdminRole, adminRole);\n    }\n\n    /**\n     * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleGranted} event.\n     */\n    function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n        if (!hasRole(role, account)) {\n            _roles[role].hasRole[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    /**\n     * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n     *\n     * Internal function without access restriction.\n     *\n     * May emit a {RoleRevoked} event.\n     */\n    function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n        if (hasRole(role, account)) {\n            _roles[role].hasRole[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n            return true;\n        } else {\n            return false;\n        }\n    }\n}\n"},"@openzeppelin/contracts/access/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n    /**\n     * @dev The `account` is missing a role.\n     */\n    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n    /**\n     * @dev The caller of a function is not the expected one.\n     *\n     * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n     */\n    error AccessControlBadConfirmation();\n\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n     * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) external view returns (bool);\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) external;\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `callerConfirmation`.\n     */\n    function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n"},"@openzeppelin/contracts/access/manager/AccessManager.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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\";\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 structures fit 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 keccak256(abi.encode(target, selector));\n    }\n}\n"},"@openzeppelin/contracts/access/manager/IAccessManaged.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/manager/IAccessManaged.sol)\n\npragma solidity ^0.8.20;\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.1.0) (access/manager/IAccessManager.sol)\n\npragma solidity ^0.8.20;\n\nimport {Time} from \"../../utils/types/Time.sol\";\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 `immediate` 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 case 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 operation 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 contract 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.1.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\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.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\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-20.\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.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\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.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\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.0.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.20;\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.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\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.0.0) (interfaces/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\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.1.0) (interfaces/IERC4626.sol)\n\npragma solidity ^0.8.20;\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 Mints shares Vault shares to receiver by depositing exactly amount of 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\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 by depositing amount of 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 redeemption 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.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\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.1.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.20;\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.1.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.0.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(0, 0, 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, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, 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/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual 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    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\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    /**\n     * @dev See {IERC20-allowance}.\n     */\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 set 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/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\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.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\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.1.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\nimport {Address} from \"../../../utils/Address.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        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\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        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\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        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n        if (!_callOptionalReturnBool(token, approvalCall)) {\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n            _callOptionalReturn(token, approvalCall);\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 rely 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 rely 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     * Opposedly, 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 high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return 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 data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            // bubble errors\n            if iszero(success) {\n                let ptr := mload(0x40)\n                returndatacopy(ptr, 0, returndatasize())\n                revert(ptr, returndatasize())\n            }\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return 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 data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n     */\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n        bool success;\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n    }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.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\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        if (!success) {\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, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata);\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, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\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, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata);\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    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata\n    ) internal view returns (bytes memory) {\n        if (!success) {\n            _revert(returndata);\n        } else {\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 (returndata.length == 0 && target.code.length == 0) {\n                revert AddressEmptyCode(target);\n            }\n            return returndata;\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            _revert(returndata);\n        } else {\n            return returndata;\n        }\n    }\n\n    /**\n     * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n     */\n    function _revert(bytes memory returndata) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            assembly (\"memory-safe\") {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\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/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/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\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/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 Returns the addition of two unsigned integers, with an 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            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with an success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\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            if (b == 0) return (false, 0);\n            return (true, a / b);\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            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. 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. `a ? b : c`) 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            // 512-bit multiply [prod1 prod0] = 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 = prod1 * 2²⁵⁶ + prod0.\n            uint256 prod0 = x * y; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 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 prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= prod1) {\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 [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, 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 {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, 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 prod1 into prod0.\n            prod0 |= prod1 * 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 prod1\n            // is no longer required.\n            result = prod0 * 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 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 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        uint256 exp;\n        unchecked {\n            exp = 128 * SafeCast.toUint(value > (1 << 128) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 64 * SafeCast.toUint(value > (1 << 64) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 32 * SafeCast.toUint(value > (1 << 32) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 16 * SafeCast.toUint(value > (1 << 16) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 8 * SafeCast.toUint(value > (1 << 8) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 4 * SafeCast.toUint(value > (1 << 4) - 1);\n            value >>= exp;\n            result += exp;\n\n            exp = 2 * SafeCast.toUint(value > (1 << 2) - 1);\n            value >>= exp;\n            result += exp;\n\n            result += SafeCast.toUint(value > 1);\n        }\n        return result;\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 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        uint256 isGt;\n        unchecked {\n            isGt = SafeCast.toUint(value > (1 << 128) - 1);\n            value >>= isGt * 128;\n            result += isGt * 16;\n\n            isGt = SafeCast.toUint(value > (1 << 64) - 1);\n            value >>= isGt * 64;\n            result += isGt * 8;\n\n            isGt = SafeCast.toUint(value > (1 << 32) - 1);\n            value >>= isGt * 32;\n            result += isGt * 4;\n\n            isGt = SafeCast.toUint(value > (1 << 16) - 1);\n            value >>= isGt * 16;\n            result += isGt * 2;\n\n            result += SafeCast.toUint(value > (1 << 8) - 1);\n        }\n        return result;\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"},"@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/Multicall.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (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 {_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 * {_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) external 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.1.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 transitions 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/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/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 \"./AccessManagedProxy.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    __UUPSUpgradeable_init();\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 bytes4(keccak256(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 AccessManagedProxy.AccessManagedUnauthorized(msg.sender);\n  }\n}\n"},"contracts/AccessManagedProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {ERC1967Proxy} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport {IAccessManager} from \"@openzeppelin/contracts/access/manager/IAccessManager.sol\";\n\n/**\n * @title AccessManagedProxy\n * @dev Proxy contract using IAccessManager to manage access control before delegating calls.\n *\n *      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 *      For gas efficiency, the ACCESS_MANAGER is immutable, so take care you don't lose control of it, otherwise\n *      it will make your contract inaccesible or other bad things will happen.\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 */\ncontract AccessManagedProxy is ERC1967Proxy {\n  IAccessManager public immutable ACCESS_MANAGER;\n\n  // Error copied from IAccessManaged\n  error AccessManagedUnauthorized(address caller);\n\n  constructor(\n    address implementation,\n    bytes memory _data,\n    IAccessManager manager\n  ) payable ERC1967Proxy(implementation, _data) {\n    ACCESS_MANAGER = manager;\n  }\n\n  /**\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   *\n   *      This function does not return to its internal call site, it will return directly to the external caller.\n   *\n   *      It uses `msg.sender`, so it will ignore any metatx like ERC-2771 or other ways of changing the sender.\n   *\n   *      Only let's the call go throught for immediate access, but scheduled calls can be made throught the\n   *      ACCESS_MANAGER. It doesn't support the `.consumeScheduledOp(...)` flow that other access managed contracts\n   *      support.\n   */\n  function _delegate(address implementation) internal virtual override {\n    (bool immediate, ) = ACCESS_MANAGER.canCall(msg.sender, address(this), bytes4(msg.data[0:4]));\n    if (!immediate) revert AccessManagedUnauthorized(msg.sender);\n    super._delegate(implementation);\n  }\n}\n"},"contracts/CompoundV3ERC4626.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 {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {SwapLibrary} from \"@ensuro/swaplibrary/contracts/SwapLibrary.sol\";\nimport {PermissionedERC4626} from \"./PermissionedERC4626.sol\";\n\n/**\n * @title CompoundV3ERC4626\n * @dev Vault that invests/deinvests into CompoundV3 on each deposit/withdraw. Also, has a method to claim the rewards,\n *      swap them, and reinvests the result into CompoundV3.\n *      Entering or exiting the vault is permissioned, requires LP_ROLE.\n *\n *      Use it at your own risk, this is a proof of concept, but it's not used by the authors, we prefer using the\n *      pluggable strategies (See {CompoundV3InvestStrategy})\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract CompoundV3ERC4626 is PermissionedERC4626 {\n  using SafeERC20 for IERC20Metadata;\n  using SwapLibrary for SwapLibrary.SwapConfig;\n\n  bytes32 public constant HARVEST_ROLE = keccak256(\"HARVEST_ROLE\");\n  bytes32 public constant SWAP_ADMIN_ROLE = keccak256(\"SWAP_ADMIN_ROLE\");\n\n  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n  ICompoundV3 internal immutable _cToken;\n  /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n  ICometRewards internal immutable _rewardsManager;\n\n  SwapLibrary.SwapConfig internal _swapConfig;\n\n  event RewardsClaimed(address token, uint256 rewards, uint256 receivedInAsset);\n\n  event SwapConfigChanged(SwapLibrary.SwapConfig oldConfig, SwapLibrary.SwapConfig newConfig);\n\n  /// @custom:oz-upgrades-unsafe-allow constructor\n  constructor(ICompoundV3 cToken_, ICometRewards rewardsManager_) {\n    _cToken = cToken_;\n    _rewardsManager = rewardsManager_;\n    _disableInitializers();\n  }\n\n  /**\n   * @dev Initializes the CompoundV3ERC4626\n   */\n  function initialize(\n    string memory name_,\n    string memory symbol_,\n    address admin_,\n    SwapLibrary.SwapConfig calldata swapConfig_\n  ) public virtual initializer {\n    __CompoundV3ERC4626_init(name_, symbol_, admin_, swapConfig_);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __CompoundV3ERC4626_init(\n    string memory name_,\n    string memory symbol_,\n    address admin_,\n    SwapLibrary.SwapConfig calldata swapConfig_\n  ) internal onlyInitializing {\n    __PermissionedERC4626_init(name_, symbol_, admin_, IERC20(_cToken.baseToken()));\n    __CompoundV3ERC4626_init_unchained(swapConfig_);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __CompoundV3ERC4626_init_unchained(SwapLibrary.SwapConfig calldata swapConfig_) internal onlyInitializing {\n    swapConfig_.validate();\n    _swapConfig = swapConfig_;\n  }\n\n  /**\n   * @dev See {IERC4626-maxWithdraw}.\n   */\n  function maxWithdraw(address owner) public view virtual override returns (uint256) {\n    if (_cToken.isWithdrawPaused()) return 0;\n    return super.maxWithdraw(owner);\n  }\n\n  /**\n   * @dev See {IERC4626-maxRedeem}.\n   */\n  function maxRedeem(address owner) public view virtual override returns (uint256) {\n    if (_cToken.isWithdrawPaused()) return 0;\n    return super.maxRedeem(owner);\n  }\n\n  /**\n   * @dev See {IERC4626-maxDeposit}.\n   */\n  function maxDeposit(address owner) public view virtual override returns (uint256) {\n    if (_cToken.isSupplyPaused()) return 0;\n    return super.maxDeposit(owner);\n  }\n\n  /**\n   * @dev See {IERC4626-maxMint}.\n   */\n  function maxMint(address owner) public view virtual override returns (uint256) {\n    if (_cToken.isSupplyPaused()) return 0;\n    return super.maxMint(owner);\n  }\n\n  /**\n   * @dev See {IERC4626-totalAssets}.\n   */\n  function totalAssets() public view virtual override returns (uint256 assets) {\n    return _cToken.balanceOf(address(this));\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    _cToken.withdraw(address(asset()), assets);\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    _supply(assets);\n  }\n\n  function _supply(uint256 assets) internal {\n    IERC20Metadata(asset()).approve(address(_cToken), assets);\n    _cToken.supply(address(asset()), assets);\n  }\n\n  function harvestRewards(uint256 price) external onlyRole(HARVEST_ROLE) {\n    (address reward, , ) = _rewardsManager.rewardConfig(address(_cToken));\n    if (reward == address(0)) return;\n    _rewardsManager.claim(address(_cToken), address(this), true);\n\n    uint256 earned = IERC20Metadata(reward).balanceOf(address(this));\n    uint256 reinvestAmount = _swapConfig.exactInput(reward, asset(), earned, price);\n    _supply(reinvestAmount);\n    emit RewardsClaimed(reward, earned, reinvestAmount);\n  }\n\n  function setSwapConfig(SwapLibrary.SwapConfig calldata swapConfig_) external onlyRole(SWAP_ADMIN_ROLE) {\n    swapConfig_.validate();\n    emit SwapConfigChanged(_swapConfig, swapConfig_);\n    _swapConfig = swapConfig_;\n  }\n\n  function getSwapConfig() public view returns (SwapLibrary.SwapConfig memory) {\n    return _swapConfig;\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[47] private __gap;\n}\n"},"contracts/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\";\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    _supply(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/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/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/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/@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/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 {PermissionedERC4626} from \"../PermissionedERC4626.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 PermissionedERC4626, IExposeStorage {\n  using SafeERC20 for IERC20Metadata;\n  using Address for address;\n  using InvestStrategyClient for IInvestStrategy;\n\n  bytes32 public constant SET_STRATEGY_ROLE = keccak256(\"SET_STRATEGY_ROLE\");\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 admin_ User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\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    address admin_,\n    IERC20 asset_,\n    IInvestStrategy strategy_,\n    bytes memory initStrategyData\n  ) public virtual initializer {\n    __SingleStrategyERC4626_init(name_, symbol_, admin_, 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    address admin_,\n    IERC20 asset_,\n    IInvestStrategy strategy_,\n    bytes memory initStrategyData\n  ) internal onlyInitializing {\n    __PermissionedERC4626_init(name_, symbol_, admin_, 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(\n    IInvestStrategy newStrategy,\n    bytes memory initStrategyData,\n    bool force\n  ) external onlyRole(SET_STRATEGY_ROLE) {\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  /**\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/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 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/MultiStrategyERC4626.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 {ERC4626Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\";\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {PermissionedERC4626} from \"./PermissionedERC4626.sol\";\nimport {MSVBase} from \"./MSVBase.sol\";\nimport {IInvestStrategy} from \"./interfaces/IInvestStrategy.sol\";\n\n/**\n * @title MultiStrategyERC4626\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 * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract MultiStrategyERC4626 is MSVBase, PermissionedERC4626 {\n  bytes32 public constant STRATEGY_ADMIN_ROLE = keccak256(\"STRATEGY_ADMIN_ROLE\");\n  bytes32 public constant QUEUE_ADMIN_ROLE = keccak256(\"QUEUE_ADMIN_ROLE\");\n  bytes32 public constant REBALANCER_ROLE = keccak256(\"REBALANCER_ROLE\");\n  bytes32 public constant FORWARD_TO_STRATEGY_ROLE = keccak256(\"FORWARD_TO_STRATEGY_ROLE\");\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 admin_ User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\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    address admin_,\n    IERC20 asset_,\n    IInvestStrategy[] memory strategies_,\n    bytes[] memory initStrategyDatas,\n    uint8[] memory depositQueue_,\n    uint8[] memory withdrawQueue_\n  ) public virtual initializer {\n    __MultiStrategyERC4626_init(\n      name_,\n      symbol_,\n      admin_,\n      asset_,\n      strategies_,\n      initStrategyDatas,\n      depositQueue_,\n      withdrawQueue_\n    );\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __MultiStrategyERC4626_init(\n    string memory name_,\n    string memory symbol_,\n    address admin_,\n    IERC20 asset_,\n    IInvestStrategy[] memory strategies_,\n    bytes[] memory initStrategyDatas,\n    uint8[] memory depositQueue_,\n    uint8[] memory withdrawQueue_\n  ) internal onlyInitializing {\n    __PermissionedERC4626_init(name_, symbol_, admin_, asset_);\n    __MSVBase_init_unchained(strategies_, initStrategyDatas, depositQueue_, withdrawQueue_);\n  }\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 owner) public view virtual override returns (uint256 ret) {\n    if (super.maxDeposit(owner) == 0) return 0;\n    return _maxDepositable();\n  }\n\n  /// @inheritdoc IERC4626\n  function maxMint(address owner) public view virtual override returns (uint256) {\n    if (super.maxMint(owner) == 0) return 0;\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    // Transfers the assets from the caller and supplies to compound\n    super._deposit(caller, receiver, assets, shares);\n    _depositToStrategies(assets);\n  }\n\n  /// @inheritdoc MSVBase\n  function replaceStrategy(\n    uint8 strategyIndex,\n    IInvestStrategy newStrategy,\n    bytes memory initStrategyData,\n    bool force\n  ) public override onlyRole(STRATEGY_ADMIN_ROLE) {\n    super.replaceStrategy(strategyIndex, newStrategy, initStrategyData, force);\n  }\n\n  /// @inheritdoc MSVBase\n  function addStrategy(\n    IInvestStrategy newStrategy,\n    bytes memory initStrategyData\n  ) public override onlyRole(STRATEGY_ADMIN_ROLE) {\n    super.addStrategy(newStrategy, initStrategyData);\n  }\n\n  /// @inheritdoc MSVBase\n  function removeStrategy(uint8 strategyIndex, bool force) public override onlyRole(STRATEGY_ADMIN_ROLE) {\n    super.removeStrategy(strategyIndex, force);\n  }\n\n  /// @inheritdoc MSVBase\n  function changeDepositQueue(uint8[] memory newDepositQueue_) public override onlyRole(QUEUE_ADMIN_ROLE) {\n    super.changeDepositQueue(newDepositQueue_);\n  }\n\n  /// @inheritdoc MSVBase\n  function changeWithdrawQueue(uint8[] memory newWithdrawQueue_) public override onlyRole(QUEUE_ADMIN_ROLE) {\n    super.changeWithdrawQueue(newWithdrawQueue_);\n  }\n\n  /// @inheritdoc MSVBase\n  function rebalance(\n    uint8 strategyFromIdx,\n    uint8 strategyToIdx,\n    uint256 amount\n  ) public override onlyRole(REBALANCER_ROLE) returns (uint256) {\n    return super.rebalance(strategyFromIdx, strategyToIdx, amount);\n  }\n\n  /**\n   * @dev Returns the AccessControl role required to call forwardToStrategy on a given strategy and 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 role The bytes32 role required to execute the call\n   */\n  function getForwardToStrategyRole(uint8 strategyIndex, uint8 method) public view returns (bytes32 role) {\n    address strategy = address(_strategies[strategyIndex]);\n    return\n      bytes32(bytes20(strategy)) ^\n      (bytes32(bytes1(method)) >> 160) ^\n      (bytes32(bytes1(strategyIndex)) >> 168) ^\n      FORWARD_TO_STRATEGY_ROLE;\n  }\n\n  /// @inheritdoc MSVBase\n  // solhint-disable no-empty-blocks\n  function _checkForwardToStrategy(\n    uint8 strategyIndex,\n    uint8 method,\n    bytes memory\n  )\n    internal\n    view\n    override\n    onlyRole(FORWARD_TO_STRATEGY_ROLE)\n    onlyRole(getForwardToStrategyRole(strategyIndex, method))\n  {}\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.\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    SlotIndex slot = _slotIndex();\n\n    // Check delta doesn't exceed the threshold\n    SlotIndex prevSlot = SlotIndex.wrap(SlotIndex.unwrap(slot) - 1);\n    LOMStorage storage $ = _getLOMStorage();\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) revert LimitReached(deltaLastTwoSlots, $.limit);\n\n    // Update the delta and pass the message to parent contract\n    $.assetsDelta[slot] -= assets.toInt256();\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    // Just update the delta and pass the message to parent contract\n    SlotIndex slot = _slotIndex();\n    _getLOMStorage().assetsDelta[slot] += assets.toInt256();\n    super._deposit(caller, receiver, assets, shares);\n  }\n}\n"},"contracts/PermissionedERC4626.sol":{"content":"// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {AccessControlUpgradeable} from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport {ERC4626Upgradeable} from \"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {UUPSUpgradeable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n/**\n * @title PermissionedERC4626\n * @dev Base class for permissioned ERC-4626 that use AccessControl for the access permissions.\n *\n *      Not used at the moment, since we started to use AccessManagedProxy contracts.\n *\n * @custom:security-contact security@ensuro.co\n * @author Ensuro\n */\ncontract PermissionedERC4626 is AccessControlUpgradeable, UUPSUpgradeable, ERC4626Upgradeable {\n  using SafeERC20 for IERC20Metadata;\n\n  bytes32 public constant LP_ROLE = keccak256(\"LP_ROLE\");\n  bytes32 public constant GUARDIAN_ROLE = keccak256(\"GUARDIAN_ROLE\");\n\n  error InvalidAsset(address asset);\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __PermissionedERC4626_init(\n    string memory name_,\n    string memory symbol_,\n    address admin_,\n    IERC20 asset_\n  ) internal onlyInitializing {\n    __UUPSUpgradeable_init();\n    __AccessControl_init();\n    if (address(asset_) == address(0)) revert InvalidAsset(address(0));\n    __ERC4626_init(asset_);\n    __ERC20_init(name_, symbol_);\n    __PermissionedERC4626_init_unchained(admin_);\n  }\n\n  // solhint-disable-next-line func-name-mixedcase\n  function __PermissionedERC4626_init_unchained(address admin_) internal onlyInitializing {\n    _grantRole(DEFAULT_ADMIN_ROLE, admin_);\n  }\n\n  // solhint-disable-next-line no-empty-blocks\n  function _authorizeUpgrade(address newImpl) internal view override onlyRole(GUARDIAN_ROLE) {}\n\n  function setRoleAdmin(bytes32 role, bytes32 adminRole) external onlyRole(DEFAULT_ADMIN_ROLE) {\n    _setRoleAdmin(role, adminRole);\n  }\n\n  /**\n   * @dev See {IERC4626-maxDeposit}.\n   */\n  function maxDeposit(address owner) public view virtual override returns (uint256) {\n    if (!hasRole(LP_ROLE, owner)) return 0;\n    return super.maxDeposit(owner);\n  }\n\n  /**\n   * @dev See {IERC4626-maxMint}.\n   */\n  function maxMint(address owner) public view virtual override returns (uint256) {\n    if (!hasRole(LP_ROLE, owner)) return 0;\n    return super.maxMint(owner);\n  }\n}\n"},"contracts/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/SwapStableInvestStrategy.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 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 IInvestStrategy {\n  using SwapLibrary for SwapLibrary.SwapConfig;\n\n  uint256 private constant WAD = 1e18;\n\n  address private immutable __self = address(this);\n  bytes32 public immutable storageSlot = InvestStrategyClient.makeStorageSlot(this);\n\n  IERC20Metadata internal immutable _asset;\n  IERC20Metadata internal immutable _investAsset;\n  uint256 internal immutable _price; // One unit of _investAsset in _asset  (in Wad), units: (asset/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   * @param price_ Approximate amount of units of _asset required to acquire a unit of _investAsset\n   */\n  constructor(IERC20Metadata asset_, IERC20Metadata investAsset_, uint256 price_) {\n    require(asset_.decimals() <= 18, InvalidAsset());\n    require(investAsset_.decimals() <= 18, InvalidAsset());\n    require(asset_ != investAsset_, InvalidAsset());\n    _asset = asset_;\n    _investAsset = investAsset_;\n    _price = price_;\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 && _investAsset.balanceOf(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 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), _price, 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 = abi.decode(\n      StorageSlot.getBytesSlot(storageSlot).value,\n      (SwapLibrary.SwapConfig)\n    );\n    // swapLibrary expects a price expressed in tokenOut/tokenIn - OK since price is in _investAsset/_price\n    uint256 price = Math.mulDiv(WAD, WAD, _price); // 1/_price - Units: investAsset/asset\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.SwapConfig memory swapConfig = abi.decode(\n      StorageSlot.getBytesSlot(storageSlot).value,\n      (SwapLibrary.SwapConfig)\n    );\n    // swapLibrary expects a price expressed in tokenOut/tokenIn - OK since _price is in _asset/_investAsset\n    swapConfig.exactInput(address(_asset), address(_investAsset), assets, _price);\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.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  /**\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"},"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        require(_length + 31 >= _length, \"slice_overflow\");\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 equal_nonAligned(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 endMinusWord := add(_preBytes, length)\n                let mc := add(_preBytes, 0x20)\n                let cc := add(_postBytes, 0x20)\n\n                for {\n                // the next line is the loop condition:\n                // while(uint256(mc < endWord) + cb == 2)\n                } eq(add(lt(mc, endMinusWord), 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                // Only if still successful\n                // For <1 word tail bytes\n                if gt(success, 0) {\n                    // Get the remainder of length/32\n                    // length % 32 = AND(length, 32 - 1)\n                    let numTailBytes := and(length, 0x1f)\n                    let mcRem := mload(mc)\n                    let ccRem := mload(cc)\n                    for {\n                        let i := 0\n                    // the next line is the loop condition:\n                    // while(uint256(i < numTailBytes) + cb == 2)\n                    } eq(add(lt(i, numTailBytes), cb), 2) {\n                        i := add(i, 1)\n                    } {\n                        if iszero(eq(byte(i, mcRem), byte(i, ccRem))) {\n                            // unsuccess:\n                            success := 0\n                            cb := 0\n                        }\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":"cancun","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  --> contracts/AccessManagedProxy.sol:26:1:\n   |\n26 | contract AccessManagedProxy is ERC1967Proxy {\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":2667,"file":"@openzeppelin/contracts/proxy/Proxy.sol","message":"The payable fallback function is defined here.","start":2603}],"severity":"warning","sourceLocation":{"end":2432,"file":"contracts/AccessManagedProxy.sol","start":1111},"type":"Warning"}],"sources":{"@ensuro/swaplibrary/contracts/CurveRoutes.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/CurveRoutes.sol","exportedSymbols":{"BytesLib":[23573],"CurveRoutes":[589],"ICurveRouter":[1667]},"id":590,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:0"},{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":590,"sourceUnit":1668,"src":"64:61:0","symbolAliases":[{"foreign":{"id":2,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"72:12:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solidity-bytes-utils/contracts/BytesLib.sol","file":"solidity-bytes-utils/contracts/BytesLib.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":590,"sourceUnit":23574,"src":"126:69:0","symbolAliases":[{"foreign":{"id":4,"name":"BytesLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23573,"src":"134:8:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"CurveRoutes","contractDependencies":[],"contractKind":"library","documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"197:641:0","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":589,"linearizedBaseContracts":[589],"name":"CurveRoutes","nameLocation":"847:11:0","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9,"libraryName":{"id":7,"name":"BytesLib","nameLocations":["869:8:0"],"nodeType":"IdentifierPath","referencedDeclaration":23573,"src":"869:8:0"},"nodeType":"UsingForDirective","src":"863:25:0","typeName":{"id":8,"name":"bytes","nodeType":"ElementaryTypeName","src":"882:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"constant":true,"id":12,"mutability":"constant","name":"ADDRESS_SIZE","nameLocation":"917:12:0","nodeType":"VariableDeclaration","scope":589,"src":"891:43:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10,"name":"uint256","nodeType":"ElementaryTypeName","src":"891:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":11,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"932:2:0","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"id":15,"mutability":"constant","name":"UINT8_SIZE","nameLocation":"964:10:0","nodeType":"VariableDeclaration","scope":589,"src":"938:40:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"938:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":14,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"977:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":18,"mutability":"constant","name":"MAX_SWAPS","nameLocation":"1008:9:0","nodeType":"VariableDeclaration","scope":589,"src":"982:39:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":17,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1020:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":21,"mutability":"constant","name":"ROUTER_OFFSET","nameLocation":"1051:13:0","nodeType":"VariableDeclaration","scope":589,"src":"1025:43:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":20,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1067:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":26,"mutability":"constant","name":"N_ROUTES_OFFSET","nameLocation":"1098:15:0","nodeType":"VariableDeclaration","scope":589,"src":"1072:72:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"1072:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":25,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":23,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"1116:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":24,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"1132:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1116:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":31,"mutability":"constant","name":"ROUTES_BASE_OFFSET","nameLocation":"1174:18:0","nodeType":"VariableDeclaration","scope":589,"src":"1148:75:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":27,"name":"uint256","nodeType":"ElementaryTypeName","src":"1148:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":30,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":28,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"1195:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":29,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"1213:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"canonicalName":"CurveRoutes.CurveRoute","id":47,"members":[{"constant":false,"id":35,"mutability":"mutable","name":"route","nameLocation":"1264:5:0","nodeType":"VariableDeclaration","scope":47,"src":"1252:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1252:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":34,"length":{"hexValue":"3131","id":33,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:0","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1252:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":42,"mutability":"mutable","name":"swapParams","nameLocation":"1482:10:0","nodeType":"VariableDeclaration","scope":47,"src":"1460:32:0","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":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"1460:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":39,"length":{"id":38,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1468:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1460:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":41,"length":{"hexValue":"35","id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1460:21:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":46,"mutability":"mutable","name":"pools","nameLocation":"1517:5:0","nodeType":"VariableDeclaration","scope":47,"src":"1498:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":43,"name":"address","nodeType":"ElementaryTypeName","src":"1498:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":45,"length":{"id":44,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"1506:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"ArrayTypeName","src":"1498:18:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"name":"CurveRoute","nameLocation":"1235:10:0","nodeType":"StructDefinition","scope":589,"src":"1228:299:0","visibility":"public"},{"errorSelector":"e3683637","id":49,"name":"CurveRouterCantBeZero","nameLocation":"1537:21:0","nodeType":"ErrorDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1558:2:0"},"src":"1531:30:0"},{"errorSelector":"0f64c3f8","id":51,"name":"AtLeastOneRoute","nameLocation":"1570:15:0","nodeType":"ErrorDefinition","parameters":{"id":50,"nodeType":"ParameterList","parameters":[],"src":"1585:2:0"},"src":"1564:24:0"},{"errorSelector":"947d5a84","id":53,"name":"InvalidLength","nameLocation":"1597:13:0","nodeType":"ErrorDefinition","parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1610:2:0"},"src":"1591:22:0"},{"errorSelector":"5875b111","id":58,"name":"InvalidRoute","nameLocation":"1622:12:0","nodeType":"ErrorDefinition","parameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"route","nameLocation":"1646:5:0","nodeType":"VariableDeclaration","scope":58,"src":"1635:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":55,"nodeType":"UserDefinedTypeName","pathNode":{"id":54,"name":"CurveRoute","nameLocations":["1635:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"1635:10:0"},"referencedDeclaration":47,"src":"1635:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"1634:18:0"},"src":"1616:37:0"},{"errorSelector":"b60616b2","id":62,"name":"TooManySwaps","nameLocation":"1662:12:0","nodeType":"ErrorDefinition","parameters":{"id":61,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60,"mutability":"mutable","name":"nSwaps","nameLocation":"1681:6:0","nodeType":"VariableDeclaration","scope":62,"src":"1675:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":59,"name":"uint8","nodeType":"ElementaryTypeName","src":"1675:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1674:14:0"},"src":"1656:33:0"},{"errorSelector":"8c9aec7b","id":68,"name":"RouteNotFound","nameLocation":"1698:13:0","nodeType":"ErrorDefinition","parameters":{"id":67,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"tokenIn","nameLocation":"1720:7:0","nodeType":"VariableDeclaration","scope":68,"src":"1712:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":63,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":66,"mutability":"mutable","name":"tokenOut","nameLocation":"1737:8:0","nodeType":"VariableDeclaration","scope":68,"src":"1729:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":65,"name":"address","nodeType":"ElementaryTypeName","src":"1729:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1711:35:0"},"src":"1692:55:0"},{"body":{"id":226,"nodeType":"Block","src":"1809:871:0","statements":[{"assignments":[75],"declarations":[{"constant":false,"id":75,"mutability":"mutable","name":"router","nameLocation":"1828:6:0","nodeType":"VariableDeclaration","scope":226,"src":"1815:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},"typeName":{"id":74,"nodeType":"UserDefinedTypeName","pathNode":{"id":73,"name":"ICurveRouter","nameLocations":["1815:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":1667,"src":"1815:12:0"},"referencedDeclaration":1667,"src":"1815:12:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"visibility":"internal"}],"id":82,"initialValue":{"arguments":[{"arguments":[{"id":79,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"1872:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":77,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"1850:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1862:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"1850:21:0","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":80,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1850:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":76,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"1837:12:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$1667_$","typeString":"type(contract ICurveRouter)"}},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1837:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"nodeType":"VariableDeclarationStatement","src":"1815:72:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":91,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":85,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75,"src":"1905:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}],"id":84,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1897:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"1897:7:0","typeDescriptions":{}}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1897:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":89,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1924:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":88,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1916:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":87,"name":"address","nodeType":"ElementaryTypeName","src":"1916:7:0","typeDescriptions":{}}},"id":90,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1897:29:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":95,"nodeType":"IfStatement","src":"1893:65:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":92,"name":"CurveRouterCantBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49,"src":"1935:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":94,"nodeType":"RevertStatement","src":"1928:30:0"}},{"assignments":[97],"declarations":[{"constant":false,"id":97,"mutability":"mutable","name":"nRoutes","nameLocation":"1970:7:0","nodeType":"VariableDeclaration","scope":226,"src":"1964:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":96,"name":"uint8","nodeType":"ElementaryTypeName","src":"1964:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":102,"initialValue":{"arguments":[{"id":100,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"2000:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":98,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"1980:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":99,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1992:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"1980:19:0","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":101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1980:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1964:52:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":103,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"2026:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2037:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2026:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":109,"nodeType":"IfStatement","src":"2022:42:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":106,"name":"AtLeastOneRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"2047:15:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":108,"nodeType":"RevertStatement","src":"2040:24:0"}},{"assignments":[111],"declarations":[{"constant":false,"id":111,"mutability":"mutable","name":"offset","nameLocation":"2078:6:0","nodeType":"VariableDeclaration","scope":226,"src":"2070:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":110,"name":"uint256","nodeType":"ElementaryTypeName","src":"2070:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":113,"initialValue":{"id":112,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"2087:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2070:35:0"},{"body":{"id":216,"nodeType":"Block","src":"2145:469:0","statements":[{"assignments":[124,127],"declarations":[{"constant":false,"id":124,"mutability":"mutable","name":"nSwaps","nameLocation":"2160:6:0","nodeType":"VariableDeclaration","scope":216,"src":"2154:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":123,"name":"uint8","nodeType":"ElementaryTypeName","src":"2154:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":127,"mutability":"mutable","name":"route","nameLocation":"2186:5:0","nodeType":"VariableDeclaration","scope":216,"src":"2168:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":126,"nodeType":"UserDefinedTypeName","pathNode":{"id":125,"name":"CurveRoute","nameLocations":["2168:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"2168:10:0"},"referencedDeclaration":47,"src":"2168:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":132,"initialValue":{"arguments":[{"id":129,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"2205:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":130,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2218:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":128,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"2195:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2195:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"2153:72:0"},{"body":{"id":172,"nodeType":"Block","src":"2266:123:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":142,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2280:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2286:5:0","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2280:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":147,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":144,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2292:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2296:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2292:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2280:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2310:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2302:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":148,"name":"address","nodeType":"ElementaryTypeName","src":"2302:7:0","typeDescriptions":{}}},"id":151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2302:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2280:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":153,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2316:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2322:5:0","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2316:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":160,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":155,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2328:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2332:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2328:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2336:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2328:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2316:22:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2342:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"2342:7:0","typeDescriptions":{}}},"id":164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2342:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2316:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2280:72:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":171,"nodeType":"IfStatement","src":"2276:104:0","trueBody":{"errorCall":{"arguments":[{"id":168,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2374:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":167,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"2361:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$47_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2361:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":170,"nodeType":"RevertStatement","src":"2354:26:0"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2249:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":137,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"2253:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2249:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":173,"initializationExpression":{"assignments":[134],"declarations":[{"constant":false,"id":134,"mutability":"mutable","name":"j","nameLocation":"2246:1:0","nodeType":"VariableDeclaration","scope":173,"src":"2238:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":133,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":135,"nodeType":"VariableDeclarationStatement","src":"2238:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2261:3:0","subExpression":{"id":139,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134,"src":"2261:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":141,"nodeType":"ExpressionStatement","src":"2261:3:0"},"nodeType":"ForStatement","src":"2233:156:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":174,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2400:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2406:5:0","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2400:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":179,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":176,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"2412:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2421:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2412:10:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2400:23:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2435:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2427:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":180,"name":"address","nodeType":"ElementaryTypeName","src":"2427:7:0","typeDescriptions":{}}},"id":183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2427:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2400:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":189,"nodeType":"IfStatement","src":"2396:69:0","trueBody":{"errorCall":{"arguments":[{"id":186,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2459:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":185,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"2446:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$47_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2446:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":188,"nodeType":"RevertStatement","src":"2439:26:0"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":190,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"2477:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":191,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2487:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2477:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":193,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2500:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2506:5:0","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2500:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":198,"indexExpression":{"arguments":[{"id":196,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"2522:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":195,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"2512:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2500:30:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2542:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2534:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":199,"name":"address","nodeType":"ElementaryTypeName","src":"2534:7:0","typeDescriptions":{}}},"id":202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2500:44:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2477:67:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":209,"nodeType":"IfStatement","src":"2473:99:0","trueBody":{"errorCall":{"arguments":[{"id":206,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2566:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}],"id":205,"name":"InvalidRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"2553:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_struct$_CurveRoute_$47_memory_ptr_$returns$_t_error_$","typeString":"function (struct CurveRoutes.CurveRoute memory) pure returns (error)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":208,"nodeType":"RevertStatement","src":"2546:26:0"}},{"expression":{"id":214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":210,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2580:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":212,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124,"src":"2600:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":211,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"2590:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2580:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":215,"nodeType":"ExpressionStatement","src":"2580:27:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":117,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2127:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":118,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97,"src":"2131:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2127:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":217,"initializationExpression":{"assignments":[115],"declarations":[{"constant":false,"id":115,"mutability":"mutable","name":"i","nameLocation":"2124:1:0","nodeType":"VariableDeclaration","scope":217,"src":"2116:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":114,"name":"uint256","nodeType":"ElementaryTypeName","src":"2116:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":116,"nodeType":"VariableDeclarationStatement","src":"2116:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2140:3:0","subExpression":{"id":120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115,"src":"2140:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":122,"nodeType":"ExpressionStatement","src":"2140:3:0"},"nodeType":"ForStatement","src":"2111:503:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":218,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":70,"src":"2623:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2635:6:0","memberName":"length","nodeType":"MemberAccess","src":"2623:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":220,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2645:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2623:28:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":225,"nodeType":"IfStatement","src":"2619:56:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":222,"name":"InvalidLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"2660:13:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2660:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":224,"nodeType":"RevertStatement","src":"2653:22:0"}}]},"id":227,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1760:8:0","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"curveRoutes","nameLocation":"1782:11:0","nodeType":"VariableDeclaration","scope":227,"src":"1769:24:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":69,"name":"bytes","nodeType":"ElementaryTypeName","src":"1769:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1768:26:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[],"src":"1809:0:0"},"scope":589,"src":"1751:929:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":442,"nodeType":"Block","src":"2819:930:0","statements":[{"expression":{"id":244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":239,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"2825:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":242,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"2854:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":240,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"2834:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2846:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"2834:19:0","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":243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2834:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2825:36:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":245,"nodeType":"ExpressionStatement","src":"2825:36:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":246,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"2871:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":247,"name":"MAX_SWAPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"2880:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2871:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":253,"nodeType":"IfStatement","src":"2867:51:0","trueBody":{"errorCall":{"arguments":[{"id":250,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"2911:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":249,"name":"TooManySwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"2898:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2898:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":252,"nodeType":"RevertStatement","src":"2891:27:0"}},{"body":{"id":282,"nodeType":"Block","src":"2968:93:0","statements":[{"expression":{"id":280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":265,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"2976:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2982:5:0","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2976:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},"id":269,"indexExpression":{"id":267,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"2988:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2976:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":272,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3015:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":273,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3024:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":275,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"3037:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":276,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"3041:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3037:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3015:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":270,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"2993:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3005:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"2993:21:0","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":279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2993:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2976:78:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":281,"nodeType":"ExpressionStatement","src":"2976:78:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":257,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"2940:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":259,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"2954:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":258,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"2944:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2940:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":283,"initializationExpression":{"assignments":[255],"declarations":[{"constant":false,"id":255,"mutability":"mutable","name":"i","nameLocation":"2937:1:0","nodeType":"VariableDeclaration","scope":283,"src":"2929:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"2929:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":256,"nodeType":"VariableDeclarationStatement","src":"2929:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2963:3:0","subExpression":{"id":262,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"2963:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":264,"nodeType":"ExpressionStatement","src":"2963:3:0"},"nodeType":"ForStatement","src":"2924:137:0"},{"expression":{"id":292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":284,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3066:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":285,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3076:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":287,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"3099:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":286,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3089:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3089:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":289,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"3109:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3089:32:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3076:45:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3066:55:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":293,"nodeType":"ExpressionStatement","src":"3066:55:0"},{"body":{"id":406,"nodeType":"Block","src":"3160:428:0","statements":[{"expression":{"id":320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":303,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3168:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":307,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3174:10:0","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"3168:16:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":308,"indexExpression":{"id":305,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3185:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3168:19:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":309,"indexExpression":{"hexValue":"30","id":306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3188:1:0","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:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":312,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3213:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3222:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":314,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3226:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3222:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3239:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3222:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3213:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":310,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3193:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3205:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"3193:19:0","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":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3168:73:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":321,"nodeType":"ExpressionStatement","src":"3168:73:0"},{"expression":{"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":322,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3249:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3255:10:0","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"3249:16:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":327,"indexExpression":{"id":324,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3266:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3249:19:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":328,"indexExpression":{"hexValue":"31","id":325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3269:1:0","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:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":331,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3294:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3303:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":333,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3307:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3303:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3320:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3303:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3294:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3324:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3294:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":329,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3274:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3286:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"3274:19:0","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":340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3249:77:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":342,"nodeType":"ExpressionStatement","src":"3249:77:0"},{"expression":{"id":362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":343,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3334:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3340:10:0","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"3334:16:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":348,"indexExpression":{"id":345,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3351:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:19:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":349,"indexExpression":{"hexValue":"32","id":346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3354:1:0","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:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":352,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3379:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3388:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":354,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3392:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3388:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3405:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3388:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3379:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3409:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3379:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":350,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3359:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3371:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"3359:19:0","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":361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3359:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3334:77:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":363,"nodeType":"ExpressionStatement","src":"3334:77:0"},{"expression":{"id":383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":364,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3419:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":368,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3425:10:0","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"3419:16:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":369,"indexExpression":{"id":366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3436:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3419:19:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":370,"indexExpression":{"hexValue":"33","id":367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3439:1:0","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:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":373,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3464:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":374,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3473:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":375,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3477:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3473:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3490:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3473:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3464:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3494:1:0","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"3464:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":371,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3444:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3456:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"3444:19:0","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":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3419:77:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":384,"nodeType":"ExpressionStatement","src":"3419:77:0"},{"expression":{"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":385,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3504:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3510:10:0","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"3504:16:0","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},"id":390,"indexExpression":{"id":387,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3521:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3504:19:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_memory_ptr","typeString":"uint256[5] memory"}},"id":391,"indexExpression":{"hexValue":"34","id":388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3524:1:0","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:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":394,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3549:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":395,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3558:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":396,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3562:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3558:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3575:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3558:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3549:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3579:1:0","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"3549:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":392,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3529:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3541:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"3529:19:0","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":403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3529:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3504:77:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":405,"nodeType":"ExpressionStatement","src":"3504:77:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3143:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":298,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"3147:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3143:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":407,"initializationExpression":{"assignments":[295],"declarations":[{"constant":false,"id":295,"mutability":"mutable","name":"i","nameLocation":"3140:1:0","nodeType":"VariableDeclaration","scope":407,"src":"3132:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":296,"nodeType":"VariableDeclarationStatement","src":"3132:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3155:3:0","subExpression":{"id":300,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":295,"src":"3155:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":302,"nodeType":"ExpressionStatement","src":"3155:3:0"},"nodeType":"ForStatement","src":"3127:461:0"},{"expression":{"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":408,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3593:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":409,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"3603:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":410,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3612:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3603:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3625:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3603:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3593:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":415,"nodeType":"ExpressionStatement","src":"3593:33:0"},{"body":{"id":440,"nodeType":"Block","src":"3665:80:0","statements":[{"expression":{"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":425,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":237,"src":"3673:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3679:5:0","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":46,"src":"3673:11:0","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},"id":429,"indexExpression":{"id":427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3685:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3673:14:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":432,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":231,"src":"3712:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3721:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":434,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"3725:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3721:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3712:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":430,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":229,"src":"3690:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3702:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"3690:21:0","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":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3690:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3673:65:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":439,"nodeType":"ExpressionStatement","src":"3673:65:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":419,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3648:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":420,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":234,"src":"3652:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3648:10:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":441,"initializationExpression":{"assignments":[417],"declarations":[{"constant":false,"id":417,"mutability":"mutable","name":"i","nameLocation":"3645:1:0","nodeType":"VariableDeclaration","scope":441,"src":"3637:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"3637:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":418,"nodeType":"VariableDeclarationStatement","src":"3637:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3660:3:0","subExpression":{"id":422,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3660:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":424,"nodeType":"ExpressionStatement","src":"3660:3:0"},"nodeType":"ForStatement","src":"3632:113:0"}]},"id":443,"implemented":true,"kind":"function","modifiers":[],"name":"readRoute","nameLocation":"2693:9:0","nodeType":"FunctionDefinition","parameters":{"id":232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":229,"mutability":"mutable","name":"curveRoutes","nameLocation":"2721:11:0","nodeType":"VariableDeclaration","scope":443,"src":"2708:24:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":228,"name":"bytes","nodeType":"ElementaryTypeName","src":"2708:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":231,"mutability":"mutable","name":"offset","nameLocation":"2746:6:0","nodeType":"VariableDeclaration","scope":443,"src":"2738:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":230,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2702:54:0"},"returnParameters":{"id":238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":234,"mutability":"mutable","name":"nSwaps","nameLocation":"2786:6:0","nodeType":"VariableDeclaration","scope":443,"src":"2780:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":233,"name":"uint8","nodeType":"ElementaryTypeName","src":"2780:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":237,"mutability":"mutable","name":"route","nameLocation":"2812:5:0","nodeType":"VariableDeclaration","scope":443,"src":"2794:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":236,"nodeType":"UserDefinedTypeName","pathNode":{"id":235,"name":"CurveRoute","nameLocations":["2794:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"2794:10:0"},"referencedDeclaration":47,"src":"2794:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"2779:39:0"},"scope":589,"src":"2684:1065:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":470,"nodeType":"Block","src":"3818:189:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":450,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3837:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":452,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"3876:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":451,"name":"_routeLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"3866:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":454,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"3892:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3866:38:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:67:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":457,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"3923:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"35","id":458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3932:1:0","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"3923:10:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":460,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"3936:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3923:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":462,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3922:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:110:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":464,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"3971:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":465,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"3980:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3971:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":467,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3970:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3837:156:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":449,"id":469,"nodeType":"Return","src":"3824:169:0"}]},"id":471,"implemented":true,"kind":"function","modifiers":[],"name":"routeSize","nameLocation":"3762:9:0","nodeType":"FunctionDefinition","parameters":{"id":446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":445,"mutability":"mutable","name":"nSwaps","nameLocation":"3778:6:0","nodeType":"VariableDeclaration","scope":471,"src":"3772:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":444,"name":"uint8","nodeType":"ElementaryTypeName","src":"3772:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3771:14:0"},"returnParameters":{"id":449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":471,"src":"3809:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":447,"name":"uint256","nodeType":"ElementaryTypeName","src":"3809:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3808:9:0"},"scope":589,"src":"3753:254:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":485,"nodeType":"Block","src":"4075:34:0","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":478,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":473,"src":"4089:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4098:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4089:10:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4102:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4089:14:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4088:16:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":477,"id":484,"nodeType":"Return","src":"4081:23:0"}]},"id":486,"implemented":true,"kind":"function","modifiers":[],"name":"_routeLen","nameLocation":"4020:9:0","nodeType":"FunctionDefinition","parameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"nSwaps","nameLocation":"4036:6:0","nodeType":"VariableDeclaration","scope":486,"src":"4030:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":472,"name":"uint8","nodeType":"ElementaryTypeName","src":"4030:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4029:14:0"},"returnParameters":{"id":477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":486,"src":"4066:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":475,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4065:9:0"},"scope":589,"src":"4011:98:0","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":587,"nodeType":"Block","src":"4278:614:0","statements":[{"expression":{"id":508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":501,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"4284:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":505,"name":"ROUTER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"4328:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":503,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4306:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4318:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"4306:21:0","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":506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4306:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":502,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"4293:12:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICurveRouter_$1667_$","typeString":"type(contract ICurveRouter)"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4293:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"src":"4284:59:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"id":509,"nodeType":"ExpressionStatement","src":"4284:59:0"},{"assignments":[511],"declarations":[{"constant":false,"id":511,"mutability":"mutable","name":"nRoutes","nameLocation":"4355:7:0","nodeType":"VariableDeclaration","scope":587,"src":"4349:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":510,"name":"uint8","nodeType":"ElementaryTypeName","src":"4349:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":516,"initialValue":{"arguments":[{"id":514,"name":"N_ROUTES_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":26,"src":"4385:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":512,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4365:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4377:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"4365:19:0","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":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4365:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4349:52:0"},{"assignments":[518],"declarations":[{"constant":false,"id":518,"mutability":"mutable","name":"offset","nameLocation":"4415:6:0","nodeType":"VariableDeclaration","scope":587,"src":"4407:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":517,"name":"uint256","nodeType":"ElementaryTypeName","src":"4407:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":520,"initialValue":{"id":519,"name":"ROUTES_BASE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"4424:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4407:35:0"},{"body":{"id":580,"nodeType":"Block","src":"4482:361:0","statements":[{"assignments":[531],"declarations":[{"constant":false,"id":531,"mutability":"mutable","name":"nSwaps","nameLocation":"4496:6:0","nodeType":"VariableDeclaration","scope":580,"src":"4490:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":530,"name":"uint8","nodeType":"ElementaryTypeName","src":"4490:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":536,"initialValue":{"arguments":[{"id":534,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4525:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":532,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4505:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4517:7:0","memberName":"toUint8","nodeType":"MemberAccess","referencedDeclaration":23339,"src":"4505:19:0","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":535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4490:42:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":539,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4575:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":540,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"4584:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4575:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":537,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4553:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4565:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"4553:21:0","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":542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4553:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":543,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"4599:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4553:53:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":547,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4640:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":548,"name":"UINT8_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15,"src":"4649:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":550,"name":"ADDRESS_SIZE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12,"src":"4662:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":551,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"4677:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4662:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:0","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4662:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:47:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":545,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4618:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4630:9:0","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":23313,"src":"4618:21:0","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":556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":557,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"4692:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4618:82:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4553:147:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":573,"nodeType":"IfStatement","src":"4540:262:0","trueBody":{"id":572,"nodeType":"Block","src":"4709:93:0","statements":[{"expression":{"id":566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":560,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"4722:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":561,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4719:9:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":563,"name":"curveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"4741:11:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":564,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4754:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":562,"name":"readRoute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":443,"src":"4731:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"function (bytes memory,uint256) pure returns (uint8,struct CurveRoutes.CurveRoute memory)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(uint8,struct CurveRoutes.CurveRoute memory)"}},"src":"4719:42:0","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":567,"nodeType":"ExpressionStatement","src":"4719:42:0"},{"expression":{"components":[{"id":568,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"4779:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},{"id":569,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"4787:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}}],"id":570,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4778:15:0","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"functionReturnParameters":500,"id":571,"nodeType":"Return","src":"4771:22:0"}]}},{"expression":{"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":574,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4809:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":576,"name":"nSwaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":531,"src":"4829:6:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":575,"name":"routeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":471,"src":"4819:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint8) pure returns (uint256)"}},"id":577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4819:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4809:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":579,"nodeType":"ExpressionStatement","src":"4809:27:0"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"4464:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":525,"name":"nRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":511,"src":"4468:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4464:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":581,"initializationExpression":{"assignments":[522],"declarations":[{"constant":false,"id":522,"mutability":"mutable","name":"i","nameLocation":"4461:1:0","nodeType":"VariableDeclaration","scope":581,"src":"4453:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":521,"name":"uint256","nodeType":"ElementaryTypeName","src":"4453:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":523,"nodeType":"VariableDeclarationStatement","src":"4453:9:0"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4477:3:0","subExpression":{"id":527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"4477:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":529,"nodeType":"ExpressionStatement","src":"4477:3:0"},"nodeType":"ForStatement","src":"4448:395:0"},{"errorCall":{"arguments":[{"id":583,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":490,"src":"4869:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":584,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":492,"src":"4878:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":582,"name":"RouteNotFound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"4855:13:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4855:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":586,"nodeType":"RevertStatement","src":"4848:39:0"}]},"id":588,"implemented":true,"kind":"function","modifiers":[],"name":"findRoute","nameLocation":"4122:9:0","nodeType":"FunctionDefinition","parameters":{"id":493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":488,"mutability":"mutable","name":"curveRoutes","nameLocation":"4150:11:0","nodeType":"VariableDeclaration","scope":588,"src":"4137:24:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":487,"name":"bytes","nodeType":"ElementaryTypeName","src":"4137:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":490,"mutability":"mutable","name":"tokenIn","nameLocation":"4175:7:0","nodeType":"VariableDeclaration","scope":588,"src":"4167:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":489,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":492,"mutability":"mutable","name":"tokenOut","nameLocation":"4196:8:0","nodeType":"VariableDeclaration","scope":588,"src":"4188:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":491,"name":"address","nodeType":"ElementaryTypeName","src":"4188:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4131:77:0"},"returnParameters":{"id":500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":496,"mutability":"mutable","name":"router","nameLocation":"4245:6:0","nodeType":"VariableDeclaration","scope":588,"src":"4232:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},"typeName":{"id":495,"nodeType":"UserDefinedTypeName","pathNode":{"id":494,"name":"ICurveRouter","nameLocations":["4232:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":1667,"src":"4232:12:0"},"referencedDeclaration":1667,"src":"4232:12:0","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":499,"mutability":"mutable","name":"route","nameLocation":"4271:5:0","nodeType":"VariableDeclaration","scope":588,"src":"4253:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":498,"nodeType":"UserDefinedTypeName","pathNode":{"id":497,"name":"CurveRoute","nameLocations":["4253:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"4253:10:0"},"referencedDeclaration":47,"src":"4253:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"src":"4231:46:0"},"scope":589,"src":"4113:779:0","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":590,"src":"839:4055:0","usedErrors":[49,51,53,58,62,68],"usedEvents":[]}],"src":"39:4856:0"},"id":0},"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","exportedSymbols":{"CurveRoutes":[589],"ICurveRouter":[1667],"IERC20Metadata":[8682],"ISwapRouter":[13462],"Math":[11309],"SwapLibrary":[1390]},"id":1391,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":591,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:1"},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":593,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1391,"sourceUnit":13463,"src":"64:87:1","symbolAliases":[{"foreign":{"id":592,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"72:11:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","file":"./dependencies/ICurveRouter.sol","id":595,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1391,"sourceUnit":1668,"src":"152:61:1","symbolAliases":[{"foreign":{"id":594,"name":"ICurveRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1667,"src":"160:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":597,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1391,"sourceUnit":8683,"src":"214:97:1","symbolAliases":[{"foreign":{"id":596,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"222:14:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":599,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1391,"sourceUnit":11310,"src":"312:65:1","symbolAliases":[{"foreign":{"id":598,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"320:4:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/CurveRoutes.sol","file":"./CurveRoutes.sol","id":601,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1391,"sourceUnit":590,"src":"378:46:1","symbolAliases":[{"foreign":{"id":600,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"386:11:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SwapLibrary","contractDependencies":[],"contractKind":"library","documentation":{"id":602,"nodeType":"StructuredDocumentation","src":"426:95:1","text":" @title Swap Library\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":1390,"linearizedBaseContracts":[1390],"name":"SwapLibrary","nameLocation":"530:11:1","nodeType":"ContractDefinition","nodes":[{"global":false,"id":605,"libraryName":{"id":603,"name":"Math","nameLocations":["552:4:1"],"nodeType":"IdentifierPath","referencedDeclaration":11309,"src":"552:4:1"},"nodeType":"UsingForDirective","src":"546:23:1","typeName":{"id":604,"name":"uint256","nodeType":"ElementaryTypeName","src":"561:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":608,"mutability":"constant","name":"WAD","nameLocation":"599:3:1","nodeType":"VariableDeclaration","scope":1390,"src":"573:36:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":606,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:4:1","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":611,"mutability":"constant","name":"MAX_EXCHANGE","nameLocation":"718:12:1","nodeType":"VariableDeclaration","scope":1390,"src":"692:42:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":609,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"canonicalName":"SwapLibrary.SwapProtocol","documentation":{"id":612,"nodeType":"StructuredDocumentation","src":"739:53:1","text":" @dev Enum with the different protocols"},"id":616,"members":[{"id":613,"name":"undefined","nameLocation":"819:9:1","nodeType":"EnumValue","src":"819:9:1"},{"id":614,"name":"uniswap","nameLocation":"834:7:1","nodeType":"EnumValue","src":"834:7:1"},{"id":615,"name":"curveRouter","nameLocation":"847:11:1","nodeType":"EnumValue","src":"847:11:1"}],"name":"SwapProtocol","nameLocation":"800:12:1","nodeType":"EnumDefinition","src":"795:67:1"},{"canonicalName":"SwapLibrary.SwapConfig","id":624,"members":[{"constant":false,"id":619,"mutability":"mutable","name":"protocol","nameLocation":"903:8:1","nodeType":"VariableDeclaration","scope":624,"src":"890:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"typeName":{"id":618,"nodeType":"UserDefinedTypeName","pathNode":{"id":617,"name":"SwapProtocol","nameLocations":["890:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":616,"src":"890:12:1"},"referencedDeclaration":616,"src":"890:12:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"visibility":"internal"},{"constant":false,"id":621,"mutability":"mutable","name":"maxSlippage","nameLocation":"925:11:1","nodeType":"VariableDeclaration","scope":624,"src":"917:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":620,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":623,"mutability":"mutable","name":"customParams","nameLocation":"948:12:1","nodeType":"VariableDeclaration","scope":624,"src":"942:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":622,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapConfig","nameLocation":"873:10:1","nodeType":"StructDefinition","scope":1390,"src":"866:99:1","visibility":"public"},{"canonicalName":"SwapLibrary.UniswapCustomParams","id":630,"members":[{"constant":false,"id":626,"mutability":"mutable","name":"feeTier","nameLocation":"1009:7:1","nodeType":"VariableDeclaration","scope":630,"src":"1002:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":625,"name":"uint24","nodeType":"ElementaryTypeName","src":"1002:6:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":629,"mutability":"mutable","name":"router","nameLocation":"1034:6:1","nodeType":"VariableDeclaration","scope":630,"src":"1022:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"},"typeName":{"id":628,"nodeType":"UserDefinedTypeName","pathNode":{"id":627,"name":"ISwapRouter","nameLocations":["1022:11:1"],"nodeType":"IdentifierPath","referencedDeclaration":13462,"src":"1022:11:1"},"referencedDeclaration":13462,"src":"1022:11:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}},"visibility":"internal"}],"name":"UniswapCustomParams","nameLocation":"976:19:1","nodeType":"StructDefinition","scope":1390,"src":"969:76:1","visibility":"public"},{"errorSelector":"07f1c7d4","id":632,"name":"InvalidProtocol","nameLocation":"1055:15:1","nodeType":"ErrorDefinition","parameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"1070:2:1"},"src":"1049:24:1"},{"errorSelector":"ece96d1c","id":634,"name":"MaxSlippageCannotBeZero","nameLocation":"1082:23:1","nodeType":"ErrorDefinition","parameters":{"id":633,"nodeType":"ParameterList","parameters":[],"src":"1105:2:1"},"src":"1076:32:1"},{"errorSelector":"e35d3f93","id":636,"name":"UniswapRouterCannotBeZero","nameLocation":"1117:25:1","nodeType":"ErrorDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[],"src":"1142:2:1"},"src":"1111:34:1"},{"errorSelector":"c087296d","id":638,"name":"UniswapFeeTierCannotBeZero","nameLocation":"1154:26:1","nodeType":"ErrorDefinition","parameters":{"id":637,"nodeType":"ParameterList","parameters":[],"src":"1180:2:1"},"src":"1148:35:1"},{"errorSelector":"511d53d0","id":640,"name":"AllowanceShouldGoBackToZero","nameLocation":"1192:27:1","nodeType":"ErrorDefinition","parameters":{"id":639,"nodeType":"ParameterList","parameters":[],"src":"1219:2:1"},"src":"1186:36:1"},{"errorSelector":"84135462","id":646,"name":"ReceivedLessThanAcceptable","nameLocation":"1231:26:1","nodeType":"ErrorDefinition","parameters":{"id":645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":642,"mutability":"mutable","name":"received","nameLocation":"1266:8:1","nodeType":"VariableDeclaration","scope":646,"src":"1258:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":644,"mutability":"mutable","name":"amountOutMin","nameLocation":"1284:12:1","nodeType":"VariableDeclaration","scope":646,"src":"1276:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":643,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1257:40:1"},"src":"1225:73:1"},{"errorSelector":"4641f9e1","id":652,"name":"SpentMoreThanAcceptable","nameLocation":"1307:23:1","nodeType":"ErrorDefinition","parameters":{"id":651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":648,"mutability":"mutable","name":"spent","nameLocation":"1339:5:1","nodeType":"VariableDeclaration","scope":652,"src":"1331:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":647,"name":"uint256","nodeType":"ElementaryTypeName","src":"1331:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":650,"mutability":"mutable","name":"amountInMax","nameLocation":"1354:11:1","nodeType":"VariableDeclaration","scope":652,"src":"1346:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":649,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1330:36:1"},"src":"1301:66:1"},{"body":{"id":723,"nodeType":"Block","src":"1435:529:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":658,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1445:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1456:11:1","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"1445:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1471:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1445:27:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":665,"nodeType":"IfStatement","src":"1441:65:1","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":662,"name":"MaxSlippageCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"1481:23:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1481:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":664,"nodeType":"RevertStatement","src":"1474:32:1"}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":666,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1516:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1527:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"1516:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":668,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"1539:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1552:7:1","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":614,"src":"1539:20:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1516:43:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":705,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1820:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1831:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"1820:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":707,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"1843:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1856:11:1","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":615,"src":"1843:24:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"1820:47:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":718,"name":"InvalidProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"1942:15:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1942:17:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":720,"nodeType":"RevertStatement","src":"1935:24:1"},"id":721,"nodeType":"IfStatement","src":"1816:143:1","trueBody":{"id":717,"nodeType":"Block","src":"1869:60:1","statements":[{"expression":{"arguments":[{"expression":{"id":713,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1898:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1909:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"1898:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":710,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"1877:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$589_$","typeString":"type(library CurveRoutes)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1889:8:1","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":227,"src":"1877:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1877:45:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":716,"nodeType":"ExpressionStatement","src":"1877:45:1"}]}},"id":722,"nodeType":"IfStatement","src":"1512:447:1","trueBody":{"id":704,"nodeType":"Block","src":"1561:249:1","statements":[{"assignments":[673],"declarations":[{"constant":false,"id":673,"mutability":"mutable","name":"cp","nameLocation":"1596:2:1","nodeType":"VariableDeclaration","scope":704,"src":"1569:29:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":672,"nodeType":"UserDefinedTypeName","pathNode":{"id":671,"name":"UniswapCustomParams","nameLocations":["1569:19:1"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"1569:19:1"},"referencedDeclaration":630,"src":"1569:19:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":681,"initialValue":{"arguments":[{"expression":{"id":676,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"1612:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1623:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"1612:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":678,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"1638:19:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":679,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1637:21:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_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_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":674,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1601:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1605:6:1","memberName":"decode","nodeType":"MemberAccess","src":"1601:10:1","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1601:58:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"1569:90:1"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":684,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"1679:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1682:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"1679:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}],"id":683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1671:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":682,"name":"address","nodeType":"ElementaryTypeName","src":"1671:7:1","typeDescriptions":{}}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1671:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1701:1:1","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":688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1693:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":687,"name":"address","nodeType":"ElementaryTypeName","src":"1693:7:1","typeDescriptions":{}}},"id":690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:10:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:32:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":695,"nodeType":"IfStatement","src":"1667:72:1","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":692,"name":"UniswapRouterCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"1712:25:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:27:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":694,"nodeType":"RevertStatement","src":"1705:34:1"}},{"condition":{"commonType":{"typeIdentifier":"t_uint24","typeString":"uint24"},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":696,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":673,"src":"1751:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1754:7:1","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":626,"src":"1751:10:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1765:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1751:15:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":703,"nodeType":"IfStatement","src":"1747:56:1","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":700,"name":"UniswapFeeTierCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"1775:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1775:28:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":702,"nodeType":"RevertStatement","src":"1768:35:1"}}]}}]},"functionSelector":"b2fca32c","id":724,"implemented":true,"kind":"function","modifiers":[],"name":"validate","nameLocation":"1380:8:1","nodeType":"FunctionDefinition","parameters":{"id":656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"mutability":"mutable","name":"swapConfig","nameLocation":"1409:10:1","nodeType":"VariableDeclaration","scope":724,"src":"1389:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":654,"nodeType":"UserDefinedTypeName","pathNode":{"id":653,"name":"SwapConfig","nameLocations":["1389:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1389:10:1"},"referencedDeclaration":624,"src":"1389:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1388:32:1"},"returnParameters":{"id":657,"nodeType":"ParameterList","parameters":[],"src":"1435:0:1"},"scope":1390,"src":"1371:593:1","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":743,"nodeType":"Block","src":"2037:65:1","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2051:2:1","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":738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2058:2:1","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":734,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"2078:5:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":733,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"2063:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2085:8:1","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"2063:30:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2063:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2058:37:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":739,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2057:39:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2051:45:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":741,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2050:47:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":730,"id":742,"nodeType":"Return","src":"2043:54:1"}]},"id":744,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1977:12:1","nodeType":"FunctionDefinition","parameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"token","nameLocation":"1998:5:1","nodeType":"VariableDeclaration","scope":744,"src":"1990:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1989:15:1"},"returnParameters":{"id":730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":744,"src":"2028:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2028:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2027:9:1"},"scope":1390,"src":"1968:134:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":793,"nodeType":"Block","src":"3240:302:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":761,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3250:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3261:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"3250:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":763,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"3273:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3286:7:1","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":614,"src":"3273:20:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3250:43:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":775,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3391:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3402:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"3391:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":777,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"3414:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3427:11:1","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":615,"src":"3414:24:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"3391:47:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":789,"nodeType":"IfStatement","src":"3387:137:1","trueBody":{"id":788,"nodeType":"Block","src":"3440:84:1","statements":[{"expression":{"arguments":[{"id":781,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3472:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":782,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"3484:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":783,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"3493:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":784,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"3503:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":785,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"3511:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_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":780,"name":"_exactInputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1235,"src":"3455:16:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_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":786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3455:62:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":760,"id":787,"nodeType":"Return","src":"3448:69:1"}]}},"id":790,"nodeType":"IfStatement","src":"3246:278:1","trueBody":{"id":774,"nodeType":"Block","src":"3295:86:1","statements":[{"expression":{"arguments":[{"id":767,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":748,"src":"3329:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":768,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":750,"src":"3341:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":769,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"3350:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":770,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"3360:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":771,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"3368:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_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":766,"name":"_exactInputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"3310:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_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":772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3310:64:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":760,"id":773,"nodeType":"Return","src":"3303:71:1"}]}},{"expression":{"hexValue":"30","id":791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3536:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":760,"id":792,"nodeType":"Return","src":"3529:8:1"}]},"documentation":{"id":745,"nodeType":"StructuredDocumentation","src":"2106:962:1","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":794,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"3080:10:1","nodeType":"FunctionDefinition","parameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":748,"mutability":"mutable","name":"swapConfig","nameLocation":"3116:10:1","nodeType":"VariableDeclaration","scope":794,"src":"3096:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":747,"nodeType":"UserDefinedTypeName","pathNode":{"id":746,"name":"SwapConfig","nameLocations":["3096:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"3096:10:1"},"referencedDeclaration":624,"src":"3096:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":750,"mutability":"mutable","name":"tokenIn","nameLocation":"3140:7:1","nodeType":"VariableDeclaration","scope":794,"src":"3132:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":749,"name":"address","nodeType":"ElementaryTypeName","src":"3132:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"tokenOut","nameLocation":"3161:8:1","nodeType":"VariableDeclaration","scope":794,"src":"3153:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":751,"name":"address","nodeType":"ElementaryTypeName","src":"3153:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"amount","nameLocation":"3183:6:1","nodeType":"VariableDeclaration","scope":794,"src":"3175:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":753,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":756,"mutability":"mutable","name":"price","nameLocation":"3203:5:1","nodeType":"VariableDeclaration","scope":794,"src":"3195:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"3195:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3090:122:1"},"returnParameters":{"id":760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":794,"src":"3231:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":758,"name":"uint256","nodeType":"ElementaryTypeName","src":"3231:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3230:9:1"},"scope":1390,"src":"3071:471:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":843,"nodeType":"Block","src":"4764:304:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":811,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"4774:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4785:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"4774:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":813,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"4797:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4810:7:1","memberName":"uniswap","nodeType":"MemberAccess","referencedDeclaration":614,"src":"4797:20:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4774:43:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":825,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"4916:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4927:8:1","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":619,"src":"4916:19:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":827,"name":"SwapProtocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":616,"src":"4939:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":828,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4952:11:1","memberName":"curveRouter","nodeType":"MemberAccess","referencedDeclaration":615,"src":"4939:24:1","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},"src":"4916:47:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":839,"nodeType":"IfStatement","src":"4912:138:1","trueBody":{"id":838,"nodeType":"Block","src":"4965:85:1","statements":[{"expression":{"arguments":[{"id":831,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"4998:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":832,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"5010:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":833,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"5019:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":834,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"5029:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":835,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"5037:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_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":830,"name":"_exactOutputCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1389,"src":"4980:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_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":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:63:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":810,"id":837,"nodeType":"Return","src":"4973:70:1"}]}},"id":840,"nodeType":"IfStatement","src":"4770:280:1","trueBody":{"id":824,"nodeType":"Block","src":"4819:87:1","statements":[{"expression":{"arguments":[{"id":817,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":798,"src":"4854:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},{"id":818,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":800,"src":"4866:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":802,"src":"4875:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":820,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":804,"src":"4885:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":821,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"4893:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_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":816,"name":"_exactOutputUniswap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"4834:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_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":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:65:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":810,"id":823,"nodeType":"Return","src":"4827:72:1"}]}},{"expression":{"hexValue":"30","id":841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5062:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":810,"id":842,"nodeType":"Return","src":"5055:8:1"}]},"documentation":{"id":795,"nodeType":"StructuredDocumentation","src":"3546:1045:1","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":844,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"4603:11:1","nodeType":"FunctionDefinition","parameters":{"id":807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":798,"mutability":"mutable","name":"swapConfig","nameLocation":"4640:10:1","nodeType":"VariableDeclaration","scope":844,"src":"4620:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":797,"nodeType":"UserDefinedTypeName","pathNode":{"id":796,"name":"SwapConfig","nameLocations":["4620:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"4620:10:1"},"referencedDeclaration":624,"src":"4620:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":800,"mutability":"mutable","name":"tokenIn","nameLocation":"4664:7:1","nodeType":"VariableDeclaration","scope":844,"src":"4656:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":799,"name":"address","nodeType":"ElementaryTypeName","src":"4656:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":802,"mutability":"mutable","name":"tokenOut","nameLocation":"4685:8:1","nodeType":"VariableDeclaration","scope":844,"src":"4677:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":801,"name":"address","nodeType":"ElementaryTypeName","src":"4677:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":804,"mutability":"mutable","name":"amount","nameLocation":"4707:6:1","nodeType":"VariableDeclaration","scope":844,"src":"4699:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":803,"name":"uint256","nodeType":"ElementaryTypeName","src":"4699:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":806,"mutability":"mutable","name":"price","nameLocation":"4727:5:1","nodeType":"VariableDeclaration","scope":844,"src":"4719:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":805,"name":"uint256","nodeType":"ElementaryTypeName","src":"4719:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4614:122:1"},"returnParameters":{"id":810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":844,"src":"4755:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":808,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4754:9:1"},"scope":1390,"src":"4594:474:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":876,"nodeType":"Block","src":"5239:108:1","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":866,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"5292:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":867,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":848,"src":"5298:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5292:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":869,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"5311:5:1","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":863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":846,"src":"5253:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":861,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"5275:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":860,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5262:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5253:30:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5252:32:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5285:6:1","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"5252:39:1","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":870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:65:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":872,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"5333:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":871,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5320:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5252:90:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":858,"id":875,"nodeType":"Return","src":"5245:97:1"}]},"id":877,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMinAmount","nameLocation":"5081:14:1","nodeType":"FunctionDefinition","parameters":{"id":855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":846,"mutability":"mutable","name":"amount","nameLocation":"5109:6:1","nodeType":"VariableDeclaration","scope":877,"src":"5101:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":845,"name":"uint256","nodeType":"ElementaryTypeName","src":"5101:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":848,"mutability":"mutable","name":"maxSlippage","nameLocation":"5129:11:1","nodeType":"VariableDeclaration","scope":877,"src":"5121:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":847,"name":"uint256","nodeType":"ElementaryTypeName","src":"5121:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":850,"mutability":"mutable","name":"tokenIn","nameLocation":"5154:7:1","nodeType":"VariableDeclaration","scope":877,"src":"5146:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":849,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":852,"mutability":"mutable","name":"tokenOut","nameLocation":"5175:8:1","nodeType":"VariableDeclaration","scope":877,"src":"5167:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":851,"name":"address","nodeType":"ElementaryTypeName","src":"5167:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":854,"mutability":"mutable","name":"price","nameLocation":"5197:5:1","nodeType":"VariableDeclaration","scope":877,"src":"5189:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":853,"name":"uint256","nodeType":"ElementaryTypeName","src":"5189:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5095:111:1"},"returnParameters":{"id":858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":877,"src":"5230:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":856,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5229:9:1"},"scope":1390,"src":"5072:275:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":913,"nodeType":"Block","src":"5518:125:1","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":903,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"5591:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":904,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"5597:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5591:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":906,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"5610:3:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":899,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"5572:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":900,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":608,"src":"5579:3:1","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":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":892,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":879,"src":"5532:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":894,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"5554:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":893,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5541:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:22:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5532:31:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":897,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5531:33:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5565:6:1","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"5531:40:1","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":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5584:6:1","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"5531:59:1","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":907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5531:83:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":909,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"5630:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":908,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5617:12:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5617:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5531:107:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":891,"id":912,"nodeType":"Return","src":"5524:114:1"}]},"id":914,"implemented":true,"kind":"function","modifiers":[],"name":"_calcMaxAmount","nameLocation":"5360:14:1","nodeType":"FunctionDefinition","parameters":{"id":888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":879,"mutability":"mutable","name":"amount","nameLocation":"5388:6:1","nodeType":"VariableDeclaration","scope":914,"src":"5380:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":878,"name":"uint256","nodeType":"ElementaryTypeName","src":"5380:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":881,"mutability":"mutable","name":"maxSlippage","nameLocation":"5408:11:1","nodeType":"VariableDeclaration","scope":914,"src":"5400:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":880,"name":"uint256","nodeType":"ElementaryTypeName","src":"5400:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":883,"mutability":"mutable","name":"tokenIn","nameLocation":"5433:7:1","nodeType":"VariableDeclaration","scope":914,"src":"5425:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"5425:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"tokenOut","nameLocation":"5454:8:1","nodeType":"VariableDeclaration","scope":914,"src":"5446:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":884,"name":"address","nodeType":"ElementaryTypeName","src":"5446:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":887,"mutability":"mutable","name":"price","nameLocation":"5476:5:1","nodeType":"VariableDeclaration","scope":914,"src":"5468:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":886,"name":"uint256","nodeType":"ElementaryTypeName","src":"5468:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5374:111:1"},"returnParameters":{"id":891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":914,"src":"5509:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":889,"name":"uint256","nodeType":"ElementaryTypeName","src":"5509:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5508:9:1"},"scope":1390,"src":"5351:292:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1025,"nodeType":"Block","src":"5824:1019:1","statements":[{"assignments":[932],"declarations":[{"constant":false,"id":932,"mutability":"mutable","name":"cp","nameLocation":"5857:2:1","nodeType":"VariableDeclaration","scope":1025,"src":"5830:29:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":931,"nodeType":"UserDefinedTypeName","pathNode":{"id":930,"name":"UniswapCustomParams","nameLocations":["5830:19:1"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"5830:19:1"},"referencedDeclaration":630,"src":"5830:19:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":940,"initialValue":{"arguments":[{"expression":{"id":935,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5873:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5884:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"5873:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":937,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"5899:19:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":938,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5898:21:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_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_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":933,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5862:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5866:6:1","memberName":"decode","nodeType":"MemberAccess","src":"5862:10:1","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5862:58:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"5830:90:1"},{"assignments":[942],"declarations":[{"constant":false,"id":942,"mutability":"mutable","name":"amountOutMin","nameLocation":"5934:12:1","nodeType":"VariableDeclaration","scope":1025,"src":"5926:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":941,"name":"uint256","nodeType":"ElementaryTypeName","src":"5926:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":951,"initialValue":{"arguments":[{"id":944,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"5964:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":945,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"5972:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5983:11:1","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"5972:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":947,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"5996:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":948,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"6005:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":949,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"6015:5:1","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":943,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"5949:14:1","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":950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5949:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5926:95:1"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":958,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"6068:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6071:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"6068:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}],"id":957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6060:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":956,"name":"address","nodeType":"ElementaryTypeName","src":"6060:7:1","typeDescriptions":{}}},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6060:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":961,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6080:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":953,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6043:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":952,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"6028:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6052:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"6028:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:59:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":963,"nodeType":"ExpressionStatement","src":"6028:59:1"},{"assignments":[968],"declarations":[{"constant":false,"id":968,"mutability":"mutable","name":"params","nameLocation":"6135:6:1","nodeType":"VariableDeclaration","scope":1025,"src":"6093:48:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":967,"nodeType":"UserDefinedTypeName","pathNode":{"id":966,"name":"ISwapRouter.ExactInputSingleParams","nameLocations":["6093:11:1","6105:22:1"],"nodeType":"IdentifierPath","referencedDeclaration":13386,"src":"6093:34:1"},"referencedDeclaration":13386,"src":"6093:34:1","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"id":985,"initialValue":{"arguments":[{"id":971,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6196:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":972,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"6221:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":973,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"6242:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6245:7:1","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":626,"src":"6242:10:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":977,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6279:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6271:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"6271:7:1","typeDescriptions":{}}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6271:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":979,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6302:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:9:1","memberName":"timestamp","nodeType":"MemberAccess","src":"6302:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":981,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":923,"src":"6335:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":982,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":942,"src":"6367:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6406:1:1","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":969,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"6144:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$13462_$","typeString":"type(contract ISwapRouter)"}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6156:22:1","memberName":"ExactInputSingleParams","nodeType":"MemberAccess","referencedDeclaration":13386,"src":"6144:34:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactInputSingleParams_$13386_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactInputSingleParams storage pointer)"}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["6187:7:1","6211:8:1","6237:3:1","6260:9:1","6292:8:1","6325:8:1","6349:16:1","6387:17:1"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountIn","amountOutMinimum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"6144:380:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"6093:431:1"},{"assignments":[987],"declarations":[{"constant":false,"id":987,"mutability":"mutable","name":"received","nameLocation":"6539:8:1","nodeType":"VariableDeclaration","scope":1025,"src":"6531:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6531:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":993,"initialValue":{"arguments":[{"id":991,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"6577:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_memory_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams memory"}],"expression":{"expression":{"id":988,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"6550:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6553:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"6550:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}},"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6560:16:1","memberName":"exactInputSingle","nodeType":"MemberAccess","referencedDeclaration":13395,"src":"6550:26:1","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactInputSingleParams_$13386_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactInputSingleParams memory) payable external returns (uint256)"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6531:53:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1000,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6636:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6628:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":998,"name":"address","nodeType":"ElementaryTypeName","src":"6628:7:1","typeDescriptions":{}}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6628:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":1004,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":932,"src":"6651:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6654:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"6651:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}],"id":1003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6643:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1002,"name":"address","nodeType":"ElementaryTypeName","src":"6643:7:1","typeDescriptions":{}}},"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6643:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":995,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"6609:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":994,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"6594:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6618:9:1","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8633,"src":"6594:33:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:68:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6666:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6594:73:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1013,"nodeType":"IfStatement","src":"6590:115:1","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1010,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"6676:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6676:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1012,"nodeType":"RevertStatement","src":"6669:36:1"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1014,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"6735:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1015,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":942,"src":"6746:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6735:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1022,"nodeType":"IfStatement","src":"6731:86:1","trueBody":{"errorCall":{"arguments":[{"id":1018,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"6794:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1019,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":942,"src":"6804:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1017,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"6767:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6767:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1021,"nodeType":"RevertStatement","src":"6760:57:1"}},{"expression":{"id":1023,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":987,"src":"6830:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":929,"id":1024,"nodeType":"Return","src":"6823:15:1"}]},"id":1026,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputUniswap","nameLocation":"5656:18:1","nodeType":"FunctionDefinition","parameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"swapConfig","nameLocation":"5700:10:1","nodeType":"VariableDeclaration","scope":1026,"src":"5680:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":916,"nodeType":"UserDefinedTypeName","pathNode":{"id":915,"name":"SwapConfig","nameLocations":["5680:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"5680:10:1"},"referencedDeclaration":624,"src":"5680:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"tokenIn","nameLocation":"5724:7:1","nodeType":"VariableDeclaration","scope":1026,"src":"5716:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":918,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":921,"mutability":"mutable","name":"tokenOut","nameLocation":"5745:8:1","nodeType":"VariableDeclaration","scope":1026,"src":"5737:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":920,"name":"address","nodeType":"ElementaryTypeName","src":"5737:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":923,"mutability":"mutable","name":"amount","nameLocation":"5767:6:1","nodeType":"VariableDeclaration","scope":1026,"src":"5759:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":922,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":925,"mutability":"mutable","name":"price","nameLocation":"5787:5:1","nodeType":"VariableDeclaration","scope":1026,"src":"5779:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5779:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:122:1"},"returnParameters":{"id":929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1026,"src":"5815:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":927,"name":"uint256","nodeType":"ElementaryTypeName","src":"5815:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5814:9:1"},"scope":1390,"src":"5647:1196:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1133,"nodeType":"Block","src":"7025:982:1","statements":[{"assignments":[1044],"declarations":[{"constant":false,"id":1044,"mutability":"mutable","name":"cp","nameLocation":"7058:2:1","nodeType":"VariableDeclaration","scope":1133,"src":"7031:29:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"},"typeName":{"id":1043,"nodeType":"UserDefinedTypeName","pathNode":{"id":1042,"name":"UniswapCustomParams","nameLocations":["7031:19:1"],"nodeType":"IdentifierPath","referencedDeclaration":630,"src":"7031:19:1"},"referencedDeclaration":630,"src":"7031:19:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_storage_ptr","typeString":"struct SwapLibrary.UniswapCustomParams"}},"visibility":"internal"}],"id":1052,"initialValue":{"arguments":[{"expression":{"id":1047,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"7074:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7085:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"7074:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"components":[{"id":1049,"name":"UniswapCustomParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"7100:19:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}}],"id":1050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7099:21:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UniswapCustomParams_$630_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_$630_storage_ptr_$","typeString":"type(struct SwapLibrary.UniswapCustomParams storage pointer)"}],"expression":{"id":1045,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7063:3:1","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7067:6:1","memberName":"decode","nodeType":"MemberAccess","src":"7063:10:1","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7063:58:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7031:90:1"},{"assignments":[1054],"declarations":[{"constant":false,"id":1054,"mutability":"mutable","name":"amountInMax","nameLocation":"7136:11:1","nodeType":"VariableDeclaration","scope":1133,"src":"7128:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1053,"name":"uint256","nodeType":"ElementaryTypeName","src":"7128:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1063,"initialValue":{"arguments":[{"id":1056,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"7165:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1057,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"7173:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7184:11:1","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"7173:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1059,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"7197:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1060,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"7206:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1061,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"7216:5:1","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":1055,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"7150:14:1","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":1062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7150:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7128:94:1"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":1070,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7269:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7272:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"7269:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}],"id":1069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7261:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1068,"name":"address","nodeType":"ElementaryTypeName","src":"7261:7:1","typeDescriptions":{}}},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7261:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":1075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7286:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1074,"name":"uint256","nodeType":"ElementaryTypeName","src":"7286:7:1","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":1073,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7281:4:1","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7281:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":1077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7295:3:1","memberName":"max","nodeType":"MemberAccess","src":"7281:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1065,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"7244:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1064,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"7229:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7253:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"7229:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7229:70:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1079,"nodeType":"ExpressionStatement","src":"7229:70:1"},{"assignments":[1084],"declarations":[{"constant":false,"id":1084,"mutability":"mutable","name":"params","nameLocation":"7348:6:1","nodeType":"VariableDeclaration","scope":1133,"src":"7305:49:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":1083,"nodeType":"UserDefinedTypeName","pathNode":{"id":1082,"name":"ISwapRouter.ExactOutputSingleParams","nameLocations":["7305:11:1","7317:23:1"],"nodeType":"IdentifierPath","referencedDeclaration":13432,"src":"7305:35:1"},"referencedDeclaration":13432,"src":"7305:35:1","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"id":1101,"initialValue":{"arguments":[{"id":1087,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"7410:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1088,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"7435:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1089,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7456:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7459:7:1","memberName":"feeTier","nodeType":"MemberAccess","referencedDeclaration":626,"src":"7456:10:1","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},{"arguments":[{"id":1093,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7493:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":1092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7485:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1091,"name":"address","nodeType":"ElementaryTypeName","src":"7485:7:1","typeDescriptions":{}}},"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7485:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1095,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7516:5:1","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7522:9:1","memberName":"timestamp","nodeType":"MemberAccess","src":"7516:15:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1097,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"7550:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1098,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"7581:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7619:1:1","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":1085,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"7357:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISwapRouter_$13462_$","typeString":"type(contract ISwapRouter)"}},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7369:23:1","memberName":"ExactOutputSingleParams","nodeType":"MemberAccess","referencedDeclaration":13432,"src":"7357:35:1","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExactOutputSingleParams_$13432_storage_ptr_$","typeString":"type(struct ISwapRouter.ExactOutputSingleParams storage pointer)"}},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["7401:7:1","7425:8:1","7451:3:1","7474:9:1","7506:8:1","7539:9:1","7564:15:1","7600:17:1"],"names":["tokenIn","tokenOut","fee","recipient","deadline","amountOut","amountInMaximum","sqrtPriceLimitX96"],"nodeType":"FunctionCall","src":"7357:380:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}},"nodeType":"VariableDeclarationStatement","src":"7305:432:1"},{"assignments":[1103],"declarations":[{"constant":false,"id":1103,"mutability":"mutable","name":"actualAmount","nameLocation":"7751:12:1","nodeType":"VariableDeclaration","scope":1133,"src":"7743:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"7743:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1109,"initialValue":{"arguments":[{"id":1107,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"7794:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_memory_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams memory"}],"expression":{"expression":{"id":1104,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7766:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7769:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"7766:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7776:17:1","memberName":"exactOutputSingle","nodeType":"MemberAccess","referencedDeclaration":13441,"src":"7766:27:1","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_ExactOutputSingleParams_$13432_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ISwapRouter.ExactOutputSingleParams memory) payable external returns (uint256)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7766:35:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7743:58:1"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":1116,"name":"cp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"7848:2:1","typeDescriptions":{"typeIdentifier":"t_struct$_UniswapCustomParams_$630_memory_ptr","typeString":"struct SwapLibrary.UniswapCustomParams memory"}},"id":1117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7851:6:1","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":629,"src":"7848:9:1","typeDescriptions":{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISwapRouter_$13462","typeString":"contract ISwapRouter"}],"id":1115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7840:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1114,"name":"address","nodeType":"ElementaryTypeName","src":"7840:7:1","typeDescriptions":{}}},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7840:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:1","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":1111,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"7823:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1110,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"7808:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7832:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"7808:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7808:54:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1121,"nodeType":"ExpressionStatement","src":"7808:54:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1122,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"7892:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1123,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"7907:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7892:26:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1130,"nodeType":"IfStatement","src":"7888:89:1","trueBody":{"errorCall":{"arguments":[{"id":1126,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"7951:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1127,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"7965:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1125,"name":"SpentMoreThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"7927:23:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7927:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1129,"nodeType":"RevertStatement","src":"7920:57:1"}},{"expression":{"id":1131,"name":"actualAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"7990:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1041,"id":1132,"nodeType":"Return","src":"7983:19:1"}]},"id":1134,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputUniswap","nameLocation":"6856:19:1","nodeType":"FunctionDefinition","parameters":{"id":1038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1029,"mutability":"mutable","name":"swapConfig","nameLocation":"6901:10:1","nodeType":"VariableDeclaration","scope":1134,"src":"6881:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1028,"nodeType":"UserDefinedTypeName","pathNode":{"id":1027,"name":"SwapConfig","nameLocations":["6881:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6881:10:1"},"referencedDeclaration":624,"src":"6881:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1031,"mutability":"mutable","name":"tokenIn","nameLocation":"6925:7:1","nodeType":"VariableDeclaration","scope":1134,"src":"6917:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1030,"name":"address","nodeType":"ElementaryTypeName","src":"6917:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1033,"mutability":"mutable","name":"tokenOut","nameLocation":"6946:8:1","nodeType":"VariableDeclaration","scope":1134,"src":"6938:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1032,"name":"address","nodeType":"ElementaryTypeName","src":"6938:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1035,"mutability":"mutable","name":"amount","nameLocation":"6968:6:1","nodeType":"VariableDeclaration","scope":1134,"src":"6960:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1034,"name":"uint256","nodeType":"ElementaryTypeName","src":"6960:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1037,"mutability":"mutable","name":"price","nameLocation":"6988:5:1","nodeType":"VariableDeclaration","scope":1134,"src":"6980:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1036,"name":"uint256","nodeType":"ElementaryTypeName","src":"6980:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6875:122:1"},"returnParameters":{"id":1041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1134,"src":"7016:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1039,"name":"uint256","nodeType":"ElementaryTypeName","src":"7016:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7015:9:1"},"scope":1390,"src":"6847:1160:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1234,"nodeType":"Block","src":"8195:690:1","statements":[{"assignments":[1152,1155],"declarations":[{"constant":false,"id":1152,"mutability":"mutable","name":"router","nameLocation":"8215:6:1","nodeType":"VariableDeclaration","scope":1234,"src":"8202:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},"typeName":{"id":1151,"nodeType":"UserDefinedTypeName","pathNode":{"id":1150,"name":"ICurveRouter","nameLocations":["8202:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":1667,"src":"8202:12:1"},"referencedDeclaration":1667,"src":"8202:12:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1155,"mutability":"mutable","name":"route","nameLocation":"8253:5:1","nodeType":"VariableDeclaration","scope":1234,"src":"8223:35:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1154,"nodeType":"UserDefinedTypeName","pathNode":{"id":1153,"name":"CurveRoutes.CurveRoute","nameLocations":["8223:11:1","8235:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"8223:22:1"},"referencedDeclaration":47,"src":"8223:22:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":1163,"initialValue":{"arguments":[{"expression":{"id":1158,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"8291:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8302:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"8291:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1160,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"8322:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1161,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"8337:8:1","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":1156,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"8262:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$589_$","typeString":"type(library CurveRoutes)"}},"id":1157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8274:9:1","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":588,"src":"8262:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:89:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"8201:150:1"},{"assignments":[1165],"declarations":[{"constant":false,"id":1165,"mutability":"mutable","name":"amountOutMin","nameLocation":"8365:12:1","nodeType":"VariableDeclaration","scope":1234,"src":"8357:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1164,"name":"uint256","nodeType":"ElementaryTypeName","src":"8357:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1174,"initialValue":{"arguments":[{"id":1167,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"8395:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1168,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"8403:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8414:11:1","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"8403:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1170,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"8427:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1171,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1141,"src":"8436:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1172,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"8446:5:1","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":1166,"name":"_calcMinAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"8380:14:1","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":1173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8380:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8357:95:1"},{"expression":{"arguments":[{"arguments":[{"id":1181,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1152,"src":"8499:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}],"id":1180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8491:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1179,"name":"address","nodeType":"ElementaryTypeName","src":"8491:7:1","typeDescriptions":{}}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8491:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1183,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"8508:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1176,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"8474:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1175,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"8459:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8483:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"8459:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8459:56:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1185,"nodeType":"ExpressionStatement","src":"8459:56:1"},{"expression":{"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1186,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8521:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1189,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"8548:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8554:5:1","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"8548:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1191,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"8561:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8567:10:1","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"8561:16:1","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1193,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1143,"src":"8579:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1194,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"8587:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1195,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"8601:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8607:5:1","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":46,"src":"8601:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":1199,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8622:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":1198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8614:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"8614:7:1","typeDescriptions":{}}},"id":1200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8614:13:1","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":1187,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1152,"src":"8532:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"id":1188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8539:8:1","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"8532:15:1","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":1201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8532:96:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8521:107:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1203,"nodeType":"ExpressionStatement","src":"8521:107:1"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1210,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8681:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":1209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8673:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1208,"name":"address","nodeType":"ElementaryTypeName","src":"8673:7:1","typeDescriptions":{}}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8673:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1214,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1152,"src":"8696:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}],"id":1213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8688:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1212,"name":"address","nodeType":"ElementaryTypeName","src":"8688:7:1","typeDescriptions":{}}},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8688:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1205,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"8654:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1204,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"8639:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8663:9:1","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8633,"src":"8639:33:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8639:65:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8639:70:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1222,"nodeType":"IfStatement","src":"8635:112:1","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1219,"name":"AllowanceShouldGoBackToZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"8718:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1221,"nodeType":"RevertStatement","src":"8711:36:1"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1223,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8777:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1224,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"8788:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8777:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1231,"nodeType":"IfStatement","src":"8773:86:1","trueBody":{"errorCall":{"arguments":[{"id":1227,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8836:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1228,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1165,"src":"8846:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1226,"name":"ReceivedLessThanAcceptable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"8809:26:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8809:50:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1230,"nodeType":"RevertStatement","src":"8802:57:1"}},{"expression":{"id":1232,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"8872:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1149,"id":1233,"nodeType":"Return","src":"8865:15:1"}]},"id":1235,"implemented":true,"kind":"function","modifiers":[],"name":"_exactInputCurve","nameLocation":"8020:16:1","nodeType":"FunctionDefinition","parameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"swapConfig","nameLocation":"8062:10:1","nodeType":"VariableDeclaration","scope":1235,"src":"8042:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1136,"nodeType":"UserDefinedTypeName","pathNode":{"id":1135,"name":"SwapConfig","nameLocations":["8042:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"8042:10:1"},"referencedDeclaration":624,"src":"8042:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1139,"mutability":"mutable","name":"tokenIn","nameLocation":"8086:7:1","nodeType":"VariableDeclaration","scope":1235,"src":"8078:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1138,"name":"address","nodeType":"ElementaryTypeName","src":"8078:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1141,"mutability":"mutable","name":"tokenOut","nameLocation":"8107:8:1","nodeType":"VariableDeclaration","scope":1235,"src":"8099:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1140,"name":"address","nodeType":"ElementaryTypeName","src":"8099:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1143,"mutability":"mutable","name":"amount","nameLocation":"8129:6:1","nodeType":"VariableDeclaration","scope":1235,"src":"8121:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1142,"name":"uint256","nodeType":"ElementaryTypeName","src":"8121:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1145,"mutability":"mutable","name":"price","nameLocation":"8149:5:1","nodeType":"VariableDeclaration","scope":1235,"src":"8141:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"8141:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8036:122:1"},"returnParameters":{"id":1149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1148,"mutability":"mutable","name":"received","nameLocation":"8185:8:1","nodeType":"VariableDeclaration","scope":1235,"src":"8177:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1147,"name":"uint256","nodeType":"ElementaryTypeName","src":"8177:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8176:18:1"},"scope":1390,"src":"8011:874:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1281,"nodeType":"Block","src":"9063:317:1","statements":[{"expression":{"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1250,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1248,"src":"9069:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1253,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9100:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9106:5:1","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"9100:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1255,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9113:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9119:10:1","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"9113:16:1","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1257,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"9131:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1258,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9139:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9145:5:1","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":46,"src":"9139:11:1","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":1251,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"9086:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9093:6:1","memberName":"get_dx","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"9086:13:1","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":1260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9086:65:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9069:82:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1262,"nodeType":"ExpressionStatement","src":"9069:82:1"},{"expression":{"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1263,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"9157:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":1266,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9191:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1267,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9197:5:1","memberName":"route","nodeType":"MemberAccess","referencedDeclaration":35,"src":"9191:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11] memory"}},{"expression":{"id":1268,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9210:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9216:10:1","memberName":"swapParams","nodeType":"MemberAccess","referencedDeclaration":42,"src":"9210:16:1","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_memory_ptr_$5_memory_ptr","typeString":"uint256[5] memory[5] memory"}},{"id":1270,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1248,"src":"9234:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":1271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9256:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":1272,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"9337:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},"id":1273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9343:5:1","memberName":"pools","nodeType":"MemberAccess","referencedDeclaration":46,"src":"9337:11:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5] memory"}},{"arguments":[{"id":1276,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9364:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapLibrary_$1390","typeString":"library SwapLibrary"}],"id":1275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9356:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1274,"name":"address","nodeType":"ElementaryTypeName","src":"9356:7:1","typeDescriptions":{}}},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9356:13:1","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":1264,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"9168:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9175:8:1","memberName":"exchange","nodeType":"MemberAccess","referencedDeclaration":1483,"src":"9168:15:1","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":1278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9168:207:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9157:218:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1280,"nodeType":"ExpressionStatement","src":"9157:218:1"}]},"id":1282,"implemented":true,"kind":"function","modifiers":[],"name":"_exchangeCurve","nameLocation":"8898:14:1","nodeType":"FunctionDefinition","parameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1238,"mutability":"mutable","name":"router","nameLocation":"8931:6:1","nodeType":"VariableDeclaration","scope":1282,"src":"8918:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},"typeName":{"id":1237,"nodeType":"UserDefinedTypeName","pathNode":{"id":1236,"name":"ICurveRouter","nameLocations":["8918:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":1667,"src":"8918:12:1"},"referencedDeclaration":1667,"src":"8918:12:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1241,"mutability":"mutable","name":"route","nameLocation":"8973:5:1","nodeType":"VariableDeclaration","scope":1282,"src":"8943:35:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1240,"nodeType":"UserDefinedTypeName","pathNode":{"id":1239,"name":"CurveRoutes.CurveRoute","nameLocations":["8943:11:1","8955:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"8943:22:1"},"referencedDeclaration":47,"src":"8943:22:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"},{"constant":false,"id":1243,"mutability":"mutable","name":"amount","nameLocation":"8992:6:1","nodeType":"VariableDeclaration","scope":1282,"src":"8984:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1242,"name":"uint256","nodeType":"ElementaryTypeName","src":"8984:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8912:90:1"},"returnParameters":{"id":1249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1246,"mutability":"mutable","name":"received","nameLocation":"9029:8:1","nodeType":"VariableDeclaration","scope":1282,"src":"9021:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"9021:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1248,"mutability":"mutable","name":"amountInActual","nameLocation":"9047:14:1","nodeType":"VariableDeclaration","scope":1282,"src":"9039:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1247,"name":"uint256","nodeType":"ElementaryTypeName","src":"9039:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9020:42:1"},"scope":1390,"src":"8889:491:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1388,"nodeType":"Block","src":"9560:799:1","statements":[{"assignments":[1300,1303],"declarations":[{"constant":false,"id":1300,"mutability":"mutable","name":"router","nameLocation":"9580:6:1","nodeType":"VariableDeclaration","scope":1388,"src":"9567:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},"typeName":{"id":1299,"nodeType":"UserDefinedTypeName","pathNode":{"id":1298,"name":"ICurveRouter","nameLocations":["9567:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":1667,"src":"9567:12:1"},"referencedDeclaration":1667,"src":"9567:12:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},"visibility":"internal"},{"constant":false,"id":1303,"mutability":"mutable","name":"route","nameLocation":"9618:5:1","nodeType":"VariableDeclaration","scope":1388,"src":"9588:35:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute"},"typeName":{"id":1302,"nodeType":"UserDefinedTypeName","pathNode":{"id":1301,"name":"CurveRoutes.CurveRoute","nameLocations":["9588:11:1","9600:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":47,"src":"9588:22:1"},"referencedDeclaration":47,"src":"9588:22:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_storage_ptr","typeString":"struct CurveRoutes.CurveRoute"}},"visibility":"internal"}],"id":1311,"initialValue":{"arguments":[{"expression":{"id":1306,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1285,"src":"9656:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9667:12:1","memberName":"customParams","nodeType":"MemberAccess","referencedDeclaration":623,"src":"9656:23:1","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1308,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"9687:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1309,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"9702:8:1","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":1304,"name":"CurveRoutes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"9627:11:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CurveRoutes_$589_$","typeString":"type(library CurveRoutes)"}},"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9639:9:1","memberName":"findRoute","nodeType":"MemberAccess","referencedDeclaration":588,"src":"9627:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"function (bytes memory,address,address) pure returns (contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"id":1310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9627:89:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$","typeString":"tuple(contract ICurveRouter,struct CurveRoutes.CurveRoute memory)"}},"nodeType":"VariableDeclarationStatement","src":"9566:150:1"},{"assignments":[1313],"declarations":[{"constant":false,"id":1313,"mutability":"mutable","name":"amountInMax","nameLocation":"9730:11:1","nodeType":"VariableDeclaration","scope":1388,"src":"9722:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1312,"name":"uint256","nodeType":"ElementaryTypeName","src":"9722:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1322,"initialValue":{"arguments":[{"id":1315,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"9759:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1316,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1285,"src":"9767:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9778:11:1","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"9767:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1318,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"9791:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1319,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"9800:8:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1320,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1293,"src":"9810:5:1","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":1314,"name":"_calcMaxAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":914,"src":"9744:14:1","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":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9744:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9722:94:1"},{"expression":{"arguments":[{"arguments":[{"id":1329,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"9862:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9854:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1327,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:1","typeDescriptions":{}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9854:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1331,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1313,"src":"9871:11:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1324,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"9837:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1323,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"9822:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9846:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"9822:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:61:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1333,"nodeType":"ExpressionStatement","src":"9822:61:1"},{"assignments":[1335],"declarations":[{"constant":false,"id":1335,"mutability":"mutable","name":"amountInConsumed","nameLocation":"9897:16:1","nodeType":"VariableDeclaration","scope":1388,"src":"9889:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"9889:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1337,"initialValue":{"hexValue":"30","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9916:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9889:28:1"},{"body":{"id":1373,"nodeType":"Block","src":"10086:183:1","statements":[{"assignments":[1352,1354],"declarations":[{"constant":false,"id":1352,"mutability":"mutable","name":"received","nameLocation":"10103:8:1","nodeType":"VariableDeclaration","scope":1373,"src":"10095:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1351,"name":"uint256","nodeType":"ElementaryTypeName","src":"10095:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1354,"mutability":"mutable","name":"amountInActual","nameLocation":"10121:14:1","nodeType":"VariableDeclaration","scope":1373,"src":"10113:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1353,"name":"uint256","nodeType":"ElementaryTypeName","src":"10113:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1360,"initialValue":{"arguments":[{"id":1356,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"10154:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}},{"id":1357,"name":"route","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"10162:5:1","typeDescriptions":{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"}},{"id":1358,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"10169:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"},{"typeIdentifier":"t_struct$_CurveRoute_$47_memory_ptr","typeString":"struct CurveRoutes.CurveRoute memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1355,"name":"_exchangeCurve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"10139:14:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ICurveRouter_$1667_$_t_struct$_CurveRoute_$47_memory_ptr_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract ICurveRouter,struct CurveRoutes.CurveRoute memory,uint256) returns (uint256,uint256)"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10139:37:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10094:82:1"},{"expression":{"id":1367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1361,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"10184:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"id":1364,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"10203:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1365,"name":"received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"10211:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1362,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"10194:4:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10199:3:1","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"10194:8:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10194:26:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10184:36:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1368,"nodeType":"ExpressionStatement","src":"10184:36:1"},{"expression":{"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1369,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"10228:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1370,"name":"amountInActual","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1354,"src":"10248:14:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10228:34:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1372,"nodeType":"ExpressionStatement","src":"10228:34:1"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1341,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"10048:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10058:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10048:11:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1344,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1339,"src":"10063:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1345,"name":"MAX_EXCHANGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"10067:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10063:16:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10048:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1374,"initializationExpression":{"assignments":[1339],"declarations":[{"constant":false,"id":1339,"mutability":"mutable","name":"i","nameLocation":"10045:1:1","nodeType":"VariableDeclaration","scope":1374,"src":"10037:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1338,"name":"uint256","nodeType":"ElementaryTypeName","src":"10037:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1340,"nodeType":"VariableDeclarationStatement","src":"10037:9:1"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10081:3:1","subExpression":{"id":1348,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1339,"src":"10081:1:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1350,"nodeType":"ExpressionStatement","src":"10081:3:1"},"nodeType":"ForStatement","src":"10032:237:1"},{"expression":{"arguments":[{"arguments":[{"id":1381,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"10314:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICurveRouter_$1667","typeString":"contract ICurveRouter"}],"id":1380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10306:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1379,"name":"address","nodeType":"ElementaryTypeName","src":"10306:7:1","typeDescriptions":{}}},"id":1382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10306:15:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10323:1:1","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":1376,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1287,"src":"10289:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1375,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"10274:14:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10298:7:1","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"10274:31:1","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10274:51:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1385,"nodeType":"ExpressionStatement","src":"10274:51:1"},{"expression":{"id":1386,"name":"amountInConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"10338:16:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1297,"id":1387,"nodeType":"Return","src":"10331:23:1"}]},"id":1389,"implemented":true,"kind":"function","modifiers":[],"name":"_exactOutputCurve","nameLocation":"9393:17:1","nodeType":"FunctionDefinition","parameters":{"id":1294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"swapConfig","nameLocation":"9436:10:1","nodeType":"VariableDeclaration","scope":1389,"src":"9416:30:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":1284,"nodeType":"UserDefinedTypeName","pathNode":{"id":1283,"name":"SwapConfig","nameLocations":["9416:10:1"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"9416:10:1"},"referencedDeclaration":624,"src":"9416:10:1","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":1287,"mutability":"mutable","name":"tokenIn","nameLocation":"9460:7:1","nodeType":"VariableDeclaration","scope":1389,"src":"9452:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1286,"name":"address","nodeType":"ElementaryTypeName","src":"9452:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1289,"mutability":"mutable","name":"tokenOut","nameLocation":"9481:8:1","nodeType":"VariableDeclaration","scope":1389,"src":"9473:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1288,"name":"address","nodeType":"ElementaryTypeName","src":"9473:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1291,"mutability":"mutable","name":"amount","nameLocation":"9503:6:1","nodeType":"VariableDeclaration","scope":1389,"src":"9495:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"9495:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1293,"mutability":"mutable","name":"price","nameLocation":"9523:5:1","nodeType":"VariableDeclaration","scope":1389,"src":"9515:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1292,"name":"uint256","nodeType":"ElementaryTypeName","src":"9515:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9410:122:1"},"returnParameters":{"id":1297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1389,"src":"9551:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1295,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:9:1"},"scope":1390,"src":"9384:975:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":1391,"src":"522:9839:1","usedErrors":[49,51,53,58,62,68,632,634,636,638,640,646,652],"usedEvents":[]}],"src":"39:10323:1"},"id":1},"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/dependencies/ICurveRouter.sol","exportedSymbols":{"ICurveRouter":[1667]},"id":1668,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1392,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"39:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"ICurveRouter","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1667,"linearizedBaseContracts":[1667],"name":"ICurveRouter","nameLocation":"187:12:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"56d0661e240dfb199ef196e16e6f42473990366314f0226ac978f7be3cd9ee83","id":1416,"name":"Exchange","nameLocation":"212:8:2","nodeType":"EventDefinition","parameters":{"id":1415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1394,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"246:6:2","nodeType":"VariableDeclaration","scope":1416,"src":"230:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1393,"name":"address","nodeType":"ElementaryTypeName","src":"230:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1396,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"278:8:2","nodeType":"VariableDeclaration","scope":1416,"src":"262:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1395,"name":"address","nodeType":"ElementaryTypeName","src":"262:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1400,"indexed":false,"mutability":"mutable","name":"route","nameLocation":"308:5:2","nodeType":"VariableDeclaration","scope":1416,"src":"296:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1397,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1399,"length":{"hexValue":"3131","id":1398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"304:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"296:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1406,"indexed":false,"mutability":"mutable","name":"swap_params","nameLocation":"337:11:2","nodeType":"VariableDeclaration","scope":1416,"src":"323:25:2","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":1401,"name":"uint256","nodeType":"ElementaryTypeName","src":"323:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1403,"length":{"hexValue":"35","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"331:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1405,"length":{"hexValue":"35","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"334:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"323:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1410,"indexed":false,"mutability":"mutable","name":"pools","nameLocation":"369:5:2","nodeType":"VariableDeclaration","scope":1416,"src":"358:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1407,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1409,"length":{"hexValue":"35","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"366:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"358:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1412,"indexed":false,"mutability":"mutable","name":"in_amount","nameLocation":"392:9:2","nodeType":"VariableDeclaration","scope":1416,"src":"384:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1411,"name":"uint256","nodeType":"ElementaryTypeName","src":"384:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1414,"indexed":false,"mutability":"mutable","name":"out_amount","nameLocation":"419:10:2","nodeType":"VariableDeclaration","scope":1416,"src":"411:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"220:215:2"},"src":"206:230:2"},{"functionSelector":"371dc447","id":1435,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"451:8:2","nodeType":"FunctionDefinition","parameters":{"id":1431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1420,"mutability":"mutable","name":"_route","nameLocation":"479:6:2","nodeType":"VariableDeclaration","scope":1435,"src":"460:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1417,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1419,"length":{"hexValue":"3131","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"468:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"460:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1426,"mutability":"mutable","name":"_swap_params","nameLocation":"508:12:2","nodeType":"VariableDeclaration","scope":1435,"src":"487:33:2","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":1421,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1423,"length":{"hexValue":"35","id":1422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"495:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1425,"length":{"hexValue":"35","id":1424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"498:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"487:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1428,"mutability":"mutable","name":"_amount","nameLocation":"530:7:2","nodeType":"VariableDeclaration","scope":1435,"src":"522:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1427,"name":"uint256","nodeType":"ElementaryTypeName","src":"522:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1430,"mutability":"mutable","name":"_expected","nameLocation":"547:9:2","nodeType":"VariableDeclaration","scope":1435,"src":"539:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1429,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"459:98:2"},"returnParameters":{"id":1434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1435,"src":"608:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1432,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"607:9:2"},"scope":1667,"src":"442:175:2","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"5c9c18e2","id":1458,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"631:8:2","nodeType":"FunctionDefinition","parameters":{"id":1454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1439,"mutability":"mutable","name":"_route","nameLocation":"668:6:2","nodeType":"VariableDeclaration","scope":1458,"src":"649:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1436,"name":"address","nodeType":"ElementaryTypeName","src":"649:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1438,"length":{"hexValue":"3131","id":1437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"657:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"649:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1445,"mutability":"mutable","name":"_swap_params","nameLocation":"705:12:2","nodeType":"VariableDeclaration","scope":1458,"src":"684:33:2","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":1440,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1442,"length":{"hexValue":"35","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"692:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1444,"length":{"hexValue":"35","id":1443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"695:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"684:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1447,"mutability":"mutable","name":"_amount","nameLocation":"735:7:2","nodeType":"VariableDeclaration","scope":1458,"src":"727:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"727:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1449,"mutability":"mutable","name":"_expected","nameLocation":"760:9:2","nodeType":"VariableDeclaration","scope":1458,"src":"752:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1448,"name":"uint256","nodeType":"ElementaryTypeName","src":"752:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1453,"mutability":"mutable","name":"_pools","nameLocation":"797:6:2","nodeType":"VariableDeclaration","scope":1458,"src":"779:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1450,"name":"address","nodeType":"ElementaryTypeName","src":"779:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1452,"length":{"hexValue":"35","id":1451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"787:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"779:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"639:170:2"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1456,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1458,"src":"836:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:9:2"},"scope":1667,"src":"622:223:2","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c872a3c5","id":1483,"implemented":false,"kind":"function","modifiers":[],"name":"exchange","nameLocation":"859:8:2","nodeType":"FunctionDefinition","parameters":{"id":1479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1462,"mutability":"mutable","name":"_route","nameLocation":"896:6:2","nodeType":"VariableDeclaration","scope":1483,"src":"877:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1459,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1461,"length":{"hexValue":"3131","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"885:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"877:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"_swap_params","nameLocation":"933:12:2","nodeType":"VariableDeclaration","scope":1483,"src":"912:33:2","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":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"912:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1465,"length":{"hexValue":"35","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"920:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1467,"length":{"hexValue":"35","id":1466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"923:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"912:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1470,"mutability":"mutable","name":"_amount","nameLocation":"963:7:2","nodeType":"VariableDeclaration","scope":1483,"src":"955:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1472,"mutability":"mutable","name":"_expected","nameLocation":"988:9:2","nodeType":"VariableDeclaration","scope":1483,"src":"980:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1471,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1476,"mutability":"mutable","name":"_pools","nameLocation":"1025:6:2","nodeType":"VariableDeclaration","scope":1483,"src":"1007:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1473,"name":"address","nodeType":"ElementaryTypeName","src":"1007:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1475,"length":{"hexValue":"35","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1015:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1007:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1478,"mutability":"mutable","name":"_receiver","nameLocation":"1049:9:2","nodeType":"VariableDeclaration","scope":1483,"src":"1041:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1477,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"867:197:2"},"returnParameters":{"id":1482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1483,"src":"1091:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1090:9:2"},"scope":1667,"src":"850:250:2","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"c07b5353","id":1504,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1114:6:2","nodeType":"FunctionDefinition","parameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1487,"mutability":"mutable","name":"_route","nameLocation":"1149:6:2","nodeType":"VariableDeclaration","scope":1504,"src":"1130:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1484,"name":"address","nodeType":"ElementaryTypeName","src":"1130:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1486,"length":{"hexValue":"3131","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1130:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1493,"mutability":"mutable","name":"_swap_params","nameLocation":"1186:12:2","nodeType":"VariableDeclaration","scope":1504,"src":"1165:33:2","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":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1490,"length":{"hexValue":"35","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1173:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1492,"length":{"hexValue":"35","id":1491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1176:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1165:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1495,"mutability":"mutable","name":"_out_amount","nameLocation":"1216:11:2","nodeType":"VariableDeclaration","scope":1504,"src":"1208:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1208:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1499,"mutability":"mutable","name":"_pools","nameLocation":"1255:6:2","nodeType":"VariableDeclaration","scope":1504,"src":"1237:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1496,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1498,"length":{"hexValue":"35","id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1245:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1237:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1120:147:2"},"returnParameters":{"id":1503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1504,"src":"1291:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1291:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1290:9:2"},"scope":1667,"src":"1105:195:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81fc0ca5","id":1529,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1314:6:2","nodeType":"FunctionDefinition","parameters":{"id":1525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"_route","nameLocation":"1349:6:2","nodeType":"VariableDeclaration","scope":1529,"src":"1330:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1507,"length":{"hexValue":"3131","id":1506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1338:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1330:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"_swap_params","nameLocation":"1386:12:2","nodeType":"VariableDeclaration","scope":1529,"src":"1365:33:2","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":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1511,"length":{"hexValue":"35","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1373:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1513,"length":{"hexValue":"35","id":1512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1376:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1365:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"_out_amount","nameLocation":"1416:11:2","nodeType":"VariableDeclaration","scope":1529,"src":"1408:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"1408:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1520,"mutability":"mutable","name":"_pools","nameLocation":"1455:6:2","nodeType":"VariableDeclaration","scope":1529,"src":"1437:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1517,"name":"address","nodeType":"ElementaryTypeName","src":"1437:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1519,"length":{"hexValue":"35","id":1518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1445:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1437:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1524,"mutability":"mutable","name":"_base_pools","nameLocation":"1489:11:2","nodeType":"VariableDeclaration","scope":1529,"src":"1471:29:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1521,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1523,"length":{"hexValue":"35","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1479:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1471:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1320:186:2"},"returnParameters":{"id":1528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1529,"src":"1530:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1526,"name":"uint256","nodeType":"ElementaryTypeName","src":"1530:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1529:9:2"},"scope":1667,"src":"1305:234:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"90e7e205","id":1558,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1553:6:2","nodeType":"FunctionDefinition","parameters":{"id":1554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1533,"mutability":"mutable","name":"_route","nameLocation":"1588:6:2","nodeType":"VariableDeclaration","scope":1558,"src":"1569:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1530,"name":"address","nodeType":"ElementaryTypeName","src":"1569:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1532,"length":{"hexValue":"3131","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1577:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1569:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"_swap_params","nameLocation":"1625:12:2","nodeType":"VariableDeclaration","scope":1558,"src":"1604:33:2","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":1534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1604:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1536,"length":{"hexValue":"35","id":1535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1612:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1538,"length":{"hexValue":"35","id":1537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1615:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1604:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1541,"mutability":"mutable","name":"_out_amount","nameLocation":"1655:11:2","nodeType":"VariableDeclaration","scope":1558,"src":"1647:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1540,"name":"uint256","nodeType":"ElementaryTypeName","src":"1647:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1545,"mutability":"mutable","name":"_pools","nameLocation":"1694:6:2","nodeType":"VariableDeclaration","scope":1558,"src":"1676:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1542,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1544,"length":{"hexValue":"35","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1684:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1676:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1549,"mutability":"mutable","name":"_base_pools","nameLocation":"1728:11:2","nodeType":"VariableDeclaration","scope":1558,"src":"1710:29:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"1710:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1548,"length":{"hexValue":"35","id":1547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1718:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1710:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1553,"mutability":"mutable","name":"_base_tokens","nameLocation":"1767:12:2","nodeType":"VariableDeclaration","scope":1558,"src":"1749:30:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1550,"name":"address","nodeType":"ElementaryTypeName","src":"1749:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1552,"length":{"hexValue":"35","id":1551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1749:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1559:226:2"},"returnParameters":{"id":1557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1558,"src":"1809:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1555,"name":"uint256","nodeType":"ElementaryTypeName","src":"1809:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1808:9:2"},"scope":1667,"src":"1544:274:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d10eb385","id":1591,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"1832:6:2","nodeType":"FunctionDefinition","parameters":{"id":1587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1562,"mutability":"mutable","name":"_route","nameLocation":"1867:6:2","nodeType":"VariableDeclaration","scope":1591,"src":"1848:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1559,"name":"address","nodeType":"ElementaryTypeName","src":"1848:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1561,"length":{"hexValue":"3131","id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1856:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"1848:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1568,"mutability":"mutable","name":"_swap_params","nameLocation":"1904:12:2","nodeType":"VariableDeclaration","scope":1591,"src":"1883:33:2","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":1563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1565,"length":{"hexValue":"35","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1891:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1567,"length":{"hexValue":"35","id":1566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1894:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1883:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1570,"mutability":"mutable","name":"_out_amount","nameLocation":"1934:11:2","nodeType":"VariableDeclaration","scope":1591,"src":"1926:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1569,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1574,"mutability":"mutable","name":"_pools","nameLocation":"1973:6:2","nodeType":"VariableDeclaration","scope":1591,"src":"1955:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1571,"name":"address","nodeType":"ElementaryTypeName","src":"1955:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1573,"length":{"hexValue":"35","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1955:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1578,"mutability":"mutable","name":"_base_pools","nameLocation":"2007:11:2","nodeType":"VariableDeclaration","scope":1591,"src":"1989:29:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1575,"name":"address","nodeType":"ElementaryTypeName","src":"1989:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1577,"length":{"hexValue":"35","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1997:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"1989:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1582,"mutability":"mutable","name":"_base_tokens","nameLocation":"2046:12:2","nodeType":"VariableDeclaration","scope":1591,"src":"2028:30:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1579,"name":"address","nodeType":"ElementaryTypeName","src":"2028:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1581,"length":{"hexValue":"35","id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2036:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2028:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1586,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2086:18:2","nodeType":"VariableDeclaration","scope":1591,"src":"2068:36:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1583,"name":"address","nodeType":"ElementaryTypeName","src":"2068:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1585,"length":{"hexValue":"35","id":1584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2076:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2068:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"1838:272:2"},"returnParameters":{"id":1590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1591,"src":"2134:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1588,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2133:9:2"},"scope":1667,"src":"1823:320:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6d654ccd","id":1628,"implemented":false,"kind":"function","modifiers":[],"name":"get_dx","nameLocation":"2157:6:2","nodeType":"FunctionDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1595,"mutability":"mutable","name":"_route","nameLocation":"2192:6:2","nodeType":"VariableDeclaration","scope":1628,"src":"2173:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1594,"length":{"hexValue":"3131","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2173:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1601,"mutability":"mutable","name":"_swap_params","nameLocation":"2229:12:2","nodeType":"VariableDeclaration","scope":1628,"src":"2208:33:2","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":1596,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1598,"length":{"hexValue":"35","id":1597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2216:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1600,"length":{"hexValue":"35","id":1599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2219:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2208:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1603,"mutability":"mutable","name":"_out_amount","nameLocation":"2259:11:2","nodeType":"VariableDeclaration","scope":1628,"src":"2251:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1602,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1607,"mutability":"mutable","name":"_pools","nameLocation":"2298:6:2","nodeType":"VariableDeclaration","scope":1628,"src":"2280:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1604,"name":"address","nodeType":"ElementaryTypeName","src":"2280:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1606,"length":{"hexValue":"35","id":1605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2288:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2280:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1611,"mutability":"mutable","name":"_base_pools","nameLocation":"2332:11:2","nodeType":"VariableDeclaration","scope":1628,"src":"2314:29:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1608,"name":"address","nodeType":"ElementaryTypeName","src":"2314:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1610,"length":{"hexValue":"35","id":1609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2314:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1615,"mutability":"mutable","name":"_base_tokens","nameLocation":"2371:12:2","nodeType":"VariableDeclaration","scope":1628,"src":"2353:30:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1614,"length":{"hexValue":"35","id":1613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2361:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2353:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1619,"mutability":"mutable","name":"_second_base_pools","nameLocation":"2411:18:2","nodeType":"VariableDeclaration","scope":1628,"src":"2393:36:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1616,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1618,"length":{"hexValue":"35","id":1617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2401:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2393:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"},{"constant":false,"id":1623,"mutability":"mutable","name":"_second_base_tokens","nameLocation":"2457:19:2","nodeType":"VariableDeclaration","scope":1628,"src":"2439:37:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1620,"name":"address","nodeType":"ElementaryTypeName","src":"2439:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1622,"length":{"hexValue":"35","id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2447:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2439:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2163:319:2"},"returnParameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1628,"src":"2506:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"2506:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:9:2"},"scope":1667,"src":"2148:367:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"81889a2c","id":1645,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2529:6:2","nodeType":"FunctionDefinition","parameters":{"id":1641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1632,"mutability":"mutable","name":"_route","nameLocation":"2555:6:2","nodeType":"VariableDeclaration","scope":1645,"src":"2536:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1629,"name":"address","nodeType":"ElementaryTypeName","src":"2536:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1631,"length":{"hexValue":"3131","id":1630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2536:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1638,"mutability":"mutable","name":"_swap_params","nameLocation":"2584:12:2","nodeType":"VariableDeclaration","scope":1645,"src":"2563:33:2","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":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"2563:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1635,"length":{"hexValue":"35","id":1634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2571:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1637,"length":{"hexValue":"35","id":1636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2563:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1640,"mutability":"mutable","name":"_amount","nameLocation":"2606:7:2","nodeType":"VariableDeclaration","scope":1645,"src":"2598:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1639,"name":"uint256","nodeType":"ElementaryTypeName","src":"2598:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2535:79:2"},"returnParameters":{"id":1644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1645,"src":"2662:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2661:9:2"},"scope":1667,"src":"2520:151:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"637653cb","id":1666,"implemented":false,"kind":"function","modifiers":[],"name":"get_dy","nameLocation":"2685:6:2","nodeType":"FunctionDefinition","parameters":{"id":1662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1649,"mutability":"mutable","name":"_route","nameLocation":"2720:6:2","nodeType":"VariableDeclaration","scope":1666,"src":"2701:25:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_memory_ptr","typeString":"address[11]"},"typeName":{"baseType":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1648,"length":{"hexValue":"3131","id":1647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2709:2:2","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"nodeType":"ArrayTypeName","src":"2701:11:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$11_storage_ptr","typeString":"address[11]"}},"visibility":"internal"},{"constant":false,"id":1655,"mutability":"mutable","name":"_swap_params","nameLocation":"2757:12:2","nodeType":"VariableDeclaration","scope":1666,"src":"2736:33:2","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":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"2736:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1652,"length":{"hexValue":"35","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2744:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$5_storage_ptr","typeString":"uint256[5]"}},"id":1654,"length":{"hexValue":"35","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2747:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2736:13:2","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_uint256_$5_storage_$5_storage_ptr","typeString":"uint256[5][5]"}},"visibility":"internal"},{"constant":false,"id":1657,"mutability":"mutable","name":"_amount","nameLocation":"2787:7:2","nodeType":"VariableDeclaration","scope":1666,"src":"2779:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1656,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1661,"mutability":"mutable","name":"_pools","nameLocation":"2822:6:2","nodeType":"VariableDeclaration","scope":1666,"src":"2804:24:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_memory_ptr","typeString":"address[5]"},"typeName":{"baseType":{"id":1658,"name":"address","nodeType":"ElementaryTypeName","src":"2804:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1660,"length":{"hexValue":"35","id":1659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2812:1:2","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"nodeType":"ArrayTypeName","src":"2804:10:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$5_storage_ptr","typeString":"address[5]"}},"visibility":"internal"}],"src":"2691:143:2"},"returnParameters":{"id":1665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1666,"src":"2858:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1663,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2857:9:2"},"scope":1667,"src":"2676:191:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1668,"src":"177:2692:2","usedErrors":[],"usedEvents":[1416]}],"src":"39:2831:2"},"id":2},"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol","exportedSymbols":{"ISwapRouter":[13462],"ISwapRouterErrors":[1697]},"id":1698,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":1669,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:3"},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":1671,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1698,"sourceUnit":13463,"src":"64:87:3","symbolAliases":[{"foreign":{"id":1670,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"72:11:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1673,"name":"ISwapRouter","nameLocations":["223:11:3"],"nodeType":"IdentifierPath","referencedDeclaration":13462,"src":"223:11:3"},"id":1674,"nodeType":"InheritanceSpecifier","src":"223:11:3"}],"canonicalName":"ISwapRouterErrors","contractDependencies":[],"contractKind":"interface","documentation":{"id":1672,"nodeType":"StructuredDocumentation","src":"153:38:3","text":" @title ISwapRouterErrors"},"fullyImplemented":false,"id":1697,"linearizedBaseContracts":[1697,13462,13362],"name":"ISwapRouterErrors","nameLocation":"202:17:3","nodeType":"ContractDefinition","nodes":[{"errorSelector":"296ba6e1","id":1680,"name":"OutputAmountLessThanSlippage","nameLocation":"245:28:3","nodeType":"ErrorDefinition","parameters":{"id":1679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"amountOut","nameLocation":"282:9:3","nodeType":"VariableDeclaration","scope":1680,"src":"274:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1675,"name":"uint256","nodeType":"ElementaryTypeName","src":"274:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1678,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"301:16:3","nodeType":"VariableDeclaration","scope":1680,"src":"293:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1677,"name":"uint256","nodeType":"ElementaryTypeName","src":"293:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"273:45:3"},"src":"239:80:3"},{"errorSelector":"9a06025d","id":1686,"name":"InputAmountExceedsSlippage","nameLocation":"328:26:3","nodeType":"ErrorDefinition","parameters":{"id":1685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1682,"mutability":"mutable","name":"amountIn","nameLocation":"363:8:3","nodeType":"VariableDeclaration","scope":1686,"src":"355:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1681,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1684,"mutability":"mutable","name":"amountInMaximum","nameLocation":"381:15:3","nodeType":"VariableDeclaration","scope":1686,"src":"373:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1683,"name":"uint256","nodeType":"ElementaryTypeName","src":"373:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"354:43:3"},"src":"322:76:3"},{"errorSelector":"ff1e9864","id":1688,"name":"DeadlineInThePast","nameLocation":"407:17:3","nodeType":"ErrorDefinition","parameters":{"id":1687,"nodeType":"ParameterList","parameters":[],"src":"424:2:3"},"src":"401:26:3"},{"errorSelector":"d11b25af","id":1690,"name":"AmountCannotBeZero","nameLocation":"436:18:3","nodeType":"ErrorDefinition","parameters":{"id":1689,"nodeType":"ParameterList","parameters":[],"src":"454:2:3"},"src":"430:27:3"},{"errorSelector":"596a094c","id":1692,"name":"TokenCannotBeZero","nameLocation":"466:17:3","nodeType":"ErrorDefinition","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[],"src":"483:2:3"},"src":"460:26:3"},{"errorSelector":"70c73f80","id":1694,"name":"RecipientCannotBeZero","nameLocation":"495:21:3","nodeType":"ErrorDefinition","parameters":{"id":1693,"nodeType":"ParameterList","parameters":[],"src":"516:2:3"},"src":"489:30:3"},{"errorSelector":"d6234725","id":1696,"name":"NotImplemented","nameLocation":"528:14:3","nodeType":"ErrorDefinition","parameters":{"id":1695,"nodeType":"ParameterList","parameters":[],"src":"542:2:3"},"src":"522:23:3"}],"scope":1698,"src":"192:355:3","usedErrors":[1680,1686,1688,1690,1692,1694,1696],"usedEvents":[]}],"src":"39:509:3"},"id":3},"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"ast":{"absolutePath":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","exportedSymbols":{"IERC20Metadata":[8682],"ISwapRouter":[13462],"ISwapRouterErrors":[1697],"Math":[11309],"SafeCast":[13074],"SafeERC20":[9093],"SwapRouterMock":[2150]},"id":2151,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":1699,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:4"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":1701,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":11310,"src":"64:65:4","symbolAliases":[{"foreign":{"id":1700,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"72:4:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"@openzeppelin/contracts/utils/math/SafeCast.sol","id":1703,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":13075,"src":"130:73:4","symbolAliases":[{"foreign":{"id":1702,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"138:8:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":1705,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":9094,"src":"204:82:4","symbolAliases":[{"foreign":{"id":1704,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"212:9:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","file":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","id":1707,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":13463,"src":"287:87:4","symbolAliases":[{"foreign":{"id":1706,"name":"ISwapRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13462,"src":"295:11:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":1709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":8683,"src":"375:97:4","symbolAliases":[{"foreign":{"id":1708,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"383:14:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/interfaces/ISwapRouterErrors.sol","file":"../interfaces/ISwapRouterErrors.sol","id":1711,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2151,"sourceUnit":1698,"src":"473:70:4","symbolAliases":[{"foreign":{"id":1710,"name":"ISwapRouterErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1697,"src":"481:17:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1713,"name":"ISwapRouterErrors","nameLocations":["688:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":1697,"src":"688:17:4"},"id":1714,"nodeType":"InheritanceSpecifier","src":"688:17:4"}],"canonicalName":"SwapRouterMock","contractDependencies":[],"contractKind":"contract","documentation":{"id":1712,"nodeType":"StructuredDocumentation","src":"545:115:4","text":" @title SwapRouterMock\n @notice SwapRouter mock that can swap a single type of token for several others"},"fullyImplemented":true,"id":2150,"linearizedBaseContracts":[2150,1697,13462,13362],"name":"SwapRouterMock","nameLocation":"670:14:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1718,"libraryName":{"id":1715,"name":"SafeERC20","nameLocations":["716:9:4"],"nodeType":"IdentifierPath","referencedDeclaration":9093,"src":"716:9:4"},"nodeType":"UsingForDirective","src":"710:35:4","typeName":{"id":1717,"nodeType":"UserDefinedTypeName","pathNode":{"id":1716,"name":"IERC20Metadata","nameLocations":["730:14:4"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"730:14:4"},"referencedDeclaration":8682,"src":"730:14:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}},{"global":false,"id":1721,"libraryName":{"id":1719,"name":"Math","nameLocations":["754:4:4"],"nodeType":"IdentifierPath","referencedDeclaration":11309,"src":"754:4:4"},"nodeType":"UsingForDirective","src":"748:23:4","typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"763:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"global":false,"id":1724,"libraryName":{"id":1722,"name":"SafeCast","nameLocations":["780:8:4"],"nodeType":"IdentifierPath","referencedDeclaration":13074,"src":"780:8:4"},"nodeType":"UsingForDirective","src":"774:27:4","typeName":{"id":1723,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":1727,"mutability":"constant","name":"WAD","nameLocation":"831:3:4","nodeType":"VariableDeclaration","scope":2150,"src":"805:36:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"805:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"837:4:4","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"errorSelector":"6b35b1b7","id":1729,"name":"AdminCannotBeZero","nameLocation":"852:17:4","nodeType":"ErrorDefinition","parameters":{"id":1728,"nodeType":"ParameterList","parameters":[],"src":"869:2:4"},"src":"846:26:4"},{"anonymous":false,"eventSelector":"b71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd10","id":1737,"name":"PriceUpdated","nameLocation":"881:12:4","nodeType":"EventDefinition","parameters":{"id":1736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1731,"indexed":false,"mutability":"mutable","name":"tokenIn","nameLocation":"902:7:4","nodeType":"VariableDeclaration","scope":1737,"src":"894:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1730,"name":"address","nodeType":"ElementaryTypeName","src":"894:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1733,"indexed":false,"mutability":"mutable","name":"tokenOut","nameLocation":"919:8:4","nodeType":"VariableDeclaration","scope":1737,"src":"911:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1732,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1735,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"937:5:4","nodeType":"VariableDeclaration","scope":1737,"src":"929:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"929:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"893:50:4"},"src":"875:69:4"},{"errorSelector":"8f0f4206","id":1743,"name":"NotEnoughBalance","nameLocation":"953:16:4","nodeType":"ErrorDefinition","parameters":{"id":1742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"available","nameLocation":"978:9:4","nodeType":"VariableDeclaration","scope":1743,"src":"970:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1738,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"required","nameLocation":"997:8:4","nodeType":"VariableDeclaration","scope":1743,"src":"989:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"969:37:4"},"src":"947:60:4"},{"constant":false,"id":1749,"mutability":"mutable","name":"_prices","nameLocation":"1067:7:4","nodeType":"VariableDeclaration","scope":2150,"src":"1011:63:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":1748,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1744,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1011:47:4","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":1747,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1745,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1030:27:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"body":{"id":1765,"nodeType":"Block","src":"1106:60:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1755,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1751,"src":"1120:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1137: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":1757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1129:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1756,"name":"address","nodeType":"ElementaryTypeName","src":"1129:7:4","typeDescriptions":{}}},"id":1759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1129:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1120:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1761,"name":"AdminCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"1141:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1754,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1112:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:49:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1764,"nodeType":"ExpressionStatement","src":"1112:49:4"}]},"id":1766,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1751,"mutability":"mutable","name":"admin","nameLocation":"1099:5:4","nodeType":"VariableDeclaration","scope":1766,"src":"1091:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1750,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1090:15:4"},"returnParameters":{"id":1753,"nodeType":"ParameterList","parameters":[],"src":"1106:0:4"},"scope":2150,"src":"1079:87:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1785,"nodeType":"Block","src":"1239:65:4","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1253:2:4","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":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1260:2:4","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1776,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1768,"src":"1280:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1775,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"1265:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1287:8:4","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"1265:30:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1265:32:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1260:37:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1781,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1259:39:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1253:45:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1783,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1252:47:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1772,"id":1784,"nodeType":"Return","src":"1245:54:4"}]},"id":1786,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"1179:12:4","nodeType":"FunctionDefinition","parameters":{"id":1769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1768,"mutability":"mutable","name":"token","nameLocation":"1200:5:4","nodeType":"VariableDeclaration","scope":1786,"src":"1192:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1767,"name":"address","nodeType":"ElementaryTypeName","src":"1192:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1191:15:4"},"returnParameters":{"id":1772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1786,"src":"1230:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1770,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1229:9:4"},"scope":2150,"src":"1170:134:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[13395],"body":{"id":1893,"nodeType":"Block","src":"1460:711:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1796,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1474:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1481:9:4","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"1474:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1502: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":1799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1494:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1798,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:4","typeDescriptions":{}}},"id":1801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1494:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1474:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1803,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1694,"src":"1506:21:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1795,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1466:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1466:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1806,"nodeType":"ExpressionStatement","src":"1466:64:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1808,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1544:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1551:8:4","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":13379,"src":"1544:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1810,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1563:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1569:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"1563:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1544:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1813,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"1580:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1580:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1807,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1536:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1536:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1816,"nodeType":"ExpressionStatement","src":"1536:64:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1818,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1614:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1621:8:4","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"1614:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1614:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1822,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"1635:18:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1817,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1606:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1606:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1825,"nodeType":"ExpressionStatement","src":"1606:50:4"},{"assignments":[1827],"declarations":[{"constant":false,"id":1827,"mutability":"mutable","name":"amountOutInWad","nameLocation":"1671:14:4","nodeType":"VariableDeclaration","scope":1893,"src":"1663:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1846,"initialValue":{"arguments":[{"id":1837,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"1751:3:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"baseExpression":{"id":1838,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"1762:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1841,"indexExpression":{"expression":{"id":1839,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1770:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1777:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"1770:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:23:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1844,"indexExpression":{"expression":{"id":1842,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1786:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1793:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13373,"src":"1786:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1762:40:4","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":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1828,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1689:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1696:8:4","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"1689:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":1831,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1720:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1727:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"1720:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1830,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1786,"src":"1707:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1707:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1689:46:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1835,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1688:48:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1737:6:4","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"1688:55:4","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":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1688:120:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1663:145:4"},{"expression":{"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1847,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"1814:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1848,"name":"amountOutInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1827,"src":"1826:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":1850,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1856:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1863:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13373,"src":"1856:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1849,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1786,"src":"1843:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1843:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1826:46:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1814:58:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1855,"nodeType":"ExpressionStatement","src":"1814:58:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1857,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"1886:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1858,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1899:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1906:16:4","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":13383,"src":"1899:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1886:36:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1862,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"1953:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1863,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"1964:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1971:16:4","memberName":"amountOutMinimum","nodeType":"MemberAccess","referencedDeclaration":13383,"src":"1964:23:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1861,"name":"OutputAmountLessThanSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1924:28:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1878:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1878:111:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1867,"nodeType":"ExpressionStatement","src":"1878:111:4"},{"expression":{"arguments":[{"expression":{"id":1873,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2044:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2048:6:4","memberName":"sender","nodeType":"MemberAccess","src":"2044:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1877,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2064:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}],"id":1876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2056:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1875,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:4","typeDescriptions":{}}},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2056:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1879,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"2071:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2078:8:4","memberName":"amountIn","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"2071:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":1869,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"2011:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2018:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"2011:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1868,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"1996:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:16:4","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8756,"src":"1996:47:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8656_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:91:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1882,"nodeType":"ExpressionStatement","src":"1996:91:4"},{"expression":{"arguments":[{"expression":{"id":1888,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"2138:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2145:9:4","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"2138:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1890,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"2156:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":1884,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"2108:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams calldata"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2115:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13373,"src":"2108:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1883,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"2093:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2125:12:4","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8729,"src":"2093:44:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8656_$","typeString":"function (contract IERC20,address,uint256)"}},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1892,"nodeType":"ExpressionStatement","src":"2093:73:4"}]},"documentation":{"id":1787,"nodeType":"StructuredDocumentation","src":"1308:38:4","text":" @inheritdoc ISwapRouter"},"functionSelector":"414bf389","id":1894,"implemented":true,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"1358:16:4","nodeType":"FunctionDefinition","parameters":{"id":1791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1790,"mutability":"mutable","name":"params","nameLocation":"1407:6:4","nodeType":"VariableDeclaration","scope":1894,"src":"1375:38:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":1789,"nodeType":"UserDefinedTypeName","pathNode":{"id":1788,"name":"ExactInputSingleParams","nameLocations":["1375:22:4"],"nodeType":"IdentifierPath","referencedDeclaration":13386,"src":"1375:22:4"},"referencedDeclaration":13386,"src":"1375:22:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"1374:40:4"},"returnParameters":{"id":1794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"amountOut","nameLocation":"1449:9:4","nodeType":"VariableDeclaration","scope":1894,"src":"1441:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1792,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1440:19:4"},"scope":2150,"src":"1349:822:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[13441],"body":{"id":2026,"nodeType":"Block","src":"2328:867:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1904,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2342:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2349:9:4","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":13423,"src":"2342:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2370: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":1907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2362:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1906,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:4","typeDescriptions":{}}},"id":1909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2362:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2342:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1911,"name":"RecipientCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1694,"src":"2374:21:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2374:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1903,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2334:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1914,"nodeType":"ExpressionStatement","src":"2334:64:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1916,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2412:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2419:8:4","memberName":"deadline","nodeType":"MemberAccess","referencedDeclaration":13425,"src":"2412:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1918,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2431:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2437:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"2431:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1921,"name":"DeadlineInThePast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1688,"src":"2448:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2448:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1915,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2404:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2404:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1924,"nodeType":"ExpressionStatement","src":"2404:64:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1926,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2482:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2489:9:4","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":13427,"src":"2482:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2501:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2482:20:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1930,"name":"AmountCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1690,"src":"2504:18:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1925,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2474:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2474:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1933,"nodeType":"ExpressionStatement","src":"2474:51:4"},{"assignments":[1935],"declarations":[{"constant":false,"id":1935,"mutability":"mutable","name":"balance","nameLocation":"2539:7:4","nodeType":"VariableDeclaration","scope":2026,"src":"2531:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2531:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1946,"initialValue":{"arguments":[{"arguments":[{"id":1943,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2599:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}],"id":1942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1941,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:4","typeDescriptions":{}}},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":1937,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2564:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2571:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13419,"src":"2564:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1936,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"2549:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":1940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2581:9:4","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2549:41:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:56:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2531:74:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1948,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"2619:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":1949,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2630:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2637:9:4","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":13427,"src":"2630:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2619:27:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1953,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1935,"src":"2665:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1954,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2674:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2681:9:4","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":13427,"src":"2674:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1952,"name":"NotEnoughBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"2648:16:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2648:43:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1947,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2611:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2611:81:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1958,"nodeType":"ExpressionStatement","src":"2611:81:4"},{"assignments":[1960],"declarations":[{"constant":false,"id":1960,"mutability":"mutable","name":"amountInWad","nameLocation":"2707:11:4","nodeType":"VariableDeclaration","scope":2026,"src":"2699:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1959,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1979,"initialValue":{"arguments":[{"baseExpression":{"baseExpression":{"id":1970,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"2786:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":1973,"indexExpression":{"expression":{"id":1971,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2794:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2801:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13417,"src":"2794:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:23:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1976,"indexExpression":{"expression":{"id":1974,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2810:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2817:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13419,"src":"2810:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2786:40:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1977,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"2834:3:4","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":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1961,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2722:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:9:4","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":13427,"src":"2722:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":1964,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2754:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13419,"src":"2754:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1963,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1786,"src":"2741:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2741:29:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2722:48:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2721:50:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2772:6:4","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"2721:57:4","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":1978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2721:122:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2699:144:4"},{"expression":{"id":1987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1980,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2849:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1981,"name":"amountInWad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"2860:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"expression":{"id":1983,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2887:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2894:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13417,"src":"2887:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1982,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1786,"src":"2874:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2860:42:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2849:53:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1988,"nodeType":"ExpressionStatement","src":"2849:53:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1990,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2916:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":1991,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2928:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2935:15:4","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"2928:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2916:34:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"id":1995,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2979:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":1996,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"2989:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":1997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2996:15:4","memberName":"amountInMaximum","nodeType":"MemberAccess","referencedDeclaration":13429,"src":"2989:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1994,"name":"InputAmountExceedsSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1686,"src":"2952:26:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":1989,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2908:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":1999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2908:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2000,"nodeType":"ExpressionStatement","src":"2908:105:4"},{"expression":{"arguments":[{"expression":{"id":2006,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3068:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3072:6:4","memberName":"sender","nodeType":"MemberAccess","src":"3068:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2010,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3088:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapRouterMock_$2150","typeString":"contract SwapRouterMock"}],"id":2009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3080:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2008,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:4","typeDescriptions":{}}},"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3080:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2012,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"3095:8:4","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":2002,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"3035:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3042:7:4","memberName":"tokenIn","nodeType":"MemberAccess","referencedDeclaration":13417,"src":"3035:14:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2001,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"3020:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":2005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3051:16:4","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8756,"src":"3020:47:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8656_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3020:84:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2014,"nodeType":"ExpressionStatement","src":"3020:84:4"},{"expression":{"arguments":[{"expression":{"id":2020,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"3155:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3162:9:4","memberName":"recipient","nodeType":"MemberAccess","referencedDeclaration":13423,"src":"3155:16:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2022,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"3173:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3180:9:4","memberName":"amountOut","nodeType":"MemberAccess","referencedDeclaration":13427,"src":"3173:16:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"expression":{"id":2016,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1898,"src":"3125:6:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams calldata"}},"id":2017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3132:8:4","memberName":"tokenOut","nodeType":"MemberAccess","referencedDeclaration":13419,"src":"3125:15:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2015,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"3110:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3142:12:4","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8729,"src":"3110:44:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8656_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3110:80:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2025,"nodeType":"ExpressionStatement","src":"3110:80:4"}]},"documentation":{"id":1895,"nodeType":"StructuredDocumentation","src":"2175:38:4","text":" @inheritdoc ISwapRouter"},"functionSelector":"db3e2198","id":2027,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2225:17:4","nodeType":"FunctionDefinition","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1898,"mutability":"mutable","name":"params","nameLocation":"2276:6:4","nodeType":"VariableDeclaration","scope":2027,"src":"2243:39:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":1897,"nodeType":"UserDefinedTypeName","pathNode":{"id":1896,"name":"ExactOutputSingleParams","nameLocations":["2243:23:4"],"nodeType":"IdentifierPath","referencedDeclaration":13432,"src":"2243:23:4"},"referencedDeclaration":13432,"src":"2243:23:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2242:41:4"},"returnParameters":{"id":1902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1901,"mutability":"mutable","name":"amountIn","nameLocation":"2318:8:4","nodeType":"VariableDeclaration","scope":2027,"src":"2310:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2310:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2309:18:4"},"scope":2150,"src":"2216:979:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":2062,"nodeType":"Block","src":"3257:166:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2035,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"3271:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3288: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":2037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3280:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2036,"name":"address","nodeType":"ElementaryTypeName","src":"3280:7:4","typeDescriptions":{}}},"id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3280:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3271:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2041,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"3292:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3292:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3263:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3263:49:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2044,"nodeType":"ExpressionStatement","src":"3263:49:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2046,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3326:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3335:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3326:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2049,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"3338:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3338:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3318:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3318:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2052,"nodeType":"ExpressionStatement","src":"3318:40:4"},{"expression":{"arguments":[{"expression":{"id":2057,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3399:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3403:6:4","memberName":"sender","nodeType":"MemberAccess","src":"3399:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2059,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"3411:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2054,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2029,"src":"3379:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2053,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"3364:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:21:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":2056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3386:12:4","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8729,"src":"3364:34:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$8656_$","typeString":"function (contract IERC20,address,uint256)"}},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3364:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2061,"nodeType":"ExpressionStatement","src":"3364:54:4"}]},"functionSelector":"f3fef3a3","id":2063,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"3208:8:4","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2029,"mutability":"mutable","name":"token","nameLocation":"3225:5:4","nodeType":"VariableDeclaration","scope":2063,"src":"3217:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2028,"name":"address","nodeType":"ElementaryTypeName","src":"3217:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"amount","nameLocation":"3240:6:4","nodeType":"VariableDeclaration","scope":2063,"src":"3232:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2030,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3216:31:4"},"returnParameters":{"id":2033,"nodeType":"ParameterList","parameters":[],"src":"3257:0:4"},"scope":2150,"src":"3199:224:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2108,"nodeType":"Block","src":"3512:211:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2073,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"3526:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3545: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":2075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3537:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2074,"name":"address","nodeType":"ElementaryTypeName","src":"3537:7:4","typeDescriptions":{}}},"id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3526:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2079,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"3549:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3549:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2072,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3518:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3518:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2082,"nodeType":"ExpressionStatement","src":"3518:51:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2084,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"3583:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3603: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":2086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3595:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2085,"name":"address","nodeType":"ElementaryTypeName","src":"3595:7:4","typeDescriptions":{}}},"id":2088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3595:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3583:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2090,"name":"TokenCannotBeZero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1692,"src":"3607:17:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":2083,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3575:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3575:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2093,"nodeType":"ExpressionStatement","src":"3575:52:4"},{"expression":{"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2094,"name":"_prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"3633:7:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":2097,"indexExpression":{"id":2095,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"3641:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3633:16:4","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2098,"indexExpression":{"id":2096,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"3650:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3633:26:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2099,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2069,"src":"3662:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3633:35:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2101,"nodeType":"ExpressionStatement","src":"3633:35:4"},{"eventCall":{"arguments":[{"id":2103,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"3692:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2104,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2067,"src":"3701:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2105,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2069,"src":"3711:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2102,"name":"PriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1737,"src":"3679:12:4","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3679:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2107,"nodeType":"EmitStatement","src":"3674:44:4"}]},"functionSelector":"4562e015","id":2109,"implemented":true,"kind":"function","modifiers":[],"name":"setCurrentPrice","nameLocation":"3436:15:4","nodeType":"FunctionDefinition","parameters":{"id":2070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"tokenIn","nameLocation":"3460:7:4","nodeType":"VariableDeclaration","scope":2109,"src":"3452:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2064,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2067,"mutability":"mutable","name":"tokenOut","nameLocation":"3477:8:4","nodeType":"VariableDeclaration","scope":2109,"src":"3469:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2066,"name":"address","nodeType":"ElementaryTypeName","src":"3469:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2069,"mutability":"mutable","name":"price_","nameLocation":"3495:6:4","nodeType":"VariableDeclaration","scope":2109,"src":"3487:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2068,"name":"uint256","nodeType":"ElementaryTypeName","src":"3487:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3451:51:4"},"returnParameters":{"id":2071,"nodeType":"ParameterList","parameters":[],"src":"3512:0:4"},"scope":2150,"src":"3427:296:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13461],"body":{"id":2121,"nodeType":"Block","src":"3898:34:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2118,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"3911:14:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3911:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2120,"nodeType":"RevertStatement","src":"3904:23:4"}]},"documentation":{"id":2110,"nodeType":"StructuredDocumentation","src":"3727:84:4","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"f28c0498","id":2122,"implemented":true,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"3823:11:4","nodeType":"FunctionDefinition","parameters":{"id":2114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2122,"src":"3835:26:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$13452_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":2112,"nodeType":"UserDefinedTypeName","pathNode":{"id":2111,"name":"ExactOutputParams","nameLocations":["3835:17:4"],"nodeType":"IdentifierPath","referencedDeclaration":13452,"src":"3835:17:4"},"referencedDeclaration":13452,"src":"3835:17:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$13452_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"3834:28:4"},"returnParameters":{"id":2117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2116,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2122,"src":"3889:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2115,"name":"uint256","nodeType":"ElementaryTypeName","src":"3889:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3888:9:4"},"scope":2150,"src":"3814:118:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[13415],"body":{"id":2134,"nodeType":"Block","src":"4105:34:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2131,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"4118:14:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2133,"nodeType":"RevertStatement","src":"4111:23:4"}]},"documentation":{"id":2123,"nodeType":"StructuredDocumentation","src":"3936:84:4","text":" @inheritdoc ISwapRouter\n @notice This function is not implemented"},"functionSelector":"c04b8d59","id":2135,"implemented":true,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"4032:10:4","nodeType":"FunctionDefinition","parameters":{"id":2127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2135,"src":"4043:25:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$13406_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":2125,"nodeType":"UserDefinedTypeName","pathNode":{"id":2124,"name":"ExactInputParams","nameLocations":["4043:16:4"],"nodeType":"IdentifierPath","referencedDeclaration":13406,"src":"4043:16:4"},"referencedDeclaration":13406,"src":"4043:16:4","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$13406_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"4042:27:4"},"returnParameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2135,"src":"4096:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2128,"name":"uint256","nodeType":"ElementaryTypeName","src":"4096:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4095:9:4"},"scope":2150,"src":"4023:116:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[13361],"body":{"id":2148,"nodeType":"Block","src":"4278:34:4","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2145,"name":"NotImplemented","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"4291:14:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2147,"nodeType":"RevertStatement","src":"4284:23:4"}]},"documentation":{"id":2136,"nodeType":"StructuredDocumentation","src":"4143:55:4","text":" @notice This function is not implemented"},"functionSelector":"fa461e33","id":2149,"implemented":true,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"4210:21:4","nodeType":"FunctionDefinition","parameters":{"id":2143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"4232:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2137,"name":"int256","nodeType":"ElementaryTypeName","src":"4232:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"4240:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2139,"name":"int256","nodeType":"ElementaryTypeName","src":"4240:6:4","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":2142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2149,"src":"4248:14:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2141,"name":"bytes","nodeType":"ElementaryTypeName","src":"4248:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4231:32:4"},"returnParameters":{"id":2144,"nodeType":"ParameterList","parameters":[],"src":"4278:0:4"},"scope":2150,"src":"4201:111:4","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":2151,"src":"661:3653:4","usedErrors":[1680,1686,1688,1690,1692,1694,1696,1729,1743,8696],"usedEvents":[1737]}],"src":"39:4276:4"},"id":4},"@ensuro/utils/contracts/TestCurrency.sol":{"ast":{"absolutePath":"@ensuro/utils/contracts/TestCurrency.sol","exportedSymbols":{"AccessControl":[4809],"ERC20":[8578],"TestCurrency":[2247]},"id":2248,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":2152,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"38:23:5"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":2154,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2248,"sourceUnit":8579,"src":"63:68:5","symbolAliases":[{"foreign":{"id":2153,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"71:5:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","file":"@openzeppelin/contracts/access/AccessControl.sol","id":2156,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2248,"sourceUnit":4810,"src":"132:79:5","symbolAliases":[{"foreign":{"id":2155,"name":"AccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4809,"src":"140:13:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2157,"name":"ERC20","nameLocations":["238:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":8578,"src":"238:5:5"},"id":2158,"nodeType":"InheritanceSpecifier","src":"238:5:5"},{"baseName":{"id":2159,"name":"AccessControl","nameLocations":["245:13:5"],"nodeType":"IdentifierPath","referencedDeclaration":4809,"src":"245:13:5"},"id":2160,"nodeType":"InheritanceSpecifier","src":"245:13:5"}],"canonicalName":"TestCurrency","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2247,"linearizedBaseContracts":[2247,4809,9691,9703,4892,8578,7590,8682,8656,9382],"name":"TestCurrency","nameLocation":"222:12:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"d5391393","id":2165,"mutability":"constant","name":"MINTER_ROLE","nameLocation":"287:11:5","nodeType":"VariableDeclaration","scope":2247,"src":"263:62:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"263:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4d494e5445525f524f4c45","id":2163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"311:13:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""},"value":"MINTER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6","typeString":"literal_string \"MINTER_ROLE\""}],"id":2162,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"301:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"301:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"282c51f3","id":2170,"mutability":"constant","name":"BURNER_ROLE","nameLocation":"353:11:5","nodeType":"VariableDeclaration","scope":2247,"src":"329:62:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"329:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4255524e45525f524f4c45","id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"377:13:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848","typeString":"literal_string \"BURNER_ROLE\""},"value":"BURNER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848","typeString":"literal_string \"BURNER_ROLE\""}],"id":2167,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"367:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"367:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":2172,"mutability":"immutable","name":"_decimals","nameLocation":"421:9:5","nodeType":"VariableDeclaration","scope":2247,"src":"396:34:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2171,"name":"uint8","nodeType":"ElementaryTypeName","src":"396:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"body":{"id":2204,"nodeType":"Block","src":"592:113:5","statements":[{"expression":{"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2189,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"598:9:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2190,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"610:9:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"598:21:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2192,"nodeType":"ExpressionStatement","src":"598:21:5"},{"expression":{"arguments":[{"expression":{"id":2194,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"631:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"635:6:5","memberName":"sender","nodeType":"MemberAccess","src":"631:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"initialSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"643:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2193,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8418,"src":"625:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"625:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"ExpressionStatement","src":"625:32:5"},{"expression":{"arguments":[{"id":2200,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"674:18:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2201,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2182,"src":"694:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2199,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"663:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"663:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2203,"nodeType":"ExpressionStatement","src":"663:37:5"}]},"id":2205,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2185,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2174,"src":"576:5:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2186,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2176,"src":"583:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2187,"kind":"baseConstructorSpecifier","modifierName":{"id":2184,"name":"ERC20","nameLocations":["570:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":8578,"src":"570:5:5"},"nodeType":"ModifierInvocation","src":"570:21:5"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2174,"mutability":"mutable","name":"name_","nameLocation":"466:5:5","nodeType":"VariableDeclaration","scope":2205,"src":"452:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2173,"name":"string","nodeType":"ElementaryTypeName","src":"452:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2176,"mutability":"mutable","name":"symbol_","nameLocation":"491:7:5","nodeType":"VariableDeclaration","scope":2205,"src":"477:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2175,"name":"string","nodeType":"ElementaryTypeName","src":"477:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"initialSupply","nameLocation":"512:13:5","nodeType":"VariableDeclaration","scope":2205,"src":"504:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2177,"name":"uint256","nodeType":"ElementaryTypeName","src":"504:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2180,"mutability":"mutable","name":"decimals_","nameLocation":"537:9:5","nodeType":"VariableDeclaration","scope":2205,"src":"531:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2179,"name":"uint8","nodeType":"ElementaryTypeName","src":"531:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2182,"mutability":"mutable","name":"admin","nameLocation":"560:5:5","nodeType":"VariableDeclaration","scope":2205,"src":"552:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2181,"name":"address","nodeType":"ElementaryTypeName","src":"552:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"446:123:5"},"returnParameters":{"id":2188,"nodeType":"ParameterList","parameters":[],"src":"592:0:5"},"scope":2247,"src":"435:270:5","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[8142],"body":{"id":2213,"nodeType":"Block","src":"774:27:5","statements":[{"expression":{"id":2211,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2172,"src":"787:9:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2210,"id":2212,"nodeType":"Return","src":"780:16:5"}]},"functionSelector":"313ce567","id":2214,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"718:8:5","nodeType":"FunctionDefinition","overrides":{"id":2207,"nodeType":"OverrideSpecifier","overrides":[],"src":"749:8:5"},"parameters":{"id":2206,"nodeType":"ParameterList","parameters":[],"src":"726:2:5"},"returnParameters":{"id":2210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2214,"src":"767:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2208,"name":"uint8","nodeType":"ElementaryTypeName","src":"767:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"766:7:5"},"scope":2247,"src":"709:92:5","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2229,"nodeType":"Block","src":"885:103:5","statements":[{"expression":{"arguments":[{"id":2225,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"965:9:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2226,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2218,"src":"976:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2224,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8418,"src":"959:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":2223,"id":2228,"nodeType":"Return","src":"952:31:5"}]},"functionSelector":"40c10f19","id":2230,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2221,"name":"MINTER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"872:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2222,"kind":"modifierInvocation","modifierName":{"id":2220,"name":"onlyRole","nameLocations":["863:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"863:8:5"},"nodeType":"ModifierInvocation","src":"863:21:5"}],"name":"mint","nameLocation":"814:4:5","nodeType":"FunctionDefinition","parameters":{"id":2219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2216,"mutability":"mutable","name":"recipient","nameLocation":"827:9:5","nodeType":"VariableDeclaration","scope":2230,"src":"819:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2215,"name":"address","nodeType":"ElementaryTypeName","src":"819:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2218,"mutability":"mutable","name":"amount","nameLocation":"846:6:5","nodeType":"VariableDeclaration","scope":2230,"src":"838:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2217,"name":"uint256","nodeType":"ElementaryTypeName","src":"838:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"818:35:5"},"returnParameters":{"id":2223,"nodeType":"ParameterList","parameters":[],"src":"885:0:5"},"scope":2247,"src":"805:183:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2245,"nodeType":"Block","src":"1072:103:5","statements":[{"expression":{"arguments":[{"id":2241,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"1152:9:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2242,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"1163:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2240,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"1146:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1146:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":2239,"id":2244,"nodeType":"Return","src":"1139:31:5"}]},"functionSelector":"9dc29fac","id":2246,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2237,"name":"BURNER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2170,"src":"1059:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2238,"kind":"modifierInvocation","modifierName":{"id":2236,"name":"onlyRole","nameLocations":["1050:8:5"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"1050:8:5"},"nodeType":"ModifierInvocation","src":"1050:21:5"}],"name":"burn","nameLocation":"1001:4:5","nodeType":"FunctionDefinition","parameters":{"id":2235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2232,"mutability":"mutable","name":"recipient","nameLocation":"1014:9:5","nodeType":"VariableDeclaration","scope":2246,"src":"1006:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2231,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2234,"mutability":"mutable","name":"amount","nameLocation":"1033:6:5","nodeType":"VariableDeclaration","scope":2246,"src":"1025:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2233,"name":"uint256","nodeType":"ElementaryTypeName","src":"1025:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1005:35:5"},"returnParameters":{"id":2239,"nodeType":"ParameterList","parameters":[],"src":"1072:0:5"},"scope":2247,"src":"992:183:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2248,"src":"213:964:5","usedErrors":[4819,4822,7560,7565,7570,7579,7584,7589],"usedEvents":[4831,4840,4849,8590,8599]}],"src":"38:1140:5"},"id":5},"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","exportedSymbols":{"AccessControlUpgradeable":[2610],"ContextUpgradeable":[4473],"ERC165Upgradeable":[4513],"IAccessControl":[4892],"Initializable":[2864]},"id":2611,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2249,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:6"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"@openzeppelin/contracts/access/IAccessControl.sol","id":2251,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2611,"sourceUnit":4893,"src":"134:81:6","symbolAliases":[{"foreign":{"id":2250,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"142:14:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../utils/ContextUpgradeable.sol","id":2253,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2611,"sourceUnit":4474,"src":"216:67:6","symbolAliases":[{"foreign":{"id":2252,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"224:18:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","file":"../utils/introspection/ERC165Upgradeable.sol","id":2255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2611,"sourceUnit":4514,"src":"284:79:6","symbolAliases":[{"foreign":{"id":2254,"name":"ERC165Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4513,"src":"292:17:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":2257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2611,"sourceUnit":2865,"src":"364:63:6","symbolAliases":[{"foreign":{"id":2256,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"372:13:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2259,"name":"Initializable","nameLocations":["2136:13:6"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"2136:13:6"},"id":2260,"nodeType":"InheritanceSpecifier","src":"2136:13:6"},{"baseName":{"id":2261,"name":"ContextUpgradeable","nameLocations":["2151:18:6"],"nodeType":"IdentifierPath","referencedDeclaration":4473,"src":"2151:18:6"},"id":2262,"nodeType":"InheritanceSpecifier","src":"2151:18:6"},{"baseName":{"id":2263,"name":"IAccessControl","nameLocations":["2171:14:6"],"nodeType":"IdentifierPath","referencedDeclaration":4892,"src":"2171:14:6"},"id":2264,"nodeType":"InheritanceSpecifier","src":"2171:14:6"},{"baseName":{"id":2265,"name":"ERC165Upgradeable","nameLocations":["2187:17:6"],"nodeType":"IdentifierPath","referencedDeclaration":4513,"src":"2187:17:6"},"id":2266,"nodeType":"InheritanceSpecifier","src":"2187:17:6"}],"canonicalName":"AccessControlUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2258,"nodeType":"StructuredDocumentation","src":"429:1660:6","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":2610,"linearizedBaseContracts":[2610,4513,9703,4892,4473,2864],"name":"AccessControlUpgradeable","nameLocation":"2108:24:6","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControlUpgradeable.RoleData","id":2273,"members":[{"constant":false,"id":2270,"mutability":"mutable","name":"hasRole","nameLocation":"2270:7:6","nodeType":"VariableDeclaration","scope":2273,"src":"2237:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":2269,"keyName":"account","keyNameLocation":"2253:7:6","keyType":{"id":2267,"name":"address","nodeType":"ElementaryTypeName","src":"2245:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2237:32:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2268,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"adminRole","nameLocation":"2295:9:6","nodeType":"VariableDeclaration","scope":2273,"src":"2287:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2271,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2218:8:6","nodeType":"StructDefinition","scope":2610,"src":"2211:100:6","visibility":"public"},{"constant":true,"functionSelector":"a217fddf","id":2276,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2341:18:6","nodeType":"VariableDeclaration","scope":2610,"src":"2317:49:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2274,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:4:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"canonicalName":"AccessControlUpgradeable.AccessControlStorage","documentation":{"id":2277,"nodeType":"StructuredDocumentation","src":"2374:71:6","text":"@custom:storage-location erc7201:openzeppelin.storage.AccessControl"},"id":2283,"members":[{"constant":false,"id":2282,"mutability":"mutable","name":"_roles","nameLocation":"2522:6:6","nodeType":"VariableDeclaration","scope":2283,"src":"2488:40:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"typeName":{"id":2281,"keyName":"role","keyNameLocation":"2504:4:6","keyType":{"id":2278,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2496:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2488:33:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2280,"nodeType":"UserDefinedTypeName","pathNode":{"id":2279,"name":"RoleData","nameLocations":["2512:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":2273,"src":"2512:8:6"},"referencedDeclaration":2273,"src":"2512:8:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage_ptr","typeString":"struct AccessControlUpgradeable.RoleData"}}},"visibility":"internal"}],"name":"AccessControlStorage","nameLocation":"2457:20:6","nodeType":"StructDefinition","scope":2610,"src":"2450:85:6","visibility":"public"},{"constant":true,"id":2286,"mutability":"constant","name":"AccessControlStorageLocation","nameLocation":"2683:28:6","nodeType":"VariableDeclaration","scope":2610,"src":"2658:122:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2284,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:66:6","typeDescriptions":{"typeIdentifier":"t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1","typeString":"int_const 1295...(68 digits omitted)...1824"},"value":"0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800"},"visibility":"private"},{"body":{"id":2293,"nodeType":"Block","src":"2877:87:6","statements":[{"AST":{"nativeSrc":"2896:62:6","nodeType":"YulBlock","src":"2896:62:6","statements":[{"nativeSrc":"2910:38:6","nodeType":"YulAssignment","src":"2910:38:6","value":{"name":"AccessControlStorageLocation","nativeSrc":"2920:28:6","nodeType":"YulIdentifier","src":"2920:28:6"},"variableNames":[{"name":"$.slot","nativeSrc":"2910:6:6","nodeType":"YulIdentifier","src":"2910:6:6"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2290,"isOffset":false,"isSlot":true,"src":"2910:6:6","suffix":"slot","valueSize":1},{"declaration":2286,"isOffset":false,"isSlot":false,"src":"2920:28:6","valueSize":1}],"id":2292,"nodeType":"InlineAssembly","src":"2887:71:6"}]},"id":2294,"implemented":true,"kind":"function","modifiers":[],"name":"_getAccessControlStorage","nameLocation":"2796:24:6","nodeType":"FunctionDefinition","parameters":{"id":2287,"nodeType":"ParameterList","parameters":[],"src":"2820:2:6"},"returnParameters":{"id":2291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"$","nameLocation":"2874:1:6","nodeType":"VariableDeclaration","scope":2294,"src":"2845:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2289,"nodeType":"UserDefinedTypeName","pathNode":{"id":2288,"name":"AccessControlStorage","nameLocations":["2845:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"2845:20:6"},"referencedDeclaration":2283,"src":"2845:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"src":"2844:32:6"},"scope":2610,"src":"2787:177:6","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2304,"nodeType":"Block","src":"3181:44:6","statements":[{"expression":{"arguments":[{"id":2300,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2297,"src":"3202:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2299,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[2377,2398],"referencedDeclaration":2377,"src":"3191:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3191:16:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2302,"nodeType":"ExpressionStatement","src":"3191:16:6"},{"id":2303,"nodeType":"PlaceholderStatement","src":"3217:1:6"}]},"documentation":{"id":2295,"nodeType":"StructuredDocumentation","src":"2970:174:6","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":2305,"name":"onlyRole","nameLocation":"3158:8:6","nodeType":"ModifierDefinition","parameters":{"id":2298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2297,"mutability":"mutable","name":"role","nameLocation":"3175:4:6","nodeType":"VariableDeclaration","scope":2305,"src":"3167:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3167:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3166:14:6"},"src":"3149:76:6","virtual":false,"visibility":"internal"},{"body":{"id":2310,"nodeType":"Block","src":"3289:7:6","statements":[]},"id":2311,"implemented":true,"kind":"function","modifiers":[{"id":2308,"kind":"modifierInvocation","modifierName":{"id":2307,"name":"onlyInitializing","nameLocations":["3272:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3272:16:6"},"nodeType":"ModifierInvocation","src":"3272:16:6"}],"name":"__AccessControl_init","nameLocation":"3240:20:6","nodeType":"FunctionDefinition","parameters":{"id":2306,"nodeType":"ParameterList","parameters":[],"src":"3260:2:6"},"returnParameters":{"id":2309,"nodeType":"ParameterList","parameters":[],"src":"3289:0:6"},"scope":2610,"src":"3231:65:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2316,"nodeType":"Block","src":"3370:7:6","statements":[]},"id":2317,"implemented":true,"kind":"function","modifiers":[{"id":2314,"kind":"modifierInvocation","modifierName":{"id":2313,"name":"onlyInitializing","nameLocations":["3353:16:6"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3353:16:6"},"nodeType":"ModifierInvocation","src":"3353:16:6"}],"name":"__AccessControl_init_unchained","nameLocation":"3311:30:6","nodeType":"FunctionDefinition","parameters":{"id":2312,"nodeType":"ParameterList","parameters":[],"src":"3341:2:6"},"returnParameters":{"id":2315,"nodeType":"ParameterList","parameters":[],"src":"3370:0:6"},"scope":2610,"src":"3302:75:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4512],"body":{"id":2338,"nodeType":"Block","src":"3534:111:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2326,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"3551:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2328,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"3571:14:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$4892_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$4892_$","typeString":"type(contract IAccessControl)"}],"id":2327,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3566:4:6","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$4892","typeString":"type(contract IAccessControl)"}},"id":2330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3587:11:6","memberName":"interfaceId","nodeType":"MemberAccess","src":"3566:32:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"3551:47:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":2334,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"3626:11:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2332,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3602:5:6","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControlUpgradeable_$2610_$","typeString":"type(contract super AccessControlUpgradeable)"}},"id":2333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3608:17:6","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":4512,"src":"3602:23:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:36:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3551:87:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2325,"id":2337,"nodeType":"Return","src":"3544:94:6"}]},"documentation":{"id":2318,"nodeType":"StructuredDocumentation","src":"3382:56:6","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2339,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"3452:17:6","nodeType":"FunctionDefinition","overrides":{"id":2322,"nodeType":"OverrideSpecifier","overrides":[],"src":"3510:8:6"},"parameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"interfaceId","nameLocation":"3477:11:6","nodeType":"VariableDeclaration","scope":2339,"src":"3470:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2319,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3470:6:6","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3469:20:6"},"returnParameters":{"id":2325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2339,"src":"3528:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2323,"name":"bool","nodeType":"ElementaryTypeName","src":"3528:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3527:6:6"},"scope":2610,"src":"3443:202:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4859],"body":{"id":2363,"nodeType":"Block","src":"3815:124:6","statements":[{"assignments":[2351],"declarations":[{"constant":false,"id":2351,"mutability":"mutable","name":"$","nameLocation":"3854:1:6","nodeType":"VariableDeclaration","scope":2363,"src":"3825:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2350,"nodeType":"UserDefinedTypeName","pathNode":{"id":2349,"name":"AccessControlStorage","nameLocations":["3825:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"3825:20:6"},"referencedDeclaration":2283,"src":"3825:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":2354,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2352,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2294,"src":"3858:24:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$2283_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3825:59:6"},{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2355,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"3901:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":2356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3903:6:6","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"3901:8:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":2358,"indexExpression":{"id":2357,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"3910:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:14:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":2359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3916:7:6","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":2270,"src":"3901:22:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2361,"indexExpression":{"id":2360,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2344,"src":"3924:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2348,"id":2362,"nodeType":"Return","src":"3894:38:6"}]},"documentation":{"id":2340,"nodeType":"StructuredDocumentation","src":"3651:76:6","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":2364,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"3741:7:6","nodeType":"FunctionDefinition","parameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"role","nameLocation":"3757:4:6","nodeType":"VariableDeclaration","scope":2364,"src":"3749:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2341,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3749:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2344,"mutability":"mutable","name":"account","nameLocation":"3771:7:6","nodeType":"VariableDeclaration","scope":2364,"src":"3763:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2343,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3748:31:6"},"returnParameters":{"id":2348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2364,"src":"3809:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2346,"name":"bool","nodeType":"ElementaryTypeName","src":"3809:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3808:6:6"},"scope":2610,"src":"3732:207:6","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2376,"nodeType":"Block","src":"4204:47:6","statements":[{"expression":{"arguments":[{"id":2371,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"4225:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2372,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"4231:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4231:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2370,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[2377,2398],"referencedDeclaration":2398,"src":"4214:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2375,"nodeType":"ExpressionStatement","src":"4214:30:6"}]},"documentation":{"id":2365,"nodeType":"StructuredDocumentation","src":"3945:198:6","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":2377,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4157:10:6","nodeType":"FunctionDefinition","parameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"role","nameLocation":"4176:4:6","nodeType":"VariableDeclaration","scope":2377,"src":"4168:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2366,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4168:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4167:14:6"},"returnParameters":{"id":2369,"nodeType":"ParameterList","parameters":[],"src":"4204:0:6"},"scope":2610,"src":"4148:103:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2397,"nodeType":"Block","src":"4454:124:6","statements":[{"condition":{"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4468:23:6","subExpression":{"arguments":[{"id":2386,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"4477:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2387,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"4483:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2385,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"4469:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4469:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2396,"nodeType":"IfStatement","src":"4464:108:6","trueBody":{"id":2395,"nodeType":"Block","src":"4493:79:6","statements":[{"errorCall":{"arguments":[{"id":2391,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"4547:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2392,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"4556:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2390,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"4514:32:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:47:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2394,"nodeType":"RevertStatement","src":"4507:54:6"}]}}]},"documentation":{"id":2378,"nodeType":"StructuredDocumentation","src":"4257:119:6","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":2398,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"4390:10:6","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"role","nameLocation":"4409:4:6","nodeType":"VariableDeclaration","scope":2398,"src":"4401:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2379,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4401:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"account","nameLocation":"4423:7:6","nodeType":"VariableDeclaration","scope":2398,"src":"4415:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2381,"name":"address","nodeType":"ElementaryTypeName","src":"4415:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4400:31:6"},"returnParameters":{"id":2384,"nodeType":"ParameterList","parameters":[],"src":"4454:0:6"},"scope":2610,"src":"4381:197:6","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[4867],"body":{"id":2418,"nodeType":"Block","src":"4833:117:6","statements":[{"assignments":[2408],"declarations":[{"constant":false,"id":2408,"mutability":"mutable","name":"$","nameLocation":"4872:1:6","nodeType":"VariableDeclaration","scope":2418,"src":"4843:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2407,"nodeType":"UserDefinedTypeName","pathNode":{"id":2406,"name":"AccessControlStorage","nameLocations":["4843:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"4843:20:6"},"referencedDeclaration":2283,"src":"4843:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":2411,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2409,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2294,"src":"4876:24:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$2283_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4876:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4843:59:6"},{"expression":{"expression":{"baseExpression":{"expression":{"id":2412,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"4919:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":2413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4921:6:6","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"4919:8:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":2415,"indexExpression":{"id":2414,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2401,"src":"4928:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4919:14:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":2416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4934:9:6","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":2272,"src":"4919:24:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2405,"id":2417,"nodeType":"Return","src":"4912:31:6"}]},"documentation":{"id":2399,"nodeType":"StructuredDocumentation","src":"4584:170:6","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":2419,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"4768:12:6","nodeType":"FunctionDefinition","parameters":{"id":2402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2401,"mutability":"mutable","name":"role","nameLocation":"4789:4:6","nodeType":"VariableDeclaration","scope":2419,"src":"4781:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2400,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4781:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4780:14:6"},"returnParameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2419,"src":"4824:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4824:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4823:9:6"},"scope":2610,"src":"4759:191:6","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4875],"body":{"id":2437,"nodeType":"Block","src":"5340:42:6","statements":[{"expression":{"arguments":[{"id":2433,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"5361:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2434,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"5367:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2432,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"5350:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5350:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2436,"nodeType":"ExpressionStatement","src":"5350:25:6"}]},"documentation":{"id":2420,"nodeType":"StructuredDocumentation","src":"4956:285:6","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":2438,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":2428,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"5333:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2427,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"5320:12:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2430,"kind":"modifierInvocation","modifierName":{"id":2426,"name":"onlyRole","nameLocations":["5311:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5311:8:6"},"nodeType":"ModifierInvocation","src":"5311:28:6"}],"name":"grantRole","nameLocation":"5255:9:6","nodeType":"FunctionDefinition","parameters":{"id":2425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2422,"mutability":"mutable","name":"role","nameLocation":"5273:4:6","nodeType":"VariableDeclaration","scope":2438,"src":"5265:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5265:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2424,"mutability":"mutable","name":"account","nameLocation":"5287:7:6","nodeType":"VariableDeclaration","scope":2438,"src":"5279:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"5279:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5264:31:6"},"returnParameters":{"id":2431,"nodeType":"ParameterList","parameters":[],"src":"5340:0:6"},"scope":2610,"src":"5246:136:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4883],"body":{"id":2456,"nodeType":"Block","src":"5757:43:6","statements":[{"expression":{"arguments":[{"id":2452,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"5779:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2453,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2443,"src":"5785:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2451,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"5767:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2455,"nodeType":"ExpressionStatement","src":"5767:26:6"}]},"documentation":{"id":2439,"nodeType":"StructuredDocumentation","src":"5388:269:6","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":2457,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":2447,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2441,"src":"5750:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2446,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"5737:12:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5737:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2449,"kind":"modifierInvocation","modifierName":{"id":2445,"name":"onlyRole","nameLocations":["5728:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5728:8:6"},"nodeType":"ModifierInvocation","src":"5728:28:6"}],"name":"revokeRole","nameLocation":"5671:10:6","nodeType":"FunctionDefinition","parameters":{"id":2444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2441,"mutability":"mutable","name":"role","nameLocation":"5690:4:6","nodeType":"VariableDeclaration","scope":2457,"src":"5682:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5682:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2443,"mutability":"mutable","name":"account","nameLocation":"5704:7:6","nodeType":"VariableDeclaration","scope":2457,"src":"5696:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2442,"name":"address","nodeType":"ElementaryTypeName","src":"5696:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5681:31:6"},"returnParameters":{"id":2450,"nodeType":"ParameterList","parameters":[],"src":"5757:0:6"},"scope":2610,"src":"5662:138:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4891],"body":{"id":2479,"nodeType":"Block","src":"6427:166:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2465,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"6441:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2466,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6463:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6463:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6441:34:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2473,"nodeType":"IfStatement","src":"6437:102:6","trueBody":{"id":2472,"nodeType":"Block","src":"6477:62:6","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2469,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"6498:28:6","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:30:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2471,"nodeType":"RevertStatement","src":"6491:37:6"}]}},{"expression":{"arguments":[{"id":2475,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2460,"src":"6561:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2476,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"6567:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2474,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"6549:11:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6549:37:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2478,"nodeType":"ExpressionStatement","src":"6549:37:6"}]},"documentation":{"id":2458,"nodeType":"StructuredDocumentation","src":"5806:537:6","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":2480,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"6357:12:6","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"mutability":"mutable","name":"role","nameLocation":"6378:4:6","nodeType":"VariableDeclaration","scope":2480,"src":"6370:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6370:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"callerConfirmation","nameLocation":"6392:18:6","nodeType":"VariableDeclaration","scope":2480,"src":"6384:26:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2461,"name":"address","nodeType":"ElementaryTypeName","src":"6384:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:42:6"},"returnParameters":{"id":2464,"nodeType":"ParameterList","parameters":[],"src":"6427:0:6"},"scope":2610,"src":"6348:245:6","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2515,"nodeType":"Block","src":"6791:245:6","statements":[{"assignments":[2490],"declarations":[{"constant":false,"id":2490,"mutability":"mutable","name":"$","nameLocation":"6830:1:6","nodeType":"VariableDeclaration","scope":2515,"src":"6801:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2489,"nodeType":"UserDefinedTypeName","pathNode":{"id":2488,"name":"AccessControlStorage","nameLocations":["6801:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"6801:20:6"},"referencedDeclaration":2283,"src":"6801:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":2493,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2491,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2294,"src":"6834:24:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$2283_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6801:59:6"},{"assignments":[2495],"declarations":[{"constant":false,"id":2495,"mutability":"mutable","name":"previousAdminRole","nameLocation":"6878:17:6","nodeType":"VariableDeclaration","scope":2515,"src":"6870:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2494,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6870:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2499,"initialValue":{"arguments":[{"id":2497,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"6911:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2496,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"6898:12:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6870:46:6"},{"expression":{"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2500,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2490,"src":"6926:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":2503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6928:6:6","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"6926:8:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":2504,"indexExpression":{"id":2502,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"6935:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6926:14:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":2505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6941:9:6","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":2272,"src":"6926:24:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2506,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"6953:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6926:36:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2508,"nodeType":"ExpressionStatement","src":"6926:36:6"},{"eventCall":{"arguments":[{"id":2510,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"6994:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2511,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"7000:17:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2512,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"7019:9:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2509,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4831,"src":"6977:16:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2514,"nodeType":"EmitStatement","src":"6972:57:6"}]},"documentation":{"id":2481,"nodeType":"StructuredDocumentation","src":"6599:114:6","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":2516,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"6727:13:6","nodeType":"FunctionDefinition","parameters":{"id":2486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2483,"mutability":"mutable","name":"role","nameLocation":"6749:4:6","nodeType":"VariableDeclaration","scope":2516,"src":"6741:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6741:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"adminRole","nameLocation":"6763:9:6","nodeType":"VariableDeclaration","scope":2516,"src":"6755:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2484,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6755:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6740:33:6"},"returnParameters":{"id":2487,"nodeType":"ParameterList","parameters":[],"src":"6791:0:6"},"scope":2610,"src":"6718:318:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2562,"nodeType":"Block","src":"7353:304:6","statements":[{"assignments":[2528],"declarations":[{"constant":false,"id":2528,"mutability":"mutable","name":"$","nameLocation":"7392:1:6","nodeType":"VariableDeclaration","scope":2562,"src":"7363:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2527,"nodeType":"UserDefinedTypeName","pathNode":{"id":2526,"name":"AccessControlStorage","nameLocations":["7363:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"7363:20:6"},"referencedDeclaration":2283,"src":"7363:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":2531,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2529,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2294,"src":"7396:24:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$2283_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7363:59:6"},{"condition":{"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7436:23:6","subExpression":{"arguments":[{"id":2533,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"7445:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2534,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"7451:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2532,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"7437:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7437:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2560,"nodeType":"Block","src":"7614:37:6","statements":[{"expression":{"hexValue":"66616c7365","id":2558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7635:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2525,"id":2559,"nodeType":"Return","src":"7628:12:6"}]},"id":2561,"nodeType":"IfStatement","src":"7432:219:6","trueBody":{"id":2557,"nodeType":"Block","src":"7461:147:6","statements":[{"expression":{"id":2546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2537,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2528,"src":"7475:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":2540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7477:6:6","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"7475:8:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":2541,"indexExpression":{"id":2539,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"7484:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7475:14:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":2542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7490:7:6","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":2270,"src":"7475:22:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2544,"indexExpression":{"id":2543,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"7498:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7475:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7509:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7475:38:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2547,"nodeType":"ExpressionStatement","src":"7475:38:6"},{"eventCall":{"arguments":[{"id":2549,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2519,"src":"7544:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2550,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"7550:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2551,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"7559:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7559:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2548,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4840,"src":"7532:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":2553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7532:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2554,"nodeType":"EmitStatement","src":"7527:45:6"},{"expression":{"hexValue":"74727565","id":2555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7593:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2525,"id":2556,"nodeType":"Return","src":"7586:11:6"}]}}]},"documentation":{"id":2517,"nodeType":"StructuredDocumentation","src":"7042:223:6","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":2563,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"7279:10:6","nodeType":"FunctionDefinition","parameters":{"id":2522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"mutability":"mutable","name":"role","nameLocation":"7298:4:6","nodeType":"VariableDeclaration","scope":2563,"src":"7290:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7290:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2521,"mutability":"mutable","name":"account","nameLocation":"7312:7:6","nodeType":"VariableDeclaration","scope":2563,"src":"7304:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2520,"name":"address","nodeType":"ElementaryTypeName","src":"7304:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7289:31:6"},"returnParameters":{"id":2525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2563,"src":"7347:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2523,"name":"bool","nodeType":"ElementaryTypeName","src":"7347:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7346:6:6"},"scope":2610,"src":"7270:387:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2608,"nodeType":"Block","src":"7976:304:6","statements":[{"assignments":[2575],"declarations":[{"constant":false,"id":2575,"mutability":"mutable","name":"$","nameLocation":"8015:1:6","nodeType":"VariableDeclaration","scope":2608,"src":"7986:30:6","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"},"typeName":{"id":2574,"nodeType":"UserDefinedTypeName","pathNode":{"id":2573,"name":"AccessControlStorage","nameLocations":["7986:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":2283,"src":"7986:20:6"},"referencedDeclaration":2283,"src":"7986:20:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage"}},"visibility":"internal"}],"id":2578,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2576,"name":"_getAccessControlStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2294,"src":"8019:24:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$2283_storage_ptr_$","typeString":"function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8019:26:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7986:59:6"},{"condition":{"arguments":[{"id":2580,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"8067:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2581,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"8073:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2579,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"8059:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8059:22:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2606,"nodeType":"Block","src":"8237:37:6","statements":[{"expression":{"hexValue":"66616c7365","id":2604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8258:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2572,"id":2605,"nodeType":"Return","src":"8251:12:6"}]},"id":2607,"nodeType":"IfStatement","src":"8055:219:6","trueBody":{"id":2603,"nodeType":"Block","src":"8083:148:6","statements":[{"expression":{"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2583,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2575,"src":"8097:1:6","typeDescriptions":{"typeIdentifier":"t_struct$_AccessControlStorage_$2283_storage_ptr","typeString":"struct AccessControlUpgradeable.AccessControlStorage storage pointer"}},"id":2586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8099:6:6","memberName":"_roles","nodeType":"MemberAccess","referencedDeclaration":2282,"src":"8097:8:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$2273_storage_$","typeString":"mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)"}},"id":2587,"indexExpression":{"id":2585,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"8106:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8097:14:6","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$2273_storage","typeString":"struct AccessControlUpgradeable.RoleData storage ref"}},"id":2588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8112:7:6","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":2270,"src":"8097:22:6","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2590,"indexExpression":{"id":2589,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"8120:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8097:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8131:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"8097:39:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2593,"nodeType":"ExpressionStatement","src":"8097:39:6"},{"eventCall":{"arguments":[{"id":2595,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"8167:4:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2596,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2568,"src":"8173:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2597,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"8182:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8182:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2594,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"8155:11:6","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8155:40:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2600,"nodeType":"EmitStatement","src":"8150:45:6"},{"expression":{"hexValue":"74727565","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8216:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2572,"id":2602,"nodeType":"Return","src":"8209:11:6"}]}}]},"documentation":{"id":2564,"nodeType":"StructuredDocumentation","src":"7663:224:6","text":" @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":2609,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"7901:11:6","nodeType":"FunctionDefinition","parameters":{"id":2569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2566,"mutability":"mutable","name":"role","nameLocation":"7921:4:6","nodeType":"VariableDeclaration","scope":2609,"src":"7913:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7913:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2568,"mutability":"mutable","name":"account","nameLocation":"7935:7:6","nodeType":"VariableDeclaration","scope":2609,"src":"7927:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2567,"name":"address","nodeType":"ElementaryTypeName","src":"7927:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7912:31:6"},"returnParameters":{"id":2572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2571,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2609,"src":"7970:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2570,"name":"bool","nodeType":"ElementaryTypeName","src":"7970:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7969:6:6"},"scope":2610,"src":"7892:388:6","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2611,"src":"2090:6192:6","usedErrors":[2627,2630,4819,4822],"usedEvents":[2635,4831,4840,4849]}],"src":"108:8175:6"},"id":6},"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[2864]},"id":2865,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2612,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:7"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2613,"nodeType":"StructuredDocumentation","src":"139:2209:7","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":2864,"linearizedBaseContracts":[2864],"name":"Initializable","nameLocation":"2367:13:7","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":2614,"nodeType":"StructuredDocumentation","src":"2387:293:7","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":2621,"members":[{"constant":false,"id":2617,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:7","nodeType":"VariableDeclaration","scope":2621,"src":"2813:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2616,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":2620,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:7","nodeType":"VariableDeclaration","scope":2621,"src":"2950:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2619,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:7","nodeType":"StructDefinition","scope":2864,"src":"2685:290:7","visibility":"public"},{"constant":true,"id":2624,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:7","nodeType":"VariableDeclaration","scope":2864,"src":"3098:115:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":2623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:7","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"3220:60:7","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":2627,"name":"InvalidInitialization","nameLocation":"3291:21:7","nodeType":"ErrorDefinition","parameters":{"id":2626,"nodeType":"ParameterList","parameters":[],"src":"3312:2:7"},"src":"3285:30:7"},{"documentation":{"id":2628,"nodeType":"StructuredDocumentation","src":"3321:57:7","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":2630,"name":"NotInitializing","nameLocation":"3389:15:7","nodeType":"ErrorDefinition","parameters":{"id":2629,"nodeType":"ParameterList","parameters":[],"src":"3404:2:7"},"src":"3383:24:7"},{"anonymous":false,"documentation":{"id":2631,"nodeType":"StructuredDocumentation","src":"3413:90:7","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":2635,"name":"Initialized","nameLocation":"3514:11:7","nodeType":"EventDefinition","parameters":{"id":2634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2633,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:7","nodeType":"VariableDeclaration","scope":2635,"src":"3526:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2632,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:7"},"src":"3508:34:7"},{"body":{"id":2717,"nodeType":"Block","src":"4092:1081:7","statements":[{"assignments":[2640],"declarations":[{"constant":false,"id":2640,"mutability":"mutable","name":"$","nameLocation":"4187:1:7","nodeType":"VariableDeclaration","scope":2717,"src":"4158:30:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":2639,"nodeType":"UserDefinedTypeName","pathNode":{"id":2638,"name":"InitializableStorage","nameLocations":["4158:20:7"],"nodeType":"IdentifierPath","referencedDeclaration":2621,"src":"4158:20:7"},"referencedDeclaration":2621,"src":"4158:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":2643,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2641,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"4191:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$2621_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:7"},{"assignments":[2645],"declarations":[{"constant":false,"id":2645,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:7","nodeType":"VariableDeclaration","scope":2717,"src":"4279:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2644,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2649,"initialValue":{"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:7","subExpression":{"expression":{"id":2646,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"4302:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"4302:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:7"},{"assignments":[2651],"declarations":[{"constant":false,"id":2651,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:7","nodeType":"VariableDeclaration","scope":2717,"src":"4327:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2650,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":2654,"initialValue":{"expression":{"id":2652,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"4348:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"4348:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:7"},{"assignments":[2656],"declarations":[{"constant":false,"id":2656,"mutability":"mutable","name":"initialSetup","nameLocation":"4711:12:7","nodeType":"VariableDeclaration","scope":2717,"src":"4706:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2655,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2662,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2657,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4726:11:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4726:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2660,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"4746:14:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4726:34:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4706:54:7"},{"assignments":[2664],"declarations":[{"constant":false,"id":2664,"mutability":"mutable","name":"construction","nameLocation":"4775:12:7","nodeType":"VariableDeclaration","scope":2717,"src":"4770:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2663,"name":"bool","nodeType":"ElementaryTypeName","src":"4770:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2677,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2665,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2651,"src":"4790:11:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":2666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4790:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":2670,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4818:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$2864","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$2864","typeString":"contract Initializable"}],"id":2669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4810:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2668,"name":"address","nodeType":"ElementaryTypeName","src":"4810:7:7","typeDescriptions":{}}},"id":2671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4810:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4824:4:7","memberName":"code","nodeType":"MemberAccess","src":"4810:18:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4829:6:7","memberName":"length","nodeType":"MemberAccess","src":"4810:25:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4839:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4810:30:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4790:50:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4770:70:7"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4855:13:7","subExpression":{"id":2678,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"4856:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4872:13:7","subExpression":{"id":2680,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2664,"src":"4873:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4855:30:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2687,"nodeType":"IfStatement","src":"4851:91:7","trueBody":{"id":2686,"nodeType":"Block","src":"4887:55:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2683,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"4908:21:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4908:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2685,"nodeType":"RevertStatement","src":"4901:30:7"}]}},{"expression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2688,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"4951:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4953:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"4951:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4968:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4951:18:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2693,"nodeType":"ExpressionStatement","src":"4951:18:7"},{"condition":{"id":2694,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"4983:14:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2702,"nodeType":"IfStatement","src":"4979:67:7","trueBody":{"id":2701,"nodeType":"Block","src":"4999:47:7","statements":[{"expression":{"id":2699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2695,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"5013:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5015:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"5013:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5031:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5013:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2700,"nodeType":"ExpressionStatement","src":"5013:22:7"}]}},{"id":2703,"nodeType":"PlaceholderStatement","src":"5055:1:7"},{"condition":{"id":2704,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"5070:14:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2716,"nodeType":"IfStatement","src":"5066:101:7","trueBody":{"id":2715,"nodeType":"Block","src":"5086:81:7","statements":[{"expression":{"id":2709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2705,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"5100:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5102:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"5100:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5118:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5100:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2710,"nodeType":"ExpressionStatement","src":"5100:23:7"},{"eventCall":{"arguments":[{"hexValue":"31","id":2712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5154:1:7","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":2711,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"5142:11:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5142:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2714,"nodeType":"EmitStatement","src":"5137:19:7"}]}}]},"documentation":{"id":2636,"nodeType":"StructuredDocumentation","src":"3548:516:7","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":2718,"name":"initializer","nameLocation":"4078:11:7","nodeType":"ModifierDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[],"src":"4089:2:7"},"src":"4069:1104:7","virtual":false,"visibility":"internal"},{"body":{"id":2764,"nodeType":"Block","src":"6291:392:7","statements":[{"assignments":[2725],"declarations":[{"constant":false,"id":2725,"mutability":"mutable","name":"$","nameLocation":"6386:1:7","nodeType":"VariableDeclaration","scope":2764,"src":"6357:30:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":2724,"nodeType":"UserDefinedTypeName","pathNode":{"id":2723,"name":"InitializableStorage","nameLocations":["6357:20:7"],"nodeType":"IdentifierPath","referencedDeclaration":2621,"src":"6357:20:7"},"referencedDeclaration":2621,"src":"6357:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":2728,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2726,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6390:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$2621_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6357:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2729,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"6431:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2730,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6433:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"6431:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2731,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"6450:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6452:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"6450:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2733,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"6468:7:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6450:25:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6431:44:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2740,"nodeType":"IfStatement","src":"6427:105:7","trueBody":{"id":2739,"nodeType":"Block","src":"6477:55:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2736,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"6498:21:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6498:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2738,"nodeType":"RevertStatement","src":"6491:30:7"}]}},{"expression":{"id":2745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2741,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"6541:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6543:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"6541:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2744,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"6558:7:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6541:24:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2746,"nodeType":"ExpressionStatement","src":"6541:24:7"},{"expression":{"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2747,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"6575:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6577:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"6575:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6593:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6575:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2752,"nodeType":"ExpressionStatement","src":"6575:22:7"},{"id":2753,"nodeType":"PlaceholderStatement","src":"6607:1:7"},{"expression":{"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2754,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2725,"src":"6618:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6620:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"6618:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6636:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6618:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2759,"nodeType":"ExpressionStatement","src":"6618:23:7"},{"eventCall":{"arguments":[{"id":2761,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2721,"src":"6668:7:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2760,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"6656:11:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:20:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2763,"nodeType":"EmitStatement","src":"6651:25:7"}]},"documentation":{"id":2719,"nodeType":"StructuredDocumentation","src":"5179:1068:7","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":2765,"name":"reinitializer","nameLocation":"6261:13:7","nodeType":"ModifierDefinition","parameters":{"id":2722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2721,"mutability":"mutable","name":"version","nameLocation":"6282:7:7","nodeType":"VariableDeclaration","scope":2765,"src":"6275:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2720,"name":"uint64","nodeType":"ElementaryTypeName","src":"6275:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6274:16:7"},"src":"6252:431:7","virtual":false,"visibility":"internal"},{"body":{"id":2772,"nodeType":"Block","src":"6921:48:7","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2768,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"6931:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6931:20:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2770,"nodeType":"ExpressionStatement","src":"6931:20:7"},{"id":2771,"nodeType":"PlaceholderStatement","src":"6961:1:7"}]},"documentation":{"id":2766,"nodeType":"StructuredDocumentation","src":"6689:199:7","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":2773,"name":"onlyInitializing","nameLocation":"6902:16:7","nodeType":"ModifierDefinition","parameters":{"id":2767,"nodeType":"ParameterList","parameters":[],"src":"6918:2:7"},"src":"6893:76:7","virtual":false,"visibility":"internal"},{"body":{"id":2785,"nodeType":"Block","src":"7136:89:7","statements":[{"condition":{"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7150:18:7","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2777,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2854,"src":"7151:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7151:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2784,"nodeType":"IfStatement","src":"7146:73:7","trueBody":{"id":2783,"nodeType":"Block","src":"7170:49:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2780,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"7191:15:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2782,"nodeType":"RevertStatement","src":"7184:24:7"}]}}]},"documentation":{"id":2774,"nodeType":"StructuredDocumentation","src":"6975:104:7","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":2786,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7093:18:7","nodeType":"FunctionDefinition","parameters":{"id":2775,"nodeType":"ParameterList","parameters":[],"src":"7111:2:7"},"returnParameters":{"id":2776,"nodeType":"ParameterList","parameters":[],"src":"7136:0:7"},"scope":2864,"src":"7084:141:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2831,"nodeType":"Block","src":"7760:373:7","statements":[{"assignments":[2792],"declarations":[{"constant":false,"id":2792,"mutability":"mutable","name":"$","nameLocation":"7855:1:7","nodeType":"VariableDeclaration","scope":2831,"src":"7826:30:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":2791,"nodeType":"UserDefinedTypeName","pathNode":{"id":2790,"name":"InitializableStorage","nameLocations":["7826:20:7"],"nodeType":"IdentifierPath","referencedDeclaration":2621,"src":"7826:20:7"},"referencedDeclaration":2621,"src":"7826:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":2795,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2793,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"7859:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$2621_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7859:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7826:59:7"},{"condition":{"expression":{"id":2796,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"7900:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7902:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"7900:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2802,"nodeType":"IfStatement","src":"7896:76:7","trueBody":{"id":2801,"nodeType":"Block","src":"7917:55:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2798,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2627,"src":"7938:21:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7938:23:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2800,"nodeType":"RevertStatement","src":"7931:30:7"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2803,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"7985:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7987:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"7985:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":2807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8008:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2806,"name":"uint64","nodeType":"ElementaryTypeName","src":"8008:6:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":2805,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8003:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8016:3:7","memberName":"max","nodeType":"MemberAccess","src":"8003:16:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7985:34:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2830,"nodeType":"IfStatement","src":"7981:146:7","trueBody":{"id":2829,"nodeType":"Block","src":"8021:106:7","statements":[{"expression":{"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2811,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2792,"src":"8035:1:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8037:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"8035:14:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":2816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8057:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2815,"name":"uint64","nodeType":"ElementaryTypeName","src":"8057:6:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":2814,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8052:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":2818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8065:3:7","memberName":"max","nodeType":"MemberAccess","src":"8052:16:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8035:33:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":2820,"nodeType":"ExpressionStatement","src":"8035:33:7"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":2824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8104:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":2823,"name":"uint64","nodeType":"ElementaryTypeName","src":"8104:6:7","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":2822,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8099:4:7","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8099:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:3:7","memberName":"max","nodeType":"MemberAccess","src":"8099:16:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2821,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"8087:11:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8087:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2828,"nodeType":"EmitStatement","src":"8082:34:7"}]}}]},"documentation":{"id":2787,"nodeType":"StructuredDocumentation","src":"7231:475:7","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":2832,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7720:20:7","nodeType":"FunctionDefinition","parameters":{"id":2788,"nodeType":"ParameterList","parameters":[],"src":"7740:2:7"},"returnParameters":{"id":2789,"nodeType":"ParameterList","parameters":[],"src":"7760:0:7"},"scope":2864,"src":"7711:422:7","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2842,"nodeType":"Block","src":"8308:63:7","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2838,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"8325:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$2621_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8352:12:7","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":2617,"src":"8325:39:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":2837,"id":2841,"nodeType":"Return","src":"8318:46:7"}]},"documentation":{"id":2833,"nodeType":"StructuredDocumentation","src":"8139:99:7","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":2843,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8252:22:7","nodeType":"FunctionDefinition","parameters":{"id":2834,"nodeType":"ParameterList","parameters":[],"src":"8274:2:7"},"returnParameters":{"id":2837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2843,"src":"8300:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2835,"name":"uint64","nodeType":"ElementaryTypeName","src":"8300:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8299:8:7"},"scope":2864,"src":"8243:128:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2853,"nodeType":"Block","src":"8543:64:7","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2849,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"8560:24:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$2621_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":2851,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8587:13:7","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":2620,"src":"8560:40:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2848,"id":2852,"nodeType":"Return","src":"8553:47:7"}]},"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"8377:105:7","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":2854,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8496:15:7","nodeType":"FunctionDefinition","parameters":{"id":2845,"nodeType":"ParameterList","parameters":[],"src":"8511:2:7"},"returnParameters":{"id":2848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2847,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2854,"src":"8537:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2846,"name":"bool","nodeType":"ElementaryTypeName","src":"8537:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8536:6:7"},"scope":2864,"src":"8487:120:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2862,"nodeType":"Block","src":"8827:80:7","statements":[{"AST":{"nativeSrc":"8846:55:7","nodeType":"YulBlock","src":"8846:55:7","statements":[{"nativeSrc":"8860:31:7","nodeType":"YulAssignment","src":"8860:31:7","value":{"name":"INITIALIZABLE_STORAGE","nativeSrc":"8870:21:7","nodeType":"YulIdentifier","src":"8870:21:7"},"variableNames":[{"name":"$.slot","nativeSrc":"8860:6:7","nodeType":"YulIdentifier","src":"8860:6:7"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":2859,"isOffset":false,"isSlot":true,"src":"8860:6:7","suffix":"slot","valueSize":1},{"declaration":2624,"isOffset":false,"isSlot":false,"src":"8870:21:7","valueSize":1}],"id":2861,"nodeType":"InlineAssembly","src":"8837:64:7"}]},"documentation":{"id":2855,"nodeType":"StructuredDocumentation","src":"8613:67:7","text":" @dev Returns a pointer to the storage namespace."},"id":2863,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"8746:24:7","nodeType":"FunctionDefinition","parameters":{"id":2856,"nodeType":"ParameterList","parameters":[],"src":"8770:2:7"},"returnParameters":{"id":2860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2859,"mutability":"mutable","name":"$","nameLocation":"8824:1:7","nodeType":"VariableDeclaration","scope":2863,"src":"8795:30:7","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":2858,"nodeType":"UserDefinedTypeName","pathNode":{"id":2857,"name":"InitializableStorage","nameLocations":["8795:20:7"],"nodeType":"IdentifierPath","referencedDeclaration":2621,"src":"8795:20:7"},"referencedDeclaration":2621,"src":"8795:20:7","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$2621_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"8794:32:7"},"scope":2864,"src":"8737:170:7","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2865,"src":"2349:6560:7","usedErrors":[2627,2630],"usedEvents":[2635]}],"src":"113:8797:7"},"id":7},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[8017],"IERC1822Proxiable":[7548],"Initializable":[2864],"UUPSUpgradeable":[3046]},"id":3047,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2866,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:8"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":2868,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3047,"sourceUnit":7549,"src":"141:88:8","symbolAliases":[{"foreign":{"id":2867,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7548,"src":"149:17:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":2870,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3047,"sourceUnit":8018,"src":"230:84:8","symbolAliases":[{"foreign":{"id":2869,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"238:12:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":2872,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3047,"sourceUnit":2865,"src":"315:50:8","symbolAliases":[{"foreign":{"id":2871,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"323:13:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2874,"name":"Initializable","nameLocations":["1023:13:8"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"1023:13:8"},"id":2875,"nodeType":"InheritanceSpecifier","src":"1023:13:8"},{"baseName":{"id":2876,"name":"IERC1822Proxiable","nameLocations":["1038:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":7548,"src":"1038:17:8"},"id":2877,"nodeType":"InheritanceSpecifier","src":"1038:17:8"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2873,"nodeType":"StructuredDocumentation","src":"367:618:8","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."},"fullyImplemented":false,"id":3046,"linearizedBaseContracts":[3046,7548,2864],"name":"UUPSUpgradeable","nameLocation":"1004:15:8","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":2878,"nodeType":"StructuredDocumentation","src":"1062:61:8","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":2884,"mutability":"immutable","name":"__self","nameLocation":"1154:6:8","nodeType":"VariableDeclaration","scope":3046,"src":"1128:48:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2879,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":2882,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}],"id":2881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2880,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:8","typeDescriptions":{}}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":2885,"nodeType":"StructuredDocumentation","src":"1183:631:8","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":2888,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:8","nodeType":"VariableDeclaration","scope":3046,"src":"1819:58:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2886,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":2887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":2889,"nodeType":"StructuredDocumentation","src":"1884:65:8","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":2891,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:8","nodeType":"ErrorDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[],"src":"1987:2:8"},"src":"1954:36:8"},{"documentation":{"id":2892,"nodeType":"StructuredDocumentation","src":"1996:68:8","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":2896,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:8","nodeType":"ErrorDefinition","parameters":{"id":2895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2894,"mutability":"mutable","name":"slot","nameLocation":"2112:4:8","nodeType":"VariableDeclaration","scope":2896,"src":"2104:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:8"},"src":"2069:49:8"},{"body":{"id":2903,"nodeType":"Block","src":"2645:41:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2899,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"2655:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2901,"nodeType":"ExpressionStatement","src":"2655:13:8"},{"id":2902,"nodeType":"PlaceholderStatement","src":"2678:1:8"}]},"documentation":{"id":2897,"nodeType":"StructuredDocumentation","src":"2124:495:8","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":2904,"name":"onlyProxy","nameLocation":"2633:9:8","nodeType":"ModifierDefinition","parameters":{"id":2898,"nodeType":"ParameterList","parameters":[],"src":"2642:2:8"},"src":"2624:62:8","virtual":false,"visibility":"internal"},{"body":{"id":2911,"nodeType":"Block","src":"2916:48:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2907,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2994,"src":"2926:18:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:20:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2909,"nodeType":"ExpressionStatement","src":"2926:20:8"},{"id":2910,"nodeType":"PlaceholderStatement","src":"2956:1:8"}]},"documentation":{"id":2905,"nodeType":"StructuredDocumentation","src":"2692:195:8","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":2912,"name":"notDelegated","nameLocation":"2901:12:8","nodeType":"ModifierDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[],"src":"2913:2:8"},"src":"2892:72:8","virtual":false,"visibility":"internal"},{"body":{"id":2917,"nodeType":"Block","src":"3030:7:8","statements":[]},"id":2918,"implemented":true,"kind":"function","modifiers":[{"id":2915,"kind":"modifierInvocation","modifierName":{"id":2914,"name":"onlyInitializing","nameLocations":["3013:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3013:16:8"},"nodeType":"ModifierInvocation","src":"3013:16:8"}],"name":"__UUPSUpgradeable_init","nameLocation":"2979:22:8","nodeType":"FunctionDefinition","parameters":{"id":2913,"nodeType":"ParameterList","parameters":[],"src":"3001:2:8"},"returnParameters":{"id":2916,"nodeType":"ParameterList","parameters":[],"src":"3030:0:8"},"scope":3046,"src":"2970:67:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2923,"nodeType":"Block","src":"3113:7:8","statements":[]},"id":2924,"implemented":true,"kind":"function","modifiers":[{"id":2921,"kind":"modifierInvocation","modifierName":{"id":2920,"name":"onlyInitializing","nameLocations":["3096:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3096:16:8"},"nodeType":"ModifierInvocation","src":"3096:16:8"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3052:32:8","nodeType":"FunctionDefinition","parameters":{"id":2919,"nodeType":"ParameterList","parameters":[],"src":"3084:2:8"},"returnParameters":{"id":2922,"nodeType":"ParameterList","parameters":[],"src":"3113:0:8"},"scope":3046,"src":"3043:77:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[7547],"body":{"id":2935,"nodeType":"Block","src":"3786:56:8","statements":[{"expression":{"expression":{"id":2932,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"3803:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":2933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3816:19:8","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":7738,"src":"3803:32:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":2931,"id":2934,"nodeType":"Return","src":"3796:39:8"}]},"documentation":{"id":2925,"nodeType":"StructuredDocumentation","src":"3125:578:8","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":2936,"implemented":true,"kind":"function","modifiers":[{"id":2928,"kind":"modifierInvocation","modifierName":{"id":2927,"name":"notDelegated","nameLocations":["3755:12:8"],"nodeType":"IdentifierPath","referencedDeclaration":2912,"src":"3755:12:8"},"nodeType":"ModifierInvocation","src":"3755:12:8"}],"name":"proxiableUUID","nameLocation":"3717:13:8","nodeType":"FunctionDefinition","parameters":{"id":2926,"nodeType":"ParameterList","parameters":[],"src":"3730:2:8"},"returnParameters":{"id":2931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2936,"src":"3777:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2929,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3777:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3776:9:8"},"scope":3046,"src":"3708:134:8","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":2955,"nodeType":"Block","src":"4266:109:8","statements":[{"expression":{"arguments":[{"id":2947,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"4294:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2946,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"4276:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2949,"nodeType":"ExpressionStatement","src":"4276:36:8"},{"expression":{"arguments":[{"id":2951,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"4344:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2952,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"4363:4:8","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":2950,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"4322:21:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2954,"nodeType":"ExpressionStatement","src":"4322:46:8"}]},"documentation":{"id":2937,"nodeType":"StructuredDocumentation","src":"3848:308:8","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":2956,"implemented":true,"kind":"function","modifiers":[{"id":2944,"kind":"modifierInvocation","modifierName":{"id":2943,"name":"onlyProxy","nameLocations":["4256:9:8"],"nodeType":"IdentifierPath","referencedDeclaration":2904,"src":"4256:9:8"},"nodeType":"ModifierInvocation","src":"4256:9:8"}],"name":"upgradeToAndCall","nameLocation":"4170:16:8","nodeType":"FunctionDefinition","parameters":{"id":2942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"newImplementation","nameLocation":"4195:17:8","nodeType":"VariableDeclaration","scope":2956,"src":"4187:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2938,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2941,"mutability":"mutable","name":"data","nameLocation":"4227:4:8","nodeType":"VariableDeclaration","scope":2956,"src":"4214:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2940,"name":"bytes","nodeType":"ElementaryTypeName","src":"4214:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4186:46:8"},"returnParameters":{"id":2945,"nodeType":"ParameterList","parameters":[],"src":"4266:0:8"},"scope":3046,"src":"4161:214:8","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":2977,"nodeType":"Block","src":"4648:267:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2962,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4683:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}],"id":2961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4675:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2960,"name":"address","nodeType":"ElementaryTypeName","src":"4675:7:8","typeDescriptions":{}}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4675:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2964,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"4692:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4675:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2966,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"4753:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4766:17:8","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":7769,"src":"4753:30:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4753:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2969,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"4789:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4753:42:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4675:120:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2976,"nodeType":"IfStatement","src":"4658:251:8","trueBody":{"id":2975,"nodeType":"Block","src":"4848:61:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2972,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"4869:27:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4869:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2974,"nodeType":"RevertStatement","src":"4862:36:8"}]}}]},"documentation":{"id":2957,"nodeType":"StructuredDocumentation","src":"4381:217:8","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.\n See {_onlyProxy}."},"id":2978,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4612:11:8","nodeType":"FunctionDefinition","parameters":{"id":2958,"nodeType":"ParameterList","parameters":[],"src":"4623:2:8"},"returnParameters":{"id":2959,"nodeType":"ParameterList","parameters":[],"src":"4648:0:8"},"scope":3046,"src":"4603:312:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2993,"nodeType":"Block","src":"5084:161:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2984,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5106:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$3046","typeString":"contract UUPSUpgradeable"}],"id":2983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2982,"name":"address","nodeType":"ElementaryTypeName","src":"5098:7:8","typeDescriptions":{}}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5098:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2986,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"5115:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5098:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2992,"nodeType":"IfStatement","src":"5094:145:8","trueBody":{"id":2991,"nodeType":"Block","src":"5123:116:8","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2988,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2891,"src":"5199:27:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2990,"nodeType":"RevertStatement","src":"5192:36:8"}]}}]},"documentation":{"id":2979,"nodeType":"StructuredDocumentation","src":"4921:106:8","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":2994,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5041:18:8","nodeType":"FunctionDefinition","parameters":{"id":2980,"nodeType":"ParameterList","parameters":[],"src":"5059:2:8"},"returnParameters":{"id":2981,"nodeType":"ParameterList","parameters":[],"src":"5084:0:8"},"scope":3046,"src":"5032:213:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":2995,"nodeType":"StructuredDocumentation","src":"5251:372:8","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":3000,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5637:17:8","nodeType":"FunctionDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2997,"mutability":"mutable","name":"newImplementation","nameLocation":"5663:17:8","nodeType":"VariableDeclaration","scope":3000,"src":"5655:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2996,"name":"address","nodeType":"ElementaryTypeName","src":"5655:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5654:27:8"},"returnParameters":{"id":2999,"nodeType":"ParameterList","parameters":[],"src":"5698:0:8"},"scope":3046,"src":"5628:71:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3044,"nodeType":"Block","src":"6142:453:8","statements":[{"clauses":[{"block":{"id":3033,"nodeType":"Block","src":"6232:212:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3016,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"6250:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3017,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"6258:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6271:19:8","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":7738,"src":"6258:32:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6250:40:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3025,"nodeType":"IfStatement","src":"6246:120:8","trueBody":{"id":3024,"nodeType":"Block","src":"6292:74:8","statements":[{"errorCall":{"arguments":[{"id":3021,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"6346:4:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3020,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2896,"src":"6317:28:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6317:34:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3023,"nodeType":"RevertStatement","src":"6310:41:8"}]}},{"expression":{"arguments":[{"id":3029,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"6409:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3030,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3005,"src":"6428:4:8","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":3026,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"6379:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":3028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6392:16:8","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":7832,"src":"6379:29:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":3031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:54:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3032,"nodeType":"ExpressionStatement","src":"6379:54:8"}]},"errorName":"","id":3034,"nodeType":"TryCatchClause","parameters":{"id":3015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3014,"mutability":"mutable","name":"slot","nameLocation":"6226:4:8","nodeType":"VariableDeclaration","scope":3034,"src":"6218:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3013,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6218:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6217:14:8"},"src":"6209:235:8"},{"block":{"id":3041,"nodeType":"Block","src":"6451:138:8","statements":[{"errorCall":{"arguments":[{"id":3038,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"6560:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3035,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"6518:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6531:28:8","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":7743,"src":"6518:41:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6518:60:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3040,"nodeType":"RevertStatement","src":"6511:67:8"}]},"errorName":"","id":3042,"nodeType":"TryCatchClause","src":"6445:144:8"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3009,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"6174:17:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3008,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7548,"src":"6156:17:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$7548_$","typeString":"type(contract IERC1822Proxiable)"}},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6156:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$7548","typeString":"contract IERC1822Proxiable"}},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6193:13:8","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":7547,"src":"6156:50:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":3012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6156:52:8","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3043,"nodeType":"TryStatement","src":"6152:437:8"}]},"documentation":{"id":3001,"nodeType":"StructuredDocumentation","src":"5705:347:8","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":3045,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6066:21:8","nodeType":"FunctionDefinition","parameters":{"id":3006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"newImplementation","nameLocation":"6096:17:8","nodeType":"VariableDeclaration","scope":3045,"src":"6088:25:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3002,"name":"address","nodeType":"ElementaryTypeName","src":"6088:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3005,"mutability":"mutable","name":"data","nameLocation":"6128:4:8","nodeType":"VariableDeclaration","scope":3045,"src":"6115:17:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3004,"name":"bytes","nodeType":"ElementaryTypeName","src":"6115:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6087:46:8"},"returnParameters":{"id":3007,"nodeType":"ParameterList","parameters":[],"src":"6142:0:8"},"scope":3046,"src":"6057:538:8","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":3047,"src":"986:5611:8","usedErrors":[2627,2630,2891,2896,7743,7756,9103,9395],"usedEvents":[2635,7347]}],"src":"115:6483:8"},"id":8},"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","exportedSymbols":{"ContextUpgradeable":[4473],"ERC20Upgradeable":[3663],"IERC20":[8656],"IERC20Errors":[7590],"IERC20Metadata":[8682],"Initializable":[2864]},"id":3664,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3048,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:9"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3050,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3664,"sourceUnit":8657,"src":"131:70:9","symbolAliases":[{"foreign":{"id":3049,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"139:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":3052,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3664,"sourceUnit":8683,"src":"202:97:9","symbolAliases":[{"foreign":{"id":3051,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"210:14:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","file":"../../utils/ContextUpgradeable.sol","id":3054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3664,"sourceUnit":4474,"src":"300:70:9","symbolAliases":[{"foreign":{"id":3053,"name":"ContextUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"308:18:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","id":3056,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3664,"sourceUnit":7686,"src":"371:83:9","symbolAliases":[{"foreign":{"id":3055,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"379:12:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":3058,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3664,"sourceUnit":2865,"src":"455:66:9","symbolAliases":[{"foreign":{"id":3057,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"463:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3060,"name":"Initializable","nameLocations":["1319:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"1319:13:9"},"id":3061,"nodeType":"InheritanceSpecifier","src":"1319:13:9"},{"baseName":{"id":3062,"name":"ContextUpgradeable","nameLocations":["1334:18:9"],"nodeType":"IdentifierPath","referencedDeclaration":4473,"src":"1334:18:9"},"id":3063,"nodeType":"InheritanceSpecifier","src":"1334:18:9"},{"baseName":{"id":3064,"name":"IERC20","nameLocations":["1354:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1354:6:9"},"id":3065,"nodeType":"InheritanceSpecifier","src":"1354:6:9"},{"baseName":{"id":3066,"name":"IERC20Metadata","nameLocations":["1362:14:9"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1362:14:9"},"id":3067,"nodeType":"InheritanceSpecifier","src":"1362:14:9"},{"baseName":{"id":3068,"name":"IERC20Errors","nameLocations":["1378:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":7590,"src":"1378:12:9"},"id":3069,"nodeType":"InheritanceSpecifier","src":"1378:12:9"}],"canonicalName":"ERC20Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3059,"nodeType":"StructuredDocumentation","src":"523:757:9","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":3663,"linearizedBaseContracts":[3663,7590,8682,8656,4473,2864],"name":"ERC20Upgradeable","nameLocation":"1299:16:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ERC20Upgradeable.ERC20Storage","documentation":{"id":3070,"nodeType":"StructuredDocumentation","src":"1397:63:9","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC20"},"id":3087,"members":[{"constant":false,"id":3074,"mutability":"mutable","name":"_balances","nameLocation":"1531:9:9","nodeType":"VariableDeclaration","scope":3087,"src":"1495:45:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3073,"keyName":"account","keyNameLocation":"1511:7:9","keyType":{"id":3071,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1495:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3072,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":3080,"mutability":"mutable","name":"_allowances","nameLocation":"1615:11:9","nodeType":"VariableDeclaration","scope":3087,"src":"1551:75:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":3079,"keyName":"account","keyNameLocation":"1567:7:9","keyType":{"id":3075,"name":"address","nodeType":"ElementaryTypeName","src":"1559:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1551:63:9","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":3078,"keyName":"spender","keyNameLocation":"1594:7:9","keyType":{"id":3076,"name":"address","nodeType":"ElementaryTypeName","src":"1586:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1578:35:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3077,"name":"uint256","nodeType":"ElementaryTypeName","src":"1605:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":3082,"mutability":"mutable","name":"_totalSupply","nameLocation":"1645:12:9","nodeType":"VariableDeclaration","scope":3087,"src":"1637:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1637:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3084,"mutability":"mutable","name":"_name","nameLocation":"1675:5:9","nodeType":"VariableDeclaration","scope":3087,"src":"1668:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3083,"name":"string","nodeType":"ElementaryTypeName","src":"1668:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3086,"mutability":"mutable","name":"_symbol","nameLocation":"1697:7:9","nodeType":"VariableDeclaration","scope":3087,"src":"1690:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3085,"name":"string","nodeType":"ElementaryTypeName","src":"1690:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"ERC20Storage","nameLocation":"1472:12:9","nodeType":"StructDefinition","scope":3663,"src":"1465:246:9","visibility":"public"},{"constant":true,"id":3090,"mutability":"constant","name":"ERC20StorageLocation","nameLocation":"1851:20:9","nodeType":"VariableDeclaration","scope":3663,"src":"1826:114:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1826:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835326336333234376531663437646231396435636530343630303330633439376630363763613463656266373162613938656561646162653230626163653030","id":3089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:66:9","typeDescriptions":{"typeIdentifier":"t_rational_37439836327923360225337895871394760624280537466773280374265222508165906222592_by_1","typeString":"int_const 3743...(69 digits omitted)...2592"},"value":"0x52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00"},"visibility":"private"},{"body":{"id":3097,"nodeType":"Block","src":"2021:79:9","statements":[{"AST":{"nativeSrc":"2040:54:9","nodeType":"YulBlock","src":"2040:54:9","statements":[{"nativeSrc":"2054:30:9","nodeType":"YulAssignment","src":"2054:30:9","value":{"name":"ERC20StorageLocation","nativeSrc":"2064:20:9","nodeType":"YulIdentifier","src":"2064:20:9"},"variableNames":[{"name":"$.slot","nativeSrc":"2054:6:9","nodeType":"YulIdentifier","src":"2054:6:9"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3094,"isOffset":false,"isSlot":true,"src":"2054:6:9","suffix":"slot","valueSize":1},{"declaration":3090,"isOffset":false,"isSlot":false,"src":"2064:20:9","valueSize":1}],"id":3096,"nodeType":"InlineAssembly","src":"2031:63:9"}]},"id":3098,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC20Storage","nameLocation":"1956:16:9","nodeType":"FunctionDefinition","parameters":{"id":3091,"nodeType":"ParameterList","parameters":[],"src":"1972:2:9"},"returnParameters":{"id":3095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3094,"mutability":"mutable","name":"$","nameLocation":"2018:1:9","nodeType":"VariableDeclaration","scope":3098,"src":"1997:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3093,"nodeType":"UserDefinedTypeName","pathNode":{"id":3092,"name":"ERC20Storage","nameLocations":["1997:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"1997:12:9"},"referencedDeclaration":3087,"src":"1997:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"src":"1996:24:9"},"scope":3663,"src":"1947:153:9","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":3113,"nodeType":"Block","src":"2374:55:9","statements":[{"expression":{"arguments":[{"id":3109,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"2407:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":3110,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"2414:7:9","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":3108,"name":"__ERC20_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3142,"src":"2384:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":3111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2384:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3112,"nodeType":"ExpressionStatement","src":"2384:38:9"}]},"documentation":{"id":3099,"nodeType":"StructuredDocumentation","src":"2106:171:9","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":3114,"implemented":true,"kind":"function","modifiers":[{"id":3106,"kind":"modifierInvocation","modifierName":{"id":3105,"name":"onlyInitializing","nameLocations":["2357:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"2357:16:9"},"nodeType":"ModifierInvocation","src":"2357:16:9"}],"name":"__ERC20_init","nameLocation":"2291:12:9","nodeType":"FunctionDefinition","parameters":{"id":3104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3101,"mutability":"mutable","name":"name_","nameLocation":"2318:5:9","nodeType":"VariableDeclaration","scope":3114,"src":"2304:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3100,"name":"string","nodeType":"ElementaryTypeName","src":"2304:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3103,"mutability":"mutable","name":"symbol_","nameLocation":"2339:7:9","nodeType":"VariableDeclaration","scope":3114,"src":"2325:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3102,"name":"string","nodeType":"ElementaryTypeName","src":"2325:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2303:44:9"},"returnParameters":{"id":3107,"nodeType":"ParameterList","parameters":[],"src":"2374:0:9"},"scope":3663,"src":"2282:147:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3141,"nodeType":"Block","src":"2537:114:9","statements":[{"assignments":[3125],"declarations":[{"constant":false,"id":3125,"mutability":"mutable","name":"$","nameLocation":"2568:1:9","nodeType":"VariableDeclaration","scope":3141,"src":"2547:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3124,"nodeType":"UserDefinedTypeName","pathNode":{"id":3123,"name":"ERC20Storage","nameLocations":["2547:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"2547:12:9"},"referencedDeclaration":3087,"src":"2547:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3128,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3126,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"2572:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2572:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2547:43:9"},{"expression":{"id":3133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3129,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3125,"src":"2600:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2602:5:9","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":3084,"src":"2600:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3132,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3116,"src":"2610:5:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2600:15:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3134,"nodeType":"ExpressionStatement","src":"2600:15:9"},{"expression":{"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3135,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3125,"src":"2625:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2627:7:9","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":3086,"src":"2625:9:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3138,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3118,"src":"2637:7:9","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2625:19:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3140,"nodeType":"ExpressionStatement","src":"2625:19:9"}]},"id":3142,"implemented":true,"kind":"function","modifiers":[{"id":3121,"kind":"modifierInvocation","modifierName":{"id":3120,"name":"onlyInitializing","nameLocations":["2520:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"2520:16:9"},"nodeType":"ModifierInvocation","src":"2520:16:9"}],"name":"__ERC20_init_unchained","nameLocation":"2444:22:9","nodeType":"FunctionDefinition","parameters":{"id":3119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3116,"mutability":"mutable","name":"name_","nameLocation":"2481:5:9","nodeType":"VariableDeclaration","scope":3142,"src":"2467:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3115,"name":"string","nodeType":"ElementaryTypeName","src":"2467:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3118,"mutability":"mutable","name":"symbol_","nameLocation":"2502:7:9","nodeType":"VariableDeclaration","scope":3142,"src":"2488:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3117,"name":"string","nodeType":"ElementaryTypeName","src":"2488:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2466:44:9"},"returnParameters":{"id":3122,"nodeType":"ParameterList","parameters":[],"src":"2537:0:9"},"scope":3663,"src":"2435:216:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[8669],"body":{"id":3157,"nodeType":"Block","src":"2776:84:9","statements":[{"assignments":[3150],"declarations":[{"constant":false,"id":3150,"mutability":"mutable","name":"$","nameLocation":"2807:1:9","nodeType":"VariableDeclaration","scope":3157,"src":"2786:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3149,"nodeType":"UserDefinedTypeName","pathNode":{"id":3148,"name":"ERC20Storage","nameLocations":["2786:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"2786:12:9"},"referencedDeclaration":3087,"src":"2786:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3153,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3151,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"2811:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2811:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2786:43:9"},{"expression":{"expression":{"id":3154,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3150,"src":"2846:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2848:5:9","memberName":"_name","nodeType":"MemberAccess","referencedDeclaration":3084,"src":"2846:7:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3147,"id":3156,"nodeType":"Return","src":"2839:14:9"}]},"documentation":{"id":3143,"nodeType":"StructuredDocumentation","src":"2657:54:9","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":3158,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2725:4:9","nodeType":"FunctionDefinition","parameters":{"id":3144,"nodeType":"ParameterList","parameters":[],"src":"2729:2:9"},"returnParameters":{"id":3147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3158,"src":"2761:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3145,"name":"string","nodeType":"ElementaryTypeName","src":"2761:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2760:15:9"},"scope":3663,"src":"2716:144:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8675],"body":{"id":3173,"nodeType":"Block","src":"3035:86:9","statements":[{"assignments":[3166],"declarations":[{"constant":false,"id":3166,"mutability":"mutable","name":"$","nameLocation":"3066:1:9","nodeType":"VariableDeclaration","scope":3173,"src":"3045:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3165,"nodeType":"UserDefinedTypeName","pathNode":{"id":3164,"name":"ERC20Storage","nameLocations":["3045:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"3045:12:9"},"referencedDeclaration":3087,"src":"3045:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3169,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3167,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"3070:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3045:43:9"},{"expression":{"expression":{"id":3170,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3166,"src":"3105:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3107:7:9","memberName":"_symbol","nodeType":"MemberAccess","referencedDeclaration":3086,"src":"3105:9:9","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3163,"id":3172,"nodeType":"Return","src":"3098:16:9"}]},"documentation":{"id":3159,"nodeType":"StructuredDocumentation","src":"2866:102:9","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":3174,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2982:6:9","nodeType":"FunctionDefinition","parameters":{"id":3160,"nodeType":"ParameterList","parameters":[],"src":"2988:2:9"},"returnParameters":{"id":3163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3174,"src":"3020:13:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3161,"name":"string","nodeType":"ElementaryTypeName","src":"3020:6:9","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3019:15:9"},"scope":3663,"src":"2973:148:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8681],"body":{"id":3182,"nodeType":"Block","src":"3810:26:9","statements":[{"expression":{"hexValue":"3138","id":3180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3827:2:9","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":3179,"id":3181,"nodeType":"Return","src":"3820:9:9"}]},"documentation":{"id":3175,"nodeType":"StructuredDocumentation","src":"3127:622:9","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":3183,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3763:8:9","nodeType":"FunctionDefinition","parameters":{"id":3176,"nodeType":"ParameterList","parameters":[],"src":"3771:2:9"},"returnParameters":{"id":3179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3183,"src":"3803:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3177,"name":"uint8","nodeType":"ElementaryTypeName","src":"3803:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3802:7:9"},"scope":3663,"src":"3754:82:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8605],"body":{"id":3198,"nodeType":"Block","src":"3957:91:9","statements":[{"assignments":[3191],"declarations":[{"constant":false,"id":3191,"mutability":"mutable","name":"$","nameLocation":"3988:1:9","nodeType":"VariableDeclaration","scope":3198,"src":"3967:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3190,"nodeType":"UserDefinedTypeName","pathNode":{"id":3189,"name":"ERC20Storage","nameLocations":["3967:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"3967:12:9"},"referencedDeclaration":3087,"src":"3967:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3194,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3192,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"3992:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3992:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3967:43:9"},{"expression":{"expression":{"id":3195,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3191,"src":"4027:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4029:12:9","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3082,"src":"4027:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3188,"id":3197,"nodeType":"Return","src":"4020:21:9"}]},"documentation":{"id":3184,"nodeType":"StructuredDocumentation","src":"3842:49:9","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":3199,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3905:11:9","nodeType":"FunctionDefinition","parameters":{"id":3185,"nodeType":"ParameterList","parameters":[],"src":"3916:2:9"},"returnParameters":{"id":3188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3199,"src":"3948:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3186,"name":"uint256","nodeType":"ElementaryTypeName","src":"3948:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3947:9:9"},"scope":3663,"src":"3896:152:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8613],"body":{"id":3218,"nodeType":"Block","src":"4180:97:9","statements":[{"assignments":[3209],"declarations":[{"constant":false,"id":3209,"mutability":"mutable","name":"$","nameLocation":"4211:1:9","nodeType":"VariableDeclaration","scope":3218,"src":"4190:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3208,"nodeType":"UserDefinedTypeName","pathNode":{"id":3207,"name":"ERC20Storage","nameLocations":["4190:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"4190:12:9"},"referencedDeclaration":3087,"src":"4190:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3212,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3210,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"4215:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4215:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4190:43:9"},{"expression":{"baseExpression":{"expression":{"id":3213,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3209,"src":"4250:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4252:9:9","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"4250:11:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3216,"indexExpression":{"id":3215,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"4262:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4250:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3206,"id":3217,"nodeType":"Return","src":"4243:27:9"}]},"documentation":{"id":3200,"nodeType":"StructuredDocumentation","src":"4054:47:9","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":3219,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4115:9:9","nodeType":"FunctionDefinition","parameters":{"id":3203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3202,"mutability":"mutable","name":"account","nameLocation":"4133:7:9","nodeType":"VariableDeclaration","scope":3219,"src":"4125:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3201,"name":"address","nodeType":"ElementaryTypeName","src":"4125:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4124:17:9"},"returnParameters":{"id":3206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3205,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3219,"src":"4171:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3204,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4170:9:9"},"scope":3663,"src":"4106:171:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8623],"body":{"id":3242,"nodeType":"Block","src":"4547:103:9","statements":[{"assignments":[3230],"declarations":[{"constant":false,"id":3230,"mutability":"mutable","name":"owner","nameLocation":"4565:5:9","nodeType":"VariableDeclaration","scope":3242,"src":"4557:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3229,"name":"address","nodeType":"ElementaryTypeName","src":"4557:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3233,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3231,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"4573:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4573:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4557:28:9"},{"expression":{"arguments":[{"id":3235,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3230,"src":"4605:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3236,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3222,"src":"4612:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3224,"src":"4616:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3234,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3370,"src":"4595:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4595:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3239,"nodeType":"ExpressionStatement","src":"4595:27:9"},{"expression":{"hexValue":"74727565","id":3240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4639:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3228,"id":3241,"nodeType":"Return","src":"4632:11:9"}]},"documentation":{"id":3220,"nodeType":"StructuredDocumentation","src":"4283:184:9","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":3243,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4481:8:9","nodeType":"FunctionDefinition","parameters":{"id":3225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3222,"mutability":"mutable","name":"to","nameLocation":"4498:2:9","nodeType":"VariableDeclaration","scope":3243,"src":"4490:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3221,"name":"address","nodeType":"ElementaryTypeName","src":"4490:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3224,"mutability":"mutable","name":"value","nameLocation":"4510:5:9","nodeType":"VariableDeclaration","scope":3243,"src":"4502:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3223,"name":"uint256","nodeType":"ElementaryTypeName","src":"4502:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4489:27:9"},"returnParameters":{"id":3228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3243,"src":"4541:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3226,"name":"bool","nodeType":"ElementaryTypeName","src":"4541:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4540:6:9"},"scope":3663,"src":"4472:178:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8633],"body":{"id":3266,"nodeType":"Block","src":"4797:106:9","statements":[{"assignments":[3255],"declarations":[{"constant":false,"id":3255,"mutability":"mutable","name":"$","nameLocation":"4828:1:9","nodeType":"VariableDeclaration","scope":3266,"src":"4807:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3254,"nodeType":"UserDefinedTypeName","pathNode":{"id":3253,"name":"ERC20Storage","nameLocations":["4807:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"4807:12:9"},"referencedDeclaration":3087,"src":"4807:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3258,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3256,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"4832:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4832:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4807:43:9"},{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":3259,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"4867:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3260,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4869:11:9","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":3080,"src":"4867:13:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3262,"indexExpression":{"id":3261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"4881:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4867:20:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3264,"indexExpression":{"id":3263,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"4888:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4867:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3252,"id":3265,"nodeType":"Return","src":"4860:36:9"}]},"documentation":{"id":3244,"nodeType":"StructuredDocumentation","src":"4656:47:9","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":3267,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4717:9:9","nodeType":"FunctionDefinition","parameters":{"id":3249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3246,"mutability":"mutable","name":"owner","nameLocation":"4735:5:9","nodeType":"VariableDeclaration","scope":3267,"src":"4727:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3245,"name":"address","nodeType":"ElementaryTypeName","src":"4727:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3248,"mutability":"mutable","name":"spender","nameLocation":"4750:7:9","nodeType":"VariableDeclaration","scope":3267,"src":"4742:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3247,"name":"address","nodeType":"ElementaryTypeName","src":"4742:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4726:32:9"},"returnParameters":{"id":3252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3267,"src":"4788:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3250,"name":"uint256","nodeType":"ElementaryTypeName","src":"4788:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4787:9:9"},"scope":3663,"src":"4708:195:9","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8643],"body":{"id":3290,"nodeType":"Block","src":"5289:107:9","statements":[{"assignments":[3278],"declarations":[{"constant":false,"id":3278,"mutability":"mutable","name":"owner","nameLocation":"5307:5:9","nodeType":"VariableDeclaration","scope":3290,"src":"5299:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3277,"name":"address","nodeType":"ElementaryTypeName","src":"5299:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3281,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3279,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"5315:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5315:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5299:28:9"},{"expression":{"arguments":[{"id":3283,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"5346:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3284,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3270,"src":"5353:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"5362:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3282,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3546,3614],"referencedDeclaration":3546,"src":"5337:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3287,"nodeType":"ExpressionStatement","src":"5337:31:9"},{"expression":{"hexValue":"74727565","id":3288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5385:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3276,"id":3289,"nodeType":"Return","src":"5378:11:9"}]},"documentation":{"id":3268,"nodeType":"StructuredDocumentation","src":"4909:296:9","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":3291,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5219:7:9","nodeType":"FunctionDefinition","parameters":{"id":3273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3270,"mutability":"mutable","name":"spender","nameLocation":"5235:7:9","nodeType":"VariableDeclaration","scope":3291,"src":"5227:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3269,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3272,"mutability":"mutable","name":"value","nameLocation":"5252:5:9","nodeType":"VariableDeclaration","scope":3291,"src":"5244:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3271,"name":"uint256","nodeType":"ElementaryTypeName","src":"5244:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5226:32:9"},"returnParameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3291,"src":"5283:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3274,"name":"bool","nodeType":"ElementaryTypeName","src":"5283:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5282:6:9"},"scope":3663,"src":"5210:186:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8655],"body":{"id":3322,"nodeType":"Block","src":"6081:151:9","statements":[{"assignments":[3304],"declarations":[{"constant":false,"id":3304,"mutability":"mutable","name":"spender","nameLocation":"6099:7:9","nodeType":"VariableDeclaration","scope":3322,"src":"6091:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3303,"name":"address","nodeType":"ElementaryTypeName","src":"6091:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3307,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3305,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"6109:10:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6109:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6091:30:9"},{"expression":{"arguments":[{"id":3309,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3294,"src":"6147:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3310,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"6153:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3311,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"6162:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3308,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3662,"src":"6131:15:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3313,"nodeType":"ExpressionStatement","src":"6131:37:9"},{"expression":{"arguments":[{"id":3315,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3294,"src":"6188:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3316,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3296,"src":"6194:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3317,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3298,"src":"6198:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3314,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3370,"src":"6178:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6178:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3319,"nodeType":"ExpressionStatement","src":"6178:26:9"},{"expression":{"hexValue":"74727565","id":3320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6221:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3302,"id":3321,"nodeType":"Return","src":"6214:11:9"}]},"documentation":{"id":3292,"nodeType":"StructuredDocumentation","src":"5402:581:9","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":3323,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5997:12:9","nodeType":"FunctionDefinition","parameters":{"id":3299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3294,"mutability":"mutable","name":"from","nameLocation":"6018:4:9","nodeType":"VariableDeclaration","scope":3323,"src":"6010:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3293,"name":"address","nodeType":"ElementaryTypeName","src":"6010:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3296,"mutability":"mutable","name":"to","nameLocation":"6032:2:9","nodeType":"VariableDeclaration","scope":3323,"src":"6024:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3295,"name":"address","nodeType":"ElementaryTypeName","src":"6024:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3298,"mutability":"mutable","name":"value","nameLocation":"6044:5:9","nodeType":"VariableDeclaration","scope":3323,"src":"6036:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3297,"name":"uint256","nodeType":"ElementaryTypeName","src":"6036:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6009:41:9"},"returnParameters":{"id":3302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3323,"src":"6075:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3300,"name":"bool","nodeType":"ElementaryTypeName","src":"6075:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6074:6:9"},"scope":3663,"src":"5988:244:9","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3369,"nodeType":"Block","src":"6674:231:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3333,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3326,"src":"6688:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6704:1:9","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":3335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6696:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3334,"name":"address","nodeType":"ElementaryTypeName","src":"6696:7:9","typeDescriptions":{}}},"id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6696:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6688:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3347,"nodeType":"IfStatement","src":"6684:86:9","trueBody":{"id":3346,"nodeType":"Block","src":"6708:62:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6756:1:9","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":3341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6748:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3340,"name":"address","nodeType":"ElementaryTypeName","src":"6748:7:9","typeDescriptions":{}}},"id":3343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6748:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3339,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"6729:18:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6729:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3345,"nodeType":"RevertStatement","src":"6722:37:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3348,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3328,"src":"6783:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6797:1:9","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":3350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6789:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3349,"name":"address","nodeType":"ElementaryTypeName","src":"6789:7:9","typeDescriptions":{}}},"id":3352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6789:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6783:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3362,"nodeType":"IfStatement","src":"6779:86:9","trueBody":{"id":3361,"nodeType":"Block","src":"6801:64:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6851:1:9","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":3356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6843:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3355,"name":"address","nodeType":"ElementaryTypeName","src":"6843:7:9","typeDescriptions":{}}},"id":3358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6843:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3354,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"6822:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6822:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3360,"nodeType":"RevertStatement","src":"6815:39:9"}]}},{"expression":{"arguments":[{"id":3364,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3326,"src":"6882:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3365,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3328,"src":"6888:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3366,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3330,"src":"6892:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3363,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"6874:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6874:24:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3368,"nodeType":"ExpressionStatement","src":"6874:24:9"}]},"documentation":{"id":3324,"nodeType":"StructuredDocumentation","src":"6238:362:9","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":3370,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6614:9:9","nodeType":"FunctionDefinition","parameters":{"id":3331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3326,"mutability":"mutable","name":"from","nameLocation":"6632:4:9","nodeType":"VariableDeclaration","scope":3370,"src":"6624:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3325,"name":"address","nodeType":"ElementaryTypeName","src":"6624:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3328,"mutability":"mutable","name":"to","nameLocation":"6646:2:9","nodeType":"VariableDeclaration","scope":3370,"src":"6638:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3327,"name":"address","nodeType":"ElementaryTypeName","src":"6638:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3330,"mutability":"mutable","name":"value","nameLocation":"6658:5:9","nodeType":"VariableDeclaration","scope":3370,"src":"6650:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3329,"name":"uint256","nodeType":"ElementaryTypeName","src":"6650:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6623:41:9"},"returnParameters":{"id":3332,"nodeType":"ParameterList","parameters":[],"src":"6674:0:9"},"scope":3663,"src":"6605:300:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3461,"nodeType":"Block","src":"7295:1095:9","statements":[{"assignments":[3382],"declarations":[{"constant":false,"id":3382,"mutability":"mutable","name":"$","nameLocation":"7326:1:9","nodeType":"VariableDeclaration","scope":3461,"src":"7305:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3381,"nodeType":"UserDefinedTypeName","pathNode":{"id":3380,"name":"ERC20Storage","nameLocations":["7305:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"7305:12:9"},"referencedDeclaration":3087,"src":"7305:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3385,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3383,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"7330:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7330:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7305:43:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3386,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"7362:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7378:1:9","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":3388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7370:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3387,"name":"address","nodeType":"ElementaryTypeName","src":"7370:7:9","typeDescriptions":{}}},"id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7370:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7362:18:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3428,"nodeType":"Block","src":"7538:366:9","statements":[{"assignments":[3400],"declarations":[{"constant":false,"id":3400,"mutability":"mutable","name":"fromBalance","nameLocation":"7560:11:9","nodeType":"VariableDeclaration","scope":3428,"src":"7552:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3399,"name":"uint256","nodeType":"ElementaryTypeName","src":"7552:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3405,"initialValue":{"baseExpression":{"expression":{"id":3401,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"7574:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3402,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7576:9:9","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"7574:11:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3404,"indexExpression":{"id":3403,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"7586:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7574:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7552:39:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3406,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"7609:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3407,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"7623:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7609:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3416,"nodeType":"IfStatement","src":"7605:115:9","trueBody":{"id":3415,"nodeType":"Block","src":"7630:90:9","statements":[{"errorCall":{"arguments":[{"id":3410,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"7680:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3411,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"7686:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"7699:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3409,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"7655:24:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":3413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7655:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3414,"nodeType":"RevertStatement","src":"7648:57:9"}]}},{"id":3427,"nodeType":"UncheckedBlock","src":"7733:161:9","statements":[{"expression":{"id":3425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3417,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"7840:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7842:9:9","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"7840:11:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3421,"indexExpression":{"id":3419,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"7852:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7840:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3422,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3400,"src":"7860:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"7874:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7860:19:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7840:39:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3426,"nodeType":"ExpressionStatement","src":"7840:39:9"}]}]},"id":3429,"nodeType":"IfStatement","src":"7358:546:9","trueBody":{"id":3398,"nodeType":"Block","src":"7382:150:9","statements":[{"expression":{"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3392,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"7498:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7500:12:9","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3082,"src":"7498:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"7516:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7498:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3397,"nodeType":"ExpressionStatement","src":"7498:23:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3430,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"7918:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7932:1:9","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":3432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7924:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3431,"name":"address","nodeType":"ElementaryTypeName","src":"7924:7:9","typeDescriptions":{}}},"id":3434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7924:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7918:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3453,"nodeType":"Block","src":"8135:208:9","statements":[{"id":3452,"nodeType":"UncheckedBlock","src":"8149:184:9","statements":[{"expression":{"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":3444,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"8294:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8296:9:9","memberName":"_balances","nodeType":"MemberAccess","referencedDeclaration":3074,"src":"8294:11:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3448,"indexExpression":{"id":3446,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"8306:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8294:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3449,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"8313:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8294:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3451,"nodeType":"ExpressionStatement","src":"8294:24:9"}]}]},"id":3454,"nodeType":"IfStatement","src":"7914:429:9","trueBody":{"id":3443,"nodeType":"Block","src":"7936:193:9","statements":[{"id":3442,"nodeType":"UncheckedBlock","src":"7950:169:9","statements":[{"expression":{"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3436,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3382,"src":"8081:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3438,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8083:12:9","memberName":"_totalSupply","nodeType":"MemberAccess","referencedDeclaration":3082,"src":"8081:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"8099:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8081:23:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3441,"nodeType":"ExpressionStatement","src":"8081:23:9"}]}]}},{"eventCall":{"arguments":[{"id":3456,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3373,"src":"8367:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3457,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3375,"src":"8373:2:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3458,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3377,"src":"8377:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3455,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8590,"src":"8358:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8358:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3460,"nodeType":"EmitStatement","src":"8353:30:9"}]},"documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"6911:304:9","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":3462,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"7229:7:9","nodeType":"FunctionDefinition","parameters":{"id":3378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3373,"mutability":"mutable","name":"from","nameLocation":"7245:4:9","nodeType":"VariableDeclaration","scope":3462,"src":"7237:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3372,"name":"address","nodeType":"ElementaryTypeName","src":"7237:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"to","nameLocation":"7259:2:9","nodeType":"VariableDeclaration","scope":3462,"src":"7251:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3374,"name":"address","nodeType":"ElementaryTypeName","src":"7251:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"value","nameLocation":"7271:5:9","nodeType":"VariableDeclaration","scope":3462,"src":"7263:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"7263:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7236:41:9"},"returnParameters":{"id":3379,"nodeType":"ParameterList","parameters":[],"src":"7295:0:9"},"scope":3663,"src":"7220:1170:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3494,"nodeType":"Block","src":"8789:152:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3470,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"8803:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8822:1:9","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":3472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8814:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3471,"name":"address","nodeType":"ElementaryTypeName","src":"8814:7:9","typeDescriptions":{}}},"id":3474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8814:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8803:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3484,"nodeType":"IfStatement","src":"8799:91:9","trueBody":{"id":3483,"nodeType":"Block","src":"8826:64:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8876:1:9","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":3478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8868:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3477,"name":"address","nodeType":"ElementaryTypeName","src":"8868:7:9","typeDescriptions":{}}},"id":3480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8868:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3476,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"8847:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8847:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3482,"nodeType":"RevertStatement","src":"8840:39:9"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8915:1:9","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":3487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8907:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3486,"name":"address","nodeType":"ElementaryTypeName","src":"8907:7:9","typeDescriptions":{}}},"id":3489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8907:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3490,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3465,"src":"8919:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3491,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3467,"src":"8928:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3485,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"8899:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8899:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3493,"nodeType":"ExpressionStatement","src":"8899:35:9"}]},"documentation":{"id":3463,"nodeType":"StructuredDocumentation","src":"8396:332:9","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":3495,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"8742:5:9","nodeType":"FunctionDefinition","parameters":{"id":3468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3465,"mutability":"mutable","name":"account","nameLocation":"8756:7:9","nodeType":"VariableDeclaration","scope":3495,"src":"8748:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3464,"name":"address","nodeType":"ElementaryTypeName","src":"8748:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3467,"mutability":"mutable","name":"value","nameLocation":"8773:5:9","nodeType":"VariableDeclaration","scope":3495,"src":"8765:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8765:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8747:32:9"},"returnParameters":{"id":3469,"nodeType":"ParameterList","parameters":[],"src":"8789:0:9"},"scope":3663,"src":"8733:208:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3527,"nodeType":"Block","src":"9315:150:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3503,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3498,"src":"9329:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9348:1:9","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":3505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9340:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3504,"name":"address","nodeType":"ElementaryTypeName","src":"9340:7:9","typeDescriptions":{}}},"id":3507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9340:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9329:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3517,"nodeType":"IfStatement","src":"9325:89:9","trueBody":{"id":3516,"nodeType":"Block","src":"9352:62:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9400:1:9","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":3511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9392:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3510,"name":"address","nodeType":"ElementaryTypeName","src":"9392:7:9","typeDescriptions":{}}},"id":3513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3509,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"9373:18:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9373:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3515,"nodeType":"RevertStatement","src":"9366:37:9"}]}},{"expression":{"arguments":[{"id":3519,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3498,"src":"9431:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9448:1:9","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":3521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9440:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3520,"name":"address","nodeType":"ElementaryTypeName","src":"9440:7:9","typeDescriptions":{}}},"id":3523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9440:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3500,"src":"9452:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3518,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3462,"src":"9423:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9423:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3526,"nodeType":"ExpressionStatement","src":"9423:35:9"}]},"documentation":{"id":3496,"nodeType":"StructuredDocumentation","src":"8947:307:9","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":3528,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"9268:5:9","nodeType":"FunctionDefinition","parameters":{"id":3501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3498,"mutability":"mutable","name":"account","nameLocation":"9282:7:9","nodeType":"VariableDeclaration","scope":3528,"src":"9274:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3497,"name":"address","nodeType":"ElementaryTypeName","src":"9274:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3500,"mutability":"mutable","name":"value","nameLocation":"9299:5:9","nodeType":"VariableDeclaration","scope":3528,"src":"9291:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3499,"name":"uint256","nodeType":"ElementaryTypeName","src":"9291:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9273:32:9"},"returnParameters":{"id":3502,"nodeType":"ParameterList","parameters":[],"src":"9315:0:9"},"scope":3663,"src":"9259:206:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3545,"nodeType":"Block","src":"10075:54:9","statements":[{"expression":{"arguments":[{"id":3539,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3531,"src":"10094:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3540,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3533,"src":"10101:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3541,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"10110:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":3542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10117:4:9","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":3538,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3546,3614],"referencedDeclaration":3614,"src":"10085:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":3543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10085:37:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3544,"nodeType":"ExpressionStatement","src":"10085:37:9"}]},"documentation":{"id":3529,"nodeType":"StructuredDocumentation","src":"9471:525:9","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":3546,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10010:8:9","nodeType":"FunctionDefinition","parameters":{"id":3536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3531,"mutability":"mutable","name":"owner","nameLocation":"10027:5:9","nodeType":"VariableDeclaration","scope":3546,"src":"10019:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3530,"name":"address","nodeType":"ElementaryTypeName","src":"10019:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3533,"mutability":"mutable","name":"spender","nameLocation":"10042:7:9","nodeType":"VariableDeclaration","scope":3546,"src":"10034:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3532,"name":"address","nodeType":"ElementaryTypeName","src":"10034:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3535,"mutability":"mutable","name":"value","nameLocation":"10059:5:9","nodeType":"VariableDeclaration","scope":3546,"src":"10051:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3534,"name":"uint256","nodeType":"ElementaryTypeName","src":"10051:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10018:47:9"},"returnParameters":{"id":3537,"nodeType":"ParameterList","parameters":[],"src":"10075:0:9"},"scope":3663,"src":"10001:128:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3613,"nodeType":"Block","src":"11074:389:9","statements":[{"assignments":[3560],"declarations":[{"constant":false,"id":3560,"mutability":"mutable","name":"$","nameLocation":"11105:1:9","nodeType":"VariableDeclaration","scope":3613,"src":"11084:22:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"},"typeName":{"id":3559,"nodeType":"UserDefinedTypeName","pathNode":{"id":3558,"name":"ERC20Storage","nameLocations":["11084:12:9"],"nodeType":"IdentifierPath","referencedDeclaration":3087,"src":"11084:12:9"},"referencedDeclaration":3087,"src":"11084:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage"}},"visibility":"internal"}],"id":3563,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3561,"name":"_getERC20Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3098,"src":"11109:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC20Storage_$3087_storage_ptr_$","typeString":"function () pure returns (struct ERC20Upgradeable.ERC20Storage storage pointer)"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11109:18:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11084:43:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3564,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11141:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11158:1:9","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":3566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11150:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3565,"name":"address","nodeType":"ElementaryTypeName","src":"11150:7:9","typeDescriptions":{}}},"id":3568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11150:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11141:19:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3578,"nodeType":"IfStatement","src":"11137:89:9","trueBody":{"id":3577,"nodeType":"Block","src":"11162:64:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11212:1:9","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":3572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11204:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3571,"name":"address","nodeType":"ElementaryTypeName","src":"11204:7:9","typeDescriptions":{}}},"id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11204:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3570,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"11183:20:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11183:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3576,"nodeType":"RevertStatement","src":"11176:39:9"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3579,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"11239:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11258:1:9","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":3581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11250:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3580,"name":"address","nodeType":"ElementaryTypeName","src":"11250:7:9","typeDescriptions":{}}},"id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11250:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11239:21:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3593,"nodeType":"IfStatement","src":"11235:90:9","trueBody":{"id":3592,"nodeType":"Block","src":"11262:63:9","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11311:1:9","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":3587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11303:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3586,"name":"address","nodeType":"ElementaryTypeName","src":"11303:7:9","typeDescriptions":{}}},"id":3589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11303:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3585,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7589,"src":"11283:19:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11283:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3591,"nodeType":"RevertStatement","src":"11276:38:9"}]}},{"expression":{"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":3594,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3560,"src":"11334:1:9","typeDescriptions":{"typeIdentifier":"t_struct$_ERC20Storage_$3087_storage_ptr","typeString":"struct ERC20Upgradeable.ERC20Storage storage pointer"}},"id":3598,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11336:11:9","memberName":"_allowances","nodeType":"MemberAccess","referencedDeclaration":3080,"src":"11334:13:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3599,"indexExpression":{"id":3596,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11348:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11334:20:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3600,"indexExpression":{"id":3597,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"11355:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11334:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3601,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"11366:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11334:37:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3603,"nodeType":"ExpressionStatement","src":"11334:37:9"},{"condition":{"id":3604,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3555,"src":"11385:9:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3612,"nodeType":"IfStatement","src":"11381:76:9","trueBody":{"id":3611,"nodeType":"Block","src":"11396:61:9","statements":[{"eventCall":{"arguments":[{"id":3606,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3549,"src":"11424:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3607,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"11431:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3553,"src":"11440:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3605,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"11415:8:9","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11415:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3610,"nodeType":"EmitStatement","src":"11410:36:9"}]}}]},"documentation":{"id":3547,"nodeType":"StructuredDocumentation","src":"10135:836:9","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 set 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":3614,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"10985:8:9","nodeType":"FunctionDefinition","parameters":{"id":3556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3549,"mutability":"mutable","name":"owner","nameLocation":"11002:5:9","nodeType":"VariableDeclaration","scope":3614,"src":"10994:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3548,"name":"address","nodeType":"ElementaryTypeName","src":"10994:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3551,"mutability":"mutable","name":"spender","nameLocation":"11017:7:9","nodeType":"VariableDeclaration","scope":3614,"src":"11009:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3550,"name":"address","nodeType":"ElementaryTypeName","src":"11009:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3553,"mutability":"mutable","name":"value","nameLocation":"11034:5:9","nodeType":"VariableDeclaration","scope":3614,"src":"11026:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3552,"name":"uint256","nodeType":"ElementaryTypeName","src":"11026:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3555,"mutability":"mutable","name":"emitEvent","nameLocation":"11046:9:9","nodeType":"VariableDeclaration","scope":3614,"src":"11041:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3554,"name":"bool","nodeType":"ElementaryTypeName","src":"11041:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10993:63:9"},"returnParameters":{"id":3557,"nodeType":"ParameterList","parameters":[],"src":"11074:0:9"},"scope":3663,"src":"10976:487:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3661,"nodeType":"Block","src":"11834:388:9","statements":[{"assignments":[3625],"declarations":[{"constant":false,"id":3625,"mutability":"mutable","name":"currentAllowance","nameLocation":"11852:16:9","nodeType":"VariableDeclaration","scope":3661,"src":"11844:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3624,"name":"uint256","nodeType":"ElementaryTypeName","src":"11844:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3630,"initialValue":{"arguments":[{"id":3627,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"11881:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3628,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"11888:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3626,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3267,"src":"11871:9:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11871:25:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11844:52:9"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3631,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"11910:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":3634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11935:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3633,"name":"uint256","nodeType":"ElementaryTypeName","src":"11935:7:9","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3632,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11930:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11930:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11944:3:9","memberName":"max","nodeType":"MemberAccess","src":"11930:17:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11910:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3660,"nodeType":"IfStatement","src":"11906:310:9","trueBody":{"id":3659,"nodeType":"Block","src":"11949:267:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3638,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"11967:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"11986:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11967:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3648,"nodeType":"IfStatement","src":"11963:130:9","trueBody":{"id":3647,"nodeType":"Block","src":"11993:100:9","statements":[{"errorCall":{"arguments":[{"id":3642,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"12045:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3643,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"12054:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12072:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3641,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"12018:26:9","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":3645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12018:60:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3646,"nodeType":"RevertStatement","src":"12011:67:9"}]}},{"id":3658,"nodeType":"UncheckedBlock","src":"12106:100:9","statements":[{"expression":{"arguments":[{"id":3650,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"12143:5:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3651,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3619,"src":"12150:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3652,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"12159:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3653,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"12178:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12159:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":3655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12185:5:9","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":3649,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[3546,3614],"referencedDeclaration":3614,"src":"12134:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":3656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12134:57:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3657,"nodeType":"ExpressionStatement","src":"12134:57:9"}]}]}}]},"documentation":{"id":3615,"nodeType":"StructuredDocumentation","src":"11469:271:9","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":3662,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"11754:15:9","nodeType":"FunctionDefinition","parameters":{"id":3622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3617,"mutability":"mutable","name":"owner","nameLocation":"11778:5:9","nodeType":"VariableDeclaration","scope":3662,"src":"11770:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3616,"name":"address","nodeType":"ElementaryTypeName","src":"11770:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3619,"mutability":"mutable","name":"spender","nameLocation":"11793:7:9","nodeType":"VariableDeclaration","scope":3662,"src":"11785:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3618,"name":"address","nodeType":"ElementaryTypeName","src":"11785:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"value","nameLocation":"11810:5:9","nodeType":"VariableDeclaration","scope":3662,"src":"11802:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3620,"name":"uint256","nodeType":"ElementaryTypeName","src":"11802:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11769:47:9"},"returnParameters":{"id":3623,"nodeType":"ParameterList","parameters":[],"src":"11834:0:9"},"scope":3663,"src":"11745:477:9","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3664,"src":"1281:10943:9","usedErrors":[2627,2630,7560,7565,7570,7579,7584,7589],"usedEvents":[2635,8590,8599]}],"src":"105:12120:9"},"id":9},"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol","exportedSymbols":{"ERC20Upgradeable":[3663],"ERC4626Upgradeable":[4427],"IERC20":[8656],"IERC20Metadata":[8682],"IERC4626":[7538],"Initializable":[2864],"Math":[11309],"SafeERC20":[9093]},"id":4428,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3665,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"118:24:10"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":3667,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":8657,"src":"144:70:10","symbolAliases":[{"foreign":{"id":3666,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"152:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":3669,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":8683,"src":"215:97:10","symbolAliases":[{"foreign":{"id":3668,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"223:14:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","file":"../ERC20Upgradeable.sol","id":3671,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":3664,"src":"313:57:10","symbolAliases":[{"foreign":{"id":3670,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3663,"src":"321:16:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":3673,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":9094,"src":"371:82:10","symbolAliases":[{"foreign":{"id":3672,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"379:9:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":3675,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":7539,"src":"454:73:10","symbolAliases":[{"foreign":{"id":3674,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"462:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":3677,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":11310,"src":"528:65:10","symbolAliases":[{"foreign":{"id":3676,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"536:4:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../../proxy/utils/Initializable.sol","id":3679,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4428,"sourceUnit":2865,"src":"594:69:10","symbolAliases":[{"foreign":{"id":3678,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"602:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3681,"name":"Initializable","nameLocations":["3609:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"3609:13:10"},"id":3682,"nodeType":"InheritanceSpecifier","src":"3609:13:10"},{"baseName":{"id":3683,"name":"ERC20Upgradeable","nameLocations":["3624:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":3663,"src":"3624:16:10"},"id":3684,"nodeType":"InheritanceSpecifier","src":"3624:16:10"},{"baseName":{"id":3685,"name":"IERC4626","nameLocations":["3642:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":7538,"src":"3642:8:10"},"id":3686,"nodeType":"InheritanceSpecifier","src":"3642:8:10"}],"canonicalName":"ERC4626Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3680,"nodeType":"StructuredDocumentation","src":"665:2903:10","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: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 ===="},"fullyImplemented":true,"id":4427,"linearizedBaseContracts":[4427,7538,3663,7590,8682,8656,4473,2864],"name":"ERC4626Upgradeable","nameLocation":"3587:18:10","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3689,"libraryName":{"id":3687,"name":"Math","nameLocations":["3663:4:10"],"nodeType":"IdentifierPath","referencedDeclaration":11309,"src":"3663:4:10"},"nodeType":"UsingForDirective","src":"3657:23:10","typeName":{"id":3688,"name":"uint256","nodeType":"ElementaryTypeName","src":"3672:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"ERC4626Upgradeable.ERC4626Storage","documentation":{"id":3690,"nodeType":"StructuredDocumentation","src":"3686:65:10","text":"@custom:storage-location erc7201:openzeppelin.storage.ERC4626"},"id":3696,"members":[{"constant":false,"id":3693,"mutability":"mutable","name":"_asset","nameLocation":"3795:6:10","nodeType":"VariableDeclaration","scope":3696,"src":"3788:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":3692,"nodeType":"UserDefinedTypeName","pathNode":{"id":3691,"name":"IERC20","nameLocations":["3788:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"3788:6:10"},"referencedDeclaration":8656,"src":"3788:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3695,"mutability":"mutable","name":"_underlyingDecimals","nameLocation":"3817:19:10","nodeType":"VariableDeclaration","scope":3696,"src":"3811:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3694,"name":"uint8","nodeType":"ElementaryTypeName","src":"3811:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ERC4626Storage","nameLocation":"3763:14:10","nodeType":"StructDefinition","scope":4427,"src":"3756:87:10","visibility":"public"},{"constant":true,"id":3699,"mutability":"constant","name":"ERC4626StorageLocation","nameLocation":"3985:22:10","nodeType":"VariableDeclaration","scope":4427,"src":"3960:116:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3960:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830373733653533326466656465393166303462313261373364336432616364333631343234663431663736623466623739663039303136316533366234653030","id":3698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4010:66:10","typeDescriptions":{"typeIdentifier":"t_rational_3370959224025639111533709689598502374825270023453997444744848480697785732608_by_1","typeString":"int_const 3370...(68 digits omitted)...2608"},"value":"0x0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00"},"visibility":"private"},{"body":{"id":3706,"nodeType":"Block","src":"4161:81:10","statements":[{"AST":{"nativeSrc":"4180:56:10","nodeType":"YulBlock","src":"4180:56:10","statements":[{"nativeSrc":"4194:32:10","nodeType":"YulAssignment","src":"4194:32:10","value":{"name":"ERC4626StorageLocation","nativeSrc":"4204:22:10","nodeType":"YulIdentifier","src":"4204:22:10"},"variableNames":[{"name":"$.slot","nativeSrc":"4194:6:10","nodeType":"YulIdentifier","src":"4194:6:10"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":3703,"isOffset":false,"isSlot":true,"src":"4194:6:10","suffix":"slot","valueSize":1},{"declaration":3699,"isOffset":false,"isSlot":false,"src":"4204:22:10","valueSize":1}],"id":3705,"nodeType":"InlineAssembly","src":"4171:65:10"}]},"id":3707,"implemented":true,"kind":"function","modifiers":[],"name":"_getERC4626Storage","nameLocation":"4092:18:10","nodeType":"FunctionDefinition","parameters":{"id":3700,"nodeType":"ParameterList","parameters":[],"src":"4110:2:10"},"returnParameters":{"id":3704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3703,"mutability":"mutable","name":"$","nameLocation":"4158:1:10","nodeType":"VariableDeclaration","scope":3707,"src":"4135:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3702,"nodeType":"UserDefinedTypeName","pathNode":{"id":3701,"name":"ERC4626Storage","nameLocations":["4135:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"4135:14:10"},"referencedDeclaration":3696,"src":"4135:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"src":"4134:26:10"},"scope":4427,"src":"4083:159:10","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":3708,"nodeType":"StructuredDocumentation","src":"4248:92:10","text":" @dev Attempted to deposit more assets than the max amount for `receiver`."},"errorSelector":"79012fb2","id":3716,"name":"ERC4626ExceededMaxDeposit","nameLocation":"4351:25:10","nodeType":"ErrorDefinition","parameters":{"id":3715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3710,"mutability":"mutable","name":"receiver","nameLocation":"4385:8:10","nodeType":"VariableDeclaration","scope":3716,"src":"4377:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3709,"name":"address","nodeType":"ElementaryTypeName","src":"4377:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3712,"mutability":"mutable","name":"assets","nameLocation":"4403:6:10","nodeType":"VariableDeclaration","scope":3716,"src":"4395:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3711,"name":"uint256","nodeType":"ElementaryTypeName","src":"4395:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3714,"mutability":"mutable","name":"max","nameLocation":"4419:3:10","nodeType":"VariableDeclaration","scope":3716,"src":"4411:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3713,"name":"uint256","nodeType":"ElementaryTypeName","src":"4411:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4376:47:10"},"src":"4345:79:10"},{"documentation":{"id":3717,"nodeType":"StructuredDocumentation","src":"4430:89:10","text":" @dev Attempted to mint more shares than the max amount for `receiver`."},"errorSelector":"284ff667","id":3725,"name":"ERC4626ExceededMaxMint","nameLocation":"4530:22:10","nodeType":"ErrorDefinition","parameters":{"id":3724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3719,"mutability":"mutable","name":"receiver","nameLocation":"4561:8:10","nodeType":"VariableDeclaration","scope":3725,"src":"4553:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3718,"name":"address","nodeType":"ElementaryTypeName","src":"4553:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3721,"mutability":"mutable","name":"shares","nameLocation":"4579:6:10","nodeType":"VariableDeclaration","scope":3725,"src":"4571:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3720,"name":"uint256","nodeType":"ElementaryTypeName","src":"4571:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3723,"mutability":"mutable","name":"max","nameLocation":"4595:3:10","nodeType":"VariableDeclaration","scope":3725,"src":"4587:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3722,"name":"uint256","nodeType":"ElementaryTypeName","src":"4587:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4552:47:10"},"src":"4524:76:10"},{"documentation":{"id":3726,"nodeType":"StructuredDocumentation","src":"4606:93:10","text":" @dev Attempted to withdraw more assets than the max amount for `receiver`."},"errorSelector":"fe9cceec","id":3734,"name":"ERC4626ExceededMaxWithdraw","nameLocation":"4710:26:10","nodeType":"ErrorDefinition","parameters":{"id":3733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3728,"mutability":"mutable","name":"owner","nameLocation":"4745:5:10","nodeType":"VariableDeclaration","scope":3734,"src":"4737:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3727,"name":"address","nodeType":"ElementaryTypeName","src":"4737:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3730,"mutability":"mutable","name":"assets","nameLocation":"4760:6:10","nodeType":"VariableDeclaration","scope":3734,"src":"4752:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3729,"name":"uint256","nodeType":"ElementaryTypeName","src":"4752:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3732,"mutability":"mutable","name":"max","nameLocation":"4776:3:10","nodeType":"VariableDeclaration","scope":3734,"src":"4768:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3731,"name":"uint256","nodeType":"ElementaryTypeName","src":"4768:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4736:44:10"},"src":"4704:77:10"},{"documentation":{"id":3735,"nodeType":"StructuredDocumentation","src":"4787:91:10","text":" @dev Attempted to redeem more shares than the max amount for `receiver`."},"errorSelector":"b94abeec","id":3743,"name":"ERC4626ExceededMaxRedeem","nameLocation":"4889:24:10","nodeType":"ErrorDefinition","parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3737,"mutability":"mutable","name":"owner","nameLocation":"4922:5:10","nodeType":"VariableDeclaration","scope":3743,"src":"4914:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3736,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3739,"mutability":"mutable","name":"shares","nameLocation":"4937:6:10","nodeType":"VariableDeclaration","scope":3743,"src":"4929:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3738,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"max","nameLocation":"4953:3:10","nodeType":"VariableDeclaration","scope":3743,"src":"4945:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3740,"name":"uint256","nodeType":"ElementaryTypeName","src":"4945:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4913:44:10"},"src":"4883:75:10"},{"body":{"id":3756,"nodeType":"Block","src":"5155:49:10","statements":[{"expression":{"arguments":[{"id":3753,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"5190:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":3752,"name":"__ERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"5165:24:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (contract IERC20)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5165:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3755,"nodeType":"ExpressionStatement","src":"5165:32:10"}]},"documentation":{"id":3744,"nodeType":"StructuredDocumentation","src":"4964:121:10","text":" @dev Set the underlying asset contract. This must be an ERC20-compatible contract (ERC-20 or ERC-777)."},"id":3757,"implemented":true,"kind":"function","modifiers":[{"id":3750,"kind":"modifierInvocation","modifierName":{"id":3749,"name":"onlyInitializing","nameLocations":["5138:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"5138:16:10"},"nodeType":"ModifierInvocation","src":"5138:16:10"}],"name":"__ERC4626_init","nameLocation":"5099:14:10","nodeType":"FunctionDefinition","parameters":{"id":3748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3747,"mutability":"mutable","name":"asset_","nameLocation":"5121:6:10","nodeType":"VariableDeclaration","scope":3757,"src":"5114:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":3746,"nodeType":"UserDefinedTypeName","pathNode":{"id":3745,"name":"IERC20","nameLocations":["5114:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"5114:6:10"},"referencedDeclaration":8656,"src":"5114:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5113:15:10"},"returnParameters":{"id":3751,"nodeType":"ParameterList","parameters":[],"src":"5155:0:10"},"scope":4427,"src":"5090:114:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3794,"nodeType":"Block","src":"5285:229:10","statements":[{"assignments":[3767],"declarations":[{"constant":false,"id":3767,"mutability":"mutable","name":"$","nameLocation":"5318:1:10","nodeType":"VariableDeclaration","scope":3794,"src":"5295:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3766,"nodeType":"UserDefinedTypeName","pathNode":{"id":3765,"name":"ERC4626Storage","nameLocations":["5295:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"5295:14:10"},"referencedDeclaration":3696,"src":"5295:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3770,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3768,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"5322:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5295:47:10"},{"assignments":[3772,3774],"declarations":[{"constant":false,"id":3772,"mutability":"mutable","name":"success","nameLocation":"5358:7:10","nodeType":"VariableDeclaration","scope":3794,"src":"5353:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3771,"name":"bool","nodeType":"ElementaryTypeName","src":"5353:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3774,"mutability":"mutable","name":"assetDecimals","nameLocation":"5373:13:10","nodeType":"VariableDeclaration","scope":3794,"src":"5367:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3773,"name":"uint8","nodeType":"ElementaryTypeName","src":"5367:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3778,"initialValue":{"arguments":[{"id":3776,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3760,"src":"5411:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":3775,"name":"_tryGetAssetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"5390:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$8656_$returns$_t_bool_$_t_uint8_$","typeString":"function (contract IERC20) view returns (bool,uint8)"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5390:28:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"5352:66:10"},{"expression":{"id":3786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3779,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"5428:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5430:19:10","memberName":"_underlyingDecimals","nodeType":"MemberAccess","referencedDeclaration":3695,"src":"5428:21:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":3782,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3772,"src":"5452:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"3138","id":3784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5478:2:10","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"id":3785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5452:28:10","trueExpression":{"id":3783,"name":"assetDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3774,"src":"5462:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5428:52:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3787,"nodeType":"ExpressionStatement","src":"5428:52:10"},{"expression":{"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3788,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"5490:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5492:6:10","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3693,"src":"5490:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3791,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3760,"src":"5501:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"src":"5490:17:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":3793,"nodeType":"ExpressionStatement","src":"5490:17:10"}]},"id":3795,"implemented":true,"kind":"function","modifiers":[{"id":3763,"kind":"modifierInvocation","modifierName":{"id":3762,"name":"onlyInitializing","nameLocations":["5268:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"5268:16:10"},"nodeType":"ModifierInvocation","src":"5268:16:10"}],"name":"__ERC4626_init_unchained","nameLocation":"5219:24:10","nodeType":"FunctionDefinition","parameters":{"id":3761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3760,"mutability":"mutable","name":"asset_","nameLocation":"5251:6:10","nodeType":"VariableDeclaration","scope":3795,"src":"5244:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":3759,"nodeType":"UserDefinedTypeName","pathNode":{"id":3758,"name":"IERC20","nameLocations":["5244:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"5244:6:10"},"referencedDeclaration":8656,"src":"5244:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5243:15:10"},"returnParameters":{"id":3764,"nodeType":"ParameterList","parameters":[],"src":"5285:0:10"},"scope":4427,"src":"5210:304:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3861,"nodeType":"Block","src":"5754:453:10","statements":[{"assignments":[3807,3809],"declarations":[{"constant":false,"id":3807,"mutability":"mutable","name":"success","nameLocation":"5770:7:10","nodeType":"VariableDeclaration","scope":3861,"src":"5765:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3806,"name":"bool","nodeType":"ElementaryTypeName","src":"5765:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3809,"mutability":"mutable","name":"encodedDecimals","nameLocation":"5792:15:10","nodeType":"VariableDeclaration","scope":3861,"src":"5779:28:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3808,"name":"bytes","nodeType":"ElementaryTypeName","src":"5779:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3822,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":3817,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"5866:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5881:8:10","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"5866:23:10","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_uint8_$","typeString":"function IERC20Metadata.decimals() view returns (uint8)"}},{"components":[],"id":3819,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5891:2:10","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":3815,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5851:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5855:10:10","memberName":"encodeCall","nodeType":"MemberAccess","src":"5851:14:10","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5851:43:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3812,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3799,"src":"5819:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":3811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5811:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3810,"name":"address","nodeType":"ElementaryTypeName","src":"5811:7:10","typeDescriptions":{}}},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5811:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5827:10:10","memberName":"staticcall","nodeType":"MemberAccess","src":"5811:26:10","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":3821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5811:93:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5764:140:10"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3823,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"5918:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3824,"name":"encodedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"5929:15:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5945:6:10","memberName":"length","nodeType":"MemberAccess","src":"5929:22:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":3826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5955:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5929:28:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5918:39:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3856,"nodeType":"IfStatement","src":"5914:260:10","trueBody":{"id":3855,"nodeType":"Block","src":"5959:215:10","statements":[{"assignments":[3830],"declarations":[{"constant":false,"id":3830,"mutability":"mutable","name":"returnedDecimals","nameLocation":"5981:16:10","nodeType":"VariableDeclaration","scope":3855,"src":"5973:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5973:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3838,"initialValue":{"arguments":[{"id":3833,"name":"encodedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"6011:15:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":3835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6029:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3834,"name":"uint256","nodeType":"ElementaryTypeName","src":"6029:7:10","typeDescriptions":{}}}],"id":3836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6028:9:10","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":3831,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6000:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6004:6:10","memberName":"decode","nodeType":"MemberAccess","src":"6000:10:10","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6000:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5973:65:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3839,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"6056:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":3842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6081:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3841,"name":"uint8","nodeType":"ElementaryTypeName","src":"6081:5:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":3840,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6076:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6076:11:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":3844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6088:3:10","memberName":"max","nodeType":"MemberAccess","src":"6076:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6056:35:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3854,"nodeType":"IfStatement","src":"6052:112:10","trueBody":{"id":3853,"nodeType":"Block","src":"6093:71:10","statements":[{"expression":{"components":[{"hexValue":"74727565","id":3846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6119:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"id":3849,"name":"returnedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"6131:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6125:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":3847,"name":"uint8","nodeType":"ElementaryTypeName","src":"6125:5:10","typeDescriptions":{}}},"id":3850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6125:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":3851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6118:31:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint8_$","typeString":"tuple(bool,uint8)"}},"functionReturnParameters":3805,"id":3852,"nodeType":"Return","src":"6111:38:10"}]}}]}},{"expression":{"components":[{"hexValue":"66616c7365","id":3857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6191:5:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":3858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6198:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":3859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6190:10:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":3805,"id":3860,"nodeType":"Return","src":"6183:17:10"}]},"documentation":{"id":3796,"nodeType":"StructuredDocumentation","src":"5520:132:10","text":" @dev Attempts to fetch the asset decimals. A return value of false indicates that the attempt failed in some way."},"id":3862,"implemented":true,"kind":"function","modifiers":[],"name":"_tryGetAssetDecimals","nameLocation":"5666:20:10","nodeType":"FunctionDefinition","parameters":{"id":3800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3799,"mutability":"mutable","name":"asset_","nameLocation":"5694:6:10","nodeType":"VariableDeclaration","scope":3862,"src":"5687:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":3798,"nodeType":"UserDefinedTypeName","pathNode":{"id":3797,"name":"IERC20","nameLocations":["5687:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"5687:6:10"},"referencedDeclaration":8656,"src":"5687:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5686:15:10"},"returnParameters":{"id":3805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3802,"mutability":"mutable","name":"ok","nameLocation":"5729:2:10","nodeType":"VariableDeclaration","scope":3862,"src":"5724:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3801,"name":"bool","nodeType":"ElementaryTypeName","src":"5724:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3804,"mutability":"mutable","name":"assetDecimals","nameLocation":"5739:13:10","nodeType":"VariableDeclaration","scope":3862,"src":"5733:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3803,"name":"uint8","nodeType":"ElementaryTypeName","src":"5733:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5723:30:10"},"scope":4427,"src":"5657:550:10","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[3183,8681],"body":{"id":3883,"nodeType":"Block","src":"6711:122:10","statements":[{"assignments":[3873],"declarations":[{"constant":false,"id":3873,"mutability":"mutable","name":"$","nameLocation":"6744:1:10","nodeType":"VariableDeclaration","scope":3883,"src":"6721:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3872,"nodeType":"UserDefinedTypeName","pathNode":{"id":3871,"name":"ERC4626Storage","nameLocations":["6721:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"6721:14:10"},"referencedDeclaration":3696,"src":"6721:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3876,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3874,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"6748:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6748:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6721:47:10"},{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3877,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"6785:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6787:19:10","memberName":"_underlyingDecimals","nodeType":"MemberAccess","referencedDeclaration":3695,"src":"6785:21:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3879,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"6809:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6785:41:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3870,"id":3882,"nodeType":"Return","src":"6778:48:10"}]},"documentation":{"id":3863,"nodeType":"StructuredDocumentation","src":"6213:394:10","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":3884,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"6621:8:10","nodeType":"FunctionDefinition","overrides":{"id":3867,"nodeType":"OverrideSpecifier","overrides":[{"id":3865,"name":"IERC20Metadata","nameLocations":["6661:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"6661:14:10"},{"id":3866,"name":"ERC20Upgradeable","nameLocations":["6677:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":3663,"src":"6677:16:10"}],"src":"6652:42:10"},"parameters":{"id":3864,"nodeType":"ParameterList","parameters":[],"src":"6629:2:10"},"returnParameters":{"id":3870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3884,"src":"6704:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3868,"name":"uint8","nodeType":"ElementaryTypeName","src":"6704:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6703:7:10"},"scope":4427,"src":"6612:221:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7407],"body":{"id":3902,"nodeType":"Block","src":"6932:98:10","statements":[{"assignments":[3892],"declarations":[{"constant":false,"id":3892,"mutability":"mutable","name":"$","nameLocation":"6965:1:10","nodeType":"VariableDeclaration","scope":3902,"src":"6942:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3891,"nodeType":"UserDefinedTypeName","pathNode":{"id":3890,"name":"ERC4626Storage","nameLocations":["6942:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"6942:14:10"},"referencedDeclaration":3696,"src":"6942:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3895,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3893,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"6969:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6969:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6942:47:10"},{"expression":{"arguments":[{"expression":{"id":3898,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3892,"src":"7014:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7016:6:10","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3693,"src":"7014:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":3897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7006:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3896,"name":"address","nodeType":"ElementaryTypeName","src":"7006:7:10","typeDescriptions":{}}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7006:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3889,"id":3901,"nodeType":"Return","src":"6999:24:10"}]},"documentation":{"id":3885,"nodeType":"StructuredDocumentation","src":"6839:33:10","text":"@dev See {IERC4626-asset}. "},"functionSelector":"38d52e0f","id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"6886:5:10","nodeType":"FunctionDefinition","parameters":{"id":3886,"nodeType":"ParameterList","parameters":[],"src":"6891:2:10"},"returnParameters":{"id":3889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3903,"src":"6923:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3887,"name":"address","nodeType":"ElementaryTypeName","src":"6923:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6922:9:10"},"scope":4427,"src":"6877:153:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7413],"body":{"id":3924,"nodeType":"Block","src":"7141:114:10","statements":[{"assignments":[3911],"declarations":[{"constant":false,"id":3911,"mutability":"mutable","name":"$","nameLocation":"7174:1:10","nodeType":"VariableDeclaration","scope":3924,"src":"7151:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":3910,"nodeType":"UserDefinedTypeName","pathNode":{"id":3909,"name":"ERC4626Storage","nameLocations":["7151:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"7151:14:10"},"referencedDeclaration":3696,"src":"7151:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":3914,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":3912,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"7178:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7178:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7151:47:10"},{"expression":{"arguments":[{"arguments":[{"id":3920,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7242:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4427","typeString":"contract ERC4626Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4427","typeString":"contract ERC4626Upgradeable"}],"id":3919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7234:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3918,"name":"address","nodeType":"ElementaryTypeName","src":"7234:7:10","typeDescriptions":{}}},"id":3921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7234:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":3915,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3911,"src":"7215:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":3916,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7217:6:10","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3693,"src":"7215:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7224:9:10","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"7215:18:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7215:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3908,"id":3923,"nodeType":"Return","src":"7208:40:10"}]},"documentation":{"id":3904,"nodeType":"StructuredDocumentation","src":"7036:39:10","text":"@dev See {IERC4626-totalAssets}. "},"functionSelector":"01e1d114","id":3925,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"7089:11:10","nodeType":"FunctionDefinition","parameters":{"id":3905,"nodeType":"ParameterList","parameters":[],"src":"7100:2:10"},"returnParameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3925,"src":"7132:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"7132:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7131:9:10"},"scope":4427,"src":"7080:175:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7421],"body":{"id":3940,"nodeType":"Block","src":"7388:69:10","statements":[{"expression":{"arguments":[{"id":3934,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"7422:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":3935,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"7430:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":3936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7435:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"7430:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7444:5:10","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"7430:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":3933,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"7405:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7405:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3932,"id":3939,"nodeType":"Return","src":"7398:52:10"}]},"documentation":{"id":3926,"nodeType":"StructuredDocumentation","src":"7261:43:10","text":"@dev See {IERC4626-convertToShares}. "},"functionSelector":"c6e6f592","id":3941,"implemented":true,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"7318:15:10","nodeType":"FunctionDefinition","parameters":{"id":3929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"assets","nameLocation":"7342:6:10","nodeType":"VariableDeclaration","scope":3941,"src":"7334:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3927,"name":"uint256","nodeType":"ElementaryTypeName","src":"7334:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7333:16:10"},"returnParameters":{"id":3932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3941,"src":"7379:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3930,"name":"uint256","nodeType":"ElementaryTypeName","src":"7379:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7378:9:10"},"scope":4427,"src":"7309:148:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7429],"body":{"id":3956,"nodeType":"Block","src":"7590:69:10","statements":[{"expression":{"arguments":[{"id":3950,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7624:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":3951,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"7632:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7637:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"7632:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":3953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7646:5:10","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"7632:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":3949,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"7607:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7607:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3948,"id":3955,"nodeType":"Return","src":"7600:52:10"}]},"documentation":{"id":3942,"nodeType":"StructuredDocumentation","src":"7463:43:10","text":"@dev See {IERC4626-convertToAssets}. "},"functionSelector":"07a2d13a","id":3957,"implemented":true,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"7520:15:10","nodeType":"FunctionDefinition","parameters":{"id":3945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3944,"mutability":"mutable","name":"shares","nameLocation":"7544:6:10","nodeType":"VariableDeclaration","scope":3957,"src":"7536:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3943,"name":"uint256","nodeType":"ElementaryTypeName","src":"7536:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7535:16:10"},"returnParameters":{"id":3948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3957,"src":"7581:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3946,"name":"uint256","nodeType":"ElementaryTypeName","src":"7581:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7580:9:10"},"scope":4427,"src":"7511:148:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7437],"body":{"id":3971,"nodeType":"Block","src":"7775:41:10","statements":[{"expression":{"expression":{"arguments":[{"id":3967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7797:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3966,"name":"uint256","nodeType":"ElementaryTypeName","src":"7797:7:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3965,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7792:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7792:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7806:3:10","memberName":"max","nodeType":"MemberAccess","src":"7792:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3964,"id":3970,"nodeType":"Return","src":"7785:24:10"}]},"documentation":{"id":3958,"nodeType":"StructuredDocumentation","src":"7665:38:10","text":"@dev See {IERC4626-maxDeposit}. "},"functionSelector":"402d267d","id":3972,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"7717:10:10","nodeType":"FunctionDefinition","parameters":{"id":3961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3960,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3972,"src":"7728:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3959,"name":"address","nodeType":"ElementaryTypeName","src":"7728:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7727:9:10"},"returnParameters":{"id":3964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3972,"src":"7766:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3962,"name":"uint256","nodeType":"ElementaryTypeName","src":"7766:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7765:9:10"},"scope":4427,"src":"7708:108:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7463],"body":{"id":3986,"nodeType":"Block","src":"7926:41:10","statements":[{"expression":{"expression":{"arguments":[{"id":3982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7948:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3981,"name":"uint256","nodeType":"ElementaryTypeName","src":"7948:7:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3980,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7943:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7943:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7957:3:10","memberName":"max","nodeType":"MemberAccess","src":"7943:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3979,"id":3985,"nodeType":"Return","src":"7936:24:10"}]},"documentation":{"id":3973,"nodeType":"StructuredDocumentation","src":"7822:35:10","text":"@dev See {IERC4626-maxMint}. "},"functionSelector":"c63d75b6","id":3987,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"7871:7:10","nodeType":"FunctionDefinition","parameters":{"id":3976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3987,"src":"7879:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3974,"name":"address","nodeType":"ElementaryTypeName","src":"7879:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7878:9:10"},"returnParameters":{"id":3979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3987,"src":"7917:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3977,"name":"uint256","nodeType":"ElementaryTypeName","src":"7917:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7916:9:10"},"scope":4427,"src":"7862:105:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7489],"body":{"id":4004,"nodeType":"Block","src":"8091:79:10","statements":[{"expression":{"arguments":[{"arguments":[{"id":3997,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3990,"src":"8135:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3996,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"8125:9:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":3998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8125:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":3999,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"8143:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":4000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8148:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"8143:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":4001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8157:5:10","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"8143:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":3995,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"8108:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8108:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3994,"id":4003,"nodeType":"Return","src":"8101:62:10"}]},"documentation":{"id":3988,"nodeType":"StructuredDocumentation","src":"7973:39:10","text":"@dev See {IERC4626-maxWithdraw}. "},"functionSelector":"ce96cb77","id":4005,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"8026:11:10","nodeType":"FunctionDefinition","parameters":{"id":3991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3990,"mutability":"mutable","name":"owner","nameLocation":"8046:5:10","nodeType":"VariableDeclaration","scope":4005,"src":"8038:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3989,"name":"address","nodeType":"ElementaryTypeName","src":"8038:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8037:15:10"},"returnParameters":{"id":3994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4005,"src":"8082:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3992,"name":"uint256","nodeType":"ElementaryTypeName","src":"8082:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8081:9:10"},"scope":4427,"src":"8017:153:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7517],"body":{"id":4017,"nodeType":"Block","src":"8290:40:10","statements":[{"expression":{"arguments":[{"id":4014,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"8317:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4013,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"8307:9:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8307:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4012,"id":4016,"nodeType":"Return","src":"8300:23:10"}]},"documentation":{"id":4006,"nodeType":"StructuredDocumentation","src":"8176:37:10","text":"@dev See {IERC4626-maxRedeem}. "},"functionSelector":"d905777e","id":4018,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"8227:9:10","nodeType":"FunctionDefinition","parameters":{"id":4009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4008,"mutability":"mutable","name":"owner","nameLocation":"8245:5:10","nodeType":"VariableDeclaration","scope":4018,"src":"8237:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4007,"name":"address","nodeType":"ElementaryTypeName","src":"8237:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8236:15:10"},"returnParameters":{"id":4012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4018,"src":"8281:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4010,"name":"uint256","nodeType":"ElementaryTypeName","src":"8281:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8280:9:10"},"scope":4427,"src":"8218:112:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7445],"body":{"id":4033,"nodeType":"Block","src":"8461:69:10","statements":[{"expression":{"arguments":[{"id":4027,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4021,"src":"8495:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4028,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"8503:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8508:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"8503:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":4030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8517:5:10","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"8503:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":4026,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"8478:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8478:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4025,"id":4032,"nodeType":"Return","src":"8471:52:10"}]},"documentation":{"id":4019,"nodeType":"StructuredDocumentation","src":"8336:42:10","text":"@dev See {IERC4626-previewDeposit}. "},"functionSelector":"ef8b30f7","id":4034,"implemented":true,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"8392:14:10","nodeType":"FunctionDefinition","parameters":{"id":4022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4021,"mutability":"mutable","name":"assets","nameLocation":"8415:6:10","nodeType":"VariableDeclaration","scope":4034,"src":"8407:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4020,"name":"uint256","nodeType":"ElementaryTypeName","src":"8407:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8406:16:10"},"returnParameters":{"id":4025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4024,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4034,"src":"8452:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4023,"name":"uint256","nodeType":"ElementaryTypeName","src":"8452:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8451:9:10"},"scope":4427,"src":"8383:147:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7471],"body":{"id":4049,"nodeType":"Block","src":"8655:68:10","statements":[{"expression":{"arguments":[{"id":4043,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4037,"src":"8689:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4044,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"8697:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8702:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"8697:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":4046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8711:4:10","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":9712,"src":"8697:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":4042,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"8672:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8672:44:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4041,"id":4048,"nodeType":"Return","src":"8665:51:10"}]},"documentation":{"id":4035,"nodeType":"StructuredDocumentation","src":"8536:39:10","text":"@dev See {IERC4626-previewMint}. "},"functionSelector":"b3d7f6b9","id":4050,"implemented":true,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"8589:11:10","nodeType":"FunctionDefinition","parameters":{"id":4038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"shares","nameLocation":"8609:6:10","nodeType":"VariableDeclaration","scope":4050,"src":"8601:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4036,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8600:16:10"},"returnParameters":{"id":4041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4040,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4050,"src":"8646:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4039,"name":"uint256","nodeType":"ElementaryTypeName","src":"8646:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8645:9:10"},"scope":4427,"src":"8580:143:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7497],"body":{"id":4065,"nodeType":"Block","src":"8856:68:10","statements":[{"expression":{"arguments":[{"id":4059,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4053,"src":"8890:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4060,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"8898:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":4061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8903:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"8898:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8912:4:10","memberName":"Ceil","nodeType":"MemberAccess","referencedDeclaration":9712,"src":"8898:18:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":4058,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"8873:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8873:44:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4057,"id":4064,"nodeType":"Return","src":"8866:51:10"}]},"documentation":{"id":4051,"nodeType":"StructuredDocumentation","src":"8729:43:10","text":"@dev See {IERC4626-previewWithdraw}. "},"functionSelector":"0a28a477","id":4066,"implemented":true,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"8786:15:10","nodeType":"FunctionDefinition","parameters":{"id":4054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4053,"mutability":"mutable","name":"assets","nameLocation":"8810:6:10","nodeType":"VariableDeclaration","scope":4066,"src":"8802:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4052,"name":"uint256","nodeType":"ElementaryTypeName","src":"8802:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8801:16:10"},"returnParameters":{"id":4057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4066,"src":"8847:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4055,"name":"uint256","nodeType":"ElementaryTypeName","src":"8847:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8846:9:10"},"scope":4427,"src":"8777:147:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7525],"body":{"id":4081,"nodeType":"Block","src":"9053:69:10","statements":[{"expression":{"arguments":[{"id":4075,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4069,"src":"9087:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":4076,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"9095:4:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9100:8:10","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"9095:13:10","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":4078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9109:5:10","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"9095:19:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":4074,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"9070:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9070:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4073,"id":4080,"nodeType":"Return","src":"9063:52:10"}]},"documentation":{"id":4067,"nodeType":"StructuredDocumentation","src":"8930:41:10","text":"@dev See {IERC4626-previewRedeem}. "},"functionSelector":"4cdad506","id":4082,"implemented":true,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"8985:13:10","nodeType":"FunctionDefinition","parameters":{"id":4070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4069,"mutability":"mutable","name":"shares","nameLocation":"9007:6:10","nodeType":"VariableDeclaration","scope":4082,"src":"8999:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4068,"name":"uint256","nodeType":"ElementaryTypeName","src":"8999:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8998:16:10"},"returnParameters":{"id":4073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"9044:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4071,"name":"uint256","nodeType":"ElementaryTypeName","src":"9044:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9043:9:10"},"scope":4427,"src":"8976:146:10","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7455],"body":{"id":4125,"nodeType":"Block","src":"9252:308:10","statements":[{"assignments":[4093],"declarations":[{"constant":false,"id":4093,"mutability":"mutable","name":"maxAssets","nameLocation":"9270:9:10","nodeType":"VariableDeclaration","scope":4125,"src":"9262:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4092,"name":"uint256","nodeType":"ElementaryTypeName","src":"9262:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4097,"initialValue":{"arguments":[{"id":4095,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"9293:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4094,"name":"maxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3972,"src":"9282:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9282:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9262:40:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4098,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"9316:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4099,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"9325:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9316:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4108,"nodeType":"IfStatement","src":"9312:110:10","trueBody":{"id":4107,"nodeType":"Block","src":"9336:86:10","statements":[{"errorCall":{"arguments":[{"id":4102,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"9383:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4103,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"9393:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4104,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"9401:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4101,"name":"ERC4626ExceededMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3716,"src":"9357:25:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9357:54:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4106,"nodeType":"RevertStatement","src":"9350:61:10"}]}},{"assignments":[4110],"declarations":[{"constant":false,"id":4110,"mutability":"mutable","name":"shares","nameLocation":"9440:6:10","nodeType":"VariableDeclaration","scope":4125,"src":"9432:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4109,"name":"uint256","nodeType":"ElementaryTypeName","src":"9432:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4114,"initialValue":{"arguments":[{"id":4112,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"9464:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4111,"name":"previewDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4034,"src":"9449:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9449:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9432:39:10"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4116,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"9490:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9490:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4118,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"9504:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4119,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"9514:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4120,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4110,"src":"9522: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"}],"id":4115,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"9481:8:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9481:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4122,"nodeType":"ExpressionStatement","src":"9481:48:10"},{"expression":{"id":4123,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4110,"src":"9547:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4091,"id":4124,"nodeType":"Return","src":"9540:13:10"}]},"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"9128:35:10","text":"@dev See {IERC4626-deposit}. "},"functionSelector":"6e553f65","id":4126,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"9177:7:10","nodeType":"FunctionDefinition","parameters":{"id":4088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4085,"mutability":"mutable","name":"assets","nameLocation":"9193:6:10","nodeType":"VariableDeclaration","scope":4126,"src":"9185:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"9185:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4087,"mutability":"mutable","name":"receiver","nameLocation":"9209:8:10","nodeType":"VariableDeclaration","scope":4126,"src":"9201:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4086,"name":"address","nodeType":"ElementaryTypeName","src":"9201:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9184:34:10"},"returnParameters":{"id":4091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4126,"src":"9243:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4089,"name":"uint256","nodeType":"ElementaryTypeName","src":"9243:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9242:9:10"},"scope":4427,"src":"9168:392:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7481],"body":{"id":4169,"nodeType":"Block","src":"9684:299:10","statements":[{"assignments":[4137],"declarations":[{"constant":false,"id":4137,"mutability":"mutable","name":"maxShares","nameLocation":"9702:9:10","nodeType":"VariableDeclaration","scope":4169,"src":"9694:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4136,"name":"uint256","nodeType":"ElementaryTypeName","src":"9694:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4141,"initialValue":{"arguments":[{"id":4139,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"9722:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4138,"name":"maxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3987,"src":"9714:7:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9714:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9694:37:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4142,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"9745:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4143,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4137,"src":"9754:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9745:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4152,"nodeType":"IfStatement","src":"9741:107:10","trueBody":{"id":4151,"nodeType":"Block","src":"9765:83:10","statements":[{"errorCall":{"arguments":[{"id":4146,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"9809:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4147,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"9819:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4148,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4137,"src":"9827:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4145,"name":"ERC4626ExceededMaxMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3725,"src":"9786:22:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9786:51:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4150,"nodeType":"RevertStatement","src":"9779:58:10"}]}},{"assignments":[4154],"declarations":[{"constant":false,"id":4154,"mutability":"mutable","name":"assets","nameLocation":"9866:6:10","nodeType":"VariableDeclaration","scope":4169,"src":"9858:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4153,"name":"uint256","nodeType":"ElementaryTypeName","src":"9858:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4158,"initialValue":{"arguments":[{"id":4156,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"9887:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4155,"name":"previewMint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4050,"src":"9875:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9875:19:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9858:36:10"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4160,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"9913:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9913:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4162,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4131,"src":"9927:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4163,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"9937:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4164,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"9945: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"}],"id":4159,"name":"_deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"9904:8:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9904:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4166,"nodeType":"ExpressionStatement","src":"9904:48:10"},{"expression":{"id":4167,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"9970:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4135,"id":4168,"nodeType":"Return","src":"9963:13:10"}]},"documentation":{"id":4127,"nodeType":"StructuredDocumentation","src":"9566:32:10","text":"@dev See {IERC4626-mint}. "},"functionSelector":"94bf804d","id":4170,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"9612:4:10","nodeType":"FunctionDefinition","parameters":{"id":4132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4129,"mutability":"mutable","name":"shares","nameLocation":"9625:6:10","nodeType":"VariableDeclaration","scope":4170,"src":"9617:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4128,"name":"uint256","nodeType":"ElementaryTypeName","src":"9617:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4131,"mutability":"mutable","name":"receiver","nameLocation":"9641:8:10","nodeType":"VariableDeclaration","scope":4170,"src":"9633:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4130,"name":"address","nodeType":"ElementaryTypeName","src":"9633:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9616:34:10"},"returnParameters":{"id":4135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4170,"src":"9675:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4133,"name":"uint256","nodeType":"ElementaryTypeName","src":"9675:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9674:9:10"},"scope":4427,"src":"9603:380:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7509],"body":{"id":4216,"nodeType":"Block","src":"10130:313:10","statements":[{"assignments":[4183],"declarations":[{"constant":false,"id":4183,"mutability":"mutable","name":"maxAssets","nameLocation":"10148:9:10","nodeType":"VariableDeclaration","scope":4216,"src":"10140:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4182,"name":"uint256","nodeType":"ElementaryTypeName","src":"10140:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4187,"initialValue":{"arguments":[{"id":4185,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"10172:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4184,"name":"maxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4005,"src":"10160:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10160:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10140:38:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4188,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"10192:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4189,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"10201:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10192:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4198,"nodeType":"IfStatement","src":"10188:108:10","trueBody":{"id":4197,"nodeType":"Block","src":"10212:84:10","statements":[{"errorCall":{"arguments":[{"id":4192,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"10260:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4193,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"10267:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4194,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4183,"src":"10275:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4191,"name":"ERC4626ExceededMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3734,"src":"10233:26:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10233:52:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4196,"nodeType":"RevertStatement","src":"10226:59:10"}]}},{"assignments":[4200],"declarations":[{"constant":false,"id":4200,"mutability":"mutable","name":"shares","nameLocation":"10314:6:10","nodeType":"VariableDeclaration","scope":4216,"src":"10306:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4199,"name":"uint256","nodeType":"ElementaryTypeName","src":"10306:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4204,"initialValue":{"arguments":[{"id":4202,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"10339:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4201,"name":"previewWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4066,"src":"10323:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10323:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10306:40:10"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4206,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"10366:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10366:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4208,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4175,"src":"10380:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4209,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4177,"src":"10390:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4210,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"10397:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4211,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"10405: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"}],"id":4205,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4418,"src":"10356:9: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":4212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10356:56:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4213,"nodeType":"ExpressionStatement","src":"10356:56:10"},{"expression":{"id":4214,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"10430:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4181,"id":4215,"nodeType":"Return","src":"10423:13:10"}]},"documentation":{"id":4171,"nodeType":"StructuredDocumentation","src":"9989:36:10","text":"@dev See {IERC4626-withdraw}. "},"functionSelector":"b460af94","id":4217,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"10039:8:10","nodeType":"FunctionDefinition","parameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4173,"mutability":"mutable","name":"assets","nameLocation":"10056:6:10","nodeType":"VariableDeclaration","scope":4217,"src":"10048:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4172,"name":"uint256","nodeType":"ElementaryTypeName","src":"10048:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4175,"mutability":"mutable","name":"receiver","nameLocation":"10072:8:10","nodeType":"VariableDeclaration","scope":4217,"src":"10064:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4174,"name":"address","nodeType":"ElementaryTypeName","src":"10064:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4177,"mutability":"mutable","name":"owner","nameLocation":"10090:5:10","nodeType":"VariableDeclaration","scope":4217,"src":"10082:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4176,"name":"address","nodeType":"ElementaryTypeName","src":"10082:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10047:49:10"},"returnParameters":{"id":4181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4217,"src":"10121:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4179,"name":"uint256","nodeType":"ElementaryTypeName","src":"10121:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10120:9:10"},"scope":4427,"src":"10030:413:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7537],"body":{"id":4263,"nodeType":"Block","src":"10586:307:10","statements":[{"assignments":[4230],"declarations":[{"constant":false,"id":4230,"mutability":"mutable","name":"maxShares","nameLocation":"10604:9:10","nodeType":"VariableDeclaration","scope":4263,"src":"10596:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4229,"name":"uint256","nodeType":"ElementaryTypeName","src":"10596:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4234,"initialValue":{"arguments":[{"id":4232,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"10626:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4231,"name":"maxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4018,"src":"10616:9:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":4233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10616:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10596:36:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4235,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"10646:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4236,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"10655:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10646:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4245,"nodeType":"IfStatement","src":"10642:106:10","trueBody":{"id":4244,"nodeType":"Block","src":"10666:82:10","statements":[{"errorCall":{"arguments":[{"id":4239,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"10712:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4240,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"10719:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4241,"name":"maxShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4230,"src":"10727:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4238,"name":"ERC4626ExceededMaxRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3743,"src":"10687:24:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10687:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4243,"nodeType":"RevertStatement","src":"10680:57:10"}]}},{"assignments":[4247],"declarations":[{"constant":false,"id":4247,"mutability":"mutable","name":"assets","nameLocation":"10766:6:10","nodeType":"VariableDeclaration","scope":4263,"src":"10758:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4246,"name":"uint256","nodeType":"ElementaryTypeName","src":"10758:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4251,"initialValue":{"arguments":[{"id":4249,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"10789:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4248,"name":"previewRedeem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4082,"src":"10775:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":4250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10775:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10758:38:10"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":4253,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"10816:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10816:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4255,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4222,"src":"10830:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4256,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4224,"src":"10840:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4257,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"10847:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4258,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4220,"src":"10855: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"}],"id":4252,"name":"_withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4418,"src":"10806:9: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":4259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10806:56:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4260,"nodeType":"ExpressionStatement","src":"10806:56:10"},{"expression":{"id":4261,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"10880:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4228,"id":4262,"nodeType":"Return","src":"10873:13:10"}]},"documentation":{"id":4218,"nodeType":"StructuredDocumentation","src":"10449:34:10","text":"@dev See {IERC4626-redeem}. "},"functionSelector":"ba087652","id":4264,"implemented":true,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"10497:6:10","nodeType":"FunctionDefinition","parameters":{"id":4225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4220,"mutability":"mutable","name":"shares","nameLocation":"10512:6:10","nodeType":"VariableDeclaration","scope":4264,"src":"10504:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4219,"name":"uint256","nodeType":"ElementaryTypeName","src":"10504:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4222,"mutability":"mutable","name":"receiver","nameLocation":"10528:8:10","nodeType":"VariableDeclaration","scope":4264,"src":"10520:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4221,"name":"address","nodeType":"ElementaryTypeName","src":"10520:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4224,"mutability":"mutable","name":"owner","nameLocation":"10546:5:10","nodeType":"VariableDeclaration","scope":4264,"src":"10538:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4223,"name":"address","nodeType":"ElementaryTypeName","src":"10538:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10503:49:10"},"returnParameters":{"id":4228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4264,"src":"10577:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4226,"name":"uint256","nodeType":"ElementaryTypeName","src":"10577:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10576:9:10"},"scope":4427,"src":"10488:405:10","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4291,"nodeType":"Block","src":"11123:107:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4277,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"11154:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11154:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11170:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4280,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"11176:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11176:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11170:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11154:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4284,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"11195:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11195:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11211:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11195:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4288,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"11214:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"expression":{"id":4275,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4267,"src":"11140:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11147:6:10","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10176,"src":"11140:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11140:83:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4274,"id":4290,"nodeType":"Return","src":"11133:90:10"}]},"documentation":{"id":4265,"nodeType":"StructuredDocumentation","src":"10899:113:10","text":" @dev Internal conversion function (from assets to shares) with support for rounding direction."},"id":4292,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToShares","nameLocation":"11026:16:10","nodeType":"FunctionDefinition","parameters":{"id":4271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4267,"mutability":"mutable","name":"assets","nameLocation":"11051:6:10","nodeType":"VariableDeclaration","scope":4292,"src":"11043:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4266,"name":"uint256","nodeType":"ElementaryTypeName","src":"11043:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4270,"mutability":"mutable","name":"rounding","nameLocation":"11073:8:10","nodeType":"VariableDeclaration","scope":4292,"src":"11059:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":4269,"nodeType":"UserDefinedTypeName","pathNode":{"id":4268,"name":"Math.Rounding","nameLocations":["11059:4:10","11064:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"11059:13:10"},"referencedDeclaration":9715,"src":"11059:13:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11042:40:10"},"returnParameters":{"id":4274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4273,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4292,"src":"11114:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4272,"name":"uint256","nodeType":"ElementaryTypeName","src":"11114:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11113:9:10"},"scope":4427,"src":"11017:213:10","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4319,"nodeType":"Block","src":"11460:107:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4305,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"11491:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11491:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11507:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11491:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4309,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3199,"src":"11510:11:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11510:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11526:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4312,"name":"_decimalsOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4426,"src":"11532:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":4313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11532:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11526:23:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11510:39:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4316,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"11551:8:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"expression":{"id":4303,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4295,"src":"11477:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11484:6:10","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10176,"src":"11477:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$attached_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256,enum Math.Rounding) pure returns (uint256)"}},"id":4317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11477:83:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4302,"id":4318,"nodeType":"Return","src":"11470:90:10"}]},"documentation":{"id":4293,"nodeType":"StructuredDocumentation","src":"11236:113:10","text":" @dev Internal conversion function (from shares to assets) with support for rounding direction."},"id":4320,"implemented":true,"kind":"function","modifiers":[],"name":"_convertToAssets","nameLocation":"11363:16:10","nodeType":"FunctionDefinition","parameters":{"id":4299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4295,"mutability":"mutable","name":"shares","nameLocation":"11388:6:10","nodeType":"VariableDeclaration","scope":4320,"src":"11380:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4294,"name":"uint256","nodeType":"ElementaryTypeName","src":"11380:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4298,"mutability":"mutable","name":"rounding","nameLocation":"11410:8:10","nodeType":"VariableDeclaration","scope":4320,"src":"11396:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":4297,"nodeType":"UserDefinedTypeName","pathNode":{"id":4296,"name":"Math.Rounding","nameLocations":["11396:4:10","11401:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"11396:13:10"},"referencedDeclaration":9715,"src":"11396:13:10","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11379:40:10"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4320,"src":"11451:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4300,"name":"uint256","nodeType":"ElementaryTypeName","src":"11451:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11450:9:10"},"scope":4427,"src":"11354:213:10","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4363,"nodeType":"Block","src":"11732:789:10","statements":[{"assignments":[4334],"declarations":[{"constant":false,"id":4334,"mutability":"mutable","name":"$","nameLocation":"11765:1:10","nodeType":"VariableDeclaration","scope":4363,"src":"11742:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":4333,"nodeType":"UserDefinedTypeName","pathNode":{"id":4332,"name":"ERC4626Storage","nameLocations":["11742:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"11742:14:10"},"referencedDeclaration":3696,"src":"11742:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":4337,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4335,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"11769:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11769:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11742:47:10"},{"expression":{"arguments":[{"expression":{"id":4341,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4334,"src":"12384:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":4342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12386:6:10","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3693,"src":"12384:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":4343,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4323,"src":"12394:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4346,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12410:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4427","typeString":"contract ERC4626Upgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Upgradeable_$4427","typeString":"contract ERC4626Upgradeable"}],"id":4345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12402:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4344,"name":"address","nodeType":"ElementaryTypeName","src":"12402:7:10","typeDescriptions":{}}},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12402:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4348,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"12417:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4338,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"12357:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9093_$","typeString":"type(library SafeERC20)"}},"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12367:16:10","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8756,"src":"12357:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12357:67:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4350,"nodeType":"ExpressionStatement","src":"12357:67:10"},{"expression":{"arguments":[{"id":4352,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"12440:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4353,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"12450:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4351,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3495,"src":"12434:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12434:23:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4355,"nodeType":"ExpressionStatement","src":"12434:23:10"},{"eventCall":{"arguments":[{"id":4357,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4323,"src":"12481:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4358,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"12489:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4359,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"12499:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4360,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"12507: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"}],"id":4356,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7389,"src":"12473:7:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12473:41:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4362,"nodeType":"EmitStatement","src":"12468:46:10"}]},"documentation":{"id":4321,"nodeType":"StructuredDocumentation","src":"11573:53:10","text":" @dev Deposit/mint common workflow."},"id":4364,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"11640:8:10","nodeType":"FunctionDefinition","parameters":{"id":4330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4323,"mutability":"mutable","name":"caller","nameLocation":"11657:6:10","nodeType":"VariableDeclaration","scope":4364,"src":"11649:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4322,"name":"address","nodeType":"ElementaryTypeName","src":"11649:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4325,"mutability":"mutable","name":"receiver","nameLocation":"11673:8:10","nodeType":"VariableDeclaration","scope":4364,"src":"11665:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4324,"name":"address","nodeType":"ElementaryTypeName","src":"11665:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4327,"mutability":"mutable","name":"assets","nameLocation":"11691:6:10","nodeType":"VariableDeclaration","scope":4364,"src":"11683:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4326,"name":"uint256","nodeType":"ElementaryTypeName","src":"11683:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4329,"mutability":"mutable","name":"shares","nameLocation":"11707:6:10","nodeType":"VariableDeclaration","scope":4364,"src":"11699:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4328,"name":"uint256","nodeType":"ElementaryTypeName","src":"11699:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11648:66:10"},"returnParameters":{"id":4331,"nodeType":"ParameterList","parameters":[],"src":"11732:0:10"},"scope":4427,"src":"11631:890:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4417,"nodeType":"Block","src":"12751:811:10","statements":[{"assignments":[4380],"declarations":[{"constant":false,"id":4380,"mutability":"mutable","name":"$","nameLocation":"12784:1:10","nodeType":"VariableDeclaration","scope":4417,"src":"12761:24:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"},"typeName":{"id":4379,"nodeType":"UserDefinedTypeName","pathNode":{"id":4378,"name":"ERC4626Storage","nameLocations":["12761:14:10"],"nodeType":"IdentifierPath","referencedDeclaration":3696,"src":"12761:14:10"},"referencedDeclaration":3696,"src":"12761:14:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage"}},"visibility":"internal"}],"id":4383,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4381,"name":"_getERC4626Storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3707,"src":"12788:18:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ERC4626Storage_$3696_storage_ptr_$","typeString":"function () pure returns (struct ERC4626Upgradeable.ERC4626Storage storage pointer)"}},"id":4382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12788:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12761:47:10"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4384,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4367,"src":"12822:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4385,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4371,"src":"12832:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12822:15:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4394,"nodeType":"IfStatement","src":"12818:84:10","trueBody":{"id":4393,"nodeType":"Block","src":"12839:63:10","statements":[{"expression":{"arguments":[{"id":4388,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4371,"src":"12869:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4389,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4367,"src":"12876:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4390,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"12884: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"}],"id":4387,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3662,"src":"12853:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12853:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4392,"nodeType":"ExpressionStatement","src":"12853:38:10"}]}},{"expression":{"arguments":[{"id":4396,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4371,"src":"13416:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4397,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"13423:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4395,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"13410:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13410:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4399,"nodeType":"ExpressionStatement","src":"13410:20:10"},{"expression":{"arguments":[{"expression":{"id":4403,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4380,"src":"13463:1:10","typeDescriptions":{"typeIdentifier":"t_struct$_ERC4626Storage_$3696_storage_ptr","typeString":"struct ERC4626Upgradeable.ERC4626Storage storage pointer"}},"id":4404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13465:6:10","memberName":"_asset","nodeType":"MemberAccess","referencedDeclaration":3693,"src":"13463:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":4405,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4369,"src":"13473:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4406,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"13483:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4400,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"13440:9:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$9093_$","typeString":"type(library SafeERC20)"}},"id":4402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13450:12:10","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8729,"src":"13440:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13440:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4408,"nodeType":"ExpressionStatement","src":"13440:50:10"},{"eventCall":{"arguments":[{"id":4410,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4367,"src":"13515:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4411,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4369,"src":"13523:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4412,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4371,"src":"13533:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4413,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"13540:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4414,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"13548: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"}],"id":4409,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"13506:8:10","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":4415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13506:49:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4416,"nodeType":"EmitStatement","src":"13501:54:10"}]},"documentation":{"id":4365,"nodeType":"StructuredDocumentation","src":"12527:56:10","text":" @dev Withdraw/redeem common workflow."},"id":4418,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"12597:9:10","nodeType":"FunctionDefinition","parameters":{"id":4376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4367,"mutability":"mutable","name":"caller","nameLocation":"12624:6:10","nodeType":"VariableDeclaration","scope":4418,"src":"12616:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4366,"name":"address","nodeType":"ElementaryTypeName","src":"12616:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4369,"mutability":"mutable","name":"receiver","nameLocation":"12648:8:10","nodeType":"VariableDeclaration","scope":4418,"src":"12640:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4368,"name":"address","nodeType":"ElementaryTypeName","src":"12640:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4371,"mutability":"mutable","name":"owner","nameLocation":"12674:5:10","nodeType":"VariableDeclaration","scope":4418,"src":"12666:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4370,"name":"address","nodeType":"ElementaryTypeName","src":"12666:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4373,"mutability":"mutable","name":"assets","nameLocation":"12697:6:10","nodeType":"VariableDeclaration","scope":4418,"src":"12689:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4372,"name":"uint256","nodeType":"ElementaryTypeName","src":"12689:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4375,"mutability":"mutable","name":"shares","nameLocation":"12721:6:10","nodeType":"VariableDeclaration","scope":4418,"src":"12713:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4374,"name":"uint256","nodeType":"ElementaryTypeName","src":"12713:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12606:127:10"},"returnParameters":{"id":4377,"nodeType":"ParameterList","parameters":[],"src":"12751:0:10"},"scope":4427,"src":"12588:974:10","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4425,"nodeType":"Block","src":"13633:25:10","statements":[{"expression":{"hexValue":"30","id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13650:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4422,"id":4424,"nodeType":"Return","src":"13643:8:10"}]},"id":4426,"implemented":true,"kind":"function","modifiers":[],"name":"_decimalsOffset","nameLocation":"13577:15:10","nodeType":"FunctionDefinition","parameters":{"id":4419,"nodeType":"ParameterList","parameters":[],"src":"13592:2:10"},"returnParameters":{"id":4422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4426,"src":"13626:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4420,"name":"uint8","nodeType":"ElementaryTypeName","src":"13626:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"13625:7:10"},"scope":4427,"src":"13568:90:10","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4428,"src":"3569:10091:10","usedErrors":[2627,2630,3716,3725,3734,3743,7560,7565,7570,7579,7584,7589,8696],"usedEvents":[2635,7389,7401,8590,8599]}],"src":"118:13543:10"},"id":10},"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol","exportedSymbols":{"ContextUpgradeable":[4473],"Initializable":[2864]},"id":4474,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4429,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:11"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":4431,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4474,"sourceUnit":2865,"src":"126:63:11","symbolAliases":[{"foreign":{"id":4430,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"134:13:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4433,"name":"Initializable","nameLocations":["728:13:11"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"728:13:11"},"id":4434,"nodeType":"InheritanceSpecifier","src":"728:13:11"}],"canonicalName":"ContextUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4432,"nodeType":"StructuredDocumentation","src":"191:496:11","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":4473,"linearizedBaseContracts":[4473,2864],"name":"ContextUpgradeable","nameLocation":"706:18:11","nodeType":"ContractDefinition","nodes":[{"body":{"id":4439,"nodeType":"Block","src":"800:7:11","statements":[]},"id":4440,"implemented":true,"kind":"function","modifiers":[{"id":4437,"kind":"modifierInvocation","modifierName":{"id":4436,"name":"onlyInitializing","nameLocations":["783:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"783:16:11"},"nodeType":"ModifierInvocation","src":"783:16:11"}],"name":"__Context_init","nameLocation":"757:14:11","nodeType":"FunctionDefinition","parameters":{"id":4435,"nodeType":"ParameterList","parameters":[],"src":"771:2:11"},"returnParameters":{"id":4438,"nodeType":"ParameterList","parameters":[],"src":"800:0:11"},"scope":4473,"src":"748:59:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4445,"nodeType":"Block","src":"875:7:11","statements":[]},"id":4446,"implemented":true,"kind":"function","modifiers":[{"id":4443,"kind":"modifierInvocation","modifierName":{"id":4442,"name":"onlyInitializing","nameLocations":["858:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"858:16:11"},"nodeType":"ModifierInvocation","src":"858:16:11"}],"name":"__Context_init_unchained","nameLocation":"822:24:11","nodeType":"FunctionDefinition","parameters":{"id":4441,"nodeType":"ParameterList","parameters":[],"src":"846:2:11"},"returnParameters":{"id":4444,"nodeType":"ParameterList","parameters":[],"src":"875:0:11"},"scope":4473,"src":"813:69:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4454,"nodeType":"Block","src":"949:34:11","statements":[{"expression":{"expression":{"id":4451,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"966:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"970:6:11","memberName":"sender","nodeType":"MemberAccess","src":"966:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4450,"id":4453,"nodeType":"Return","src":"959:17:11"}]},"id":4455,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"896:10:11","nodeType":"FunctionDefinition","parameters":{"id":4447,"nodeType":"ParameterList","parameters":[],"src":"906:2:11"},"returnParameters":{"id":4450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4455,"src":"940:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4448,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"939:9:11"},"scope":4473,"src":"887:96:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4463,"nodeType":"Block","src":"1056:32:11","statements":[{"expression":{"expression":{"id":4460,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1073:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:4:11","memberName":"data","nodeType":"MemberAccess","src":"1073:8:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":4459,"id":4462,"nodeType":"Return","src":"1066:15:11"}]},"id":4464,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"998:8:11","nodeType":"FunctionDefinition","parameters":{"id":4456,"nodeType":"ParameterList","parameters":[],"src":"1006:2:11"},"returnParameters":{"id":4459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4464,"src":"1040:14:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4457,"name":"bytes","nodeType":"ElementaryTypeName","src":"1040:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1039:16:11"},"scope":4473,"src":"989:99:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4471,"nodeType":"Block","src":"1166:25:11","statements":[{"expression":{"hexValue":"30","id":4469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1183:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4468,"id":4470,"nodeType":"Return","src":"1176:8:11"}]},"id":4472,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"1103:20:11","nodeType":"FunctionDefinition","parameters":{"id":4465,"nodeType":"ParameterList","parameters":[],"src":"1123:2:11"},"returnParameters":{"id":4468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4472,"src":"1157:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4466,"name":"uint256","nodeType":"ElementaryTypeName","src":"1157:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1156:9:11"},"scope":4473,"src":"1094:97:11","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4474,"src":"688:505:11","usedErrors":[2627,2630],"usedEvents":[2635]}],"src":"101:1093:11"},"id":11},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol","exportedSymbols":{"ERC165Upgradeable":[4513],"IERC165":[9703],"Initializable":[2864]},"id":4514,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4475,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:12"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":4477,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4514,"sourceUnit":9704,"src":"140:80:12","symbolAliases":[{"foreign":{"id":4476,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"148:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../../proxy/utils/Initializable.sol","id":4479,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4514,"sourceUnit":2865,"src":"221:66:12","symbolAliases":[{"foreign":{"id":4478,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"229:13:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4481,"name":"Initializable","nameLocations":["808:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":2864,"src":"808:13:12"},"id":4482,"nodeType":"InheritanceSpecifier","src":"808:13:12"},{"baseName":{"id":4483,"name":"IERC165","nameLocations":["823:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":9703,"src":"823:7:12"},"id":4484,"nodeType":"InheritanceSpecifier","src":"823:7:12"}],"canonicalName":"ERC165Upgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":4480,"nodeType":"StructuredDocumentation","src":"289:479:12","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":4513,"linearizedBaseContracts":[4513,9703,2864],"name":"ERC165Upgradeable","nameLocation":"787:17:12","nodeType":"ContractDefinition","nodes":[{"body":{"id":4489,"nodeType":"Block","src":"888:7:12","statements":[]},"id":4490,"implemented":true,"kind":"function","modifiers":[{"id":4487,"kind":"modifierInvocation","modifierName":{"id":4486,"name":"onlyInitializing","nameLocations":["871:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"871:16:12"},"nodeType":"ModifierInvocation","src":"871:16:12"}],"name":"__ERC165_init","nameLocation":"846:13:12","nodeType":"FunctionDefinition","parameters":{"id":4485,"nodeType":"ParameterList","parameters":[],"src":"859:2:12"},"returnParameters":{"id":4488,"nodeType":"ParameterList","parameters":[],"src":"888:0:12"},"scope":4513,"src":"837:58:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4495,"nodeType":"Block","src":"962:7:12","statements":[]},"id":4496,"implemented":true,"kind":"function","modifiers":[{"id":4493,"kind":"modifierInvocation","modifierName":{"id":4492,"name":"onlyInitializing","nameLocations":["945:16:12"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"945:16:12"},"nodeType":"ModifierInvocation","src":"945:16:12"}],"name":"__ERC165_init_unchained","nameLocation":"910:23:12","nodeType":"FunctionDefinition","parameters":{"id":4491,"nodeType":"ParameterList","parameters":[],"src":"933:2:12"},"returnParameters":{"id":4494,"nodeType":"ParameterList","parameters":[],"src":"962:0:12"},"scope":4513,"src":"901:68:12","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[9702],"body":{"id":4511,"nodeType":"Block","src":"1117:64:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4504,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"1134:11:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4506,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"1154:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$9703_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$9703_$","typeString":"type(contract IERC165)"}],"id":4505,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1149:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$9703","typeString":"type(contract IERC165)"}},"id":4508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1163:11:12","memberName":"interfaceId","nodeType":"MemberAccess","src":"1149:25:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1134:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4503,"id":4510,"nodeType":"Return","src":"1127:47:12"}]},"documentation":{"id":4497,"nodeType":"StructuredDocumentation","src":"974:56:12","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":4512,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1044:17:12","nodeType":"FunctionDefinition","parameters":{"id":4500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4499,"mutability":"mutable","name":"interfaceId","nameLocation":"1069:11:12","nodeType":"VariableDeclaration","scope":4512,"src":"1062:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4498,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1062:6:12","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1061:20:12"},"returnParameters":{"id":4503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4512,"src":"1111:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4501,"name":"bool","nodeType":"ElementaryTypeName","src":"1111:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1110:6:12"},"scope":4513,"src":"1035:146:12","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":4514,"src":"769:414:12","usedErrors":[2627,2630],"usedEvents":[2635]}],"src":"114:1070:12"},"id":12},"@openzeppelin/contracts/access/AccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/AccessControl.sol","exportedSymbols":{"AccessControl":[4809],"Context":[9382],"ERC165":[9691],"IAccessControl":[4892]},"id":4810,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4515,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:13"},{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","file":"./IAccessControl.sol","id":4517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4810,"sourceUnit":4893,"src":"134:52:13","symbolAliases":[{"foreign":{"id":4516,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"142:14:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":4519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4810,"sourceUnit":9383,"src":"187:45:13","symbolAliases":[{"foreign":{"id":4518,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"195:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../utils/introspection/ERC165.sol","id":4521,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4810,"sourceUnit":9692,"src":"233:57:13","symbolAliases":[{"foreign":{"id":4520,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9691,"src":"241:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4523,"name":"Context","nameLocations":["1988:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":9382,"src":"1988:7:13"},"id":4524,"nodeType":"InheritanceSpecifier","src":"1988:7:13"},{"baseName":{"id":4525,"name":"IAccessControl","nameLocations":["1997:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":4892,"src":"1997:14:13"},"id":4526,"nodeType":"InheritanceSpecifier","src":"1997:14:13"},{"baseName":{"id":4527,"name":"ERC165","nameLocations":["2013:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":9691,"src":"2013:6:13"},"id":4528,"nodeType":"InheritanceSpecifier","src":"2013:6:13"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","documentation":{"id":4522,"nodeType":"StructuredDocumentation","src":"292:1660:13","text":" @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role."},"fullyImplemented":true,"id":4809,"linearizedBaseContracts":[4809,9691,9703,4892,9382],"name":"AccessControl","nameLocation":"1971:13:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"AccessControl.RoleData","id":4535,"members":[{"constant":false,"id":4532,"mutability":"mutable","name":"hasRole","nameLocation":"2085:7:13","nodeType":"VariableDeclaration","scope":4535,"src":"2052:40:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4531,"keyName":"account","keyNameLocation":"2068:7:13","keyType":{"id":4529,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2052:32:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4530,"name":"bool","nodeType":"ElementaryTypeName","src":"2079:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4534,"mutability":"mutable","name":"adminRole","nameLocation":"2110:9:13","nodeType":"VariableDeclaration","scope":4535,"src":"2102:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4533,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2102:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"2033:8:13","nodeType":"StructDefinition","scope":4809,"src":"2026:100:13","visibility":"public"},{"constant":false,"id":4540,"mutability":"mutable","name":"_roles","nameLocation":"2174:6:13","nodeType":"VariableDeclaration","scope":4809,"src":"2132:48:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"typeName":{"id":4539,"keyName":"role","keyNameLocation":"2148:4:13","keyType":{"id":4536,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2140:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2132:33:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4538,"nodeType":"UserDefinedTypeName","pathNode":{"id":4537,"name":"RoleData","nameLocations":["2156:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":4535,"src":"2156:8:13"},"referencedDeclaration":4535,"src":"2156:8:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage_ptr","typeString":"struct AccessControl.RoleData"}}},"visibility":"private"},{"constant":true,"functionSelector":"a217fddf","id":4543,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"2211:18:13","nodeType":"VariableDeclaration","scope":4809,"src":"2187:49:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4541,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2187:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":4542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2232:4:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"public"},{"body":{"id":4553,"nodeType":"Block","src":"2454:44:13","statements":[{"expression":{"arguments":[{"id":4549,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4546,"src":"2475:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4548,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[4607,4628],"referencedDeclaration":4607,"src":"2464:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2464:16:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4551,"nodeType":"ExpressionStatement","src":"2464:16:13"},{"id":4552,"nodeType":"PlaceholderStatement","src":"2490:1:13"}]},"documentation":{"id":4544,"nodeType":"StructuredDocumentation","src":"2243:174:13","text":" @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role."},"id":4554,"name":"onlyRole","nameLocation":"2431:8:13","nodeType":"ModifierDefinition","parameters":{"id":4547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4546,"mutability":"mutable","name":"role","nameLocation":"2448:4:13","nodeType":"VariableDeclaration","scope":4554,"src":"2440:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2440:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2439:14:13"},"src":"2422:76:13","virtual":false,"visibility":"internal"},{"baseFunctions":[9690],"body":{"id":4575,"nodeType":"Block","src":"2656:111:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":4568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4563,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4557,"src":"2673:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":4565,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4892,"src":"2693:14:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$4892_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$4892_$","typeString":"type(contract IAccessControl)"}],"id":4564,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2688:4:13","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$4892","typeString":"type(contract IAccessControl)"}},"id":4567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2709:11:13","memberName":"interfaceId","nodeType":"MemberAccess","src":"2688:32:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"2673:47:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":4571,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4557,"src":"2748:11:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4569,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2724:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessControl_$4809_$","typeString":"type(contract super AccessControl)"}},"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2730:17:13","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":9690,"src":"2724:23:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2724:36:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2673:87:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4562,"id":4574,"nodeType":"Return","src":"2666:94:13"}]},"documentation":{"id":4555,"nodeType":"StructuredDocumentation","src":"2504:56:13","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":4576,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2574:17:13","nodeType":"FunctionDefinition","overrides":{"id":4559,"nodeType":"OverrideSpecifier","overrides":[],"src":"2632:8:13"},"parameters":{"id":4558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4557,"mutability":"mutable","name":"interfaceId","nameLocation":"2599:11:13","nodeType":"VariableDeclaration","scope":4576,"src":"2592:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4556,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2592:6:13","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2591:20:13"},"returnParameters":{"id":4562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4576,"src":"2650:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4560,"name":"bool","nodeType":"ElementaryTypeName","src":"2650:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2649:6:13"},"scope":4809,"src":"2565:202:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4859],"body":{"id":4593,"nodeType":"Block","src":"2937:53:13","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":4586,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"2954:6:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":4588,"indexExpression":{"id":4587,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4579,"src":"2961:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2954:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":4589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2967:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"2954:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4591,"indexExpression":{"id":4590,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4581,"src":"2975:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2954:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4585,"id":4592,"nodeType":"Return","src":"2947:36:13"}]},"documentation":{"id":4577,"nodeType":"StructuredDocumentation","src":"2773:76:13","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":4594,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"2863:7:13","nodeType":"FunctionDefinition","parameters":{"id":4582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4579,"mutability":"mutable","name":"role","nameLocation":"2879:4:13","nodeType":"VariableDeclaration","scope":4594,"src":"2871:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2871:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4581,"mutability":"mutable","name":"account","nameLocation":"2893:7:13","nodeType":"VariableDeclaration","scope":4594,"src":"2885:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4580,"name":"address","nodeType":"ElementaryTypeName","src":"2885:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2870:31:13"},"returnParameters":{"id":4585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4584,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4594,"src":"2931:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4583,"name":"bool","nodeType":"ElementaryTypeName","src":"2931:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2930:6:13"},"scope":4809,"src":"2854:136:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":4606,"nodeType":"Block","src":"3255:47:13","statements":[{"expression":{"arguments":[{"id":4601,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4597,"src":"3276:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":4602,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"3282:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3282:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4600,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[4607,4628],"referencedDeclaration":4628,"src":"3265:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4605,"nodeType":"ExpressionStatement","src":"3265:30:13"}]},"documentation":{"id":4595,"nodeType":"StructuredDocumentation","src":"2996:198:13","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier."},"id":4607,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3208:10:13","nodeType":"FunctionDefinition","parameters":{"id":4598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4597,"mutability":"mutable","name":"role","nameLocation":"3227:4:13","nodeType":"VariableDeclaration","scope":4607,"src":"3219:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4596,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3219:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3218:14:13"},"returnParameters":{"id":4599,"nodeType":"ParameterList","parameters":[],"src":"3255:0:13"},"scope":4809,"src":"3199:103:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4627,"nodeType":"Block","src":"3505:124:13","statements":[{"condition":{"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3519:23:13","subExpression":{"arguments":[{"id":4616,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"3528:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4617,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"3534:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4615,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"3520:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3520:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4626,"nodeType":"IfStatement","src":"3515:108:13","trueBody":{"id":4625,"nodeType":"Block","src":"3544:79:13","statements":[{"errorCall":{"arguments":[{"id":4621,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4612,"src":"3598:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4622,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4610,"src":"3607:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4620,"name":"AccessControlUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"3565:32:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes32_$returns$_t_error_$","typeString":"function (address,bytes32) pure returns (error)"}},"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3565:47:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4624,"nodeType":"RevertStatement","src":"3558:54:13"}]}}]},"documentation":{"id":4608,"nodeType":"StructuredDocumentation","src":"3308:119:13","text":" @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`."},"id":4628,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"3441:10:13","nodeType":"FunctionDefinition","parameters":{"id":4613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4610,"mutability":"mutable","name":"role","nameLocation":"3460:4:13","nodeType":"VariableDeclaration","scope":4628,"src":"3452:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3452:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4612,"mutability":"mutable","name":"account","nameLocation":"3474:7:13","nodeType":"VariableDeclaration","scope":4628,"src":"3466:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4611,"name":"address","nodeType":"ElementaryTypeName","src":"3466:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3451:31:13"},"returnParameters":{"id":4614,"nodeType":"ParameterList","parameters":[],"src":"3505:0:13"},"scope":4809,"src":"3432:197:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[4867],"body":{"id":4641,"nodeType":"Block","src":"3884:46:13","statements":[{"expression":{"expression":{"baseExpression":{"id":4636,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"3901:6:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":4638,"indexExpression":{"id":4637,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4631,"src":"3908:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3901:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":4639,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3914:9:13","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"3901:22:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4635,"id":4640,"nodeType":"Return","src":"3894:29:13"}]},"documentation":{"id":4629,"nodeType":"StructuredDocumentation","src":"3635:170:13","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."},"functionSelector":"248a9ca3","id":4642,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"3819:12:13","nodeType":"FunctionDefinition","parameters":{"id":4632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4631,"mutability":"mutable","name":"role","nameLocation":"3840:4:13","nodeType":"VariableDeclaration","scope":4642,"src":"3832:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4630,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3832:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3831:14:13"},"returnParameters":{"id":4635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4642,"src":"3875:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3874:9:13"},"scope":4809,"src":"3810:120:13","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4875],"body":{"id":4660,"nodeType":"Block","src":"4320:42:13","statements":[{"expression":{"arguments":[{"id":4656,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4645,"src":"4341:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4657,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4647,"src":"4347:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4655,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"4330:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":4658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4330:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4659,"nodeType":"ExpressionStatement","src":"4330:25:13"}]},"documentation":{"id":4643,"nodeType":"StructuredDocumentation","src":"3936:285:13","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event."},"functionSelector":"2f2ff15d","id":4661,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":4651,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4645,"src":"4313:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4650,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"4300:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4300:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4653,"kind":"modifierInvocation","modifierName":{"id":4649,"name":"onlyRole","nameLocations":["4291:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"4291:8:13"},"nodeType":"ModifierInvocation","src":"4291:28:13"}],"name":"grantRole","nameLocation":"4235:9:13","nodeType":"FunctionDefinition","parameters":{"id":4648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4645,"mutability":"mutable","name":"role","nameLocation":"4253:4:13","nodeType":"VariableDeclaration","scope":4661,"src":"4245:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4644,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4245:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4647,"mutability":"mutable","name":"account","nameLocation":"4267:7:13","nodeType":"VariableDeclaration","scope":4661,"src":"4259:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4646,"name":"address","nodeType":"ElementaryTypeName","src":"4259:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4244:31:13"},"returnParameters":{"id":4654,"nodeType":"ParameterList","parameters":[],"src":"4320:0:13"},"scope":4809,"src":"4226:136:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4883],"body":{"id":4679,"nodeType":"Block","src":"4737:43:13","statements":[{"expression":{"arguments":[{"id":4675,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4664,"src":"4759:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4676,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"4765:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4674,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4808,"src":"4747:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4747:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4678,"nodeType":"ExpressionStatement","src":"4747:26:13"}]},"documentation":{"id":4662,"nodeType":"StructuredDocumentation","src":"4368:269:13","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event."},"functionSelector":"d547741f","id":4680,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"arguments":[{"id":4670,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4664,"src":"4730:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4669,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"4717:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4717:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4672,"kind":"modifierInvocation","modifierName":{"id":4668,"name":"onlyRole","nameLocations":["4708:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":4554,"src":"4708:8:13"},"nodeType":"ModifierInvocation","src":"4708:28:13"}],"name":"revokeRole","nameLocation":"4651:10:13","nodeType":"FunctionDefinition","parameters":{"id":4667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4664,"mutability":"mutable","name":"role","nameLocation":"4670:4:13","nodeType":"VariableDeclaration","scope":4680,"src":"4662:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4663,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4662:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4666,"mutability":"mutable","name":"account","nameLocation":"4684:7:13","nodeType":"VariableDeclaration","scope":4680,"src":"4676:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4665,"name":"address","nodeType":"ElementaryTypeName","src":"4676:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4661:31:13"},"returnParameters":{"id":4673,"nodeType":"ParameterList","parameters":[],"src":"4737:0:13"},"scope":4809,"src":"4642:138:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4891],"body":{"id":4702,"nodeType":"Block","src":"5407:166:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4688,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"5421:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":4689,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"5443:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5421:34:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4696,"nodeType":"IfStatement","src":"5417:102:13","trueBody":{"id":4695,"nodeType":"Block","src":"5457:62:13","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4692,"name":"AccessControlBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"5478:28:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5478:30:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4694,"nodeType":"RevertStatement","src":"5471:37:13"}]}},{"expression":{"arguments":[{"id":4698,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4683,"src":"5541:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4699,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4685,"src":"5547:18:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4697,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4808,"src":"5529:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5529:37:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4701,"nodeType":"ExpressionStatement","src":"5529:37:13"}]},"documentation":{"id":4681,"nodeType":"StructuredDocumentation","src":"4786:537:13","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event."},"functionSelector":"36568abe","id":4703,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"5337:12:13","nodeType":"FunctionDefinition","parameters":{"id":4686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4683,"mutability":"mutable","name":"role","nameLocation":"5358:4:13","nodeType":"VariableDeclaration","scope":4703,"src":"5350:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5350:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4685,"mutability":"mutable","name":"callerConfirmation","nameLocation":"5372:18:13","nodeType":"VariableDeclaration","scope":4703,"src":"5364:26:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4684,"name":"address","nodeType":"ElementaryTypeName","src":"5364:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5349:42:13"},"returnParameters":{"id":4687,"nodeType":"ParameterList","parameters":[],"src":"5407:0:13"},"scope":4809,"src":"5328:245:13","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4730,"nodeType":"Block","src":"5771:174:13","statements":[{"assignments":[4712],"declarations":[{"constant":false,"id":4712,"mutability":"mutable","name":"previousAdminRole","nameLocation":"5789:17:13","nodeType":"VariableDeclaration","scope":4730,"src":"5781:25:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5781:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4716,"initialValue":{"arguments":[{"id":4714,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"5822:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4713,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"5809:12:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5809:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5781:46:13"},{"expression":{"id":4722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":4717,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"5837:6:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":4719,"indexExpression":{"id":4718,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"5844:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5837:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":4720,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5850:9:13","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":4534,"src":"5837:22:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4721,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"5862:9:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5837:34:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":4723,"nodeType":"ExpressionStatement","src":"5837:34:13"},{"eventCall":{"arguments":[{"id":4725,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4706,"src":"5903:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4726,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4712,"src":"5909:17:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4727,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"5928:9:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4724,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4831,"src":"5886:16:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:52:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4729,"nodeType":"EmitStatement","src":"5881:57:13"}]},"documentation":{"id":4704,"nodeType":"StructuredDocumentation","src":"5579:114:13","text":" @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."},"id":4731,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"5707:13:13","nodeType":"FunctionDefinition","parameters":{"id":4709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4706,"mutability":"mutable","name":"role","nameLocation":"5729:4:13","nodeType":"VariableDeclaration","scope":4731,"src":"5721:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4705,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5721:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4708,"mutability":"mutable","name":"adminRole","nameLocation":"5743:9:13","nodeType":"VariableDeclaration","scope":4731,"src":"5735:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5735:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5720:33:13"},"returnParameters":{"id":4710,"nodeType":"ParameterList","parameters":[],"src":"5771:0:13"},"scope":4809,"src":"5698:247:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4769,"nodeType":"Block","src":"6262:233:13","statements":[{"condition":{"id":4745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6276:23:13","subExpression":{"arguments":[{"id":4742,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4734,"src":"6285:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4743,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"6291:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4741,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"6277:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4767,"nodeType":"Block","src":"6452:37:13","statements":[{"expression":{"hexValue":"66616c7365","id":4765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6473:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4740,"id":4766,"nodeType":"Return","src":"6466:12:13"}]},"id":4768,"nodeType":"IfStatement","src":"6272:217:13","trueBody":{"id":4764,"nodeType":"Block","src":"6301:145:13","statements":[{"expression":{"id":4753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4746,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"6315:6:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":4748,"indexExpression":{"id":4747,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4734,"src":"6322:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6315:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":4749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6328:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"6315:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4751,"indexExpression":{"id":4750,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"6336:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6315:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":4752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6347:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6315:36:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4754,"nodeType":"ExpressionStatement","src":"6315:36:13"},{"eventCall":{"arguments":[{"id":4756,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4734,"src":"6382:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4757,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"6388:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":4758,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"6397:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6397:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4755,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4840,"src":"6370:11:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":4760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6370:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4761,"nodeType":"EmitStatement","src":"6365:45:13"},{"expression":{"hexValue":"74727565","id":4762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6431:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4740,"id":4763,"nodeType":"Return","src":"6424:11:13"}]}}]},"documentation":{"id":4732,"nodeType":"StructuredDocumentation","src":"5951:223:13","text":" @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event."},"id":4770,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"6188:10:13","nodeType":"FunctionDefinition","parameters":{"id":4737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4734,"mutability":"mutable","name":"role","nameLocation":"6207:4:13","nodeType":"VariableDeclaration","scope":4770,"src":"6199:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6199:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4736,"mutability":"mutable","name":"account","nameLocation":"6221:7:13","nodeType":"VariableDeclaration","scope":4770,"src":"6213:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4735,"name":"address","nodeType":"ElementaryTypeName","src":"6213:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6198:31:13"},"returnParameters":{"id":4740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4770,"src":"6256:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4738,"name":"bool","nodeType":"ElementaryTypeName","src":"6256:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6255:6:13"},"scope":4809,"src":"6179:316:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4807,"nodeType":"Block","src":"6814:233:13","statements":[{"condition":{"arguments":[{"id":4781,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"6836:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4782,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"6842:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4780,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"6828:7:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6828:22:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4805,"nodeType":"Block","src":"7004:37:13","statements":[{"expression":{"hexValue":"66616c7365","id":4803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7025:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4779,"id":4804,"nodeType":"Return","src":"7018:12:13"}]},"id":4806,"nodeType":"IfStatement","src":"6824:217:13","trueBody":{"id":4802,"nodeType":"Block","src":"6852:146:13","statements":[{"expression":{"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":4784,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"6866:6:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$4535_storage_$","typeString":"mapping(bytes32 => struct AccessControl.RoleData storage ref)"}},"id":4786,"indexExpression":{"id":4785,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"6873:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6866:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$4535_storage","typeString":"struct AccessControl.RoleData storage ref"}},"id":4787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6879:7:13","memberName":"hasRole","nodeType":"MemberAccess","referencedDeclaration":4532,"src":"6866:20:13","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":4789,"indexExpression":{"id":4788,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"6887:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6866:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":4790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6898:5:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6866:37:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4792,"nodeType":"ExpressionStatement","src":"6866:37:13"},{"eventCall":{"arguments":[{"id":4794,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"6934:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4795,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4775,"src":"6940:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":4796,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"6949:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6949:12:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4793,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"6922:11:13","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":4798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6922:40:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4799,"nodeType":"EmitStatement","src":"6917:45:13"},{"expression":{"hexValue":"74727565","id":4800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6983:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4779,"id":4801,"nodeType":"Return","src":"6976:11:13"}]}}]},"documentation":{"id":4771,"nodeType":"StructuredDocumentation","src":"6501:224:13","text":" @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event."},"id":4808,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"6739:11:13","nodeType":"FunctionDefinition","parameters":{"id":4776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4773,"mutability":"mutable","name":"role","nameLocation":"6759:4:13","nodeType":"VariableDeclaration","scope":4808,"src":"6751:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6751:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4775,"mutability":"mutable","name":"account","nameLocation":"6773:7:13","nodeType":"VariableDeclaration","scope":4808,"src":"6765:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4774,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6750:31:13"},"returnParameters":{"id":4779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4808,"src":"6808:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4777,"name":"bool","nodeType":"ElementaryTypeName","src":"6808:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6807:6:13"},"scope":4809,"src":"6730:317:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4810,"src":"1953:5096:13","usedErrors":[4819,4822],"usedEvents":[4831,4840,4849]}],"src":"108:6942:13"},"id":13},"@openzeppelin/contracts/access/IAccessControl.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/IAccessControl.sol","exportedSymbols":{"IAccessControl":[4892]},"id":4893,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4811,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","documentation":{"id":4812,"nodeType":"StructuredDocumentation","src":"135:90:14","text":" @dev External interface of AccessControl declared to support ERC-165 detection."},"fullyImplemented":false,"id":4892,"linearizedBaseContracts":[4892],"name":"IAccessControl","nameLocation":"236:14:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4813,"nodeType":"StructuredDocumentation","src":"257:56:14","text":" @dev The `account` is missing a role."},"errorSelector":"e2517d3f","id":4819,"name":"AccessControlUnauthorizedAccount","nameLocation":"324:32:14","nodeType":"ErrorDefinition","parameters":{"id":4818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4815,"mutability":"mutable","name":"account","nameLocation":"365:7:14","nodeType":"VariableDeclaration","scope":4819,"src":"357:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4814,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4817,"mutability":"mutable","name":"neededRole","nameLocation":"382:10:14","nodeType":"VariableDeclaration","scope":4819,"src":"374:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4816,"name":"bytes32","nodeType":"ElementaryTypeName","src":"374:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"356:37:14"},"src":"318:76:14"},{"documentation":{"id":4820,"nodeType":"StructuredDocumentation","src":"400:148:14","text":" @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}."},"errorSelector":"6697b232","id":4822,"name":"AccessControlBadConfirmation","nameLocation":"559:28:14","nodeType":"ErrorDefinition","parameters":{"id":4821,"nodeType":"ParameterList","parameters":[],"src":"587:2:14"},"src":"553:37:14"},{"anonymous":false,"documentation":{"id":4823,"nodeType":"StructuredDocumentation","src":"596:254:14","text":" @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this."},"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":4831,"name":"RoleAdminChanged","nameLocation":"861:16:14","nodeType":"EventDefinition","parameters":{"id":4830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4825,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"894:4:14","nodeType":"VariableDeclaration","scope":4831,"src":"878:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4824,"name":"bytes32","nodeType":"ElementaryTypeName","src":"878:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4827,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"916:17:14","nodeType":"VariableDeclaration","scope":4831,"src":"900:33:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4826,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4829,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"951:12:14","nodeType":"VariableDeclaration","scope":4831,"src":"935:28:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4828,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"877:87:14"},"src":"855:110:14"},{"anonymous":false,"documentation":{"id":4832,"nodeType":"StructuredDocumentation","src":"971:295:14","text":" @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n Expected in cases where the role was granted using the internal {AccessControl-_grantRole}."},"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":4840,"name":"RoleGranted","nameLocation":"1277:11:14","nodeType":"EventDefinition","parameters":{"id":4839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1305:4:14","nodeType":"VariableDeclaration","scope":4840,"src":"1289:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1289:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4836,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1327:7:14","nodeType":"VariableDeclaration","scope":4840,"src":"1311:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4835,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4838,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1352:6:14","nodeType":"VariableDeclaration","scope":4840,"src":"1336:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4837,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:71:14"},"src":"1271:89:14"},{"anonymous":false,"documentation":{"id":4841,"nodeType":"StructuredDocumentation","src":"1366:275:14","text":" @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"},"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":4849,"name":"RoleRevoked","nameLocation":"1652:11:14","nodeType":"EventDefinition","parameters":{"id":4848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4843,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"1680:4:14","nodeType":"VariableDeclaration","scope":4849,"src":"1664:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1664:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4845,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1702:7:14","nodeType":"VariableDeclaration","scope":4849,"src":"1686:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4844,"name":"address","nodeType":"ElementaryTypeName","src":"1686:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4847,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1727:6:14","nodeType":"VariableDeclaration","scope":4849,"src":"1711:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4846,"name":"address","nodeType":"ElementaryTypeName","src":"1711:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1663:71:14"},"src":"1646:89:14"},{"documentation":{"id":4850,"nodeType":"StructuredDocumentation","src":"1741:76:14","text":" @dev Returns `true` if `account` has been granted `role`."},"functionSelector":"91d14854","id":4859,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"1831:7:14","nodeType":"FunctionDefinition","parameters":{"id":4855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4852,"mutability":"mutable","name":"role","nameLocation":"1847:4:14","nodeType":"VariableDeclaration","scope":4859,"src":"1839:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4851,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1839:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4854,"mutability":"mutable","name":"account","nameLocation":"1861:7:14","nodeType":"VariableDeclaration","scope":4859,"src":"1853:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4853,"name":"address","nodeType":"ElementaryTypeName","src":"1853:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1838:31:14"},"returnParameters":{"id":4858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4859,"src":"1893:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4856,"name":"bool","nodeType":"ElementaryTypeName","src":"1893:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1892:6:14"},"scope":4892,"src":"1822:77:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4860,"nodeType":"StructuredDocumentation","src":"1905:184:14","text":" @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}."},"functionSelector":"248a9ca3","id":4867,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"2103:12:14","nodeType":"FunctionDefinition","parameters":{"id":4863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4862,"mutability":"mutable","name":"role","nameLocation":"2124:4:14","nodeType":"VariableDeclaration","scope":4867,"src":"2116:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2116:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2115:14:14"},"returnParameters":{"id":4866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4867,"src":"2153:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2153:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2152:9:14"},"scope":4892,"src":"2094:68:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4868,"nodeType":"StructuredDocumentation","src":"2168:239:14","text":" @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"2f2ff15d","id":4875,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"2421:9:14","nodeType":"FunctionDefinition","parameters":{"id":4873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4870,"mutability":"mutable","name":"role","nameLocation":"2439:4:14","nodeType":"VariableDeclaration","scope":4875,"src":"2431:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4869,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2431:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4872,"mutability":"mutable","name":"account","nameLocation":"2453:7:14","nodeType":"VariableDeclaration","scope":4875,"src":"2445:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4871,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2430:31:14"},"returnParameters":{"id":4874,"nodeType":"ParameterList","parameters":[],"src":"2470:0:14"},"scope":4892,"src":"2412:59:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4876,"nodeType":"StructuredDocumentation","src":"2477:223:14","text":" @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."},"functionSelector":"d547741f","id":4883,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"2714:10:14","nodeType":"FunctionDefinition","parameters":{"id":4881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"role","nameLocation":"2733:4:14","nodeType":"VariableDeclaration","scope":4883,"src":"2725:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2725:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4880,"mutability":"mutable","name":"account","nameLocation":"2747:7:14","nodeType":"VariableDeclaration","scope":4883,"src":"2739:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4879,"name":"address","nodeType":"ElementaryTypeName","src":"2739:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2724:31:14"},"returnParameters":{"id":4882,"nodeType":"ParameterList","parameters":[],"src":"2764:0:14"},"scope":4892,"src":"2705:60:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4884,"nodeType":"StructuredDocumentation","src":"2771:491:14","text":" @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`."},"functionSelector":"36568abe","id":4891,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"3276:12:14","nodeType":"FunctionDefinition","parameters":{"id":4889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4886,"mutability":"mutable","name":"role","nameLocation":"3297:4:14","nodeType":"VariableDeclaration","scope":4891,"src":"3289:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4885,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3289:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4888,"mutability":"mutable","name":"callerConfirmation","nameLocation":"3311:18:14","nodeType":"VariableDeclaration","scope":4891,"src":"3303:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4887,"name":"address","nodeType":"ElementaryTypeName","src":"3303:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3288:42:14"},"returnParameters":{"id":4890,"nodeType":"ParameterList","parameters":[],"src":"3339:0:14"},"scope":4892,"src":"3267:73:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4893,"src":"226:3116:14","usedErrors":[4819,4822],"usedEvents":[4831,4840,4849]}],"src":"109:3234:14"},"id":14},"@openzeppelin/contracts/access/manager/AccessManager.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/AccessManager.sol","exportedSymbols":{"AccessManager":[6781],"Address":[9352],"Context":[9382],"IAccessManaged":[6821],"IAccessManager":[7253],"Math":[11309],"Multicall":[9491],"Time":[13348]},"id":6782,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4894,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"116:24:15"},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"./IAccessManager.sol","id":4896,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":7254,"src":"142:52:15","symbolAliases":[{"foreign":{"id":4895,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"150:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManaged.sol","file":"./IAccessManaged.sol","id":4898,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":6822,"src":"195:52:15","symbolAliases":[{"foreign":{"id":4897,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"203:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":4900,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":9353,"src":"248:48:15","symbolAliases":[{"foreign":{"id":4899,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"256:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4902,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":9383,"src":"297:48:15","symbolAliases":[{"foreign":{"id":4901,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"305:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Multicall.sol","file":"../../utils/Multicall.sol","id":4904,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":9492,"src":"346:52:15","symbolAliases":[{"foreign":{"id":4903,"name":"Multicall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9491,"src":"354:9:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../../utils/math/Math.sol","id":4906,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":11310,"src":"399:47:15","symbolAliases":[{"foreign":{"id":4905,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"407:4:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/types/Time.sol","file":"../../utils/types/Time.sol","id":4908,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6782,"sourceUnit":13349,"src":"447:48:15","symbolAliases":[{"foreign":{"id":4907,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"455:4:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4910,"name":"Context","nameLocations":["3748:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":9382,"src":"3748:7:15"},"id":4911,"nodeType":"InheritanceSpecifier","src":"3748:7:15"},{"baseName":{"id":4912,"name":"Multicall","nameLocations":["3757:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":9491,"src":"3757:9:15"},"id":4913,"nodeType":"InheritanceSpecifier","src":"3757:9:15"},{"baseName":{"id":4914,"name":"IAccessManager","nameLocations":["3768:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":7253,"src":"3768:14:15"},"id":4915,"nodeType":"InheritanceSpecifier","src":"3768:14:15"}],"canonicalName":"AccessManager","contractDependencies":[],"contractKind":"contract","documentation":{"id":4909,"nodeType":"StructuredDocumentation","src":"497: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":6781,"linearizedBaseContracts":[6781,7253,9491,9382],"name":"AccessManager","nameLocation":"3731:13:15","nodeType":"ContractDefinition","nodes":[{"global":false,"id":4917,"libraryName":{"id":4916,"name":"Time","nameLocations":["3795:4:15"],"nodeType":"IdentifierPath","referencedDeclaration":13348,"src":"3795:4:15"},"nodeType":"UsingForDirective","src":"3789:17:15"},{"canonicalName":"AccessManager.TargetConfig","id":4927,"members":[{"constant":false,"id":4921,"mutability":"mutable","name":"allowedRoles","nameLocation":"3948:12:15","nodeType":"VariableDeclaration","scope":4927,"src":"3906:54:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"},"typeName":{"id":4920,"keyName":"selector","keyNameLocation":"3921:8:15","keyType":{"id":4918,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3914:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"3906:41:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"},"valueName":"roleId","valueNameLocation":"3940:6:15","valueType":{"id":4919,"name":"uint64","nodeType":"ElementaryTypeName","src":"3933:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}},"visibility":"internal"},{"constant":false,"id":4924,"mutability":"mutable","name":"adminDelay","nameLocation":"3981:10:15","nodeType":"VariableDeclaration","scope":4927,"src":"3970:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":4923,"nodeType":"UserDefinedTypeName","pathNode":{"id":4922,"name":"Time.Delay","nameLocations":["3970:4:15","3975:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"3970:10:15"},"referencedDeclaration":13111,"src":"3970:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":4926,"mutability":"mutable","name":"closed","nameLocation":"4006:6:15","nodeType":"VariableDeclaration","scope":4927,"src":"4001:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4925,"name":"bool","nodeType":"ElementaryTypeName","src":"4001:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"TargetConfig","nameLocation":"3883:12:15","nodeType":"StructDefinition","scope":6781,"src":"3876:143:15","visibility":"public"},{"canonicalName":"AccessManager.Access","id":4933,"members":[{"constant":false,"id":4929,"mutability":"mutable","name":"since","nameLocation":"4314:5:15","nodeType":"VariableDeclaration","scope":4933,"src":"4307:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4928,"name":"uint48","nodeType":"ElementaryTypeName","src":"4307:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4932,"mutability":"mutable","name":"delay","nameLocation":"4420:5:15","nodeType":"VariableDeclaration","scope":4933,"src":"4409:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":4931,"nodeType":"UserDefinedTypeName","pathNode":{"id":4930,"name":"Time.Delay","nameLocations":["4409:4:15","4414:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"4409:10:15"},"referencedDeclaration":13111,"src":"4409:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"name":"Access","nameLocation":"4138:6:15","nodeType":"StructDefinition","scope":6781,"src":"4131:301:15","visibility":"public"},{"canonicalName":"AccessManager.Role","id":4946,"members":[{"constant":false,"id":4938,"mutability":"mutable","name":"members","nameLocation":"4583:7:15","nodeType":"VariableDeclaration","scope":4946,"src":"4544:46:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access)"},"typeName":{"id":4937,"keyName":"user","keyNameLocation":"4560:4:15","keyType":{"id":4934,"name":"address","nodeType":"ElementaryTypeName","src":"4552:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"4544:38:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access)"},"valueName":"access","valueNameLocation":"4575:6:15","valueType":{"id":4936,"nodeType":"UserDefinedTypeName","pathNode":{"id":4935,"name":"Access","nameLocations":["4568:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":4933,"src":"4568:6:15"},"referencedDeclaration":4933,"src":"4568:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage_ptr","typeString":"struct AccessManager.Access"}}},"visibility":"internal"},{"constant":false,"id":4940,"mutability":"mutable","name":"admin","nameLocation":"4661:5:15","nodeType":"VariableDeclaration","scope":4946,"src":"4654:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4939,"name":"uint64","nodeType":"ElementaryTypeName","src":"4654:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4942,"mutability":"mutable","name":"guardian","nameLocation":"4770:8:15","nodeType":"VariableDeclaration","scope":4946,"src":"4763:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4941,"name":"uint64","nodeType":"ElementaryTypeName","src":"4763:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":4945,"mutability":"mutable","name":"grantDelay","nameLocation":"4868:10:15","nodeType":"VariableDeclaration","scope":4946,"src":"4857:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":4944,"nodeType":"UserDefinedTypeName","pathNode":{"id":4943,"name":"Time.Delay","nameLocations":["4857:4:15","4862:5:15"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"4857:10:15"},"referencedDeclaration":13111,"src":"4857:10:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"name":"Role","nameLocation":"4497:4:15","nodeType":"StructDefinition","scope":6781,"src":"4490:395:15","visibility":"public"},{"canonicalName":"AccessManager.Schedule","id":4951,"members":[{"constant":false,"id":4948,"mutability":"mutable","name":"timepoint","nameLocation":"5090:9:15","nodeType":"VariableDeclaration","scope":4951,"src":"5083:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":4947,"name":"uint48","nodeType":"ElementaryTypeName","src":"5083:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":4950,"mutability":"mutable","name":"nonce","nameLocation":"5201:5:15","nodeType":"VariableDeclaration","scope":4951,"src":"5194:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4949,"name":"uint32","nodeType":"ElementaryTypeName","src":"5194:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"Schedule","nameLocation":"5006:8:15","nodeType":"StructDefinition","scope":6781,"src":"4999:214:15","visibility":"public"},{"constant":true,"documentation":{"id":4952,"nodeType":"StructuredDocumentation","src":"5219: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":4959,"mutability":"constant","name":"ADMIN_ROLE","nameLocation":"5420:10:15","nodeType":"VariableDeclaration","scope":6781,"src":"5397:52:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4953,"name":"uint64","nodeType":"ElementaryTypeName","src":"5397:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"expression":{"arguments":[{"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5438:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4955,"name":"uint64","nodeType":"ElementaryTypeName","src":"5438:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4954,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5433:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5433:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5446:3:15","memberName":"min","nodeType":"MemberAccess","src":"5433:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"constant":true,"documentation":{"id":4960,"nodeType":"StructuredDocumentation","src":"5461:112:15","text":" @dev The identifier of the public role. Automatically granted to all addresses with no delay."},"functionSelector":"3ca7c02a","id":4967,"mutability":"constant","name":"PUBLIC_ROLE","nameLocation":"5601:11:15","nodeType":"VariableDeclaration","scope":6781,"src":"5578:53:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":4961,"name":"uint64","nodeType":"ElementaryTypeName","src":"5578:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"expression":{"arguments":[{"id":4964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5620:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":4963,"name":"uint64","nodeType":"ElementaryTypeName","src":"5620:6:15","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":4962,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5615:4:15","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5615:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":4966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5628:3:15","memberName":"max","nodeType":"MemberAccess","src":"5615:16:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"public"},{"constant":false,"id":4972,"mutability":"mutable","name":"_targets","nameLocation":"5702:8:15","nodeType":"VariableDeclaration","scope":6781,"src":"5649:61:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig)"},"typeName":{"id":4971,"keyName":"target","keyNameLocation":"5665:6:15","keyType":{"id":4968,"name":"address","nodeType":"ElementaryTypeName","src":"5657:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5649:44:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig)"},"valueName":"mode","valueNameLocation":"5688:4:15","valueType":{"id":4970,"nodeType":"UserDefinedTypeName","pathNode":{"id":4969,"name":"TargetConfig","nameLocations":["5675:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":4927,"src":"5675:12:15"},"referencedDeclaration":4927,"src":"5675:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage_ptr","typeString":"struct AccessManager.TargetConfig"}}},"visibility":"private"},{"constant":false,"id":4977,"mutability":"mutable","name":"_roles","nameLocation":"5755:6:15","nodeType":"VariableDeclaration","scope":6781,"src":"5716:45:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role)"},"typeName":{"id":4976,"keyName":"roleId","keyNameLocation":"5731:6:15","keyType":{"id":4973,"name":"uint64","nodeType":"ElementaryTypeName","src":"5724:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Mapping","src":"5716:30:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4975,"nodeType":"UserDefinedTypeName","pathNode":{"id":4974,"name":"Role","nameLocations":["5741:4:15"],"nodeType":"IdentifierPath","referencedDeclaration":4946,"src":"5741:4:15"},"referencedDeclaration":4946,"src":"5741:4:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage_ptr","typeString":"struct AccessManager.Role"}}},"visibility":"private"},{"constant":false,"id":4982,"mutability":"mutable","name":"_schedules","nameLocation":"5816:10:15","nodeType":"VariableDeclaration","scope":6781,"src":"5767:59:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule)"},"typeName":{"id":4981,"keyName":"operationId","keyNameLocation":"5783:11:15","keyType":{"id":4978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5775:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5767:40:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4980,"nodeType":"UserDefinedTypeName","pathNode":{"id":4979,"name":"Schedule","nameLocations":["5798:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":4951,"src":"5798:8:15"},"referencedDeclaration":4951,"src":"5798:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage_ptr","typeString":"struct AccessManager.Schedule"}}},"visibility":"private"},{"constant":false,"id":4984,"mutability":"mutable","name":"_executionId","nameLocation":"6000:12:15","nodeType":"VariableDeclaration","scope":6781,"src":"5984:28:15","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4983,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5984:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":4991,"nodeType":"Block","src":"6227:46:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4987,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6408,"src":"6237:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":4988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:18:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4989,"nodeType":"ExpressionStatement","src":"6237:18:15"},{"id":4990,"nodeType":"PlaceholderStatement","src":"6265:1:15"}]},"documentation":{"id":4985,"nodeType":"StructuredDocumentation","src":"6019: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":4992,"name":"onlyAuthorized","nameLocation":"6210:14:15","nodeType":"ModifierDefinition","parameters":{"id":4986,"nodeType":"ParameterList","parameters":[],"src":"6224:2:15"},"src":"6201:72:15","virtual":false,"visibility":"internal"},{"body":{"id":5019,"nodeType":"Block","src":"6313:249:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4997,"name":"initialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"6327:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6351: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":4999,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6343:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4998,"name":"address","nodeType":"ElementaryTypeName","src":"6343:7:15","typeDescriptions":{}}},"id":5001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6343:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6327:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5011,"nodeType":"IfStatement","src":"6323:108:15","trueBody":{"id":5010,"nodeType":"Block","src":"6355:76:15","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6417: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":5005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6409:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5004,"name":"address","nodeType":"ElementaryTypeName","src":"6409:7:15","typeDescriptions":{}}},"id":5007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5003,"name":"AccessManagerInvalidInitialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6983,"src":"6376:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6376:44:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5009,"nodeType":"RevertStatement","src":"6369:51:15"}]}},{"expression":{"arguments":[{"id":5013,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"6524:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5014,"name":"initialAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"6536:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":5015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6550:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":5016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6553: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":5012,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"6513: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":5017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6513:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5018,"nodeType":"ExpressionStatement","src":"6513:42:15"}]},"id":5020,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4994,"mutability":"mutable","name":"initialAdmin","nameLocation":"6299:12:15","nodeType":"VariableDeclaration","scope":5020,"src":"6291:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4993,"name":"address","nodeType":"ElementaryTypeName","src":"6291:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6290:22:15"},"returnParameters":{"id":4996,"nodeType":"ParameterList","parameters":[],"src":"6313:0:15"},"scope":6781,"src":"6279:283:15","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6997],"body":{"id":5086,"nodeType":"Block","src":"6878:647:15","statements":[{"condition":{"arguments":[{"id":5035,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"6907:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5034,"name":"isTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"6892:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6892:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5042,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5023,"src":"6968:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":5045,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6986:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":5044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6978:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5043,"name":"address","nodeType":"ElementaryTypeName","src":"6978:7:15","typeDescriptions":{}}},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6978:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6968:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5083,"nodeType":"Block","src":"7285:234:15","statements":[{"assignments":[5057],"declarations":[{"constant":false,"id":5057,"mutability":"mutable","name":"roleId","nameLocation":"7306:6:15","nodeType":"VariableDeclaration","scope":5083,"src":"7299:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5056,"name":"uint64","nodeType":"ElementaryTypeName","src":"7299:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":5062,"initialValue":{"arguments":[{"id":5059,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"7337:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5060,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"7345:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5058,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5137,"src":"7315:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":5061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7315:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"7299:55:15"},{"assignments":[5064,5066],"declarations":[{"constant":false,"id":5064,"mutability":"mutable","name":"isMember","nameLocation":"7374:8:15","nodeType":"VariableDeclaration","scope":5083,"src":"7369:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5063,"name":"bool","nodeType":"ElementaryTypeName","src":"7369:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5066,"mutability":"mutable","name":"currentDelay","nameLocation":"7391:12:15","nodeType":"VariableDeclaration","scope":5083,"src":"7384:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5065,"name":"uint32","nodeType":"ElementaryTypeName","src":"7384:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5071,"initialValue":{"arguments":[{"id":5068,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"7415:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5069,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5023,"src":"7423:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5067,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"7407: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":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7407:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"7368:62:15"},{"expression":{"condition":{"id":5072,"name":"isMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5064,"src":"7451:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"hexValue":"66616c7365","id":5078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7499:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5080,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7498:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7451:57:15","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5073,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"7463:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7479:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7463:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5076,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5066,"src":"7482:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":5077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7462: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":5033,"id":5082,"nodeType":"Return","src":"7444:64:15"}]},"id":5084,"nodeType":"IfStatement","src":"6964:555:15","trueBody":{"id":5055,"nodeType":"Block","src":"6993:286:15","statements":[{"expression":{"components":[{"arguments":[{"id":5049,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5025,"src":"7247:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5050,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5027,"src":"7255:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":5048,"name":"_isExecuting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6726,"src":"7234:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7234:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"30","id":5052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7266:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5053,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7233:35:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5033,"id":5054,"nodeType":"Return","src":"7226:42:15"}]}},"id":5085,"nodeType":"IfStatement","src":"6888:631:15","trueBody":{"id":5041,"nodeType":"Block","src":"6916:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":5037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6938:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":5038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6945:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6937:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5033,"id":5040,"nodeType":"Return","src":"6930:17:15"}]}}]},"documentation":{"id":5021,"nodeType":"StructuredDocumentation","src":"6688:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"b7009613","id":5087,"implemented":true,"kind":"function","modifiers":[],"name":"canCall","nameLocation":"6732:7:15","nodeType":"FunctionDefinition","parameters":{"id":5028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5023,"mutability":"mutable","name":"caller","nameLocation":"6757:6:15","nodeType":"VariableDeclaration","scope":5087,"src":"6749:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5022,"name":"address","nodeType":"ElementaryTypeName","src":"6749:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5025,"mutability":"mutable","name":"target","nameLocation":"6781:6:15","nodeType":"VariableDeclaration","scope":5087,"src":"6773:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5024,"name":"address","nodeType":"ElementaryTypeName","src":"6773:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5027,"mutability":"mutable","name":"selector","nameLocation":"6804:8:15","nodeType":"VariableDeclaration","scope":5087,"src":"6797:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5026,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6797:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"6739:79:15"},"returnParameters":{"id":5033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5030,"mutability":"mutable","name":"immediate","nameLocation":"6853:9:15","nodeType":"VariableDeclaration","scope":5087,"src":"6848:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5029,"name":"bool","nodeType":"ElementaryTypeName","src":"6848:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5032,"mutability":"mutable","name":"delay","nameLocation":"6871:5:15","nodeType":"VariableDeclaration","scope":5087,"src":"6864:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5031,"name":"uint32","nodeType":"ElementaryTypeName","src":"6864:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6847:30:15"},"scope":6781,"src":"6723:802:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7003],"body":{"id":5095,"nodeType":"Block","src":"7625:31:15","statements":[{"expression":{"hexValue":"31","id":5093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7642:7:15","subdenomination":"weeks","typeDescriptions":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"value":"1"},"functionReturnParameters":5092,"id":5094,"nodeType":"Return","src":"7635:14:15"}]},"documentation":{"id":5088,"nodeType":"StructuredDocumentation","src":"7531:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4665096d","id":5096,"implemented":true,"kind":"function","modifiers":[],"name":"expiration","nameLocation":"7575:10:15","nodeType":"FunctionDefinition","parameters":{"id":5089,"nodeType":"ParameterList","parameters":[],"src":"7585:2:15"},"returnParameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5096,"src":"7617:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5090,"name":"uint32","nodeType":"ElementaryTypeName","src":"7617:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7616:8:15"},"scope":6781,"src":"7566:90:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7009],"body":{"id":5104,"nodeType":"Block","src":"7756:30:15","statements":[{"expression":{"hexValue":"35","id":5102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7773:6:15","subdenomination":"days","typeDescriptions":{"typeIdentifier":"t_rational_432000_by_1","typeString":"int_const 432000"},"value":"5"},"functionReturnParameters":5101,"id":5103,"nodeType":"Return","src":"7766:13:15"}]},"documentation":{"id":5097,"nodeType":"StructuredDocumentation","src":"7662:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"cc1b6c81","id":5105,"implemented":true,"kind":"function","modifiers":[],"name":"minSetback","nameLocation":"7706:10:15","nodeType":"FunctionDefinition","parameters":{"id":5098,"nodeType":"ParameterList","parameters":[],"src":"7716:2:15"},"returnParameters":{"id":5101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5105,"src":"7748:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5099,"name":"uint32","nodeType":"ElementaryTypeName","src":"7748:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7747:8:15"},"scope":6781,"src":"7697:89:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7017],"body":{"id":5118,"nodeType":"Block","src":"7902:47:15","statements":[{"expression":{"expression":{"baseExpression":{"id":5113,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"7919:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5115,"indexExpression":{"id":5114,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5108,"src":"7928:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7919:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7936:6:15","memberName":"closed","nodeType":"MemberAccess","referencedDeclaration":4926,"src":"7919:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5112,"id":5117,"nodeType":"Return","src":"7912:30:15"}]},"documentation":{"id":5106,"nodeType":"StructuredDocumentation","src":"7792:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"a166aa89","id":5119,"implemented":true,"kind":"function","modifiers":[],"name":"isTargetClosed","nameLocation":"7836:14:15","nodeType":"FunctionDefinition","parameters":{"id":5109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5108,"mutability":"mutable","name":"target","nameLocation":"7859:6:15","nodeType":"VariableDeclaration","scope":5119,"src":"7851:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5107,"name":"address","nodeType":"ElementaryTypeName","src":"7851:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7850:16:15"},"returnParameters":{"id":5112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5111,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5119,"src":"7896:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5110,"name":"bool","nodeType":"ElementaryTypeName","src":"7896:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7895:6:15"},"scope":6781,"src":"7827:122:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7027],"body":{"id":5136,"nodeType":"Block","src":"8091:63:15","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5129,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"8108:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5131,"indexExpression":{"id":5130,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5122,"src":"8117:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8108:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8125:12:15","memberName":"allowedRoles","nodeType":"MemberAccess","referencedDeclaration":4921,"src":"8108:29:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"}},"id":5134,"indexExpression":{"id":5133,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"8138:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8108:39:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5128,"id":5135,"nodeType":"Return","src":"8101:46:15"}]},"documentation":{"id":5120,"nodeType":"StructuredDocumentation","src":"7955:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"6d5115bd","id":5137,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetFunctionRole","nameLocation":"7999:21:15","nodeType":"FunctionDefinition","parameters":{"id":5125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5122,"mutability":"mutable","name":"target","nameLocation":"8029:6:15","nodeType":"VariableDeclaration","scope":5137,"src":"8021:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5121,"name":"address","nodeType":"ElementaryTypeName","src":"8021:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5124,"mutability":"mutable","name":"selector","nameLocation":"8044:8:15","nodeType":"VariableDeclaration","scope":5137,"src":"8037:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5123,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8037:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"8020:33:15"},"returnParameters":{"id":5128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5137,"src":"8083:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5126,"name":"uint64","nodeType":"ElementaryTypeName","src":"8083:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8082:8:15"},"scope":6781,"src":"7990:164:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7035],"body":{"id":5152,"nodeType":"Block","src":"8277:57:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":5145,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"8294:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5147,"indexExpression":{"id":5146,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5140,"src":"8303:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8294:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8311:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4924,"src":"8294:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8322:3:15","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":13202,"src":"8294:31:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":5150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8294:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5144,"id":5151,"nodeType":"Return","src":"8287:40:15"}]},"documentation":{"id":5138,"nodeType":"StructuredDocumentation","src":"8160:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4c1da1e2","id":5153,"implemented":true,"kind":"function","modifiers":[],"name":"getTargetAdminDelay","nameLocation":"8204:19:15","nodeType":"FunctionDefinition","parameters":{"id":5141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5140,"mutability":"mutable","name":"target","nameLocation":"8232:6:15","nodeType":"VariableDeclaration","scope":5153,"src":"8224:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5139,"name":"address","nodeType":"ElementaryTypeName","src":"8224:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8223:16:15"},"returnParameters":{"id":5144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5153,"src":"8269:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5142,"name":"uint32","nodeType":"ElementaryTypeName","src":"8269:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8268:8:15"},"scope":6781,"src":"8195:139:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7043],"body":{"id":5166,"nodeType":"Block","src":"8449:44:15","statements":[{"expression":{"expression":{"baseExpression":{"id":5161,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"8466:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5163,"indexExpression":{"id":5162,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5156,"src":"8473:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8466:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8481:5:15","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"8466:20:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5160,"id":5165,"nodeType":"Return","src":"8459:27:15"}]},"documentation":{"id":5154,"nodeType":"StructuredDocumentation","src":"8340:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"530dd456","id":5167,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"8384:12:15","nodeType":"FunctionDefinition","parameters":{"id":5157,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5156,"mutability":"mutable","name":"roleId","nameLocation":"8404:6:15","nodeType":"VariableDeclaration","scope":5167,"src":"8397:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5155,"name":"uint64","nodeType":"ElementaryTypeName","src":"8397:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8396:15:15"},"returnParameters":{"id":5160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5167,"src":"8441:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5158,"name":"uint64","nodeType":"ElementaryTypeName","src":"8441:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8440:8:15"},"scope":6781,"src":"8375:118:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7051],"body":{"id":5180,"nodeType":"Block","src":"8611:47:15","statements":[{"expression":{"expression":{"baseExpression":{"id":5175,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"8628:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5177,"indexExpression":{"id":5176,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5170,"src":"8635:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8628:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5178,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8643:8:15","memberName":"guardian","nodeType":"MemberAccess","referencedDeclaration":4942,"src":"8628:23:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5174,"id":5179,"nodeType":"Return","src":"8621:30:15"}]},"documentation":{"id":5168,"nodeType":"StructuredDocumentation","src":"8499:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"0b0a93ba","id":5181,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleGuardian","nameLocation":"8543:15:15","nodeType":"FunctionDefinition","parameters":{"id":5171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5170,"mutability":"mutable","name":"roleId","nameLocation":"8566:6:15","nodeType":"VariableDeclaration","scope":5181,"src":"8559:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5169,"name":"uint64","nodeType":"ElementaryTypeName","src":"8559:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8558:15:15"},"returnParameters":{"id":5174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5181,"src":"8603:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5172,"name":"uint64","nodeType":"ElementaryTypeName","src":"8603:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8602:8:15"},"scope":6781,"src":"8534:124:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7059],"body":{"id":5196,"nodeType":"Block","src":"8778:55:15","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"id":5189,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"8795:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5191,"indexExpression":{"id":5190,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5184,"src":"8802:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8795:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8810:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4945,"src":"8795:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8821:3:15","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":13202,"src":"8795:29:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":5194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8795:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5188,"id":5195,"nodeType":"Return","src":"8788:38:15"}]},"documentation":{"id":5182,"nodeType":"StructuredDocumentation","src":"8664:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"12be8727","id":5197,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleGrantDelay","nameLocation":"8708:17:15","nodeType":"FunctionDefinition","parameters":{"id":5185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5184,"mutability":"mutable","name":"roleId","nameLocation":"8733:6:15","nodeType":"VariableDeclaration","scope":5197,"src":"8726:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5183,"name":"uint64","nodeType":"ElementaryTypeName","src":"8726:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8725:15:15"},"returnParameters":{"id":5188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5197,"src":"8770:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5186,"name":"uint32","nodeType":"ElementaryTypeName","src":"8770:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8769:8:15"},"scope":6781,"src":"8699:134:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7075],"body":{"id":5244,"nodeType":"Block","src":"9047:235:15","statements":[{"assignments":[5215],"declarations":[{"constant":false,"id":5215,"mutability":"mutable","name":"access","nameLocation":"9072:6:15","nodeType":"VariableDeclaration","scope":5244,"src":"9057:21:15","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage_ptr","typeString":"struct AccessManager.Access"},"typeName":{"id":5214,"nodeType":"UserDefinedTypeName","pathNode":{"id":5213,"name":"Access","nameLocations":["9057:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":4933,"src":"9057:6:15"},"referencedDeclaration":4933,"src":"9057:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage_ptr","typeString":"struct AccessManager.Access"}},"visibility":"internal"}],"id":5222,"initialValue":{"baseExpression":{"expression":{"baseExpression":{"id":5216,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"9081:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5218,"indexExpression":{"id":5217,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5200,"src":"9088:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9081:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5219,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9096:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"9081:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5221,"indexExpression":{"id":5220,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5202,"src":"9104:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9081:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9057:55:15"},{"expression":{"id":5226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5223,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5205,"src":"9123:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":5224,"name":"access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"9131:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage_ptr","typeString":"struct AccessManager.Access storage pointer"}},"id":5225,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9138:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4929,"src":"9131:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9123:20:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5227,"nodeType":"ExpressionStatement","src":"9123:20:15"},{"expression":{"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":5228,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"9154:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5229,"name":"pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"9168:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5230,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"9182:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5231,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9153: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":5232,"name":"access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5215,"src":"9192:6:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage_ptr","typeString":"struct AccessManager.Access storage pointer"}},"id":5233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9199:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4932,"src":"9192:12:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9205:7:15","memberName":"getFull","nodeType":"MemberAccess","referencedDeclaration":13184,"src":"9192:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) view returns (uint32,uint32,uint48)"}},"id":5235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"src":"9153:61:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5237,"nodeType":"ExpressionStatement","src":"9153:61:15"},{"expression":{"components":[{"id":5238,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5205,"src":"9233:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5239,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5207,"src":"9240:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5240,"name":"pendingDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5209,"src":"9254:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5241,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5211,"src":"9268:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5242,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9232:43:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint48_$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint48,uint32,uint32,uint48)"}},"functionReturnParameters":5212,"id":5243,"nodeType":"Return","src":"9225:50:15"}]},"documentation":{"id":5198,"nodeType":"StructuredDocumentation","src":"8839:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"3078f114","id":5245,"implemented":true,"kind":"function","modifiers":[],"name":"getAccess","nameLocation":"8883:9:15","nodeType":"FunctionDefinition","parameters":{"id":5203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5200,"mutability":"mutable","name":"roleId","nameLocation":"8909:6:15","nodeType":"VariableDeclaration","scope":5245,"src":"8902:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5199,"name":"uint64","nodeType":"ElementaryTypeName","src":"8902:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5202,"mutability":"mutable","name":"account","nameLocation":"8933:7:15","nodeType":"VariableDeclaration","scope":5245,"src":"8925:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5201,"name":"address","nodeType":"ElementaryTypeName","src":"8925:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8892:54:15"},"returnParameters":{"id":5212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5205,"mutability":"mutable","name":"since","nameLocation":"8983:5:15","nodeType":"VariableDeclaration","scope":5245,"src":"8976:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5204,"name":"uint48","nodeType":"ElementaryTypeName","src":"8976:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5207,"mutability":"mutable","name":"currentDelay","nameLocation":"8997:12:15","nodeType":"VariableDeclaration","scope":5245,"src":"8990:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5206,"name":"uint32","nodeType":"ElementaryTypeName","src":"8990:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5209,"mutability":"mutable","name":"pendingDelay","nameLocation":"9018:12:15","nodeType":"VariableDeclaration","scope":5245,"src":"9011:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5208,"name":"uint32","nodeType":"ElementaryTypeName","src":"9011:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5211,"mutability":"mutable","name":"effect","nameLocation":"9039:6:15","nodeType":"VariableDeclaration","scope":5245,"src":"9032:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5210,"name":"uint48","nodeType":"ElementaryTypeName","src":"9032:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"8975:71:15"},"scope":6781,"src":"8874:408:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7087],"body":{"id":5288,"nodeType":"Block","src":"9461:280:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5257,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"9475:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5258,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"9485:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"9475:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5286,"nodeType":"Block","src":"9545:190:15","statements":[{"assignments":[5266,5268,null,null],"declarations":[{"constant":false,"id":5266,"mutability":"mutable","name":"hasRoleSince","nameLocation":"9567:12:15","nodeType":"VariableDeclaration","scope":5286,"src":"9560:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5265,"name":"uint48","nodeType":"ElementaryTypeName","src":"9560:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":5268,"mutability":"mutable","name":"currentDelay","nameLocation":"9588:12:15","nodeType":"VariableDeclaration","scope":5286,"src":"9581:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5267,"name":"uint32","nodeType":"ElementaryTypeName","src":"9581:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null],"id":5273,"initialValue":{"arguments":[{"id":5270,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5248,"src":"9618:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5271,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5250,"src":"9626:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5269,"name":"getAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5245,"src":"9608: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":5272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9608: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":"9559:75:15"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5274,"name":"hasRoleSince","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"9656:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9672:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9656:17:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5277,"name":"hasRoleSince","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5266,"src":"9677:12:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5278,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"9693:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$13348_$","typeString":"type(library Time)"}},"id":5279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9698:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13096,"src":"9693:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9693:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"9677:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9656:53:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":5283,"name":"currentDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5268,"src":"9711:12:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":5284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9655:69:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":5256,"id":5285,"nodeType":"Return","src":"9648:76:15"}]},"id":5287,"nodeType":"IfStatement","src":"9471:264:15","trueBody":{"id":5264,"nodeType":"Block","src":"9498:41:15","statements":[{"expression":{"components":[{"hexValue":"74727565","id":5260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9520:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":5261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9526:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9519:9:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":5256,"id":5263,"nodeType":"Return","src":"9512:16:15"}]}}]},"documentation":{"id":5246,"nodeType":"StructuredDocumentation","src":"9288:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d1f856ee","id":5289,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"9332:7:15","nodeType":"FunctionDefinition","parameters":{"id":5251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5248,"mutability":"mutable","name":"roleId","nameLocation":"9356:6:15","nodeType":"VariableDeclaration","scope":5289,"src":"9349:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5247,"name":"uint64","nodeType":"ElementaryTypeName","src":"9349:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5250,"mutability":"mutable","name":"account","nameLocation":"9380:7:15","nodeType":"VariableDeclaration","scope":5289,"src":"9372:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5249,"name":"address","nodeType":"ElementaryTypeName","src":"9372:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9339:54:15"},"returnParameters":{"id":5256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5253,"mutability":"mutable","name":"isMember","nameLocation":"9428:8:15","nodeType":"VariableDeclaration","scope":5289,"src":"9423:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5252,"name":"bool","nodeType":"ElementaryTypeName","src":"9423:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5255,"mutability":"mutable","name":"executionDelay","nameLocation":"9445:14:15","nodeType":"VariableDeclaration","scope":5289,"src":"9438:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5254,"name":"uint32","nodeType":"ElementaryTypeName","src":"9438:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9422:38:15"},"scope":6781,"src":"9323:418:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7095],"body":{"id":5317,"nodeType":"Block","src":"9988:169:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5299,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"10002:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5300,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"10012:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"10002:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5302,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"10026:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5303,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"10036:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"10026:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10002:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5311,"nodeType":"IfStatement","src":"9998:114:15","trueBody":{"id":5310,"nodeType":"Block","src":"10049:63:15","statements":[{"errorCall":{"arguments":[{"id":5307,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"10094:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5306,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"10070:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10070:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5309,"nodeType":"RevertStatement","src":"10063:38:15"}]}},{"eventCall":{"arguments":[{"id":5313,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5292,"src":"10136:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5314,"name":"label","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"10144: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":5312,"name":"RoleLabel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"10126:9:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint64,string memory)"}},"id":5315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10126:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5316,"nodeType":"EmitStatement","src":"10121:29:15"}]},"documentation":{"id":5290,"nodeType":"StructuredDocumentation","src":"9866:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"853551b8","id":5318,"implemented":true,"kind":"function","modifiers":[{"id":5297,"kind":"modifierInvocation","modifierName":{"id":5296,"name":"onlyAuthorized","nameLocations":["9973:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"9973:14:15"},"nodeType":"ModifierInvocation","src":"9973:14:15"}],"name":"labelRole","nameLocation":"9910:9:15","nodeType":"FunctionDefinition","parameters":{"id":5295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5292,"mutability":"mutable","name":"roleId","nameLocation":"9927:6:15","nodeType":"VariableDeclaration","scope":5318,"src":"9920:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5291,"name":"uint64","nodeType":"ElementaryTypeName","src":"9920:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5294,"mutability":"mutable","name":"label","nameLocation":"9951:5:15","nodeType":"VariableDeclaration","scope":5318,"src":"9935:21:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":5293,"name":"string","nodeType":"ElementaryTypeName","src":"9935:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9919:38:15"},"returnParameters":{"id":5298,"nodeType":"ParameterList","parameters":[],"src":"9988:0:15"},"scope":6781,"src":"9901:256:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7105],"body":{"id":5339,"nodeType":"Block","src":"10302:87:15","statements":[{"expression":{"arguments":[{"id":5331,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5321,"src":"10323:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5332,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5323,"src":"10331:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5334,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5321,"src":"10358:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5333,"name":"getRoleGrantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5197,"src":"10340:17:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint32_$","typeString":"function (uint64) view returns (uint32)"}},"id":5335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10340:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5336,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5325,"src":"10367: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":5330,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5524,"src":"10312: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":5337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:70:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5338,"nodeType":"ExpressionStatement","src":"10312:70:15"}]},"documentation":{"id":5319,"nodeType":"StructuredDocumentation","src":"10163:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"25c471a0","id":5340,"implemented":true,"kind":"function","modifiers":[{"id":5328,"kind":"modifierInvocation","modifierName":{"id":5327,"name":"onlyAuthorized","nameLocations":["10287:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"10287:14:15"},"nodeType":"ModifierInvocation","src":"10287:14:15"}],"name":"grantRole","nameLocation":"10207:9:15","nodeType":"FunctionDefinition","parameters":{"id":5326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5321,"mutability":"mutable","name":"roleId","nameLocation":"10224:6:15","nodeType":"VariableDeclaration","scope":5340,"src":"10217:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5320,"name":"uint64","nodeType":"ElementaryTypeName","src":"10217:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5323,"mutability":"mutable","name":"account","nameLocation":"10240:7:15","nodeType":"VariableDeclaration","scope":5340,"src":"10232:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5322,"name":"address","nodeType":"ElementaryTypeName","src":"10232:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5325,"mutability":"mutable","name":"executionDelay","nameLocation":"10256:14:15","nodeType":"VariableDeclaration","scope":5340,"src":"10249:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5324,"name":"uint32","nodeType":"ElementaryTypeName","src":"10249:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"10216:55:15"},"returnParameters":{"id":5329,"nodeType":"ParameterList","parameters":[],"src":"10302:0:15"},"scope":6781,"src":"10198:191:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7113],"body":{"id":5355,"nodeType":"Block","src":"10512:45:15","statements":[{"expression":{"arguments":[{"id":5351,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"10534:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5352,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"10542:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5350,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"10522:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$returns$_t_bool_$","typeString":"function (uint64,address) returns (bool)"}},"id":5353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10522:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5354,"nodeType":"ExpressionStatement","src":"10522:28:15"}]},"documentation":{"id":5341,"nodeType":"StructuredDocumentation","src":"10395:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"b7d2b162","id":5356,"implemented":true,"kind":"function","modifiers":[{"id":5348,"kind":"modifierInvocation","modifierName":{"id":5347,"name":"onlyAuthorized","nameLocations":["10497:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"10497:14:15"},"nodeType":"ModifierInvocation","src":"10497:14:15"}],"name":"revokeRole","nameLocation":"10439:10:15","nodeType":"FunctionDefinition","parameters":{"id":5346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5343,"mutability":"mutable","name":"roleId","nameLocation":"10457:6:15","nodeType":"VariableDeclaration","scope":5356,"src":"10450:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5342,"name":"uint64","nodeType":"ElementaryTypeName","src":"10450:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5345,"mutability":"mutable","name":"account","nameLocation":"10473:7:15","nodeType":"VariableDeclaration","scope":5356,"src":"10465:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5344,"name":"address","nodeType":"ElementaryTypeName","src":"10465:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10449:32:15"},"returnParameters":{"id":5349,"nodeType":"ParameterList","parameters":[],"src":"10512:0:15"},"scope":6781,"src":"10430:127:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7121],"body":{"id":5378,"nodeType":"Block","src":"10678:167:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5364,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"10692:18:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":5365,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"10714:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10714:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10692:34:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5372,"nodeType":"IfStatement","src":"10688:102:15","trueBody":{"id":5371,"nodeType":"Block","src":"10728:62:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":5368,"name":"AccessManagerBadConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"10749:28:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":5369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10749:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5370,"nodeType":"RevertStatement","src":"10742:37:15"}]}},{"expression":{"arguments":[{"id":5374,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5359,"src":"10811:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5375,"name":"callerConfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5361,"src":"10819:18:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5373,"name":"_revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"10799:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_address_$returns$_t_bool_$","typeString":"function (uint64,address) returns (bool)"}},"id":5376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10799:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5377,"nodeType":"ExpressionStatement","src":"10799:39:15"}]},"documentation":{"id":5357,"nodeType":"StructuredDocumentation","src":"10563:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"fe0776f5","id":5379,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"10607:12:15","nodeType":"FunctionDefinition","parameters":{"id":5362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5359,"mutability":"mutable","name":"roleId","nameLocation":"10627:6:15","nodeType":"VariableDeclaration","scope":5379,"src":"10620:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5358,"name":"uint64","nodeType":"ElementaryTypeName","src":"10620:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5361,"mutability":"mutable","name":"callerConfirmation","nameLocation":"10643:18:15","nodeType":"VariableDeclaration","scope":5379,"src":"10635:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5360,"name":"address","nodeType":"ElementaryTypeName","src":"10635:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10619:43:15"},"returnParameters":{"id":5363,"nodeType":"ParameterList","parameters":[],"src":"10678:0:15"},"scope":6781,"src":"10598:247:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7129],"body":{"id":5394,"nodeType":"Block","src":"10967:45:15","statements":[{"expression":{"arguments":[{"id":5390,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5382,"src":"10991:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5391,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"10999:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5389,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"10977:13:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10977:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5393,"nodeType":"ExpressionStatement","src":"10977:28:15"}]},"documentation":{"id":5380,"nodeType":"StructuredDocumentation","src":"10851:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"30cae187","id":5395,"implemented":true,"kind":"function","modifiers":[{"id":5387,"kind":"modifierInvocation","modifierName":{"id":5386,"name":"onlyAuthorized","nameLocations":["10952:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"10952:14:15"},"nodeType":"ModifierInvocation","src":"10952:14:15"}],"name":"setRoleAdmin","nameLocation":"10895:12:15","nodeType":"FunctionDefinition","parameters":{"id":5385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5382,"mutability":"mutable","name":"roleId","nameLocation":"10915:6:15","nodeType":"VariableDeclaration","scope":5395,"src":"10908:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5381,"name":"uint64","nodeType":"ElementaryTypeName","src":"10908:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5384,"mutability":"mutable","name":"admin","nameLocation":"10930:5:15","nodeType":"VariableDeclaration","scope":5395,"src":"10923:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5383,"name":"uint64","nodeType":"ElementaryTypeName","src":"10923:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"10907:29:15"},"returnParameters":{"id":5388,"nodeType":"ParameterList","parameters":[],"src":"10967:0:15"},"scope":6781,"src":"10886:126:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7137],"body":{"id":5410,"nodeType":"Block","src":"11140:51:15","statements":[{"expression":{"arguments":[{"id":5406,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5398,"src":"11167:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5407,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5400,"src":"11175:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5405,"name":"_setRoleGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5640,"src":"11150:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11150:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5409,"nodeType":"ExpressionStatement","src":"11150:34:15"}]},"documentation":{"id":5396,"nodeType":"StructuredDocumentation","src":"11018:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"52962952","id":5411,"implemented":true,"kind":"function","modifiers":[{"id":5403,"kind":"modifierInvocation","modifierName":{"id":5402,"name":"onlyAuthorized","nameLocations":["11125:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"11125:14:15"},"nodeType":"ModifierInvocation","src":"11125:14:15"}],"name":"setRoleGuardian","nameLocation":"11062:15:15","nodeType":"FunctionDefinition","parameters":{"id":5401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5398,"mutability":"mutable","name":"roleId","nameLocation":"11085:6:15","nodeType":"VariableDeclaration","scope":5411,"src":"11078:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5397,"name":"uint64","nodeType":"ElementaryTypeName","src":"11078:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5400,"mutability":"mutable","name":"guardian","nameLocation":"11100:8:15","nodeType":"VariableDeclaration","scope":5411,"src":"11093:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5399,"name":"uint64","nodeType":"ElementaryTypeName","src":"11093:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11077:32:15"},"returnParameters":{"id":5404,"nodeType":"ParameterList","parameters":[],"src":"11140:0:15"},"scope":6781,"src":"11053:138:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7145],"body":{"id":5426,"nodeType":"Block","src":"11317:49:15","statements":[{"expression":{"arguments":[{"id":5422,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5414,"src":"11342:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5423,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5416,"src":"11350:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5421,"name":"_setGrantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5684,"src":"11327:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint64_$_t_uint32_$returns$__$","typeString":"function (uint64,uint32)"}},"id":5424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11327:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5425,"nodeType":"ExpressionStatement","src":"11327:32:15"}]},"documentation":{"id":5412,"nodeType":"StructuredDocumentation","src":"11197:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"a64d95ce","id":5427,"implemented":true,"kind":"function","modifiers":[{"id":5419,"kind":"modifierInvocation","modifierName":{"id":5418,"name":"onlyAuthorized","nameLocations":["11302:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"11302:14:15"},"nodeType":"ModifierInvocation","src":"11302:14:15"}],"name":"setGrantDelay","nameLocation":"11241:13:15","nodeType":"FunctionDefinition","parameters":{"id":5417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5414,"mutability":"mutable","name":"roleId","nameLocation":"11262:6:15","nodeType":"VariableDeclaration","scope":5427,"src":"11255:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5413,"name":"uint64","nodeType":"ElementaryTypeName","src":"11255:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"newDelay","nameLocation":"11277:8:15","nodeType":"VariableDeclaration","scope":5427,"src":"11270:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5415,"name":"uint32","nodeType":"ElementaryTypeName","src":"11270:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11254:32:15"},"returnParameters":{"id":5420,"nodeType":"ParameterList","parameters":[],"src":"11317:0:15"},"scope":6781,"src":"11232:134:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5523,"nodeType":"Block","src":"11707:897:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5441,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"11721:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5442,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"11731:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"11721:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5449,"nodeType":"IfStatement","src":"11717:90:15","trueBody":{"id":5448,"nodeType":"Block","src":"11744:63:15","statements":[{"errorCall":{"arguments":[{"id":5445,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"11789:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5444,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"11765:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11765:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5447,"nodeType":"RevertStatement","src":"11758:38:15"}]}},{"assignments":[5451],"declarations":[{"constant":false,"id":5451,"mutability":"mutable","name":"newMember","nameLocation":"11822:9:15","nodeType":"VariableDeclaration","scope":5523,"src":"11817:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5450,"name":"bool","nodeType":"ElementaryTypeName","src":"11817:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5461,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5452,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"11834:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5454,"indexExpression":{"id":5453,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"11841:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11834:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11849:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"11834:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5457,"indexExpression":{"id":5456,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"11857:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11834:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11866:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4929,"src":"11834:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11875:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11834:42:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"11817:59:15"},{"assignments":[5463],"declarations":[{"constant":false,"id":5463,"mutability":"mutable","name":"since","nameLocation":"11893:5:15","nodeType":"VariableDeclaration","scope":5523,"src":"11886:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5462,"name":"uint48","nodeType":"ElementaryTypeName","src":"11886:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5464,"nodeType":"VariableDeclarationStatement","src":"11886:12:15"},{"condition":{"id":5465,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"11913:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5511,"nodeType":"Block","src":"12095:399:15","statements":[{"expression":{"id":5509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5489,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"12322:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5491,"indexExpression":{"id":5490,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"12329:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12322:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12337:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"12322:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5494,"indexExpression":{"id":5493,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"12345:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12322:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12354:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4932,"src":"12322:37:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},{"id":5496,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"12361:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5497,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"12321:46:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5506,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"12436:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":5507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12468: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":5498,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"12370:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5500,"indexExpression":{"id":5499,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"12377:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12370:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12385:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"12370:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5503,"indexExpression":{"id":5502,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"12393:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12370:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12402:5:15","memberName":"delay","nodeType":"MemberAccess","referencedDeclaration":4932,"src":"12370:37:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12408:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":13258,"src":"12370:48:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:113:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"12321:162:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5510,"nodeType":"ExpressionStatement","src":"12321:162:15"}]},"id":5512,"nodeType":"IfStatement","src":"11909:585:15","trueBody":{"id":5488,"nodeType":"Block","src":"11924:165:15","statements":[{"expression":{"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5466,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"11938:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5467,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"11946:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$13348_$","typeString":"type(library Time)"}},"id":5468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11951:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13096,"src":"11946:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11946:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5470,"name":"grantDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5434,"src":"11965:10:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"11946:29:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"11938:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5473,"nodeType":"ExpressionStatement","src":"11938:37:15"},{"expression":{"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":5474,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"11989:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5476,"indexExpression":{"id":5475,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"11996:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11989:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12004:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"11989:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5479,"indexExpression":{"id":5478,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"12012:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11989:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5481,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"12038:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5482,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"12052:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12067:7:15","memberName":"toDelay","nodeType":"MemberAccess","referencedDeclaration":13126,"src":"12052:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$13111_$attached_to$_t_uint32_$","typeString":"function (uint32) pure returns (Time.Delay)"}},"id":5484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12052:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}],"id":5480,"name":"Access","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4933,"src":"12023:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Access_$4933_storage_ptr_$","typeString":"type(struct AccessManager.Access storage pointer)"}},"id":5485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["12031:5:15","12045:5:15"],"names":["since","delay"],"nodeType":"FunctionCall","src":"12023:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_memory_ptr","typeString":"struct AccessManager.Access memory"}},"src":"11989:89:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5487,"nodeType":"ExpressionStatement","src":"11989:89:15"}]}},{"eventCall":{"arguments":[{"id":5514,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5430,"src":"12521:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5515,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5432,"src":"12529:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5516,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"12538:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5517,"name":"since","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5463,"src":"12554:5:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5518,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"12561: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":5513,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6874,"src":"12509: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":5519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12509:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5520,"nodeType":"EmitStatement","src":"12504:67:15"},{"expression":{"id":5521,"name":"newMember","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5451,"src":"12588:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5440,"id":5522,"nodeType":"Return","src":"12581:16:15"}]},"documentation":{"id":5428,"nodeType":"StructuredDocumentation","src":"11372: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":5524,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"11552:10:15","nodeType":"FunctionDefinition","parameters":{"id":5437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5430,"mutability":"mutable","name":"roleId","nameLocation":"11579:6:15","nodeType":"VariableDeclaration","scope":5524,"src":"11572:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5429,"name":"uint64","nodeType":"ElementaryTypeName","src":"11572:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5432,"mutability":"mutable","name":"account","nameLocation":"11603:7:15","nodeType":"VariableDeclaration","scope":5524,"src":"11595:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5431,"name":"address","nodeType":"ElementaryTypeName","src":"11595:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5434,"mutability":"mutable","name":"grantDelay","nameLocation":"11627:10:15","nodeType":"VariableDeclaration","scope":5524,"src":"11620:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5433,"name":"uint32","nodeType":"ElementaryTypeName","src":"11620:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5436,"mutability":"mutable","name":"executionDelay","nameLocation":"11654:14:15","nodeType":"VariableDeclaration","scope":5524,"src":"11647:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5435,"name":"uint32","nodeType":"ElementaryTypeName","src":"11647:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11562:112:15"},"returnParameters":{"id":5440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5524,"src":"11701:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5438,"name":"bool","nodeType":"ElementaryTypeName","src":"11701:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11700:6:15"},"scope":6781,"src":"11543:1061:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5571,"nodeType":"Block","src":"12950:315:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5534,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"12964:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5535,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"12974:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"12964:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5542,"nodeType":"IfStatement","src":"12960:90:15","trueBody":{"id":5541,"nodeType":"Block","src":"12987:63:15","statements":[{"errorCall":{"arguments":[{"id":5538,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"13032:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5537,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"13008:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13008:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5540,"nodeType":"RevertStatement","src":"13001:38:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"expression":{"baseExpression":{"id":5543,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"13064:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5545,"indexExpression":{"id":5544,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"13071:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13064:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13079:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"13064:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5548,"indexExpression":{"id":5547,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"13087:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13064:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"id":5549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13096:5:15","memberName":"since","nodeType":"MemberAccess","referencedDeclaration":4929,"src":"13064:37:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13105:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13064:42:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5555,"nodeType":"IfStatement","src":"13060:85:15","trueBody":{"id":5554,"nodeType":"Block","src":"13108:37:15","statements":[{"expression":{"hexValue":"66616c7365","id":5552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13129:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":5533,"id":5553,"nodeType":"Return","src":"13122:12:15"}]}},{"expression":{"id":5562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"13155:38:15","subExpression":{"baseExpression":{"expression":{"baseExpression":{"id":5556,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"13162:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5558,"indexExpression":{"id":5557,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"13169:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13162:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13177:7:15","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":4938,"src":"13162:22:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_Access_$4933_storage_$","typeString":"mapping(address => struct AccessManager.Access storage ref)"}},"id":5561,"indexExpression":{"id":5560,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"13185:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13162:31:15","typeDescriptions":{"typeIdentifier":"t_struct$_Access_$4933_storage","typeString":"struct AccessManager.Access storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5563,"nodeType":"ExpressionStatement","src":"13155:38:15"},{"eventCall":{"arguments":[{"id":5565,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5527,"src":"13221:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5566,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5529,"src":"13229:7:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5564,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6881,"src":"13209:11:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_address_$returns$__$","typeString":"function (uint64,address)"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13209:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5568,"nodeType":"EmitStatement","src":"13204:33:15"},{"expression":{"hexValue":"74727565","id":5569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13254:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":5533,"id":5570,"nodeType":"Return","src":"13247:11:15"}]},"documentation":{"id":5525,"nodeType":"StructuredDocumentation","src":"12610: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":5572,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"12874:11:15","nodeType":"FunctionDefinition","parameters":{"id":5530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5527,"mutability":"mutable","name":"roleId","nameLocation":"12893:6:15","nodeType":"VariableDeclaration","scope":5572,"src":"12886:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5526,"name":"uint64","nodeType":"ElementaryTypeName","src":"12886:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5529,"mutability":"mutable","name":"account","nameLocation":"12909:7:15","nodeType":"VariableDeclaration","scope":5572,"src":"12901:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5528,"name":"address","nodeType":"ElementaryTypeName","src":"12901:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12885:32:15"},"returnParameters":{"id":5533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5572,"src":"12944:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5531,"name":"bool","nodeType":"ElementaryTypeName","src":"12944:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12943:6:15"},"scope":6781,"src":"12865:400:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5605,"nodeType":"Block","src":"13629:216:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5580,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"13643:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5581,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"13653:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13643:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5583,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"13667:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5584,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"13677:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13667:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13643:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5592,"nodeType":"IfStatement","src":"13639:114:15","trueBody":{"id":5591,"nodeType":"Block","src":"13690:63:15","statements":[{"errorCall":{"arguments":[{"id":5588,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"13735:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5587,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"13711:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13711:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5590,"nodeType":"RevertStatement","src":"13704:38:15"}]}},{"expression":{"id":5598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5593,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"13763:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5595,"indexExpression":{"id":5594,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"13770:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13763:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13778:5:15","memberName":"admin","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"13763:20:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5597,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"13786:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13763:28:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5599,"nodeType":"ExpressionStatement","src":"13763:28:15"},{"eventCall":{"arguments":[{"id":5601,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"13824:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5602,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5577,"src":"13832:5:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5600,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"13807:16:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13807:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5604,"nodeType":"EmitStatement","src":"13802:36:15"}]},"documentation":{"id":5573,"nodeType":"StructuredDocumentation","src":"13271: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":5606,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"13569:13:15","nodeType":"FunctionDefinition","parameters":{"id":5578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5575,"mutability":"mutable","name":"roleId","nameLocation":"13590:6:15","nodeType":"VariableDeclaration","scope":5606,"src":"13583:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5574,"name":"uint64","nodeType":"ElementaryTypeName","src":"13583:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5577,"mutability":"mutable","name":"admin","nameLocation":"13605:5:15","nodeType":"VariableDeclaration","scope":5606,"src":"13598:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5576,"name":"uint64","nodeType":"ElementaryTypeName","src":"13598:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13582:29:15"},"returnParameters":{"id":5579,"nodeType":"ParameterList","parameters":[],"src":"13629:0:15"},"scope":6781,"src":"13560:285:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5639,"nodeType":"Block","src":"14239:228:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5614,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"14253:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5615,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"14263:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14253:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5617,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"14277:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5618,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"14287:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14277:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14253:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5626,"nodeType":"IfStatement","src":"14249:114:15","trueBody":{"id":5625,"nodeType":"Block","src":"14300:63:15","statements":[{"errorCall":{"arguments":[{"id":5622,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"14345:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5621,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14321:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14321:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5624,"nodeType":"RevertStatement","src":"14314:38:15"}]}},{"expression":{"id":5632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5627,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"14373:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5629,"indexExpression":{"id":5628,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"14380:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14373:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14388:8:15","memberName":"guardian","nodeType":"MemberAccess","referencedDeclaration":4942,"src":"14373:23:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5631,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5611,"src":"14399:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14373:34:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5633,"nodeType":"ExpressionStatement","src":"14373:34:15"},{"eventCall":{"arguments":[{"id":5635,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5609,"src":"14443:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5636,"name":"guardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5611,"src":"14451:8:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5634,"name":"RoleGuardianChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6895,"src":"14423:19:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64)"}},"id":5637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14423:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5638,"nodeType":"EmitStatement","src":"14418:42:15"}]},"documentation":{"id":5607,"nodeType":"StructuredDocumentation","src":"13851: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":5640,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleGuardian","nameLocation":"14173:16:15","nodeType":"FunctionDefinition","parameters":{"id":5612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5609,"mutability":"mutable","name":"roleId","nameLocation":"14197:6:15","nodeType":"VariableDeclaration","scope":5640,"src":"14190:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5608,"name":"uint64","nodeType":"ElementaryTypeName","src":"14190:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5611,"mutability":"mutable","name":"guardian","nameLocation":"14212:8:15","nodeType":"VariableDeclaration","scope":5640,"src":"14205:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5610,"name":"uint64","nodeType":"ElementaryTypeName","src":"14205:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"14189:32:15"},"returnParameters":{"id":5613,"nodeType":"ParameterList","parameters":[],"src":"14239:0:15"},"scope":6781,"src":"14164:303:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5683,"nodeType":"Block","src":"14687:301:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":5650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5648,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"14701:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5649,"name":"PUBLIC_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4967,"src":"14711:11:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"14701:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5656,"nodeType":"IfStatement","src":"14697:90:15","trueBody":{"id":5655,"nodeType":"Block","src":"14724:63:15","statements":[{"errorCall":{"arguments":[{"id":5652,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"14769:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":5651,"name":"AccessManagerLockedRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"14745:23:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint64_$returns$_t_error_$","typeString":"function (uint64) pure returns (error)"}},"id":5653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14745:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5654,"nodeType":"RevertStatement","src":"14738:38:15"}]}},{"assignments":[5658],"declarations":[{"constant":false,"id":5658,"mutability":"mutable","name":"effect","nameLocation":"14804:6:15","nodeType":"VariableDeclaration","scope":5683,"src":"14797:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5657,"name":"uint48","nodeType":"ElementaryTypeName","src":"14797:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5659,"nodeType":"VariableDeclarationStatement","src":"14797:13:15"},{"expression":{"id":5675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"id":5660,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"14821:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5662,"indexExpression":{"id":5661,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"14828:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14821:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14836:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4945,"src":"14821:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},{"id":5664,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5658,"src":"14848:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5665,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"14820:35:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5671,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"14895:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5672,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5105,"src":"14905:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14905: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":5666,"name":"_roles","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"14858:6:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint64_$_t_struct$_Role_$4946_storage_$","typeString":"mapping(uint64 => struct AccessManager.Role storage ref)"}},"id":5668,"indexExpression":{"id":5667,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"14865:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14858:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Role_$4946_storage","typeString":"struct AccessManager.Role storage ref"}},"id":5669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14873:10:15","memberName":"grantDelay","nodeType":"MemberAccess","referencedDeclaration":4945,"src":"14858:25:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14884:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":13258,"src":"14858:36:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14858:60:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"14820:98:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5676,"nodeType":"ExpressionStatement","src":"14820:98:15"},{"eventCall":{"arguments":[{"id":5678,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5643,"src":"14956:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":5679,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5645,"src":"14964:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5680,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5658,"src":"14974: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":5677,"name":"RoleGrantDelayChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6904,"src":"14934:21:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$_t_uint32_$_t_uint48_$returns$__$","typeString":"function (uint64,uint32,uint48)"}},"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14934:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5682,"nodeType":"EmitStatement","src":"14929:52:15"}]},"documentation":{"id":5641,"nodeType":"StructuredDocumentation","src":"14473:136:15","text":" @dev Internal version of {setGrantDelay} without access control.\n Emits a {RoleGrantDelayChanged} event."},"id":5684,"implemented":true,"kind":"function","modifiers":[],"name":"_setGrantDelay","nameLocation":"14623:14:15","nodeType":"FunctionDefinition","parameters":{"id":5646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"roleId","nameLocation":"14645:6:15","nodeType":"VariableDeclaration","scope":5684,"src":"14638:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5642,"name":"uint64","nodeType":"ElementaryTypeName","src":"14638:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"newDelay","nameLocation":"14660:8:15","nodeType":"VariableDeclaration","scope":5684,"src":"14653:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5644,"name":"uint32","nodeType":"ElementaryTypeName","src":"14653:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14637:32:15"},"returnParameters":{"id":5647,"nodeType":"ParameterList","parameters":[],"src":"14687:0:15"},"scope":6781,"src":"14614:374:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[7156],"body":{"id":5718,"nodeType":"Block","src":"15300:140:15","statements":[{"body":{"id":5716,"nodeType":"Block","src":"15357:77:15","statements":[{"expression":{"arguments":[{"id":5709,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5687,"src":"15394:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":5710,"name":"selectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"15402:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[] calldata"}},"id":5712,"indexExpression":{"id":5711,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"15412:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15402:12:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":5713,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5692,"src":"15416: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":5708,"name":"_setTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5745,"src":"15371:22:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes4_$_t_uint64_$returns$__$","typeString":"function (address,bytes4,uint64)"}},"id":5714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15371:52:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5715,"nodeType":"ExpressionStatement","src":"15371:52:15"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5701,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"15330:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":5702,"name":"selectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5690,"src":"15334:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[] calldata"}},"id":5703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15344:6:15","memberName":"length","nodeType":"MemberAccess","src":"15334:16:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15330:20:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5717,"initializationExpression":{"assignments":[5698],"declarations":[{"constant":false,"id":5698,"mutability":"mutable","name":"i","nameLocation":"15323:1:15","nodeType":"VariableDeclaration","scope":5717,"src":"15315:9:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5697,"name":"uint256","nodeType":"ElementaryTypeName","src":"15315:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5700,"initialValue":{"hexValue":"30","id":5699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15327:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15315:13:15"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":5706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15352:3:15","subExpression":{"id":5705,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5698,"src":"15354:1:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5707,"nodeType":"ExpressionStatement","src":"15352:3:15"},"nodeType":"ForStatement","src":"15310:124:15"}]},"documentation":{"id":5685,"nodeType":"StructuredDocumentation","src":"15114:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"08d6122d","id":5719,"implemented":true,"kind":"function","modifiers":[{"id":5695,"kind":"modifierInvocation","modifierName":{"id":5694,"name":"onlyAuthorized","nameLocations":["15285:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"15285:14:15"},"nodeType":"ModifierInvocation","src":"15285:14:15"}],"name":"setTargetFunctionRole","nameLocation":"15158:21:15","nodeType":"FunctionDefinition","parameters":{"id":5693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5687,"mutability":"mutable","name":"target","nameLocation":"15197:6:15","nodeType":"VariableDeclaration","scope":5719,"src":"15189:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5686,"name":"address","nodeType":"ElementaryTypeName","src":"15189:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5690,"mutability":"mutable","name":"selectors","nameLocation":"15231:9:15","nodeType":"VariableDeclaration","scope":5719,"src":"15213:27:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":5688,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15213:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":5689,"nodeType":"ArrayTypeName","src":"15213:8:15","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":5692,"mutability":"mutable","name":"roleId","nameLocation":"15257:6:15","nodeType":"VariableDeclaration","scope":5719,"src":"15250:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5691,"name":"uint64","nodeType":"ElementaryTypeName","src":"15250:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"15179:90:15"},"returnParameters":{"id":5696,"nodeType":"ParameterList","parameters":[],"src":"15300:0:15"},"scope":6781,"src":"15149:291:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5744,"nodeType":"Block","src":"15696:131:15","statements":[{"expression":{"id":5736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"id":5729,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"15706:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5731,"indexExpression":{"id":5730,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"15715:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15706:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5732,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15723:12:15","memberName":"allowedRoles","nodeType":"MemberAccess","referencedDeclaration":4921,"src":"15706:29:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_uint64_$","typeString":"mapping(bytes4 => uint64)"}},"id":5734,"indexExpression":{"id":5733,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"15736:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15706:39:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5735,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5726,"src":"15748:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"15706:48:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":5737,"nodeType":"ExpressionStatement","src":"15706:48:15"},{"eventCall":{"arguments":[{"id":5739,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5722,"src":"15795:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5740,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5724,"src":"15803:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":5741,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5726,"src":"15813: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":5738,"name":"TargetFunctionRoleUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6920,"src":"15769:25:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes4_$_t_uint64_$returns$__$","typeString":"function (address,bytes4,uint64)"}},"id":5742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15769:51:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5743,"nodeType":"EmitStatement","src":"15764:56:15"}]},"documentation":{"id":5720,"nodeType":"StructuredDocumentation","src":"15446:148:15","text":" @dev Internal version of {setTargetFunctionRole} without access control.\n Emits a {TargetFunctionRoleUpdated} event."},"id":5745,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetFunctionRole","nameLocation":"15608:22:15","nodeType":"FunctionDefinition","parameters":{"id":5727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5722,"mutability":"mutable","name":"target","nameLocation":"15639:6:15","nodeType":"VariableDeclaration","scope":5745,"src":"15631:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5721,"name":"address","nodeType":"ElementaryTypeName","src":"15631:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5724,"mutability":"mutable","name":"selector","nameLocation":"15654:8:15","nodeType":"VariableDeclaration","scope":5745,"src":"15647:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5723,"name":"bytes4","nodeType":"ElementaryTypeName","src":"15647:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":5726,"mutability":"mutable","name":"roleId","nameLocation":"15671:6:15","nodeType":"VariableDeclaration","scope":5745,"src":"15664:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5725,"name":"uint64","nodeType":"ElementaryTypeName","src":"15664:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"15630:48:15"},"returnParameters":{"id":5728,"nodeType":"ParameterList","parameters":[],"src":"15696:0:15"},"scope":6781,"src":"15599:228:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[7164],"body":{"id":5760,"nodeType":"Block","src":"15960:55:15","statements":[{"expression":{"arguments":[{"id":5756,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5748,"src":"15991:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5757,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5750,"src":"15999:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":5755,"name":"_setTargetAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"15970:20:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint32_$returns$__$","typeString":"function (address,uint32)"}},"id":5758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15970:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5759,"nodeType":"ExpressionStatement","src":"15970:38:15"}]},"documentation":{"id":5746,"nodeType":"StructuredDocumentation","src":"15833:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d22b5989","id":5761,"implemented":true,"kind":"function","modifiers":[{"id":5753,"kind":"modifierInvocation","modifierName":{"id":5752,"name":"onlyAuthorized","nameLocations":["15945:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"15945:14:15"},"nodeType":"ModifierInvocation","src":"15945:14:15"}],"name":"setTargetAdminDelay","nameLocation":"15877:19:15","nodeType":"FunctionDefinition","parameters":{"id":5751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5748,"mutability":"mutable","name":"target","nameLocation":"15905:6:15","nodeType":"VariableDeclaration","scope":5761,"src":"15897:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5747,"name":"address","nodeType":"ElementaryTypeName","src":"15897:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5750,"mutability":"mutable","name":"newDelay","nameLocation":"15920:8:15","nodeType":"VariableDeclaration","scope":5761,"src":"15913:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5749,"name":"uint32","nodeType":"ElementaryTypeName","src":"15913:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15896:33:15"},"returnParameters":{"id":5754,"nodeType":"ParameterList","parameters":[],"src":"15960:0:15"},"scope":6781,"src":"15868:147:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5795,"nodeType":"Block","src":"16250:207:15","statements":[{"assignments":[5770],"declarations":[{"constant":false,"id":5770,"mutability":"mutable","name":"effect","nameLocation":"16267:6:15","nodeType":"VariableDeclaration","scope":5795,"src":"16260:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5769,"name":"uint48","nodeType":"ElementaryTypeName","src":"16260:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5771,"nodeType":"VariableDeclarationStatement","src":"16260:13:15"},{"expression":{"id":5787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"expression":{"baseExpression":{"id":5772,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"16284:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5774,"indexExpression":{"id":5773,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"16293:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16284:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16301:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4924,"src":"16284:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},{"id":5776,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"16313:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":5777,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16283:37:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5783,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"16362:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5784,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5105,"src":"16372:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16372: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":5778,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"16323:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5780,"indexExpression":{"id":5779,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"16332:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16323:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16340:10:15","memberName":"adminDelay","nodeType":"MemberAccess","referencedDeclaration":4924,"src":"16323:27:15","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16351:10:15","memberName":"withUpdate","nodeType":"MemberAccess","referencedDeclaration":13258,"src":"16323:38:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$_t_uint32_$_t_uint32_$returns$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay,uint32,uint32) view returns (Time.Delay,uint48)"}},"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16323:62:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"src":"16283:102:15","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5788,"nodeType":"ExpressionStatement","src":"16283:102:15"},{"eventCall":{"arguments":[{"id":5790,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"16425:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5791,"name":"newDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"16433:8:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5792,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5770,"src":"16443: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":5789,"name":"TargetAdminDelayUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6929,"src":"16401:23:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint32_$_t_uint48_$returns$__$","typeString":"function (address,uint32,uint48)"}},"id":5793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16401:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5794,"nodeType":"EmitStatement","src":"16396:54:15"}]},"documentation":{"id":5762,"nodeType":"StructuredDocumentation","src":"16021:144:15","text":" @dev Internal version of {setTargetAdminDelay} without access control.\n Emits a {TargetAdminDelayUpdated} event."},"id":5796,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetAdminDelay","nameLocation":"16179:20:15","nodeType":"FunctionDefinition","parameters":{"id":5767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5764,"mutability":"mutable","name":"target","nameLocation":"16208:6:15","nodeType":"VariableDeclaration","scope":5796,"src":"16200:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5763,"name":"address","nodeType":"ElementaryTypeName","src":"16200:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5766,"mutability":"mutable","name":"newDelay","nameLocation":"16223:8:15","nodeType":"VariableDeclaration","scope":5796,"src":"16216:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5765,"name":"uint32","nodeType":"ElementaryTypeName","src":"16216:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"16199:33:15"},"returnParameters":{"id":5768,"nodeType":"ParameterList","parameters":[],"src":"16250:0:15"},"scope":6781,"src":"16170:287:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[7172],"body":{"id":5811,"nodeType":"Block","src":"16702:49:15","statements":[{"expression":{"arguments":[{"id":5807,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"16729:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5808,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"16737:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5806,"name":"_setTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5833,"src":"16712:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":5809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16712:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5810,"nodeType":"ExpressionStatement","src":"16712:32:15"}]},"documentation":{"id":5797,"nodeType":"StructuredDocumentation","src":"16583:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"167bd395","id":5812,"implemented":true,"kind":"function","modifiers":[{"id":5804,"kind":"modifierInvocation","modifierName":{"id":5803,"name":"onlyAuthorized","nameLocations":["16687:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"16687:14:15"},"nodeType":"ModifierInvocation","src":"16687:14:15"}],"name":"setTargetClosed","nameLocation":"16627:15:15","nodeType":"FunctionDefinition","parameters":{"id":5802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5799,"mutability":"mutable","name":"target","nameLocation":"16651:6:15","nodeType":"VariableDeclaration","scope":5812,"src":"16643:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5798,"name":"address","nodeType":"ElementaryTypeName","src":"16643:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5801,"mutability":"mutable","name":"closed","nameLocation":"16664:6:15","nodeType":"VariableDeclaration","scope":5812,"src":"16659:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5800,"name":"bool","nodeType":"ElementaryTypeName","src":"16659:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16642:29:15"},"returnParameters":{"id":5805,"nodeType":"ParameterList","parameters":[],"src":"16702:0:15"},"scope":6781,"src":"16618:133:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5832,"nodeType":"Block","src":"16993:92:15","statements":[{"expression":{"id":5825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5820,"name":"_targets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"17003:8:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_TargetConfig_$4927_storage_$","typeString":"mapping(address => struct AccessManager.TargetConfig storage ref)"}},"id":5822,"indexExpression":{"id":5821,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"17012:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17003:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_TargetConfig_$4927_storage","typeString":"struct AccessManager.TargetConfig storage ref"}},"id":5823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17020:6:15","memberName":"closed","nodeType":"MemberAccess","referencedDeclaration":4926,"src":"17003:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5824,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"17029:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17003:32:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5826,"nodeType":"ExpressionStatement","src":"17003:32:15"},{"eventCall":{"arguments":[{"id":5828,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"17063:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5829,"name":"closed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"17071:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5827,"name":"TargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6911,"src":"17050:12:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool)"}},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17050:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5831,"nodeType":"EmitStatement","src":"17045:33:15"}]},"documentation":{"id":5813,"nodeType":"StructuredDocumentation","src":"16757: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":5833,"implemented":true,"kind":"function","modifiers":[],"name":"_setTargetClosed","nameLocation":"16930:16:15","nodeType":"FunctionDefinition","parameters":{"id":5818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5815,"mutability":"mutable","name":"target","nameLocation":"16955:6:15","nodeType":"VariableDeclaration","scope":5833,"src":"16947:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5814,"name":"address","nodeType":"ElementaryTypeName","src":"16947:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5817,"mutability":"mutable","name":"closed","nameLocation":"16968:6:15","nodeType":"VariableDeclaration","scope":5833,"src":"16963:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5816,"name":"bool","nodeType":"ElementaryTypeName","src":"16963:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16946:29:15"},"returnParameters":{"id":5819,"nodeType":"ParameterList","parameters":[],"src":"16993:0:15"},"scope":6781,"src":"16921:164:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[7180],"body":{"id":5855,"nodeType":"Block","src":"17316:114:15","statements":[{"assignments":[5842],"declarations":[{"constant":false,"id":5842,"mutability":"mutable","name":"timepoint","nameLocation":"17333:9:15","nodeType":"VariableDeclaration","scope":5855,"src":"17326:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5841,"name":"uint48","nodeType":"ElementaryTypeName","src":"17326:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5847,"initialValue":{"expression":{"baseExpression":{"id":5843,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"17345:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5845,"indexExpression":{"id":5844,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5836,"src":"17356:2:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17345:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17360:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"17345:24:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"17326:43:15"},{"expression":{"condition":{"arguments":[{"id":5849,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"17397:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":5848,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6744,"src":"17386:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17386:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":5852,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"17414:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17386:37:15","trueExpression":{"hexValue":"30","id":5851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17410:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5840,"id":5854,"nodeType":"Return","src":"17379:44:15"}]},"documentation":{"id":5834,"nodeType":"StructuredDocumentation","src":"17211:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"3adc277a","id":5856,"implemented":true,"kind":"function","modifiers":[],"name":"getSchedule","nameLocation":"17255:11:15","nodeType":"FunctionDefinition","parameters":{"id":5837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5836,"mutability":"mutable","name":"id","nameLocation":"17275:2:15","nodeType":"VariableDeclaration","scope":5856,"src":"17267:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5835,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17267:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17266:12:15"},"returnParameters":{"id":5840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5856,"src":"17308:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5838,"name":"uint48","nodeType":"ElementaryTypeName","src":"17308:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17307:8:15"},"scope":6781,"src":"17246:184:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7188],"body":{"id":5869,"nodeType":"Block","src":"17538:44:15","statements":[{"expression":{"expression":{"baseExpression":{"id":5864,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"17555:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5866,"indexExpression":{"id":5865,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5859,"src":"17566:2:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17555:14:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17570:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4950,"src":"17555:20:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5863,"id":5868,"nodeType":"Return","src":"17548:27:15"}]},"documentation":{"id":5857,"nodeType":"StructuredDocumentation","src":"17436:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"4136a33c","id":5870,"implemented":true,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"17480:8:15","nodeType":"FunctionDefinition","parameters":{"id":5860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5859,"mutability":"mutable","name":"id","nameLocation":"17497:2:15","nodeType":"VariableDeclaration","scope":5870,"src":"17489:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17489:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"17488:12:15"},"returnParameters":{"id":5863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5870,"src":"17530:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5861,"name":"uint32","nodeType":"ElementaryTypeName","src":"17530:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"17529:8:15"},"scope":6781,"src":"17471:111:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7202],"body":{"id":5983,"nodeType":"Block","src":"17780:1216:15","statements":[{"assignments":[5885],"declarations":[{"constant":false,"id":5885,"mutability":"mutable","name":"caller","nameLocation":"17798:6:15","nodeType":"VariableDeclaration","scope":5983,"src":"17790:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5884,"name":"address","nodeType":"ElementaryTypeName","src":"17790:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5888,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5886,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"17807:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17807:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17790:29:15"},{"assignments":[null,5890],"declarations":[null,{"constant":false,"id":5890,"mutability":"mutable","name":"setback","nameLocation":"17920:7:15","nodeType":"VariableDeclaration","scope":5983,"src":"17913:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5889,"name":"uint32","nodeType":"ElementaryTypeName","src":"17913:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":5896,"initialValue":{"arguments":[{"id":5892,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5885,"src":"17948:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5893,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"17956:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"17964: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":5891,"name":"_canCallExtended","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"17931: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":5895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17931:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"17910:59:15"},{"assignments":[5898],"declarations":[{"constant":false,"id":5898,"mutability":"mutable","name":"minWhen","nameLocation":"17987:7:15","nodeType":"VariableDeclaration","scope":5983,"src":"17980:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5897,"name":"uint48","nodeType":"ElementaryTypeName","src":"17980:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5904,"initialValue":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5899,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"17997:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$13348_$","typeString":"type(library Time)"}},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18002:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13096,"src":"17997:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":5901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17997:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5902,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5890,"src":"18016:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"17997:26:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"17980:43:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5905,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5890,"src":"18130:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18141:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18130:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5908,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18147:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18154:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18147:8:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5911,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18159:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5912,"name":"minWhen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"18166:7:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18159:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18147:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18146:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18130:44:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5926,"nodeType":"IfStatement","src":"18126:149:15","trueBody":{"id":5925,"nodeType":"Block","src":"18176:99:15","statements":[{"errorCall":{"arguments":[{"id":5918,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5885,"src":"18227:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5919,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"18235:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":5921,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"18258:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":5920,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"18243:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":5922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18243: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":5917,"name":"AccessManagerUnauthorizedCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6965,"src":"18197: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":5923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18197:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5924,"nodeType":"RevertStatement","src":"18190:74:15"}]}},{"expression":{"id":5936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5927,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18333:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":5932,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18356:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5933,"name":"minWhen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5898,"src":"18362:7:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"expression":{"id":5930,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"18347:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":5931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18352:3:15","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":9919,"src":"18347:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18347:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18340:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5928,"name":"uint48","nodeType":"ElementaryTypeName","src":"18340:6:15","typeDescriptions":{}}},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18340:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18333:38:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5937,"nodeType":"ExpressionStatement","src":"18333:38:15"},{"expression":{"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5938,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18477:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5940,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5885,"src":"18505:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5941,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"18513:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5942,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"18521: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":5939,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"18491: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":5943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18491:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"18477:49:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":5945,"nodeType":"ExpressionStatement","src":"18477:49:15"},{"expression":{"arguments":[{"id":5947,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18556:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5946,"name":"_checkNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6012,"src":"18537:18:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":5948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18537:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5949,"nodeType":"ExpressionStatement","src":"18537:31:15"},{"id":5959,"nodeType":"UncheckedBlock","src":"18579:155:15","statements":[{"expression":{"id":5957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5950,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"18682:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":5956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":5951,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"18690:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5953,"indexExpression":{"id":5952,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18701:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18690:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18714:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4950,"src":"18690:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18722:1:15","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18690:33:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18682:41:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5958,"nodeType":"ExpressionStatement","src":"18682:41:15"}]},{"expression":{"id":5965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5960,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"18743:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5962,"indexExpression":{"id":5961,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18754:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18743:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5963,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18767:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"18743:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5964,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18779:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"18743:40:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":5966,"nodeType":"ExpressionStatement","src":"18743:40:15"},{"expression":{"id":5972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":5967,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"18793:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5969,"indexExpression":{"id":5968,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18804:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18793:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5970,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18817:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4950,"src":"18793:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5971,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"18825:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"18793:37:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5973,"nodeType":"ExpressionStatement","src":"18793:37:15"},{"eventCall":{"arguments":[{"id":5975,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5880,"src":"18864:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":5976,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5882,"src":"18877:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":5977,"name":"when","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5877,"src":"18884:4:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},{"id":5978,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5885,"src":"18890:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5979,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5873,"src":"18898:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5980,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"18906: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":5974,"name":"OperationScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6840,"src":"18845: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":5981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18845:66:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5982,"nodeType":"EmitStatement","src":"18840:71:15"}]},"documentation":{"id":5871,"nodeType":"StructuredDocumentation","src":"17588:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"f801a698","id":5984,"implemented":true,"kind":"function","modifiers":[],"name":"schedule","nameLocation":"17632:8:15","nodeType":"FunctionDefinition","parameters":{"id":5878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5873,"mutability":"mutable","name":"target","nameLocation":"17658:6:15","nodeType":"VariableDeclaration","scope":5984,"src":"17650:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5872,"name":"address","nodeType":"ElementaryTypeName","src":"17650:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5875,"mutability":"mutable","name":"data","nameLocation":"17689:4:15","nodeType":"VariableDeclaration","scope":5984,"src":"17674:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5874,"name":"bytes","nodeType":"ElementaryTypeName","src":"17674:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":5877,"mutability":"mutable","name":"when","nameLocation":"17710:4:15","nodeType":"VariableDeclaration","scope":5984,"src":"17703:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5876,"name":"uint48","nodeType":"ElementaryTypeName","src":"17703:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"17640:80:15"},"returnParameters":{"id":5883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5880,"mutability":"mutable","name":"operationId","nameLocation":"17753:11:15","nodeType":"VariableDeclaration","scope":5984,"src":"17745:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17745:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5882,"mutability":"mutable","name":"nonce","nameLocation":"17773:5:15","nodeType":"VariableDeclaration","scope":5984,"src":"17766:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5881,"name":"uint32","nodeType":"ElementaryTypeName","src":"17766:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"17744:35:15"},"scope":6781,"src":"17623:1373:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6011,"nodeType":"Block","src":"19252:210:15","statements":[{"assignments":[5991],"declarations":[{"constant":false,"id":5991,"mutability":"mutable","name":"prevTimepoint","nameLocation":"19269:13:15","nodeType":"VariableDeclaration","scope":6011,"src":"19262:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5990,"name":"uint48","nodeType":"ElementaryTypeName","src":"19262:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":5996,"initialValue":{"expression":{"baseExpression":{"id":5992,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"19285:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":5994,"indexExpression":{"id":5993,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"19296:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19285:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":5995,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19309:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"19285:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"19262:56:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":5999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5997,"name":"prevTimepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"19332:13:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19349:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19332:18:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19354:26:15","subExpression":{"arguments":[{"id":6001,"name":"prevTimepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5991,"src":"19366:13:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":6000,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6744,"src":"19355:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":6002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19355:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19332:48:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6010,"nodeType":"IfStatement","src":"19328:128:15","trueBody":{"id":6009,"nodeType":"Block","src":"19382:74:15","statements":[{"errorCall":{"arguments":[{"id":6006,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"19433:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6005,"name":"AccessManagerAlreadyScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6933,"src":"19403:29:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19403:42:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6008,"nodeType":"RevertStatement","src":"19396:49:15"}]}}]},"documentation":{"id":5985,"nodeType":"StructuredDocumentation","src":"19002: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":6012,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotScheduled","nameLocation":"19199:18:15","nodeType":"FunctionDefinition","parameters":{"id":5988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5987,"mutability":"mutable","name":"operationId","nameLocation":"19226:11:15","nodeType":"VariableDeclaration","scope":6012,"src":"19218:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5986,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19218:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19217:21:15"},"returnParameters":{"id":5989,"nodeType":"ParameterList","parameters":[],"src":"19252:0:15"},"scope":6781,"src":"19190:272:15","stateMutability":"view","virtual":false,"visibility":"private"},{"baseFunctions":[7212],"body":{"id":6109,"nodeType":"Block","src":"19826:1144:15","statements":[{"assignments":[6023],"declarations":[{"constant":false,"id":6023,"mutability":"mutable","name":"caller","nameLocation":"19844:6:15","nodeType":"VariableDeclaration","scope":6109,"src":"19836:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6022,"name":"address","nodeType":"ElementaryTypeName","src":"19836:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6026,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6024,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"19853:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19853:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19836:29:15"},{"assignments":[6028,6030],"declarations":[{"constant":false,"id":6028,"mutability":"mutable","name":"immediate","nameLocation":"19962:9:15","nodeType":"VariableDeclaration","scope":6109,"src":"19957:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6027,"name":"bool","nodeType":"ElementaryTypeName","src":"19957:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6030,"mutability":"mutable","name":"setback","nameLocation":"19980:7:15","nodeType":"VariableDeclaration","scope":6109,"src":"19973:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6029,"name":"uint32","nodeType":"ElementaryTypeName","src":"19973:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6036,"initialValue":{"arguments":[{"id":6032,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"20008:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6033,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20016:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6034,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"20024: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":6031,"name":"_canCallExtended","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6606,"src":"19991: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":6035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19991:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"19956:73:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20089:10:15","subExpression":{"id":6037,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6028,"src":"20090: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":6041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6039,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"20103:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20114:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20103:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20089:26:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6052,"nodeType":"IfStatement","src":"20085:131:15","trueBody":{"id":6051,"nodeType":"Block","src":"20117:99:15","statements":[{"errorCall":{"arguments":[{"id":6044,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"20168:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6045,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20176:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6047,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"20199:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6046,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"20184:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20184: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":6043,"name":"AccessManagerUnauthorizedCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6965,"src":"20138: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":6049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20138:67:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6050,"nodeType":"RevertStatement","src":"20131:74:15"}]}},{"assignments":[6054],"declarations":[{"constant":false,"id":6054,"mutability":"mutable","name":"operationId","nameLocation":"20234:11:15","nodeType":"VariableDeclaration","scope":6109,"src":"20226:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20226:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6060,"initialValue":{"arguments":[{"id":6056,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6023,"src":"20262:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6057,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20270:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6058,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"20278: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":6055,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"20248: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":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20248:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20226:57:15"},{"assignments":[6062],"declarations":[{"constant":false,"id":6062,"mutability":"mutable","name":"nonce","nameLocation":"20300:5:15","nodeType":"VariableDeclaration","scope":6109,"src":"20293:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6061,"name":"uint32","nodeType":"ElementaryTypeName","src":"20293:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6063,"nodeType":"VariableDeclarationStatement","src":"20293:12:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6064,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6030,"src":"20485:7:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20496:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20485:12:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6068,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"20513:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6067,"name":"getSchedule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5856,"src":"20501:11:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_uint48_$","typeString":"function (bytes32) view returns (uint48)"}},"id":6069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20501:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20501:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"20485:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6080,"nodeType":"IfStatement","src":"20481:116:15","trueBody":{"id":6079,"nodeType":"Block","src":"20532:65:15","statements":[{"expression":{"id":6077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6073,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6062,"src":"20546:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6075,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6054,"src":"20574:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6074,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"20554:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":6076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20554:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"20546:40:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6078,"nodeType":"ExpressionStatement","src":"20546:40:15"}]}},{"assignments":[6082],"declarations":[{"constant":false,"id":6082,"mutability":"mutable","name":"executionIdBefore","nameLocation":"20669:17:15","nodeType":"VariableDeclaration","scope":6109,"src":"20661:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6081,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20661:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6084,"initialValue":{"id":6083,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"20689:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"20661:40:15"},{"expression":{"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6085,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"20711:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6087,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20743:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6089,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"20766:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6088,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"20751:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20751:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6086,"name":"_hashExecutionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6780,"src":"20726:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (address,bytes4) pure returns (bytes32)"}},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20726:46:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20711:61:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6093,"nodeType":"ExpressionStatement","src":"20711:61:15"},{"expression":{"arguments":[{"id":6097,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"20837:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6098,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6017,"src":"20845:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":6099,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20851:3:15","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20855:5:15","memberName":"value","nodeType":"MemberAccess","src":"20851: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":6094,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"20807:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9352_$","typeString":"type(library Address)"}},"id":6096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20815:21:15","memberName":"functionCallWithValue","nodeType":"MemberAccess","referencedDeclaration":9217,"src":"20807: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":6101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20807:54:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6102,"nodeType":"ExpressionStatement","src":"20807:54:15"},{"expression":{"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6103,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"20908:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6104,"name":"executionIdBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"20923:17:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20908:32:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":6106,"nodeType":"ExpressionStatement","src":"20908:32:15"},{"expression":{"id":6107,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6062,"src":"20958:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":6021,"id":6108,"nodeType":"Return","src":"20951:12:15"}]},"documentation":{"id":6013,"nodeType":"StructuredDocumentation","src":"19468:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"1cff79cd","id":6110,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"19741:7:15","nodeType":"FunctionDefinition","parameters":{"id":6018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6015,"mutability":"mutable","name":"target","nameLocation":"19757:6:15","nodeType":"VariableDeclaration","scope":6110,"src":"19749:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6014,"name":"address","nodeType":"ElementaryTypeName","src":"19749:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6017,"mutability":"mutable","name":"data","nameLocation":"19780:4:15","nodeType":"VariableDeclaration","scope":6110,"src":"19765:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6016,"name":"bytes","nodeType":"ElementaryTypeName","src":"19765:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19748:37:15"},"returnParameters":{"id":6021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6110,"src":"19818:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6019,"name":"uint32","nodeType":"ElementaryTypeName","src":"19818:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"19817:8:15"},"scope":6781,"src":"19732:1238:15","stateMutability":"payable","virtual":true,"visibility":"public"},{"baseFunctions":[7224],"body":{"id":6211,"nodeType":"Block","src":"21112:1007:15","statements":[{"assignments":[6123],"declarations":[{"constant":false,"id":6123,"mutability":"mutable","name":"msgsender","nameLocation":"21130:9:15","nodeType":"VariableDeclaration","scope":6211,"src":"21122:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6122,"name":"address","nodeType":"ElementaryTypeName","src":"21122:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6126,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6124,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"21142:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21142:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"21122:32:15"},{"assignments":[6128],"declarations":[{"constant":false,"id":6128,"mutability":"mutable","name":"selector","nameLocation":"21171:8:15","nodeType":"VariableDeclaration","scope":6211,"src":"21164:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6127,"name":"bytes4","nodeType":"ElementaryTypeName","src":"21164:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":6132,"initialValue":{"arguments":[{"id":6130,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"21197:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6129,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"21182:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21182:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"21164:38:15"},{"assignments":[6134],"declarations":[{"constant":false,"id":6134,"mutability":"mutable","name":"operationId","nameLocation":"21221:11:15","nodeType":"VariableDeclaration","scope":6211,"src":"21213:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21213:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":6140,"initialValue":{"arguments":[{"id":6136,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"21249:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6137,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"21257:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6138,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"21265: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":6135,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"21235: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":6139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21235:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"21213:57:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":6141,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"21284:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6143,"indexExpression":{"id":6142,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"21295:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21284:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21308:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"21284:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21321:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21284:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6152,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"21404:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6153,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"21414:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21404:19:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6189,"nodeType":"IfStatement","src":"21400:494:15","trueBody":{"id":6188,"nodeType":"Block","src":"21425:469:15","statements":[{"assignments":[6156,null],"declarations":[{"constant":false,"id":6156,"mutability":"mutable","name":"isAdmin","nameLocation":"21578:7:15","nodeType":"VariableDeclaration","scope":6188,"src":"21573:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6155,"name":"bool","nodeType":"ElementaryTypeName","src":"21573:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6161,"initialValue":{"arguments":[{"id":6158,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"21599:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6159,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"21611:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6157,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"21591: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":6160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21591:30:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"21572:49:15"},{"assignments":[6163,null],"declarations":[{"constant":false,"id":6163,"mutability":"mutable","name":"isGuardian","nameLocation":"21641:10:15","nodeType":"VariableDeclaration","scope":6188,"src":"21636:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6162,"name":"bool","nodeType":"ElementaryTypeName","src":"21636:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6173,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":6167,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"21703:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6168,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"21711:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6166,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5137,"src":"21681:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21681:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":6165,"name":"getRoleGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5181,"src":"21665:15:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint64) view returns (uint64)"}},"id":6170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21665:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6171,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"21723:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6164,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"21657: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":6172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21657:76:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"21635:98:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21751:8:15","subExpression":{"id":6174,"name":"isAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6156,"src":"21752:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"21763:11:15","subExpression":{"id":6176,"name":"isGuardian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"21764:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"21751:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6187,"nodeType":"IfStatement","src":"21747:137:15","trueBody":{"id":6186,"nodeType":"Block","src":"21776:108:15","statements":[{"errorCall":{"arguments":[{"id":6180,"name":"msgsender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6123,"src":"21833:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6181,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"21844:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6182,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"21852:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6183,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"21860: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":6179,"name":"AccessManagerUnauthorizedCancel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6979,"src":"21801: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":6184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21801:68:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6185,"nodeType":"RevertStatement","src":"21794:75:15"}]}}]}},"id":6190,"nodeType":"IfStatement","src":"21280:614:15","trueBody":{"id":6151,"nodeType":"Block","src":"21324:70:15","statements":[{"errorCall":{"arguments":[{"id":6148,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"21371:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6147,"name":"AccessManagerNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"21345:25:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21345:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6150,"nodeType":"RevertStatement","src":"21338:45:15"}]}},{"expression":{"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"21904:40:15","subExpression":{"expression":{"baseExpression":{"id":6191,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"21911:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6193,"indexExpression":{"id":6192,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"21922:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21911:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"21935:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"21911:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6196,"nodeType":"ExpressionStatement","src":"21904:40:15"},{"assignments":[6198],"declarations":[{"constant":false,"id":6198,"mutability":"mutable","name":"nonce","nameLocation":"22000:5:15","nodeType":"VariableDeclaration","scope":6211,"src":"21993:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6197,"name":"uint32","nodeType":"ElementaryTypeName","src":"21993:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6203,"initialValue":{"expression":{"baseExpression":{"id":6199,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"22008:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6201,"indexExpression":{"id":6200,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"22019:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22008:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22032:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4950,"src":"22008:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"21993:44:15"},{"eventCall":{"arguments":[{"id":6205,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6134,"src":"22070:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6206,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"22083:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":6204,"name":"OperationCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6854,"src":"22052:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$returns$__$","typeString":"function (bytes32,uint32)"}},"id":6207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22052:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6208,"nodeType":"EmitStatement","src":"22047:42:15"},{"expression":{"id":6209,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6198,"src":"22107:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":6121,"id":6210,"nodeType":"Return","src":"22100:12:15"}]},"documentation":{"id":6111,"nodeType":"StructuredDocumentation","src":"20976:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"d6bb62c6","id":6212,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"21020:6:15","nodeType":"FunctionDefinition","parameters":{"id":6118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6113,"mutability":"mutable","name":"caller","nameLocation":"21035:6:15","nodeType":"VariableDeclaration","scope":6212,"src":"21027:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6112,"name":"address","nodeType":"ElementaryTypeName","src":"21027:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6115,"mutability":"mutable","name":"target","nameLocation":"21051:6:15","nodeType":"VariableDeclaration","scope":6212,"src":"21043:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6114,"name":"address","nodeType":"ElementaryTypeName","src":"21043:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6117,"mutability":"mutable","name":"data","nameLocation":"21074:4:15","nodeType":"VariableDeclaration","scope":6212,"src":"21059:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6116,"name":"bytes","nodeType":"ElementaryTypeName","src":"21059:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21026:53:15"},"returnParameters":{"id":6121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6212,"src":"21104:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6119,"name":"uint32","nodeType":"ElementaryTypeName","src":"21104:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"21103:8:15"},"scope":6781,"src":"21011:1108:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[7232],"body":{"id":6248,"nodeType":"Block","src":"22240:296:15","statements":[{"assignments":[6221],"declarations":[{"constant":false,"id":6221,"mutability":"mutable","name":"target","nameLocation":"22258:6:15","nodeType":"VariableDeclaration","scope":6248,"src":"22250:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6220,"name":"address","nodeType":"ElementaryTypeName","src":"22250:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6224,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6222,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"22267:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22267:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"22250:29:15"},{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":6226,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"22308:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6225,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"22293:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6821_$","typeString":"type(contract IAccessManaged)"}},"id":6227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22293:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManaged_$6821","typeString":"contract IAccessManaged"}},"id":6228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22316:22:15","memberName":"isConsumingScheduledOp","nodeType":"MemberAccess","referencedDeclaration":6820,"src":"22293:45:15","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes4_$","typeString":"function () view external returns (bytes4)"}},"id":6229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22293:47:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6230,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"22344:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6821_$","typeString":"type(contract IAccessManaged)"}},"id":6231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22359:22:15","memberName":"isConsumingScheduledOp","nodeType":"MemberAccess","referencedDeclaration":6820,"src":"22344:37:15","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_bytes4_$","typeString":"function IAccessManaged.isConsumingScheduledOp() view returns (bytes4)"}},"id":6232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"22382:8:15","memberName":"selector","nodeType":"MemberAccess","src":"22344:46:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"22293:97:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6239,"nodeType":"IfStatement","src":"22289:175:15","trueBody":{"id":6238,"nodeType":"Block","src":"22392:72:15","statements":[{"errorCall":{"arguments":[{"id":6235,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"22446:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6234,"name":"AccessManagerUnauthorizedConsume","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"22413:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22413:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6237,"nodeType":"RevertStatement","src":"22406:47:15"}]}},{"expression":{"arguments":[{"arguments":[{"id":6242,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6215,"src":"22507:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6243,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6221,"src":"22515:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6244,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"22523: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":6241,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"22493: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":6245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22493:35:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6240,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"22473:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":6246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22473:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6247,"nodeType":"ExpressionStatement","src":"22473:56:15"}]},"documentation":{"id":6213,"nodeType":"StructuredDocumentation","src":"22125:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"94c7d7ee","id":6249,"implemented":true,"kind":"function","modifiers":[],"name":"consumeScheduledOp","nameLocation":"22169:18:15","nodeType":"FunctionDefinition","parameters":{"id":6218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6215,"mutability":"mutable","name":"caller","nameLocation":"22196:6:15","nodeType":"VariableDeclaration","scope":6249,"src":"22188:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6214,"name":"address","nodeType":"ElementaryTypeName","src":"22188:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6217,"mutability":"mutable","name":"data","nameLocation":"22219:4:15","nodeType":"VariableDeclaration","scope":6249,"src":"22204:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6216,"name":"bytes","nodeType":"ElementaryTypeName","src":"22204:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22187:37:15"},"returnParameters":{"id":6219,"nodeType":"ParameterList","parameters":[],"src":"22240:0:15"},"scope":6781,"src":"22160:376:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6313,"nodeType":"Block","src":"22810:592:15","statements":[{"assignments":[6258],"declarations":[{"constant":false,"id":6258,"mutability":"mutable","name":"timepoint","nameLocation":"22827:9:15","nodeType":"VariableDeclaration","scope":6313,"src":"22820:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6257,"name":"uint48","nodeType":"ElementaryTypeName","src":"22820:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"id":6263,"initialValue":{"expression":{"baseExpression":{"id":6259,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"22839:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6261,"indexExpression":{"id":6260,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"22850:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22839:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6262,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22863:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"22839:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"VariableDeclarationStatement","src":"22820:52:15"},{"assignments":[6265],"declarations":[{"constant":false,"id":6265,"mutability":"mutable","name":"nonce","nameLocation":"22889:5:15","nodeType":"VariableDeclaration","scope":6313,"src":"22882:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6264,"name":"uint32","nodeType":"ElementaryTypeName","src":"22882:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6270,"initialValue":{"expression":{"baseExpression":{"id":6266,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"22897:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6268,"indexExpression":{"id":6267,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"22908:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"22897:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22921:5:15","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":4950,"src":"22897:29:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"22882:44:15"},{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6271,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"22941:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22954:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"22941:14:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6279,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"23037:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6280,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"23049:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$13348_$","typeString":"type(library Time)"}},"id":6281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23054:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13096,"src":"23049:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23049:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"23037:28:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"arguments":[{"id":6290,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6258,"src":"23154:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":6289,"name":"_isExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6744,"src":"23143:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint48_$returns$_t_bool_$","typeString":"function (uint48) view returns (bool)"}},"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23143:21:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6297,"nodeType":"IfStatement","src":"23139:92:15","trueBody":{"id":6296,"nodeType":"Block","src":"23166:65:15","statements":[{"errorCall":{"arguments":[{"id":6293,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"23208:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6292,"name":"AccessManagerExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"23187:20:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":6294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23187:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6295,"nodeType":"RevertStatement","src":"23180:40:15"}]}},"id":6298,"nodeType":"IfStatement","src":"23033:198:15","trueBody":{"id":6288,"nodeType":"Block","src":"23067:66:15","statements":[{"errorCall":{"arguments":[{"id":6285,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"23110:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6284,"name":"AccessManagerNotReady","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6941,"src":"23088:21:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":6286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23088:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6287,"nodeType":"RevertStatement","src":"23081:41:15"}]}},"id":6299,"nodeType":"IfStatement","src":"22937:294:15","trueBody":{"id":6278,"nodeType":"Block","src":"22957:70:15","statements":[{"errorCall":{"arguments":[{"id":6275,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"23004:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6274,"name":"AccessManagerNotScheduled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6937,"src":"22978:25:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":6276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22978:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6277,"nodeType":"RevertStatement","src":"22971:45:15"}]}},{"expression":{"id":6304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"23241:40:15","subExpression":{"expression":{"baseExpression":{"id":6300,"name":"_schedules","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"23248:10:15","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_Schedule_$4951_storage_$","typeString":"mapping(bytes32 => struct AccessManager.Schedule storage ref)"}},"id":6302,"indexExpression":{"id":6301,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"23259:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23248:23:15","typeDescriptions":{"typeIdentifier":"t_struct$_Schedule_$4951_storage","typeString":"struct AccessManager.Schedule storage ref"}},"id":6303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"23272:9:15","memberName":"timepoint","nodeType":"MemberAccess","referencedDeclaration":4948,"src":"23248:33:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6305,"nodeType":"ExpressionStatement","src":"23241:40:15"},{"eventCall":{"arguments":[{"id":6307,"name":"operationId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6252,"src":"23353:11:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":6308,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"23366:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":6306,"name":"OperationExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6847,"src":"23335:17:15","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$returns$__$","typeString":"function (bytes32,uint32)"}},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23335:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6310,"nodeType":"EmitStatement","src":"23330:42:15"},{"expression":{"id":6311,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"23390:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":6256,"id":6312,"nodeType":"Return","src":"23383:12:15"}]},"documentation":{"id":6250,"nodeType":"StructuredDocumentation","src":"22542: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":6314,"implemented":true,"kind":"function","modifiers":[],"name":"_consumeScheduledOp","nameLocation":"22735:19:15","nodeType":"FunctionDefinition","parameters":{"id":6253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6252,"mutability":"mutable","name":"operationId","nameLocation":"22763:11:15","nodeType":"VariableDeclaration","scope":6314,"src":"22755:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22755:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"22754:21:15"},"returnParameters":{"id":6256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6314,"src":"22802:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6254,"name":"uint32","nodeType":"ElementaryTypeName","src":"22802:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"22801:8:15"},"scope":6781,"src":"22726:676:15","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[7244],"body":{"id":6335,"nodeType":"Block","src":"23557:67:15","statements":[{"expression":{"arguments":[{"arguments":[{"id":6329,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6317,"src":"23595:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6330,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6319,"src":"23603:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6331,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6321,"src":"23611: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":6327,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"23584:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"23588:6:15","memberName":"encode","nodeType":"MemberAccess","src":"23584:10:15","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23584:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6326,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"23574:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23574:43:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6325,"id":6334,"nodeType":"Return","src":"23567:50:15"}]},"documentation":{"id":6315,"nodeType":"StructuredDocumentation","src":"23408:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"abd9bd2a","id":6336,"implemented":true,"kind":"function","modifiers":[],"name":"hashOperation","nameLocation":"23452:13:15","nodeType":"FunctionDefinition","parameters":{"id":6322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6317,"mutability":"mutable","name":"caller","nameLocation":"23474:6:15","nodeType":"VariableDeclaration","scope":6336,"src":"23466:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6316,"name":"address","nodeType":"ElementaryTypeName","src":"23466:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6319,"mutability":"mutable","name":"target","nameLocation":"23490:6:15","nodeType":"VariableDeclaration","scope":6336,"src":"23482:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6318,"name":"address","nodeType":"ElementaryTypeName","src":"23482:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6321,"mutability":"mutable","name":"data","nameLocation":"23513:4:15","nodeType":"VariableDeclaration","scope":6336,"src":"23498:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6320,"name":"bytes","nodeType":"ElementaryTypeName","src":"23498:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"23465:53:15"},"returnParameters":{"id":6325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6336,"src":"23548:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6323,"name":"bytes32","nodeType":"ElementaryTypeName","src":"23548:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"23547:9:15"},"scope":6781,"src":"23443:181:15","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[7252],"body":{"id":6353,"nodeType":"Block","src":"23878:66:15","statements":[{"expression":{"arguments":[{"id":6350,"name":"newAuthority","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6341,"src":"23924:12:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":6347,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"23903:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6346,"name":"IAccessManaged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"23888:14:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessManaged_$6821_$","typeString":"type(contract IAccessManaged)"}},"id":6348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23888:22:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManaged_$6821","typeString":"contract IAccessManaged"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23911:12:15","memberName":"setAuthority","nodeType":"MemberAccess","referencedDeclaration":6814,"src":"23888:35:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23888:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6352,"nodeType":"ExpressionStatement","src":"23888:49:15"}]},"documentation":{"id":6337,"nodeType":"StructuredDocumentation","src":"23750:30:15","text":"@inheritdoc IAccessManager"},"functionSelector":"18ff183c","id":6354,"implemented":true,"kind":"function","modifiers":[{"id":6344,"kind":"modifierInvocation","modifierName":{"id":6343,"name":"onlyAuthorized","nameLocations":["23863:14:15"],"nodeType":"IdentifierPath","referencedDeclaration":4992,"src":"23863:14:15"},"nodeType":"ModifierInvocation","src":"23863:14:15"}],"name":"updateAuthority","nameLocation":"23794:15:15","nodeType":"FunctionDefinition","parameters":{"id":6342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6339,"mutability":"mutable","name":"target","nameLocation":"23818:6:15","nodeType":"VariableDeclaration","scope":6354,"src":"23810:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6338,"name":"address","nodeType":"ElementaryTypeName","src":"23810:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6341,"mutability":"mutable","name":"newAuthority","nameLocation":"23834:12:15","nodeType":"VariableDeclaration","scope":6354,"src":"23826:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6340,"name":"address","nodeType":"ElementaryTypeName","src":"23826:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23809:38:15"},"returnParameters":{"id":6345,"nodeType":"ParameterList","parameters":[],"src":"23878:0:15"},"scope":6781,"src":"23785:159:15","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":6407,"nodeType":"Block","src":"24334:467:15","statements":[{"assignments":[6359],"declarations":[{"constant":false,"id":6359,"mutability":"mutable","name":"caller","nameLocation":"24352:6:15","nodeType":"VariableDeclaration","scope":6407,"src":"24344:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6358,"name":"address","nodeType":"ElementaryTypeName","src":"24344:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6362,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6360,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"24361:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24361:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"24344:29:15"},{"assignments":[6364,6366],"declarations":[{"constant":false,"id":6364,"mutability":"mutable","name":"immediate","nameLocation":"24389:9:15","nodeType":"VariableDeclaration","scope":6407,"src":"24384:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6363,"name":"bool","nodeType":"ElementaryTypeName","src":"24384:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6366,"mutability":"mutable","name":"delay","nameLocation":"24407:5:15","nodeType":"VariableDeclaration","scope":6407,"src":"24400:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6365,"name":"uint32","nodeType":"ElementaryTypeName","src":"24400:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6372,"initialValue":{"arguments":[{"id":6368,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"24429:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6369,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"24437:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24437: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":6367,"name":"_canCallSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"24416: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":6371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24416:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"24383:65:15"},{"condition":{"id":6374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"24462:10:15","subExpression":{"id":6373,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6364,"src":"24463:9:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6406,"nodeType":"IfStatement","src":"24458:337:15","trueBody":{"id":6405,"nodeType":"Block","src":"24474:321:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6375,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6366,"src":"24492:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24501:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24492:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6403,"nodeType":"Block","src":"24683:102:15","statements":[{"expression":{"arguments":[{"arguments":[{"id":6393,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"24735:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6396,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24751:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24743:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6394,"name":"address","nodeType":"ElementaryTypeName","src":"24743:7:15","typeDescriptions":{}}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24743:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":6398,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"24758:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":6399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24758: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":6392,"name":"hashOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6336,"src":"24721: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":6400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24721:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":6391,"name":"_consumeScheduledOp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"24701:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$returns$_t_uint32_$","typeString":"function (bytes32) returns (uint32)"}},"id":6401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24701:69:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6402,"nodeType":"ExpressionStatement","src":"24701:69:15"}]},"id":6404,"nodeType":"IfStatement","src":"24488:297:15","trueBody":{"id":6390,"nodeType":"Block","src":"24504:173:15","statements":[{"assignments":[null,6379,null],"declarations":[null,{"constant":false,"id":6379,"mutability":"mutable","name":"requiredRole","nameLocation":"24532:12:15","nodeType":"VariableDeclaration","scope":6390,"src":"24525:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6378,"name":"uint64","nodeType":"ElementaryTypeName","src":"24525:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},null],"id":6384,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":6381,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9373,"src":"24572:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24572:10:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6380,"name":"_getAdminRestrictions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"24550: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":6383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24550:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"24522:61:15"},{"errorCall":{"arguments":[{"id":6386,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6359,"src":"24641:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6387,"name":"requiredRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6379,"src":"24649:12:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":6385,"name":"AccessManagerUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"24608:32:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint64_$returns$_t_error_$","typeString":"function (address,uint64) pure returns (error)"}},"id":6388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24608:54:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6389,"nodeType":"RevertStatement","src":"24601:61:15"}]}}]}}]},"documentation":{"id":6355,"nodeType":"StructuredDocumentation","src":"24070: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":6408,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"24307:16:15","nodeType":"FunctionDefinition","parameters":{"id":6356,"nodeType":"ParameterList","parameters":[],"src":"24323:2:15"},"returnParameters":{"id":6357,"nodeType":"ParameterList","parameters":[],"src":"24334:0:15"},"scope":6781,"src":"24298:503:15","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":6560,"nodeType":"Block","src":"25360:1525:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6420,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"25374:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25379:6:15","memberName":"length","nodeType":"MemberAccess","src":"25374:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25388:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25374:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6430,"nodeType":"IfStatement","src":"25370:66:15","trueBody":{"id":6429,"nodeType":"Block","src":"25391:45:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25413:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25420:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":6426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25423:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6427,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25412: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":6419,"id":6428,"nodeType":"Return","src":"25405:20:15"}]}},{"assignments":[6432],"declarations":[{"constant":false,"id":6432,"mutability":"mutable","name":"selector","nameLocation":"25453:8:15","nodeType":"VariableDeclaration","scope":6560,"src":"25446:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6431,"name":"bytes4","nodeType":"ElementaryTypeName","src":"25446:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":6436,"initialValue":{"arguments":[{"id":6434,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"25479:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6433,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"25464:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25464:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"25446:38:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6437,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"25604:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6438,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25616:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25621:9:15","memberName":"labelRole","nodeType":"MemberAccess","referencedDeclaration":5318,"src":"25616:14:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint64,string memory) external"}},"id":6440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25631:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25616:23:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25604:35:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6442,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"25655:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6443,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25667:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25672:12:15","memberName":"setRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":5395,"src":"25667:17:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64) external"}},"id":6445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25685:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25667:26:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25655:38:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25604:89:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6448,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"25709:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6449,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25721:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25726:15:15","memberName":"setRoleGuardian","nodeType":"MemberAccess","referencedDeclaration":5411,"src":"25721:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint64_$returns$__$","typeString":"function (uint64,uint64) external"}},"id":6451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25742:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25721:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25709:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25604:146:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6454,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"25766:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6455,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25778:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25783:13:15","memberName":"setGrantDelay","nodeType":"MemberAccess","referencedDeclaration":5427,"src":"25778:18:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_uint32_$returns$__$","typeString":"function (uint64,uint32) external"}},"id":6457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25797:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25778:27:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25766:39:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25604:201:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6460,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"25821:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6461,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25833:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25838:19:15","memberName":"setTargetAdminDelay","nodeType":"MemberAccess","referencedDeclaration":5761,"src":"25833:24:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint32_$returns$__$","typeString":"function (address,uint32) external"}},"id":6463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"25858:8:15","memberName":"selector","nodeType":"MemberAccess","src":"25833:33:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"25821:45:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25604:262:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6472,"nodeType":"IfStatement","src":"25587:343:15","trueBody":{"id":6471,"nodeType":"Block","src":"25877:53:15","statements":[{"expression":{"components":[{"hexValue":"74727565","id":6466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25899:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6467,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"25905:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25917:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6469,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25898:21:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6419,"id":6470,"nodeType":"Return","src":"25891:28:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6473,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26037:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6474,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26049:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26054:15:15","memberName":"updateAuthority","nodeType":"MemberAccess","referencedDeclaration":6354,"src":"26049:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) external"}},"id":6476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26070:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26049:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26037:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6478,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26094:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6479,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26106:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26111:15:15","memberName":"setTargetClosed","nodeType":"MemberAccess","referencedDeclaration":5812,"src":"26106:20:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$","typeString":"function (address,bool) external"}},"id":6481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26127:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26106:29:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26094:41:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26037:98:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6484,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26151:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6485,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26163:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26168:21:15","memberName":"setTargetFunctionRole","nodeType":"MemberAccess","referencedDeclaration":5719,"src":"26163: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":6487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26190:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26163:35:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26151:47:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26037:161:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6515,"nodeType":"IfStatement","src":"26020:414:15","trueBody":{"id":6514,"nodeType":"Block","src":"26209:225:15","statements":[{"assignments":[6491],"declarations":[{"constant":false,"id":6491,"mutability":"mutable","name":"target","nameLocation":"26274:6:15","nodeType":"VariableDeclaration","scope":6514,"src":"26266:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6490,"name":"address","nodeType":"ElementaryTypeName","src":"26266:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6502,"initialValue":{"arguments":[{"baseExpression":{"id":6494,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"26294:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"30783234","id":6496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26304:4:15","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"id":6497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"26294:15:15","startExpression":{"hexValue":"30783034","id":6495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26299: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":6499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26312:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6498,"name":"address","nodeType":"ElementaryTypeName","src":"26312:7:15","typeDescriptions":{}}}],"id":6500,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26311: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":6492,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26283:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26287:6:15","memberName":"decode","nodeType":"MemberAccess","src":"26283:10:15","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26283:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"26266:55:15"},{"assignments":[6504],"declarations":[{"constant":false,"id":6504,"mutability":"mutable","name":"delay","nameLocation":"26342:5:15","nodeType":"VariableDeclaration","scope":6514,"src":"26335:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6503,"name":"uint32","nodeType":"ElementaryTypeName","src":"26335:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6508,"initialValue":{"arguments":[{"id":6506,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6491,"src":"26370:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6505,"name":"getTargetAdminDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5153,"src":"26350:19:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint32_$","typeString":"function (address) view returns (uint32)"}},"id":6507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26350:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"26335:42:15"},{"expression":{"components":[{"hexValue":"74727565","id":6509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26399:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":6510,"name":"ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4959,"src":"26405:10:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6511,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6504,"src":"26417:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":6512,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26398:25:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"functionReturnParameters":6419,"id":6513,"nodeType":"Return","src":"26391:32:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6516,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26553:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6517,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26565:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26570:9:15","memberName":"grantRole","nodeType":"MemberAccess","referencedDeclaration":5340,"src":"26565:14:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_address_$_t_uint32_$returns$__$","typeString":"function (uint64,address,uint32) external"}},"id":6519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26580:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26565:23:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26553:35:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6521,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26592:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":6522,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26604:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}},"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26609:10:15","memberName":"revokeRole","nodeType":"MemberAccess","referencedDeclaration":5356,"src":"26604:15:15","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint64_$_t_address_$returns$__$","typeString":"function (uint64,address) external"}},"id":6524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26620:8:15","memberName":"selector","nodeType":"MemberAccess","src":"26604:24:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"26592:36:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26553:75:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6548,"nodeType":"IfStatement","src":"26549:254:15","trueBody":{"id":6547,"nodeType":"Block","src":"26630:173:15","statements":[{"assignments":[6528],"declarations":[{"constant":false,"id":6528,"mutability":"mutable","name":"roleId","nameLocation":"26694:6:15","nodeType":"VariableDeclaration","scope":6547,"src":"26687:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6527,"name":"uint64","nodeType":"ElementaryTypeName","src":"26687:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":6539,"initialValue":{"arguments":[{"baseExpression":{"id":6531,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6411,"src":"26714:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"30783234","id":6533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26724:4:15","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"value":"0x24"},"id":6534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"26714:15:15","startExpression":{"hexValue":"30783034","id":6532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26719: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":6536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26732:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":6535,"name":"uint64","nodeType":"ElementaryTypeName","src":"26732:6:15","typeDescriptions":{}}}],"id":6537,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"26731: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":6529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"26703:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"26707:6:15","memberName":"decode","nodeType":"MemberAccess","src":"26703:10:15","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":6538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26703:37:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"26687:53:15"},{"expression":{"components":[{"hexValue":"74727565","id":6540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26762:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"arguments":[{"id":6542,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6528,"src":"26781:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":6541,"name":"getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"26768:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint64_$","typeString":"function (uint64) view returns (uint64)"}},"id":6543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26768:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26790:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26761:31:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6419,"id":6546,"nodeType":"Return","src":"26754:38:15"}]}},{"expression":{"components":[{"hexValue":"66616c7365","id":6549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"26821:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"arguments":[{"id":6553,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"26858:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26850:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6551,"name":"address","nodeType":"ElementaryTypeName","src":"26850:7:15","typeDescriptions":{}}},"id":6554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26850:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6555,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6432,"src":"26865:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6550,"name":"getTargetFunctionRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5137,"src":"26828:21:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_uint64_$","typeString":"function (address,bytes4) view returns (uint64)"}},"id":6556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26828:46:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":6557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26876:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6558,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26820:58:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(bool,uint64,int_const 0)"}},"functionReturnParameters":6419,"id":6559,"nodeType":"Return","src":"26813:65:15"}]},"documentation":{"id":6409,"nodeType":"StructuredDocumentation","src":"24807: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":6561,"implemented":true,"kind":"function","modifiers":[],"name":"_getAdminRestrictions","nameLocation":"25216:21:15","nodeType":"FunctionDefinition","parameters":{"id":6412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6411,"mutability":"mutable","name":"data","nameLocation":"25262:4:15","nodeType":"VariableDeclaration","scope":6561,"src":"25247:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6410,"name":"bytes","nodeType":"ElementaryTypeName","src":"25247:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"25237:35:15"},"returnParameters":{"id":6419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6414,"mutability":"mutable","name":"adminRestricted","nameLocation":"25300:15:15","nodeType":"VariableDeclaration","scope":6561,"src":"25295:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6413,"name":"bool","nodeType":"ElementaryTypeName","src":"25295:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6416,"mutability":"mutable","name":"roleAdminId","nameLocation":"25324:11:15","nodeType":"VariableDeclaration","scope":6561,"src":"25317:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6415,"name":"uint64","nodeType":"ElementaryTypeName","src":"25317:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"executionDelay","nameLocation":"25344:14:15","nodeType":"VariableDeclaration","scope":6561,"src":"25337:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6417,"name":"uint32","nodeType":"ElementaryTypeName","src":"25337:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"25294:65:15"},"scope":6781,"src":"25207:1678:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6605,"nodeType":"Block","src":"27477:217:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6575,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6566,"src":"27491:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6578,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"27509:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27501:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6576,"name":"address","nodeType":"ElementaryTypeName","src":"27501:7:15","typeDescriptions":{}}},"id":6579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27501:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27491:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6603,"nodeType":"Block","src":"27580:108:15","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6587,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"27601:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27606:6:15","memberName":"length","nodeType":"MemberAccess","src":"27601:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27615:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27601:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6595,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"27640:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6596,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6566,"src":"27648:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6598,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"27671:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6597,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"27656:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27656: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":6594,"name":"canCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5087,"src":"27632: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":6600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27632:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"27601:76:15","trueExpression":{"components":[{"hexValue":"66616c7365","id":6591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27620:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27627:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27619: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":6574,"id":6602,"nodeType":"Return","src":"27594:83:15"}]},"id":6604,"nodeType":"IfStatement","src":"27487:201:15","trueBody":{"id":6586,"nodeType":"Block","src":"27516:58:15","statements":[{"expression":{"arguments":[{"id":6582,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6564,"src":"27550:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6583,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"27558: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":6581,"name":"_canCallSelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"27537: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":6584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27537:26:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":6574,"id":6585,"nodeType":"Return","src":"27530:33:15"}]}}]},"documentation":{"id":6562,"nodeType":"StructuredDocumentation","src":"27011: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":6606,"implemented":true,"kind":"function","modifiers":[],"name":"_canCallExtended","nameLocation":"27325:16:15","nodeType":"FunctionDefinition","parameters":{"id":6569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6564,"mutability":"mutable","name":"caller","nameLocation":"27359:6:15","nodeType":"VariableDeclaration","scope":6606,"src":"27351:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6563,"name":"address","nodeType":"ElementaryTypeName","src":"27351:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6566,"mutability":"mutable","name":"target","nameLocation":"27383:6:15","nodeType":"VariableDeclaration","scope":6606,"src":"27375:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6565,"name":"address","nodeType":"ElementaryTypeName","src":"27375:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6568,"mutability":"mutable","name":"data","nameLocation":"27414:4:15","nodeType":"VariableDeclaration","scope":6606,"src":"27399:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6567,"name":"bytes","nodeType":"ElementaryTypeName","src":"27399:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27341:83:15"},"returnParameters":{"id":6574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6571,"mutability":"mutable","name":"immediate","nameLocation":"27452:9:15","nodeType":"VariableDeclaration","scope":6606,"src":"27447:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6570,"name":"bool","nodeType":"ElementaryTypeName","src":"27447:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6573,"mutability":"mutable","name":"delay","nameLocation":"27470:5:15","nodeType":"VariableDeclaration","scope":6606,"src":"27463:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6572,"name":"uint32","nodeType":"ElementaryTypeName","src":"27463:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"27446:30:15"},"scope":6781,"src":"27316:378:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6707,"nodeType":"Block","src":"27909:996:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6618,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"27923:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":6619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27928:6:15","memberName":"length","nodeType":"MemberAccess","src":"27923:11:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"34","id":6620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27937:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27923:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6627,"nodeType":"IfStatement","src":"27919:63:15","trueBody":{"id":6626,"nodeType":"Block","src":"27940:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"27962:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27969:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27961:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6617,"id":6625,"nodeType":"Return","src":"27954:17:15"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6628,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6609,"src":"27996:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6631,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28014:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28006:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6629,"name":"address","nodeType":"ElementaryTypeName","src":"28006:7:15","typeDescriptions":{}}},"id":6632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28006:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"27996:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6647,"nodeType":"IfStatement","src":"27992:334:15","trueBody":{"id":6646,"nodeType":"Block","src":"28021:305:15","statements":[{"expression":{"components":[{"arguments":[{"arguments":[{"id":6637,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28283:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28275:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6635,"name":"address","nodeType":"ElementaryTypeName","src":"28275:7:15","typeDescriptions":{}}},"id":6638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28275:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":6640,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"28305:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6639,"name":"_checkSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6761,"src":"28290:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function (bytes calldata) pure returns (bytes4)"}},"id":6641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28290:20:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6634,"name":"_isExecuting","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6726,"src":"28262:12:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28262:49:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"30","id":6643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28313:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6644,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28261:54:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6617,"id":6645,"nodeType":"Return","src":"28254:61:15"}]}},{"assignments":[6649,6651,6653],"declarations":[{"constant":false,"id":6649,"mutability":"mutable","name":"adminRestricted","nameLocation":"28342:15:15","nodeType":"VariableDeclaration","scope":6707,"src":"28337:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6648,"name":"bool","nodeType":"ElementaryTypeName","src":"28337:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6651,"mutability":"mutable","name":"roleId","nameLocation":"28366:6:15","nodeType":"VariableDeclaration","scope":6707,"src":"28359:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6650,"name":"uint64","nodeType":"ElementaryTypeName","src":"28359:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6653,"mutability":"mutable","name":"operationDelay","nameLocation":"28381:14:15","nodeType":"VariableDeclaration","scope":6707,"src":"28374:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6652,"name":"uint32","nodeType":"ElementaryTypeName","src":"28374:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6657,"initialValue":{"arguments":[{"id":6655,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6611,"src":"28421:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":6654,"name":"_getAdminRestrictions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6561,"src":"28399: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":6656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28399:27:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint64_$_t_uint32_$","typeString":"tuple(bool,uint64,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"28336:90:15"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28506:16:15","subExpression":{"id":6658,"name":"adminRestricted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6649,"src":"28507:15:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"arguments":[{"id":6663,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"28549:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManager_$6781","typeString":"contract AccessManager"}],"id":6662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28541:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6661,"name":"address","nodeType":"ElementaryTypeName","src":"28541:7:15","typeDescriptions":{}}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28541:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6660,"name":"isTargetClosed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"28526:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":6665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28526:29:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28506:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6672,"nodeType":"IfStatement","src":"28502:97:15","trueBody":{"id":6671,"nodeType":"Block","src":"28557:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28579:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28586:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6669,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28578:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6617,"id":6670,"nodeType":"Return","src":"28571:17:15"}]}},{"assignments":[6674,6676],"declarations":[{"constant":false,"id":6674,"mutability":"mutable","name":"inRole","nameLocation":"28615:6:15","nodeType":"VariableDeclaration","scope":6707,"src":"28610:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6673,"name":"bool","nodeType":"ElementaryTypeName","src":"28610:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6676,"mutability":"mutable","name":"executionDelay","nameLocation":"28630:14:15","nodeType":"VariableDeclaration","scope":6707,"src":"28623:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6675,"name":"uint32","nodeType":"ElementaryTypeName","src":"28623:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":6681,"initialValue":{"arguments":[{"id":6678,"name":"roleId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6651,"src":"28656:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":6679,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6609,"src":"28664:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6677,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5289,"src":"28648: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":6680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28648:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"28609:62:15"},{"condition":{"id":6683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"28685:7:15","subExpression":{"id":6682,"name":"inRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"28686:6:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6689,"nodeType":"IfStatement","src":"28681:55:15","trueBody":{"id":6688,"nodeType":"Block","src":"28694:42:15","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":6684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28716:5:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":6685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28723:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6686,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"28715:10:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6617,"id":6687,"nodeType":"Return","src":"28708:17:15"}]}},{"expression":{"id":6699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6690,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"28806:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":6695,"name":"operationDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6653,"src":"28830:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":6696,"name":"executionDelay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"28846:14:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":6693,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"28821:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":6694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28826:3:15","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":9919,"src":"28821:8:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28821:40:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28814:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6691,"name":"uint32","nodeType":"ElementaryTypeName","src":"28814:6:15","typeDescriptions":{}}},"id":6698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28814:48:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"28806:56:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6700,"nodeType":"ExpressionStatement","src":"28806:56:15"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6701,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"28880:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28889:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"28880:10:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6704,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"28892:5:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":6705,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28879:19:15","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"functionReturnParameters":6617,"id":6706,"nodeType":"Return","src":"28872:26:15"}]},"documentation":{"id":6607,"nodeType":"StructuredDocumentation","src":"27700:93:15","text":" @dev A version of {canCall} that checks for restrictions in this contract."},"id":6708,"implemented":true,"kind":"function","modifiers":[],"name":"_canCallSelf","nameLocation":"27807:12:15","nodeType":"FunctionDefinition","parameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6609,"mutability":"mutable","name":"caller","nameLocation":"27828:6:15","nodeType":"VariableDeclaration","scope":6708,"src":"27820:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6608,"name":"address","nodeType":"ElementaryTypeName","src":"27820:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6611,"mutability":"mutable","name":"data","nameLocation":"27851:4:15","nodeType":"VariableDeclaration","scope":6708,"src":"27836:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6610,"name":"bytes","nodeType":"ElementaryTypeName","src":"27836:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"27819:37:15"},"returnParameters":{"id":6617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6614,"mutability":"mutable","name":"immediate","nameLocation":"27884:9:15","nodeType":"VariableDeclaration","scope":6708,"src":"27879:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6613,"name":"bool","nodeType":"ElementaryTypeName","src":"27879:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6616,"mutability":"mutable","name":"delay","nameLocation":"27902:5:15","nodeType":"VariableDeclaration","scope":6708,"src":"27895:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6615,"name":"uint32","nodeType":"ElementaryTypeName","src":"27895:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"27878:30:15"},"scope":6781,"src":"27798:1107:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6725,"nodeType":"Block","src":"29108:74:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":6723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6718,"name":"_executionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4984,"src":"29125:12:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":6720,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6711,"src":"29158:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6721,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6713,"src":"29166:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":6719,"name":"_hashExecutionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6780,"src":"29141:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (address,bytes4) pure returns (bytes32)"}},"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29141:34:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"29125:50:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6717,"id":6724,"nodeType":"Return","src":"29118:57:15"}]},"documentation":{"id":6709,"nodeType":"StructuredDocumentation","src":"28911:109:15","text":" @dev Returns true if a call with `target` and `selector` is being executed via {executed}."},"id":6726,"implemented":true,"kind":"function","modifiers":[],"name":"_isExecuting","nameLocation":"29034:12:15","nodeType":"FunctionDefinition","parameters":{"id":6714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6711,"mutability":"mutable","name":"target","nameLocation":"29055:6:15","nodeType":"VariableDeclaration","scope":6726,"src":"29047:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6710,"name":"address","nodeType":"ElementaryTypeName","src":"29047:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6713,"mutability":"mutable","name":"selector","nameLocation":"29070:8:15","nodeType":"VariableDeclaration","scope":6726,"src":"29063:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6712,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29063:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29046:33:15"},"returnParameters":{"id":6717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6726,"src":"29102:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6715,"name":"bool","nodeType":"ElementaryTypeName","src":"29102:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29101:6:15"},"scope":6781,"src":"29025:157:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6743,"nodeType":"Block","src":"29352:68:15","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":6737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6734,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6729,"src":"29369:9:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":6735,"name":"expiration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5096,"src":"29381:10:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29381:12:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"29369:24:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":6738,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"29397:4:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Time_$13348_$","typeString":"type(library Time)"}},"id":6739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29402:9:15","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13096,"src":"29397:14:15","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":6740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29397:16:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"29369:44:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6733,"id":6742,"nodeType":"Return","src":"29362:51:15"}]},"documentation":{"id":6727,"nodeType":"StructuredDocumentation","src":"29188:93:15","text":" @dev Returns true if a schedule timepoint is past its expiration deadline."},"id":6744,"implemented":true,"kind":"function","modifiers":[],"name":"_isExpired","nameLocation":"29295:10:15","nodeType":"FunctionDefinition","parameters":{"id":6730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6729,"mutability":"mutable","name":"timepoint","nameLocation":"29313:9:15","nodeType":"VariableDeclaration","scope":6744,"src":"29306:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6728,"name":"uint48","nodeType":"ElementaryTypeName","src":"29306:6:15","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"29305:18:15"},"returnParameters":{"id":6733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6732,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6744,"src":"29346:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6731,"name":"bool","nodeType":"ElementaryTypeName","src":"29346:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29345:6:15"},"scope":6781,"src":"29286:134:15","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":6760,"nodeType":"Block","src":"29605:41:15","statements":[{"expression":{"arguments":[{"baseExpression":{"id":6754,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6747,"src":"29629:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":6756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29636:1:15","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":6757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"29629:9:15","startExpression":{"hexValue":"30","id":6755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29634: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":6753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29622:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":6752,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29622:6:15","typeDescriptions":{}}},"id":6758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29622:17:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":6751,"id":6759,"nodeType":"Return","src":"29615:24:15"}]},"documentation":{"id":6745,"nodeType":"StructuredDocumentation","src":"29426:99:15","text":" @dev Extracts the selector from calldata. Panics if data is not at least 4 bytes"},"id":6761,"implemented":true,"kind":"function","modifiers":[],"name":"_checkSelector","nameLocation":"29539:14:15","nodeType":"FunctionDefinition","parameters":{"id":6748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6747,"mutability":"mutable","name":"data","nameLocation":"29569:4:15","nodeType":"VariableDeclaration","scope":6761,"src":"29554:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6746,"name":"bytes","nodeType":"ElementaryTypeName","src":"29554:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"29553:21:15"},"returnParameters":{"id":6751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6761,"src":"29597:6:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6749,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29597:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29596:8:15"},"scope":6781,"src":"29530:116:15","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6779,"nodeType":"Block","src":"29810:63:15","statements":[{"expression":{"arguments":[{"arguments":[{"id":6774,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6764,"src":"29848:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6775,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6766,"src":"29856:8:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":6772,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"29837:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29841:6:15","memberName":"encode","nodeType":"MemberAccess","src":"29837:10:15","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29837:28:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6771,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"29827:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29827:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6770,"id":6778,"nodeType":"Return","src":"29820:46:15"}]},"documentation":{"id":6762,"nodeType":"StructuredDocumentation","src":"29652:63:15","text":" @dev Hashing function for execute protection"},"id":6780,"implemented":true,"kind":"function","modifiers":[],"name":"_hashExecutionId","nameLocation":"29729:16:15","nodeType":"FunctionDefinition","parameters":{"id":6767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6764,"mutability":"mutable","name":"target","nameLocation":"29754:6:15","nodeType":"VariableDeclaration","scope":6780,"src":"29746:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6763,"name":"address","nodeType":"ElementaryTypeName","src":"29746:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6766,"mutability":"mutable","name":"selector","nameLocation":"29769:8:15","nodeType":"VariableDeclaration","scope":6780,"src":"29762:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6765,"name":"bytes4","nodeType":"ElementaryTypeName","src":"29762:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"29745:33:15"},"returnParameters":{"id":6770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6780,"src":"29801:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6768,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29801:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"29800:9:15"},"scope":6781,"src":"29720:153:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6782,"src":"3722:26153:15","usedErrors":[6933,6937,6941,6945,6949,6951,6957,6965,6969,6979,6983,9103,9392,9395,11319],"usedEvents":[6840,6847,6854,6861,6874,6881,6888,6895,6904,6911,6920,6929]}],"src":"116:29760:15"},"id":15},"@openzeppelin/contracts/access/manager/IAccessManaged.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManaged.sol","exportedSymbols":{"IAccessManaged":[6821]},"id":6822,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6783,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"117:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessManaged","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":6821,"linearizedBaseContracts":[6821],"name":"IAccessManaged","nameLocation":"153:14:16","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6784,"nodeType":"StructuredDocumentation","src":"174:73:16","text":" @dev Authority that manages this contract was updated."},"eventSelector":"2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad","id":6788,"name":"AuthorityUpdated","nameLocation":"258:16:16","nodeType":"EventDefinition","parameters":{"id":6787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6786,"indexed":false,"mutability":"mutable","name":"authority","nameLocation":"283:9:16","nodeType":"VariableDeclaration","scope":6788,"src":"275:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6785,"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":6792,"name":"AccessManagedUnauthorized","nameLocation":"306:25:16","nodeType":"ErrorDefinition","parameters":{"id":6791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6790,"mutability":"mutable","name":"caller","nameLocation":"340:6:16","nodeType":"VariableDeclaration","scope":6792,"src":"332:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6789,"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":6798,"name":"AccessManagedRequiredDelay","nameLocation":"359:26:16","nodeType":"ErrorDefinition","parameters":{"id":6797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6794,"mutability":"mutable","name":"caller","nameLocation":"394:6:16","nodeType":"VariableDeclaration","scope":6798,"src":"386:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6793,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6796,"mutability":"mutable","name":"delay","nameLocation":"409:5:16","nodeType":"VariableDeclaration","scope":6798,"src":"402:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6795,"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":6802,"name":"AccessManagedInvalidAuthority","nameLocation":"427:29:16","nodeType":"ErrorDefinition","parameters":{"id":6801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6800,"mutability":"mutable","name":"authority","nameLocation":"465:9:16","nodeType":"VariableDeclaration","scope":6802,"src":"457:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6799,"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":6803,"nodeType":"StructuredDocumentation","src":"482:54:16","text":" @dev Returns the current authority."},"functionSelector":"bf7e214f","id":6808,"implemented":false,"kind":"function","modifiers":[],"name":"authority","nameLocation":"550:9:16","nodeType":"FunctionDefinition","parameters":{"id":6804,"nodeType":"ParameterList","parameters":[],"src":"559:2:16"},"returnParameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6808,"src":"585:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6805,"name":"address","nodeType":"ElementaryTypeName","src":"585:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"584:9:16"},"scope":6821,"src":"541:53:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6809,"nodeType":"StructuredDocumentation","src":"600:103:16","text":" @dev Transfers control to a new authority. The caller must be the current authority."},"functionSelector":"7a9e5e4b","id":6814,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthority","nameLocation":"717:12:16","nodeType":"FunctionDefinition","parameters":{"id":6812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6814,"src":"730:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6810,"name":"address","nodeType":"ElementaryTypeName","src":"730:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"729:9:16"},"returnParameters":{"id":6813,"nodeType":"ParameterList","parameters":[],"src":"747:0:16"},"scope":6821,"src":"708:40:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6815,"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":6820,"implemented":false,"kind":"function","modifiers":[],"name":"isConsumingScheduledOp","nameLocation":"1052:22:16","nodeType":"FunctionDefinition","parameters":{"id":6816,"nodeType":"ParameterList","parameters":[],"src":"1074:2:16"},"returnParameters":{"id":6819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6818,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6820,"src":"1100:6:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6817,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1100:6:16","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1099:8:16"},"scope":6821,"src":"1043:65:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6822,"src":"143:967:16","usedErrors":[6792,6798,6802],"usedEvents":[6788]}],"src":"117:994:16"},"id":16},"@openzeppelin/contracts/access/manager/IAccessManager.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","exportedSymbols":{"IAccessManager":[7253],"Time":[13348]},"id":7254,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6823,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"117:24:17"},{"absolutePath":"@openzeppelin/contracts/utils/types/Time.sol","file":"../../utils/types/Time.sol","id":6825,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7254,"sourceUnit":13349,"src":"143:48:17","symbolAliases":[{"foreign":{"id":6824,"name":"Time","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"151:4:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":7253,"linearizedBaseContracts":[7253],"name":"IAccessManager","nameLocation":"203:14:17","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6826,"nodeType":"StructuredDocumentation","src":"224:58:17","text":" @dev A delayed operation was scheduled."},"eventSelector":"82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b4","id":6840,"name":"OperationScheduled","nameLocation":"293:18:17","nodeType":"EventDefinition","parameters":{"id":6839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6828,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"337:11:17","nodeType":"VariableDeclaration","scope":6840,"src":"321:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6827,"name":"bytes32","nodeType":"ElementaryTypeName","src":"321:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6830,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"373:5:17","nodeType":"VariableDeclaration","scope":6840,"src":"358:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6829,"name":"uint32","nodeType":"ElementaryTypeName","src":"358:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6832,"indexed":false,"mutability":"mutable","name":"schedule","nameLocation":"395:8:17","nodeType":"VariableDeclaration","scope":6840,"src":"388:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6831,"name":"uint48","nodeType":"ElementaryTypeName","src":"388:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6834,"indexed":false,"mutability":"mutable","name":"caller","nameLocation":"421:6:17","nodeType":"VariableDeclaration","scope":6840,"src":"413:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6833,"name":"address","nodeType":"ElementaryTypeName","src":"413:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6836,"indexed":false,"mutability":"mutable","name":"target","nameLocation":"445:6:17","nodeType":"VariableDeclaration","scope":6840,"src":"437:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6835,"name":"address","nodeType":"ElementaryTypeName","src":"437:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6838,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"467:4:17","nodeType":"VariableDeclaration","scope":6840,"src":"461:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6837,"name":"bytes","nodeType":"ElementaryTypeName","src":"461:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"311:166:17"},"src":"287:191:17"},{"anonymous":false,"documentation":{"id":6841,"nodeType":"StructuredDocumentation","src":"484:59:17","text":" @dev A scheduled operation was executed."},"eventSelector":"76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d","id":6847,"name":"OperationExecuted","nameLocation":"554:17:17","nodeType":"EventDefinition","parameters":{"id":6846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6843,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"588:11:17","nodeType":"VariableDeclaration","scope":6847,"src":"572:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6842,"name":"bytes32","nodeType":"ElementaryTypeName","src":"572:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6845,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"616:5:17","nodeType":"VariableDeclaration","scope":6847,"src":"601:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6844,"name":"uint32","nodeType":"ElementaryTypeName","src":"601:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"571:51:17"},"src":"548:75:17"},{"anonymous":false,"documentation":{"id":6848,"nodeType":"StructuredDocumentation","src":"629:59:17","text":" @dev A scheduled operation was canceled."},"eventSelector":"bd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f7","id":6854,"name":"OperationCanceled","nameLocation":"699:17:17","nodeType":"EventDefinition","parameters":{"id":6853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6850,"indexed":true,"mutability":"mutable","name":"operationId","nameLocation":"733:11:17","nodeType":"VariableDeclaration","scope":6854,"src":"717:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6849,"name":"bytes32","nodeType":"ElementaryTypeName","src":"717:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6852,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"761:5:17","nodeType":"VariableDeclaration","scope":6854,"src":"746:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6851,"name":"uint32","nodeType":"ElementaryTypeName","src":"746:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"716:51:17"},"src":"693:75:17"},{"anonymous":false,"documentation":{"id":6855,"nodeType":"StructuredDocumentation","src":"774:61:17","text":" @dev Informational labelling for a roleId."},"eventSelector":"1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a450","id":6861,"name":"RoleLabel","nameLocation":"846:9:17","nodeType":"EventDefinition","parameters":{"id":6860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6857,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"871:6:17","nodeType":"VariableDeclaration","scope":6861,"src":"856:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6856,"name":"uint64","nodeType":"ElementaryTypeName","src":"856:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6859,"indexed":false,"mutability":"mutable","name":"label","nameLocation":"886:5:17","nodeType":"VariableDeclaration","scope":6861,"src":"879:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6858,"name":"string","nodeType":"ElementaryTypeName","src":"879:6:17","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"855:37:17"},"src":"840:53:17"},{"anonymous":false,"documentation":{"id":6862,"nodeType":"StructuredDocumentation","src":"899: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":6874,"name":"RoleGranted","nameLocation":"1285:11:17","nodeType":"EventDefinition","parameters":{"id":6873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6864,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1312:6:17","nodeType":"VariableDeclaration","scope":6874,"src":"1297:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6863,"name":"uint64","nodeType":"ElementaryTypeName","src":"1297:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6866,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1336:7:17","nodeType":"VariableDeclaration","scope":6874,"src":"1320:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6865,"name":"address","nodeType":"ElementaryTypeName","src":"1320:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6868,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"1352:5:17","nodeType":"VariableDeclaration","scope":6874,"src":"1345:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6867,"name":"uint32","nodeType":"ElementaryTypeName","src":"1345:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6870,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"1366:5:17","nodeType":"VariableDeclaration","scope":6874,"src":"1359:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6869,"name":"uint48","nodeType":"ElementaryTypeName","src":"1359:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":6872,"indexed":false,"mutability":"mutable","name":"newMember","nameLocation":"1378:9:17","nodeType":"VariableDeclaration","scope":6874,"src":"1373:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6871,"name":"bool","nodeType":"ElementaryTypeName","src":"1373:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1296:92:17"},"src":"1279:110:17"},{"anonymous":false,"documentation":{"id":6875,"nodeType":"StructuredDocumentation","src":"1395:125:17","text":" @dev Emitted when `account` membership or `roleId` is revoked. Unlike granting, revoking is instantaneous."},"eventSelector":"f229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c166","id":6881,"name":"RoleRevoked","nameLocation":"1531:11:17","nodeType":"EventDefinition","parameters":{"id":6880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6877,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1558:6:17","nodeType":"VariableDeclaration","scope":6881,"src":"1543:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6876,"name":"uint64","nodeType":"ElementaryTypeName","src":"1543:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6879,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1582:7:17","nodeType":"VariableDeclaration","scope":6881,"src":"1566:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6878,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1542:48:17"},"src":"1525:66:17"},{"anonymous":false,"documentation":{"id":6882,"nodeType":"StructuredDocumentation","src":"1597:78:17","text":" @dev Role acting as admin over a given `roleId` is updated."},"eventSelector":"1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e6340","id":6888,"name":"RoleAdminChanged","nameLocation":"1686:16:17","nodeType":"EventDefinition","parameters":{"id":6887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6884,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1718:6:17","nodeType":"VariableDeclaration","scope":6888,"src":"1703:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6883,"name":"uint64","nodeType":"ElementaryTypeName","src":"1703:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6886,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"1741:5:17","nodeType":"VariableDeclaration","scope":6888,"src":"1726:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6885,"name":"uint64","nodeType":"ElementaryTypeName","src":"1726:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1702:45:17"},"src":"1680:68:17"},{"anonymous":false,"documentation":{"id":6889,"nodeType":"StructuredDocumentation","src":"1754:81:17","text":" @dev Role acting as guardian over a given `roleId` is updated."},"eventSelector":"7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae2","id":6895,"name":"RoleGuardianChanged","nameLocation":"1846:19:17","nodeType":"EventDefinition","parameters":{"id":6894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6891,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"1881:6:17","nodeType":"VariableDeclaration","scope":6895,"src":"1866:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6890,"name":"uint64","nodeType":"ElementaryTypeName","src":"1866:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6893,"indexed":true,"mutability":"mutable","name":"guardian","nameLocation":"1904:8:17","nodeType":"VariableDeclaration","scope":6895,"src":"1889:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6892,"name":"uint64","nodeType":"ElementaryTypeName","src":"1889:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1865:48:17"},"src":"1840:74:17"},{"anonymous":false,"documentation":{"id":6896,"nodeType":"StructuredDocumentation","src":"1920:108:17","text":" @dev Grant delay for a given `roleId` will be updated to `delay` when `since` is reached."},"eventSelector":"feb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b48","id":6904,"name":"RoleGrantDelayChanged","nameLocation":"2039:21:17","nodeType":"EventDefinition","parameters":{"id":6903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6898,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"2076:6:17","nodeType":"VariableDeclaration","scope":6904,"src":"2061:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6897,"name":"uint64","nodeType":"ElementaryTypeName","src":"2061:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":6900,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"2091:5:17","nodeType":"VariableDeclaration","scope":6904,"src":"2084:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6899,"name":"uint32","nodeType":"ElementaryTypeName","src":"2084:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6902,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"2105:5:17","nodeType":"VariableDeclaration","scope":6904,"src":"2098:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6901,"name":"uint48","nodeType":"ElementaryTypeName","src":"2098:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2060:51:17"},"src":"2033:79:17"},{"anonymous":false,"documentation":{"id":6905,"nodeType":"StructuredDocumentation","src":"2118:77:17","text":" @dev Target mode is updated (true = closed, false = open)."},"eventSelector":"90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb138","id":6911,"name":"TargetClosed","nameLocation":"2206:12:17","nodeType":"EventDefinition","parameters":{"id":6910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6907,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2235:6:17","nodeType":"VariableDeclaration","scope":6911,"src":"2219:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6906,"name":"address","nodeType":"ElementaryTypeName","src":"2219:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6909,"indexed":false,"mutability":"mutable","name":"closed","nameLocation":"2248:6:17","nodeType":"VariableDeclaration","scope":6911,"src":"2243:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6908,"name":"bool","nodeType":"ElementaryTypeName","src":"2243:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2218:37:17"},"src":"2200:56:17"},{"anonymous":false,"documentation":{"id":6912,"nodeType":"StructuredDocumentation","src":"2262:94:17","text":" @dev Role required to invoke `selector` on `target` is updated to `roleId`."},"eventSelector":"9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151","id":6920,"name":"TargetFunctionRoleUpdated","nameLocation":"2367:25:17","nodeType":"EventDefinition","parameters":{"id":6919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6914,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2409:6:17","nodeType":"VariableDeclaration","scope":6920,"src":"2393:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6913,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6916,"indexed":false,"mutability":"mutable","name":"selector","nameLocation":"2424:8:17","nodeType":"VariableDeclaration","scope":6920,"src":"2417:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6915,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2417:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":6918,"indexed":true,"mutability":"mutable","name":"roleId","nameLocation":"2449:6:17","nodeType":"VariableDeclaration","scope":6920,"src":"2434:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6917,"name":"uint64","nodeType":"ElementaryTypeName","src":"2434:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2392:64:17"},"src":"2361:96:17"},{"anonymous":false,"documentation":{"id":6921,"nodeType":"StructuredDocumentation","src":"2463:108:17","text":" @dev Admin delay for a given `target` will be updated to `delay` when `since` is reached."},"eventSelector":"a56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c","id":6929,"name":"TargetAdminDelayUpdated","nameLocation":"2582:23:17","nodeType":"EventDefinition","parameters":{"id":6928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6923,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"2622:6:17","nodeType":"VariableDeclaration","scope":6929,"src":"2606:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6922,"name":"address","nodeType":"ElementaryTypeName","src":"2606:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6925,"indexed":false,"mutability":"mutable","name":"delay","nameLocation":"2637:5:17","nodeType":"VariableDeclaration","scope":6929,"src":"2630:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6924,"name":"uint32","nodeType":"ElementaryTypeName","src":"2630:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":6927,"indexed":false,"mutability":"mutable","name":"since","nameLocation":"2651:5:17","nodeType":"VariableDeclaration","scope":6929,"src":"2644:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":6926,"name":"uint48","nodeType":"ElementaryTypeName","src":"2644:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2605:52:17"},"src":"2576:82:17"},{"errorSelector":"813e9459","id":6933,"name":"AccessManagerAlreadyScheduled","nameLocation":"2670:29:17","nodeType":"ErrorDefinition","parameters":{"id":6932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6931,"mutability":"mutable","name":"operationId","nameLocation":"2708:11:17","nodeType":"VariableDeclaration","scope":6933,"src":"2700:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2700:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2699:21:17"},"src":"2664:57:17"},{"errorSelector":"60a299b0","id":6937,"name":"AccessManagerNotScheduled","nameLocation":"2732:25:17","nodeType":"ErrorDefinition","parameters":{"id":6936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6935,"mutability":"mutable","name":"operationId","nameLocation":"2766:11:17","nodeType":"VariableDeclaration","scope":6937,"src":"2758:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2758:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2757:21:17"},"src":"2726:53:17"},{"errorSelector":"18cb6b7a","id":6941,"name":"AccessManagerNotReady","nameLocation":"2790:21:17","nodeType":"ErrorDefinition","parameters":{"id":6940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6939,"mutability":"mutable","name":"operationId","nameLocation":"2820:11:17","nodeType":"VariableDeclaration","scope":6941,"src":"2812:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2812:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2811:21:17"},"src":"2784:49:17"},{"errorSelector":"78a5d6e4","id":6945,"name":"AccessManagerExpired","nameLocation":"2844:20:17","nodeType":"ErrorDefinition","parameters":{"id":6944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6943,"mutability":"mutable","name":"operationId","nameLocation":"2873:11:17","nodeType":"VariableDeclaration","scope":6945,"src":"2865:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2865:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2864:21:17"},"src":"2838:48:17"},{"errorSelector":"1871a90c","id":6949,"name":"AccessManagerLockedRole","nameLocation":"2897:23:17","nodeType":"ErrorDefinition","parameters":{"id":6948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6947,"mutability":"mutable","name":"roleId","nameLocation":"2928:6:17","nodeType":"VariableDeclaration","scope":6949,"src":"2921:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6946,"name":"uint64","nodeType":"ElementaryTypeName","src":"2921:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2920:15:17"},"src":"2891:45:17"},{"errorSelector":"5f159e63","id":6951,"name":"AccessManagerBadConfirmation","nameLocation":"2947:28:17","nodeType":"ErrorDefinition","parameters":{"id":6950,"nodeType":"ParameterList","parameters":[],"src":"2975:2:17"},"src":"2941:37:17"},{"errorSelector":"f07e038f","id":6957,"name":"AccessManagerUnauthorizedAccount","nameLocation":"2989:32:17","nodeType":"ErrorDefinition","parameters":{"id":6956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6953,"mutability":"mutable","name":"msgsender","nameLocation":"3030:9:17","nodeType":"VariableDeclaration","scope":6957,"src":"3022:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6952,"name":"address","nodeType":"ElementaryTypeName","src":"3022:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6955,"mutability":"mutable","name":"roleId","nameLocation":"3048:6:17","nodeType":"VariableDeclaration","scope":6957,"src":"3041:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":6954,"name":"uint64","nodeType":"ElementaryTypeName","src":"3041:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3021:34:17"},"src":"2983:73:17"},{"errorSelector":"81c6f24b","id":6965,"name":"AccessManagerUnauthorizedCall","nameLocation":"3067:29:17","nodeType":"ErrorDefinition","parameters":{"id":6964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6959,"mutability":"mutable","name":"caller","nameLocation":"3105:6:17","nodeType":"VariableDeclaration","scope":6965,"src":"3097:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6958,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6961,"mutability":"mutable","name":"target","nameLocation":"3121:6:17","nodeType":"VariableDeclaration","scope":6965,"src":"3113:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6960,"name":"address","nodeType":"ElementaryTypeName","src":"3113:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6963,"mutability":"mutable","name":"selector","nameLocation":"3136:8:17","nodeType":"VariableDeclaration","scope":6965,"src":"3129:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6962,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3129:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3096:49:17"},"src":"3061:85:17"},{"errorSelector":"320ff748","id":6969,"name":"AccessManagerUnauthorizedConsume","nameLocation":"3157:32:17","nodeType":"ErrorDefinition","parameters":{"id":6968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6967,"mutability":"mutable","name":"target","nameLocation":"3198:6:17","nodeType":"VariableDeclaration","scope":6969,"src":"3190:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6966,"name":"address","nodeType":"ElementaryTypeName","src":"3190:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3189:16:17"},"src":"3151:55:17"},{"errorSelector":"3fe2751c","id":6979,"name":"AccessManagerUnauthorizedCancel","nameLocation":"3217:31:17","nodeType":"ErrorDefinition","parameters":{"id":6978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6971,"mutability":"mutable","name":"msgsender","nameLocation":"3257:9:17","nodeType":"VariableDeclaration","scope":6979,"src":"3249:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6970,"name":"address","nodeType":"ElementaryTypeName","src":"3249:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6973,"mutability":"mutable","name":"caller","nameLocation":"3276:6:17","nodeType":"VariableDeclaration","scope":6979,"src":"3268:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6972,"name":"address","nodeType":"ElementaryTypeName","src":"3268:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6975,"mutability":"mutable","name":"target","nameLocation":"3292:6:17","nodeType":"VariableDeclaration","scope":6979,"src":"3284:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6974,"name":"address","nodeType":"ElementaryTypeName","src":"3284:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6977,"mutability":"mutable","name":"selector","nameLocation":"3307:8:17","nodeType":"VariableDeclaration","scope":6979,"src":"3300:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6976,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3300:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3248:68:17"},"src":"3211:106:17"},{"errorSelector":"0813ada2","id":6983,"name":"AccessManagerInvalidInitialAdmin","nameLocation":"3328:32:17","nodeType":"ErrorDefinition","parameters":{"id":6982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6981,"mutability":"mutable","name":"initialAdmin","nameLocation":"3369:12:17","nodeType":"VariableDeclaration","scope":6983,"src":"3361:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6980,"name":"address","nodeType":"ElementaryTypeName","src":"3361:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3360:22:17"},"src":"3322:61:17"},{"documentation":{"id":6984,"nodeType":"StructuredDocumentation","src":"3389:1393: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 `immediate` 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":6997,"implemented":false,"kind":"function","modifiers":[],"name":"canCall","nameLocation":"4796:7:17","nodeType":"FunctionDefinition","parameters":{"id":6991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6986,"mutability":"mutable","name":"caller","nameLocation":"4821:6:17","nodeType":"VariableDeclaration","scope":6997,"src":"4813:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6985,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6988,"mutability":"mutable","name":"target","nameLocation":"4845:6:17","nodeType":"VariableDeclaration","scope":6997,"src":"4837:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6987,"name":"address","nodeType":"ElementaryTypeName","src":"4837:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6990,"mutability":"mutable","name":"selector","nameLocation":"4868:8:17","nodeType":"VariableDeclaration","scope":6997,"src":"4861:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6989,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4861:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4803:79:17"},"returnParameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6993,"mutability":"mutable","name":"allowed","nameLocation":"4911:7:17","nodeType":"VariableDeclaration","scope":6997,"src":"4906:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6992,"name":"bool","nodeType":"ElementaryTypeName","src":"4906:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6995,"mutability":"mutable","name":"delay","nameLocation":"4927:5:17","nodeType":"VariableDeclaration","scope":6997,"src":"4920:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6994,"name":"uint32","nodeType":"ElementaryTypeName","src":"4920:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4905:28:17"},"scope":7253,"src":"4787:147:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6998,"nodeType":"StructuredDocumentation","src":"4940: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":7003,"implemented":false,"kind":"function","modifiers":[],"name":"expiration","nameLocation":"5206:10:17","nodeType":"FunctionDefinition","parameters":{"id":6999,"nodeType":"ParameterList","parameters":[],"src":"5216:2:17"},"returnParameters":{"id":7002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7003,"src":"5242:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7000,"name":"uint32","nodeType":"ElementaryTypeName","src":"5242:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5241:8:17"},"scope":7253,"src":"5197:53:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7004,"nodeType":"StructuredDocumentation","src":"5256:246: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 case event of an\n accidental increase). Defaults to 5 days."},"functionSelector":"cc1b6c81","id":7009,"implemented":false,"kind":"function","modifiers":[],"name":"minSetback","nameLocation":"5516:10:17","nodeType":"FunctionDefinition","parameters":{"id":7005,"nodeType":"ParameterList","parameters":[],"src":"5526:2:17"},"returnParameters":{"id":7008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7009,"src":"5552:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7006,"name":"uint32","nodeType":"ElementaryTypeName","src":"5552:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"5551:8:17"},"scope":7253,"src":"5507:53:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7010,"nodeType":"StructuredDocumentation","src":"5566: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":7017,"implemented":false,"kind":"function","modifiers":[],"name":"isTargetClosed","nameLocation":"5823:14:17","nodeType":"FunctionDefinition","parameters":{"id":7013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7012,"mutability":"mutable","name":"target","nameLocation":"5846:6:17","nodeType":"VariableDeclaration","scope":7017,"src":"5838:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7011,"name":"address","nodeType":"ElementaryTypeName","src":"5838:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5837:16:17"},"returnParameters":{"id":7016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7017,"src":"5877:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7014,"name":"bool","nodeType":"ElementaryTypeName","src":"5877:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5876:6:17"},"scope":7253,"src":"5814:69:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7018,"nodeType":"StructuredDocumentation","src":"5889:65:17","text":" @dev Get the role required to call a function."},"functionSelector":"6d5115bd","id":7027,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetFunctionRole","nameLocation":"5968:21:17","nodeType":"FunctionDefinition","parameters":{"id":7023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7020,"mutability":"mutable","name":"target","nameLocation":"5998:6:17","nodeType":"VariableDeclaration","scope":7027,"src":"5990:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7019,"name":"address","nodeType":"ElementaryTypeName","src":"5990:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7022,"mutability":"mutable","name":"selector","nameLocation":"6013:8:17","nodeType":"VariableDeclaration","scope":7027,"src":"6006:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7021,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6006:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5989:33:17"},"returnParameters":{"id":7026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7027,"src":"6046:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7024,"name":"uint64","nodeType":"ElementaryTypeName","src":"6046:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6045:8:17"},"scope":7253,"src":"5959:95:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7028,"nodeType":"StructuredDocumentation","src":"6060:127:17","text":" @dev Get the admin delay for a target contract. Changes to contract configuration are subject to this delay."},"functionSelector":"4c1da1e2","id":7035,"implemented":false,"kind":"function","modifiers":[],"name":"getTargetAdminDelay","nameLocation":"6201:19:17","nodeType":"FunctionDefinition","parameters":{"id":7031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7030,"mutability":"mutable","name":"target","nameLocation":"6229:6:17","nodeType":"VariableDeclaration","scope":7035,"src":"6221:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7029,"name":"address","nodeType":"ElementaryTypeName","src":"6221:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6220:16:17"},"returnParameters":{"id":7034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7035,"src":"6260:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7032,"name":"uint32","nodeType":"ElementaryTypeName","src":"6260:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"6259:8:17"},"scope":7253,"src":"6192:76:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7036,"nodeType":"StructuredDocumentation","src":"6274: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":7043,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"6553:12:17","nodeType":"FunctionDefinition","parameters":{"id":7039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7038,"mutability":"mutable","name":"roleId","nameLocation":"6573:6:17","nodeType":"VariableDeclaration","scope":7043,"src":"6566:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7037,"name":"uint64","nodeType":"ElementaryTypeName","src":"6566:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6565:15:17"},"returnParameters":{"id":7042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7043,"src":"6604:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7040,"name":"uint64","nodeType":"ElementaryTypeName","src":"6604:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6603:8:17"},"scope":7253,"src":"6544:68:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7044,"nodeType":"StructuredDocumentation","src":"6618: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":7051,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleGuardian","nameLocation":"6817:15:17","nodeType":"FunctionDefinition","parameters":{"id":7047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7046,"mutability":"mutable","name":"roleId","nameLocation":"6840:6:17","nodeType":"VariableDeclaration","scope":7051,"src":"6833:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7045,"name":"uint64","nodeType":"ElementaryTypeName","src":"6833:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6832:15:17"},"returnParameters":{"id":7050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7049,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7051,"src":"6871:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7048,"name":"uint64","nodeType":"ElementaryTypeName","src":"6871:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6870:8:17"},"scope":7253,"src":"6808:71:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7052,"nodeType":"StructuredDocumentation","src":"6885: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":7059,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleGrantDelay","nameLocation":"7185:17:17","nodeType":"FunctionDefinition","parameters":{"id":7055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7054,"mutability":"mutable","name":"roleId","nameLocation":"7210:6:17","nodeType":"VariableDeclaration","scope":7059,"src":"7203:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7053,"name":"uint64","nodeType":"ElementaryTypeName","src":"7203:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7202:15:17"},"returnParameters":{"id":7058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7059,"src":"7241:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7056,"name":"uint32","nodeType":"ElementaryTypeName","src":"7241:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"7240:8:17"},"scope":7253,"src":"7176:73:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7060,"nodeType":"StructuredDocumentation","src":"7255:599: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 operation 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":7075,"implemented":false,"kind":"function","modifiers":[],"name":"getAccess","nameLocation":"7868:9:17","nodeType":"FunctionDefinition","parameters":{"id":7065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"mutability":"mutable","name":"roleId","nameLocation":"7894:6:17","nodeType":"VariableDeclaration","scope":7075,"src":"7887:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7061,"name":"uint64","nodeType":"ElementaryTypeName","src":"7887:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7064,"mutability":"mutable","name":"account","nameLocation":"7918:7:17","nodeType":"VariableDeclaration","scope":7075,"src":"7910:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7063,"name":"address","nodeType":"ElementaryTypeName","src":"7910:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7877:54:17"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7067,"mutability":"mutable","name":"since","nameLocation":"7962:5:17","nodeType":"VariableDeclaration","scope":7075,"src":"7955:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":7066,"name":"uint48","nodeType":"ElementaryTypeName","src":"7955:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"},{"constant":false,"id":7069,"mutability":"mutable","name":"currentDelay","nameLocation":"7976:12:17","nodeType":"VariableDeclaration","scope":7075,"src":"7969:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7068,"name":"uint32","nodeType":"ElementaryTypeName","src":"7969:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":7071,"mutability":"mutable","name":"pendingDelay","nameLocation":"7997:12:17","nodeType":"VariableDeclaration","scope":7075,"src":"7990:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7070,"name":"uint32","nodeType":"ElementaryTypeName","src":"7990:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":7073,"mutability":"mutable","name":"effect","nameLocation":"8018:6:17","nodeType":"VariableDeclaration","scope":7075,"src":"8011:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":7072,"name":"uint48","nodeType":"ElementaryTypeName","src":"8011:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"7954:71:17"},"scope":7253,"src":"7859:167:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7076,"nodeType":"StructuredDocumentation","src":"8032: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":7087,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"8276:7:17","nodeType":"FunctionDefinition","parameters":{"id":7081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7078,"mutability":"mutable","name":"roleId","nameLocation":"8291:6:17","nodeType":"VariableDeclaration","scope":7087,"src":"8284:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7077,"name":"uint64","nodeType":"ElementaryTypeName","src":"8284:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7080,"mutability":"mutable","name":"account","nameLocation":"8307:7:17","nodeType":"VariableDeclaration","scope":7087,"src":"8299:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7079,"name":"address","nodeType":"ElementaryTypeName","src":"8299:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8283:32:17"},"returnParameters":{"id":7086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7083,"mutability":"mutable","name":"isMember","nameLocation":"8344:8:17","nodeType":"VariableDeclaration","scope":7087,"src":"8339:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7082,"name":"bool","nodeType":"ElementaryTypeName","src":"8339:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7085,"mutability":"mutable","name":"executionDelay","nameLocation":"8361:14:17","nodeType":"VariableDeclaration","scope":7087,"src":"8354:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7084,"name":"uint32","nodeType":"ElementaryTypeName","src":"8354:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"8338:38:17"},"scope":7253,"src":"8267:110:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7088,"nodeType":"StructuredDocumentation","src":"8383: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":7095,"implemented":false,"kind":"function","modifiers":[],"name":"labelRole","nameLocation":"8605:9:17","nodeType":"FunctionDefinition","parameters":{"id":7093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7090,"mutability":"mutable","name":"roleId","nameLocation":"8622:6:17","nodeType":"VariableDeclaration","scope":7095,"src":"8615:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7089,"name":"uint64","nodeType":"ElementaryTypeName","src":"8615:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7092,"mutability":"mutable","name":"label","nameLocation":"8646:5:17","nodeType":"VariableDeclaration","scope":7095,"src":"8630:21:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7091,"name":"string","nodeType":"ElementaryTypeName","src":"8630:6:17","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8614:38:17"},"returnParameters":{"id":7094,"nodeType":"ParameterList","parameters":[],"src":"8661:0:17"},"scope":7253,"src":"8596:66:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7096,"nodeType":"StructuredDocumentation","src":"8668: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":7105,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"9904:9:17","nodeType":"FunctionDefinition","parameters":{"id":7103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7098,"mutability":"mutable","name":"roleId","nameLocation":"9921:6:17","nodeType":"VariableDeclaration","scope":7105,"src":"9914:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7097,"name":"uint64","nodeType":"ElementaryTypeName","src":"9914:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7100,"mutability":"mutable","name":"account","nameLocation":"9937:7:17","nodeType":"VariableDeclaration","scope":7105,"src":"9929:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7099,"name":"address","nodeType":"ElementaryTypeName","src":"9929:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7102,"mutability":"mutable","name":"executionDelay","nameLocation":"9953:14:17","nodeType":"VariableDeclaration","scope":7105,"src":"9946:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7101,"name":"uint32","nodeType":"ElementaryTypeName","src":"9946:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"9913:55:17"},"returnParameters":{"id":7104,"nodeType":"ParameterList","parameters":[],"src":"9977:0:17"},"scope":7253,"src":"9895:83:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7106,"nodeType":"StructuredDocumentation","src":"9984: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":7113,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"10375:10:17","nodeType":"FunctionDefinition","parameters":{"id":7111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7108,"mutability":"mutable","name":"roleId","nameLocation":"10393:6:17","nodeType":"VariableDeclaration","scope":7113,"src":"10386:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7107,"name":"uint64","nodeType":"ElementaryTypeName","src":"10386:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7110,"mutability":"mutable","name":"account","nameLocation":"10409:7:17","nodeType":"VariableDeclaration","scope":7113,"src":"10401:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7109,"name":"address","nodeType":"ElementaryTypeName","src":"10401:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10385:32:17"},"returnParameters":{"id":7112,"nodeType":"ParameterList","parameters":[],"src":"10426:0:17"},"scope":7253,"src":"10366:61:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7114,"nodeType":"StructuredDocumentation","src":"10433: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":7121,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"10764:12:17","nodeType":"FunctionDefinition","parameters":{"id":7119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7116,"mutability":"mutable","name":"roleId","nameLocation":"10784:6:17","nodeType":"VariableDeclaration","scope":7121,"src":"10777:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7115,"name":"uint64","nodeType":"ElementaryTypeName","src":"10777:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7118,"mutability":"mutable","name":"callerConfirmation","nameLocation":"10800:18:17","nodeType":"VariableDeclaration","scope":7121,"src":"10792:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7117,"name":"address","nodeType":"ElementaryTypeName","src":"10792:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10776:43:17"},"returnParameters":{"id":7120,"nodeType":"ParameterList","parameters":[],"src":"10828:0:17"},"scope":7253,"src":"10755:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7122,"nodeType":"StructuredDocumentation","src":"10835: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":7129,"implemented":false,"kind":"function","modifiers":[],"name":"setRoleAdmin","nameLocation":"11033:12:17","nodeType":"FunctionDefinition","parameters":{"id":7127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7124,"mutability":"mutable","name":"roleId","nameLocation":"11053:6:17","nodeType":"VariableDeclaration","scope":7129,"src":"11046:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7123,"name":"uint64","nodeType":"ElementaryTypeName","src":"11046:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7126,"mutability":"mutable","name":"admin","nameLocation":"11068:5:17","nodeType":"VariableDeclaration","scope":7129,"src":"11061:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7125,"name":"uint64","nodeType":"ElementaryTypeName","src":"11061:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11045:29:17"},"returnParameters":{"id":7128,"nodeType":"ParameterList","parameters":[],"src":"11083:0:17"},"scope":7253,"src":"11024:60:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7130,"nodeType":"StructuredDocumentation","src":"11090: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":7137,"implemented":false,"kind":"function","modifiers":[],"name":"setRoleGuardian","nameLocation":"11294:15:17","nodeType":"FunctionDefinition","parameters":{"id":7135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7132,"mutability":"mutable","name":"roleId","nameLocation":"11317:6:17","nodeType":"VariableDeclaration","scope":7137,"src":"11310:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7131,"name":"uint64","nodeType":"ElementaryTypeName","src":"11310:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7134,"mutability":"mutable","name":"guardian","nameLocation":"11332:8:17","nodeType":"VariableDeclaration","scope":7137,"src":"11325:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7133,"name":"uint64","nodeType":"ElementaryTypeName","src":"11325:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11309:32:17"},"returnParameters":{"id":7136,"nodeType":"ParameterList","parameters":[],"src":"11350:0:17"},"scope":7253,"src":"11285:66:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7138,"nodeType":"StructuredDocumentation","src":"11357: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":7145,"implemented":false,"kind":"function","modifiers":[],"name":"setGrantDelay","nameLocation":"11567:13:17","nodeType":"FunctionDefinition","parameters":{"id":7143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7140,"mutability":"mutable","name":"roleId","nameLocation":"11588:6:17","nodeType":"VariableDeclaration","scope":7145,"src":"11581:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7139,"name":"uint64","nodeType":"ElementaryTypeName","src":"11581:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":7142,"mutability":"mutable","name":"newDelay","nameLocation":"11603:8:17","nodeType":"VariableDeclaration","scope":7145,"src":"11596:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7141,"name":"uint32","nodeType":"ElementaryTypeName","src":"11596:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"11580:32:17"},"returnParameters":{"id":7144,"nodeType":"ParameterList","parameters":[],"src":"11621:0:17"},"scope":7253,"src":"11558:64:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7146,"nodeType":"StructuredDocumentation","src":"11628: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":7156,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetFunctionRole","nameLocation":"11909:21:17","nodeType":"FunctionDefinition","parameters":{"id":7154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7148,"mutability":"mutable","name":"target","nameLocation":"11939:6:17","nodeType":"VariableDeclaration","scope":7156,"src":"11931:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7147,"name":"address","nodeType":"ElementaryTypeName","src":"11931:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7151,"mutability":"mutable","name":"selectors","nameLocation":"11965:9:17","nodeType":"VariableDeclaration","scope":7156,"src":"11947:27:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_calldata_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":7149,"name":"bytes4","nodeType":"ElementaryTypeName","src":"11947:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":7150,"nodeType":"ArrayTypeName","src":"11947:8:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":7153,"mutability":"mutable","name":"roleId","nameLocation":"11983:6:17","nodeType":"VariableDeclaration","scope":7156,"src":"11976:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":7152,"name":"uint64","nodeType":"ElementaryTypeName","src":"11976:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"11930:60:17"},"returnParameters":{"id":7155,"nodeType":"ParameterList","parameters":[],"src":"11999:0:17"},"scope":7253,"src":"11900:100:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7157,"nodeType":"StructuredDocumentation","src":"12006: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":7164,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetAdminDelay","nameLocation":"12249:19:17","nodeType":"FunctionDefinition","parameters":{"id":7162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7159,"mutability":"mutable","name":"target","nameLocation":"12277:6:17","nodeType":"VariableDeclaration","scope":7164,"src":"12269:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7158,"name":"address","nodeType":"ElementaryTypeName","src":"12269:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7161,"mutability":"mutable","name":"newDelay","nameLocation":"12292:8:17","nodeType":"VariableDeclaration","scope":7164,"src":"12285:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7160,"name":"uint32","nodeType":"ElementaryTypeName","src":"12285:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"12268:33:17"},"returnParameters":{"id":7163,"nodeType":"ParameterList","parameters":[],"src":"12310:0:17"},"scope":7253,"src":"12240:71:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7165,"nodeType":"StructuredDocumentation","src":"12317: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":7172,"implemented":false,"kind":"function","modifiers":[],"name":"setTargetClosed","nameLocation":"12622:15:17","nodeType":"FunctionDefinition","parameters":{"id":7170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7167,"mutability":"mutable","name":"target","nameLocation":"12646:6:17","nodeType":"VariableDeclaration","scope":7172,"src":"12638:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7166,"name":"address","nodeType":"ElementaryTypeName","src":"12638:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7169,"mutability":"mutable","name":"closed","nameLocation":"12659:6:17","nodeType":"VariableDeclaration","scope":7172,"src":"12654:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7168,"name":"bool","nodeType":"ElementaryTypeName","src":"12654:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12637:29:17"},"returnParameters":{"id":7171,"nodeType":"ParameterList","parameters":[],"src":"12675:0:17"},"scope":7253,"src":"12613:63:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7173,"nodeType":"StructuredDocumentation","src":"12682: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":7180,"implemented":false,"kind":"function","modifiers":[],"name":"getSchedule","nameLocation":"12905:11:17","nodeType":"FunctionDefinition","parameters":{"id":7176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7175,"mutability":"mutable","name":"id","nameLocation":"12925:2:17","nodeType":"VariableDeclaration","scope":7180,"src":"12917:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12917:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12916:12:17"},"returnParameters":{"id":7179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7180,"src":"12952:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":7177,"name":"uint48","nodeType":"ElementaryTypeName","src":"12952:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"12951:8:17"},"scope":7253,"src":"12896:64:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7181,"nodeType":"StructuredDocumentation","src":"12966: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":7188,"implemented":false,"kind":"function","modifiers":[],"name":"getNonce","nameLocation":"13132:8:17","nodeType":"FunctionDefinition","parameters":{"id":7184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7183,"mutability":"mutable","name":"id","nameLocation":"13149:2:17","nodeType":"VariableDeclaration","scope":7188,"src":"13141:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13141:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13140:12:17"},"returnParameters":{"id":7187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7186,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7188,"src":"13176:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7185,"name":"uint32","nodeType":"ElementaryTypeName","src":"13176:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13175:8:17"},"scope":7253,"src":"13123:61:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7189,"nodeType":"StructuredDocumentation","src":"13190: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":7202,"implemented":false,"kind":"function","modifiers":[],"name":"schedule","nameLocation":"14272:8:17","nodeType":"FunctionDefinition","parameters":{"id":7196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7191,"mutability":"mutable","name":"target","nameLocation":"14298:6:17","nodeType":"VariableDeclaration","scope":7202,"src":"14290:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7190,"name":"address","nodeType":"ElementaryTypeName","src":"14290:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7193,"mutability":"mutable","name":"data","nameLocation":"14329:4:17","nodeType":"VariableDeclaration","scope":7202,"src":"14314:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7192,"name":"bytes","nodeType":"ElementaryTypeName","src":"14314:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7195,"mutability":"mutable","name":"when","nameLocation":"14350:4:17","nodeType":"VariableDeclaration","scope":7202,"src":"14343:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":7194,"name":"uint48","nodeType":"ElementaryTypeName","src":"14343:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14280:80:17"},"returnParameters":{"id":7201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7198,"mutability":"mutable","name":"operationId","nameLocation":"14387:11:17","nodeType":"VariableDeclaration","scope":7202,"src":"14379:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7197,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14379:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7200,"mutability":"mutable","name":"nonce","nameLocation":"14407:5:17","nodeType":"VariableDeclaration","scope":7202,"src":"14400:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7199,"name":"uint32","nodeType":"ElementaryTypeName","src":"14400:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14378:35:17"},"scope":7253,"src":"14263:151:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7203,"nodeType":"StructuredDocumentation","src":"14420: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":7212,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"14885:7:17","nodeType":"FunctionDefinition","parameters":{"id":7208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7205,"mutability":"mutable","name":"target","nameLocation":"14901:6:17","nodeType":"VariableDeclaration","scope":7212,"src":"14893:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7204,"name":"address","nodeType":"ElementaryTypeName","src":"14893:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7207,"mutability":"mutable","name":"data","nameLocation":"14924:4:17","nodeType":"VariableDeclaration","scope":7212,"src":"14909:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7206,"name":"bytes","nodeType":"ElementaryTypeName","src":"14909:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14892:37:17"},"returnParameters":{"id":7211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7212,"src":"14956:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7209,"name":"uint32","nodeType":"ElementaryTypeName","src":"14956:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"14955:8:17"},"scope":7253,"src":"14876:88:17","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":7213,"nodeType":"StructuredDocumentation","src":"14970: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":7224,"implemented":false,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"15323:6:17","nodeType":"FunctionDefinition","parameters":{"id":7220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7215,"mutability":"mutable","name":"caller","nameLocation":"15338:6:17","nodeType":"VariableDeclaration","scope":7224,"src":"15330:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7214,"name":"address","nodeType":"ElementaryTypeName","src":"15330:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7217,"mutability":"mutable","name":"target","nameLocation":"15354:6:17","nodeType":"VariableDeclaration","scope":7224,"src":"15346:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7216,"name":"address","nodeType":"ElementaryTypeName","src":"15346:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7219,"mutability":"mutable","name":"data","nameLocation":"15377:4:17","nodeType":"VariableDeclaration","scope":7224,"src":"15362:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7218,"name":"bytes","nodeType":"ElementaryTypeName","src":"15362:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15329:53:17"},"returnParameters":{"id":7223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7224,"src":"15401:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7221,"name":"uint32","nodeType":"ElementaryTypeName","src":"15401:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15400:8:17"},"scope":7253,"src":"15314:95:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7225,"nodeType":"StructuredDocumentation","src":"15415:434: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 contract 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":7232,"implemented":false,"kind":"function","modifiers":[],"name":"consumeScheduledOp","nameLocation":"15863:18:17","nodeType":"FunctionDefinition","parameters":{"id":7230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7227,"mutability":"mutable","name":"caller","nameLocation":"15890:6:17","nodeType":"VariableDeclaration","scope":7232,"src":"15882:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7226,"name":"address","nodeType":"ElementaryTypeName","src":"15882:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7229,"mutability":"mutable","name":"data","nameLocation":"15913:4:17","nodeType":"VariableDeclaration","scope":7232,"src":"15898:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7228,"name":"bytes","nodeType":"ElementaryTypeName","src":"15898:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15881:37:17"},"returnParameters":{"id":7231,"nodeType":"ParameterList","parameters":[],"src":"15927:0:17"},"scope":7253,"src":"15854:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7233,"nodeType":"StructuredDocumentation","src":"15934:64:17","text":" @dev Hashing function for delayed operations."},"functionSelector":"abd9bd2a","id":7244,"implemented":false,"kind":"function","modifiers":[],"name":"hashOperation","nameLocation":"16012:13:17","nodeType":"FunctionDefinition","parameters":{"id":7240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7235,"mutability":"mutable","name":"caller","nameLocation":"16034:6:17","nodeType":"VariableDeclaration","scope":7244,"src":"16026:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7234,"name":"address","nodeType":"ElementaryTypeName","src":"16026:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7237,"mutability":"mutable","name":"target","nameLocation":"16050:6:17","nodeType":"VariableDeclaration","scope":7244,"src":"16042:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7236,"name":"address","nodeType":"ElementaryTypeName","src":"16042:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7239,"mutability":"mutable","name":"data","nameLocation":"16073:4:17","nodeType":"VariableDeclaration","scope":7244,"src":"16058:19:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7238,"name":"bytes","nodeType":"ElementaryTypeName","src":"16058:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16025:53:17"},"returnParameters":{"id":7243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7244,"src":"16102:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16102:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16101:9:17"},"scope":7253,"src":"16003:108:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7245,"nodeType":"StructuredDocumentation","src":"16117: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":7252,"implemented":false,"kind":"function","modifiers":[],"name":"updateAuthority","nameLocation":"16300:15:17","nodeType":"FunctionDefinition","parameters":{"id":7250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7247,"mutability":"mutable","name":"target","nameLocation":"16324:6:17","nodeType":"VariableDeclaration","scope":7252,"src":"16316:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7246,"name":"address","nodeType":"ElementaryTypeName","src":"16316:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7249,"mutability":"mutable","name":"newAuthority","nameLocation":"16340:12:17","nodeType":"VariableDeclaration","scope":7252,"src":"16332:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7248,"name":"address","nodeType":"ElementaryTypeName","src":"16332:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16315:38:17"},"returnParameters":{"id":7251,"nodeType":"ParameterList","parameters":[],"src":"16362:0:17"},"scope":7253,"src":"16291:72:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7254,"src":"193:16172:17","usedErrors":[6933,6937,6941,6945,6949,6951,6957,6965,6969,6979,6983],"usedEvents":[6840,6847,6854,6861,6874,6881,6888,6895,6904,6911,6920,6929]}],"src":"117:16249:17"},"id":17},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[7335],"IERC165":[9703],"IERC20":[8656]},"id":7336,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7255,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:18"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","id":7257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7336,"sourceUnit":7365,"src":"133:36:18","symbolAliases":[{"foreign":{"id":7256,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"141:6:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":7259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7336,"sourceUnit":7340,"src":"170:38:18","symbolAliases":[{"foreign":{"id":7258,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"178:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7261,"name":"IERC20","nameLocations":["590:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"590:6:18"},"id":7262,"nodeType":"InheritanceSpecifier","src":"590:6:18"},{"baseName":{"id":7263,"name":"IERC165","nameLocations":["598:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":9703,"src":"598:7:18"},"id":7264,"nodeType":"InheritanceSpecifier","src":"598:7:18"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":7260,"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":7335,"linearizedBaseContracts":[7335,9703,8656],"name":"IERC1363","nameLocation":"578:8:18","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7265,"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":7274,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:18","nodeType":"FunctionDefinition","parameters":{"id":7270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7267,"mutability":"mutable","name":"to","nameLocation":"1556:2:18","nodeType":"VariableDeclaration","scope":7274,"src":"1548:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7266,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7269,"mutability":"mutable","name":"value","nameLocation":"1568:5:18","nodeType":"VariableDeclaration","scope":7274,"src":"1560:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:18"},"returnParameters":{"id":7273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7274,"src":"1593:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7271,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:18"},"scope":7335,"src":"1523:76:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7275,"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":7286,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:18","nodeType":"FunctionDefinition","parameters":{"id":7282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7277,"mutability":"mutable","name":"to","nameLocation":"2096:2:18","nodeType":"VariableDeclaration","scope":7286,"src":"2088:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7276,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7279,"mutability":"mutable","name":"value","nameLocation":"2108:5:18","nodeType":"VariableDeclaration","scope":7286,"src":"2100:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7278,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7281,"mutability":"mutable","name":"data","nameLocation":"2130:4:18","nodeType":"VariableDeclaration","scope":7286,"src":"2115:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7280,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:18"},"returnParameters":{"id":7285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7284,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7286,"src":"2154:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7283,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:18"},"scope":7335,"src":"2063:97:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7287,"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":7298,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:18","nodeType":"FunctionDefinition","parameters":{"id":7294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7289,"mutability":"mutable","name":"from","nameLocation":"2661:4:18","nodeType":"VariableDeclaration","scope":7298,"src":"2653:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7288,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7291,"mutability":"mutable","name":"to","nameLocation":"2675:2:18","nodeType":"VariableDeclaration","scope":7298,"src":"2667:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7290,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7293,"mutability":"mutable","name":"value","nameLocation":"2687:5:18","nodeType":"VariableDeclaration","scope":7298,"src":"2679:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7292,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:18"},"returnParameters":{"id":7297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7298,"src":"2712:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7295,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:18"},"scope":7335,"src":"2624:94:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7299,"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":7312,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:18","nodeType":"FunctionDefinition","parameters":{"id":7308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7301,"mutability":"mutable","name":"from","nameLocation":"3302:4:18","nodeType":"VariableDeclaration","scope":7312,"src":"3294:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7300,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7303,"mutability":"mutable","name":"to","nameLocation":"3316:2:18","nodeType":"VariableDeclaration","scope":7312,"src":"3308:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7302,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7305,"mutability":"mutable","name":"value","nameLocation":"3328:5:18","nodeType":"VariableDeclaration","scope":7312,"src":"3320:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7304,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7307,"mutability":"mutable","name":"data","nameLocation":"3350:4:18","nodeType":"VariableDeclaration","scope":7312,"src":"3335:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7306,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:18"},"returnParameters":{"id":7311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7310,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7312,"src":"3374:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7309,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:18"},"scope":7335,"src":"3265:115:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7313,"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":7322,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:18","nodeType":"FunctionDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7315,"mutability":"mutable","name":"spender","nameLocation":"3813:7:18","nodeType":"VariableDeclaration","scope":7322,"src":"3805:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7314,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7317,"mutability":"mutable","name":"value","nameLocation":"3830:5:18","nodeType":"VariableDeclaration","scope":7322,"src":"3822:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:18"},"returnParameters":{"id":7321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7322,"src":"3855:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7319,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:18"},"scope":7335,"src":"3781:80:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7323,"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":7334,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:18","nodeType":"FunctionDefinition","parameters":{"id":7330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7325,"mutability":"mutable","name":"spender","nameLocation":"4382:7:18","nodeType":"VariableDeclaration","scope":7334,"src":"4374:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7324,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7327,"mutability":"mutable","name":"value","nameLocation":"4399:5:18","nodeType":"VariableDeclaration","scope":7334,"src":"4391:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7326,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7329,"mutability":"mutable","name":"data","nameLocation":"4421:4:18","nodeType":"VariableDeclaration","scope":7334,"src":"4406:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7328,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:18"},"returnParameters":{"id":7333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7334,"src":"4445:4:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7331,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:18"},"scope":7335,"src":"4350:101:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7336,"src":"568:3885:18","usedErrors":[],"usedEvents":[8590,8599]}],"src":"107:4347:18"},"id":18},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[9703]},"id":7340,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7337,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:19"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":7339,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7340,"sourceUnit":9704,"src":"132:59:19","symbolAliases":[{"foreign":{"id":7338,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"140:7:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:86:19"},"id":19},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[7360]},"id":7361,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7341,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:20"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":7342,"nodeType":"StructuredDocumentation","src":"133:101:20","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"id":7360,"linearizedBaseContracts":[7360],"name":"IERC1967","nameLocation":"245:8:20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":7343,"nodeType":"StructuredDocumentation","src":"260:68:20","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":7347,"name":"Upgraded","nameLocation":"339:8:20","nodeType":"EventDefinition","parameters":{"id":7346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7345,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"364:14:20","nodeType":"VariableDeclaration","scope":7347,"src":"348:30:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7344,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:32:20"},"src":"333:47:20"},{"anonymous":false,"documentation":{"id":7348,"nodeType":"StructuredDocumentation","src":"386:67:20","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":7354,"name":"AdminChanged","nameLocation":"464:12:20","nodeType":"EventDefinition","parameters":{"id":7353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7350,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"485:13:20","nodeType":"VariableDeclaration","scope":7354,"src":"477:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7349,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7352,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"508:8:20","nodeType":"VariableDeclaration","scope":7354,"src":"500:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7351,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:41:20"},"src":"458:60:20"},{"anonymous":false,"documentation":{"id":7355,"nodeType":"StructuredDocumentation","src":"524:59:20","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":7359,"name":"BeaconUpgraded","nameLocation":"594:14:20","nodeType":"EventDefinition","parameters":{"id":7358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7357,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"625:6:20","nodeType":"VariableDeclaration","scope":7359,"src":"609:22:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7356,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"608:24:20"},"src":"588:45:20"}],"scope":7361,"src":"235:400:20","usedErrors":[],"usedEvents":[7347,7354,7359]}],"src":"107:529:20"},"id":20},"@openzeppelin/contracts/interfaces/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[8656]},"id":7365,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7362,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:21"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":7364,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7365,"sourceUnit":8657,"src":"131:49:21","symbolAliases":[{"foreign":{"id":7363,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"139:6:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:76:21"},"id":21},"@openzeppelin/contracts/interfaces/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","exportedSymbols":{"IERC20Metadata":[8682]},"id":7369,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7366,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:22"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"../token/ERC20/extensions/IERC20Metadata.sol","id":7368,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7369,"sourceUnit":8683,"src":"139:76:22","symbolAliases":[{"foreign":{"id":7367,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"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":[8656],"IERC20Metadata":[8682],"IERC4626":[7538]},"id":7539,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7370,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":7372,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7539,"sourceUnit":8657,"src":"133:49:23","symbolAliases":[{"foreign":{"id":7371,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"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":7374,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7539,"sourceUnit":8683,"src":"183:76:23","symbolAliases":[{"foreign":{"id":7373,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"191:14:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7376,"name":"IERC20","nameLocations":["421:6:23"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"421:6:23"},"id":7377,"nodeType":"InheritanceSpecifier","src":"421:6:23"},{"baseName":{"id":7378,"name":"IERC20Metadata","nameLocations":["429:14:23"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"429:14:23"},"id":7379,"nodeType":"InheritanceSpecifier","src":"429:14:23"}],"canonicalName":"IERC4626","contractDependencies":[],"contractKind":"interface","documentation":{"id":7375,"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":7538,"linearizedBaseContracts":[7538,8682,8656],"name":"IERC4626","nameLocation":"409:8:23","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"dcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7","id":7389,"name":"Deposit","nameLocation":"456:7:23","nodeType":"EventDefinition","parameters":{"id":7388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7381,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"480:6:23","nodeType":"VariableDeclaration","scope":7389,"src":"464:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7380,"name":"address","nodeType":"ElementaryTypeName","src":"464:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7383,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"504:5:23","nodeType":"VariableDeclaration","scope":7389,"src":"488:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7382,"name":"address","nodeType":"ElementaryTypeName","src":"488:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7385,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"519:6:23","nodeType":"VariableDeclaration","scope":7389,"src":"511:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7384,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7387,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"535:6:23","nodeType":"VariableDeclaration","scope":7389,"src":"527:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7386,"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":7401,"name":"Withdraw","nameLocation":"555:8:23","nodeType":"EventDefinition","parameters":{"id":7400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7391,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"589:6:23","nodeType":"VariableDeclaration","scope":7401,"src":"573:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7390,"name":"address","nodeType":"ElementaryTypeName","src":"573:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7393,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"621:8:23","nodeType":"VariableDeclaration","scope":7401,"src":"605:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7392,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7395,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"655:5:23","nodeType":"VariableDeclaration","scope":7401,"src":"639:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7394,"name":"address","nodeType":"ElementaryTypeName","src":"639:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7397,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"678:6:23","nodeType":"VariableDeclaration","scope":7401,"src":"670:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7396,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7399,"indexed":false,"mutability":"mutable","name":"shares","nameLocation":"702:6:23","nodeType":"VariableDeclaration","scope":7401,"src":"694:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7398,"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":7402,"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":7407,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"942:5:23","nodeType":"FunctionDefinition","parameters":{"id":7403,"nodeType":"ParameterList","parameters":[],"src":"947:2:23"},"returnParameters":{"id":7406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7405,"mutability":"mutable","name":"assetTokenAddress","nameLocation":"981:17:23","nodeType":"VariableDeclaration","scope":7407,"src":"973:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7404,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:27:23"},"scope":7538,"src":"933:67:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7408,"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":7413,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"1306:11:23","nodeType":"FunctionDefinition","parameters":{"id":7409,"nodeType":"ParameterList","parameters":[],"src":"1317:2:23"},"returnParameters":{"id":7412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7411,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"1351:18:23","nodeType":"VariableDeclaration","scope":7413,"src":"1343:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1342:28:23"},"scope":7538,"src":"1297:74:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7414,"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":7421,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nameLocation":"2111:15:23","nodeType":"FunctionDefinition","parameters":{"id":7417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7416,"mutability":"mutable","name":"assets","nameLocation":"2135:6:23","nodeType":"VariableDeclaration","scope":7421,"src":"2127:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7415,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2126:16:23"},"returnParameters":{"id":7420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7419,"mutability":"mutable","name":"shares","nameLocation":"2174:6:23","nodeType":"VariableDeclaration","scope":7421,"src":"2166:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:16:23"},"scope":7538,"src":"2102:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7422,"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":7429,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nameLocation":"2922:15:23","nodeType":"FunctionDefinition","parameters":{"id":7425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7424,"mutability":"mutable","name":"shares","nameLocation":"2946:6:23","nodeType":"VariableDeclaration","scope":7429,"src":"2938:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2938:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2937:16:23"},"returnParameters":{"id":7428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7427,"mutability":"mutable","name":"assets","nameLocation":"2985:6:23","nodeType":"VariableDeclaration","scope":7429,"src":"2977:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7426,"name":"uint256","nodeType":"ElementaryTypeName","src":"2977:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2976:16:23"},"scope":7538,"src":"2913:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7430,"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":7437,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3399:10:23","nodeType":"FunctionDefinition","parameters":{"id":7433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7432,"mutability":"mutable","name":"receiver","nameLocation":"3418:8:23","nodeType":"VariableDeclaration","scope":7437,"src":"3410:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7431,"name":"address","nodeType":"ElementaryTypeName","src":"3410:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3409:18:23"},"returnParameters":{"id":7436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7435,"mutability":"mutable","name":"maxAssets","nameLocation":"3459:9:23","nodeType":"VariableDeclaration","scope":7437,"src":"3451:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7434,"name":"uint256","nodeType":"ElementaryTypeName","src":"3451:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3450:19:23"},"scope":7538,"src":"3390:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7438,"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":7445,"implemented":false,"kind":"function","modifiers":[],"name":"previewDeposit","nameLocation":"4502:14:23","nodeType":"FunctionDefinition","parameters":{"id":7441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7440,"mutability":"mutable","name":"assets","nameLocation":"4525:6:23","nodeType":"VariableDeclaration","scope":7445,"src":"4517:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7439,"name":"uint256","nodeType":"ElementaryTypeName","src":"4517:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4516:16:23"},"returnParameters":{"id":7444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7443,"mutability":"mutable","name":"shares","nameLocation":"4564:6:23","nodeType":"VariableDeclaration","scope":7445,"src":"4556:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7442,"name":"uint256","nodeType":"ElementaryTypeName","src":"4556:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4555:16:23"},"scope":7538,"src":"4493:79:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7446,"nodeType":"StructuredDocumentation","src":"4578:651:23","text":" @dev Mints shares Vault shares to receiver by depositing exactly amount of 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\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":7455,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"5243:7:23","nodeType":"FunctionDefinition","parameters":{"id":7451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7448,"mutability":"mutable","name":"assets","nameLocation":"5259:6:23","nodeType":"VariableDeclaration","scope":7455,"src":"5251:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7447,"name":"uint256","nodeType":"ElementaryTypeName","src":"5251:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7450,"mutability":"mutable","name":"receiver","nameLocation":"5275:8:23","nodeType":"VariableDeclaration","scope":7455,"src":"5267:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7449,"name":"address","nodeType":"ElementaryTypeName","src":"5267:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5250:34:23"},"returnParameters":{"id":7454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7453,"mutability":"mutable","name":"shares","nameLocation":"5311:6:23","nodeType":"VariableDeclaration","scope":7455,"src":"5303:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7452,"name":"uint256","nodeType":"ElementaryTypeName","src":"5303:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5302:16:23"},"scope":7538,"src":"5234:85:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7456,"nodeType":"StructuredDocumentation","src":"5325: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":7463,"implemented":false,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"5680:7:23","nodeType":"FunctionDefinition","parameters":{"id":7459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7458,"mutability":"mutable","name":"receiver","nameLocation":"5696:8:23","nodeType":"VariableDeclaration","scope":7463,"src":"5688:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7457,"name":"address","nodeType":"ElementaryTypeName","src":"5688:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5687:18:23"},"returnParameters":{"id":7462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"maxShares","nameLocation":"5737:9:23","nodeType":"VariableDeclaration","scope":7463,"src":"5729:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7460,"name":"uint256","nodeType":"ElementaryTypeName","src":"5729:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5728:19:23"},"scope":7538,"src":"5671:77:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7464,"nodeType":"StructuredDocumentation","src":"5754: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":7471,"implemented":false,"kind":"function","modifiers":[],"name":"previewMint","nameLocation":"6752:11:23","nodeType":"FunctionDefinition","parameters":{"id":7467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7466,"mutability":"mutable","name":"shares","nameLocation":"6772:6:23","nodeType":"VariableDeclaration","scope":7471,"src":"6764:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7465,"name":"uint256","nodeType":"ElementaryTypeName","src":"6764:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6763:16:23"},"returnParameters":{"id":7470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7469,"mutability":"mutable","name":"assets","nameLocation":"6811:6:23","nodeType":"VariableDeclaration","scope":7471,"src":"6803:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7468,"name":"uint256","nodeType":"ElementaryTypeName","src":"6803:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6802:16:23"},"scope":7538,"src":"6743:76:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7472,"nodeType":"StructuredDocumentation","src":"6825:642:23","text":" @dev Mints exactly shares Vault shares to receiver by depositing amount of 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":7481,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nameLocation":"7481:4:23","nodeType":"FunctionDefinition","parameters":{"id":7477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7474,"mutability":"mutable","name":"shares","nameLocation":"7494:6:23","nodeType":"VariableDeclaration","scope":7481,"src":"7486:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7486:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7476,"mutability":"mutable","name":"receiver","nameLocation":"7510:8:23","nodeType":"VariableDeclaration","scope":7481,"src":"7502:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7475,"name":"address","nodeType":"ElementaryTypeName","src":"7502:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7485:34:23"},"returnParameters":{"id":7480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7479,"mutability":"mutable","name":"assets","nameLocation":"7546:6:23","nodeType":"VariableDeclaration","scope":7481,"src":"7538:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7478,"name":"uint256","nodeType":"ElementaryTypeName","src":"7538:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7537:16:23"},"scope":7538,"src":"7472:82:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7482,"nodeType":"StructuredDocumentation","src":"7560: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":7489,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"7867:11:23","nodeType":"FunctionDefinition","parameters":{"id":7485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7484,"mutability":"mutable","name":"owner","nameLocation":"7887:5:23","nodeType":"VariableDeclaration","scope":7489,"src":"7879:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7483,"name":"address","nodeType":"ElementaryTypeName","src":"7879:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7878:15:23"},"returnParameters":{"id":7488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7487,"mutability":"mutable","name":"maxAssets","nameLocation":"7925:9:23","nodeType":"VariableDeclaration","scope":7489,"src":"7917:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7486,"name":"uint256","nodeType":"ElementaryTypeName","src":"7917:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7916:19:23"},"scope":7538,"src":"7858:78:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7490,"nodeType":"StructuredDocumentation","src":"7942: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":7497,"implemented":false,"kind":"function","modifiers":[],"name":"previewWithdraw","nameLocation":"8990:15:23","nodeType":"FunctionDefinition","parameters":{"id":7493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7492,"mutability":"mutable","name":"assets","nameLocation":"9014:6:23","nodeType":"VariableDeclaration","scope":7497,"src":"9006:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7491,"name":"uint256","nodeType":"ElementaryTypeName","src":"9006:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9005:16:23"},"returnParameters":{"id":7496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7495,"mutability":"mutable","name":"shares","nameLocation":"9053:6:23","nodeType":"VariableDeclaration","scope":7497,"src":"9045:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7494,"name":"uint256","nodeType":"ElementaryTypeName","src":"9045:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9044:16:23"},"scope":7538,"src":"8981:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7498,"nodeType":"StructuredDocumentation","src":"9067: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":7509,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"9751:8:23","nodeType":"FunctionDefinition","parameters":{"id":7505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7500,"mutability":"mutable","name":"assets","nameLocation":"9768:6:23","nodeType":"VariableDeclaration","scope":7509,"src":"9760:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7499,"name":"uint256","nodeType":"ElementaryTypeName","src":"9760:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7502,"mutability":"mutable","name":"receiver","nameLocation":"9784:8:23","nodeType":"VariableDeclaration","scope":7509,"src":"9776:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7501,"name":"address","nodeType":"ElementaryTypeName","src":"9776:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7504,"mutability":"mutable","name":"owner","nameLocation":"9802:5:23","nodeType":"VariableDeclaration","scope":7509,"src":"9794:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7503,"name":"address","nodeType":"ElementaryTypeName","src":"9794:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9759:49:23"},"returnParameters":{"id":7508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7507,"mutability":"mutable","name":"shares","nameLocation":"9835:6:23","nodeType":"VariableDeclaration","scope":7509,"src":"9827:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7506,"name":"uint256","nodeType":"ElementaryTypeName","src":"9827:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9826:16:23"},"scope":7538,"src":"9742:101:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7510,"nodeType":"StructuredDocumentation","src":"9849: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":7517,"implemented":false,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"10244:9:23","nodeType":"FunctionDefinition","parameters":{"id":7513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7512,"mutability":"mutable","name":"owner","nameLocation":"10262:5:23","nodeType":"VariableDeclaration","scope":7517,"src":"10254:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7511,"name":"address","nodeType":"ElementaryTypeName","src":"10254:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10253:15:23"},"returnParameters":{"id":7516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7515,"mutability":"mutable","name":"maxShares","nameLocation":"10300:9:23","nodeType":"VariableDeclaration","scope":7517,"src":"10292:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7514,"name":"uint256","nodeType":"ElementaryTypeName","src":"10292:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10291:19:23"},"scope":7538,"src":"10235:76:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7518,"nodeType":"StructuredDocumentation","src":"10317:1010:23","text":" @dev Allows an on-chain or off-chain user to simulate the effects of their redeemption 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":7525,"implemented":false,"kind":"function","modifiers":[],"name":"previewRedeem","nameLocation":"11341:13:23","nodeType":"FunctionDefinition","parameters":{"id":7521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7520,"mutability":"mutable","name":"shares","nameLocation":"11363:6:23","nodeType":"VariableDeclaration","scope":7525,"src":"11355:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7519,"name":"uint256","nodeType":"ElementaryTypeName","src":"11355:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11354:16:23"},"returnParameters":{"id":7524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7523,"mutability":"mutable","name":"assets","nameLocation":"11402:6:23","nodeType":"VariableDeclaration","scope":7525,"src":"11394:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7522,"name":"uint256","nodeType":"ElementaryTypeName","src":"11394:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11393:16:23"},"scope":7538,"src":"11332:78:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7526,"nodeType":"StructuredDocumentation","src":"11416: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":7537,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nameLocation":"12091:6:23","nodeType":"FunctionDefinition","parameters":{"id":7533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7528,"mutability":"mutable","name":"shares","nameLocation":"12106:6:23","nodeType":"VariableDeclaration","scope":7537,"src":"12098:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7527,"name":"uint256","nodeType":"ElementaryTypeName","src":"12098:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7530,"mutability":"mutable","name":"receiver","nameLocation":"12122:8:23","nodeType":"VariableDeclaration","scope":7537,"src":"12114:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7529,"name":"address","nodeType":"ElementaryTypeName","src":"12114:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7532,"mutability":"mutable","name":"owner","nameLocation":"12140:5:23","nodeType":"VariableDeclaration","scope":7537,"src":"12132:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7531,"name":"address","nodeType":"ElementaryTypeName","src":"12132:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12097:49:23"},"returnParameters":{"id":7536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7535,"mutability":"mutable","name":"assets","nameLocation":"12173:6:23","nodeType":"VariableDeclaration","scope":7537,"src":"12165:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7534,"name":"uint256","nodeType":"ElementaryTypeName","src":"12165:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12164:16:23"},"scope":7538,"src":"12082:99:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7539,"src":"399:11784:23","usedErrors":[],"usedEvents":[7389,7401,8590,8599]}],"src":"107:12077:23"},"id":23},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[7548]},"id":7549,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7540,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":7541,"nodeType":"StructuredDocumentation","src":"139: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":7548,"linearizedBaseContracts":[7548],"name":"IERC1822Proxiable","nameLocation":"354:17:24","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7542,"nodeType":"StructuredDocumentation","src":"378: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":7547,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"830:13:24","nodeType":"FunctionDefinition","parameters":{"id":7543,"nodeType":"ParameterList","parameters":[],"src":"843:2:24"},"returnParameters":{"id":7546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7547,"src":"869:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"869:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"868:9:24"},"scope":7548,"src":"821:57:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7549,"src":"344:536:24","usedErrors":[],"usedEvents":[]}],"src":"113:768:24"},"id":24},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[7685],"IERC20Errors":[7590],"IERC721Errors":[7638]},"id":7686,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7550,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7551,"nodeType":"StructuredDocumentation","src":"138: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":7590,"linearizedBaseContracts":[7590],"name":"IERC20Errors","nameLocation":"290:12:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7552,"nodeType":"StructuredDocumentation","src":"309: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":7560,"name":"ERC20InsufficientBalance","nameLocation":"629:24:25","nodeType":"ErrorDefinition","parameters":{"id":7559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7554,"mutability":"mutable","name":"sender","nameLocation":"662:6:25","nodeType":"VariableDeclaration","scope":7560,"src":"654:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7553,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7556,"mutability":"mutable","name":"balance","nameLocation":"678:7:25","nodeType":"VariableDeclaration","scope":7560,"src":"670:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7555,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7558,"mutability":"mutable","name":"needed","nameLocation":"695:6:25","nodeType":"VariableDeclaration","scope":7560,"src":"687:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7557,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:25"},"src":"623:80:25"},{"documentation":{"id":7561,"nodeType":"StructuredDocumentation","src":"709: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":7565,"name":"ERC20InvalidSender","nameLocation":"872:18:25","nodeType":"ErrorDefinition","parameters":{"id":7564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7563,"mutability":"mutable","name":"sender","nameLocation":"899:6:25","nodeType":"VariableDeclaration","scope":7565,"src":"891:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7562,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:25"},"src":"866:41:25"},{"documentation":{"id":7566,"nodeType":"StructuredDocumentation","src":"913: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":7570,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:25","nodeType":"ErrorDefinition","parameters":{"id":7569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7568,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:25","nodeType":"VariableDeclaration","scope":7570,"src":"1104:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7567,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:25"},"src":"1077:45:25"},{"documentation":{"id":7571,"nodeType":"StructuredDocumentation","src":"1128: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":7579,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:25","nodeType":"ErrorDefinition","parameters":{"id":7578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7573,"mutability":"mutable","name":"spender","nameLocation":"1519:7:25","nodeType":"VariableDeclaration","scope":7579,"src":"1511:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7572,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7575,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:25","nodeType":"VariableDeclaration","scope":7579,"src":"1528:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7574,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7577,"mutability":"mutable","name":"needed","nameLocation":"1555:6:25","nodeType":"VariableDeclaration","scope":7579,"src":"1547:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:25"},"src":"1478:85:25"},{"documentation":{"id":7580,"nodeType":"StructuredDocumentation","src":"1569: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":7584,"name":"ERC20InvalidApprover","nameLocation":"1754:20:25","nodeType":"ErrorDefinition","parameters":{"id":7583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7582,"mutability":"mutable","name":"approver","nameLocation":"1783:8:25","nodeType":"VariableDeclaration","scope":7584,"src":"1775:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7581,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:25"},"src":"1748:45:25"},{"documentation":{"id":7585,"nodeType":"StructuredDocumentation","src":"1799: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":7589,"name":"ERC20InvalidSpender","nameLocation":"2005:19:25","nodeType":"ErrorDefinition","parameters":{"id":7588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7587,"mutability":"mutable","name":"spender","nameLocation":"2033:7:25","nodeType":"VariableDeclaration","scope":7589,"src":"2025:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7586,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:25"},"src":"1999:43:25"}],"scope":7686,"src":"280:1764:25","usedErrors":[7560,7565,7570,7579,7584,7589],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7591,"nodeType":"StructuredDocumentation","src":"2046: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":7638,"linearizedBaseContracts":[7638],"name":"IERC721Errors","nameLocation":"2200:13:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7592,"nodeType":"StructuredDocumentation","src":"2220:219:25","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":7596,"name":"ERC721InvalidOwner","nameLocation":"2450:18:25","nodeType":"ErrorDefinition","parameters":{"id":7595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7594,"mutability":"mutable","name":"owner","nameLocation":"2477:5:25","nodeType":"VariableDeclaration","scope":7596,"src":"2469:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7593,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:25"},"src":"2444:40:25"},{"documentation":{"id":7597,"nodeType":"StructuredDocumentation","src":"2490:132:25","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":7601,"name":"ERC721NonexistentToken","nameLocation":"2633:22:25","nodeType":"ErrorDefinition","parameters":{"id":7600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7599,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:25","nodeType":"VariableDeclaration","scope":7601,"src":"2656:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:25"},"src":"2627:46:25"},{"documentation":{"id":7602,"nodeType":"StructuredDocumentation","src":"2679: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":7610,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:25","nodeType":"ErrorDefinition","parameters":{"id":7609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7604,"mutability":"mutable","name":"sender","nameLocation":"3008:6:25","nodeType":"VariableDeclaration","scope":7610,"src":"3000:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7603,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7606,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:25","nodeType":"VariableDeclaration","scope":7610,"src":"3016:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7605,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7608,"mutability":"mutable","name":"owner","nameLocation":"3041:5:25","nodeType":"VariableDeclaration","scope":7610,"src":"3033:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7607,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:25"},"src":"2973:75:25"},{"documentation":{"id":7611,"nodeType":"StructuredDocumentation","src":"3054: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":7615,"name":"ERC721InvalidSender","nameLocation":"3217:19:25","nodeType":"ErrorDefinition","parameters":{"id":7614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7613,"mutability":"mutable","name":"sender","nameLocation":"3245:6:25","nodeType":"VariableDeclaration","scope":7615,"src":"3237:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7612,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:25"},"src":"3211:42:25"},{"documentation":{"id":7616,"nodeType":"StructuredDocumentation","src":"3259: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":7620,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:25","nodeType":"ErrorDefinition","parameters":{"id":7619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7618,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:25","nodeType":"VariableDeclaration","scope":7620,"src":"3451:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7617,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:25"},"src":"3423:46:25"},{"documentation":{"id":7621,"nodeType":"StructuredDocumentation","src":"3475: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":7627,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:25","nodeType":"ErrorDefinition","parameters":{"id":7626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7623,"mutability":"mutable","name":"operator","nameLocation":"3768:8:25","nodeType":"VariableDeclaration","scope":7627,"src":"3760:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7622,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7625,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:25","nodeType":"VariableDeclaration","scope":7627,"src":"3778:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7624,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:25"},"src":"3727:68:25"},{"documentation":{"id":7628,"nodeType":"StructuredDocumentation","src":"3801: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":7632,"name":"ERC721InvalidApprover","nameLocation":"3986:21:25","nodeType":"ErrorDefinition","parameters":{"id":7631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7630,"mutability":"mutable","name":"approver","nameLocation":"4016:8:25","nodeType":"VariableDeclaration","scope":7632,"src":"4008:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7629,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:25"},"src":"3980:46:25"},{"documentation":{"id":7633,"nodeType":"StructuredDocumentation","src":"4032: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":7637,"name":"ERC721InvalidOperator","nameLocation":"4240:21:25","nodeType":"ErrorDefinition","parameters":{"id":7636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7635,"mutability":"mutable","name":"operator","nameLocation":"4270:8:25","nodeType":"VariableDeclaration","scope":7637,"src":"4262:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7634,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:25"},"src":"4234:46:25"}],"scope":7686,"src":"2190:2092:25","usedErrors":[7596,7601,7610,7615,7620,7627,7632,7637],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":7639,"nodeType":"StructuredDocumentation","src":"4284: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":7685,"linearizedBaseContracts":[7685],"name":"IERC1155Errors","nameLocation":"4440:14:25","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":7640,"nodeType":"StructuredDocumentation","src":"4461: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":7650,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:25","nodeType":"ErrorDefinition","parameters":{"id":7649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7642,"mutability":"mutable","name":"sender","nameLocation":"4868:6:25","nodeType":"VariableDeclaration","scope":7650,"src":"4860:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7644,"mutability":"mutable","name":"balance","nameLocation":"4884:7:25","nodeType":"VariableDeclaration","scope":7650,"src":"4876:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7643,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7646,"mutability":"mutable","name":"needed","nameLocation":"4901:6:25","nodeType":"VariableDeclaration","scope":7650,"src":"4893:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7645,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7648,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:25","nodeType":"VariableDeclaration","scope":7650,"src":"4909:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7647,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:25"},"src":"4827:99:25"},{"documentation":{"id":7651,"nodeType":"StructuredDocumentation","src":"4932: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":7655,"name":"ERC1155InvalidSender","nameLocation":"5095:20:25","nodeType":"ErrorDefinition","parameters":{"id":7654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7653,"mutability":"mutable","name":"sender","nameLocation":"5124:6:25","nodeType":"VariableDeclaration","scope":7655,"src":"5116:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7652,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:25"},"src":"5089:43:25"},{"documentation":{"id":7656,"nodeType":"StructuredDocumentation","src":"5138: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":7660,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:25","nodeType":"ErrorDefinition","parameters":{"id":7659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7658,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:25","nodeType":"VariableDeclaration","scope":7660,"src":"5331:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7657,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:25"},"src":"5302:47:25"},{"documentation":{"id":7661,"nodeType":"StructuredDocumentation","src":"5355: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":7667,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:25","nodeType":"ErrorDefinition","parameters":{"id":7666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7663,"mutability":"mutable","name":"operator","nameLocation":"5659:8:25","nodeType":"VariableDeclaration","scope":7667,"src":"5651:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7662,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7665,"mutability":"mutable","name":"owner","nameLocation":"5677:5:25","nodeType":"VariableDeclaration","scope":7667,"src":"5669:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7664,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:25"},"src":"5616:68:25"},{"documentation":{"id":7668,"nodeType":"StructuredDocumentation","src":"5690: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":7672,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:25","nodeType":"ErrorDefinition","parameters":{"id":7671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7670,"mutability":"mutable","name":"approver","nameLocation":"5906:8:25","nodeType":"VariableDeclaration","scope":7672,"src":"5898:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7669,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:25"},"src":"5869:47:25"},{"documentation":{"id":7673,"nodeType":"StructuredDocumentation","src":"5922: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":7677,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:25","nodeType":"ErrorDefinition","parameters":{"id":7676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7675,"mutability":"mutable","name":"operator","nameLocation":"6161:8:25","nodeType":"VariableDeclaration","scope":7677,"src":"6153:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7674,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:25"},"src":"6124:47:25"},{"documentation":{"id":7678,"nodeType":"StructuredDocumentation","src":"6177: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":7684,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:25","nodeType":"ErrorDefinition","parameters":{"id":7683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7680,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:25","nodeType":"VariableDeclaration","scope":7684,"src":"6494:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7679,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7682,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:25","nodeType":"VariableDeclaration","scope":7684,"src":"6513:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7681,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:25"},"src":"6462:73:25"}],"scope":7686,"src":"4430:2107:25","usedErrors":[7650,7655,7660,7667,7672,7677,7684],"usedEvents":[]}],"src":"112:6426:25"},"id":25},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"ERC1967Proxy":[7723],"ERC1967Utils":[8017],"Proxy":[8053]},"id":7724,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7687,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:26"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":7689,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7724,"sourceUnit":8054,"src":"140:35:26","symbolAliases":[{"foreign":{"id":7688,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8053,"src":"148:5:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","id":7691,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7724,"sourceUnit":8018,"src":"176:48:26","symbolAliases":[{"foreign":{"id":7690,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"184:12:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7693,"name":"Proxy","nameLocations":["625:5:26"],"nodeType":"IdentifierPath","referencedDeclaration":8053,"src":"625:5:26"},"id":7694,"nodeType":"InheritanceSpecifier","src":"625:5:26"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":7692,"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":7723,"linearizedBaseContracts":[7723,8053],"name":"ERC1967Proxy","nameLocation":"609:12:26","nodeType":"ContractDefinition","nodes":[{"body":{"id":7709,"nodeType":"Block","src":"1145:69:26","statements":[{"expression":{"arguments":[{"id":7705,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7697,"src":"1185:14:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7706,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"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":7702,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"1155:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":7704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:26","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":7832,"src":"1155:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":7707,"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":7708,"nodeType":"ExpressionStatement","src":"1155:52:26"}]},"documentation":{"id":7695,"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":7710,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7697,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:26","nodeType":"VariableDeclaration","scope":7710,"src":"1093:22:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7696,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7699,"mutability":"mutable","name":"_data","nameLocation":"1130:5:26","nodeType":"VariableDeclaration","scope":7710,"src":"1117:18:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7698,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:26"},"returnParameters":{"id":7701,"nodeType":"ParameterList","parameters":[],"src":"1145:0:26"},"scope":7723,"src":"1081:133:26","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[8034],"body":{"id":7721,"nodeType":"Block","src":"1659:56:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7717,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8017,"src":"1676:12:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$8017_$","typeString":"type(library ERC1967Utils)"}},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:26","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":7769,"src":"1676:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7719,"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":7716,"id":7720,"nodeType":"Return","src":"1669:39:26"}]},"documentation":{"id":7711,"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":7722,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:26","nodeType":"FunctionDefinition","overrides":{"id":7713,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:26"},"parameters":{"id":7712,"nodeType":"ParameterList","parameters":[],"src":"1607:2:26"},"returnParameters":{"id":7716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7722,"src":"1650:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7714,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:26"},"scope":7723,"src":"1583:132:26","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":7724,"src":"600:1117:26","usedErrors":[7743,7756,9103,9395],"usedEvents":[7347]}],"src":"114:1604:26"},"id":26},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[9352],"ERC1967Utils":[8017],"IBeacon":[8063],"IERC1967":[7360],"StorageSlot":[9667]},"id":8018,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7725,"literals":["solidity","^","0.8",".21"],"nodeType":"PragmaDirective","src":"114:24:27"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":7727,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8018,"sourceUnit":8064,"src":"140:46:27","symbolAliases":[{"foreign":{"id":7726,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"148:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":7729,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8018,"sourceUnit":7361,"src":"187:55:27","symbolAliases":[{"foreign":{"id":7728,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"195:8:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":7731,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8018,"sourceUnit":9353,"src":"243:48:27","symbolAliases":[{"foreign":{"id":7730,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"251:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":7733,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8018,"sourceUnit":9668,"src":"292:56:27","symbolAliases":[{"foreign":{"id":7732,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"300:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":7734,"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":8017,"linearizedBaseContracts":[8017],"name":"ERC1967Utils","nameLocation":"504:12:27","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":7735,"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":7738,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:27","nodeType":"VariableDeclaration","scope":8017,"src":"763:114:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":7737,"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":7739,"nodeType":"StructuredDocumentation","src":"884:69:27","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":7743,"name":"ERC1967InvalidImplementation","nameLocation":"964:28:27","nodeType":"ErrorDefinition","parameters":{"id":7742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7741,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:27","nodeType":"VariableDeclaration","scope":7743,"src":"993:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7740,"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":7744,"nodeType":"StructuredDocumentation","src":"1023:60:27","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":7748,"name":"ERC1967InvalidAdmin","nameLocation":"1094:19:27","nodeType":"ErrorDefinition","parameters":{"id":7747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7746,"mutability":"mutable","name":"admin","nameLocation":"1122:5:27","nodeType":"VariableDeclaration","scope":7748,"src":"1114:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7745,"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":7749,"nodeType":"StructuredDocumentation","src":"1135:61:27","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":7753,"name":"ERC1967InvalidBeacon","nameLocation":"1207:20:27","nodeType":"ErrorDefinition","parameters":{"id":7752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7751,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:27","nodeType":"VariableDeclaration","scope":7753,"src":"1228:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7750,"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":7754,"nodeType":"StructuredDocumentation","src":"1250:82:27","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":7756,"name":"ERC1967NonPayable","nameLocation":"1343:17:27","nodeType":"ErrorDefinition","parameters":{"id":7755,"nodeType":"ParameterList","parameters":[],"src":"1360:2:27"},"src":"1337:26:27"},{"body":{"id":7768,"nodeType":"Block","src":"1502:77:27","statements":[{"expression":{"expression":{"arguments":[{"id":7764,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"1546:19:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7762,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1519:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"1519:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7765,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"1519:53:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7761,"id":7767,"nodeType":"Return","src":"1512:60:27"}]},"documentation":{"id":7757,"nodeType":"StructuredDocumentation","src":"1369:67:27","text":" @dev Returns the current implementation address."},"id":7769,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:27","nodeType":"FunctionDefinition","parameters":{"id":7758,"nodeType":"ParameterList","parameters":[],"src":"1467:2:27"},"returnParameters":{"id":7761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7769,"src":"1493:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7759,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:27"},"scope":8017,"src":"1441:138:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7795,"nodeType":"Block","src":"1734:218:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7775,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7772,"src":"1748:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7776,"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":7777,"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":7778,"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":7785,"nodeType":"IfStatement","src":"1744:119:27","trueBody":{"id":7784,"nodeType":"Block","src":"1784:79:27","statements":[{"errorCall":{"arguments":[{"id":7781,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7772,"src":"1834:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7780,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"1805:28:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7782,"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":7783,"nodeType":"RevertStatement","src":"1798:54:27"}]}},{"expression":{"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7789,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7738,"src":"1899:19:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7786,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1872:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"1872:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7790,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"1872:53:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7792,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7772,"src":"1928:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7794,"nodeType":"ExpressionStatement","src":"1872:73:27"}]},"documentation":{"id":7770,"nodeType":"StructuredDocumentation","src":"1585:81:27","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"id":7796,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:27","nodeType":"FunctionDefinition","parameters":{"id":7773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7772,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:27","nodeType":"VariableDeclaration","scope":7796,"src":"1699:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7771,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:27"},"returnParameters":{"id":7774,"nodeType":"ParameterList","parameters":[],"src":"1734:0:27"},"scope":8017,"src":"1671:281:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7831,"nodeType":"Block","src":"2345:263:27","statements":[{"expression":{"arguments":[{"id":7805,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"2374:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7804,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"2355:18:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7806,"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":7807,"nodeType":"ExpressionStatement","src":"2355:37:27"},{"eventCall":{"arguments":[{"id":7811,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"2425:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7808,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"2407:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$7360_$","typeString":"type(contract IERC1967)"}},"id":7810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:27","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":7347,"src":"2407:17:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7812,"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":7813,"nodeType":"EmitStatement","src":"2402:41:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"2458:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7815,"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":7816,"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":7829,"nodeType":"Block","src":"2559:43:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7826,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"2573:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7827,"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":7828,"nodeType":"ExpressionStatement","src":"2573:18:27"}]},"id":7830,"nodeType":"IfStatement","src":"2454:148:27","trueBody":{"id":7825,"nodeType":"Block","src":"2475:78:27","statements":[{"expression":{"arguments":[{"id":7821,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"2518:17:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7822,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"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":7818,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"2489:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9352_$","typeString":"type(library Address)"}},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:27","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"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":7823,"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":7824,"nodeType":"ExpressionStatement","src":"2489:53:27"}]}}]},"documentation":{"id":7797,"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":7832,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:27","nodeType":"FunctionDefinition","parameters":{"id":7802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7799,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:27","nodeType":"VariableDeclaration","scope":7832,"src":"2290:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7798,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7801,"mutability":"mutable","name":"data","nameLocation":"2330:4:27","nodeType":"VariableDeclaration","scope":7832,"src":"2317:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7800,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:27"},"returnParameters":{"id":7803,"nodeType":"ParameterList","parameters":[],"src":"2345:0:27"},"scope":8017,"src":"2264:344:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":7833,"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":7836,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:27","nodeType":"VariableDeclaration","scope":8017,"src":"2829:105:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":7835,"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":7848,"nodeType":"Block","src":"3339:68:27","statements":[{"expression":{"expression":{"arguments":[{"id":7844,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7836,"src":"3383:10:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7842,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"3356:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"3356:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7845,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"3356:44:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7841,"id":7847,"nodeType":"Return","src":"3349:51:27"}]},"documentation":{"id":7837,"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":7849,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:27","nodeType":"FunctionDefinition","parameters":{"id":7838,"nodeType":"ParameterList","parameters":[],"src":"3304:2:27"},"returnParameters":{"id":7841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7849,"src":"3330:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7839,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:27"},"scope":8017,"src":"3287:120:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7879,"nodeType":"Block","src":"3535:172:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7855,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7852,"src":"3549:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":7858,"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":7857,"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":7856,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:27","typeDescriptions":{}}},"id":7859,"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":7869,"nodeType":"IfStatement","src":"3545:91:27","trueBody":{"id":7868,"nodeType":"Block","src":"3573:63:27","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7864,"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":7863,"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":7862,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:27","typeDescriptions":{}}},"id":7865,"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":7861,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7748,"src":"3594:19:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7866,"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":7867,"nodeType":"RevertStatement","src":"3587:38:27"}]}},{"expression":{"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7873,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7836,"src":"3672:10:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7870,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"3645:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"3645:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7874,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"3645:44:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7876,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7852,"src":"3692:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7878,"nodeType":"ExpressionStatement","src":"3645:55:27"}]},"documentation":{"id":7850,"nodeType":"StructuredDocumentation","src":"3413:72:27","text":" @dev Stores a new address in the ERC-1967 admin slot."},"id":7880,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:27","nodeType":"FunctionDefinition","parameters":{"id":7853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7852,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:27","nodeType":"VariableDeclaration","scope":7880,"src":"3509:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7851,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:27"},"returnParameters":{"id":7854,"nodeType":"ParameterList","parameters":[],"src":"3535:0:27"},"scope":8017,"src":"3490:217:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":7898,"nodeType":"Block","src":"3875:94:27","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":7889,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7849,"src":"3912:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":7890,"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":7891,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"3924:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7886,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"3890:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$7360_$","typeString":"type(contract IERC1967)"}},"id":7888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:27","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":7354,"src":"3890:21:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":7892,"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":7893,"nodeType":"EmitStatement","src":"3885:48:27"},{"expression":{"arguments":[{"id":7895,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7883,"src":"3953:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7894,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7880,"src":"3943:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7896,"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":7897,"nodeType":"ExpressionStatement","src":"3943:19:27"}]},"documentation":{"id":7881,"nodeType":"StructuredDocumentation","src":"3713:109:27","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":7899,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:27","nodeType":"FunctionDefinition","parameters":{"id":7884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7883,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:27","nodeType":"VariableDeclaration","scope":7899,"src":"3848:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7882,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:27"},"returnParameters":{"id":7885,"nodeType":"ParameterList","parameters":[],"src":"3875:0:27"},"scope":8017,"src":"3827:142:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":7900,"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":7903,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:27","nodeType":"VariableDeclaration","scope":8017,"src":"4246:106:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7901,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":7902,"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":7915,"nodeType":"Block","src":"4468:69:27","statements":[{"expression":{"expression":{"arguments":[{"id":7911,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"4512:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7909,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"4485:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"4485:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7912,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"4485:45:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7908,"id":7914,"nodeType":"Return","src":"4478:52:27"}]},"documentation":{"id":7904,"nodeType":"StructuredDocumentation","src":"4359:51:27","text":" @dev Returns the current beacon."},"id":7916,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:27","nodeType":"FunctionDefinition","parameters":{"id":7905,"nodeType":"ParameterList","parameters":[],"src":"4433:2:27"},"returnParameters":{"id":7908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7916,"src":"4459:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7906,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:27"},"scope":8017,"src":"4415:122:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7961,"nodeType":"Block","src":"4667:390:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7922,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"4681:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7923,"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":7924,"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":7925,"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":7932,"nodeType":"IfStatement","src":"4677:95:27","trueBody":{"id":7931,"nodeType":"Block","src":"4709:63:27","statements":[{"errorCall":{"arguments":[{"id":7928,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"4751:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7927,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7753,"src":"4730:20:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7929,"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":7930,"nodeType":"RevertStatement","src":"4723:38:27"}]}},{"expression":{"id":7940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":7936,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7903,"src":"4809:11:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7933,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"4782:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":7935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:27","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":9578,"src":"4782:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$9549_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":7937,"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_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":7938,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:27","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9548,"src":"4782:45:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7939,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"4830:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7941,"nodeType":"ExpressionStatement","src":"4782:57:27"},{"assignments":[7943],"declarations":[{"constant":false,"id":7943,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:27","nodeType":"VariableDeclaration","scope":7961,"src":"4850:28:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7942,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7949,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7945,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7919,"src":"4889:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7944,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"4881:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$8063_$","typeString":"type(contract IBeacon)"}},"id":7946,"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_$8063","typeString":"contract IBeacon"}},"id":7947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:27","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":8062,"src":"4881:33:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7948,"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":7954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7950,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"4930:20:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7951,"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":7952,"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":7953,"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":7960,"nodeType":"IfStatement","src":"4926:125:27","trueBody":{"id":7959,"nodeType":"Block","src":"4969:82:27","statements":[{"errorCall":{"arguments":[{"id":7956,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7943,"src":"5019:20:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7955,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7743,"src":"4990:28:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":7957,"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":7958,"nodeType":"RevertStatement","src":"4983:57:27"}]}}]},"documentation":{"id":7917,"nodeType":"StructuredDocumentation","src":"4543:72:27","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"id":7962,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:27","nodeType":"FunctionDefinition","parameters":{"id":7920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7919,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:27","nodeType":"VariableDeclaration","scope":7962,"src":"4640:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7918,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:27"},"returnParameters":{"id":7921,"nodeType":"ParameterList","parameters":[],"src":"4667:0:27"},"scope":8017,"src":"4620:437:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8001,"nodeType":"Block","src":"5661:263:27","statements":[{"expression":{"arguments":[{"id":7971,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5682:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7970,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7962,"src":"5671:10:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7972,"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":7973,"nodeType":"ExpressionStatement","src":"5671:21:27"},{"eventCall":{"arguments":[{"id":7977,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5731:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7974,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7360,"src":"5707:8:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$7360_$","typeString":"type(contract IERC1967)"}},"id":7976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:27","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":7359,"src":"5707:23:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7978,"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":7979,"nodeType":"EmitStatement","src":"5702:39:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7980,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"src":"5756:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7981,"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":7982,"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":7999,"nodeType":"Block","src":"5875:43:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7996,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"5889:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7997,"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":7998,"nodeType":"ExpressionStatement","src":"5889:18:27"}]},"id":8000,"nodeType":"IfStatement","src":"5752:166:27","trueBody":{"id":7995,"nodeType":"Block","src":"5773:96:27","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":7988,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7965,"src":"5824:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7987,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8063,"src":"5816:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$8063_$","typeString":"type(contract IBeacon)"}},"id":7989,"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_$8063","typeString":"contract IBeacon"}},"id":7990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:27","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":8062,"src":"5816:33:27","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":7991,"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":7992,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7967,"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":7984,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"5787:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9352_$","typeString":"type(library Address)"}},"id":7986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:27","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"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":7993,"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":7994,"nodeType":"ExpressionStatement","src":"5787:71:27"}]}}]},"documentation":{"id":7963,"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":8002,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:27","nodeType":"FunctionDefinition","parameters":{"id":7968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7965,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:27","nodeType":"VariableDeclaration","scope":8002,"src":"5614:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7964,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7967,"mutability":"mutable","name":"data","nameLocation":"5646:4:27","nodeType":"VariableDeclaration","scope":8002,"src":"5633:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7966,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:27"},"returnParameters":{"id":7969,"nodeType":"ParameterList","parameters":[],"src":"5661:0:27"},"scope":8017,"src":"5582:342:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8015,"nodeType":"Block","src":"6149:86:27","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8006,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8007,"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":8008,"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":8014,"nodeType":"IfStatement","src":"6159:70:27","trueBody":{"id":8013,"nodeType":"Block","src":"6178:51:27","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8010,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7756,"src":"6199:17:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8011,"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":8012,"nodeType":"RevertStatement","src":"6192:26:27"}]}}]},"documentation":{"id":8003,"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":8016,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:27","nodeType":"FunctionDefinition","parameters":{"id":8004,"nodeType":"ParameterList","parameters":[],"src":"6138:2:27"},"returnParameters":{"id":8005,"nodeType":"ParameterList","parameters":[],"src":"6149:0:27"},"scope":8017,"src":"6113:122:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":8018,"src":"496:5741:27","usedErrors":[7743,7748,7753,7756],"usedEvents":[]}],"src":"114:6124:27"},"id":27},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[8053]},"id":8054,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8019,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:28"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":8020,"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":8053,"linearizedBaseContracts":[8053],"name":"Proxy","nameLocation":"742:5:28","nodeType":"ContractDefinition","nodes":[{"body":{"id":8027,"nodeType":"Block","src":"1009:835:28","statements":[{"AST":{"nativeSrc":"1028:810:28","nodeType":"YulBlock","src":"1028:810:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:1:28","nodeType":"YulLiteral","src":"1281:1:28","type":"","value":"0"},{"kind":"number","nativeSrc":"1284:1:28","nodeType":"YulLiteral","src":"1284:1:28","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1287:12:28","nodeType":"YulIdentifier","src":"1287:12:28"},"nativeSrc":"1287:14:28","nodeType":"YulFunctionCall","src":"1287:14:28"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:28","nodeType":"YulIdentifier","src":"1268:12:28"},"nativeSrc":"1268:34:28","nodeType":"YulFunctionCall","src":"1268:34:28"},"nativeSrc":"1268:34:28","nodeType":"YulExpressionStatement","src":"1268:34:28"},{"nativeSrc":"1429:74:28","nodeType":"YulVariableDeclaration","src":"1429:74:28","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1456:3:28","nodeType":"YulIdentifier","src":"1456:3:28"},"nativeSrc":"1456:5:28","nodeType":"YulFunctionCall","src":"1456:5:28"},{"name":"implementation","nativeSrc":"1463:14:28","nodeType":"YulIdentifier","src":"1463:14:28"},{"kind":"number","nativeSrc":"1479:1:28","nodeType":"YulLiteral","src":"1479:1:28","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1482:12:28","nodeType":"YulIdentifier","src":"1482:12:28"},"nativeSrc":"1482:14:28","nodeType":"YulFunctionCall","src":"1482:14:28"},{"kind":"number","nativeSrc":"1498:1:28","nodeType":"YulLiteral","src":"1498:1:28","type":"","value":"0"},{"kind":"number","nativeSrc":"1501:1:28","nodeType":"YulLiteral","src":"1501:1:28","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1443:12:28","nodeType":"YulIdentifier","src":"1443:12:28"},"nativeSrc":"1443:60:28","nodeType":"YulFunctionCall","src":"1443:60:28"},"variables":[{"name":"result","nativeSrc":"1433:6:28","nodeType":"YulTypedName","src":"1433:6:28","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1571:1:28","nodeType":"YulLiteral","src":"1571:1:28","type":"","value":"0"},{"kind":"number","nativeSrc":"1574:1:28","nodeType":"YulLiteral","src":"1574:1:28","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1577:14:28","nodeType":"YulIdentifier","src":"1577:14:28"},"nativeSrc":"1577:16:28","nodeType":"YulFunctionCall","src":"1577:16:28"}],"functionName":{"name":"returndatacopy","nativeSrc":"1556:14:28","nodeType":"YulIdentifier","src":"1556:14:28"},"nativeSrc":"1556:38:28","nodeType":"YulFunctionCall","src":"1556:38:28"},"nativeSrc":"1556:38:28","nodeType":"YulExpressionStatement","src":"1556:38:28"},{"cases":[{"body":{"nativeSrc":"1689:59:28","nodeType":"YulBlock","src":"1689:59:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1714:1:28","nodeType":"YulLiteral","src":"1714:1:28","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1717:14:28","nodeType":"YulIdentifier","src":"1717:14:28"},"nativeSrc":"1717:16:28","nodeType":"YulFunctionCall","src":"1717:16:28"}],"functionName":{"name":"revert","nativeSrc":"1707:6:28","nodeType":"YulIdentifier","src":"1707:6:28"},"nativeSrc":"1707:27:28","nodeType":"YulFunctionCall","src":"1707:27:28"},"nativeSrc":"1707:27:28","nodeType":"YulExpressionStatement","src":"1707:27:28"}]},"nativeSrc":"1682:66:28","nodeType":"YulCase","src":"1682:66:28","value":{"kind":"number","nativeSrc":"1687:1:28","nodeType":"YulLiteral","src":"1687:1:28","type":"","value":"0"}},{"body":{"nativeSrc":"1769:59:28","nodeType":"YulBlock","src":"1769:59:28","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:28","nodeType":"YulLiteral","src":"1794:1:28","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1797:14:28","nodeType":"YulIdentifier","src":"1797:14:28"},"nativeSrc":"1797:16:28","nodeType":"YulFunctionCall","src":"1797:16:28"}],"functionName":{"name":"return","nativeSrc":"1787:6:28","nodeType":"YulIdentifier","src":"1787:6:28"},"nativeSrc":"1787:27:28","nodeType":"YulFunctionCall","src":"1787:27:28"},"nativeSrc":"1787:27:28","nodeType":"YulExpressionStatement","src":"1787:27:28"}]},"nativeSrc":"1761:67:28","nodeType":"YulCase","src":"1761:67:28","value":"default"}],"expression":{"name":"result","nativeSrc":"1615:6:28","nodeType":"YulIdentifier","src":"1615:6:28"},"nativeSrc":"1608:220:28","nodeType":"YulSwitch","src":"1608:220:28"}]},"evmVersion":"cancun","externalReferences":[{"declaration":8023,"isOffset":false,"isSlot":false,"src":"1463:14:28","valueSize":1}],"id":8026,"nodeType":"InlineAssembly","src":"1019:819:28"}]},"documentation":{"id":8021,"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":8028,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:28","nodeType":"FunctionDefinition","parameters":{"id":8024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8023,"mutability":"mutable","name":"implementation","nameLocation":"976:14:28","nodeType":"VariableDeclaration","scope":8028,"src":"968:22:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8022,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:28"},"returnParameters":{"id":8025,"nodeType":"ParameterList","parameters":[],"src":"1009:0:28"},"scope":8053,"src":"949:895:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":8029,"nodeType":"StructuredDocumentation","src":"1850: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":8034,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2037:15:28","nodeType":"FunctionDefinition","parameters":{"id":8030,"nodeType":"ParameterList","parameters":[],"src":"2052:2:28"},"returnParameters":{"id":8033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8034,"src":"2086:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8031,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:28"},"scope":8053,"src":"2028:67:28","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":8043,"nodeType":"Block","src":"2361:45:28","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8039,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8034,"src":"2381:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2381:17:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8038,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8028,"src":"2371:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2371:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8042,"nodeType":"ExpressionStatement","src":"2371:28:28"}]},"documentation":{"id":8035,"nodeType":"StructuredDocumentation","src":"2101: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":8044,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2332:9:28","nodeType":"FunctionDefinition","parameters":{"id":8036,"nodeType":"ParameterList","parameters":[],"src":"2341:2:28"},"returnParameters":{"id":8037,"nodeType":"ParameterList","parameters":[],"src":"2361:0:28"},"scope":8053,"src":"2323:83:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8051,"nodeType":"Block","src":"2639:28:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8048,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8044,"src":"2649:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8050,"nodeType":"ExpressionStatement","src":"2649:11:28"}]},"documentation":{"id":8045,"nodeType":"StructuredDocumentation","src":"2412: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":8052,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8046,"nodeType":"ParameterList","parameters":[],"src":"2611:2:28"},"returnParameters":{"id":8047,"nodeType":"ParameterList","parameters":[],"src":"2639:0:28"},"scope":8053,"src":"2603:64:28","stateMutability":"payable","virtual":true,"visibility":"external"}],"scope":8054,"src":"724:1945:28","usedErrors":[],"usedEvents":[]}],"src":"99:2571:28"},"id":28},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[8063]},"id":8064,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8055,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":8056,"nodeType":"StructuredDocumentation","src":"134:79:29","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":8063,"linearizedBaseContracts":[8063],"name":"IBeacon","nameLocation":"224:7:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8057,"nodeType":"StructuredDocumentation","src":"238: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":8062,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:29","nodeType":"FunctionDefinition","parameters":{"id":8058,"nodeType":"ParameterList","parameters":[],"src":"434:2:29"},"returnParameters":{"id":8061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8062,"src":"460:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8059,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:29"},"scope":8063,"src":"411:58:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8064,"src":"214:257:29","usedErrors":[],"usedEvents":[]}],"src":"108:364:29"},"id":29},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[9382],"ERC20":[8578],"IERC20":[8656],"IERC20Errors":[7590],"IERC20Metadata":[8682]},"id":8579,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8065,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:30"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":8067,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8579,"sourceUnit":8657,"src":"131:36:30","symbolAliases":[{"foreign":{"id":8066,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"139:6:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":8069,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8579,"sourceUnit":8683,"src":"168:63:30","symbolAliases":[{"foreign":{"id":8068,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"176:14:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":8071,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8579,"sourceUnit":9383,"src":"232:48:30","symbolAliases":[{"foreign":{"id":8070,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"240:7:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":8073,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8579,"sourceUnit":7686,"src":"281:65:30","symbolAliases":[{"foreign":{"id":8072,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"289:12:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8075,"name":"Context","nameLocations":["1133:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":9382,"src":"1133:7:30"},"id":8076,"nodeType":"InheritanceSpecifier","src":"1133:7:30"},{"baseName":{"id":8077,"name":"IERC20","nameLocations":["1142:6:30"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1142:6:30"},"id":8078,"nodeType":"InheritanceSpecifier","src":"1142:6:30"},{"baseName":{"id":8079,"name":"IERC20Metadata","nameLocations":["1150:14:30"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1150:14:30"},"id":8080,"nodeType":"InheritanceSpecifier","src":"1150:14:30"},{"baseName":{"id":8081,"name":"IERC20Errors","nameLocations":["1166:12:30"],"nodeType":"IdentifierPath","referencedDeclaration":7590,"src":"1166:12:30"},"id":8082,"nodeType":"InheritanceSpecifier","src":"1166:12:30"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":8074,"nodeType":"StructuredDocumentation","src":"348:757:30","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":8578,"linearizedBaseContracts":[8578,7590,8682,8656,9382],"name":"ERC20","nameLocation":"1124:5:30","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8086,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:30","nodeType":"VariableDeclaration","scope":8578,"src":"1185:53:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8085,"keyName":"account","keyNameLocation":"1201:7:30","keyType":{"id":8083,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":8092,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:30","nodeType":"VariableDeclaration","scope":8578,"src":"1245:83:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8091,"keyName":"account","keyNameLocation":"1261:7:30","keyType":{"id":8087,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:30","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":8090,"keyName":"spender","keyNameLocation":"1288:7:30","keyType":{"id":8088,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8089,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":8094,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:30","nodeType":"VariableDeclaration","scope":8578,"src":"1335:28:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":8096,"mutability":"mutable","name":"_name","nameLocation":"1385:5:30","nodeType":"VariableDeclaration","scope":8578,"src":"1370:20:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8095,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":8098,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:30","nodeType":"VariableDeclaration","scope":8578,"src":"1396:22:30","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8097,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":8114,"nodeType":"Block","src":"1657:57:30","statements":[{"expression":{"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8106,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"1667:5:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8107,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8101,"src":"1675:5:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1667:13:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8109,"nodeType":"ExpressionStatement","src":"1667:13:30"},{"expression":{"id":8112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8110,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8098,"src":"1690:7:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8111,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8103,"src":"1700:7:30","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1690:17:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8113,"nodeType":"ExpressionStatement","src":"1690:17:30"}]},"documentation":{"id":8099,"nodeType":"StructuredDocumentation","src":"1425:171:30","text":" @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction."},"id":8115,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8101,"mutability":"mutable","name":"name_","nameLocation":"1627:5:30","nodeType":"VariableDeclaration","scope":8115,"src":"1613:19:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8100,"name":"string","nodeType":"ElementaryTypeName","src":"1613:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8103,"mutability":"mutable","name":"symbol_","nameLocation":"1648:7:30","nodeType":"VariableDeclaration","scope":8115,"src":"1634:21:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8102,"name":"string","nodeType":"ElementaryTypeName","src":"1634:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1612:44:30"},"returnParameters":{"id":8105,"nodeType":"ParameterList","parameters":[],"src":"1657:0:30"},"scope":8578,"src":"1601:113:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[8669],"body":{"id":8123,"nodeType":"Block","src":"1839:29:30","statements":[{"expression":{"id":8121,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8096,"src":"1856:5:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8120,"id":8122,"nodeType":"Return","src":"1849:12:30"}]},"documentation":{"id":8116,"nodeType":"StructuredDocumentation","src":"1720:54:30","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":8124,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1788:4:30","nodeType":"FunctionDefinition","parameters":{"id":8117,"nodeType":"ParameterList","parameters":[],"src":"1792:2:30"},"returnParameters":{"id":8120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8119,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8124,"src":"1824:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8118,"name":"string","nodeType":"ElementaryTypeName","src":"1824:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1823:15:30"},"scope":8578,"src":"1779:89:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8675],"body":{"id":8132,"nodeType":"Block","src":"2043:31:30","statements":[{"expression":{"id":8130,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8098,"src":"2060:7:30","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8129,"id":8131,"nodeType":"Return","src":"2053:14:30"}]},"documentation":{"id":8125,"nodeType":"StructuredDocumentation","src":"1874:102:30","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":8133,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1990:6:30","nodeType":"FunctionDefinition","parameters":{"id":8126,"nodeType":"ParameterList","parameters":[],"src":"1996:2:30"},"returnParameters":{"id":8129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8133,"src":"2028:13:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8127,"name":"string","nodeType":"ElementaryTypeName","src":"2028:6:30","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2027:15:30"},"scope":8578,"src":"1981:93:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8681],"body":{"id":8141,"nodeType":"Block","src":"2763:26:30","statements":[{"expression":{"hexValue":"3138","id":8139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2780:2:30","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":8138,"id":8140,"nodeType":"Return","src":"2773:9:30"}]},"documentation":{"id":8134,"nodeType":"StructuredDocumentation","src":"2080:622:30","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":8142,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2716:8:30","nodeType":"FunctionDefinition","parameters":{"id":8135,"nodeType":"ParameterList","parameters":[],"src":"2724:2:30"},"returnParameters":{"id":8138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8142,"src":"2756:5:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8136,"name":"uint8","nodeType":"ElementaryTypeName","src":"2756:5:30","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2755:7:30"},"scope":8578,"src":"2707:82:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8605],"body":{"id":8150,"nodeType":"Block","src":"2910:36:30","statements":[{"expression":{"id":8148,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"2927:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8147,"id":8149,"nodeType":"Return","src":"2920:19:30"}]},"documentation":{"id":8143,"nodeType":"StructuredDocumentation","src":"2795:49:30","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":8151,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2858:11:30","nodeType":"FunctionDefinition","parameters":{"id":8144,"nodeType":"ParameterList","parameters":[],"src":"2869:2:30"},"returnParameters":{"id":8147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8146,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8151,"src":"2901:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2901:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2900:9:30"},"scope":8578,"src":"2849:97:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8613],"body":{"id":8163,"nodeType":"Block","src":"3078:42:30","statements":[{"expression":{"baseExpression":{"id":8159,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"3095:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8161,"indexExpression":{"id":8160,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8154,"src":"3105:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3095:18:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8158,"id":8162,"nodeType":"Return","src":"3088:25:30"}]},"documentation":{"id":8152,"nodeType":"StructuredDocumentation","src":"2952:47:30","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":8164,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3013:9:30","nodeType":"FunctionDefinition","parameters":{"id":8155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8154,"mutability":"mutable","name":"account","nameLocation":"3031:7:30","nodeType":"VariableDeclaration","scope":8164,"src":"3023:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8153,"name":"address","nodeType":"ElementaryTypeName","src":"3023:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3022:17:30"},"returnParameters":{"id":8158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8164,"src":"3069:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3069:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3068:9:30"},"scope":8578,"src":"3004:116:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8623],"body":{"id":8187,"nodeType":"Block","src":"3390:103:30","statements":[{"assignments":[8175],"declarations":[{"constant":false,"id":8175,"mutability":"mutable","name":"owner","nameLocation":"3408:5:30","nodeType":"VariableDeclaration","scope":8187,"src":"3400:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8174,"name":"address","nodeType":"ElementaryTypeName","src":"3400:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8178,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8176,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"3416:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3416:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3400:28:30"},{"expression":{"arguments":[{"id":8180,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"3448:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8181,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8167,"src":"3455:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8182,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8169,"src":"3459:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8179,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8308,"src":"3438:9:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3438:27:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8184,"nodeType":"ExpressionStatement","src":"3438:27:30"},{"expression":{"hexValue":"74727565","id":8185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3482:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8173,"id":8186,"nodeType":"Return","src":"3475:11:30"}]},"documentation":{"id":8165,"nodeType":"StructuredDocumentation","src":"3126:184:30","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":8188,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3324:8:30","nodeType":"FunctionDefinition","parameters":{"id":8170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8167,"mutability":"mutable","name":"to","nameLocation":"3341:2:30","nodeType":"VariableDeclaration","scope":8188,"src":"3333:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8166,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8169,"mutability":"mutable","name":"value","nameLocation":"3353:5:30","nodeType":"VariableDeclaration","scope":8188,"src":"3345:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8168,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3332:27:30"},"returnParameters":{"id":8173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8188,"src":"3384:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8171,"name":"bool","nodeType":"ElementaryTypeName","src":"3384:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3383:6:30"},"scope":8578,"src":"3315:178:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8633],"body":{"id":8204,"nodeType":"Block","src":"3640:51:30","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":8198,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"3657:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8200,"indexExpression":{"id":8199,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8191,"src":"3669:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3657:18:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8202,"indexExpression":{"id":8201,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8193,"src":"3676:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3657:27:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8197,"id":8203,"nodeType":"Return","src":"3650:34:30"}]},"documentation":{"id":8189,"nodeType":"StructuredDocumentation","src":"3499:47:30","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":8205,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3560:9:30","nodeType":"FunctionDefinition","parameters":{"id":8194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8191,"mutability":"mutable","name":"owner","nameLocation":"3578:5:30","nodeType":"VariableDeclaration","scope":8205,"src":"3570:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8190,"name":"address","nodeType":"ElementaryTypeName","src":"3570:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8193,"mutability":"mutable","name":"spender","nameLocation":"3593:7:30","nodeType":"VariableDeclaration","scope":8205,"src":"3585:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8192,"name":"address","nodeType":"ElementaryTypeName","src":"3585:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3569:32:30"},"returnParameters":{"id":8197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8205,"src":"3631:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8195,"name":"uint256","nodeType":"ElementaryTypeName","src":"3631:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3630:9:30"},"scope":8578,"src":"3551:140:30","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[8643],"body":{"id":8228,"nodeType":"Block","src":"4077:107:30","statements":[{"assignments":[8216],"declarations":[{"constant":false,"id":8216,"mutability":"mutable","name":"owner","nameLocation":"4095:5:30","nodeType":"VariableDeclaration","scope":8228,"src":"4087:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8215,"name":"address","nodeType":"ElementaryTypeName","src":"4087:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8219,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8217,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"4103:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4087:28:30"},{"expression":{"arguments":[{"id":8221,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8216,"src":"4134:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8222,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8208,"src":"4141:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8210,"src":"4150:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8220,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8469,8529],"referencedDeclaration":8469,"src":"4125:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4125:31:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8225,"nodeType":"ExpressionStatement","src":"4125:31:30"},{"expression":{"hexValue":"74727565","id":8226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4173:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8214,"id":8227,"nodeType":"Return","src":"4166:11:30"}]},"documentation":{"id":8206,"nodeType":"StructuredDocumentation","src":"3697:296:30","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":8229,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4007:7:30","nodeType":"FunctionDefinition","parameters":{"id":8211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8208,"mutability":"mutable","name":"spender","nameLocation":"4023:7:30","nodeType":"VariableDeclaration","scope":8229,"src":"4015:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8207,"name":"address","nodeType":"ElementaryTypeName","src":"4015:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8210,"mutability":"mutable","name":"value","nameLocation":"4040:5:30","nodeType":"VariableDeclaration","scope":8229,"src":"4032:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8209,"name":"uint256","nodeType":"ElementaryTypeName","src":"4032:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4014:32:30"},"returnParameters":{"id":8214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8229,"src":"4071:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8212,"name":"bool","nodeType":"ElementaryTypeName","src":"4071:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4070:6:30"},"scope":8578,"src":"3998:186:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[8655],"body":{"id":8260,"nodeType":"Block","src":"4869:151:30","statements":[{"assignments":[8242],"declarations":[{"constant":false,"id":8242,"mutability":"mutable","name":"spender","nameLocation":"4887:7:30","nodeType":"VariableDeclaration","scope":8260,"src":"4879:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8241,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8245,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":8243,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"4897:10:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4897:12:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4879:30:30"},{"expression":{"arguments":[{"id":8247,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"4935:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8248,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"4941:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8249,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8236,"src":"4950:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8246,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8577,"src":"4919:15:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4919:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8251,"nodeType":"ExpressionStatement","src":"4919:37:30"},{"expression":{"arguments":[{"id":8253,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"4976:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8254,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8234,"src":"4982:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8255,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8236,"src":"4986:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8252,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8308,"src":"4966:9:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4966:26:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8257,"nodeType":"ExpressionStatement","src":"4966:26:30"},{"expression":{"hexValue":"74727565","id":8258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5009:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8240,"id":8259,"nodeType":"Return","src":"5002:11:30"}]},"documentation":{"id":8230,"nodeType":"StructuredDocumentation","src":"4190:581:30","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":8261,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4785:12:30","nodeType":"FunctionDefinition","parameters":{"id":8237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8232,"mutability":"mutable","name":"from","nameLocation":"4806:4:30","nodeType":"VariableDeclaration","scope":8261,"src":"4798:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8231,"name":"address","nodeType":"ElementaryTypeName","src":"4798:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8234,"mutability":"mutable","name":"to","nameLocation":"4820:2:30","nodeType":"VariableDeclaration","scope":8261,"src":"4812:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8233,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8236,"mutability":"mutable","name":"value","nameLocation":"4832:5:30","nodeType":"VariableDeclaration","scope":8261,"src":"4824:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8235,"name":"uint256","nodeType":"ElementaryTypeName","src":"4824:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4797:41:30"},"returnParameters":{"id":8240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8261,"src":"4863:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8238,"name":"bool","nodeType":"ElementaryTypeName","src":"4863:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4862:6:30"},"scope":8578,"src":"4776:244:30","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":8307,"nodeType":"Block","src":"5462:231:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8271,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"5476:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:30","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":8273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5484:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8272,"name":"address","nodeType":"ElementaryTypeName","src":"5484:7:30","typeDescriptions":{}}},"id":8275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5484:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5476:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8285,"nodeType":"IfStatement","src":"5472:86:30","trueBody":{"id":8284,"nodeType":"Block","src":"5496:62:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5544:1:30","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":8279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5536:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8278,"name":"address","nodeType":"ElementaryTypeName","src":"5536:7:30","typeDescriptions":{}}},"id":8281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5536:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8277,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"5517:18:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:30:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8283,"nodeType":"RevertStatement","src":"5510:37:30"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8286,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"5571:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5585:1:30","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":8288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5577:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8287,"name":"address","nodeType":"ElementaryTypeName","src":"5577:7:30","typeDescriptions":{}}},"id":8290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5577:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5571:16:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8300,"nodeType":"IfStatement","src":"5567:86:30","trueBody":{"id":8299,"nodeType":"Block","src":"5589:64:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5639:1:30","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":8294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5631:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8293,"name":"address","nodeType":"ElementaryTypeName","src":"5631:7:30","typeDescriptions":{}}},"id":8296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5631:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8292,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"5610:20:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8298,"nodeType":"RevertStatement","src":"5603:39:30"}]}},{"expression":{"arguments":[{"id":8302,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8264,"src":"5670:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8303,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8266,"src":"5676:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8304,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8268,"src":"5680:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8301,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8385,"src":"5662:7:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5662:24:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8306,"nodeType":"ExpressionStatement","src":"5662:24:30"}]},"documentation":{"id":8262,"nodeType":"StructuredDocumentation","src":"5026:362:30","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":8308,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5402:9:30","nodeType":"FunctionDefinition","parameters":{"id":8269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8264,"mutability":"mutable","name":"from","nameLocation":"5420:4:30","nodeType":"VariableDeclaration","scope":8308,"src":"5412:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8263,"name":"address","nodeType":"ElementaryTypeName","src":"5412:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8266,"mutability":"mutable","name":"to","nameLocation":"5434:2:30","nodeType":"VariableDeclaration","scope":8308,"src":"5426:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8265,"name":"address","nodeType":"ElementaryTypeName","src":"5426:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8268,"mutability":"mutable","name":"value","nameLocation":"5446:5:30","nodeType":"VariableDeclaration","scope":8308,"src":"5438:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8267,"name":"uint256","nodeType":"ElementaryTypeName","src":"5438:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5411:41:30"},"returnParameters":{"id":8270,"nodeType":"ParameterList","parameters":[],"src":"5462:0:30"},"scope":8578,"src":"5393:300:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8384,"nodeType":"Block","src":"6083:1032:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8318,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"6097:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6113:1:30","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":8320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6105:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8319,"name":"address","nodeType":"ElementaryTypeName","src":"6105:7:30","typeDescriptions":{}}},"id":8322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6105:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6097:18:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8355,"nodeType":"Block","src":"6271:362:30","statements":[{"assignments":[8330],"declarations":[{"constant":false,"id":8330,"mutability":"mutable","name":"fromBalance","nameLocation":"6293:11:30","nodeType":"VariableDeclaration","scope":8355,"src":"6285:19:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8329,"name":"uint256","nodeType":"ElementaryTypeName","src":"6285:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8334,"initialValue":{"baseExpression":{"id":8331,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"6307:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8333,"indexExpression":{"id":8332,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"6317:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6307:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6285:37:30"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8335,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"6340:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"6354:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6340:19:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8345,"nodeType":"IfStatement","src":"6336:115:30","trueBody":{"id":8344,"nodeType":"Block","src":"6361:90:30","statements":[{"errorCall":{"arguments":[{"id":8339,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"6411:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8340,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"6417:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8341,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"6430:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8338,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7560,"src":"6386:24:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":8342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6386:50:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8343,"nodeType":"RevertStatement","src":"6379:57:30"}]}},{"id":8354,"nodeType":"UncheckedBlock","src":"6464:159:30","statements":[{"expression":{"id":8352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8346,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"6571:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8348,"indexExpression":{"id":8347,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"6581:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6571:15:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8349,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8330,"src":"6589:11:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8350,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"6603:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6589:19:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6571:37:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8353,"nodeType":"ExpressionStatement","src":"6571:37:30"}]}]},"id":8356,"nodeType":"IfStatement","src":"6093:540:30","trueBody":{"id":8328,"nodeType":"Block","src":"6117:148:30","statements":[{"expression":{"id":8326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8324,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"6233:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"6249:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6233:21:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8327,"nodeType":"ExpressionStatement","src":"6233:21:30"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8357,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"6647:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6661:1:30","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":8359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6653:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8358,"name":"address","nodeType":"ElementaryTypeName","src":"6653:7:30","typeDescriptions":{}}},"id":8361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6653:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6647:16:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8376,"nodeType":"Block","src":"6862:206:30","statements":[{"id":8375,"nodeType":"UncheckedBlock","src":"6876:182:30","statements":[{"expression":{"id":8373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8369,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8086,"src":"7021:9:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8371,"indexExpression":{"id":8370,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"7031:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7021:13:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"7038:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7021:22:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8374,"nodeType":"ExpressionStatement","src":"7021:22:30"}]}]},"id":8377,"nodeType":"IfStatement","src":"6643:425:30","trueBody":{"id":8368,"nodeType":"Block","src":"6665:191:30","statements":[{"id":8367,"nodeType":"UncheckedBlock","src":"6679:167:30","statements":[{"expression":{"id":8365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8363,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"6810:12:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8364,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"6826:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6810:21:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8366,"nodeType":"ExpressionStatement","src":"6810:21:30"}]}]}},{"eventCall":{"arguments":[{"id":8379,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"7092:4:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8380,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8313,"src":"7098:2:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"7102:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8378,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8590,"src":"7083:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7083:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8383,"nodeType":"EmitStatement","src":"7078:30:30"}]},"documentation":{"id":8309,"nodeType":"StructuredDocumentation","src":"5699:304:30","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":8385,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"6017:7:30","nodeType":"FunctionDefinition","parameters":{"id":8316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8311,"mutability":"mutable","name":"from","nameLocation":"6033:4:30","nodeType":"VariableDeclaration","scope":8385,"src":"6025:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8310,"name":"address","nodeType":"ElementaryTypeName","src":"6025:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8313,"mutability":"mutable","name":"to","nameLocation":"6047:2:30","nodeType":"VariableDeclaration","scope":8385,"src":"6039:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8312,"name":"address","nodeType":"ElementaryTypeName","src":"6039:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8315,"mutability":"mutable","name":"value","nameLocation":"6059:5:30","nodeType":"VariableDeclaration","scope":8385,"src":"6051:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8314,"name":"uint256","nodeType":"ElementaryTypeName","src":"6051:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6024:41:30"},"returnParameters":{"id":8317,"nodeType":"ParameterList","parameters":[],"src":"6083:0:30"},"scope":8578,"src":"6008:1107:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8417,"nodeType":"Block","src":"7514:152:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8393,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8388,"src":"7528:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7547:1:30","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":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7539:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8394,"name":"address","nodeType":"ElementaryTypeName","src":"7539:7:30","typeDescriptions":{}}},"id":8397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7539:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7528:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8407,"nodeType":"IfStatement","src":"7524:91:30","trueBody":{"id":8406,"nodeType":"Block","src":"7551:64:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7601:1:30","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":8401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7593:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8400,"name":"address","nodeType":"ElementaryTypeName","src":"7593:7:30","typeDescriptions":{}}},"id":8403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7593:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8399,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"7572:20:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7572:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8405,"nodeType":"RevertStatement","src":"7565:39:30"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":8411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7640:1:30","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":8410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7632:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8409,"name":"address","nodeType":"ElementaryTypeName","src":"7632:7:30","typeDescriptions":{}}},"id":8412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7632:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8413,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8388,"src":"7644:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8414,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"7653:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8408,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8385,"src":"7624:7:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7624:35:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8416,"nodeType":"ExpressionStatement","src":"7624:35:30"}]},"documentation":{"id":8386,"nodeType":"StructuredDocumentation","src":"7121:332:30","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":8418,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7467:5:30","nodeType":"FunctionDefinition","parameters":{"id":8391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8388,"mutability":"mutable","name":"account","nameLocation":"7481:7:30","nodeType":"VariableDeclaration","scope":8418,"src":"7473:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8387,"name":"address","nodeType":"ElementaryTypeName","src":"7473:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8390,"mutability":"mutable","name":"value","nameLocation":"7498:5:30","nodeType":"VariableDeclaration","scope":8418,"src":"7490:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8389,"name":"uint256","nodeType":"ElementaryTypeName","src":"7490:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7472:32:30"},"returnParameters":{"id":8392,"nodeType":"ParameterList","parameters":[],"src":"7514:0:30"},"scope":8578,"src":"7458:208:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8450,"nodeType":"Block","src":"8040:150:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8426,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"8054:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8073:1:30","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":8428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8065:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8427,"name":"address","nodeType":"ElementaryTypeName","src":"8065:7:30","typeDescriptions":{}}},"id":8430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8065:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8054:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8440,"nodeType":"IfStatement","src":"8050:89:30","trueBody":{"id":8439,"nodeType":"Block","src":"8077:62:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8125:1:30","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":8434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8117:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8433,"name":"address","nodeType":"ElementaryTypeName","src":"8117:7:30","typeDescriptions":{}}},"id":8436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8117:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8432,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7565,"src":"8098:18:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:30:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8438,"nodeType":"RevertStatement","src":"8091:37:30"}]}},{"expression":{"arguments":[{"id":8442,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"8156:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":8445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8173:1:30","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":8444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8165:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8443,"name":"address","nodeType":"ElementaryTypeName","src":"8165:7:30","typeDescriptions":{}}},"id":8446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8165:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8447,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8423,"src":"8177:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8441,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8385,"src":"8148:7:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8148:35:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8449,"nodeType":"ExpressionStatement","src":"8148:35:30"}]},"documentation":{"id":8419,"nodeType":"StructuredDocumentation","src":"7672:307:30","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":8451,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7993:5:30","nodeType":"FunctionDefinition","parameters":{"id":8424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8421,"mutability":"mutable","name":"account","nameLocation":"8007:7:30","nodeType":"VariableDeclaration","scope":8451,"src":"7999:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8420,"name":"address","nodeType":"ElementaryTypeName","src":"7999:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8423,"mutability":"mutable","name":"value","nameLocation":"8024:5:30","nodeType":"VariableDeclaration","scope":8451,"src":"8016:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8422,"name":"uint256","nodeType":"ElementaryTypeName","src":"8016:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7998:32:30"},"returnParameters":{"id":8425,"nodeType":"ParameterList","parameters":[],"src":"8040:0:30"},"scope":8578,"src":"7984:206:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8468,"nodeType":"Block","src":"8800:54:30","statements":[{"expression":{"arguments":[{"id":8462,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8454,"src":"8819:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8463,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8456,"src":"8826:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8458,"src":"8835:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":8465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8842:4:30","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":8461,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8469,8529],"referencedDeclaration":8529,"src":"8810:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":8466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8810:37:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8467,"nodeType":"ExpressionStatement","src":"8810:37:30"}]},"documentation":{"id":8452,"nodeType":"StructuredDocumentation","src":"8196:525:30","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":8469,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8735:8:30","nodeType":"FunctionDefinition","parameters":{"id":8459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8454,"mutability":"mutable","name":"owner","nameLocation":"8752:5:30","nodeType":"VariableDeclaration","scope":8469,"src":"8744:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8453,"name":"address","nodeType":"ElementaryTypeName","src":"8744:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8456,"mutability":"mutable","name":"spender","nameLocation":"8767:7:30","nodeType":"VariableDeclaration","scope":8469,"src":"8759:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8455,"name":"address","nodeType":"ElementaryTypeName","src":"8759:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8458,"mutability":"mutable","name":"value","nameLocation":"8784:5:30","nodeType":"VariableDeclaration","scope":8469,"src":"8776:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8457,"name":"uint256","nodeType":"ElementaryTypeName","src":"8776:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8743:47:30"},"returnParameters":{"id":8460,"nodeType":"ParameterList","parameters":[],"src":"8800:0:30"},"scope":8578,"src":"8726:128:30","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8528,"nodeType":"Block","src":"9799:334:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8481,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"9813:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9830:1:30","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":8483,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9822:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8482,"name":"address","nodeType":"ElementaryTypeName","src":"9822:7:30","typeDescriptions":{}}},"id":8485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9813:19:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8495,"nodeType":"IfStatement","src":"9809:89:30","trueBody":{"id":8494,"nodeType":"Block","src":"9834:64:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9884:1:30","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":8489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9876:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8488,"name":"address","nodeType":"ElementaryTypeName","src":"9876:7:30","typeDescriptions":{}}},"id":8491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9876:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8487,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7584,"src":"9855:20:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9855:32:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8493,"nodeType":"RevertStatement","src":"9848:39:30"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8496,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"9911:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9930:1:30","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":8498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9922:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8497,"name":"address","nodeType":"ElementaryTypeName","src":"9922:7:30","typeDescriptions":{}}},"id":8500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9922:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9911:21:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8510,"nodeType":"IfStatement","src":"9907:90:30","trueBody":{"id":8509,"nodeType":"Block","src":"9934:63:30","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":8505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9983:1:30","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":8504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9975:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8503,"name":"address","nodeType":"ElementaryTypeName","src":"9975:7:30","typeDescriptions":{}}},"id":8506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9975:10:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8502,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7589,"src":"9955:19:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9955:31:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8508,"nodeType":"RevertStatement","src":"9948:38:30"}]}},{"expression":{"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":8511,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"10006:11:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8514,"indexExpression":{"id":8512,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"10018:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10006:18:30","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8515,"indexExpression":{"id":8513,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"10025:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10006:27:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"10036:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10006:35:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8518,"nodeType":"ExpressionStatement","src":"10006:35:30"},{"condition":{"id":8519,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8478,"src":"10055:9:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8527,"nodeType":"IfStatement","src":"10051:76:30","trueBody":{"id":8526,"nodeType":"Block","src":"10066:61:30","statements":[{"eventCall":{"arguments":[{"id":8521,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"10094:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8522,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"10101:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8523,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8476,"src":"10110:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8520,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8599,"src":"10085:8:30","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10085:31:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8525,"nodeType":"EmitStatement","src":"10080:36:30"}]}}]},"documentation":{"id":8470,"nodeType":"StructuredDocumentation","src":"8860:836:30","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 set 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":8529,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9710:8:30","nodeType":"FunctionDefinition","parameters":{"id":8479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8472,"mutability":"mutable","name":"owner","nameLocation":"9727:5:30","nodeType":"VariableDeclaration","scope":8529,"src":"9719:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8471,"name":"address","nodeType":"ElementaryTypeName","src":"9719:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8474,"mutability":"mutable","name":"spender","nameLocation":"9742:7:30","nodeType":"VariableDeclaration","scope":8529,"src":"9734:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8473,"name":"address","nodeType":"ElementaryTypeName","src":"9734:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8476,"mutability":"mutable","name":"value","nameLocation":"9759:5:30","nodeType":"VariableDeclaration","scope":8529,"src":"9751:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8475,"name":"uint256","nodeType":"ElementaryTypeName","src":"9751:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8478,"mutability":"mutable","name":"emitEvent","nameLocation":"9771:9:30","nodeType":"VariableDeclaration","scope":8529,"src":"9766:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8477,"name":"bool","nodeType":"ElementaryTypeName","src":"9766:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9718:63:30"},"returnParameters":{"id":8480,"nodeType":"ParameterList","parameters":[],"src":"9799:0:30"},"scope":8578,"src":"9701:432:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":8576,"nodeType":"Block","src":"10504:388:30","statements":[{"assignments":[8540],"declarations":[{"constant":false,"id":8540,"mutability":"mutable","name":"currentAllowance","nameLocation":"10522:16:30","nodeType":"VariableDeclaration","scope":8576,"src":"10514:24:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8539,"name":"uint256","nodeType":"ElementaryTypeName","src":"10514:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8545,"initialValue":{"arguments":[{"id":8542,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"10551:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8543,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8534,"src":"10558:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8541,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8205,"src":"10541:9:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10541:25:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10514:52:30"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8546,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"10580:16:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":8549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10605:7:30","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8548,"name":"uint256","nodeType":"ElementaryTypeName","src":"10605:7:30","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8547,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10600:4:30","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10600:13:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10614:3:30","memberName":"max","nodeType":"MemberAccess","src":"10600:17:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10580:37:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8575,"nodeType":"IfStatement","src":"10576:310:30","trueBody":{"id":8574,"nodeType":"Block","src":"10619:267:30","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8553,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"10637:16:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8536,"src":"10656:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10637:24:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8563,"nodeType":"IfStatement","src":"10633:130:30","trueBody":{"id":8562,"nodeType":"Block","src":"10663:100:30","statements":[{"errorCall":{"arguments":[{"id":8557,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8534,"src":"10715:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8558,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"10724:16:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8559,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8536,"src":"10742:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8556,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7579,"src":"10688:26:30","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":8560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10688:60:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8561,"nodeType":"RevertStatement","src":"10681:67:30"}]}},{"id":8573,"nodeType":"UncheckedBlock","src":"10776:100:30","statements":[{"expression":{"arguments":[{"id":8565,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8532,"src":"10813:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8566,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8534,"src":"10820:7:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8567,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8540,"src":"10829:16:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8536,"src":"10848:5:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10829:24:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":8570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10855:5:30","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":8564,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[8469,8529],"referencedDeclaration":8529,"src":"10804:8:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10804:57:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8572,"nodeType":"ExpressionStatement","src":"10804:57:30"}]}]}}]},"documentation":{"id":8530,"nodeType":"StructuredDocumentation","src":"10139:271:30","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":8577,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10424:15:30","nodeType":"FunctionDefinition","parameters":{"id":8537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8532,"mutability":"mutable","name":"owner","nameLocation":"10448:5:30","nodeType":"VariableDeclaration","scope":8577,"src":"10440:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8531,"name":"address","nodeType":"ElementaryTypeName","src":"10440:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8534,"mutability":"mutable","name":"spender","nameLocation":"10463:7:30","nodeType":"VariableDeclaration","scope":8577,"src":"10455:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8533,"name":"address","nodeType":"ElementaryTypeName","src":"10455:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8536,"mutability":"mutable","name":"value","nameLocation":"10480:5:30","nodeType":"VariableDeclaration","scope":8577,"src":"10472:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8535,"name":"uint256","nodeType":"ElementaryTypeName","src":"10472:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10439:47:30"},"returnParameters":{"id":8538,"nodeType":"ParameterList","parameters":[],"src":"10504:0:30"},"scope":8578,"src":"10415:477:30","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":8579,"src":"1106:9788:30","usedErrors":[7560,7565,7570,7579,7584,7589],"usedEvents":[8590,8599]}],"src":"105:10790:30"},"id":30},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[8656]},"id":8657,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8580,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":8581,"nodeType":"StructuredDocumentation","src":"132:71:31","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":8656,"linearizedBaseContracts":[8656],"name":"IERC20","nameLocation":"214:6:31","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":8582,"nodeType":"StructuredDocumentation","src":"227:158:31","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":8590,"name":"Transfer","nameLocation":"396:8:31","nodeType":"EventDefinition","parameters":{"id":8589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8584,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:31","nodeType":"VariableDeclaration","scope":8590,"src":"405:20:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8583,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8586,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:31","nodeType":"VariableDeclaration","scope":8590,"src":"427:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8585,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8588,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:31","nodeType":"VariableDeclaration","scope":8590,"src":"447:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8587,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:31"},"src":"390:72:31"},{"anonymous":false,"documentation":{"id":8591,"nodeType":"StructuredDocumentation","src":"468:148:31","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":8599,"name":"Approval","nameLocation":"627:8:31","nodeType":"EventDefinition","parameters":{"id":8598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8593,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:31","nodeType":"VariableDeclaration","scope":8599,"src":"636:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8592,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8595,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:31","nodeType":"VariableDeclaration","scope":8599,"src":"659:23:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8594,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8597,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:31","nodeType":"VariableDeclaration","scope":8599,"src":"684:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8596,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:31"},"src":"621:78:31"},{"documentation":{"id":8600,"nodeType":"StructuredDocumentation","src":"705:65:31","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":8605,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:31","nodeType":"FunctionDefinition","parameters":{"id":8601,"nodeType":"ParameterList","parameters":[],"src":"795:2:31"},"returnParameters":{"id":8604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8605,"src":"821:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8602,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:31"},"scope":8656,"src":"775:55:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8606,"nodeType":"StructuredDocumentation","src":"836:71:31","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":8613,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:31","nodeType":"FunctionDefinition","parameters":{"id":8609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8608,"mutability":"mutable","name":"account","nameLocation":"939:7:31","nodeType":"VariableDeclaration","scope":8613,"src":"931:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8607,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:31"},"returnParameters":{"id":8612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8613,"src":"971:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8610,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:31"},"scope":8656,"src":"912:68:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8614,"nodeType":"StructuredDocumentation","src":"986:213:31","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":8623,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:31","nodeType":"FunctionDefinition","parameters":{"id":8619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8616,"mutability":"mutable","name":"to","nameLocation":"1230:2:31","nodeType":"VariableDeclaration","scope":8623,"src":"1222:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8615,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8618,"mutability":"mutable","name":"value","nameLocation":"1242:5:31","nodeType":"VariableDeclaration","scope":8623,"src":"1234:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:31"},"returnParameters":{"id":8622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8623,"src":"1267:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8620,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:31"},"scope":8656,"src":"1204:69:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8624,"nodeType":"StructuredDocumentation","src":"1279:264:31","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":8633,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:31","nodeType":"FunctionDefinition","parameters":{"id":8629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8626,"mutability":"mutable","name":"owner","nameLocation":"1575:5:31","nodeType":"VariableDeclaration","scope":8633,"src":"1567:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8625,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8628,"mutability":"mutable","name":"spender","nameLocation":"1590:7:31","nodeType":"VariableDeclaration","scope":8633,"src":"1582:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8627,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:31"},"returnParameters":{"id":8632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8631,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8633,"src":"1622:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8630,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:31"},"scope":8656,"src":"1548:83:31","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8634,"nodeType":"StructuredDocumentation","src":"1637:667:31","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":8643,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:31","nodeType":"FunctionDefinition","parameters":{"id":8639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8636,"mutability":"mutable","name":"spender","nameLocation":"2334:7:31","nodeType":"VariableDeclaration","scope":8643,"src":"2326:15:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8635,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8638,"mutability":"mutable","name":"value","nameLocation":"2351:5:31","nodeType":"VariableDeclaration","scope":8643,"src":"2343:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:31"},"returnParameters":{"id":8642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8643,"src":"2376:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8640,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:31"},"scope":8656,"src":"2309:73:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8644,"nodeType":"StructuredDocumentation","src":"2388:297:31","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":8655,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:31","nodeType":"FunctionDefinition","parameters":{"id":8651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8646,"mutability":"mutable","name":"from","nameLocation":"2720:4:31","nodeType":"VariableDeclaration","scope":8655,"src":"2712:12:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8645,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8648,"mutability":"mutable","name":"to","nameLocation":"2734:2:31","nodeType":"VariableDeclaration","scope":8655,"src":"2726:10:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8647,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8650,"mutability":"mutable","name":"value","nameLocation":"2746:5:31","nodeType":"VariableDeclaration","scope":8655,"src":"2738:13:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8649,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:31"},"returnParameters":{"id":8654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8655,"src":"2771:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8652,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:31"},"scope":8656,"src":"2690:87:31","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8657,"src":"204:2575:31","usedErrors":[],"usedEvents":[8590,8599]}],"src":"106:2674:31"},"id":31},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[8656],"IERC20Metadata":[8682]},"id":8683,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8658,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:32"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":8660,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8683,"sourceUnit":8657,"src":"151:37:32","symbolAliases":[{"foreign":{"id":8659,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"159:6:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8662,"name":"IERC20","nameLocations":["306:6:32"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"306:6:32"},"id":8663,"nodeType":"InheritanceSpecifier","src":"306:6:32"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":8661,"nodeType":"StructuredDocumentation","src":"190:87:32","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":8682,"linearizedBaseContracts":[8682,8656],"name":"IERC20Metadata","nameLocation":"288:14:32","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8664,"nodeType":"StructuredDocumentation","src":"319:54:32","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":8669,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:32","nodeType":"FunctionDefinition","parameters":{"id":8665,"nodeType":"ParameterList","parameters":[],"src":"391:2:32"},"returnParameters":{"id":8668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8669,"src":"417:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8666,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:32"},"scope":8682,"src":"378:54:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8670,"nodeType":"StructuredDocumentation","src":"438:56:32","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":8675,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:32","nodeType":"FunctionDefinition","parameters":{"id":8671,"nodeType":"ParameterList","parameters":[],"src":"514:2:32"},"returnParameters":{"id":8674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8675,"src":"540:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8672,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:32"},"scope":8682,"src":"499:56:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8676,"nodeType":"StructuredDocumentation","src":"561:65:32","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":8681,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:32","nodeType":"FunctionDefinition","parameters":{"id":8677,"nodeType":"ParameterList","parameters":[],"src":"648:2:32"},"returnParameters":{"id":8680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8681,"src":"674:5:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8678,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:32","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:32"},"scope":8682,"src":"631:50:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8683,"src":"278:405:32","usedErrors":[],"usedEvents":[8590,8599]}],"src":"125:559:32"},"id":32},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[9352],"IERC1363":[7335],"IERC20":[8656],"SafeERC20":[9093]},"id":9094,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8684,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:33"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":8686,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9094,"sourceUnit":8657,"src":"141:37:33","symbolAliases":[{"foreign":{"id":8685,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"149:6:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":8688,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9094,"sourceUnit":7336,"src":"179:58:33","symbolAliases":[{"foreign":{"id":8687,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7335,"src":"187:8:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":8690,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9094,"sourceUnit":9353,"src":"238:51:33","symbolAliases":[{"foreign":{"id":8689,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"246:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":8691,"nodeType":"StructuredDocumentation","src":"291:458:33","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":9093,"linearizedBaseContracts":[9093],"name":"SafeERC20","nameLocation":"758:9:33","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8692,"nodeType":"StructuredDocumentation","src":"774:65:33","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":8696,"name":"SafeERC20FailedOperation","nameLocation":"850:24:33","nodeType":"ErrorDefinition","parameters":{"id":8695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8694,"mutability":"mutable","name":"token","nameLocation":"883:5:33","nodeType":"VariableDeclaration","scope":8696,"src":"875:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8693,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"874:15:33"},"src":"844:46:33"},{"documentation":{"id":8697,"nodeType":"StructuredDocumentation","src":"896:71:33","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":8705,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"978:32:33","nodeType":"ErrorDefinition","parameters":{"id":8704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8699,"mutability":"mutable","name":"spender","nameLocation":"1019:7:33","nodeType":"VariableDeclaration","scope":8705,"src":"1011:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8698,"name":"address","nodeType":"ElementaryTypeName","src":"1011:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8701,"mutability":"mutable","name":"currentAllowance","nameLocation":"1036:16:33","nodeType":"VariableDeclaration","scope":8705,"src":"1028:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8700,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8703,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1062:17:33","nodeType":"VariableDeclaration","scope":8705,"src":"1054:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:70:33"},"src":"972:109:33"},{"body":{"id":8728,"nodeType":"Block","src":"1343:88:33","statements":[{"expression":{"arguments":[{"id":8717,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"1373:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":8720,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"1395:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1401:8:33","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8623,"src":"1395:14:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":8722,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"1412:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8713,"src":"1416:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1411:11:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":8718,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1380:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1384:10:33","memberName":"encodeCall","nodeType":"MemberAccess","src":"1380:14:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1380:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8716,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"1353:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1353:71:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8727,"nodeType":"ExpressionStatement","src":"1353:71:33"}]},"documentation":{"id":8706,"nodeType":"StructuredDocumentation","src":"1087:179:33","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":8729,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1280:12:33","nodeType":"FunctionDefinition","parameters":{"id":8714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8709,"mutability":"mutable","name":"token","nameLocation":"1300:5:33","nodeType":"VariableDeclaration","scope":8729,"src":"1293:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":8708,"nodeType":"UserDefinedTypeName","pathNode":{"id":8707,"name":"IERC20","nameLocations":["1293:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1293:6:33"},"referencedDeclaration":8656,"src":"1293:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8711,"mutability":"mutable","name":"to","nameLocation":"1315:2:33","nodeType":"VariableDeclaration","scope":8729,"src":"1307:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8710,"name":"address","nodeType":"ElementaryTypeName","src":"1307:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8713,"mutability":"mutable","name":"value","nameLocation":"1327:5:33","nodeType":"VariableDeclaration","scope":8729,"src":"1319:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8712,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1292:41:33"},"returnParameters":{"id":8715,"nodeType":"ParameterList","parameters":[],"src":"1343:0:33"},"scope":9093,"src":"1271:160:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8755,"nodeType":"Block","src":"1760:98:33","statements":[{"expression":{"arguments":[{"id":8743,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8733,"src":"1790:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":8746,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8733,"src":"1812:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1818:12:33","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":8655,"src":"1812:18:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":8748,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8735,"src":"1833:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8749,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8737,"src":"1839:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"1843:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1832:17:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":8744,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1797:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1801:10:33","memberName":"encodeCall","nodeType":"MemberAccess","src":"1797:14:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1797:53:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8742,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"1770:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":8753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1770:81:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8754,"nodeType":"ExpressionStatement","src":"1770:81:33"}]},"documentation":{"id":8730,"nodeType":"StructuredDocumentation","src":"1437:228:33","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":8756,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1679:16:33","nodeType":"FunctionDefinition","parameters":{"id":8740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8733,"mutability":"mutable","name":"token","nameLocation":"1703:5:33","nodeType":"VariableDeclaration","scope":8756,"src":"1696:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":8732,"nodeType":"UserDefinedTypeName","pathNode":{"id":8731,"name":"IERC20","nameLocations":["1696:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1696:6:33"},"referencedDeclaration":8656,"src":"1696:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8735,"mutability":"mutable","name":"from","nameLocation":"1718:4:33","nodeType":"VariableDeclaration","scope":8756,"src":"1710:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8734,"name":"address","nodeType":"ElementaryTypeName","src":"1710:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8737,"mutability":"mutable","name":"to","nameLocation":"1732:2:33","nodeType":"VariableDeclaration","scope":8756,"src":"1724:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8736,"name":"address","nodeType":"ElementaryTypeName","src":"1724:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8739,"mutability":"mutable","name":"value","nameLocation":"1744:5:33","nodeType":"VariableDeclaration","scope":8756,"src":"1736:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8738,"name":"uint256","nodeType":"ElementaryTypeName","src":"1736:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1695:55:33"},"returnParameters":{"id":8741,"nodeType":"ParameterList","parameters":[],"src":"1760:0:33"},"scope":9093,"src":"1670:188:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8786,"nodeType":"Block","src":"2600:139:33","statements":[{"assignments":[8768],"declarations":[{"constant":false,"id":8768,"mutability":"mutable","name":"oldAllowance","nameLocation":"2618:12:33","nodeType":"VariableDeclaration","scope":8786,"src":"2610:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2610:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8777,"initialValue":{"arguments":[{"arguments":[{"id":8773,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2657:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9093","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$9093","typeString":"library SafeERC20"}],"id":8772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2649:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8771,"name":"address","nodeType":"ElementaryTypeName","src":"2649:7:33","typeDescriptions":{}}},"id":8774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8775,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"2664:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8769,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8760,"src":"2633:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2639:9:33","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8633,"src":"2633:15:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2633:39:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2610:62:33"},{"expression":{"arguments":[{"id":8779,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8760,"src":"2695:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":8780,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"2702:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8781,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"2711:12:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8782,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"2726:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2711:20:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8778,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"2682:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":8784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2682:50:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8785,"nodeType":"ExpressionStatement","src":"2682:50:33"}]},"documentation":{"id":8757,"nodeType":"StructuredDocumentation","src":"1864:645:33","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":8787,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2523:21:33","nodeType":"FunctionDefinition","parameters":{"id":8765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8760,"mutability":"mutable","name":"token","nameLocation":"2552:5:33","nodeType":"VariableDeclaration","scope":8787,"src":"2545:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":8759,"nodeType":"UserDefinedTypeName","pathNode":{"id":8758,"name":"IERC20","nameLocations":["2545:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"2545:6:33"},"referencedDeclaration":8656,"src":"2545:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8762,"mutability":"mutable","name":"spender","nameLocation":"2567:7:33","nodeType":"VariableDeclaration","scope":8787,"src":"2559:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8761,"name":"address","nodeType":"ElementaryTypeName","src":"2559:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8764,"mutability":"mutable","name":"value","nameLocation":"2584:5:33","nodeType":"VariableDeclaration","scope":8787,"src":"2576:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8763,"name":"uint256","nodeType":"ElementaryTypeName","src":"2576:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2544:46:33"},"returnParameters":{"id":8766,"nodeType":"ParameterList","parameters":[],"src":"2600:0:33"},"scope":9093,"src":"2514:225:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8829,"nodeType":"Block","src":"3505:370:33","statements":[{"id":8828,"nodeType":"UncheckedBlock","src":"3515:354:33","statements":[{"assignments":[8799],"declarations":[{"constant":false,"id":8799,"mutability":"mutable","name":"currentAllowance","nameLocation":"3547:16:33","nodeType":"VariableDeclaration","scope":8828,"src":"3539:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8798,"name":"uint256","nodeType":"ElementaryTypeName","src":"3539:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8808,"initialValue":{"arguments":[{"arguments":[{"id":8804,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3590:4:33","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$9093","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$9093","typeString":"library SafeERC20"}],"id":8803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3582:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8802,"name":"address","nodeType":"ElementaryTypeName","src":"3582:7:33","typeDescriptions":{}}},"id":8805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3582:13:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8806,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"3597:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8800,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8791,"src":"3566:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3572:9:33","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":8633,"src":"3566:15:33","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3566:39:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3539:66:33"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8809,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"3623:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8810,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"3642:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3623:36:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8819,"nodeType":"IfStatement","src":"3619:160:33","trueBody":{"id":8818,"nodeType":"Block","src":"3661:118:33","statements":[{"errorCall":{"arguments":[{"id":8813,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"3719:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8814,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"3728:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8815,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"3746:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8812,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8705,"src":"3686:32:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:78:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8817,"nodeType":"RevertStatement","src":"3679:85:33"}]}},{"expression":{"arguments":[{"id":8821,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8791,"src":"3805:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":8822,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"3812:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8823,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8799,"src":"3821:16:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8824,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"3840:17:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3821:36:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8820,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"3792:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":8826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3792:66:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8827,"nodeType":"ExpressionStatement","src":"3792:66:33"}]}]},"documentation":{"id":8788,"nodeType":"StructuredDocumentation","src":"2745:657:33","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":8830,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"3416:21:33","nodeType":"FunctionDefinition","parameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8791,"mutability":"mutable","name":"token","nameLocation":"3445:5:33","nodeType":"VariableDeclaration","scope":8830,"src":"3438:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":8790,"nodeType":"UserDefinedTypeName","pathNode":{"id":8789,"name":"IERC20","nameLocations":["3438:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"3438:6:33"},"referencedDeclaration":8656,"src":"3438:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8793,"mutability":"mutable","name":"spender","nameLocation":"3460:7:33","nodeType":"VariableDeclaration","scope":8830,"src":"3452:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8792,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8795,"mutability":"mutable","name":"requestedDecrease","nameLocation":"3477:17:33","nodeType":"VariableDeclaration","scope":8830,"src":"3469:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"3469:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3437:58:33"},"returnParameters":{"id":8797,"nodeType":"ParameterList","parameters":[],"src":"3505:0:33"},"scope":9093,"src":"3407:468:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8876,"nodeType":"Block","src":"4529:303:33","statements":[{"assignments":[8842],"declarations":[{"constant":false,"id":8842,"mutability":"mutable","name":"approvalCall","nameLocation":"4552:12:33","nodeType":"VariableDeclaration","scope":8876,"src":"4539:25:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8841,"name":"bytes","nodeType":"ElementaryTypeName","src":"4539:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8851,"initialValue":{"arguments":[{"expression":{"id":8845,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4582:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4588:7:33","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"4582:13:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":8847,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4598:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8848,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8838,"src":"4607:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8849,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4597:16:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":8843,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4567:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4571:10:33","memberName":"encodeCall","nodeType":"MemberAccess","src":"4567:14:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4567:47:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4539:75:33"},{"condition":{"id":8856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4629:45:33","subExpression":{"arguments":[{"id":8853,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4654:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":8854,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8842,"src":"4661:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8852,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"4630:23:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":8855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4630:44:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8875,"nodeType":"IfStatement","src":"4625:201:33","trueBody":{"id":8874,"nodeType":"Block","src":"4676:150:33","statements":[{"expression":{"arguments":[{"id":8858,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4710:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":8861,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4732:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4738:7:33","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"4732:13:33","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":8863,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8836,"src":"4748:7:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":8864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4757:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":8865,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4747:12:33","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":8859,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4717:3:33","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4721:10:33","memberName":"encodeCall","nodeType":"MemberAccess","src":"4717:14:33","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4717:43:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8857,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"4690:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":8867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4690:71:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8868,"nodeType":"ExpressionStatement","src":"4690:71:33"},{"expression":{"arguments":[{"id":8870,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"4795:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":8871,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8842,"src":"4802:12:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8869,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9051,"src":"4775:19:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":8872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4775:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8873,"nodeType":"ExpressionStatement","src":"4775:40:33"}]}}]},"documentation":{"id":8831,"nodeType":"StructuredDocumentation","src":"3881:566:33","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":8877,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"4461:12:33","nodeType":"FunctionDefinition","parameters":{"id":8839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8834,"mutability":"mutable","name":"token","nameLocation":"4481:5:33","nodeType":"VariableDeclaration","scope":8877,"src":"4474:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":8833,"nodeType":"UserDefinedTypeName","pathNode":{"id":8832,"name":"IERC20","nameLocations":["4474:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"4474:6:33"},"referencedDeclaration":8656,"src":"4474:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8836,"mutability":"mutable","name":"spender","nameLocation":"4496:7:33","nodeType":"VariableDeclaration","scope":8877,"src":"4488:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8835,"name":"address","nodeType":"ElementaryTypeName","src":"4488:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8838,"mutability":"mutable","name":"value","nameLocation":"4513:5:33","nodeType":"VariableDeclaration","scope":8877,"src":"4505:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8837,"name":"uint256","nodeType":"ElementaryTypeName","src":"4505:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4473:46:33"},"returnParameters":{"id":8840,"nodeType":"ParameterList","parameters":[],"src":"4529:0:33"},"scope":9093,"src":"4452:380:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8919,"nodeType":"Block","src":"5279:219:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8890,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8883,"src":"5293:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5296:4:33","memberName":"code","nodeType":"MemberAccess","src":"5293:7:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5301:6:33","memberName":"length","nodeType":"MemberAccess","src":"5293:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5311:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5293:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":8908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5379:39:33","subExpression":{"arguments":[{"id":8904,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8883,"src":"5402:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8905,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8885,"src":"5406:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8906,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8887,"src":"5413:4:33","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":8902,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"5380:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"id":8903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5386:15:33","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":7286,"src":"5380:21:33","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":8907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5380:38:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8917,"nodeType":"IfStatement","src":"5375:117:33","trueBody":{"id":8916,"nodeType":"Block","src":"5420:72:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":8912,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"5474:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}],"id":8911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5466:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8910,"name":"address","nodeType":"ElementaryTypeName","src":"5466:7:33","typeDescriptions":{}}},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5466:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8909,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8696,"src":"5441:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5441:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8915,"nodeType":"RevertStatement","src":"5434:47:33"}]}},"id":8918,"nodeType":"IfStatement","src":"5289:203:33","trueBody":{"id":8901,"nodeType":"Block","src":"5314:55:33","statements":[{"expression":{"arguments":[{"id":8896,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"5341:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},{"id":8897,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8883,"src":"5348:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8898,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8885,"src":"5352:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8895,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8729,"src":"5328:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":8899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5328:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8900,"nodeType":"ExpressionStatement","src":"5328:30:33"}]}}]},"documentation":{"id":8878,"nodeType":"StructuredDocumentation","src":"4838:333:33","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 rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":8920,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5185:22:33","nodeType":"FunctionDefinition","parameters":{"id":8888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8881,"mutability":"mutable","name":"token","nameLocation":"5217:5:33","nodeType":"VariableDeclaration","scope":8920,"src":"5208:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},"typeName":{"id":8880,"nodeType":"UserDefinedTypeName","pathNode":{"id":8879,"name":"IERC1363","nameLocations":["5208:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7335,"src":"5208:8:33"},"referencedDeclaration":7335,"src":"5208:8:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":8883,"mutability":"mutable","name":"to","nameLocation":"5232:2:33","nodeType":"VariableDeclaration","scope":8920,"src":"5224:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8882,"name":"address","nodeType":"ElementaryTypeName","src":"5224:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8885,"mutability":"mutable","name":"value","nameLocation":"5244:5:33","nodeType":"VariableDeclaration","scope":8920,"src":"5236:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8884,"name":"uint256","nodeType":"ElementaryTypeName","src":"5236:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8887,"mutability":"mutable","name":"data","nameLocation":"5264:4:33","nodeType":"VariableDeclaration","scope":8920,"src":"5251:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8886,"name":"bytes","nodeType":"ElementaryTypeName","src":"5251:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5207:62:33"},"returnParameters":{"id":8889,"nodeType":"ParameterList","parameters":[],"src":"5279:0:33"},"scope":9093,"src":"5176:322:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8966,"nodeType":"Block","src":"6017:239:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8935,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8928,"src":"6031:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6034:4:33","memberName":"code","nodeType":"MemberAccess","src":"6031:7:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6039:6:33","memberName":"length","nodeType":"MemberAccess","src":"6031:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6049:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6031:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":8955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6127:49:33","subExpression":{"arguments":[{"id":8950,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"6154:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8951,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8928,"src":"6160:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8952,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8930,"src":"6164:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8953,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8932,"src":"6171:4:33","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":8948,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"6128:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6134:19:33","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":7312,"src":"6128:25:33","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":8954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6128:48:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8964,"nodeType":"IfStatement","src":"6123:127:33","trueBody":{"id":8963,"nodeType":"Block","src":"6178:72:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":8959,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"6232:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}],"id":8958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6224:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8957,"name":"address","nodeType":"ElementaryTypeName","src":"6224:7:33","typeDescriptions":{}}},"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6224:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8956,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8696,"src":"6199:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":8961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8962,"nodeType":"RevertStatement","src":"6192:47:33"}]}},"id":8965,"nodeType":"IfStatement","src":"6027:223:33","trueBody":{"id":8947,"nodeType":"Block","src":"6052:65:33","statements":[{"expression":{"arguments":[{"id":8941,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8924,"src":"6083:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},{"id":8942,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8926,"src":"6090:4:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8943,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8928,"src":"6096:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8944,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8930,"src":"6100:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8940,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8756,"src":"6066:16:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":8945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6066:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8946,"nodeType":"ExpressionStatement","src":"6066:40:33"}]}}]},"documentation":{"id":8921,"nodeType":"StructuredDocumentation","src":"5504:341:33","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 rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":8967,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"5859:26:33","nodeType":"FunctionDefinition","parameters":{"id":8933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8924,"mutability":"mutable","name":"token","nameLocation":"5904:5:33","nodeType":"VariableDeclaration","scope":8967,"src":"5895:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},"typeName":{"id":8923,"nodeType":"UserDefinedTypeName","pathNode":{"id":8922,"name":"IERC1363","nameLocations":["5895:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7335,"src":"5895:8:33"},"referencedDeclaration":7335,"src":"5895:8:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":8926,"mutability":"mutable","name":"from","nameLocation":"5927:4:33","nodeType":"VariableDeclaration","scope":8967,"src":"5919:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8925,"name":"address","nodeType":"ElementaryTypeName","src":"5919:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8928,"mutability":"mutable","name":"to","nameLocation":"5949:2:33","nodeType":"VariableDeclaration","scope":8967,"src":"5941:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8927,"name":"address","nodeType":"ElementaryTypeName","src":"5941:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8930,"mutability":"mutable","name":"value","nameLocation":"5969:5:33","nodeType":"VariableDeclaration","scope":8967,"src":"5961:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8929,"name":"uint256","nodeType":"ElementaryTypeName","src":"5961:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8932,"mutability":"mutable","name":"data","nameLocation":"5997:4:33","nodeType":"VariableDeclaration","scope":8967,"src":"5984:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8931,"name":"bytes","nodeType":"ElementaryTypeName","src":"5984:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5885:122:33"},"returnParameters":{"id":8934,"nodeType":"ParameterList","parameters":[],"src":"6017:0:33"},"scope":9093,"src":"5850:406:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9009,"nodeType":"Block","src":"7023:218:33","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8980,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8973,"src":"7037:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7040:4:33","memberName":"code","nodeType":"MemberAccess","src":"7037:7:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7045:6:33","memberName":"length","nodeType":"MemberAccess","src":"7037:14:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7055:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7037:19:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":8998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7123:38:33","subExpression":{"arguments":[{"id":8994,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8973,"src":"7145:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"7149:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8996,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"7156:4:33","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":8992,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8971,"src":"7124:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7130:14:33","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":7334,"src":"7124:20:33","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":8997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7124:37:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9007,"nodeType":"IfStatement","src":"7119:116:33","trueBody":{"id":9006,"nodeType":"Block","src":"7163:72:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9002,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8971,"src":"7217:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}],"id":9001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7209:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9000,"name":"address","nodeType":"ElementaryTypeName","src":"7209:7:33","typeDescriptions":{}}},"id":9003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7209:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8999,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8696,"src":"7184:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7184:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9005,"nodeType":"RevertStatement","src":"7177:47:33"}]}},"id":9008,"nodeType":"IfStatement","src":"7033:202:33","trueBody":{"id":8991,"nodeType":"Block","src":"7058:55:33","statements":[{"expression":{"arguments":[{"id":8986,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8971,"src":"7085:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},{"id":8987,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8973,"src":"7092:2:33","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8988,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"7096:5:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8985,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"7072:12:33","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7072:30:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8990,"nodeType":"ExpressionStatement","src":"7072:30:33"}]}}]},"documentation":{"id":8968,"nodeType":"StructuredDocumentation","src":"6262:654:33","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 Opposedly, 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":9010,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"6930:21:33","nodeType":"FunctionDefinition","parameters":{"id":8978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8971,"mutability":"mutable","name":"token","nameLocation":"6961:5:33","nodeType":"VariableDeclaration","scope":9010,"src":"6952:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"},"typeName":{"id":8970,"nodeType":"UserDefinedTypeName","pathNode":{"id":8969,"name":"IERC1363","nameLocations":["6952:8:33"],"nodeType":"IdentifierPath","referencedDeclaration":7335,"src":"6952:8:33"},"referencedDeclaration":7335,"src":"6952:8:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$7335","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":8973,"mutability":"mutable","name":"to","nameLocation":"6976:2:33","nodeType":"VariableDeclaration","scope":9010,"src":"6968:10:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8972,"name":"address","nodeType":"ElementaryTypeName","src":"6968:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8975,"mutability":"mutable","name":"value","nameLocation":"6988:5:33","nodeType":"VariableDeclaration","scope":9010,"src":"6980:13:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8974,"name":"uint256","nodeType":"ElementaryTypeName","src":"6980:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8977,"mutability":"mutable","name":"data","nameLocation":"7008:4:33","nodeType":"VariableDeclaration","scope":9010,"src":"6995:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8976,"name":"bytes","nodeType":"ElementaryTypeName","src":"6995:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6951:62:33"},"returnParameters":{"id":8979,"nodeType":"ParameterList","parameters":[],"src":"7023:0:33"},"scope":9093,"src":"6921:320:33","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9050,"nodeType":"Block","src":"7808:650:33","statements":[{"assignments":[9020],"declarations":[{"constant":false,"id":9020,"mutability":"mutable","name":"returnSize","nameLocation":"7826:10:33","nodeType":"VariableDeclaration","scope":9050,"src":"7818:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9019,"name":"uint256","nodeType":"ElementaryTypeName","src":"7818:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9021,"nodeType":"VariableDeclarationStatement","src":"7818:18:33"},{"assignments":[9023],"declarations":[{"constant":false,"id":9023,"mutability":"mutable","name":"returnValue","nameLocation":"7854:11:33","nodeType":"VariableDeclaration","scope":9050,"src":"7846:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9022,"name":"uint256","nodeType":"ElementaryTypeName","src":"7846:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9024,"nodeType":"VariableDeclarationStatement","src":"7846:19:33"},{"AST":{"nativeSrc":"7900:396:33","nodeType":"YulBlock","src":"7900:396:33","statements":[{"nativeSrc":"7914:75:33","nodeType":"YulVariableDeclaration","src":"7914:75:33","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"7934:3:33","nodeType":"YulIdentifier","src":"7934:3:33"},"nativeSrc":"7934:5:33","nodeType":"YulFunctionCall","src":"7934:5:33"},{"name":"token","nativeSrc":"7941:5:33","nodeType":"YulIdentifier","src":"7941:5:33"},{"kind":"number","nativeSrc":"7948:1:33","nodeType":"YulLiteral","src":"7948:1:33","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"7955:4:33","nodeType":"YulIdentifier","src":"7955:4:33"},{"kind":"number","nativeSrc":"7961:4:33","nodeType":"YulLiteral","src":"7961:4:33","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7951:3:33","nodeType":"YulIdentifier","src":"7951:3:33"},"nativeSrc":"7951:15:33","nodeType":"YulFunctionCall","src":"7951:15:33"},{"arguments":[{"name":"data","nativeSrc":"7974:4:33","nodeType":"YulIdentifier","src":"7974:4:33"}],"functionName":{"name":"mload","nativeSrc":"7968:5:33","nodeType":"YulIdentifier","src":"7968:5:33"},"nativeSrc":"7968:11:33","nodeType":"YulFunctionCall","src":"7968:11:33"},{"kind":"number","nativeSrc":"7981:1:33","nodeType":"YulLiteral","src":"7981:1:33","type":"","value":"0"},{"kind":"number","nativeSrc":"7984:4:33","nodeType":"YulLiteral","src":"7984:4:33","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"7929:4:33","nodeType":"YulIdentifier","src":"7929:4:33"},"nativeSrc":"7929:60:33","nodeType":"YulFunctionCall","src":"7929:60:33"},"variables":[{"name":"success","nativeSrc":"7918:7:33","nodeType":"YulTypedName","src":"7918:7:33","type":""}]},{"body":{"nativeSrc":"8050:157:33","nodeType":"YulBlock","src":"8050:157:33","statements":[{"nativeSrc":"8068:22:33","nodeType":"YulVariableDeclaration","src":"8068:22:33","value":{"arguments":[{"kind":"number","nativeSrc":"8085:4:33","nodeType":"YulLiteral","src":"8085:4:33","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8079:5:33","nodeType":"YulIdentifier","src":"8079:5:33"},"nativeSrc":"8079:11:33","nodeType":"YulFunctionCall","src":"8079:11:33"},"variables":[{"name":"ptr","nativeSrc":"8072:3:33","nodeType":"YulTypedName","src":"8072:3:33","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8122:3:33","nodeType":"YulIdentifier","src":"8122:3:33"},{"kind":"number","nativeSrc":"8127:1:33","nodeType":"YulLiteral","src":"8127:1:33","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8130:14:33","nodeType":"YulIdentifier","src":"8130:14:33"},"nativeSrc":"8130:16:33","nodeType":"YulFunctionCall","src":"8130:16:33"}],"functionName":{"name":"returndatacopy","nativeSrc":"8107:14:33","nodeType":"YulIdentifier","src":"8107:14:33"},"nativeSrc":"8107:40:33","nodeType":"YulFunctionCall","src":"8107:40:33"},"nativeSrc":"8107:40:33","nodeType":"YulExpressionStatement","src":"8107:40:33"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8171:3:33","nodeType":"YulIdentifier","src":"8171:3:33"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8176:14:33","nodeType":"YulIdentifier","src":"8176:14:33"},"nativeSrc":"8176:16:33","nodeType":"YulFunctionCall","src":"8176:16:33"}],"functionName":{"name":"revert","nativeSrc":"8164:6:33","nodeType":"YulIdentifier","src":"8164:6:33"},"nativeSrc":"8164:29:33","nodeType":"YulFunctionCall","src":"8164:29:33"},"nativeSrc":"8164:29:33","nodeType":"YulExpressionStatement","src":"8164:29:33"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"8041:7:33","nodeType":"YulIdentifier","src":"8041:7:33"}],"functionName":{"name":"iszero","nativeSrc":"8034:6:33","nodeType":"YulIdentifier","src":"8034:6:33"},"nativeSrc":"8034:15:33","nodeType":"YulFunctionCall","src":"8034:15:33"},"nativeSrc":"8031:176:33","nodeType":"YulIf","src":"8031:176:33"},{"nativeSrc":"8220:30:33","nodeType":"YulAssignment","src":"8220:30:33","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8234:14:33","nodeType":"YulIdentifier","src":"8234:14:33"},"nativeSrc":"8234:16:33","nodeType":"YulFunctionCall","src":"8234:16:33"},"variableNames":[{"name":"returnSize","nativeSrc":"8220:10:33","nodeType":"YulIdentifier","src":"8220:10:33"}]},{"nativeSrc":"8263:23:33","nodeType":"YulAssignment","src":"8263:23:33","value":{"arguments":[{"kind":"number","nativeSrc":"8284:1:33","nodeType":"YulLiteral","src":"8284:1:33","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"8278:5:33","nodeType":"YulIdentifier","src":"8278:5:33"},"nativeSrc":"8278:8:33","nodeType":"YulFunctionCall","src":"8278:8:33"},"variableNames":[{"name":"returnValue","nativeSrc":"8263:11:33","nodeType":"YulIdentifier","src":"8263:11:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9016,"isOffset":false,"isSlot":false,"src":"7955:4:33","valueSize":1},{"declaration":9016,"isOffset":false,"isSlot":false,"src":"7974:4:33","valueSize":1},{"declaration":9020,"isOffset":false,"isSlot":false,"src":"8220:10:33","valueSize":1},{"declaration":9023,"isOffset":false,"isSlot":false,"src":"8263:11:33","valueSize":1},{"declaration":9014,"isOffset":false,"isSlot":false,"src":"7941:5:33","valueSize":1}],"flags":["memory-safe"],"id":9025,"nodeType":"InlineAssembly","src":"7875:421:33"},{"condition":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9026,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9020,"src":"8310:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8324:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8310:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9037,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9023,"src":"8362:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":9038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8377:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8362:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8310:68:33","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":9031,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"8336:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":9030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8328:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9029,"name":"address","nodeType":"ElementaryTypeName","src":"8328:7:33","typeDescriptions":{}}},"id":9032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8328:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8343:4:33","memberName":"code","nodeType":"MemberAccess","src":"8328:19:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8348:6:33","memberName":"length","nodeType":"MemberAccess","src":"8328:26:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8358:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8328:31:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9049,"nodeType":"IfStatement","src":"8306:146:33","trueBody":{"id":9048,"nodeType":"Block","src":"8380:72:33","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":9044,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9014,"src":"8434:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":9043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8426:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9042,"name":"address","nodeType":"ElementaryTypeName","src":"8426:7:33","typeDescriptions":{}}},"id":9045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8426:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9041,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8696,"src":"8401:24:33","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8401:40:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9047,"nodeType":"RevertStatement","src":"8394:47:33"}]}}]},"documentation":{"id":9011,"nodeType":"StructuredDocumentation","src":"7247:486:33","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return 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 data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements."},"id":9051,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"7747:19:33","nodeType":"FunctionDefinition","parameters":{"id":9017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9014,"mutability":"mutable","name":"token","nameLocation":"7774:5:33","nodeType":"VariableDeclaration","scope":9051,"src":"7767:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":9013,"nodeType":"UserDefinedTypeName","pathNode":{"id":9012,"name":"IERC20","nameLocations":["7767:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"7767:6:33"},"referencedDeclaration":8656,"src":"7767:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9016,"mutability":"mutable","name":"data","nameLocation":"7794:4:33","nodeType":"VariableDeclaration","scope":9051,"src":"7781:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9015,"name":"bytes","nodeType":"ElementaryTypeName","src":"7781:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7766:33:33"},"returnParameters":{"id":9018,"nodeType":"ParameterList","parameters":[],"src":"7808:0:33"},"scope":9093,"src":"7738:720:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9091,"nodeType":"Block","src":"9049:391:33","statements":[{"assignments":[9063],"declarations":[{"constant":false,"id":9063,"mutability":"mutable","name":"success","nameLocation":"9064:7:33","nodeType":"VariableDeclaration","scope":9091,"src":"9059:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9062,"name":"bool","nodeType":"ElementaryTypeName","src":"9059:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":9064,"nodeType":"VariableDeclarationStatement","src":"9059:12:33"},{"assignments":[9066],"declarations":[{"constant":false,"id":9066,"mutability":"mutable","name":"returnSize","nameLocation":"9089:10:33","nodeType":"VariableDeclaration","scope":9091,"src":"9081:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9065,"name":"uint256","nodeType":"ElementaryTypeName","src":"9081:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9067,"nodeType":"VariableDeclarationStatement","src":"9081:18:33"},{"assignments":[9069],"declarations":[{"constant":false,"id":9069,"mutability":"mutable","name":"returnValue","nameLocation":"9117:11:33","nodeType":"VariableDeclaration","scope":9091,"src":"9109:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9068,"name":"uint256","nodeType":"ElementaryTypeName","src":"9109:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9070,"nodeType":"VariableDeclarationStatement","src":"9109:19:33"},{"AST":{"nativeSrc":"9163:174:33","nodeType":"YulBlock","src":"9163:174:33","statements":[{"nativeSrc":"9177:71:33","nodeType":"YulAssignment","src":"9177:71:33","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"9193:3:33","nodeType":"YulIdentifier","src":"9193:3:33"},"nativeSrc":"9193:5:33","nodeType":"YulFunctionCall","src":"9193:5:33"},{"name":"token","nativeSrc":"9200:5:33","nodeType":"YulIdentifier","src":"9200:5:33"},{"kind":"number","nativeSrc":"9207:1:33","nodeType":"YulLiteral","src":"9207:1:33","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"9214:4:33","nodeType":"YulIdentifier","src":"9214:4:33"},{"kind":"number","nativeSrc":"9220:4:33","nodeType":"YulLiteral","src":"9220:4:33","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9210:3:33","nodeType":"YulIdentifier","src":"9210:3:33"},"nativeSrc":"9210:15:33","nodeType":"YulFunctionCall","src":"9210:15:33"},{"arguments":[{"name":"data","nativeSrc":"9233:4:33","nodeType":"YulIdentifier","src":"9233:4:33"}],"functionName":{"name":"mload","nativeSrc":"9227:5:33","nodeType":"YulIdentifier","src":"9227:5:33"},"nativeSrc":"9227:11:33","nodeType":"YulFunctionCall","src":"9227:11:33"},{"kind":"number","nativeSrc":"9240:1:33","nodeType":"YulLiteral","src":"9240:1:33","type":"","value":"0"},{"kind":"number","nativeSrc":"9243:4:33","nodeType":"YulLiteral","src":"9243:4:33","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"9188:4:33","nodeType":"YulIdentifier","src":"9188:4:33"},"nativeSrc":"9188:60:33","nodeType":"YulFunctionCall","src":"9188:60:33"},"variableNames":[{"name":"success","nativeSrc":"9177:7:33","nodeType":"YulIdentifier","src":"9177:7:33"}]},{"nativeSrc":"9261:30:33","nodeType":"YulAssignment","src":"9261:30:33","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9275:14:33","nodeType":"YulIdentifier","src":"9275:14:33"},"nativeSrc":"9275:16:33","nodeType":"YulFunctionCall","src":"9275:16:33"},"variableNames":[{"name":"returnSize","nativeSrc":"9261:10:33","nodeType":"YulIdentifier","src":"9261:10:33"}]},{"nativeSrc":"9304:23:33","nodeType":"YulAssignment","src":"9304:23:33","value":{"arguments":[{"kind":"number","nativeSrc":"9325:1:33","nodeType":"YulLiteral","src":"9325:1:33","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"9319:5:33","nodeType":"YulIdentifier","src":"9319:5:33"},"nativeSrc":"9319:8:33","nodeType":"YulFunctionCall","src":"9319:8:33"},"variableNames":[{"name":"returnValue","nativeSrc":"9304:11:33","nodeType":"YulIdentifier","src":"9304:11:33"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9057,"isOffset":false,"isSlot":false,"src":"9214:4:33","valueSize":1},{"declaration":9057,"isOffset":false,"isSlot":false,"src":"9233:4:33","valueSize":1},{"declaration":9066,"isOffset":false,"isSlot":false,"src":"9261:10:33","valueSize":1},{"declaration":9069,"isOffset":false,"isSlot":false,"src":"9304:11:33","valueSize":1},{"declaration":9063,"isOffset":false,"isSlot":false,"src":"9177:7:33","valueSize":1},{"declaration":9055,"isOffset":false,"isSlot":false,"src":"9200:5:33","valueSize":1}],"flags":["memory-safe"],"id":9071,"nodeType":"InlineAssembly","src":"9138:199:33"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9072,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9063,"src":"9353:7:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9073,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9066,"src":"9365:10:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9379:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9365:15:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9084,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"9416:11:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":9085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9431:1:33","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9416:16:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9365:67:33","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":9078,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9055,"src":"9391:5:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":9077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9383:7:33","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9076,"name":"address","nodeType":"ElementaryTypeName","src":"9383:7:33","typeDescriptions":{}}},"id":9079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9383:14:33","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9398:4:33","memberName":"code","nodeType":"MemberAccess","src":"9383:19:33","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9403:6:33","memberName":"length","nodeType":"MemberAccess","src":"9383:26:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9412:1:33","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9383:30:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":9088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9364:69:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9353:80:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9061,"id":9090,"nodeType":"Return","src":"9346:87:33"}]},"documentation":{"id":9052,"nodeType":"StructuredDocumentation","src":"8464:491:33","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return 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 data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead."},"id":9092,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"8969:23:33","nodeType":"FunctionDefinition","parameters":{"id":9058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9055,"mutability":"mutable","name":"token","nameLocation":"9000:5:33","nodeType":"VariableDeclaration","scope":9092,"src":"8993:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":9054,"nodeType":"UserDefinedTypeName","pathNode":{"id":9053,"name":"IERC20","nameLocations":["8993:6:33"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"8993:6:33"},"referencedDeclaration":8656,"src":"8993:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9057,"mutability":"mutable","name":"data","nameLocation":"9020:4:33","nodeType":"VariableDeclaration","scope":9092,"src":"9007:17:33","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9056,"name":"bytes","nodeType":"ElementaryTypeName","src":"9007:5:33","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8992:33:33"},"returnParameters":{"id":9061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9092,"src":"9043:4:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9059,"name":"bool","nodeType":"ElementaryTypeName","src":"9043:4:33","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9042:6:33"},"scope":9093,"src":"8960:480:33","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":9094,"src":"750:8692:33","usedErrors":[8696,8705],"usedEvents":[]}],"src":"115:9328:33"},"id":33},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[9352],"Errors":[9404]},"id":9353,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9095,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:34"},{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","id":9097,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9353,"sourceUnit":9405,"src":"127:36:34","symbolAliases":[{"foreign":{"id":9096,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"135:6:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":9098,"nodeType":"StructuredDocumentation","src":"165:67:34","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":9352,"linearizedBaseContracts":[9352],"name":"Address","nameLocation":"241:7:34","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9099,"nodeType":"StructuredDocumentation","src":"255:75:34","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":9103,"name":"AddressEmptyCode","nameLocation":"341:16:34","nodeType":"ErrorDefinition","parameters":{"id":9102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9101,"mutability":"mutable","name":"target","nameLocation":"366:6:34","nodeType":"VariableDeclaration","scope":9103,"src":"358:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9100,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:34"},"src":"335:39:34"},{"body":{"id":9149,"nodeType":"Block","src":"1361:278:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9113,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}],"id":9112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9111,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:34","typeDescriptions":{}}},"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:34","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9116,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"1399:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9130,"nodeType":"IfStatement","src":"1371:125:34","trueBody":{"id":9129,"nodeType":"Block","src":"1407:89:34","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":9123,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}],"id":9122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9121,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:34","typeDescriptions":{}}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:34","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9126,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"1478:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9118,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"1428:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9404_$","typeString":"type(library Errors)"}},"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:34","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":9392,"src":"1428:26:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":9127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9128,"nodeType":"RevertStatement","src":"1421:64:34"}]}},{"assignments":[9132,null],"declarations":[{"constant":false,"id":9132,"mutability":"mutable","name":"success","nameLocation":"1512:7:34","nodeType":"VariableDeclaration","scope":9149,"src":"1507:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9131,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":9139,"initialValue":{"arguments":[{"hexValue":"","id":9137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1555:2:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":9133,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"1525:9:34","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":9134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1535:4:34","memberName":"call","nodeType":"MemberAccess","src":"1525:14:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9135,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"1547:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1525:29:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1525:33:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:52:34"},{"condition":{"id":9141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1572:8:34","subExpression":{"id":9140,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"1573:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9148,"nodeType":"IfStatement","src":"1568:65:34","trueBody":{"id":9147,"nodeType":"Block","src":"1582:51:34","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9142,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"1603:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9404_$","typeString":"type(library Errors)"}},"id":9144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1610:10:34","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":9395,"src":"1603:17:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1603:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9146,"nodeType":"RevertStatement","src":"1596:26:34"}]}}]},"documentation":{"id":9104,"nodeType":"StructuredDocumentation","src":"380:905:34","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":9150,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:34","nodeType":"FunctionDefinition","parameters":{"id":9109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9106,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:34","nodeType":"VariableDeclaration","scope":9150,"src":"1309:25:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":9105,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:34","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":9108,"mutability":"mutable","name":"amount","nameLocation":"1344:6:34","nodeType":"VariableDeclaration","scope":9150,"src":"1336:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:34"},"returnParameters":{"id":9110,"nodeType":"ParameterList","parameters":[],"src":"1361:0:34"},"scope":9352,"src":"1290:349:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9166,"nodeType":"Block","src":"2573:62:34","statements":[{"expression":{"arguments":[{"id":9161,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9153,"src":"2612:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9162,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9155,"src":"2620:4:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":9163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2626:1:34","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":9160,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9217,"src":"2590:21:34","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":9164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:38:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9159,"id":9165,"nodeType":"Return","src":"2583:45:34"}]},"documentation":{"id":9151,"nodeType":"StructuredDocumentation","src":"1645:834:34","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":9167,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2493:12:34","nodeType":"FunctionDefinition","parameters":{"id":9156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9153,"mutability":"mutable","name":"target","nameLocation":"2514:6:34","nodeType":"VariableDeclaration","scope":9167,"src":"2506:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9152,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9155,"mutability":"mutable","name":"data","nameLocation":"2535:4:34","nodeType":"VariableDeclaration","scope":9167,"src":"2522:17:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9154,"name":"bytes","nodeType":"ElementaryTypeName","src":"2522:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2505:35:34"},"returnParameters":{"id":9159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9158,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9167,"src":"2559:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9157,"name":"bytes","nodeType":"ElementaryTypeName","src":"2559:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2558:14:34"},"scope":9352,"src":"2484:151:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9216,"nodeType":"Block","src":"3072:294:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":9181,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3094:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}],"id":9180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3086:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9179,"name":"address","nodeType":"ElementaryTypeName","src":"3086:7:34","typeDescriptions":{}}},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3086:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3100:7:34","memberName":"balance","nodeType":"MemberAccess","src":"3086:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9174,"src":"3110:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3086:29:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9198,"nodeType":"IfStatement","src":"3082:123:34","trueBody":{"id":9197,"nodeType":"Block","src":"3117:88:34","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":9191,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3173:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$9352","typeString":"library Address"}],"id":9190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3165:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9189,"name":"address","nodeType":"ElementaryTypeName","src":"3165:7:34","typeDescriptions":{}}},"id":9192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3165:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3179:7:34","memberName":"balance","nodeType":"MemberAccess","src":"3165:21:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9194,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9174,"src":"3188:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9186,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"3138:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9404_$","typeString":"type(library Errors)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3145:19:34","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":9392,"src":"3138:26:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":9195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3138:56:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9196,"nodeType":"RevertStatement","src":"3131:63:34"}]}},{"assignments":[9200,9202],"declarations":[{"constant":false,"id":9200,"mutability":"mutable","name":"success","nameLocation":"3220:7:34","nodeType":"VariableDeclaration","scope":9216,"src":"3215:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9199,"name":"bool","nodeType":"ElementaryTypeName","src":"3215:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9202,"mutability":"mutable","name":"returndata","nameLocation":"3242:10:34","nodeType":"VariableDeclaration","scope":9216,"src":"3229:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9201,"name":"bytes","nodeType":"ElementaryTypeName","src":"3229:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9209,"initialValue":{"arguments":[{"id":9207,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9172,"src":"3282:4:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9203,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"3256:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3263:4:34","memberName":"call","nodeType":"MemberAccess","src":"3256:11:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":9205,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9174,"src":"3275:5:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3256:25:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3256:31:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3214:73:34"},{"expression":{"arguments":[{"id":9211,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"3331:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9212,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9200,"src":"3339:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9213,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"3348:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9210,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9309,"src":"3304:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3304:55:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9178,"id":9215,"nodeType":"Return","src":"3297:62:34"}]},"documentation":{"id":9168,"nodeType":"StructuredDocumentation","src":"2641:313:34","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":9217,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2968:21:34","nodeType":"FunctionDefinition","parameters":{"id":9175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9170,"mutability":"mutable","name":"target","nameLocation":"2998:6:34","nodeType":"VariableDeclaration","scope":9217,"src":"2990:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9169,"name":"address","nodeType":"ElementaryTypeName","src":"2990:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9172,"mutability":"mutable","name":"data","nameLocation":"3019:4:34","nodeType":"VariableDeclaration","scope":9217,"src":"3006:17:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9171,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9174,"mutability":"mutable","name":"value","nameLocation":"3033:5:34","nodeType":"VariableDeclaration","scope":9217,"src":"3025:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9173,"name":"uint256","nodeType":"ElementaryTypeName","src":"3025:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2989:50:34"},"returnParameters":{"id":9178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9217,"src":"3058:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9176,"name":"bytes","nodeType":"ElementaryTypeName","src":"3058:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3057:14:34"},"scope":9352,"src":"2959:407:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9242,"nodeType":"Block","src":"3605:154:34","statements":[{"assignments":[9228,9230],"declarations":[{"constant":false,"id":9228,"mutability":"mutable","name":"success","nameLocation":"3621:7:34","nodeType":"VariableDeclaration","scope":9242,"src":"3616:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9227,"name":"bool","nodeType":"ElementaryTypeName","src":"3616:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9230,"mutability":"mutable","name":"returndata","nameLocation":"3643:10:34","nodeType":"VariableDeclaration","scope":9242,"src":"3630:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9229,"name":"bytes","nodeType":"ElementaryTypeName","src":"3630:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9235,"initialValue":{"arguments":[{"id":9233,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9222,"src":"3675:4:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9231,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9220,"src":"3657:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3664:10:34","memberName":"staticcall","nodeType":"MemberAccess","src":"3657:17:34","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":9234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:23:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3615:65:34"},{"expression":{"arguments":[{"id":9237,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9220,"src":"3724:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9238,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9228,"src":"3732:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9239,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9230,"src":"3741:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9236,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9309,"src":"3697:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":9240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3697:55:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9226,"id":9241,"nodeType":"Return","src":"3690:62:34"}]},"documentation":{"id":9218,"nodeType":"StructuredDocumentation","src":"3372:128:34","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":9243,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3514:18:34","nodeType":"FunctionDefinition","parameters":{"id":9223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9220,"mutability":"mutable","name":"target","nameLocation":"3541:6:34","nodeType":"VariableDeclaration","scope":9243,"src":"3533:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9219,"name":"address","nodeType":"ElementaryTypeName","src":"3533:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9222,"mutability":"mutable","name":"data","nameLocation":"3562:4:34","nodeType":"VariableDeclaration","scope":9243,"src":"3549:17:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9221,"name":"bytes","nodeType":"ElementaryTypeName","src":"3549:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3532:35:34"},"returnParameters":{"id":9226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9243,"src":"3591:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9224,"name":"bytes","nodeType":"ElementaryTypeName","src":"3591:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3590:14:34"},"scope":9352,"src":"3505:254:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9268,"nodeType":"Block","src":"3997:156:34","statements":[{"assignments":[9254,9256],"declarations":[{"constant":false,"id":9254,"mutability":"mutable","name":"success","nameLocation":"4013:7:34","nodeType":"VariableDeclaration","scope":9268,"src":"4008:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9253,"name":"bool","nodeType":"ElementaryTypeName","src":"4008:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9256,"mutability":"mutable","name":"returndata","nameLocation":"4035:10:34","nodeType":"VariableDeclaration","scope":9268,"src":"4022:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9255,"name":"bytes","nodeType":"ElementaryTypeName","src":"4022:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9261,"initialValue":{"arguments":[{"id":9259,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"4069:4:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9257,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4049:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4056:12:34","memberName":"delegatecall","nodeType":"MemberAccess","src":"4049:19:34","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":9260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:25:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4007:67:34"},{"expression":{"arguments":[{"id":9263,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9246,"src":"4118:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9264,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9254,"src":"4126:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9265,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9256,"src":"4135:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9262,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9309,"src":"4091:26:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory) view returns (bytes memory)"}},"id":9266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4091:55:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9252,"id":9267,"nodeType":"Return","src":"4084:62:34"}]},"documentation":{"id":9244,"nodeType":"StructuredDocumentation","src":"3765:130:34","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":9269,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3909:20:34","nodeType":"FunctionDefinition","parameters":{"id":9249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9246,"mutability":"mutable","name":"target","nameLocation":"3938:6:34","nodeType":"VariableDeclaration","scope":9269,"src":"3930:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9245,"name":"address","nodeType":"ElementaryTypeName","src":"3930:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9248,"mutability":"mutable","name":"data","nameLocation":"3959:4:34","nodeType":"VariableDeclaration","scope":9269,"src":"3946:17:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9247,"name":"bytes","nodeType":"ElementaryTypeName","src":"3946:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3929:35:34"},"returnParameters":{"id":9252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9251,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9269,"src":"3983:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9250,"name":"bytes","nodeType":"ElementaryTypeName","src":"3983:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3982:14:34"},"scope":9352,"src":"3900:253:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9308,"nodeType":"Block","src":"4579:424:34","statements":[{"condition":{"id":9282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4593:8:34","subExpression":{"id":9281,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9274,"src":"4594:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9306,"nodeType":"Block","src":"4653:344:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9288,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4841:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4852:6:34","memberName":"length","nodeType":"MemberAccess","src":"4841:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4862:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4841:22:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9292,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"4867:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4874:4:34","memberName":"code","nodeType":"MemberAccess","src":"4867:11:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4879:6:34","memberName":"length","nodeType":"MemberAccess","src":"4867:18:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4889:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4867:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4841:49:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9303,"nodeType":"IfStatement","src":"4837:119:34","trueBody":{"id":9302,"nodeType":"Block","src":"4892:64:34","statements":[{"errorCall":{"arguments":[{"id":9299,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9272,"src":"4934:6:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9298,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"4917:16:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":9300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4917:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9301,"nodeType":"RevertStatement","src":"4910:31:34"}]}},{"expression":{"id":9304,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4976:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9280,"id":9305,"nodeType":"Return","src":"4969:17:34"}]},"id":9307,"nodeType":"IfStatement","src":"4589:408:34","trueBody":{"id":9287,"nodeType":"Block","src":"4603:44:34","statements":[{"expression":{"arguments":[{"id":9284,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9276,"src":"4625:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9283,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9351,"src":"4617:7:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":9285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4617:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9286,"nodeType":"ExpressionStatement","src":"4617:19:34"}]}}]},"documentation":{"id":9270,"nodeType":"StructuredDocumentation","src":"4159:257:34","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."},"id":9309,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4430:26:34","nodeType":"FunctionDefinition","parameters":{"id":9277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9272,"mutability":"mutable","name":"target","nameLocation":"4474:6:34","nodeType":"VariableDeclaration","scope":9309,"src":"4466:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9271,"name":"address","nodeType":"ElementaryTypeName","src":"4466:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9274,"mutability":"mutable","name":"success","nameLocation":"4495:7:34","nodeType":"VariableDeclaration","scope":9309,"src":"4490:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9273,"name":"bool","nodeType":"ElementaryTypeName","src":"4490:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9276,"mutability":"mutable","name":"returndata","nameLocation":"4525:10:34","nodeType":"VariableDeclaration","scope":9309,"src":"4512:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9275,"name":"bytes","nodeType":"ElementaryTypeName","src":"4512:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4456:85:34"},"returnParameters":{"id":9280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9309,"src":"4565:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9278,"name":"bytes","nodeType":"ElementaryTypeName","src":"4565:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4564:14:34"},"scope":9352,"src":"4421:582:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9330,"nodeType":"Block","src":"5307:122:34","statements":[{"condition":{"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5321:8:34","subExpression":{"id":9319,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"5322:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9328,"nodeType":"Block","src":"5381:42:34","statements":[{"expression":{"id":9326,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9314,"src":"5402:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9318,"id":9327,"nodeType":"Return","src":"5395:17:34"}]},"id":9329,"nodeType":"IfStatement","src":"5317:106:34","trueBody":{"id":9325,"nodeType":"Block","src":"5331:44:34","statements":[{"expression":{"arguments":[{"id":9322,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9314,"src":"5353:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9321,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9351,"src":"5345:7:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5345:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9324,"nodeType":"ExpressionStatement","src":"5345:19:34"}]}}]},"documentation":{"id":9310,"nodeType":"StructuredDocumentation","src":"5009:191:34","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":9331,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5214:16:34","nodeType":"FunctionDefinition","parameters":{"id":9315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9312,"mutability":"mutable","name":"success","nameLocation":"5236:7:34","nodeType":"VariableDeclaration","scope":9331,"src":"5231:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9311,"name":"bool","nodeType":"ElementaryTypeName","src":"5231:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9314,"mutability":"mutable","name":"returndata","nameLocation":"5258:10:34","nodeType":"VariableDeclaration","scope":9331,"src":"5245:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9313,"name":"bytes","nodeType":"ElementaryTypeName","src":"5245:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5230:39:34"},"returnParameters":{"id":9318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9331,"src":"5293:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9316,"name":"bytes","nodeType":"ElementaryTypeName","src":"5293:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5292:14:34"},"scope":9352,"src":"5205:224:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9350,"nodeType":"Block","src":"5598:432:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9337,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9334,"src":"5674:10:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:6:34","memberName":"length","nodeType":"MemberAccess","src":"5674:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5694:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5674:21:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9348,"nodeType":"Block","src":"5973:51:34","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9343,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"5994:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$9404_$","typeString":"type(library Errors)"}},"id":9345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:10:34","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":9395,"src":"5994:17:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":9346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5994:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":9347,"nodeType":"RevertStatement","src":"5987:26:34"}]},"id":9349,"nodeType":"IfStatement","src":"5670:354:34","trueBody":{"id":9342,"nodeType":"Block","src":"5697:270:34","statements":[{"AST":{"nativeSrc":"5824:133:34","nodeType":"YulBlock","src":"5824:133:34","statements":[{"nativeSrc":"5842:40:34","nodeType":"YulVariableDeclaration","src":"5842:40:34","value":{"arguments":[{"name":"returndata","nativeSrc":"5871:10:34","nodeType":"YulIdentifier","src":"5871:10:34"}],"functionName":{"name":"mload","nativeSrc":"5865:5:34","nodeType":"YulIdentifier","src":"5865:5:34"},"nativeSrc":"5865:17:34","nodeType":"YulFunctionCall","src":"5865:17:34"},"variables":[{"name":"returndata_size","nativeSrc":"5846:15:34","nodeType":"YulTypedName","src":"5846:15:34","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5910:2:34","nodeType":"YulLiteral","src":"5910:2:34","type":"","value":"32"},{"name":"returndata","nativeSrc":"5914:10:34","nodeType":"YulIdentifier","src":"5914:10:34"}],"functionName":{"name":"add","nativeSrc":"5906:3:34","nodeType":"YulIdentifier","src":"5906:3:34"},"nativeSrc":"5906:19:34","nodeType":"YulFunctionCall","src":"5906:19:34"},{"name":"returndata_size","nativeSrc":"5927:15:34","nodeType":"YulIdentifier","src":"5927:15:34"}],"functionName":{"name":"revert","nativeSrc":"5899:6:34","nodeType":"YulIdentifier","src":"5899:6:34"},"nativeSrc":"5899:44:34","nodeType":"YulFunctionCall","src":"5899:44:34"},"nativeSrc":"5899:44:34","nodeType":"YulExpressionStatement","src":"5899:44:34"}]},"evmVersion":"cancun","externalReferences":[{"declaration":9334,"isOffset":false,"isSlot":false,"src":"5871:10:34","valueSize":1},{"declaration":9334,"isOffset":false,"isSlot":false,"src":"5914:10:34","valueSize":1}],"flags":["memory-safe"],"id":9341,"nodeType":"InlineAssembly","src":"5799:158:34"}]}}]},"documentation":{"id":9332,"nodeType":"StructuredDocumentation","src":"5435:103:34","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"id":9351,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5552:7:34","nodeType":"FunctionDefinition","parameters":{"id":9335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9334,"mutability":"mutable","name":"returndata","nameLocation":"5573:10:34","nodeType":"VariableDeclaration","scope":9351,"src":"5560:23:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9333,"name":"bytes","nodeType":"ElementaryTypeName","src":"5560:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5559:25:34"},"returnParameters":{"id":9336,"nodeType":"ParameterList","parameters":[],"src":"5598:0:34"},"scope":9352,"src":"5543:487:34","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":9353,"src":"233:5799:34","usedErrors":[9103],"usedEvents":[]}],"src":"101:5932:34"},"id":34},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[9382]},"id":9383,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9354,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:35"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":9355,"nodeType":"StructuredDocumentation","src":"127:496:35","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":9382,"linearizedBaseContracts":[9382],"name":"Context","nameLocation":"642:7:35","nodeType":"ContractDefinition","nodes":[{"body":{"id":9363,"nodeType":"Block","src":"718:34:35","statements":[{"expression":{"expression":{"id":9360,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:35","memberName":"sender","nodeType":"MemberAccess","src":"735:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":9359,"id":9362,"nodeType":"Return","src":"728:17:35"}]},"id":9364,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:35","nodeType":"FunctionDefinition","parameters":{"id":9356,"nodeType":"ParameterList","parameters":[],"src":"675:2:35"},"returnParameters":{"id":9359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9364,"src":"709:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9357,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:35"},"scope":9382,"src":"656:96:35","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9372,"nodeType":"Block","src":"825:32:35","statements":[{"expression":{"expression":{"id":9369,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:35","memberName":"data","nodeType":"MemberAccess","src":"842:8:35","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":9368,"id":9371,"nodeType":"Return","src":"835:15:35"}]},"id":9373,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:35","nodeType":"FunctionDefinition","parameters":{"id":9365,"nodeType":"ParameterList","parameters":[],"src":"775:2:35"},"returnParameters":{"id":9368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9373,"src":"809:14:35","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":9366,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:35","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:35"},"scope":9382,"src":"758:99:35","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":9380,"nodeType":"Block","src":"935:25:35","statements":[{"expression":{"hexValue":"30","id":9378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9377,"id":9379,"nodeType":"Return","src":"945:8:35"}]},"id":9381,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:35","nodeType":"FunctionDefinition","parameters":{"id":9374,"nodeType":"ParameterList","parameters":[],"src":"892:2:35"},"returnParameters":{"id":9377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9381,"src":"926:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9375,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:35"},"scope":9382,"src":"863:97:35","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":9383,"src":"624:338:35","usedErrors":[],"usedEvents":[]}],"src":"101:862:35"},"id":35},"@openzeppelin/contracts/utils/Errors.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","exportedSymbols":{"Errors":[9404]},"id":9405,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9384,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"100:24:36"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":9385,"nodeType":"StructuredDocumentation","src":"126:284:36","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":9404,"linearizedBaseContracts":[9404],"name":"Errors","nameLocation":"419:6:36","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9386,"nodeType":"StructuredDocumentation","src":"432:94:36","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","id":9392,"name":"InsufficientBalance","nameLocation":"537:19:36","nodeType":"ErrorDefinition","parameters":{"id":9391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9388,"mutability":"mutable","name":"balance","nameLocation":"565:7:36","nodeType":"VariableDeclaration","scope":9392,"src":"557:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9387,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9390,"mutability":"mutable","name":"needed","nameLocation":"582:6:36","nodeType":"VariableDeclaration","scope":9392,"src":"574:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9389,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:36"},"src":"531:59:36"},{"documentation":{"id":9393,"nodeType":"StructuredDocumentation","src":"596:89:36","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","id":9395,"name":"FailedCall","nameLocation":"696:10:36","nodeType":"ErrorDefinition","parameters":{"id":9394,"nodeType":"ParameterList","parameters":[],"src":"706:2:36"},"src":"690:19:36"},{"documentation":{"id":9396,"nodeType":"StructuredDocumentation","src":"715:46:36","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","id":9398,"name":"FailedDeployment","nameLocation":"772:16:36","nodeType":"ErrorDefinition","parameters":{"id":9397,"nodeType":"ParameterList","parameters":[],"src":"788:2:36"},"src":"766:25:36"},{"documentation":{"id":9399,"nodeType":"StructuredDocumentation","src":"797:58:36","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","id":9403,"name":"MissingPrecompile","nameLocation":"866:17:36","nodeType":"ErrorDefinition","parameters":{"id":9402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9403,"src":"884:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9400,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:36"},"src":"860:33:36"}],"scope":9405,"src":"411:484:36","usedErrors":[9392,9395,9398,9403],"usedEvents":[]}],"src":"100:796:36"},"id":36},"@openzeppelin/contracts/utils/Multicall.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Multicall.sol","exportedSymbols":{"Address":[9352],"Context":[9382],"Multicall":[9491]},"id":9492,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9406,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:37"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"./Address.sol","id":9408,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9492,"sourceUnit":9353,"src":"129:38:37","symbolAliases":[{"foreign":{"id":9407,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"137:7:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"./Context.sol","id":9410,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9492,"sourceUnit":9383,"src":"168:38:37","symbolAliases":[{"foreign":{"id":9409,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9382,"src":"176:7:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9412,"name":"Context","nameLocations":["1037:7:37"],"nodeType":"IdentifierPath","referencedDeclaration":9382,"src":"1037:7:37"},"id":9413,"nodeType":"InheritanceSpecifier","src":"1037:7:37"}],"canonicalName":"Multicall","contractDependencies":[],"contractKind":"contract","documentation":{"id":9411,"nodeType":"StructuredDocumentation","src":"208:797:37","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 {_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 {_msgSender} are not propagated to subcalls."},"fullyImplemented":true,"id":9491,"linearizedBaseContracts":[9491,9382],"name":"Multicall","nameLocation":"1024:9:37","nodeType":"ContractDefinition","nodes":[{"body":{"id":9489,"nodeType":"Block","src":"1300:392:37","statements":[{"assignments":[9424],"declarations":[{"constant":false,"id":9424,"mutability":"mutable","name":"context","nameLocation":"1323:7:37","nodeType":"VariableDeclaration","scope":9489,"src":"1310:20:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9423,"name":"bytes","nodeType":"ElementaryTypeName","src":"1310:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9444,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9425,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1333:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1337:6:37","memberName":"sender","nodeType":"MemberAccess","src":"1333:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9427,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9364,"src":"1347:10:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1347:12:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1333:26:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"baseExpression":{"expression":{"id":9434,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1401:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1405:4:37","memberName":"data","nodeType":"MemberAccess","src":"1401:8:37","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":9442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1401:51:37","startExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":9436,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1410:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1414:4:37","memberName":"data","nodeType":"MemberAccess","src":"1410:8:37","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":9438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1419:6:37","memberName":"length","nodeType":"MemberAccess","src":"1410:15:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":9439,"name":"_contextSuffixLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9381,"src":"1428:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1410:40:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"id":9443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1333:119:37","trueExpression":{"arguments":[{"hexValue":"30","id":9432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1384:1:37","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":9431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1374:9:37","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":9430,"name":"bytes","nodeType":"ElementaryTypeName","src":"1378:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":9433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1374:12:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1310:142:37"},{"expression":{"id":9452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9445,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"1463:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9449,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"1485:4:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1490:6:37","memberName":"length","nodeType":"MemberAccess","src":"1485:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1473:11:37","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":9446,"name":"bytes","nodeType":"ElementaryTypeName","src":"1477:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9447,"nodeType":"ArrayTypeName","src":"1477:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":9451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1473:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"1463:34:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":9453,"nodeType":"ExpressionStatement","src":"1463:34:37"},{"body":{"id":9485,"nodeType":"Block","src":"1549:113:37","statements":[{"expression":{"id":9483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9465,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"1563:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":9467,"indexExpression":{"id":9466,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"1571:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1563:10:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9472,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1613:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_Multicall_$9491","typeString":"contract Multicall"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Multicall_$9491","typeString":"contract Multicall"}],"id":9471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1605:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9470,"name":"address","nodeType":"ElementaryTypeName","src":"1605:7:37","typeDescriptions":{}}},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1605:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"id":9477,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"1633:4:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9479,"indexExpression":{"id":9478,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"1638:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1633:7:37","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":9480,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9424,"src":"1642:7:37","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":9475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1620:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":9474,"name":"bytes","nodeType":"ElementaryTypeName","src":"1620:5:37","typeDescriptions":{}}},"id":9476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1626:6:37","memberName":"concat","nodeType":"MemberAccess","src":"1620:12:37","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1620:30:37","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":9468,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"1576:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$9352_$","typeString":"type(library Address)"}},"id":9469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1584:20:37","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"1576:28:37","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":9482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1576:75:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1563:88:37","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9484,"nodeType":"ExpressionStatement","src":"1563:88:37"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9458,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"1527:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9459,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"1531:4:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":9460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1536:6:37","memberName":"length","nodeType":"MemberAccess","src":"1531:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1527:15:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9486,"initializationExpression":{"assignments":[9455],"declarations":[{"constant":false,"id":9455,"mutability":"mutable","name":"i","nameLocation":"1520:1:37","nodeType":"VariableDeclaration","scope":9486,"src":"1512:9:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9454,"name":"uint256","nodeType":"ElementaryTypeName","src":"1512:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9457,"initialValue":{"hexValue":"30","id":9456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1524:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1512:13:37"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1544:3:37","subExpression":{"id":9462,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9455,"src":"1544:1:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9464,"nodeType":"ExpressionStatement","src":"1544:3:37"},"nodeType":"ForStatement","src":"1507:155:37"},{"expression":{"id":9487,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"1678:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"functionReturnParameters":9422,"id":9488,"nodeType":"Return","src":"1671:14:37"}]},"documentation":{"id":9414,"nodeType":"StructuredDocumentation","src":"1051:152:37","text":" @dev Receives and executes a batch of function calls on this contract.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall"},"functionSelector":"ac9650d8","id":9490,"implemented":true,"kind":"function","modifiers":[],"name":"multicall","nameLocation":"1217:9:37","nodeType":"FunctionDefinition","parameters":{"id":9418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9417,"mutability":"mutable","name":"data","nameLocation":"1244:4:37","nodeType":"VariableDeclaration","scope":9490,"src":"1227:21:37","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9415,"name":"bytes","nodeType":"ElementaryTypeName","src":"1227:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9416,"nodeType":"ArrayTypeName","src":"1227:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1226:23:37"},"returnParameters":{"id":9422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9421,"mutability":"mutable","name":"results","nameLocation":"1291:7:37","nodeType":"VariableDeclaration","scope":9490,"src":"1276:22:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":9419,"name":"bytes","nodeType":"ElementaryTypeName","src":"1276:5:37","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9420,"nodeType":"ArrayTypeName","src":"1276:7:37","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1275:24:37"},"scope":9491,"src":"1208:484:37","stateMutability":"nonpayable","virtual":true,"visibility":"external"}],"scope":9492,"src":"1006:688:37","usedErrors":[9103,9395],"usedEvents":[]}],"src":"103:1592:37"},"id":37},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[9543]},"id":9544,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9493,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:38"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":9494,"nodeType":"StructuredDocumentation","src":"125:489:38","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":9543,"linearizedBaseContracts":[9543],"name":"Panic","nameLocation":"665:5:38","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":9495,"nodeType":"StructuredDocumentation","src":"677:36:38","text":"@dev generic / unspecified error"},"id":9498,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:38","nodeType":"VariableDeclaration","scope":9543,"src":"718:40:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9496,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":9497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:38","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":9499,"nodeType":"StructuredDocumentation","src":"764:37:38","text":"@dev used by the assert() builtin"},"id":9502,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:38","nodeType":"VariableDeclaration","scope":9543,"src":"806:39:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9500,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":9501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:38","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":9503,"nodeType":"StructuredDocumentation","src":"851:41:38","text":"@dev arithmetic underflow or overflow"},"id":9506,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:38","nodeType":"VariableDeclaration","scope":9543,"src":"897:47:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9504,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":9505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:38","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":9507,"nodeType":"StructuredDocumentation","src":"950:35:38","text":"@dev division or modulo by zero"},"id":9510,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:38","nodeType":"VariableDeclaration","scope":9543,"src":"990:49:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9508,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":9509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:38","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":9511,"nodeType":"StructuredDocumentation","src":"1045:30:38","text":"@dev enum conversion error"},"id":9514,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:38","nodeType":"VariableDeclaration","scope":9543,"src":"1080:54:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9512,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":9513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:38","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":9515,"nodeType":"StructuredDocumentation","src":"1140:36:38","text":"@dev invalid encoding in storage"},"id":9518,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:38","nodeType":"VariableDeclaration","scope":9543,"src":"1181:55:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9516,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":9517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:38","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":9519,"nodeType":"StructuredDocumentation","src":"1242:24:38","text":"@dev empty array pop"},"id":9522,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:38","nodeType":"VariableDeclaration","scope":9543,"src":"1271:48:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9520,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":9521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:38","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":9523,"nodeType":"StructuredDocumentation","src":"1325:35:38","text":"@dev array out of bounds access"},"id":9526,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:38","nodeType":"VariableDeclaration","scope":9543,"src":"1365:52:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":9525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:38","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":9527,"nodeType":"StructuredDocumentation","src":"1423:65:38","text":"@dev resource error (too large allocation or too large array)"},"id":9530,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:38","nodeType":"VariableDeclaration","scope":9543,"src":"1493:47:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":9529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:38","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":9531,"nodeType":"StructuredDocumentation","src":"1546:42:38","text":"@dev calling invalid internal function"},"id":9534,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:38","nodeType":"VariableDeclaration","scope":9543,"src":"1593:58:38","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9532,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":9533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:38","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":9541,"nodeType":"Block","src":"1819:151:38","statements":[{"AST":{"nativeSrc":"1854:110:38","nodeType":"YulBlock","src":"1854:110:38","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:38","nodeType":"YulLiteral","src":"1875:4:38","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:38","nodeType":"YulLiteral","src":"1881:10:38","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:38","nodeType":"YulIdentifier","src":"1868:6:38"},"nativeSrc":"1868:24:38","nodeType":"YulFunctionCall","src":"1868:24:38"},"nativeSrc":"1868:24:38","nodeType":"YulExpressionStatement","src":"1868:24:38"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:38","nodeType":"YulLiteral","src":"1912:4:38","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:38","nodeType":"YulIdentifier","src":"1918:4:38"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:38","nodeType":"YulIdentifier","src":"1905:6:38"},"nativeSrc":"1905:18:38","nodeType":"YulFunctionCall","src":"1905:18:38"},"nativeSrc":"1905:18:38","nodeType":"YulExpressionStatement","src":"1905:18:38"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:38","nodeType":"YulLiteral","src":"1943:4:38","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:38","nodeType":"YulLiteral","src":"1949:4:38","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:38","nodeType":"YulIdentifier","src":"1936:6:38"},"nativeSrc":"1936:18:38","nodeType":"YulFunctionCall","src":"1936:18:38"},"nativeSrc":"1936:18:38","nodeType":"YulExpressionStatement","src":"1936:18:38"}]},"evmVersion":"cancun","externalReferences":[{"declaration":9537,"isOffset":false,"isSlot":false,"src":"1918:4:38","valueSize":1}],"flags":["memory-safe"],"id":9540,"nodeType":"InlineAssembly","src":"1829:135:38"}]},"documentation":{"id":9535,"nodeType":"StructuredDocumentation","src":"1658:113:38","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":9542,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:38","nodeType":"FunctionDefinition","parameters":{"id":9538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9537,"mutability":"mutable","name":"code","nameLocation":"1799:4:38","nodeType":"VariableDeclaration","scope":9542,"src":"1791:12:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9536,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:38"},"returnParameters":{"id":9539,"nodeType":"ParameterList","parameters":[],"src":"1819:0:38"},"scope":9543,"src":"1776:194:38","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9544,"src":"657:1315:38","usedErrors":[],"usedEvents":[]}],"src":"99:1874:38"},"id":38},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[9667]},"id":9668,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9545,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:39"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":9546,"nodeType":"StructuredDocumentation","src":"219:1187:39","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":9667,"linearizedBaseContracts":[9667],"name":"StorageSlot","nameLocation":"1415:11:39","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":9549,"members":[{"constant":false,"id":9548,"mutability":"mutable","name":"value","nameLocation":"1470:5:39","nodeType":"VariableDeclaration","scope":9549,"src":"1462:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9547,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:39","nodeType":"StructDefinition","scope":9667,"src":"1433:49:39","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":9552,"members":[{"constant":false,"id":9551,"mutability":"mutable","name":"value","nameLocation":"1522:5:39","nodeType":"VariableDeclaration","scope":9552,"src":"1517:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9550,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:39","nodeType":"StructDefinition","scope":9667,"src":"1488:46:39","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":9555,"members":[{"constant":false,"id":9554,"mutability":"mutable","name":"value","nameLocation":"1577:5:39","nodeType":"VariableDeclaration","scope":9555,"src":"1569:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:39","nodeType":"StructDefinition","scope":9667,"src":"1540:49:39","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":9558,"members":[{"constant":false,"id":9557,"mutability":"mutable","name":"value","nameLocation":"1632:5:39","nodeType":"VariableDeclaration","scope":9558,"src":"1624:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:39","nodeType":"StructDefinition","scope":9667,"src":"1595:49:39","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":9561,"members":[{"constant":false,"id":9560,"mutability":"mutable","name":"value","nameLocation":"1685:5:39","nodeType":"VariableDeclaration","scope":9561,"src":"1678:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9559,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:39","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:39","nodeType":"StructDefinition","scope":9667,"src":"1650:47:39","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":9564,"members":[{"constant":false,"id":9563,"mutability":"mutable","name":"value","nameLocation":"1738:5:39","nodeType":"VariableDeclaration","scope":9564,"src":"1731:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9562,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:39","nodeType":"StructDefinition","scope":9667,"src":"1703:47:39","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":9567,"members":[{"constant":false,"id":9566,"mutability":"mutable","name":"value","nameLocation":"1789:5:39","nodeType":"VariableDeclaration","scope":9567,"src":"1783:11:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9565,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:39","nodeType":"StructDefinition","scope":9667,"src":"1756:45:39","visibility":"public"},{"body":{"id":9577,"nodeType":"Block","src":"1983:79:39","statements":[{"AST":{"nativeSrc":"2018:38:39","nodeType":"YulBlock","src":"2018:38:39","statements":[{"nativeSrc":"2032:14:39","nodeType":"YulAssignment","src":"2032:14:39","value":{"name":"slot","nativeSrc":"2042:4:39","nodeType":"YulIdentifier","src":"2042:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:39","nodeType":"YulIdentifier","src":"2032:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9574,"isOffset":false,"isSlot":true,"src":"2032:6:39","suffix":"slot","valueSize":1},{"declaration":9570,"isOffset":false,"isSlot":false,"src":"2042:4:39","valueSize":1}],"flags":["memory-safe"],"id":9576,"nodeType":"InlineAssembly","src":"1993:63:39"}]},"documentation":{"id":9568,"nodeType":"StructuredDocumentation","src":"1807:87:39","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":9578,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:39","nodeType":"FunctionDefinition","parameters":{"id":9571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9570,"mutability":"mutable","name":"slot","nameLocation":"1931:4:39","nodeType":"VariableDeclaration","scope":9578,"src":"1923:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:39"},"returnParameters":{"id":9575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9574,"mutability":"mutable","name":"r","nameLocation":"1980:1:39","nodeType":"VariableDeclaration","scope":9578,"src":"1960:21:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":9573,"nodeType":"UserDefinedTypeName","pathNode":{"id":9572,"name":"AddressSlot","nameLocations":["1960:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":9549,"src":"1960:11:39"},"referencedDeclaration":9549,"src":"1960:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$9549_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:39"},"scope":9667,"src":"1899:163:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9588,"nodeType":"Block","src":"2243:79:39","statements":[{"AST":{"nativeSrc":"2278:38:39","nodeType":"YulBlock","src":"2278:38:39","statements":[{"nativeSrc":"2292:14:39","nodeType":"YulAssignment","src":"2292:14:39","value":{"name":"slot","nativeSrc":"2302:4:39","nodeType":"YulIdentifier","src":"2302:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:39","nodeType":"YulIdentifier","src":"2292:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9585,"isOffset":false,"isSlot":true,"src":"2292:6:39","suffix":"slot","valueSize":1},{"declaration":9581,"isOffset":false,"isSlot":false,"src":"2302:4:39","valueSize":1}],"flags":["memory-safe"],"id":9587,"nodeType":"InlineAssembly","src":"2253:63:39"}]},"documentation":{"id":9579,"nodeType":"StructuredDocumentation","src":"2068:86:39","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":9589,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:39","nodeType":"FunctionDefinition","parameters":{"id":9582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9581,"mutability":"mutable","name":"slot","nameLocation":"2191:4:39","nodeType":"VariableDeclaration","scope":9589,"src":"2183:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9580,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:39"},"returnParameters":{"id":9586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9585,"mutability":"mutable","name":"r","nameLocation":"2240:1:39","nodeType":"VariableDeclaration","scope":9589,"src":"2220:21:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9552_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":9584,"nodeType":"UserDefinedTypeName","pathNode":{"id":9583,"name":"BooleanSlot","nameLocations":["2220:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":9552,"src":"2220:11:39"},"referencedDeclaration":9552,"src":"2220:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$9552_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:39"},"scope":9667,"src":"2159:163:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9599,"nodeType":"Block","src":"2503:79:39","statements":[{"AST":{"nativeSrc":"2538:38:39","nodeType":"YulBlock","src":"2538:38:39","statements":[{"nativeSrc":"2552:14:39","nodeType":"YulAssignment","src":"2552:14:39","value":{"name":"slot","nativeSrc":"2562:4:39","nodeType":"YulIdentifier","src":"2562:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:39","nodeType":"YulIdentifier","src":"2552:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9596,"isOffset":false,"isSlot":true,"src":"2552:6:39","suffix":"slot","valueSize":1},{"declaration":9592,"isOffset":false,"isSlot":false,"src":"2562:4:39","valueSize":1}],"flags":["memory-safe"],"id":9598,"nodeType":"InlineAssembly","src":"2513:63:39"}]},"documentation":{"id":9590,"nodeType":"StructuredDocumentation","src":"2328:86:39","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":9600,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:39","nodeType":"FunctionDefinition","parameters":{"id":9593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9592,"mutability":"mutable","name":"slot","nameLocation":"2451:4:39","nodeType":"VariableDeclaration","scope":9600,"src":"2443:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:39"},"returnParameters":{"id":9597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9596,"mutability":"mutable","name":"r","nameLocation":"2500:1:39","nodeType":"VariableDeclaration","scope":9600,"src":"2480:21:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9555_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":9595,"nodeType":"UserDefinedTypeName","pathNode":{"id":9594,"name":"Bytes32Slot","nameLocations":["2480:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":9555,"src":"2480:11:39"},"referencedDeclaration":9555,"src":"2480:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$9555_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:39"},"scope":9667,"src":"2419:163:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9610,"nodeType":"Block","src":"2763:79:39","statements":[{"AST":{"nativeSrc":"2798:38:39","nodeType":"YulBlock","src":"2798:38:39","statements":[{"nativeSrc":"2812:14:39","nodeType":"YulAssignment","src":"2812:14:39","value":{"name":"slot","nativeSrc":"2822:4:39","nodeType":"YulIdentifier","src":"2822:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:39","nodeType":"YulIdentifier","src":"2812:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9607,"isOffset":false,"isSlot":true,"src":"2812:6:39","suffix":"slot","valueSize":1},{"declaration":9603,"isOffset":false,"isSlot":false,"src":"2822:4:39","valueSize":1}],"flags":["memory-safe"],"id":9609,"nodeType":"InlineAssembly","src":"2773:63:39"}]},"documentation":{"id":9601,"nodeType":"StructuredDocumentation","src":"2588:86:39","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":9611,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:39","nodeType":"FunctionDefinition","parameters":{"id":9604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9603,"mutability":"mutable","name":"slot","nameLocation":"2711:4:39","nodeType":"VariableDeclaration","scope":9611,"src":"2703:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:39"},"returnParameters":{"id":9608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9607,"mutability":"mutable","name":"r","nameLocation":"2760:1:39","nodeType":"VariableDeclaration","scope":9611,"src":"2740:21:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9558_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":9606,"nodeType":"UserDefinedTypeName","pathNode":{"id":9605,"name":"Uint256Slot","nameLocations":["2740:11:39"],"nodeType":"IdentifierPath","referencedDeclaration":9558,"src":"2740:11:39"},"referencedDeclaration":9558,"src":"2740:11:39","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$9558_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:39"},"scope":9667,"src":"2679:163:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9621,"nodeType":"Block","src":"3020:79:39","statements":[{"AST":{"nativeSrc":"3055:38:39","nodeType":"YulBlock","src":"3055:38:39","statements":[{"nativeSrc":"3069:14:39","nodeType":"YulAssignment","src":"3069:14:39","value":{"name":"slot","nativeSrc":"3079:4:39","nodeType":"YulIdentifier","src":"3079:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:39","nodeType":"YulIdentifier","src":"3069:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9618,"isOffset":false,"isSlot":true,"src":"3069:6:39","suffix":"slot","valueSize":1},{"declaration":9614,"isOffset":false,"isSlot":false,"src":"3079:4:39","valueSize":1}],"flags":["memory-safe"],"id":9620,"nodeType":"InlineAssembly","src":"3030:63:39"}]},"documentation":{"id":9612,"nodeType":"StructuredDocumentation","src":"2848:85:39","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":9622,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:39","nodeType":"FunctionDefinition","parameters":{"id":9615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9614,"mutability":"mutable","name":"slot","nameLocation":"2969:4:39","nodeType":"VariableDeclaration","scope":9622,"src":"2961:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:39"},"returnParameters":{"id":9619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9618,"mutability":"mutable","name":"r","nameLocation":"3017:1:39","nodeType":"VariableDeclaration","scope":9622,"src":"2998:20:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$9561_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":9617,"nodeType":"UserDefinedTypeName","pathNode":{"id":9616,"name":"Int256Slot","nameLocations":["2998:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":9561,"src":"2998:10:39"},"referencedDeclaration":9561,"src":"2998:10:39","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$9561_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:39"},"scope":9667,"src":"2938:161:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9632,"nodeType":"Block","src":"3277:79:39","statements":[{"AST":{"nativeSrc":"3312:38:39","nodeType":"YulBlock","src":"3312:38:39","statements":[{"nativeSrc":"3326:14:39","nodeType":"YulAssignment","src":"3326:14:39","value":{"name":"slot","nativeSrc":"3336:4:39","nodeType":"YulIdentifier","src":"3336:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:39","nodeType":"YulIdentifier","src":"3326:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9629,"isOffset":false,"isSlot":true,"src":"3326:6:39","suffix":"slot","valueSize":1},{"declaration":9625,"isOffset":false,"isSlot":false,"src":"3336:4:39","valueSize":1}],"flags":["memory-safe"],"id":9631,"nodeType":"InlineAssembly","src":"3287:63:39"}]},"documentation":{"id":9623,"nodeType":"StructuredDocumentation","src":"3105:85:39","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":9633,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:39","nodeType":"FunctionDefinition","parameters":{"id":9626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9625,"mutability":"mutable","name":"slot","nameLocation":"3226:4:39","nodeType":"VariableDeclaration","scope":9633,"src":"3218:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9624,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:39"},"returnParameters":{"id":9630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9629,"mutability":"mutable","name":"r","nameLocation":"3274:1:39","nodeType":"VariableDeclaration","scope":9633,"src":"3255:20:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9564_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9628,"nodeType":"UserDefinedTypeName","pathNode":{"id":9627,"name":"StringSlot","nameLocations":["3255:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":9564,"src":"3255:10:39"},"referencedDeclaration":9564,"src":"3255:10:39","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9564_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:39"},"scope":9667,"src":"3195:161:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9643,"nodeType":"Block","src":"3558:85:39","statements":[{"AST":{"nativeSrc":"3593:44:39","nodeType":"YulBlock","src":"3593:44:39","statements":[{"nativeSrc":"3607:20:39","nodeType":"YulAssignment","src":"3607:20:39","value":{"name":"store.slot","nativeSrc":"3617:10:39","nodeType":"YulIdentifier","src":"3617:10:39"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:39","nodeType":"YulIdentifier","src":"3607:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9640,"isOffset":false,"isSlot":true,"src":"3607:6:39","suffix":"slot","valueSize":1},{"declaration":9636,"isOffset":false,"isSlot":true,"src":"3617:10:39","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":9642,"nodeType":"InlineAssembly","src":"3568:69:39"}]},"documentation":{"id":9634,"nodeType":"StructuredDocumentation","src":"3362:101:39","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":9644,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:39","nodeType":"FunctionDefinition","parameters":{"id":9637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9636,"mutability":"mutable","name":"store","nameLocation":"3506:5:39","nodeType":"VariableDeclaration","scope":9644,"src":"3491:20:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9635,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:39","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:39"},"returnParameters":{"id":9641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9640,"mutability":"mutable","name":"r","nameLocation":"3555:1:39","nodeType":"VariableDeclaration","scope":9644,"src":"3536:20:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9564_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":9639,"nodeType":"UserDefinedTypeName","pathNode":{"id":9638,"name":"StringSlot","nameLocations":["3536:10:39"],"nodeType":"IdentifierPath","referencedDeclaration":9564,"src":"3536:10:39"},"referencedDeclaration":9564,"src":"3536:10:39","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$9564_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:39"},"scope":9667,"src":"3468:175:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9654,"nodeType":"Block","src":"3818:79:39","statements":[{"AST":{"nativeSrc":"3853:38:39","nodeType":"YulBlock","src":"3853:38:39","statements":[{"nativeSrc":"3867:14:39","nodeType":"YulAssignment","src":"3867:14:39","value":{"name":"slot","nativeSrc":"3877:4:39","nodeType":"YulIdentifier","src":"3877:4:39"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:39","nodeType":"YulIdentifier","src":"3867:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9651,"isOffset":false,"isSlot":true,"src":"3867:6:39","suffix":"slot","valueSize":1},{"declaration":9647,"isOffset":false,"isSlot":false,"src":"3877:4:39","valueSize":1}],"flags":["memory-safe"],"id":9653,"nodeType":"InlineAssembly","src":"3828:63:39"}]},"documentation":{"id":9645,"nodeType":"StructuredDocumentation","src":"3649:84:39","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":9655,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:39","nodeType":"FunctionDefinition","parameters":{"id":9648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9647,"mutability":"mutable","name":"slot","nameLocation":"3768:4:39","nodeType":"VariableDeclaration","scope":9655,"src":"3760:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:39"},"returnParameters":{"id":9652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9651,"mutability":"mutable","name":"r","nameLocation":"3815:1:39","nodeType":"VariableDeclaration","scope":9655,"src":"3797:19:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9650,"nodeType":"UserDefinedTypeName","pathNode":{"id":9649,"name":"BytesSlot","nameLocations":["3797:9:39"],"nodeType":"IdentifierPath","referencedDeclaration":9567,"src":"3797:9:39"},"referencedDeclaration":9567,"src":"3797:9:39","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:39"},"scope":9667,"src":"3738:159:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9665,"nodeType":"Block","src":"4094:85:39","statements":[{"AST":{"nativeSrc":"4129:44:39","nodeType":"YulBlock","src":"4129:44:39","statements":[{"nativeSrc":"4143:20:39","nodeType":"YulAssignment","src":"4143:20:39","value":{"name":"store.slot","nativeSrc":"4153:10:39","nodeType":"YulIdentifier","src":"4153:10:39"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:39","nodeType":"YulIdentifier","src":"4143:6:39"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":9662,"isOffset":false,"isSlot":true,"src":"4143:6:39","suffix":"slot","valueSize":1},{"declaration":9658,"isOffset":false,"isSlot":true,"src":"4153:10:39","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":9664,"nodeType":"InlineAssembly","src":"4104:69:39"}]},"documentation":{"id":9656,"nodeType":"StructuredDocumentation","src":"3903:99:39","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":9666,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:39","nodeType":"FunctionDefinition","parameters":{"id":9659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9658,"mutability":"mutable","name":"store","nameLocation":"4043:5:39","nodeType":"VariableDeclaration","scope":9666,"src":"4029:19:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":9657,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:39"},"returnParameters":{"id":9663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9662,"mutability":"mutable","name":"r","nameLocation":"4091:1:39","nodeType":"VariableDeclaration","scope":9666,"src":"4073:19:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":9661,"nodeType":"UserDefinedTypeName","pathNode":{"id":9660,"name":"BytesSlot","nameLocations":["4073:9:39"],"nodeType":"IdentifierPath","referencedDeclaration":9567,"src":"4073:9:39"},"referencedDeclaration":9567,"src":"4073:9:39","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:39"},"scope":9667,"src":"4007:172:39","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":9668,"src":"1407:2774:39","usedErrors":[],"usedEvents":[]}],"src":"193:3989:39"},"id":39},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[9691],"IERC165":[9703]},"id":9692,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9669,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:40"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":9671,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9692,"sourceUnit":9704,"src":"140:38:40","symbolAliases":[{"foreign":{"id":9670,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"148:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":9673,"name":"IERC165","nameLocations":["688:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":9703,"src":"688:7:40"},"id":9674,"nodeType":"InheritanceSpecifier","src":"688:7:40"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":9672,"nodeType":"StructuredDocumentation","src":"180:479:40","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":9691,"linearizedBaseContracts":[9691,9703],"name":"ERC165","nameLocation":"678:6:40","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[9702],"body":{"id":9689,"nodeType":"Block","src":"845:64:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":9687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9682,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9677,"src":"862:11:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":9684,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9703,"src":"882:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$9703_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$9703_$","typeString":"type(contract IERC165)"}],"id":9683,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"877:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":9685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"877:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$9703","typeString":"type(contract IERC165)"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"891:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"877:25:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"862:40:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9681,"id":9688,"nodeType":"Return","src":"855:47:40"}]},"documentation":{"id":9675,"nodeType":"StructuredDocumentation","src":"702:56:40","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":9690,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"772:17:40","nodeType":"FunctionDefinition","parameters":{"id":9678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9677,"mutability":"mutable","name":"interfaceId","nameLocation":"797:11:40","nodeType":"VariableDeclaration","scope":9690,"src":"790:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9676,"name":"bytes4","nodeType":"ElementaryTypeName","src":"790:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"789:20:40"},"returnParameters":{"id":9681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9690,"src":"839:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9679,"name":"bool","nodeType":"ElementaryTypeName","src":"839:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"838:6:40"},"scope":9691,"src":"763:146:40","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":9692,"src":"660:251:40","usedErrors":[],"usedEvents":[]}],"src":"114:798:40"},"id":40},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[9703]},"id":9704,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9693,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:41"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":9694,"nodeType":"StructuredDocumentation","src":"141:280:41","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":9703,"linearizedBaseContracts":[9703],"name":"IERC165","nameLocation":"432:7:41","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":9695,"nodeType":"StructuredDocumentation","src":"446:340:41","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":9702,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:41","nodeType":"FunctionDefinition","parameters":{"id":9698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9697,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:41","nodeType":"VariableDeclaration","scope":9702,"src":"818:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9696,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:41","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:41"},"returnParameters":{"id":9701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9700,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9702,"src":"861:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9699,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:41"},"scope":9703,"src":"791:76:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9704,"src":"422:447:41","usedErrors":[],"usedEvents":[]}],"src":"115:755:41"},"id":41},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[11309],"Panic":[9543],"SafeCast":[13074]},"id":11310,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":9705,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:42"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":9707,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11310,"sourceUnit":9544,"src":"129:35:42","symbolAliases":[{"foreign":{"id":9706,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"137:5:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":9709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11310,"sourceUnit":13075,"src":"165:40:42","symbolAliases":[{"foreign":{"id":9708,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"173:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":9710,"nodeType":"StructuredDocumentation","src":"207:73:42","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":11309,"linearizedBaseContracts":[11309],"name":"Math","nameLocation":"289:4:42","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":9715,"members":[{"id":9711,"name":"Floor","nameLocation":"324:5:42","nodeType":"EnumValue","src":"324:5:42"},{"id":9712,"name":"Ceil","nameLocation":"367:4:42","nodeType":"EnumValue","src":"367:4:42"},{"id":9713,"name":"Trunc","nameLocation":"409:5:42","nodeType":"EnumValue","src":"409:5:42"},{"id":9714,"name":"Expand","nameLocation":"439:6:42","nodeType":"EnumValue","src":"439:6:42"}],"name":"Rounding","nameLocation":"305:8:42","nodeType":"EnumDefinition","src":"300:169:42"},{"body":{"id":9746,"nodeType":"Block","src":"677:140:42","statements":[{"id":9745,"nodeType":"UncheckedBlock","src":"687:124:42","statements":[{"assignments":[9728],"declarations":[{"constant":false,"id":9728,"mutability":"mutable","name":"c","nameLocation":"719:1:42","nodeType":"VariableDeclaration","scope":9745,"src":"711:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9727,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9732,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9729,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9718,"src":"723:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9730,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9720,"src":"727:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"723:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"711:17:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9733,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"746:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9734,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9718,"src":"750:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"746:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9740,"nodeType":"IfStatement","src":"742:28:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"761:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"768:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9738,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"760:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9726,"id":9739,"nodeType":"Return","src":"753:17:42"}},{"expression":{"components":[{"hexValue":"74727565","id":9741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"792:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":9742,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"798:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9743,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"791:9:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":9726,"id":9744,"nodeType":"Return","src":"784:16:42"}]}]},"documentation":{"id":9716,"nodeType":"StructuredDocumentation","src":"475:106:42","text":" @dev Returns the addition of two unsigned integers, with an success flag (no overflow)."},"id":9747,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"595:6:42","nodeType":"FunctionDefinition","parameters":{"id":9721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9718,"mutability":"mutable","name":"a","nameLocation":"610:1:42","nodeType":"VariableDeclaration","scope":9747,"src":"602:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9717,"name":"uint256","nodeType":"ElementaryTypeName","src":"602:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9720,"mutability":"mutable","name":"b","nameLocation":"621:1:42","nodeType":"VariableDeclaration","scope":9747,"src":"613:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9719,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"601:22:42"},"returnParameters":{"id":9726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9723,"mutability":"mutable","name":"success","nameLocation":"652:7:42","nodeType":"VariableDeclaration","scope":9747,"src":"647:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9722,"name":"bool","nodeType":"ElementaryTypeName","src":"647:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9725,"mutability":"mutable","name":"result","nameLocation":"669:6:42","nodeType":"VariableDeclaration","scope":9747,"src":"661:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9724,"name":"uint256","nodeType":"ElementaryTypeName","src":"661:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"646:30:42"},"scope":11309,"src":"586:231:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9774,"nodeType":"Block","src":"1028:113:42","statements":[{"id":9773,"nodeType":"UncheckedBlock","src":"1038:97:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9759,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9752,"src":"1066:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9760,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"1070:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1066:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9766,"nodeType":"IfStatement","src":"1062:28:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1081:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9764,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1080:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9758,"id":9765,"nodeType":"Return","src":"1073:17:42"}},{"expression":{"components":[{"hexValue":"74727565","id":9767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1112:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9768,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9750,"src":"1118:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9769,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9752,"src":"1122:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1118:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9771,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1111:13:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":9758,"id":9772,"nodeType":"Return","src":"1104:20:42"}]}]},"documentation":{"id":9748,"nodeType":"StructuredDocumentation","src":"823:109:42","text":" @dev Returns the subtraction of two unsigned integers, with an success flag (no overflow)."},"id":9775,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"946:6:42","nodeType":"FunctionDefinition","parameters":{"id":9753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9750,"mutability":"mutable","name":"a","nameLocation":"961:1:42","nodeType":"VariableDeclaration","scope":9775,"src":"953:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9749,"name":"uint256","nodeType":"ElementaryTypeName","src":"953:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9752,"mutability":"mutable","name":"b","nameLocation":"972:1:42","nodeType":"VariableDeclaration","scope":9775,"src":"964:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9751,"name":"uint256","nodeType":"ElementaryTypeName","src":"964:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"952:22:42"},"returnParameters":{"id":9758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9755,"mutability":"mutable","name":"success","nameLocation":"1003:7:42","nodeType":"VariableDeclaration","scope":9775,"src":"998:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9754,"name":"bool","nodeType":"ElementaryTypeName","src":"998:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9757,"mutability":"mutable","name":"result","nameLocation":"1020:6:42","nodeType":"VariableDeclaration","scope":9775,"src":"1012:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9756,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"997:30:42"},"scope":11309,"src":"937:204:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9816,"nodeType":"Block","src":"1355:417:42","statements":[{"id":9815,"nodeType":"UncheckedBlock","src":"1365:401:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9787,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9778,"src":"1623:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1628:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1623:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9794,"nodeType":"IfStatement","src":"1619:28:42","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":9790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1639:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":9791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1638:9:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9786,"id":9793,"nodeType":"Return","src":"1631:16:42"}},{"assignments":[9796],"declarations":[{"constant":false,"id":9796,"mutability":"mutable","name":"c","nameLocation":"1669:1:42","nodeType":"VariableDeclaration","scope":9815,"src":"1661:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9795,"name":"uint256","nodeType":"ElementaryTypeName","src":"1661:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9800,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9797,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9778,"src":"1673:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9798,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9780,"src":"1677:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1673:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1661:17:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9801,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"1696:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9802,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9778,"src":"1700:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1696:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":9804,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9780,"src":"1705:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1696:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9810,"nodeType":"IfStatement","src":"1692:33:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1716:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1723:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9808,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1715:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9786,"id":9809,"nodeType":"Return","src":"1708:17:42"}},{"expression":{"components":[{"hexValue":"74727565","id":9811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1747:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":9812,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9796,"src":"1753:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1746:9:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":9786,"id":9814,"nodeType":"Return","src":"1739:16:42"}]}]},"documentation":{"id":9776,"nodeType":"StructuredDocumentation","src":"1147:112:42","text":" @dev Returns the multiplication of two unsigned integers, with an success flag (no overflow)."},"id":9817,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1273:6:42","nodeType":"FunctionDefinition","parameters":{"id":9781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9778,"mutability":"mutable","name":"a","nameLocation":"1288:1:42","nodeType":"VariableDeclaration","scope":9817,"src":"1280:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9777,"name":"uint256","nodeType":"ElementaryTypeName","src":"1280:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9780,"mutability":"mutable","name":"b","nameLocation":"1299:1:42","nodeType":"VariableDeclaration","scope":9817,"src":"1291:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9779,"name":"uint256","nodeType":"ElementaryTypeName","src":"1291:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1279:22:42"},"returnParameters":{"id":9786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9783,"mutability":"mutable","name":"success","nameLocation":"1330:7:42","nodeType":"VariableDeclaration","scope":9817,"src":"1325:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9782,"name":"bool","nodeType":"ElementaryTypeName","src":"1325:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9785,"mutability":"mutable","name":"result","nameLocation":"1347:6:42","nodeType":"VariableDeclaration","scope":9817,"src":"1339:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9784,"name":"uint256","nodeType":"ElementaryTypeName","src":"1339:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1324:30:42"},"scope":11309,"src":"1264:508:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9844,"nodeType":"Block","src":"1987:114:42","statements":[{"id":9843,"nodeType":"UncheckedBlock","src":"1997:98:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9829,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9822,"src":"2025:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2030:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2025:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9836,"nodeType":"IfStatement","src":"2021:29:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2041:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2048:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9834,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2040:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9828,"id":9835,"nodeType":"Return","src":"2033:17:42"}},{"expression":{"components":[{"hexValue":"74727565","id":9837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2072:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9838,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9820,"src":"2078:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9839,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9822,"src":"2082:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2078:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2071:13:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":9828,"id":9842,"nodeType":"Return","src":"2064:20:42"}]}]},"documentation":{"id":9818,"nodeType":"StructuredDocumentation","src":"1778:113:42","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":9845,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1905:6:42","nodeType":"FunctionDefinition","parameters":{"id":9823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9820,"mutability":"mutable","name":"a","nameLocation":"1920:1:42","nodeType":"VariableDeclaration","scope":9845,"src":"1912:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9819,"name":"uint256","nodeType":"ElementaryTypeName","src":"1912:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9822,"mutability":"mutable","name":"b","nameLocation":"1931:1:42","nodeType":"VariableDeclaration","scope":9845,"src":"1923:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1911:22:42"},"returnParameters":{"id":9828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9825,"mutability":"mutable","name":"success","nameLocation":"1962:7:42","nodeType":"VariableDeclaration","scope":9845,"src":"1957:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9824,"name":"bool","nodeType":"ElementaryTypeName","src":"1957:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9827,"mutability":"mutable","name":"result","nameLocation":"1979:6:42","nodeType":"VariableDeclaration","scope":9845,"src":"1971:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9826,"name":"uint256","nodeType":"ElementaryTypeName","src":"1971:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1956:30:42"},"scope":11309,"src":"1896:205:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9872,"nodeType":"Block","src":"2326:114:42","statements":[{"id":9871,"nodeType":"UncheckedBlock","src":"2336:98:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9857,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2364:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2369:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2364:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9864,"nodeType":"IfStatement","src":"2360:29:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2380:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2387:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9862,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2379:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9856,"id":9863,"nodeType":"Return","src":"2372:17:42"}},{"expression":{"components":[{"hexValue":"74727565","id":9865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2411:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9866,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9848,"src":"2417:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":9867,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9850,"src":"2421:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2417:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9869,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2410:13:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":9856,"id":9870,"nodeType":"Return","src":"2403:20:42"}]}]},"documentation":{"id":9846,"nodeType":"StructuredDocumentation","src":"2107:123:42","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":9873,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2244:6:42","nodeType":"FunctionDefinition","parameters":{"id":9851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9848,"mutability":"mutable","name":"a","nameLocation":"2259:1:42","nodeType":"VariableDeclaration","scope":9873,"src":"2251:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9847,"name":"uint256","nodeType":"ElementaryTypeName","src":"2251:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9850,"mutability":"mutable","name":"b","nameLocation":"2270:1:42","nodeType":"VariableDeclaration","scope":9873,"src":"2262:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9849,"name":"uint256","nodeType":"ElementaryTypeName","src":"2262:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2250:22:42"},"returnParameters":{"id":9856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9853,"mutability":"mutable","name":"success","nameLocation":"2301:7:42","nodeType":"VariableDeclaration","scope":9873,"src":"2296:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9852,"name":"bool","nodeType":"ElementaryTypeName","src":"2296:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9855,"mutability":"mutable","name":"result","nameLocation":"2318:6:42","nodeType":"VariableDeclaration","scope":9873,"src":"2310:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9854,"name":"uint256","nodeType":"ElementaryTypeName","src":"2310:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2295:30:42"},"scope":11309,"src":"2235:205:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9899,"nodeType":"Block","src":"2912:207:42","statements":[{"id":9898,"nodeType":"UncheckedBlock","src":"2922:191:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9885,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9880,"src":"3060:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9886,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9878,"src":"3066:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9887,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9880,"src":"3070:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3066:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3065:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":9892,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9876,"src":"3091:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9890,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"3075:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":9891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3084:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"3075:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3075:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3065:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3064:38:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3060:42:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9884,"id":9897,"nodeType":"Return","src":"3053:49:42"}]}]},"documentation":{"id":9874,"nodeType":"StructuredDocumentation","src":"2446:374:42","text":" @dev Branchless ternary evaluation for `a ? b : c`. 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. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":9900,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"2834:7:42","nodeType":"FunctionDefinition","parameters":{"id":9881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9876,"mutability":"mutable","name":"condition","nameLocation":"2847:9:42","nodeType":"VariableDeclaration","scope":9900,"src":"2842:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9875,"name":"bool","nodeType":"ElementaryTypeName","src":"2842:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9878,"mutability":"mutable","name":"a","nameLocation":"2866:1:42","nodeType":"VariableDeclaration","scope":9900,"src":"2858:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9877,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9880,"mutability":"mutable","name":"b","nameLocation":"2877:1:42","nodeType":"VariableDeclaration","scope":9900,"src":"2869:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2869:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2841:38:42"},"returnParameters":{"id":9884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9900,"src":"2903:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9882,"name":"uint256","nodeType":"ElementaryTypeName","src":"2903:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2902:9:42"},"scope":11309,"src":"2825:294:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9918,"nodeType":"Block","src":"3256:44:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9911,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"3281:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":9912,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9905,"src":"3285:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3281:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9914,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"3288:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9915,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9905,"src":"3291:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9910,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"3273:7:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":9916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3273:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9909,"id":9917,"nodeType":"Return","src":"3266:27:42"}]},"documentation":{"id":9901,"nodeType":"StructuredDocumentation","src":"3125:59:42","text":" @dev Returns the largest of two numbers."},"id":9919,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"3198:3:42","nodeType":"FunctionDefinition","parameters":{"id":9906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9903,"mutability":"mutable","name":"a","nameLocation":"3210:1:42","nodeType":"VariableDeclaration","scope":9919,"src":"3202:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9902,"name":"uint256","nodeType":"ElementaryTypeName","src":"3202:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9905,"mutability":"mutable","name":"b","nameLocation":"3221:1:42","nodeType":"VariableDeclaration","scope":9919,"src":"3213:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9904,"name":"uint256","nodeType":"ElementaryTypeName","src":"3213:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3201:22:42"},"returnParameters":{"id":9909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9919,"src":"3247:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9907,"name":"uint256","nodeType":"ElementaryTypeName","src":"3247:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3246:9:42"},"scope":11309,"src":"3189:111:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9937,"nodeType":"Block","src":"3438:44:42","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9930,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9922,"src":"3463:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9931,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9924,"src":"3467:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3463:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":9933,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9922,"src":"3470:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9934,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9924,"src":"3473:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9929,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"3455:7:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3455:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9928,"id":9936,"nodeType":"Return","src":"3448:27:42"}]},"documentation":{"id":9920,"nodeType":"StructuredDocumentation","src":"3306:60:42","text":" @dev Returns the smallest of two numbers."},"id":9938,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"3380:3:42","nodeType":"FunctionDefinition","parameters":{"id":9925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9922,"mutability":"mutable","name":"a","nameLocation":"3392:1:42","nodeType":"VariableDeclaration","scope":9938,"src":"3384:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9921,"name":"uint256","nodeType":"ElementaryTypeName","src":"3384:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9924,"mutability":"mutable","name":"b","nameLocation":"3403:1:42","nodeType":"VariableDeclaration","scope":9938,"src":"3395:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9923,"name":"uint256","nodeType":"ElementaryTypeName","src":"3395:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3383:22:42"},"returnParameters":{"id":9928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9938,"src":"3429:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9926,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3428:9:42"},"scope":11309,"src":"3371:111:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9960,"nodeType":"Block","src":"3666:82:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9948,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9941,"src":"3721:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":9949,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9943,"src":"3725:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3721:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9951,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3720:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9952,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9941,"src":"3731:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":9953,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9943,"src":"3735:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3731:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3730:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":9956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3740:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"3730:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3720:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9947,"id":9959,"nodeType":"Return","src":"3713:28:42"}]},"documentation":{"id":9939,"nodeType":"StructuredDocumentation","src":"3488:102:42","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":9961,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"3604:7:42","nodeType":"FunctionDefinition","parameters":{"id":9944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9941,"mutability":"mutable","name":"a","nameLocation":"3620:1:42","nodeType":"VariableDeclaration","scope":9961,"src":"3612:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9943,"mutability":"mutable","name":"b","nameLocation":"3631:1:42","nodeType":"VariableDeclaration","scope":9961,"src":"3623:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9942,"name":"uint256","nodeType":"ElementaryTypeName","src":"3623:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3611:22:42"},"returnParameters":{"id":9947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9961,"src":"3657:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9945,"name":"uint256","nodeType":"ElementaryTypeName","src":"3657:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3656:9:42"},"scope":11309,"src":"3595:153:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10001,"nodeType":"Block","src":"4040:633:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9971,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9966,"src":"4054:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4059:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4054:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9982,"nodeType":"IfStatement","src":"4050:150:42","trueBody":{"id":9981,"nodeType":"Block","src":"4062:138:42","statements":[{"expression":{"arguments":[{"expression":{"id":9977,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"4166:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":9978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4172:16:42","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":9510,"src":"4166:22:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9974,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"4154:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4160:5:42","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":9542,"src":"4154:11:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4154:35:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9980,"nodeType":"ExpressionStatement","src":"4154:35:42"}]}},{"id":10000,"nodeType":"UncheckedBlock","src":"4583:84:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9985,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"4630:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4634:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4630:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9983,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"4614:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":9984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4623:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"4614:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4614:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9989,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"4641:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4645:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4641:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9992,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4640:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9993,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9966,"src":"4650:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4640:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4654:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4640:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9997,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4639:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4614:42:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9970,"id":9999,"nodeType":"Return","src":"4607:49:42"}]}]},"documentation":{"id":9962,"nodeType":"StructuredDocumentation","src":"3754:210:42","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":10002,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"3978:7:42","nodeType":"FunctionDefinition","parameters":{"id":9967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9964,"mutability":"mutable","name":"a","nameLocation":"3994:1:42","nodeType":"VariableDeclaration","scope":10002,"src":"3986:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9963,"name":"uint256","nodeType":"ElementaryTypeName","src":"3986:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9966,"mutability":"mutable","name":"b","nameLocation":"4005:1:42","nodeType":"VariableDeclaration","scope":10002,"src":"3997:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9965,"name":"uint256","nodeType":"ElementaryTypeName","src":"3997:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3985:22:42"},"returnParameters":{"id":9970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9969,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10002,"src":"4031:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9968,"name":"uint256","nodeType":"ElementaryTypeName","src":"4031:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4030:9:42"},"scope":11309,"src":"3969:704:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10138,"nodeType":"Block","src":"5094:4128:42","statements":[{"id":10137,"nodeType":"UncheckedBlock","src":"5104:4112:42","statements":[{"assignments":[10015],"declarations":[{"constant":false,"id":10015,"mutability":"mutable","name":"prod0","nameLocation":"5441:5:42","nodeType":"VariableDeclaration","scope":10137,"src":"5433:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10014,"name":"uint256","nodeType":"ElementaryTypeName","src":"5433:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10019,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10016,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10005,"src":"5449:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10017,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10007,"src":"5453:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5449:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5433:21:42"},{"assignments":[10021],"declarations":[{"constant":false,"id":10021,"mutability":"mutable","name":"prod1","nameLocation":"5521:5:42","nodeType":"VariableDeclaration","scope":10137,"src":"5513:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10020,"name":"uint256","nodeType":"ElementaryTypeName","src":"5513:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10022,"nodeType":"VariableDeclarationStatement","src":"5513:13:42"},{"AST":{"nativeSrc":"5593:122:42","nodeType":"YulBlock","src":"5593:122:42","statements":[{"nativeSrc":"5611:30:42","nodeType":"YulVariableDeclaration","src":"5611:30:42","value":{"arguments":[{"name":"x","nativeSrc":"5628:1:42","nodeType":"YulIdentifier","src":"5628:1:42"},{"name":"y","nativeSrc":"5631:1:42","nodeType":"YulIdentifier","src":"5631:1:42"},{"arguments":[{"kind":"number","nativeSrc":"5638:1:42","nodeType":"YulLiteral","src":"5638:1:42","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5634:3:42","nodeType":"YulIdentifier","src":"5634:3:42"},"nativeSrc":"5634:6:42","nodeType":"YulFunctionCall","src":"5634:6:42"}],"functionName":{"name":"mulmod","nativeSrc":"5621:6:42","nodeType":"YulIdentifier","src":"5621:6:42"},"nativeSrc":"5621:20:42","nodeType":"YulFunctionCall","src":"5621:20:42"},"variables":[{"name":"mm","nativeSrc":"5615:2:42","nodeType":"YulTypedName","src":"5615:2:42","type":""}]},{"nativeSrc":"5658:43:42","nodeType":"YulAssignment","src":"5658:43:42","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"5675:2:42","nodeType":"YulIdentifier","src":"5675:2:42"},{"name":"prod0","nativeSrc":"5679:5:42","nodeType":"YulIdentifier","src":"5679:5:42"}],"functionName":{"name":"sub","nativeSrc":"5671:3:42","nodeType":"YulIdentifier","src":"5671:3:42"},"nativeSrc":"5671:14:42","nodeType":"YulFunctionCall","src":"5671:14:42"},{"arguments":[{"name":"mm","nativeSrc":"5690:2:42","nodeType":"YulIdentifier","src":"5690:2:42"},{"name":"prod0","nativeSrc":"5694:5:42","nodeType":"YulIdentifier","src":"5694:5:42"}],"functionName":{"name":"lt","nativeSrc":"5687:2:42","nodeType":"YulIdentifier","src":"5687:2:42"},"nativeSrc":"5687:13:42","nodeType":"YulFunctionCall","src":"5687:13:42"}],"functionName":{"name":"sub","nativeSrc":"5667:3:42","nodeType":"YulIdentifier","src":"5667:3:42"},"nativeSrc":"5667:34:42","nodeType":"YulFunctionCall","src":"5667:34:42"},"variableNames":[{"name":"prod1","nativeSrc":"5658:5:42","nodeType":"YulIdentifier","src":"5658:5:42"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10015,"isOffset":false,"isSlot":false,"src":"5679:5:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"5694:5:42","valueSize":1},{"declaration":10021,"isOffset":false,"isSlot":false,"src":"5658:5:42","valueSize":1},{"declaration":10005,"isOffset":false,"isSlot":false,"src":"5628:1:42","valueSize":1},{"declaration":10007,"isOffset":false,"isSlot":false,"src":"5631:1:42","valueSize":1}],"id":10023,"nodeType":"InlineAssembly","src":"5584:131:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10024,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10021,"src":"5796:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5805:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5796:10:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10032,"nodeType":"IfStatement","src":"5792:368:42","trueBody":{"id":10031,"nodeType":"Block","src":"5808:352:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10027,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10015,"src":"6126:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10028,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"6134:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6126:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10013,"id":10030,"nodeType":"Return","src":"6119:26:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10033,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"6270:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10034,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10021,"src":"6285:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6270:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10051,"nodeType":"IfStatement","src":"6266:143:42","trueBody":{"id":10050,"nodeType":"Block","src":"6292:117:42","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10040,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"6330:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6345:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6330:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10043,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"6348:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6354:16:42","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":9510,"src":"6348:22:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10045,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"6372:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6378:14:42","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":9506,"src":"6372:20:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10039,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"6322:7:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":10047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6322:71:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10036,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"6310:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6316:5:42","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":9542,"src":"6310:11:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6310:84:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10049,"nodeType":"ExpressionStatement","src":"6310:84:42"}]}},{"assignments":[10053],"declarations":[{"constant":false,"id":10053,"mutability":"mutable","name":"remainder","nameLocation":"6672:9:42","nodeType":"VariableDeclaration","scope":10137,"src":"6664:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10052,"name":"uint256","nodeType":"ElementaryTypeName","src":"6664:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10054,"nodeType":"VariableDeclarationStatement","src":"6664:17:42"},{"AST":{"nativeSrc":"6704:291:42","nodeType":"YulBlock","src":"6704:291:42","statements":[{"nativeSrc":"6773:38:42","nodeType":"YulAssignment","src":"6773:38:42","value":{"arguments":[{"name":"x","nativeSrc":"6793:1:42","nodeType":"YulIdentifier","src":"6793:1:42"},{"name":"y","nativeSrc":"6796:1:42","nodeType":"YulIdentifier","src":"6796:1:42"},{"name":"denominator","nativeSrc":"6799:11:42","nodeType":"YulIdentifier","src":"6799:11:42"}],"functionName":{"name":"mulmod","nativeSrc":"6786:6:42","nodeType":"YulIdentifier","src":"6786:6:42"},"nativeSrc":"6786:25:42","nodeType":"YulFunctionCall","src":"6786:25:42"},"variableNames":[{"name":"remainder","nativeSrc":"6773:9:42","nodeType":"YulIdentifier","src":"6773:9:42"}]},{"nativeSrc":"6893:41:42","nodeType":"YulAssignment","src":"6893:41:42","value":{"arguments":[{"name":"prod1","nativeSrc":"6906:5:42","nodeType":"YulIdentifier","src":"6906:5:42"},{"arguments":[{"name":"remainder","nativeSrc":"6916:9:42","nodeType":"YulIdentifier","src":"6916:9:42"},{"name":"prod0","nativeSrc":"6927:5:42","nodeType":"YulIdentifier","src":"6927:5:42"}],"functionName":{"name":"gt","nativeSrc":"6913:2:42","nodeType":"YulIdentifier","src":"6913:2:42"},"nativeSrc":"6913:20:42","nodeType":"YulFunctionCall","src":"6913:20:42"}],"functionName":{"name":"sub","nativeSrc":"6902:3:42","nodeType":"YulIdentifier","src":"6902:3:42"},"nativeSrc":"6902:32:42","nodeType":"YulFunctionCall","src":"6902:32:42"},"variableNames":[{"name":"prod1","nativeSrc":"6893:5:42","nodeType":"YulIdentifier","src":"6893:5:42"}]},{"nativeSrc":"6951:30:42","nodeType":"YulAssignment","src":"6951:30:42","value":{"arguments":[{"name":"prod0","nativeSrc":"6964:5:42","nodeType":"YulIdentifier","src":"6964:5:42"},{"name":"remainder","nativeSrc":"6971:9:42","nodeType":"YulIdentifier","src":"6971:9:42"}],"functionName":{"name":"sub","nativeSrc":"6960:3:42","nodeType":"YulIdentifier","src":"6960:3:42"},"nativeSrc":"6960:21:42","nodeType":"YulFunctionCall","src":"6960:21:42"},"variableNames":[{"name":"prod0","nativeSrc":"6951:5:42","nodeType":"YulIdentifier","src":"6951:5:42"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10009,"isOffset":false,"isSlot":false,"src":"6799:11:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"6927:5:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"6951:5:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"6964:5:42","valueSize":1},{"declaration":10021,"isOffset":false,"isSlot":false,"src":"6893:5:42","valueSize":1},{"declaration":10021,"isOffset":false,"isSlot":false,"src":"6906:5:42","valueSize":1},{"declaration":10053,"isOffset":false,"isSlot":false,"src":"6773:9:42","valueSize":1},{"declaration":10053,"isOffset":false,"isSlot":false,"src":"6916:9:42","valueSize":1},{"declaration":10053,"isOffset":false,"isSlot":false,"src":"6971:9:42","valueSize":1},{"declaration":10005,"isOffset":false,"isSlot":false,"src":"6793:1:42","valueSize":1},{"declaration":10007,"isOffset":false,"isSlot":false,"src":"6796:1:42","valueSize":1}],"id":10055,"nodeType":"InlineAssembly","src":"6695:300:42"},{"assignments":[10057],"declarations":[{"constant":false,"id":10057,"mutability":"mutable","name":"twos","nameLocation":"7207:4:42","nodeType":"VariableDeclaration","scope":10137,"src":"7199:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10056,"name":"uint256","nodeType":"ElementaryTypeName","src":"7199:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10064,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10058,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"7214:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":10059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7229:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":10060,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"7233:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7229:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7228:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7214:31:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7199:46:42"},{"AST":{"nativeSrc":"7268:366:42","nodeType":"YulBlock","src":"7268:366:42","statements":[{"nativeSrc":"7333:37:42","nodeType":"YulAssignment","src":"7333:37:42","value":{"arguments":[{"name":"denominator","nativeSrc":"7352:11:42","nodeType":"YulIdentifier","src":"7352:11:42"},{"name":"twos","nativeSrc":"7365:4:42","nodeType":"YulIdentifier","src":"7365:4:42"}],"functionName":{"name":"div","nativeSrc":"7348:3:42","nodeType":"YulIdentifier","src":"7348:3:42"},"nativeSrc":"7348:22:42","nodeType":"YulFunctionCall","src":"7348:22:42"},"variableNames":[{"name":"denominator","nativeSrc":"7333:11:42","nodeType":"YulIdentifier","src":"7333:11:42"}]},{"nativeSrc":"7437:25:42","nodeType":"YulAssignment","src":"7437:25:42","value":{"arguments":[{"name":"prod0","nativeSrc":"7450:5:42","nodeType":"YulIdentifier","src":"7450:5:42"},{"name":"twos","nativeSrc":"7457:4:42","nodeType":"YulIdentifier","src":"7457:4:42"}],"functionName":{"name":"div","nativeSrc":"7446:3:42","nodeType":"YulIdentifier","src":"7446:3:42"},"nativeSrc":"7446:16:42","nodeType":"YulFunctionCall","src":"7446:16:42"},"variableNames":[{"name":"prod0","nativeSrc":"7437:5:42","nodeType":"YulIdentifier","src":"7437:5:42"}]},{"nativeSrc":"7581:39:42","nodeType":"YulAssignment","src":"7581:39:42","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7601:1:42","nodeType":"YulLiteral","src":"7601:1:42","type":"","value":"0"},{"name":"twos","nativeSrc":"7604:4:42","nodeType":"YulIdentifier","src":"7604:4:42"}],"functionName":{"name":"sub","nativeSrc":"7597:3:42","nodeType":"YulIdentifier","src":"7597:3:42"},"nativeSrc":"7597:12:42","nodeType":"YulFunctionCall","src":"7597:12:42"},{"name":"twos","nativeSrc":"7611:4:42","nodeType":"YulIdentifier","src":"7611:4:42"}],"functionName":{"name":"div","nativeSrc":"7593:3:42","nodeType":"YulIdentifier","src":"7593:3:42"},"nativeSrc":"7593:23:42","nodeType":"YulFunctionCall","src":"7593:23:42"},{"kind":"number","nativeSrc":"7618:1:42","nodeType":"YulLiteral","src":"7618:1:42","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7589:3:42","nodeType":"YulIdentifier","src":"7589:3:42"},"nativeSrc":"7589:31:42","nodeType":"YulFunctionCall","src":"7589:31:42"},"variableNames":[{"name":"twos","nativeSrc":"7581:4:42","nodeType":"YulIdentifier","src":"7581:4:42"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10009,"isOffset":false,"isSlot":false,"src":"7333:11:42","valueSize":1},{"declaration":10009,"isOffset":false,"isSlot":false,"src":"7352:11:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"7437:5:42","valueSize":1},{"declaration":10015,"isOffset":false,"isSlot":false,"src":"7450:5:42","valueSize":1},{"declaration":10057,"isOffset":false,"isSlot":false,"src":"7365:4:42","valueSize":1},{"declaration":10057,"isOffset":false,"isSlot":false,"src":"7457:4:42","valueSize":1},{"declaration":10057,"isOffset":false,"isSlot":false,"src":"7581:4:42","valueSize":1},{"declaration":10057,"isOffset":false,"isSlot":false,"src":"7604:4:42","valueSize":1},{"declaration":10057,"isOffset":false,"isSlot":false,"src":"7611:4:42","valueSize":1}],"id":10065,"nodeType":"InlineAssembly","src":"7259:375:42"},{"expression":{"id":10070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10066,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10015,"src":"7700:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10067,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10021,"src":"7709:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10068,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10057,"src":"7717:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7709:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7700:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10071,"nodeType":"ExpressionStatement","src":"7700:21:42"},{"assignments":[10073],"declarations":[{"constant":false,"id":10073,"mutability":"mutable","name":"inverse","nameLocation":"8064:7:42","nodeType":"VariableDeclaration","scope":10137,"src":"8056:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10072,"name":"uint256","nodeType":"ElementaryTypeName","src":"8056:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10080,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":10074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8075:1:42","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10075,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8079:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8075:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8074:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":10078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8094:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8074:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8056:39:42"},{"expression":{"id":10087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10081,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8312:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8323:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10083,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8327:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10084,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8341:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8327:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8323:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8312:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10088,"nodeType":"ExpressionStatement","src":"8312:36:42"},{"expression":{"id":10095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10089,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8382:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8393:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10091,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8397:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10092,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8411:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8397:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8393:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8382:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10096,"nodeType":"ExpressionStatement","src":"8382:36:42"},{"expression":{"id":10103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10097,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8454:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8465:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10099,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8469:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10100,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8483:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8469:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8465:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8454:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10104,"nodeType":"ExpressionStatement","src":"8454:36:42"},{"expression":{"id":10111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10105,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8525:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8536:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10107,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8540:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10108,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8554:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8540:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8536:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8525:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10112,"nodeType":"ExpressionStatement","src":"8525:36:42"},{"expression":{"id":10119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10113,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8598:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8609:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10115,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8613:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10116,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8627:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8613:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8609:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8598:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10120,"nodeType":"ExpressionStatement","src":"8598:36:42"},{"expression":{"id":10127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10121,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8672:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8683:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10123,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10009,"src":"8687:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10124,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"8701:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8687:21:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8683:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8672:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10128,"nodeType":"ExpressionStatement","src":"8672:36:42"},{"expression":{"id":10133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10129,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"9154:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10130,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10015,"src":"9163:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10131,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10073,"src":"9171:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9163:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9154:24:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10134,"nodeType":"ExpressionStatement","src":"9154:24:42"},{"expression":{"id":10135,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10012,"src":"9199:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10013,"id":10136,"nodeType":"Return","src":"9192:13:42"}]}]},"documentation":{"id":10003,"nodeType":"StructuredDocumentation","src":"4679:312:42","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":10139,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5005:6:42","nodeType":"FunctionDefinition","parameters":{"id":10010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10005,"mutability":"mutable","name":"x","nameLocation":"5020:1:42","nodeType":"VariableDeclaration","scope":10139,"src":"5012:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10004,"name":"uint256","nodeType":"ElementaryTypeName","src":"5012:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10007,"mutability":"mutable","name":"y","nameLocation":"5031:1:42","nodeType":"VariableDeclaration","scope":10139,"src":"5023:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10006,"name":"uint256","nodeType":"ElementaryTypeName","src":"5023:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10009,"mutability":"mutable","name":"denominator","nameLocation":"5042:11:42","nodeType":"VariableDeclaration","scope":10139,"src":"5034:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10008,"name":"uint256","nodeType":"ElementaryTypeName","src":"5034:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5011:43:42"},"returnParameters":{"id":10013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10012,"mutability":"mutable","name":"result","nameLocation":"5086:6:42","nodeType":"VariableDeclaration","scope":10139,"src":"5078:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10011,"name":"uint256","nodeType":"ElementaryTypeName","src":"5078:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5077:16:42"},"scope":11309,"src":"4996:4226:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10175,"nodeType":"Block","src":"9461:128:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10155,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10142,"src":"9485:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10156,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"9488:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10157,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"9491:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10154,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[10139,10176],"referencedDeclaration":10139,"src":"9478:6:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":10158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9478:25:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10162,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10149,"src":"9539:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":10161,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"9522:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$9715_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9522:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10165,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10142,"src":"9559:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10166,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10144,"src":"9562:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10167,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10146,"src":"9565:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10164,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"9552:6:42","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9552:25:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":10169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9580:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9552:29:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9522:59:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10159,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"9506:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9515:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"9506:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9506:76:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9478:104:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10153,"id":10174,"nodeType":"Return","src":"9471:111:42"}]},"documentation":{"id":10140,"nodeType":"StructuredDocumentation","src":"9228:118:42","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":10176,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"9360:6:42","nodeType":"FunctionDefinition","parameters":{"id":10150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10142,"mutability":"mutable","name":"x","nameLocation":"9375:1:42","nodeType":"VariableDeclaration","scope":10176,"src":"9367:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10141,"name":"uint256","nodeType":"ElementaryTypeName","src":"9367:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10144,"mutability":"mutable","name":"y","nameLocation":"9386:1:42","nodeType":"VariableDeclaration","scope":10176,"src":"9378:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10143,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10146,"mutability":"mutable","name":"denominator","nameLocation":"9397:11:42","nodeType":"VariableDeclaration","scope":10176,"src":"9389:19:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10145,"name":"uint256","nodeType":"ElementaryTypeName","src":"9389:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10149,"mutability":"mutable","name":"rounding","nameLocation":"9419:8:42","nodeType":"VariableDeclaration","scope":10176,"src":"9410:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":10148,"nodeType":"UserDefinedTypeName","pathNode":{"id":10147,"name":"Rounding","nameLocations":["9410:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"9410:8:42"},"referencedDeclaration":9715,"src":"9410:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9366:62:42"},"returnParameters":{"id":10153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10176,"src":"9452:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10151,"name":"uint256","nodeType":"ElementaryTypeName","src":"9452:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9451:9:42"},"scope":11309,"src":"9351:238:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10272,"nodeType":"Block","src":"10223:1849:42","statements":[{"id":10271,"nodeType":"UncheckedBlock","src":"10233:1833:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10186,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10181,"src":"10261:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10266:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10261:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10191,"nodeType":"IfStatement","src":"10257:20:42","trueBody":{"expression":{"hexValue":"30","id":10189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10276:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10185,"id":10190,"nodeType":"Return","src":"10269:8:42"}},{"assignments":[10193],"declarations":[{"constant":false,"id":10193,"mutability":"mutable","name":"remainder","nameLocation":"10756:9:42","nodeType":"VariableDeclaration","scope":10271,"src":"10748:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10192,"name":"uint256","nodeType":"ElementaryTypeName","src":"10748:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10197,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10194,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10179,"src":"10768:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":10195,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10181,"src":"10772:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10768:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10748:25:42"},{"assignments":[10199],"declarations":[{"constant":false,"id":10199,"mutability":"mutable","name":"gcd","nameLocation":"10795:3:42","nodeType":"VariableDeclaration","scope":10271,"src":"10787:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10198,"name":"uint256","nodeType":"ElementaryTypeName","src":"10787:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10201,"initialValue":{"id":10200,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10181,"src":"10801:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10787:15:42"},{"assignments":[10203],"declarations":[{"constant":false,"id":10203,"mutability":"mutable","name":"x","nameLocation":"10945:1:42","nodeType":"VariableDeclaration","scope":10271,"src":"10938:8:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10202,"name":"int256","nodeType":"ElementaryTypeName","src":"10938:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10205,"initialValue":{"hexValue":"30","id":10204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10949:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10938:12:42"},{"assignments":[10207],"declarations":[{"constant":false,"id":10207,"mutability":"mutable","name":"y","nameLocation":"10971:1:42","nodeType":"VariableDeclaration","scope":10271,"src":"10964:8:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10206,"name":"int256","nodeType":"ElementaryTypeName","src":"10964:6:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":10209,"initialValue":{"hexValue":"31","id":10208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10975:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"10964:12:42"},{"body":{"id":10246,"nodeType":"Block","src":"11014:882:42","statements":[{"assignments":[10214],"declarations":[{"constant":false,"id":10214,"mutability":"mutable","name":"quotient","nameLocation":"11040:8:42","nodeType":"VariableDeclaration","scope":10246,"src":"11032:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10213,"name":"uint256","nodeType":"ElementaryTypeName","src":"11032:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10218,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10215,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"11051:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10216,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"11057:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11051:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11032:34:42"},{"expression":{"id":10229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":10219,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"11086:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10220,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"11091:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10221,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11085:16:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":10222,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"11191:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10223,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"11436:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10224,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"11442:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10225,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10214,"src":"11454:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11442:20:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11436:26:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10228,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11104:376:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"11085:395:42","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10230,"nodeType":"ExpressionStatement","src":"11085:395:42"},{"expression":{"id":10244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":10231,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"11500:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":10232,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"11503:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10233,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11499:6:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":10234,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"11585:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10235,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"11839:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10236,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"11843:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":10239,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10214,"src":"11854:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11847:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":10237,"name":"int256","nodeType":"ElementaryTypeName","src":"11847:6:42","typeDescriptions":{}}},"id":10240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11847:16:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11843:20:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:24:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":10243,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11508:373:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"11499:382:42","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10245,"nodeType":"ExpressionStatement","src":"11499:382:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10210,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10193,"src":"10998:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11011:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10998:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10247,"nodeType":"WhileStatement","src":"10991:905:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10248,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10199,"src":"11914:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":10249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11921:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11914:8:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10253,"nodeType":"IfStatement","src":"11910:22:42","trueBody":{"expression":{"hexValue":"30","id":10251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11931:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":10185,"id":10252,"nodeType":"Return","src":"11924:8:42"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10255,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"11983:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":10256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11987:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11983:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10258,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10181,"src":"11990:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":10262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"12002:2:42","subExpression":{"id":10261,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"12003:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11994:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10259,"name":"uint256","nodeType":"ElementaryTypeName","src":"11994:7:42","typeDescriptions":{}}},"id":10263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11994:11:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11990:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10267,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"12015:1:42","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":10266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12007:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10265,"name":"uint256","nodeType":"ElementaryTypeName","src":"12007:7:42","typeDescriptions":{}}},"id":10268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12007:10:42","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":10254,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"11975:7:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":10269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11975:43:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10185,"id":10270,"nodeType":"Return","src":"11968:50:42"}]}]},"documentation":{"id":10177,"nodeType":"StructuredDocumentation","src":"9595:553:42","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":10273,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"10162:6:42","nodeType":"FunctionDefinition","parameters":{"id":10182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10179,"mutability":"mutable","name":"a","nameLocation":"10177:1:42","nodeType":"VariableDeclaration","scope":10273,"src":"10169:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10178,"name":"uint256","nodeType":"ElementaryTypeName","src":"10169:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10181,"mutability":"mutable","name":"n","nameLocation":"10188:1:42","nodeType":"VariableDeclaration","scope":10273,"src":"10180:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10180,"name":"uint256","nodeType":"ElementaryTypeName","src":"10180:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10168:22:42"},"returnParameters":{"id":10185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10273,"src":"10214:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10183,"name":"uint256","nodeType":"ElementaryTypeName","src":"10214:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10213:9:42"},"scope":11309,"src":"10153:1919:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10293,"nodeType":"Block","src":"12672:82:42","statements":[{"id":10292,"nodeType":"UncheckedBlock","src":"12682:66:42","statements":[{"expression":{"arguments":[{"id":10285,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10276,"src":"12725:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10286,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"12728:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":10287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12732:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12728:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10289,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"12735:1:42","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":10283,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"12713:4:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":10284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12718:6:42","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":10330,"src":"12713:11:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":10290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12713:24:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10282,"id":10291,"nodeType":"Return","src":"12706:31:42"}]}]},"documentation":{"id":10274,"nodeType":"StructuredDocumentation","src":"12078:514:42","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":10294,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"12606:11:42","nodeType":"FunctionDefinition","parameters":{"id":10279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10276,"mutability":"mutable","name":"a","nameLocation":"12626:1:42","nodeType":"VariableDeclaration","scope":10294,"src":"12618:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10275,"name":"uint256","nodeType":"ElementaryTypeName","src":"12618:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10278,"mutability":"mutable","name":"p","nameLocation":"12637:1:42","nodeType":"VariableDeclaration","scope":10294,"src":"12629:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10277,"name":"uint256","nodeType":"ElementaryTypeName","src":"12629:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12617:22:42"},"returnParameters":{"id":10282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10294,"src":"12663:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10280,"name":"uint256","nodeType":"ElementaryTypeName","src":"12663:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12662:9:42"},"scope":11309,"src":"12597:157:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10329,"nodeType":"Block","src":"13524:174:42","statements":[{"assignments":[10307,10309],"declarations":[{"constant":false,"id":10307,"mutability":"mutable","name":"success","nameLocation":"13540:7:42","nodeType":"VariableDeclaration","scope":10329,"src":"13535:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10306,"name":"bool","nodeType":"ElementaryTypeName","src":"13535:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10309,"mutability":"mutable","name":"result","nameLocation":"13557:6:42","nodeType":"VariableDeclaration","scope":10329,"src":"13549:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10308,"name":"uint256","nodeType":"ElementaryTypeName","src":"13549:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10315,"initialValue":{"arguments":[{"id":10311,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10297,"src":"13577:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10312,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10299,"src":"13580:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10313,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10301,"src":"13583:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10310,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[10354,10436],"referencedDeclaration":10354,"src":"13567:9:42","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":10314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13567:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13534:51:42"},{"condition":{"id":10317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13599:8:42","subExpression":{"id":10316,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"13600:7:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10326,"nodeType":"IfStatement","src":"13595:74:42","trueBody":{"id":10325,"nodeType":"Block","src":"13609:60:42","statements":[{"expression":{"arguments":[{"expression":{"id":10321,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"13635:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13641:16:42","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":9510,"src":"13635:22:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10318,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"13623:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13629:5:42","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":9542,"src":"13623:11:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13623:35:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10324,"nodeType":"ExpressionStatement","src":"13623:35:42"}]}},{"expression":{"id":10327,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10309,"src":"13685:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10305,"id":10328,"nodeType":"Return","src":"13678:13:42"}]},"documentation":{"id":10295,"nodeType":"StructuredDocumentation","src":"12760:678:42","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":10330,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"13452:6:42","nodeType":"FunctionDefinition","parameters":{"id":10302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10297,"mutability":"mutable","name":"b","nameLocation":"13467:1:42","nodeType":"VariableDeclaration","scope":10330,"src":"13459:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10296,"name":"uint256","nodeType":"ElementaryTypeName","src":"13459:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10299,"mutability":"mutable","name":"e","nameLocation":"13478:1:42","nodeType":"VariableDeclaration","scope":10330,"src":"13470:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10298,"name":"uint256","nodeType":"ElementaryTypeName","src":"13470:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10301,"mutability":"mutable","name":"m","nameLocation":"13489:1:42","nodeType":"VariableDeclaration","scope":10330,"src":"13481:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10300,"name":"uint256","nodeType":"ElementaryTypeName","src":"13481:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13458:33:42"},"returnParameters":{"id":10305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10330,"src":"13515:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10303,"name":"uint256","nodeType":"ElementaryTypeName","src":"13515:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13514:9:42"},"scope":11309,"src":"13443:255:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10353,"nodeType":"Block","src":"14552:1493:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10344,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10337,"src":"14566:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14571:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14566:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10351,"nodeType":"IfStatement","src":"14562:29:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":10347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14582:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":10348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14589:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":10349,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14581:10:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":10343,"id":10350,"nodeType":"Return","src":"14574:17:42"}},{"AST":{"nativeSrc":"14626:1413:42","nodeType":"YulBlock","src":"14626:1413:42","statements":[{"nativeSrc":"14640:22:42","nodeType":"YulVariableDeclaration","src":"14640:22:42","value":{"arguments":[{"kind":"number","nativeSrc":"14657:4:42","nodeType":"YulLiteral","src":"14657:4:42","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"14651:5:42","nodeType":"YulIdentifier","src":"14651:5:42"},"nativeSrc":"14651:11:42","nodeType":"YulFunctionCall","src":"14651:11:42"},"variables":[{"name":"ptr","nativeSrc":"14644:3:42","nodeType":"YulTypedName","src":"14644:3:42","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"15570:3:42","nodeType":"YulIdentifier","src":"15570:3:42"},{"kind":"number","nativeSrc":"15575:4:42","nodeType":"YulLiteral","src":"15575:4:42","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"15563:6:42","nodeType":"YulIdentifier","src":"15563:6:42"},"nativeSrc":"15563:17:42","nodeType":"YulFunctionCall","src":"15563:17:42"},"nativeSrc":"15563:17:42","nodeType":"YulExpressionStatement","src":"15563:17:42"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"15604:3:42","nodeType":"YulIdentifier","src":"15604:3:42"},{"kind":"number","nativeSrc":"15609:4:42","nodeType":"YulLiteral","src":"15609:4:42","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15600:3:42","nodeType":"YulIdentifier","src":"15600:3:42"},"nativeSrc":"15600:14:42","nodeType":"YulFunctionCall","src":"15600:14:42"},{"kind":"number","nativeSrc":"15616:4:42","nodeType":"YulLiteral","src":"15616:4:42","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"15593:6:42","nodeType":"YulIdentifier","src":"15593:6:42"},"nativeSrc":"15593:28:42","nodeType":"YulFunctionCall","src":"15593:28:42"},"nativeSrc":"15593:28:42","nodeType":"YulExpressionStatement","src":"15593:28:42"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"15645:3:42","nodeType":"YulIdentifier","src":"15645:3:42"},{"kind":"number","nativeSrc":"15650:4:42","nodeType":"YulLiteral","src":"15650:4:42","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"15641:3:42","nodeType":"YulIdentifier","src":"15641:3:42"},"nativeSrc":"15641:14:42","nodeType":"YulFunctionCall","src":"15641:14:42"},{"kind":"number","nativeSrc":"15657:4:42","nodeType":"YulLiteral","src":"15657:4:42","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"15634:6:42","nodeType":"YulIdentifier","src":"15634:6:42"},"nativeSrc":"15634:28:42","nodeType":"YulFunctionCall","src":"15634:28:42"},"nativeSrc":"15634:28:42","nodeType":"YulExpressionStatement","src":"15634:28:42"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"15686:3:42","nodeType":"YulIdentifier","src":"15686:3:42"},{"kind":"number","nativeSrc":"15691:4:42","nodeType":"YulLiteral","src":"15691:4:42","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"15682:3:42","nodeType":"YulIdentifier","src":"15682:3:42"},"nativeSrc":"15682:14:42","nodeType":"YulFunctionCall","src":"15682:14:42"},{"name":"b","nativeSrc":"15698:1:42","nodeType":"YulIdentifier","src":"15698:1:42"}],"functionName":{"name":"mstore","nativeSrc":"15675:6:42","nodeType":"YulIdentifier","src":"15675:6:42"},"nativeSrc":"15675:25:42","nodeType":"YulFunctionCall","src":"15675:25:42"},"nativeSrc":"15675:25:42","nodeType":"YulExpressionStatement","src":"15675:25:42"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"15724:3:42","nodeType":"YulIdentifier","src":"15724:3:42"},{"kind":"number","nativeSrc":"15729:4:42","nodeType":"YulLiteral","src":"15729:4:42","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"15720:3:42","nodeType":"YulIdentifier","src":"15720:3:42"},"nativeSrc":"15720:14:42","nodeType":"YulFunctionCall","src":"15720:14:42"},{"name":"e","nativeSrc":"15736:1:42","nodeType":"YulIdentifier","src":"15736:1:42"}],"functionName":{"name":"mstore","nativeSrc":"15713:6:42","nodeType":"YulIdentifier","src":"15713:6:42"},"nativeSrc":"15713:25:42","nodeType":"YulFunctionCall","src":"15713:25:42"},"nativeSrc":"15713:25:42","nodeType":"YulExpressionStatement","src":"15713:25:42"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"15762:3:42","nodeType":"YulIdentifier","src":"15762:3:42"},{"kind":"number","nativeSrc":"15767:4:42","nodeType":"YulLiteral","src":"15767:4:42","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"15758:3:42","nodeType":"YulIdentifier","src":"15758:3:42"},"nativeSrc":"15758:14:42","nodeType":"YulFunctionCall","src":"15758:14:42"},{"name":"m","nativeSrc":"15774:1:42","nodeType":"YulIdentifier","src":"15774:1:42"}],"functionName":{"name":"mstore","nativeSrc":"15751:6:42","nodeType":"YulIdentifier","src":"15751:6:42"},"nativeSrc":"15751:25:42","nodeType":"YulFunctionCall","src":"15751:25:42"},"nativeSrc":"15751:25:42","nodeType":"YulExpressionStatement","src":"15751:25:42"},{"nativeSrc":"15938:57:42","nodeType":"YulAssignment","src":"15938:57:42","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"15960:3:42","nodeType":"YulIdentifier","src":"15960:3:42"},"nativeSrc":"15960:5:42","nodeType":"YulFunctionCall","src":"15960:5:42"},{"kind":"number","nativeSrc":"15967:4:42","nodeType":"YulLiteral","src":"15967:4:42","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"15973:3:42","nodeType":"YulIdentifier","src":"15973:3:42"},{"kind":"number","nativeSrc":"15978:4:42","nodeType":"YulLiteral","src":"15978:4:42","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"15984:4:42","nodeType":"YulLiteral","src":"15984:4:42","type":"","value":"0x00"},{"kind":"number","nativeSrc":"15990:4:42","nodeType":"YulLiteral","src":"15990:4:42","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"15949:10:42","nodeType":"YulIdentifier","src":"15949:10:42"},"nativeSrc":"15949:46:42","nodeType":"YulFunctionCall","src":"15949:46:42"},"variableNames":[{"name":"success","nativeSrc":"15938:7:42","nodeType":"YulIdentifier","src":"15938:7:42"}]},{"nativeSrc":"16008:21:42","nodeType":"YulAssignment","src":"16008:21:42","value":{"arguments":[{"kind":"number","nativeSrc":"16024:4:42","nodeType":"YulLiteral","src":"16024:4:42","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"16018:5:42","nodeType":"YulIdentifier","src":"16018:5:42"},"nativeSrc":"16018:11:42","nodeType":"YulFunctionCall","src":"16018:11:42"},"variableNames":[{"name":"result","nativeSrc":"16008:6:42","nodeType":"YulIdentifier","src":"16008:6:42"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":10333,"isOffset":false,"isSlot":false,"src":"15698:1:42","valueSize":1},{"declaration":10335,"isOffset":false,"isSlot":false,"src":"15736:1:42","valueSize":1},{"declaration":10337,"isOffset":false,"isSlot":false,"src":"15774:1:42","valueSize":1},{"declaration":10342,"isOffset":false,"isSlot":false,"src":"16008:6:42","valueSize":1},{"declaration":10340,"isOffset":false,"isSlot":false,"src":"15938:7:42","valueSize":1}],"flags":["memory-safe"],"id":10352,"nodeType":"InlineAssembly","src":"14601:1438:42"}]},"documentation":{"id":10331,"nodeType":"StructuredDocumentation","src":"13704:738:42","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":10354,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"14456:9:42","nodeType":"FunctionDefinition","parameters":{"id":10338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10333,"mutability":"mutable","name":"b","nameLocation":"14474:1:42","nodeType":"VariableDeclaration","scope":10354,"src":"14466:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10332,"name":"uint256","nodeType":"ElementaryTypeName","src":"14466:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10335,"mutability":"mutable","name":"e","nameLocation":"14485:1:42","nodeType":"VariableDeclaration","scope":10354,"src":"14477:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10334,"name":"uint256","nodeType":"ElementaryTypeName","src":"14477:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10337,"mutability":"mutable","name":"m","nameLocation":"14496:1:42","nodeType":"VariableDeclaration","scope":10354,"src":"14488:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10336,"name":"uint256","nodeType":"ElementaryTypeName","src":"14488:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14465:33:42"},"returnParameters":{"id":10343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10340,"mutability":"mutable","name":"success","nameLocation":"14527:7:42","nodeType":"VariableDeclaration","scope":10354,"src":"14522:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10339,"name":"bool","nodeType":"ElementaryTypeName","src":"14522:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10342,"mutability":"mutable","name":"result","nameLocation":"14544:6:42","nodeType":"VariableDeclaration","scope":10354,"src":"14536:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10341,"name":"uint256","nodeType":"ElementaryTypeName","src":"14536:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14521:30:42"},"scope":11309,"src":"14447:1598:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10389,"nodeType":"Block","src":"16242:179:42","statements":[{"assignments":[10367,10369],"declarations":[{"constant":false,"id":10367,"mutability":"mutable","name":"success","nameLocation":"16258:7:42","nodeType":"VariableDeclaration","scope":10389,"src":"16253:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10366,"name":"bool","nodeType":"ElementaryTypeName","src":"16253:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10369,"mutability":"mutable","name":"result","nameLocation":"16280:6:42","nodeType":"VariableDeclaration","scope":10389,"src":"16267:19:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10368,"name":"bytes","nodeType":"ElementaryTypeName","src":"16267:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":10375,"initialValue":{"arguments":[{"id":10371,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10357,"src":"16300:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10372,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10359,"src":"16303:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10373,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10361,"src":"16306:1:42","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":10370,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[10354,10436],"referencedDeclaration":10436,"src":"16290:9:42","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":10374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16290:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"16252:56:42"},{"condition":{"id":10377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16322:8:42","subExpression":{"id":10376,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10367,"src":"16323:7:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10386,"nodeType":"IfStatement","src":"16318:74:42","trueBody":{"id":10385,"nodeType":"Block","src":"16332:60:42","statements":[{"expression":{"arguments":[{"expression":{"id":10381,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"16358:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16364:16:42","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":9510,"src":"16358:22:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10378,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"16346:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$9543_$","typeString":"type(library Panic)"}},"id":10380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16352:5:42","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":9542,"src":"16346:11:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":10383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16346:35:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10384,"nodeType":"ExpressionStatement","src":"16346:35:42"}]}},{"expression":{"id":10387,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10369,"src":"16408:6:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":10365,"id":10388,"nodeType":"Return","src":"16401:13:42"}]},"documentation":{"id":10355,"nodeType":"StructuredDocumentation","src":"16051:85:42","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":10390,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"16150:6:42","nodeType":"FunctionDefinition","parameters":{"id":10362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10357,"mutability":"mutable","name":"b","nameLocation":"16170:1:42","nodeType":"VariableDeclaration","scope":10390,"src":"16157:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10356,"name":"bytes","nodeType":"ElementaryTypeName","src":"16157:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10359,"mutability":"mutable","name":"e","nameLocation":"16186:1:42","nodeType":"VariableDeclaration","scope":10390,"src":"16173:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10358,"name":"bytes","nodeType":"ElementaryTypeName","src":"16173:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10361,"mutability":"mutable","name":"m","nameLocation":"16202:1:42","nodeType":"VariableDeclaration","scope":10390,"src":"16189:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10360,"name":"bytes","nodeType":"ElementaryTypeName","src":"16189:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16156:48:42"},"returnParameters":{"id":10365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10364,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10390,"src":"16228:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10363,"name":"bytes","nodeType":"ElementaryTypeName","src":"16228:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16227:14:42"},"scope":11309,"src":"16141:280:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10435,"nodeType":"Block","src":"16675:771:42","statements":[{"condition":{"arguments":[{"id":10405,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10397,"src":"16700:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10404,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10469,"src":"16689:10:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":10406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16689:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10414,"nodeType":"IfStatement","src":"16685:47:42","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":10407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16712:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":10410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16729: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":10409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16719:9:42","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":10408,"name":"bytes","nodeType":"ElementaryTypeName","src":"16723:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":10411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16719:12:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":10412,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16711:21:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":10403,"id":10413,"nodeType":"Return","src":"16704:28:42"}},{"assignments":[10416],"declarations":[{"constant":false,"id":10416,"mutability":"mutable","name":"mLen","nameLocation":"16751:4:42","nodeType":"VariableDeclaration","scope":10435,"src":"16743:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10415,"name":"uint256","nodeType":"ElementaryTypeName","src":"16743:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10419,"initialValue":{"expression":{"id":10417,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10397,"src":"16758:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16760:6:42","memberName":"length","nodeType":"MemberAccess","src":"16758:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16743:23:42"},{"expression":{"id":10432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10420,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10402,"src":"16848:6:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":10423,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10393,"src":"16874:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16876:6:42","memberName":"length","nodeType":"MemberAccess","src":"16874:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":10425,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10395,"src":"16884:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16886:6:42","memberName":"length","nodeType":"MemberAccess","src":"16884:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10427,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10416,"src":"16894:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10428,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10393,"src":"16900:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10429,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10395,"src":"16903:1:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10430,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10397,"src":"16906:1:42","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":10421,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16857:3:42","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16861:12:42","memberName":"encodePacked","nodeType":"MemberAccess","src":"16857:16:42","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16857:51:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"16848:60:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10433,"nodeType":"ExpressionStatement","src":"16848:60:42"},{"AST":{"nativeSrc":"16944:496:42","nodeType":"YulBlock","src":"16944:496:42","statements":[{"nativeSrc":"16958:32:42","nodeType":"YulVariableDeclaration","src":"16958:32:42","value":{"arguments":[{"name":"result","nativeSrc":"16977:6:42","nodeType":"YulIdentifier","src":"16977:6:42"},{"kind":"number","nativeSrc":"16985:4:42","nodeType":"YulLiteral","src":"16985:4:42","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16973:3:42","nodeType":"YulIdentifier","src":"16973:3:42"},"nativeSrc":"16973:17:42","nodeType":"YulFunctionCall","src":"16973:17:42"},"variables":[{"name":"dataPtr","nativeSrc":"16962:7:42","nodeType":"YulTypedName","src":"16962:7:42","type":""}]},{"nativeSrc":"17080:73:42","nodeType":"YulAssignment","src":"17080:73:42","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"17102:3:42","nodeType":"YulIdentifier","src":"17102:3:42"},"nativeSrc":"17102:5:42","nodeType":"YulFunctionCall","src":"17102:5:42"},{"kind":"number","nativeSrc":"17109:4:42","nodeType":"YulLiteral","src":"17109:4:42","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"17115:7:42","nodeType":"YulIdentifier","src":"17115:7:42"},{"arguments":[{"name":"result","nativeSrc":"17130:6:42","nodeType":"YulIdentifier","src":"17130:6:42"}],"functionName":{"name":"mload","nativeSrc":"17124:5:42","nodeType":"YulIdentifier","src":"17124:5:42"},"nativeSrc":"17124:13:42","nodeType":"YulFunctionCall","src":"17124:13:42"},{"name":"dataPtr","nativeSrc":"17139:7:42","nodeType":"YulIdentifier","src":"17139:7:42"},{"name":"mLen","nativeSrc":"17148:4:42","nodeType":"YulIdentifier","src":"17148:4:42"}],"functionName":{"name":"staticcall","nativeSrc":"17091:10:42","nodeType":"YulIdentifier","src":"17091:10:42"},"nativeSrc":"17091:62:42","nodeType":"YulFunctionCall","src":"17091:62:42"},"variableNames":[{"name":"success","nativeSrc":"17080:7:42","nodeType":"YulIdentifier","src":"17080:7:42"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"17309:6:42","nodeType":"YulIdentifier","src":"17309:6:42"},{"name":"mLen","nativeSrc":"17317:4:42","nodeType":"YulIdentifier","src":"17317:4:42"}],"functionName":{"name":"mstore","nativeSrc":"17302:6:42","nodeType":"YulIdentifier","src":"17302:6:42"},"nativeSrc":"17302:20:42","nodeType":"YulFunctionCall","src":"17302:20:42"},"nativeSrc":"17302:20:42","nodeType":"YulExpressionStatement","src":"17302:20:42"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17405:4:42","nodeType":"YulLiteral","src":"17405:4:42","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"17415:7:42","nodeType":"YulIdentifier","src":"17415:7:42"},{"name":"mLen","nativeSrc":"17424:4:42","nodeType":"YulIdentifier","src":"17424:4:42"}],"functionName":{"name":"add","nativeSrc":"17411:3:42","nodeType":"YulIdentifier","src":"17411:3:42"},"nativeSrc":"17411:18:42","nodeType":"YulFunctionCall","src":"17411:18:42"}],"functionName":{"name":"mstore","nativeSrc":"17398:6:42","nodeType":"YulIdentifier","src":"17398:6:42"},"nativeSrc":"17398:32:42","nodeType":"YulFunctionCall","src":"17398:32:42"},"nativeSrc":"17398:32:42","nodeType":"YulExpressionStatement","src":"17398:32:42"}]},"evmVersion":"cancun","externalReferences":[{"declaration":10416,"isOffset":false,"isSlot":false,"src":"17148:4:42","valueSize":1},{"declaration":10416,"isOffset":false,"isSlot":false,"src":"17317:4:42","valueSize":1},{"declaration":10416,"isOffset":false,"isSlot":false,"src":"17424:4:42","valueSize":1},{"declaration":10402,"isOffset":false,"isSlot":false,"src":"16977:6:42","valueSize":1},{"declaration":10402,"isOffset":false,"isSlot":false,"src":"17130:6:42","valueSize":1},{"declaration":10402,"isOffset":false,"isSlot":false,"src":"17309:6:42","valueSize":1},{"declaration":10400,"isOffset":false,"isSlot":false,"src":"17080:7:42","valueSize":1}],"flags":["memory-safe"],"id":10434,"nodeType":"InlineAssembly","src":"16919:521:42"}]},"documentation":{"id":10391,"nodeType":"StructuredDocumentation","src":"16427:88:42","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":10436,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16529:9:42","nodeType":"FunctionDefinition","parameters":{"id":10398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10393,"mutability":"mutable","name":"b","nameLocation":"16561:1:42","nodeType":"VariableDeclaration","scope":10436,"src":"16548:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10392,"name":"bytes","nodeType":"ElementaryTypeName","src":"16548:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10395,"mutability":"mutable","name":"e","nameLocation":"16585:1:42","nodeType":"VariableDeclaration","scope":10436,"src":"16572:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10394,"name":"bytes","nodeType":"ElementaryTypeName","src":"16572:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":10397,"mutability":"mutable","name":"m","nameLocation":"16609:1:42","nodeType":"VariableDeclaration","scope":10436,"src":"16596:14:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10396,"name":"bytes","nodeType":"ElementaryTypeName","src":"16596:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16538:78:42"},"returnParameters":{"id":10403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10400,"mutability":"mutable","name":"success","nameLocation":"16645:7:42","nodeType":"VariableDeclaration","scope":10436,"src":"16640:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10399,"name":"bool","nodeType":"ElementaryTypeName","src":"16640:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10402,"mutability":"mutable","name":"result","nameLocation":"16667:6:42","nodeType":"VariableDeclaration","scope":10436,"src":"16654:19:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10401,"name":"bytes","nodeType":"ElementaryTypeName","src":"16654:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16639:35:42"},"scope":11309,"src":"16520:926:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10468,"nodeType":"Block","src":"17601:176:42","statements":[{"body":{"id":10464,"nodeType":"Block","src":"17658:92:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":10459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":10455,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10439,"src":"17676:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10457,"indexExpression":{"id":10456,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"17686:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17676:12:42","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":10458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17692:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17676:17:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10463,"nodeType":"IfStatement","src":"17672:68:42","trueBody":{"id":10462,"nodeType":"Block","src":"17695:45:42","statements":[{"expression":{"hexValue":"66616c7365","id":10460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17720:5:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10443,"id":10461,"nodeType":"Return","src":"17713:12:42"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10448,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"17631:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10449,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10439,"src":"17635:9:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17645:6:42","memberName":"length","nodeType":"MemberAccess","src":"17635:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17631:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10465,"initializationExpression":{"assignments":[10445],"declarations":[{"constant":false,"id":10445,"mutability":"mutable","name":"i","nameLocation":"17624:1:42","nodeType":"VariableDeclaration","scope":10465,"src":"17616:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10444,"name":"uint256","nodeType":"ElementaryTypeName","src":"17616:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10447,"initialValue":{"hexValue":"30","id":10446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17628:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17616:13:42"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":10453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17653:3:42","subExpression":{"id":10452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10445,"src":"17655:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10454,"nodeType":"ExpressionStatement","src":"17653:3:42"},"nodeType":"ForStatement","src":"17611:139:42"},{"expression":{"hexValue":"74727565","id":10466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17766:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10443,"id":10467,"nodeType":"Return","src":"17759:11:42"}]},"documentation":{"id":10437,"nodeType":"StructuredDocumentation","src":"17452:72:42","text":" @dev Returns whether the provided byte array is zero."},"id":10469,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"17538:10:42","nodeType":"FunctionDefinition","parameters":{"id":10440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10439,"mutability":"mutable","name":"byteArray","nameLocation":"17562:9:42","nodeType":"VariableDeclaration","scope":10469,"src":"17549:22:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10438,"name":"bytes","nodeType":"ElementaryTypeName","src":"17549:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17548:24:42"},"returnParameters":{"id":10443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10469,"src":"17595:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10441,"name":"bool","nodeType":"ElementaryTypeName","src":"17595:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17594:6:42"},"scope":11309,"src":"17529:248:42","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10687,"nodeType":"Block","src":"18137:5124:42","statements":[{"id":10686,"nodeType":"UncheckedBlock","src":"18147:5108:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10477,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"18241:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":10478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18246:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18241:6:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10483,"nodeType":"IfStatement","src":"18237:53:42","trueBody":{"id":10482,"nodeType":"Block","src":"18249:41:42","statements":[{"expression":{"id":10480,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"18274:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10476,"id":10481,"nodeType":"Return","src":"18267:8:42"}]}},{"assignments":[10485],"declarations":[{"constant":false,"id":10485,"mutability":"mutable","name":"aa","nameLocation":"19225:2:42","nodeType":"VariableDeclaration","scope":10686,"src":"19217:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10484,"name":"uint256","nodeType":"ElementaryTypeName","src":"19217:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10487,"initialValue":{"id":10486,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"19230:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19217:14:42"},{"assignments":[10489],"declarations":[{"constant":false,"id":10489,"mutability":"mutable","name":"xn","nameLocation":"19253:2:42","nodeType":"VariableDeclaration","scope":10686,"src":"19245:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10488,"name":"uint256","nodeType":"ElementaryTypeName","src":"19245:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10491,"initialValue":{"hexValue":"31","id":10490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19258:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"19245:14:42"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10492,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19278:2:42","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":10495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19285:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":10494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19290:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"19285:8:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":10496,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19284:10:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"19278:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10507,"nodeType":"IfStatement","src":"19274:92:42","trueBody":{"id":10506,"nodeType":"Block","src":"19296:70:42","statements":[{"expression":{"id":10500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10498,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19314:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":10499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19321:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"19314:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10501,"nodeType":"ExpressionStatement","src":"19314:10:42"},{"expression":{"id":10504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10502,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19342:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":10503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19349:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"19342:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10505,"nodeType":"ExpressionStatement","src":"19342:9:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10508,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19383:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":10511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19390:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":10510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19395:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"19390:7:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":10512,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19389:9:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"19383:15:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10523,"nodeType":"IfStatement","src":"19379:90:42","trueBody":{"id":10522,"nodeType":"Block","src":"19400:69:42","statements":[{"expression":{"id":10516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10514,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19418:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":10515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19425:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"19418:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10517,"nodeType":"ExpressionStatement","src":"19418:9:42"},{"expression":{"id":10520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10518,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19445:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":10519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19452:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"19445:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10521,"nodeType":"ExpressionStatement","src":"19445:9:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10524,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19486:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":10527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19493:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":10526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19498:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"19493:7:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":10528,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19492:9:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"19486:15:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10539,"nodeType":"IfStatement","src":"19482:90:42","trueBody":{"id":10538,"nodeType":"Block","src":"19503:69:42","statements":[{"expression":{"id":10532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10530,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19521:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":10531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19528:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"19521:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10533,"nodeType":"ExpressionStatement","src":"19521:9:42"},{"expression":{"id":10536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10534,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19548:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":10535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19555:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19548:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10537,"nodeType":"ExpressionStatement","src":"19548:9:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10540,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19589:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":10543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19596:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":10542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19601:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19596:7:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":10544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19595:9:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"19589:15:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10555,"nodeType":"IfStatement","src":"19585:89:42","trueBody":{"id":10554,"nodeType":"Block","src":"19606:68:42","statements":[{"expression":{"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10546,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19624:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":10547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19631:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"19624:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10549,"nodeType":"ExpressionStatement","src":"19624:9:42"},{"expression":{"id":10552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10550,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19651:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":10551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19658:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19651:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10553,"nodeType":"ExpressionStatement","src":"19651:8:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10556,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19691:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":10559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19698:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":10558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19703:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19698:6:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":10560,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19697:8:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"19691:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10571,"nodeType":"IfStatement","src":"19687:87:42","trueBody":{"id":10570,"nodeType":"Block","src":"19707:67:42","statements":[{"expression":{"id":10564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10562,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19725:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":10563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19732:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"19725:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10565,"nodeType":"ExpressionStatement","src":"19725:8:42"},{"expression":{"id":10568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10566,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19751:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":10567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19758:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19751:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10569,"nodeType":"ExpressionStatement","src":"19751:8:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10572,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19791:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":10575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19798:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":10574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19803:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19798:6:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":10576,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19797:8:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"19791:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10587,"nodeType":"IfStatement","src":"19787:87:42","trueBody":{"id":10586,"nodeType":"Block","src":"19807:67:42","statements":[{"expression":{"id":10580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10578,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19825:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":10579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19832:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"19825:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10581,"nodeType":"ExpressionStatement","src":"19825:8:42"},{"expression":{"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10582,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19851:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":10583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19858:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19851:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10585,"nodeType":"ExpressionStatement","src":"19851:8:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10588,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"19891:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":10591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19898:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":10590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19903:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"19898:6:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":10592,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19897:8:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"19891:14:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10599,"nodeType":"IfStatement","src":"19887:61:42","trueBody":{"id":10598,"nodeType":"Block","src":"19907:41:42","statements":[{"expression":{"id":10596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10594,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"19925:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":10595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19932:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19925:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10597,"nodeType":"ExpressionStatement","src":"19925:8:42"}]}},{"expression":{"id":10607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10600,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"20368:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":10601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20374:1:42","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10602,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"20378:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20374:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10604,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20373:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20385:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20373:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20368:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10608,"nodeType":"ExpressionStatement","src":"20368:18:42"},{"expression":{"id":10618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10609,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22273:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10610,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22279:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10611,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22284:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10612,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22288:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22284:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22279:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10615,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22278:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22295:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22278:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22273:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10619,"nodeType":"ExpressionStatement","src":"22273:23:42"},{"expression":{"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10620,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22382:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10621,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22388:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10622,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22393:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10623,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22397:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22393:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22388:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10626,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22387:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22404:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22387:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22382:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10630,"nodeType":"ExpressionStatement","src":"22382:23:42"},{"expression":{"id":10640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10631,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22493:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10632,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22499:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22504:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10634,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22508:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22504:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22499:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22498:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22515:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22498:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22493:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10641,"nodeType":"ExpressionStatement","src":"22493:23:42"},{"expression":{"id":10651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10642,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22602:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10643,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22608:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10644,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22613:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10645,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22617:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22613:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22608:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10648,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22607:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22624:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22607:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22602:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10652,"nodeType":"ExpressionStatement","src":"22602:23:42"},{"expression":{"id":10662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10653,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22712:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10654,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22718:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10655,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22723:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10656,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22727:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22723:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22718:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10659,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22717:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22734:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22717:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22712:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10663,"nodeType":"ExpressionStatement","src":"22712:23:42"},{"expression":{"id":10673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10664,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22822:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10665,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22828:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10666,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"22833:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10667,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"22837:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22833:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22828:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10670,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22827:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":10671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22844:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22827:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22822:23:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10674,"nodeType":"ExpressionStatement","src":"22822:23:42"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10675,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"23211:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10678,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"23232:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10679,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10472,"src":"23237:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":10680,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"23241:2:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23237:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23232:11:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10676,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"23216:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23225:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"23216:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23216:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23211:33:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10476,"id":10685,"nodeType":"Return","src":"23204:40:42"}]}]},"documentation":{"id":10470,"nodeType":"StructuredDocumentation","src":"17783:292:42","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":10688,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"18089:4:42","nodeType":"FunctionDefinition","parameters":{"id":10473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10472,"mutability":"mutable","name":"a","nameLocation":"18102:1:42","nodeType":"VariableDeclaration","scope":10688,"src":"18094:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10471,"name":"uint256","nodeType":"ElementaryTypeName","src":"18094:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18093:11:42"},"returnParameters":{"id":10476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10688,"src":"18128:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10474,"name":"uint256","nodeType":"ElementaryTypeName","src":"18128:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18127:9:42"},"scope":11309,"src":"18080:5181:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10721,"nodeType":"Block","src":"23434:171:42","statements":[{"id":10720,"nodeType":"UncheckedBlock","src":"23444:155:42","statements":[{"assignments":[10700],"declarations":[{"constant":false,"id":10700,"mutability":"mutable","name":"result","nameLocation":"23476:6:42","nodeType":"VariableDeclaration","scope":10720,"src":"23468:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10699,"name":"uint256","nodeType":"ElementaryTypeName","src":"23468:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10704,"initialValue":{"arguments":[{"id":10702,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10691,"src":"23490:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10701,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[10688,10722],"referencedDeclaration":10688,"src":"23485:4:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23485:7:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23468:24:42"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10705,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"23513:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10709,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10694,"src":"23555:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":10708,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"23538:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$9715_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":10710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23538:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10711,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"23568:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":10712,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"23577:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23568:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10714,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10691,"src":"23586:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23568:19:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"23538:49:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10706,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"23522:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23531:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"23522:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23522:66:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23513:75:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10698,"id":10719,"nodeType":"Return","src":"23506:82:42"}]}]},"documentation":{"id":10689,"nodeType":"StructuredDocumentation","src":"23267:86:42","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":10722,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"23367:4:42","nodeType":"FunctionDefinition","parameters":{"id":10695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10691,"mutability":"mutable","name":"a","nameLocation":"23380:1:42","nodeType":"VariableDeclaration","scope":10722,"src":"23372:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10690,"name":"uint256","nodeType":"ElementaryTypeName","src":"23372:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10694,"mutability":"mutable","name":"rounding","nameLocation":"23392:8:42","nodeType":"VariableDeclaration","scope":10722,"src":"23383:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":10693,"nodeType":"UserDefinedTypeName","pathNode":{"id":10692,"name":"Rounding","nameLocations":["23383:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"23383:8:42"},"referencedDeclaration":9715,"src":"23383:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"23371:30:42"},"returnParameters":{"id":10698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10697,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10722,"src":"23425:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10696,"name":"uint256","nodeType":"ElementaryTypeName","src":"23425:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23424:9:42"},"scope":11309,"src":"23358:247:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10917,"nodeType":"Block","src":"23796:981:42","statements":[{"assignments":[10731],"declarations":[{"constant":false,"id":10731,"mutability":"mutable","name":"result","nameLocation":"23814:6:42","nodeType":"VariableDeclaration","scope":10917,"src":"23806:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10730,"name":"uint256","nodeType":"ElementaryTypeName","src":"23806:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10733,"initialValue":{"hexValue":"30","id":10732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23823:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23806:18:42"},{"assignments":[10735],"declarations":[{"constant":false,"id":10735,"mutability":"mutable","name":"exp","nameLocation":"23842:3:42","nodeType":"VariableDeclaration","scope":10917,"src":"23834:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10734,"name":"uint256","nodeType":"ElementaryTypeName","src":"23834:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10736,"nodeType":"VariableDeclarationStatement","src":"23834:11:42"},{"id":10914,"nodeType":"UncheckedBlock","src":"23855:893:42","statements":[{"expression":{"id":10751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10737,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"23879:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313238","id":10738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23885:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10741,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"23907:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"id":10747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":10744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23916:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":10743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23921:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"23916:8:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":10745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"23915:10:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23928:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"23915:14:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"}},"src":"23907:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10739,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"23891:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23900:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"23891:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23891:39:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23885:45:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23879:51:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10752,"nodeType":"ExpressionStatement","src":"23879:51:42"},{"expression":{"id":10755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"23944:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10754,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"23954:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23944:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10756,"nodeType":"ExpressionStatement","src":"23944:13:42"},{"expression":{"id":10759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10757,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"23971:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10758,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"23981:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23971:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10760,"nodeType":"ExpressionStatement","src":"23971:13:42"},{"expression":{"id":10775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10761,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"23999:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3634","id":10762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24005:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10765,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24026:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"id":10771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":10768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24035:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":10767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24040:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"24035:7:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":10769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24034:9:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24046:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24034:13:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"}},"src":"24026:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10763,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24010:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24019:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24010:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24010:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24005:43:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23999:49:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10776,"nodeType":"ExpressionStatement","src":"23999:49:42"},{"expression":{"id":10779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24062:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10778,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24072:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24062:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10780,"nodeType":"ExpressionStatement","src":"24062:13:42"},{"expression":{"id":10783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10781,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24089:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10782,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24099:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24089:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10784,"nodeType":"ExpressionStatement","src":"24089:13:42"},{"expression":{"id":10799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10785,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24117:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":10786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24123:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24144:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"id":10795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":10792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24153:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":10791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24158:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"24153:7:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":10793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24152:9:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24164:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24152:13:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"}},"src":"24144:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10787,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24128:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24137:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24128:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24128:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24123:43:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24117:49:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10800,"nodeType":"ExpressionStatement","src":"24117:49:42"},{"expression":{"id":10803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24180:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10802,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24190:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24180:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10804,"nodeType":"ExpressionStatement","src":"24180:13:42"},{"expression":{"id":10807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10805,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24207:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10806,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24217:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24207:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10808,"nodeType":"ExpressionStatement","src":"24207:13:42"},{"expression":{"id":10823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10809,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24235:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3136","id":10810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24241:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10813,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24262:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"id":10819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":10816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24271:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":10815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24276:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"24271:7:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":10817,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24270:9:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24282:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24270:13:42","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"}},"src":"24262:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10811,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24246:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24255:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24246:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24246:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24241:43:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24235:49:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10824,"nodeType":"ExpressionStatement","src":"24235:49:42"},{"expression":{"id":10827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10825,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24298:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10826,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24308:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24298:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10828,"nodeType":"ExpressionStatement","src":"24298:13:42"},{"expression":{"id":10831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10829,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24325:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10830,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24335:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24325:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10832,"nodeType":"ExpressionStatement","src":"24325:13:42"},{"expression":{"id":10847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10833,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24353:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"38","id":10834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24359:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24379:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"id":10843,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":10840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24388:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":10839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24393:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"24388:6:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":10841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24387:8:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24398:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24387:12:42","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}},"src":"24379:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10835,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24363:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24372:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24363:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24363:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24359:41:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24353:47:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10848,"nodeType":"ExpressionStatement","src":"24353:47:42"},{"expression":{"id":10851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10849,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24414:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10850,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24424:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24414:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10852,"nodeType":"ExpressionStatement","src":"24414:13:42"},{"expression":{"id":10855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10853,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24441:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10854,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24451:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24441:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10856,"nodeType":"ExpressionStatement","src":"24441:13:42"},{"expression":{"id":10871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10857,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24469:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":10858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24475:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24495:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"id":10867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":10864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24504:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":10863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24509:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"24504:6:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":10865,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24503:8:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24514:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24503:12:42","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"}},"src":"24495:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10859,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24479:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24488:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24479:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24479:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24475:41:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24469:47:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10872,"nodeType":"ExpressionStatement","src":"24469:47:42"},{"expression":{"id":10875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24530:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10874,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24540:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24530:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10876,"nodeType":"ExpressionStatement","src":"24530:13:42"},{"expression":{"id":10879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10877,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24557:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10878,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24567:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24557:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10880,"nodeType":"ExpressionStatement","src":"24557:13:42"},{"expression":{"id":10895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10881,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24585:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":10882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24591:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24611:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"id":10891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":10888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24620:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":10887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24625:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"24620:6:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":10889,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"24619:8:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":10890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24630:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24619:12:42","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}},"src":"24611:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10883,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24595:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24604:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24595:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24595:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24591:41:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24585:47:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10896,"nodeType":"ExpressionStatement","src":"24585:47:42"},{"expression":{"id":10899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10897,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24646:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"id":10898,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24656:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24646:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10900,"nodeType":"ExpressionStatement","src":"24646:13:42"},{"expression":{"id":10903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24673:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":10902,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10735,"src":"24683:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24673:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10904,"nodeType":"ExpressionStatement","src":"24673:13:42"},{"expression":{"id":10912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10905,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24701:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10908,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"24727:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":10909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24735:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24727:9:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10906,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"24711:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24720:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"24711:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24711:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24701:36:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10913,"nodeType":"ExpressionStatement","src":"24701:36:42"}]},{"expression":{"id":10915,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"24764:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10729,"id":10916,"nodeType":"Return","src":"24757:13:42"}]},"documentation":{"id":10723,"nodeType":"StructuredDocumentation","src":"23611:119:42","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":10918,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"23744:4:42","nodeType":"FunctionDefinition","parameters":{"id":10726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10725,"mutability":"mutable","name":"value","nameLocation":"23757:5:42","nodeType":"VariableDeclaration","scope":10918,"src":"23749:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10724,"name":"uint256","nodeType":"ElementaryTypeName","src":"23749:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23748:15:42"},"returnParameters":{"id":10729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10728,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10918,"src":"23787:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10727,"name":"uint256","nodeType":"ElementaryTypeName","src":"23787:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23786:9:42"},"scope":11309,"src":"23735:1042:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10951,"nodeType":"Block","src":"25010:175:42","statements":[{"id":10950,"nodeType":"UncheckedBlock","src":"25020:159:42","statements":[{"assignments":[10930],"declarations":[{"constant":false,"id":10930,"mutability":"mutable","name":"result","nameLocation":"25052:6:42","nodeType":"VariableDeclaration","scope":10950,"src":"25044:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10929,"name":"uint256","nodeType":"ElementaryTypeName","src":"25044:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10934,"initialValue":{"arguments":[{"id":10932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10921,"src":"25066:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10931,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[10918,10952],"referencedDeclaration":10918,"src":"25061:4:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25061:11:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25044:28:42"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10935,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10930,"src":"25093:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10939,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10924,"src":"25135:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":10938,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"25118:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$9715_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":10940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25118:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25148:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":10942,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10930,"src":"25153:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25148:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10944,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10921,"src":"25162:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25148:19:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25118:49:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10936,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"25102:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":10937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25111:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"25102:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25102:66:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25093:75:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10928,"id":10949,"nodeType":"Return","src":"25086:82:42"}]}]},"documentation":{"id":10919,"nodeType":"StructuredDocumentation","src":"24783:142:42","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10952,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"24939:4:42","nodeType":"FunctionDefinition","parameters":{"id":10925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10921,"mutability":"mutable","name":"value","nameLocation":"24952:5:42","nodeType":"VariableDeclaration","scope":10952,"src":"24944:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10920,"name":"uint256","nodeType":"ElementaryTypeName","src":"24944:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10924,"mutability":"mutable","name":"rounding","nameLocation":"24968:8:42","nodeType":"VariableDeclaration","scope":10952,"src":"24959:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":10923,"nodeType":"UserDefinedTypeName","pathNode":{"id":10922,"name":"Rounding","nameLocations":["24959:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"24959:8:42"},"referencedDeclaration":9715,"src":"24959:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"24943:34:42"},"returnParameters":{"id":10928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10927,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10952,"src":"25001:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10926,"name":"uint256","nodeType":"ElementaryTypeName","src":"25001:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25000:9:42"},"scope":11309,"src":"24930:255:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11080,"nodeType":"Block","src":"25378:854:42","statements":[{"assignments":[10961],"declarations":[{"constant":false,"id":10961,"mutability":"mutable","name":"result","nameLocation":"25396:6:42","nodeType":"VariableDeclaration","scope":11080,"src":"25388:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10960,"name":"uint256","nodeType":"ElementaryTypeName","src":"25388:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10963,"initialValue":{"hexValue":"30","id":10962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25405:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"25388:18:42"},{"id":11077,"nodeType":"UncheckedBlock","src":"25416:787:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10964,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25444:5:42","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":10967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25453:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25459:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"25453:8:42","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"25444:17:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10980,"nodeType":"IfStatement","src":"25440:103:42","trueBody":{"id":10979,"nodeType":"Block","src":"25463:80:42","statements":[{"expression":{"id":10973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25481:5:42","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":10972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25490:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":10971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25496:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"25490:8:42","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"25481:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10974,"nodeType":"ExpressionStatement","src":"25481:17:42"},{"expression":{"id":10977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10975,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"25516:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":10976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25526:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"25516:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10978,"nodeType":"ExpressionStatement","src":"25516:12:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10981,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25560:5:42","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":10984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25569:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25575:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"25569:8:42","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"25560:17:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10997,"nodeType":"IfStatement","src":"25556:103:42","trueBody":{"id":10996,"nodeType":"Block","src":"25579:80:42","statements":[{"expression":{"id":10990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10986,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25597:5:42","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":10989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25606:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":10988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25612:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"25606:8:42","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"25597:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10991,"nodeType":"ExpressionStatement","src":"25597:17:42"},{"expression":{"id":10994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10992,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"25632:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":10993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25642:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"25632:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10995,"nodeType":"ExpressionStatement","src":"25632:12:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10998,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25676:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":11001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25685:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":11000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25691:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"25685:8:42","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"25676:17:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11014,"nodeType":"IfStatement","src":"25672:103:42","trueBody":{"id":11013,"nodeType":"Block","src":"25695:80:42","statements":[{"expression":{"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25713:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":11006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25722:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":11005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25728:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"25722:8:42","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"25713:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11008,"nodeType":"ExpressionStatement","src":"25713:17:42"},{"expression":{"id":11011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11009,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"25748:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":11010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25758:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"25748:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11012,"nodeType":"ExpressionStatement","src":"25748:12:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25792:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":11018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25801:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":11017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25807:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"25801:7:42","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"25792:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11031,"nodeType":"IfStatement","src":"25788:100:42","trueBody":{"id":11030,"nodeType":"Block","src":"25810:78:42","statements":[{"expression":{"id":11024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11020,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25828:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":11023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25837:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":11022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25843:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"25837:7:42","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"25828:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11025,"nodeType":"ExpressionStatement","src":"25828:16:42"},{"expression":{"id":11028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11026,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"25862:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":11027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25872:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"25862:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11029,"nodeType":"ExpressionStatement","src":"25862:11:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25905:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":11035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25914:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":11034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25920:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25914:7:42","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"25905:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11048,"nodeType":"IfStatement","src":"25901:100:42","trueBody":{"id":11047,"nodeType":"Block","src":"25923:78:42","statements":[{"expression":{"id":11041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11037,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"25941:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":11040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25950:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":11039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25956:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25950:7:42","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"25941:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11042,"nodeType":"ExpressionStatement","src":"25941:16:42"},{"expression":{"id":11045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11043,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"25975:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":11044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25985:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"25975:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11046,"nodeType":"ExpressionStatement","src":"25975:11:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11049,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"26018:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":11052,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26027:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":11051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26033:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26027:7:42","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"26018:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11065,"nodeType":"IfStatement","src":"26014:100:42","trueBody":{"id":11064,"nodeType":"Block","src":"26036:78:42","statements":[{"expression":{"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11054,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"26054:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":11057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26063:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":11056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26069:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26063:7:42","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"26054:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11059,"nodeType":"ExpressionStatement","src":"26054:16:42"},{"expression":{"id":11062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11060,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"26088:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":11061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26098:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26088:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11063,"nodeType":"ExpressionStatement","src":"26088:11:42"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11066,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10955,"src":"26131:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":11069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26140:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":11068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26146:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26140:7:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"26131:16:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11076,"nodeType":"IfStatement","src":"26127:66:42","trueBody":{"id":11075,"nodeType":"Block","src":"26149:44:42","statements":[{"expression":{"id":11073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11071,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"26167:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":11072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26177:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26167:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11074,"nodeType":"ExpressionStatement","src":"26167:11:42"}]}}]},{"expression":{"id":11078,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10961,"src":"26219:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10959,"id":11079,"nodeType":"Return","src":"26212:13:42"}]},"documentation":{"id":10953,"nodeType":"StructuredDocumentation","src":"25191:120:42","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":11081,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"25325:5:42","nodeType":"FunctionDefinition","parameters":{"id":10956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10955,"mutability":"mutable","name":"value","nameLocation":"25339:5:42","nodeType":"VariableDeclaration","scope":11081,"src":"25331:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10954,"name":"uint256","nodeType":"ElementaryTypeName","src":"25331:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25330:15:42"},"returnParameters":{"id":10959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11081,"src":"25369:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10957,"name":"uint256","nodeType":"ElementaryTypeName","src":"25369:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25368:9:42"},"scope":11309,"src":"25316:916:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11114,"nodeType":"Block","src":"26467:177:42","statements":[{"id":11113,"nodeType":"UncheckedBlock","src":"26477:161:42","statements":[{"assignments":[11093],"declarations":[{"constant":false,"id":11093,"mutability":"mutable","name":"result","nameLocation":"26509:6:42","nodeType":"VariableDeclaration","scope":11113,"src":"26501:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11092,"name":"uint256","nodeType":"ElementaryTypeName","src":"26501:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11097,"initialValue":{"arguments":[{"id":11095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"26524:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11094,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[11081,11115],"referencedDeclaration":11081,"src":"26518:5:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26518:12:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26501:29:42"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11098,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11093,"src":"26551:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11102,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11087,"src":"26593:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":11101,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"26576:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$9715_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":11103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26576:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":11104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26606:2:42","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":11105,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11093,"src":"26612:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26606:12:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11107,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11084,"src":"26621:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26606:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26576:50:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11099,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"26560:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26569:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"26560:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26560:67:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26551:76:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11091,"id":11112,"nodeType":"Return","src":"26544:83:42"}]}]},"documentation":{"id":11082,"nodeType":"StructuredDocumentation","src":"26238:143:42","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":11115,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"26395:5:42","nodeType":"FunctionDefinition","parameters":{"id":11088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11084,"mutability":"mutable","name":"value","nameLocation":"26409:5:42","nodeType":"VariableDeclaration","scope":11115,"src":"26401:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11083,"name":"uint256","nodeType":"ElementaryTypeName","src":"26401:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11087,"mutability":"mutable","name":"rounding","nameLocation":"26425:8:42","nodeType":"VariableDeclaration","scope":11115,"src":"26416:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":11086,"nodeType":"UserDefinedTypeName","pathNode":{"id":11085,"name":"Rounding","nameLocations":["26416:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"26416:8:42"},"referencedDeclaration":9715,"src":"26416:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"26400:34:42"},"returnParameters":{"id":11091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11115,"src":"26458:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11089,"name":"uint256","nodeType":"ElementaryTypeName","src":"26458:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26457:9:42"},"scope":11309,"src":"26386:258:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11251,"nodeType":"Block","src":"26964:674:42","statements":[{"assignments":[11124],"declarations":[{"constant":false,"id":11124,"mutability":"mutable","name":"result","nameLocation":"26982:6:42","nodeType":"VariableDeclaration","scope":11251,"src":"26974:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11123,"name":"uint256","nodeType":"ElementaryTypeName","src":"26974:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11126,"initialValue":{"hexValue":"30","id":11125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26991:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26974:18:42"},{"assignments":[11128],"declarations":[{"constant":false,"id":11128,"mutability":"mutable","name":"isGt","nameLocation":"27010:4:42","nodeType":"VariableDeclaration","scope":11251,"src":"27002:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11127,"name":"uint256","nodeType":"ElementaryTypeName","src":"27002:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11129,"nodeType":"VariableDeclarationStatement","src":"27002:12:42"},{"id":11248,"nodeType":"UncheckedBlock","src":"27024:585:42","statements":[{"expression":{"id":11142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11130,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27048:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11133,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27071:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"id":11139,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":11136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27080:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":11135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27085:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"27080:8:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":11137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27079:10:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27092:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27079:14:42","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"}},"src":"27071:22:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11131,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27055:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27064:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27055:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27055:39:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27048:46:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11143,"nodeType":"ExpressionStatement","src":"27048:46:42"},{"expression":{"id":11148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27108:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11145,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27118:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"313238","id":11146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27125:3:42","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"27118:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27108:20:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11149,"nodeType":"ExpressionStatement","src":"27108:20:42"},{"expression":{"id":11154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11150,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27142:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11151,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27152:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3136","id":11152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27159:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"27152:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27142:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11155,"nodeType":"ExpressionStatement","src":"27142:19:42"},{"expression":{"id":11168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11156,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27176:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27199:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"id":11165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":11162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27208:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":11161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27213:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"27208:7:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":11163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27207:9:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27219:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27207:13:42","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"}},"src":"27199:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11157,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27183:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27192:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27183:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27183:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27176:45:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11169,"nodeType":"ExpressionStatement","src":"27176:45:42"},{"expression":{"id":11174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11170,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27235:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11171,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27245:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3634","id":11172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27252:2:42","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"27245:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27235:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11175,"nodeType":"ExpressionStatement","src":"27235:19:42"},{"expression":{"id":11180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11176,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27268:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11177,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27278:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":11178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27285:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"27278:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27268:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11181,"nodeType":"ExpressionStatement","src":"27268:18:42"},{"expression":{"id":11194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11182,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27301:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11185,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27324:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"id":11191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":11188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27333:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":11187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27338:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"27333:7:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":11189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27332:9:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27344:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27332:13:42","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"}},"src":"27324:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11183,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27308:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27317:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27308:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27308:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27301:45:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11195,"nodeType":"ExpressionStatement","src":"27301:45:42"},{"expression":{"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27360:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11197,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27370:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3332","id":11198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27377:2:42","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"27370:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27360:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11201,"nodeType":"ExpressionStatement","src":"27360:19:42"},{"expression":{"id":11206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11202,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27393:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11203,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27403:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"34","id":11204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27410:1:42","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"27403:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27393:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11207,"nodeType":"ExpressionStatement","src":"27393:18:42"},{"expression":{"id":11220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11208,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27426:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11211,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27449:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"id":11217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":11214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27458:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":11213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27463:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"27458:7:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":11215,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27457:9:42","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27469:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27457:13:42","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"}},"src":"27449:21:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11209,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27433:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27442:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27433:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27433:38:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27426:45:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11221,"nodeType":"ExpressionStatement","src":"27426:45:42"},{"expression":{"id":11226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11222,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27485:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11223,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27495:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3136","id":11224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27502:2:42","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"27495:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27485:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11227,"nodeType":"ExpressionStatement","src":"27485:19:42"},{"expression":{"id":11232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27518:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11229,"name":"isGt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11128,"src":"27528:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":11230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27535:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"27528:8:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27518:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11233,"nodeType":"ExpressionStatement","src":"27518:18:42"},{"expression":{"id":11246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11234,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27551:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11237,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11118,"src":"27577:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"id":11243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":11240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27586:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":11239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27591:1:42","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"27586:6:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":11241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"27585:8:42","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27596:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27585:12:42","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}},"src":"27577:20:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11235,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27561:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27570:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27561:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27561:37:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27551:47:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11247,"nodeType":"ExpressionStatement","src":"27551:47:42"}]},{"expression":{"id":11249,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11124,"src":"27625:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11122,"id":11250,"nodeType":"Return","src":"27618:13:42"}]},"documentation":{"id":11116,"nodeType":"StructuredDocumentation","src":"26650:246:42","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":11252,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"26910:6:42","nodeType":"FunctionDefinition","parameters":{"id":11119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11118,"mutability":"mutable","name":"value","nameLocation":"26925:5:42","nodeType":"VariableDeclaration","scope":11252,"src":"26917:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11117,"name":"uint256","nodeType":"ElementaryTypeName","src":"26917:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26916:15:42"},"returnParameters":{"id":11122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11252,"src":"26955:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11120,"name":"uint256","nodeType":"ElementaryTypeName","src":"26955:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26954:9:42"},"scope":11309,"src":"26901:737:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11288,"nodeType":"Block","src":"27875:184:42","statements":[{"id":11287,"nodeType":"UncheckedBlock","src":"27885:168:42","statements":[{"assignments":[11264],"declarations":[{"constant":false,"id":11264,"mutability":"mutable","name":"result","nameLocation":"27917:6:42","nodeType":"VariableDeclaration","scope":11287,"src":"27909:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11263,"name":"uint256","nodeType":"ElementaryTypeName","src":"27909:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11268,"initialValue":{"arguments":[{"id":11266,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11255,"src":"27933:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11265,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[11252,11289],"referencedDeclaration":11252,"src":"27926:6:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27926:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27909:30:42"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11269,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11264,"src":"27960:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11273,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11258,"src":"28002:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":11272,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11308,"src":"27985:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$9715_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":11274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27985:26:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":11275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28015:1:42","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":11278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11276,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11264,"src":"28021:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":11277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28031:1:42","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"28021:11:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11279,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"28020:13:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28015:18:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11281,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11255,"src":"28036:5:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28015:26:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"27985:56:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11270,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"27969:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":11271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27978:6:42","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":13073,"src":"27969:15:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":11284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27969:73:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27960:82:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11262,"id":11286,"nodeType":"Return","src":"27953:89:42"}]}]},"documentation":{"id":11253,"nodeType":"StructuredDocumentation","src":"27644:144:42","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":11289,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"27802:6:42","nodeType":"FunctionDefinition","parameters":{"id":11259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11255,"mutability":"mutable","name":"value","nameLocation":"27817:5:42","nodeType":"VariableDeclaration","scope":11289,"src":"27809:13:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11254,"name":"uint256","nodeType":"ElementaryTypeName","src":"27809:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11258,"mutability":"mutable","name":"rounding","nameLocation":"27833:8:42","nodeType":"VariableDeclaration","scope":11289,"src":"27824:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":11257,"nodeType":"UserDefinedTypeName","pathNode":{"id":11256,"name":"Rounding","nameLocations":["27824:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"27824:8:42"},"referencedDeclaration":9715,"src":"27824:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"27808:34:42"},"returnParameters":{"id":11262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11289,"src":"27866:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11260,"name":"uint256","nodeType":"ElementaryTypeName","src":"27866:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27865:9:42"},"scope":11309,"src":"27793:266:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11307,"nodeType":"Block","src":"28257:48:42","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":11300,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11293,"src":"28280:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":11299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28274:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":11298,"name":"uint8","nodeType":"ElementaryTypeName","src":"28274:5:42","typeDescriptions":{}}},"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28274:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":11302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28292:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"28274:19:42","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":11304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28297:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"28274:24:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11297,"id":11306,"nodeType":"Return","src":"28267:31:42"}]},"documentation":{"id":11290,"nodeType":"StructuredDocumentation","src":"28065:113:42","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":11308,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"28192:16:42","nodeType":"FunctionDefinition","parameters":{"id":11294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11293,"mutability":"mutable","name":"rounding","nameLocation":"28218:8:42","nodeType":"VariableDeclaration","scope":11308,"src":"28209:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"},"typeName":{"id":11292,"nodeType":"UserDefinedTypeName","pathNode":{"id":11291,"name":"Rounding","nameLocations":["28209:8:42"],"nodeType":"IdentifierPath","referencedDeclaration":9715,"src":"28209:8:42"},"referencedDeclaration":9715,"src":"28209:8:42","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28208:19:42"},"returnParameters":{"id":11297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11308,"src":"28251:4:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11295,"name":"bool","nodeType":"ElementaryTypeName","src":"28251:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"28250:6:42"},"scope":11309,"src":"28183:122:42","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11310,"src":"281:28026:42","usedErrors":[],"usedEvents":[]}],"src":"103:28205:42"},"id":42},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[13074]},"id":13075,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11311,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:43"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":11312,"nodeType":"StructuredDocumentation","src":"218:550:43","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":13074,"linearizedBaseContracts":[13074],"name":"SafeCast","nameLocation":"777:8:43","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11313,"nodeType":"StructuredDocumentation","src":"792:68:43","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":11319,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:43","nodeType":"ErrorDefinition","parameters":{"id":11318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11315,"mutability":"mutable","name":"bits","nameLocation":"908:4:43","nodeType":"VariableDeclaration","scope":11319,"src":"902:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11314,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":11317,"mutability":"mutable","name":"value","nameLocation":"922:5:43","nodeType":"VariableDeclaration","scope":11319,"src":"914:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11316,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:43"},"src":"865:64:43"},{"documentation":{"id":11320,"nodeType":"StructuredDocumentation","src":"935:75:43","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":11324,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:43","nodeType":"ErrorDefinition","parameters":{"id":11323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11322,"mutability":"mutable","name":"value","nameLocation":"1056:5:43","nodeType":"VariableDeclaration","scope":11324,"src":"1049:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11321,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:43"},"src":"1015:48:43"},{"documentation":{"id":11325,"nodeType":"StructuredDocumentation","src":"1069:67:43","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":11331,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:43","nodeType":"ErrorDefinition","parameters":{"id":11330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11327,"mutability":"mutable","name":"bits","nameLocation":"1183:4:43","nodeType":"VariableDeclaration","scope":11331,"src":"1177:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11326,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":11329,"mutability":"mutable","name":"value","nameLocation":"1196:5:43","nodeType":"VariableDeclaration","scope":11331,"src":"1189:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11328,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:43"},"src":"1141:62:43"},{"documentation":{"id":11332,"nodeType":"StructuredDocumentation","src":"1209:75:43","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":11336,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:43","nodeType":"ErrorDefinition","parameters":{"id":11335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11334,"mutability":"mutable","name":"value","nameLocation":"1331:5:43","nodeType":"VariableDeclaration","scope":11336,"src":"1323:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:43"},"src":"1289:49:43"},{"body":{"id":11363,"nodeType":"Block","src":"1695:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11344,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"1709:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":11346,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":11345,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":11349,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:43","memberName":"max","nodeType":"MemberAccess","src":"1717:17:43","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11357,"nodeType":"IfStatement","src":"1705:105:43","trueBody":{"id":11356,"nodeType":"Block","src":"1736:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":11352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:43","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":11353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"1793:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11351,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"1757:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11355,"nodeType":"RevertStatement","src":"1750:49:43"}]}},{"expression":{"arguments":[{"id":11360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11339,"src":"1834:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":11358,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:43","typeDescriptions":{}}},"id":11361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":11343,"id":11362,"nodeType":"Return","src":"1819:21:43"}]},"documentation":{"id":11337,"nodeType":"StructuredDocumentation","src":"1344:280:43","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":11364,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:43","nodeType":"FunctionDefinition","parameters":{"id":11340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11339,"mutability":"mutable","name":"value","nameLocation":"1656:5:43","nodeType":"VariableDeclaration","scope":11364,"src":"1648:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:43"},"returnParameters":{"id":11343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11342,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11364,"src":"1686:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":11341,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:43","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:43"},"scope":13074,"src":"1629:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11391,"nodeType":"Block","src":"2204:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"2218:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":11374,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":11373,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":11377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:43","memberName":"max","nodeType":"MemberAccess","src":"2226:17:43","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11385,"nodeType":"IfStatement","src":"2214:105:43","trueBody":{"id":11384,"nodeType":"Block","src":"2245:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":11380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:43","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":11381,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"2302:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11379,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"2266:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11383,"nodeType":"RevertStatement","src":"2259:49:43"}]}},{"expression":{"arguments":[{"id":11388,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11367,"src":"2343:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":11386,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:43","typeDescriptions":{}}},"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":11371,"id":11390,"nodeType":"Return","src":"2328:21:43"}]},"documentation":{"id":11365,"nodeType":"StructuredDocumentation","src":"1853:280:43","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":11392,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:43","nodeType":"FunctionDefinition","parameters":{"id":11368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11367,"mutability":"mutable","name":"value","nameLocation":"2165:5:43","nodeType":"VariableDeclaration","scope":11392,"src":"2157:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11366,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:43"},"returnParameters":{"id":11371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11370,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11392,"src":"2195:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":11369,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:43","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:43"},"scope":13074,"src":"2138:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11419,"nodeType":"Block","src":"2713:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"2727:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":11402,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":11401,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":11405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:43","memberName":"max","nodeType":"MemberAccess","src":"2735:17:43","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11413,"nodeType":"IfStatement","src":"2723:105:43","trueBody":{"id":11412,"nodeType":"Block","src":"2754:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":11408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:43","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":11409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"2811:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11407,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"2775:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11411,"nodeType":"RevertStatement","src":"2768:49:43"}]}},{"expression":{"arguments":[{"id":11416,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"2852:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":11414,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:43","typeDescriptions":{}}},"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":11399,"id":11418,"nodeType":"Return","src":"2837:21:43"}]},"documentation":{"id":11393,"nodeType":"StructuredDocumentation","src":"2362:280:43","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":11420,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:43","nodeType":"FunctionDefinition","parameters":{"id":11396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11395,"mutability":"mutable","name":"value","nameLocation":"2674:5:43","nodeType":"VariableDeclaration","scope":11420,"src":"2666:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11394,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:43"},"returnParameters":{"id":11399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11420,"src":"2704:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":11397,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:43","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:43"},"scope":13074,"src":"2647:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11447,"nodeType":"Block","src":"3222:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11428,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11423,"src":"3236:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11430,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":11429,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:43","memberName":"max","nodeType":"MemberAccess","src":"3244:17:43","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11441,"nodeType":"IfStatement","src":"3232:105:43","trueBody":{"id":11440,"nodeType":"Block","src":"3263:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":11436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:43","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":11437,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11423,"src":"3320:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11435,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"3284:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11439,"nodeType":"RevertStatement","src":"3277:49:43"}]}},{"expression":{"arguments":[{"id":11444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11423,"src":"3361:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":11442,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:43","typeDescriptions":{}}},"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":11427,"id":11446,"nodeType":"Return","src":"3346:21:43"}]},"documentation":{"id":11421,"nodeType":"StructuredDocumentation","src":"2871:280:43","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":11448,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:43","nodeType":"FunctionDefinition","parameters":{"id":11424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11423,"mutability":"mutable","name":"value","nameLocation":"3183:5:43","nodeType":"VariableDeclaration","scope":11448,"src":"3175:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11422,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:43"},"returnParameters":{"id":11427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11448,"src":"3213:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":11425,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:43","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:43"},"scope":13074,"src":"3156:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11475,"nodeType":"Block","src":"3731:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11456,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11451,"src":"3745:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":11458,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":11457,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":11461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:43","memberName":"max","nodeType":"MemberAccess","src":"3753:17:43","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11469,"nodeType":"IfStatement","src":"3741:105:43","trueBody":{"id":11468,"nodeType":"Block","src":"3772:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":11464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:43","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":11465,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11451,"src":"3829:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11463,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"3793:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11467,"nodeType":"RevertStatement","src":"3786:49:43"}]}},{"expression":{"arguments":[{"id":11472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11451,"src":"3870:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":11470,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:43","typeDescriptions":{}}},"id":11473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":11455,"id":11474,"nodeType":"Return","src":"3855:21:43"}]},"documentation":{"id":11449,"nodeType":"StructuredDocumentation","src":"3380:280:43","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":11476,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:43","nodeType":"FunctionDefinition","parameters":{"id":11452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11451,"mutability":"mutable","name":"value","nameLocation":"3692:5:43","nodeType":"VariableDeclaration","scope":11476,"src":"3684:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11450,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:43"},"returnParameters":{"id":11455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11476,"src":"3722:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":11453,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:43","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:43"},"scope":13074,"src":"3665:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11503,"nodeType":"Block","src":"4240:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11484,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"4254:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11487,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":11486,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":11485,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":11489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:43","memberName":"max","nodeType":"MemberAccess","src":"4262:17:43","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11497,"nodeType":"IfStatement","src":"4250:105:43","trueBody":{"id":11496,"nodeType":"Block","src":"4281:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":11492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:43","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":11493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"4338:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11491,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"4302:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11495,"nodeType":"RevertStatement","src":"4295:49:43"}]}},{"expression":{"arguments":[{"id":11500,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11479,"src":"4379:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":11498,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:43","typeDescriptions":{}}},"id":11501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":11483,"id":11502,"nodeType":"Return","src":"4364:21:43"}]},"documentation":{"id":11477,"nodeType":"StructuredDocumentation","src":"3889:280:43","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":11504,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:43","nodeType":"FunctionDefinition","parameters":{"id":11480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11479,"mutability":"mutable","name":"value","nameLocation":"4201:5:43","nodeType":"VariableDeclaration","scope":11504,"src":"4193:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11478,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:43"},"returnParameters":{"id":11483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11504,"src":"4231:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":11481,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:43","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:43"},"scope":13074,"src":"4174:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11531,"nodeType":"Block","src":"4749:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11512,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11507,"src":"4763:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":11514,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":11513,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":11517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:43","memberName":"max","nodeType":"MemberAccess","src":"4771:17:43","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11525,"nodeType":"IfStatement","src":"4759:105:43","trueBody":{"id":11524,"nodeType":"Block","src":"4790:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":11520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:43","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":11521,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11507,"src":"4847:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11519,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"4811:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11523,"nodeType":"RevertStatement","src":"4804:49:43"}]}},{"expression":{"arguments":[{"id":11528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11507,"src":"4888:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":11526,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:43","typeDescriptions":{}}},"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":11511,"id":11530,"nodeType":"Return","src":"4873:21:43"}]},"documentation":{"id":11505,"nodeType":"StructuredDocumentation","src":"4398:280:43","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":11532,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:43","nodeType":"FunctionDefinition","parameters":{"id":11508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11507,"mutability":"mutable","name":"value","nameLocation":"4710:5:43","nodeType":"VariableDeclaration","scope":11532,"src":"4702:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11506,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:43"},"returnParameters":{"id":11511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11532,"src":"4740:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":11509,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:43","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:43"},"scope":13074,"src":"4683:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11559,"nodeType":"Block","src":"5258:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11540,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5272:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":11542,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":11541,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:43","memberName":"max","nodeType":"MemberAccess","src":"5280:17:43","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11553,"nodeType":"IfStatement","src":"5268:105:43","trueBody":{"id":11552,"nodeType":"Block","src":"5299:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":11548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:43","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":11549,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5356:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11547,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"5320:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11551,"nodeType":"RevertStatement","src":"5313:49:43"}]}},{"expression":{"arguments":[{"id":11556,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11535,"src":"5397:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":11554,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:43","typeDescriptions":{}}},"id":11557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":11539,"id":11558,"nodeType":"Return","src":"5382:21:43"}]},"documentation":{"id":11533,"nodeType":"StructuredDocumentation","src":"4907:280:43","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":11560,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:43","nodeType":"FunctionDefinition","parameters":{"id":11536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11535,"mutability":"mutable","name":"value","nameLocation":"5219:5:43","nodeType":"VariableDeclaration","scope":11560,"src":"5211:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11534,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:43"},"returnParameters":{"id":11539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11560,"src":"5249:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":11537,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:43","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:43"},"scope":13074,"src":"5192:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11587,"nodeType":"Block","src":"5767:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"5781:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":11570,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":11569,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":11573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:43","memberName":"max","nodeType":"MemberAccess","src":"5789:17:43","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11581,"nodeType":"IfStatement","src":"5777:105:43","trueBody":{"id":11580,"nodeType":"Block","src":"5808:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":11576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:43","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":11577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"5865:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11575,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"5829:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11579,"nodeType":"RevertStatement","src":"5822:49:43"}]}},{"expression":{"arguments":[{"id":11584,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"5906:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":11582,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:43","typeDescriptions":{}}},"id":11585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":11567,"id":11586,"nodeType":"Return","src":"5891:21:43"}]},"documentation":{"id":11561,"nodeType":"StructuredDocumentation","src":"5416:280:43","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":11588,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:43","nodeType":"FunctionDefinition","parameters":{"id":11564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"value","nameLocation":"5728:5:43","nodeType":"VariableDeclaration","scope":11588,"src":"5720:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11562,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:43"},"returnParameters":{"id":11567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11588,"src":"5758:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":11565,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:43","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:43"},"scope":13074,"src":"5701:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11615,"nodeType":"Block","src":"6276:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11596,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"6290:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":11598,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":11597,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":11601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:43","memberName":"max","nodeType":"MemberAccess","src":"6298:17:43","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11609,"nodeType":"IfStatement","src":"6286:105:43","trueBody":{"id":11608,"nodeType":"Block","src":"6317:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":11604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:43","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":11605,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"6374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11603,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"6338:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11607,"nodeType":"RevertStatement","src":"6331:49:43"}]}},{"expression":{"arguments":[{"id":11612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"6415:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":11610,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:43","typeDescriptions":{}}},"id":11613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":11595,"id":11614,"nodeType":"Return","src":"6400:21:43"}]},"documentation":{"id":11589,"nodeType":"StructuredDocumentation","src":"5925:280:43","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":11616,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:43","nodeType":"FunctionDefinition","parameters":{"id":11592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11591,"mutability":"mutable","name":"value","nameLocation":"6237:5:43","nodeType":"VariableDeclaration","scope":11616,"src":"6229:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11590,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:43"},"returnParameters":{"id":11595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11616,"src":"6267:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":11593,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:43","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:43"},"scope":13074,"src":"6210:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11643,"nodeType":"Block","src":"6785:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11619,"src":"6799:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":11626,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":11625,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":11629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:43","memberName":"max","nodeType":"MemberAccess","src":"6807:17:43","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11637,"nodeType":"IfStatement","src":"6795:105:43","trueBody":{"id":11636,"nodeType":"Block","src":"6826:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":11632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:43","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":11633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11619,"src":"6883:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11631,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"6847:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11635,"nodeType":"RevertStatement","src":"6840:49:43"}]}},{"expression":{"arguments":[{"id":11640,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11619,"src":"6924:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":11638,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:43","typeDescriptions":{}}},"id":11641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":11623,"id":11642,"nodeType":"Return","src":"6909:21:43"}]},"documentation":{"id":11617,"nodeType":"StructuredDocumentation","src":"6434:280:43","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":11644,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:43","nodeType":"FunctionDefinition","parameters":{"id":11620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11619,"mutability":"mutable","name":"value","nameLocation":"6746:5:43","nodeType":"VariableDeclaration","scope":11644,"src":"6738:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11618,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:43"},"returnParameters":{"id":11623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11644,"src":"6776:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":11621,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:43","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:43"},"scope":13074,"src":"6719:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11671,"nodeType":"Block","src":"7294:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11647,"src":"7308:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":11654,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":11653,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":11657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:43","memberName":"max","nodeType":"MemberAccess","src":"7316:17:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11665,"nodeType":"IfStatement","src":"7304:105:43","trueBody":{"id":11664,"nodeType":"Block","src":"7335:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":11660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:43","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":11661,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11647,"src":"7392:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11659,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"7356:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11663,"nodeType":"RevertStatement","src":"7349:49:43"}]}},{"expression":{"arguments":[{"id":11668,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11647,"src":"7433:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":11666,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:43","typeDescriptions":{}}},"id":11669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":11651,"id":11670,"nodeType":"Return","src":"7418:21:43"}]},"documentation":{"id":11645,"nodeType":"StructuredDocumentation","src":"6943:280:43","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":11672,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:43","nodeType":"FunctionDefinition","parameters":{"id":11648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11647,"mutability":"mutable","name":"value","nameLocation":"7255:5:43","nodeType":"VariableDeclaration","scope":11672,"src":"7247:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11646,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:43"},"returnParameters":{"id":11651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11672,"src":"7285:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":11649,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:43","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:43"},"scope":13074,"src":"7228:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11699,"nodeType":"Block","src":"7803:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"7817:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":11682,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":11681,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":11685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:43","memberName":"max","nodeType":"MemberAccess","src":"7825:17:43","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11693,"nodeType":"IfStatement","src":"7813:105:43","trueBody":{"id":11692,"nodeType":"Block","src":"7844:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":11688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:43","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":11689,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"7901:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11687,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"7865:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11691,"nodeType":"RevertStatement","src":"7858:49:43"}]}},{"expression":{"arguments":[{"id":11696,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11675,"src":"7942:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":11694,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:43","typeDescriptions":{}}},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":11679,"id":11698,"nodeType":"Return","src":"7927:21:43"}]},"documentation":{"id":11673,"nodeType":"StructuredDocumentation","src":"7452:280:43","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":11700,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:43","nodeType":"FunctionDefinition","parameters":{"id":11676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11675,"mutability":"mutable","name":"value","nameLocation":"7764:5:43","nodeType":"VariableDeclaration","scope":11700,"src":"7756:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11674,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:43"},"returnParameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11700,"src":"7794:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":11677,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:43","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:43"},"scope":13074,"src":"7737:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11727,"nodeType":"Block","src":"8312:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11708,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11703,"src":"8326:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":11710,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":11709,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":11713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:43","memberName":"max","nodeType":"MemberAccess","src":"8334:17:43","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11721,"nodeType":"IfStatement","src":"8322:105:43","trueBody":{"id":11720,"nodeType":"Block","src":"8353:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":11716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:43","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":11717,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11703,"src":"8410:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11715,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"8374:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11719,"nodeType":"RevertStatement","src":"8367:49:43"}]}},{"expression":{"arguments":[{"id":11724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11703,"src":"8451:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":11722,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:43","typeDescriptions":{}}},"id":11725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":11707,"id":11726,"nodeType":"Return","src":"8436:21:43"}]},"documentation":{"id":11701,"nodeType":"StructuredDocumentation","src":"7961:280:43","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":11728,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:43","nodeType":"FunctionDefinition","parameters":{"id":11704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11703,"mutability":"mutable","name":"value","nameLocation":"8273:5:43","nodeType":"VariableDeclaration","scope":11728,"src":"8265:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11702,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:43"},"returnParameters":{"id":11707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11728,"src":"8303:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":11705,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:43","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:43"},"scope":13074,"src":"8246:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11755,"nodeType":"Block","src":"8821:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"8835:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":11738,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":11737,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":11741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:43","memberName":"max","nodeType":"MemberAccess","src":"8843:17:43","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11749,"nodeType":"IfStatement","src":"8831:105:43","trueBody":{"id":11748,"nodeType":"Block","src":"8862:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":11744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:43","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":11745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"8919:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11743,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"8883:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11747,"nodeType":"RevertStatement","src":"8876:49:43"}]}},{"expression":{"arguments":[{"id":11752,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11731,"src":"8960:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":11750,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:43","typeDescriptions":{}}},"id":11753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":11735,"id":11754,"nodeType":"Return","src":"8945:21:43"}]},"documentation":{"id":11729,"nodeType":"StructuredDocumentation","src":"8470:280:43","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":11756,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:43","nodeType":"FunctionDefinition","parameters":{"id":11732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11731,"mutability":"mutable","name":"value","nameLocation":"8782:5:43","nodeType":"VariableDeclaration","scope":11756,"src":"8774:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11730,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:43"},"returnParameters":{"id":11735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11756,"src":"8812:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":11733,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:43","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:43"},"scope":13074,"src":"8755:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11783,"nodeType":"Block","src":"9330:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11764,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11759,"src":"9344:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":11766,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":11765,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":11769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:43","memberName":"max","nodeType":"MemberAccess","src":"9352:17:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11777,"nodeType":"IfStatement","src":"9340:105:43","trueBody":{"id":11776,"nodeType":"Block","src":"9371:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":11772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":11773,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11759,"src":"9428:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11771,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"9392:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11775,"nodeType":"RevertStatement","src":"9385:49:43"}]}},{"expression":{"arguments":[{"id":11780,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11759,"src":"9469:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":11778,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:43","typeDescriptions":{}}},"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":11763,"id":11782,"nodeType":"Return","src":"9454:21:43"}]},"documentation":{"id":11757,"nodeType":"StructuredDocumentation","src":"8979:280:43","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":11784,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:43","nodeType":"FunctionDefinition","parameters":{"id":11760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11759,"mutability":"mutable","name":"value","nameLocation":"9291:5:43","nodeType":"VariableDeclaration","scope":11784,"src":"9283:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11758,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:43"},"returnParameters":{"id":11763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11762,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11784,"src":"9321:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":11761,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:43","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:43"},"scope":13074,"src":"9264:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11811,"nodeType":"Block","src":"9839:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11792,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11787,"src":"9853:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":11794,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":11793,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":11797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:43","memberName":"max","nodeType":"MemberAccess","src":"9861:17:43","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11805,"nodeType":"IfStatement","src":"9849:105:43","trueBody":{"id":11804,"nodeType":"Block","src":"9880:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":11800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:43","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":11801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11787,"src":"9937:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11799,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"9901:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11803,"nodeType":"RevertStatement","src":"9894:49:43"}]}},{"expression":{"arguments":[{"id":11808,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11787,"src":"9978:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":11806,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:43","typeDescriptions":{}}},"id":11809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":11791,"id":11810,"nodeType":"Return","src":"9963:21:43"}]},"documentation":{"id":11785,"nodeType":"StructuredDocumentation","src":"9488:280:43","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":11812,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:43","nodeType":"FunctionDefinition","parameters":{"id":11788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11787,"mutability":"mutable","name":"value","nameLocation":"9800:5:43","nodeType":"VariableDeclaration","scope":11812,"src":"9792:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11786,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:43"},"returnParameters":{"id":11791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11790,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11812,"src":"9830:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":11789,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:43","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:43"},"scope":13074,"src":"9773:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11839,"nodeType":"Block","src":"10348:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11820,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11815,"src":"10362:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":11822,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":11821,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":11825,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:43","memberName":"max","nodeType":"MemberAccess","src":"10370:17:43","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11833,"nodeType":"IfStatement","src":"10358:105:43","trueBody":{"id":11832,"nodeType":"Block","src":"10389:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":11828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:43","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":11829,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11815,"src":"10446:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11827,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"10410:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11831,"nodeType":"RevertStatement","src":"10403:49:43"}]}},{"expression":{"arguments":[{"id":11836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11815,"src":"10487:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":11834,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:43","typeDescriptions":{}}},"id":11837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":11819,"id":11838,"nodeType":"Return","src":"10472:21:43"}]},"documentation":{"id":11813,"nodeType":"StructuredDocumentation","src":"9997:280:43","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":11840,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:43","nodeType":"FunctionDefinition","parameters":{"id":11816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11815,"mutability":"mutable","name":"value","nameLocation":"10309:5:43","nodeType":"VariableDeclaration","scope":11840,"src":"10301:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11814,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:43"},"returnParameters":{"id":11819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11818,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11840,"src":"10339:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":11817,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:43","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:43"},"scope":13074,"src":"10282:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11867,"nodeType":"Block","src":"10857:152:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11848,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11843,"src":"10871:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":11850,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":11849,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":11853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:43","memberName":"max","nodeType":"MemberAccess","src":"10879:17:43","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11861,"nodeType":"IfStatement","src":"10867:105:43","trueBody":{"id":11860,"nodeType":"Block","src":"10898:74:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":11856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:43","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":11857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11843,"src":"10955:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11855,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"10919:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11859,"nodeType":"RevertStatement","src":"10912:49:43"}]}},{"expression":{"arguments":[{"id":11864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11843,"src":"10996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":11862,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:43","typeDescriptions":{}}},"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":11847,"id":11866,"nodeType":"Return","src":"10981:21:43"}]},"documentation":{"id":11841,"nodeType":"StructuredDocumentation","src":"10506:280:43","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":11868,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:43","nodeType":"FunctionDefinition","parameters":{"id":11844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11843,"mutability":"mutable","name":"value","nameLocation":"10818:5:43","nodeType":"VariableDeclaration","scope":11868,"src":"10810:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11842,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:43"},"returnParameters":{"id":11847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11868,"src":"10848:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":11845,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:43","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:43"},"scope":13074,"src":"10791:218:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11895,"nodeType":"Block","src":"11360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11876,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"11374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":11878,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":11877,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":11881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:43","memberName":"max","nodeType":"MemberAccess","src":"11382:16:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11889,"nodeType":"IfStatement","src":"11370:103:43","trueBody":{"id":11888,"nodeType":"Block","src":"11400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":11884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":11885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"11456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11883,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"11421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11887,"nodeType":"RevertStatement","src":"11414:48:43"}]}},{"expression":{"arguments":[{"id":11892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11871,"src":"11496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":11890,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:43","typeDescriptions":{}}},"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":11875,"id":11894,"nodeType":"Return","src":"11482:20:43"}]},"documentation":{"id":11869,"nodeType":"StructuredDocumentation","src":"11015:276:43","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":11896,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:43","nodeType":"FunctionDefinition","parameters":{"id":11872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11871,"mutability":"mutable","name":"value","nameLocation":"11322:5:43","nodeType":"VariableDeclaration","scope":11896,"src":"11314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11870,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:43"},"returnParameters":{"id":11875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11896,"src":"11352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11873,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:43"},"scope":13074,"src":"11296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11923,"nodeType":"Block","src":"11860:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11904,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11899,"src":"11874:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":11906,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":11905,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":11909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:43","memberName":"max","nodeType":"MemberAccess","src":"11882:16:43","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11917,"nodeType":"IfStatement","src":"11870:103:43","trueBody":{"id":11916,"nodeType":"Block","src":"11900:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":11912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:43","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":11913,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11899,"src":"11956:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11911,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"11921:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11915,"nodeType":"RevertStatement","src":"11914:48:43"}]}},{"expression":{"arguments":[{"id":11920,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11899,"src":"11996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":11918,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:43","typeDescriptions":{}}},"id":11921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":11903,"id":11922,"nodeType":"Return","src":"11982:20:43"}]},"documentation":{"id":11897,"nodeType":"StructuredDocumentation","src":"11515:276:43","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":11924,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:43","nodeType":"FunctionDefinition","parameters":{"id":11900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11899,"mutability":"mutable","name":"value","nameLocation":"11822:5:43","nodeType":"VariableDeclaration","scope":11924,"src":"11814:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11898,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:43"},"returnParameters":{"id":11903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11924,"src":"11852:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":11901,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:43","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:43"},"scope":13074,"src":"11796:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11951,"nodeType":"Block","src":"12360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"12374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":11934,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":11933,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":11937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:43","memberName":"max","nodeType":"MemberAccess","src":"12382:16:43","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11945,"nodeType":"IfStatement","src":"12370:103:43","trueBody":{"id":11944,"nodeType":"Block","src":"12400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":11940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":11941,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"12456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11939,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"12421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11943,"nodeType":"RevertStatement","src":"12414:48:43"}]}},{"expression":{"arguments":[{"id":11948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"12496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":11946,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:43","typeDescriptions":{}}},"id":11949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":11931,"id":11950,"nodeType":"Return","src":"12482:20:43"}]},"documentation":{"id":11925,"nodeType":"StructuredDocumentation","src":"12015:276:43","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":11952,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:43","nodeType":"FunctionDefinition","parameters":{"id":11928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11927,"mutability":"mutable","name":"value","nameLocation":"12322:5:43","nodeType":"VariableDeclaration","scope":11952,"src":"12314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11926,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:43"},"returnParameters":{"id":11931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11952,"src":"12352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":11929,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:43","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:43"},"scope":13074,"src":"12296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11979,"nodeType":"Block","src":"12860:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11955,"src":"12874:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":11962,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":11961,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":11965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:43","memberName":"max","nodeType":"MemberAccess","src":"12882:16:43","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11973,"nodeType":"IfStatement","src":"12870:103:43","trueBody":{"id":11972,"nodeType":"Block","src":"12900:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":11968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:43","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":11969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11955,"src":"12956:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11967,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"12921:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11971,"nodeType":"RevertStatement","src":"12914:48:43"}]}},{"expression":{"arguments":[{"id":11976,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11955,"src":"12996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":11974,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:43","typeDescriptions":{}}},"id":11977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":11959,"id":11978,"nodeType":"Return","src":"12982:20:43"}]},"documentation":{"id":11953,"nodeType":"StructuredDocumentation","src":"12515:276:43","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":11980,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:43","nodeType":"FunctionDefinition","parameters":{"id":11956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11955,"mutability":"mutable","name":"value","nameLocation":"12822:5:43","nodeType":"VariableDeclaration","scope":11980,"src":"12814:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11954,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:43"},"returnParameters":{"id":11959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11980,"src":"12852:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":11957,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:43","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:43"},"scope":13074,"src":"12796:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12007,"nodeType":"Block","src":"13360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11988,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"13374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":11990,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":11989,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":11993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:43","memberName":"max","nodeType":"MemberAccess","src":"13382:16:43","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12001,"nodeType":"IfStatement","src":"13370:103:43","trueBody":{"id":12000,"nodeType":"Block","src":"13400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":11996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":11997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"13456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11995,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"13421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11999,"nodeType":"RevertStatement","src":"13414:48:43"}]}},{"expression":{"arguments":[{"id":12004,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"13496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":12002,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:43","typeDescriptions":{}}},"id":12005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":11987,"id":12006,"nodeType":"Return","src":"13482:20:43"}]},"documentation":{"id":11981,"nodeType":"StructuredDocumentation","src":"13015:276:43","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":12008,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:43","nodeType":"FunctionDefinition","parameters":{"id":11984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11983,"mutability":"mutable","name":"value","nameLocation":"13322:5:43","nodeType":"VariableDeclaration","scope":12008,"src":"13314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11982,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:43"},"returnParameters":{"id":11987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12008,"src":"13352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":11985,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:43","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:43"},"scope":13074,"src":"13296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12035,"nodeType":"Block","src":"13860:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12011,"src":"13874:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":12018,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":12017,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":12021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:43","memberName":"max","nodeType":"MemberAccess","src":"13882:16:43","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12029,"nodeType":"IfStatement","src":"13870:103:43","trueBody":{"id":12028,"nodeType":"Block","src":"13900:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":12024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:43","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":12025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12011,"src":"13956:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12023,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"13921:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12027,"nodeType":"RevertStatement","src":"13914:48:43"}]}},{"expression":{"arguments":[{"id":12032,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12011,"src":"13996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":12030,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:43","typeDescriptions":{}}},"id":12033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":12015,"id":12034,"nodeType":"Return","src":"13982:20:43"}]},"documentation":{"id":12009,"nodeType":"StructuredDocumentation","src":"13515:276:43","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":12036,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:43","nodeType":"FunctionDefinition","parameters":{"id":12012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12011,"mutability":"mutable","name":"value","nameLocation":"13822:5:43","nodeType":"VariableDeclaration","scope":12036,"src":"13814:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12010,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:43"},"returnParameters":{"id":12015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12036,"src":"13852:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":12013,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:43","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:43"},"scope":13074,"src":"13796:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12063,"nodeType":"Block","src":"14360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12044,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12039,"src":"14374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":12046,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":12045,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":12049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:43","memberName":"max","nodeType":"MemberAccess","src":"14382:16:43","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12057,"nodeType":"IfStatement","src":"14370:103:43","trueBody":{"id":12056,"nodeType":"Block","src":"14400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":12052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":12053,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12039,"src":"14456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12051,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"14421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12055,"nodeType":"RevertStatement","src":"14414:48:43"}]}},{"expression":{"arguments":[{"id":12060,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12039,"src":"14496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":12058,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:43","typeDescriptions":{}}},"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":12043,"id":12062,"nodeType":"Return","src":"14482:20:43"}]},"documentation":{"id":12037,"nodeType":"StructuredDocumentation","src":"14015:276:43","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":12064,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:43","nodeType":"FunctionDefinition","parameters":{"id":12040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12039,"mutability":"mutable","name":"value","nameLocation":"14322:5:43","nodeType":"VariableDeclaration","scope":12064,"src":"14314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12038,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:43"},"returnParameters":{"id":12043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12064,"src":"14352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":12041,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:43","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:43"},"scope":13074,"src":"14296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12091,"nodeType":"Block","src":"14860:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12072,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12067,"src":"14874:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":12074,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":12073,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":12077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:43","memberName":"max","nodeType":"MemberAccess","src":"14882:16:43","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12085,"nodeType":"IfStatement","src":"14870:103:43","trueBody":{"id":12084,"nodeType":"Block","src":"14900:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":12080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:43","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":12081,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12067,"src":"14956:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12079,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"14921:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12083,"nodeType":"RevertStatement","src":"14914:48:43"}]}},{"expression":{"arguments":[{"id":12088,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12067,"src":"14996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":12086,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:43","typeDescriptions":{}}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":12071,"id":12090,"nodeType":"Return","src":"14982:20:43"}]},"documentation":{"id":12065,"nodeType":"StructuredDocumentation","src":"14515:276:43","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":12092,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:43","nodeType":"FunctionDefinition","parameters":{"id":12068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12067,"mutability":"mutable","name":"value","nameLocation":"14822:5:43","nodeType":"VariableDeclaration","scope":12092,"src":"14814:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12066,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:43"},"returnParameters":{"id":12071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12092,"src":"14852:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":12069,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:43","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:43"},"scope":13074,"src":"14796:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12119,"nodeType":"Block","src":"15360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12100,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"15374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12102,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":12101,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":12105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:43","memberName":"max","nodeType":"MemberAccess","src":"15382:16:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12113,"nodeType":"IfStatement","src":"15370:103:43","trueBody":{"id":12112,"nodeType":"Block","src":"15400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":12108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":12109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"15456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12107,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"15421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12111,"nodeType":"RevertStatement","src":"15414:48:43"}]}},{"expression":{"arguments":[{"id":12116,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"15496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":12114,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:43","typeDescriptions":{}}},"id":12117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":12099,"id":12118,"nodeType":"Return","src":"15482:20:43"}]},"documentation":{"id":12093,"nodeType":"StructuredDocumentation","src":"15015:276:43","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":12120,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:43","nodeType":"FunctionDefinition","parameters":{"id":12096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12095,"mutability":"mutable","name":"value","nameLocation":"15322:5:43","nodeType":"VariableDeclaration","scope":12120,"src":"15314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12094,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:43"},"returnParameters":{"id":12099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12120,"src":"15352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":12097,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:43","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:43"},"scope":13074,"src":"15296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12147,"nodeType":"Block","src":"15860:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12128,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"15874:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":12130,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":12129,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":12133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:43","memberName":"max","nodeType":"MemberAccess","src":"15882:16:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12141,"nodeType":"IfStatement","src":"15870:103:43","trueBody":{"id":12140,"nodeType":"Block","src":"15900:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":12136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:43","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":12137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"15956:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12135,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"15921:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12139,"nodeType":"RevertStatement","src":"15914:48:43"}]}},{"expression":{"arguments":[{"id":12144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12123,"src":"15996:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":12142,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:43","typeDescriptions":{}}},"id":12145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":12127,"id":12146,"nodeType":"Return","src":"15982:20:43"}]},"documentation":{"id":12121,"nodeType":"StructuredDocumentation","src":"15515:276:43","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":12148,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:43","nodeType":"FunctionDefinition","parameters":{"id":12124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12123,"mutability":"mutable","name":"value","nameLocation":"15822:5:43","nodeType":"VariableDeclaration","scope":12148,"src":"15814:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12122,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:43"},"returnParameters":{"id":12127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12148,"src":"15852:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":12125,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:43","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:43"},"scope":13074,"src":"15796:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12175,"nodeType":"Block","src":"16360:149:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12156,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12151,"src":"16374:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":12158,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":12157,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":12161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:43","memberName":"max","nodeType":"MemberAccess","src":"16382:16:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12169,"nodeType":"IfStatement","src":"16370:103:43","trueBody":{"id":12168,"nodeType":"Block","src":"16400:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":12164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":12165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12151,"src":"16456:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12163,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"16421:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12167,"nodeType":"RevertStatement","src":"16414:48:43"}]}},{"expression":{"arguments":[{"id":12172,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12151,"src":"16496:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":12170,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:43","typeDescriptions":{}}},"id":12173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":12155,"id":12174,"nodeType":"Return","src":"16482:20:43"}]},"documentation":{"id":12149,"nodeType":"StructuredDocumentation","src":"16015:276:43","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":12176,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:43","nodeType":"FunctionDefinition","parameters":{"id":12152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12151,"mutability":"mutable","name":"value","nameLocation":"16322:5:43","nodeType":"VariableDeclaration","scope":12176,"src":"16314:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12150,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:43"},"returnParameters":{"id":12155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12176,"src":"16352:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12153,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:43"},"scope":13074,"src":"16296:213:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12203,"nodeType":"Block","src":"16854:146:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12179,"src":"16868:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":12187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":12186,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":12185,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":12189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:43","memberName":"max","nodeType":"MemberAccess","src":"16876:15:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12197,"nodeType":"IfStatement","src":"16864:101:43","trueBody":{"id":12196,"nodeType":"Block","src":"16893:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":12192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":12193,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12179,"src":"16948:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12191,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11319,"src":"16914:30:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":12194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12195,"nodeType":"RevertStatement","src":"16907:47:43"}]}},{"expression":{"arguments":[{"id":12200,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12179,"src":"16987:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":12198,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:43","typeDescriptions":{}}},"id":12201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":12183,"id":12202,"nodeType":"Return","src":"16974:19:43"}]},"documentation":{"id":12177,"nodeType":"StructuredDocumentation","src":"16515:272:43","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":12204,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:43","nodeType":"FunctionDefinition","parameters":{"id":12180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12179,"mutability":"mutable","name":"value","nameLocation":"16817:5:43","nodeType":"VariableDeclaration","scope":12204,"src":"16809:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12178,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:43"},"returnParameters":{"id":12183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12182,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12204,"src":"16847:5:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12181,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:43"},"scope":13074,"src":"16792:208:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12226,"nodeType":"Block","src":"17236:128:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12207,"src":"17250:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":12213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12220,"nodeType":"IfStatement","src":"17246:81:43","trueBody":{"id":12219,"nodeType":"Block","src":"17261:66:43","statements":[{"errorCall":{"arguments":[{"id":12216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12207,"src":"17310:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12215,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"17282:27:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":12217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12218,"nodeType":"RevertStatement","src":"17275:41:43"}]}},{"expression":{"arguments":[{"id":12223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12207,"src":"17351:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12221,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:43","typeDescriptions":{}}},"id":12224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12211,"id":12225,"nodeType":"Return","src":"17336:21:43"}]},"documentation":{"id":12205,"nodeType":"StructuredDocumentation","src":"17006:160:43","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":12227,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:43","nodeType":"FunctionDefinition","parameters":{"id":12208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12207,"mutability":"mutable","name":"value","nameLocation":"17197:5:43","nodeType":"VariableDeclaration","scope":12227,"src":"17190:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12206,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:43"},"returnParameters":{"id":12211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12227,"src":"17227:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12209,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:43"},"scope":13074,"src":"17171:193:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12252,"nodeType":"Block","src":"17761:150:43","statements":[{"expression":{"id":12240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12235,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12233,"src":"17771:10:43","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12230,"src":"17791:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":12236,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:43","typeDescriptions":{}}},"id":12239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:43","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":12241,"nodeType":"ExpressionStatement","src":"17771:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12242,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12233,"src":"17811:10:43","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12243,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12230,"src":"17825:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12251,"nodeType":"IfStatement","src":"17807:98:43","trueBody":{"id":12250,"nodeType":"Block","src":"17832:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":12246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:43","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":12247,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12230,"src":"17888:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12245,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"17853:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12249,"nodeType":"RevertStatement","src":"17846:48:43"}]}}]},"documentation":{"id":12228,"nodeType":"StructuredDocumentation","src":"17370:312:43","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":12253,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:43","nodeType":"FunctionDefinition","parameters":{"id":12231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12230,"mutability":"mutable","name":"value","nameLocation":"17712:5:43","nodeType":"VariableDeclaration","scope":12253,"src":"17705:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12229,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:43"},"returnParameters":{"id":12234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12233,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:43","nodeType":"VariableDeclaration","scope":12253,"src":"17742:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":12232,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:43","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:43"},"scope":13074,"src":"17687:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12278,"nodeType":"Block","src":"18308:150:43","statements":[{"expression":{"id":12266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12261,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12259,"src":"18318:10:43","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12256,"src":"18338:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":12262,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:43","typeDescriptions":{}}},"id":12265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:43","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":12267,"nodeType":"ExpressionStatement","src":"18318:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12268,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12259,"src":"18358:10:43","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12269,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12256,"src":"18372:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12277,"nodeType":"IfStatement","src":"18354:98:43","trueBody":{"id":12276,"nodeType":"Block","src":"18379:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":12272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:43","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":12273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12256,"src":"18435:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12271,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"18400:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12275,"nodeType":"RevertStatement","src":"18393:48:43"}]}}]},"documentation":{"id":12254,"nodeType":"StructuredDocumentation","src":"17917:312:43","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":12279,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:43","nodeType":"FunctionDefinition","parameters":{"id":12257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12256,"mutability":"mutable","name":"value","nameLocation":"18259:5:43","nodeType":"VariableDeclaration","scope":12279,"src":"18252:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12255,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:43"},"returnParameters":{"id":12260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12259,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:43","nodeType":"VariableDeclaration","scope":12279,"src":"18289:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":12258,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:43","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:43"},"scope":13074,"src":"18234:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12304,"nodeType":"Block","src":"18855:150:43","statements":[{"expression":{"id":12292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12287,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"18865:10:43","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"18885:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":12288,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:43","typeDescriptions":{}}},"id":12291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:43","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":12293,"nodeType":"ExpressionStatement","src":"18865:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12294,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12285,"src":"18905:10:43","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12295,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"18919:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12303,"nodeType":"IfStatement","src":"18901:98:43","trueBody":{"id":12302,"nodeType":"Block","src":"18926:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":12298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:43","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":12299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12282,"src":"18982:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12297,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"18947:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12301,"nodeType":"RevertStatement","src":"18940:48:43"}]}}]},"documentation":{"id":12280,"nodeType":"StructuredDocumentation","src":"18464:312:43","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":12305,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:43","nodeType":"FunctionDefinition","parameters":{"id":12283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12282,"mutability":"mutable","name":"value","nameLocation":"18806:5:43","nodeType":"VariableDeclaration","scope":12305,"src":"18799:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12281,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:43"},"returnParameters":{"id":12286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12285,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:43","nodeType":"VariableDeclaration","scope":12305,"src":"18836:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":12284,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:43","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:43"},"scope":13074,"src":"18781:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12330,"nodeType":"Block","src":"19402:150:43","statements":[{"expression":{"id":12318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12313,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12311,"src":"19412:10:43","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"19432:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":12314,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:43","typeDescriptions":{}}},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:43","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":12319,"nodeType":"ExpressionStatement","src":"19412:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12320,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12311,"src":"19452:10:43","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"19466:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12329,"nodeType":"IfStatement","src":"19448:98:43","trueBody":{"id":12328,"nodeType":"Block","src":"19473:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":12324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:43","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":12325,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"19529:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12323,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"19494:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12327,"nodeType":"RevertStatement","src":"19487:48:43"}]}}]},"documentation":{"id":12306,"nodeType":"StructuredDocumentation","src":"19011:312:43","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":12331,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:43","nodeType":"FunctionDefinition","parameters":{"id":12309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12308,"mutability":"mutable","name":"value","nameLocation":"19353:5:43","nodeType":"VariableDeclaration","scope":12331,"src":"19346:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12307,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:43"},"returnParameters":{"id":12312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12311,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:43","nodeType":"VariableDeclaration","scope":12331,"src":"19383:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":12310,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:43","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:43"},"scope":13074,"src":"19328:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12356,"nodeType":"Block","src":"19949:150:43","statements":[{"expression":{"id":12344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12339,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"19959:10:43","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12334,"src":"19979:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":12340,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:43","typeDescriptions":{}}},"id":12343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:43","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":12345,"nodeType":"ExpressionStatement","src":"19959:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12346,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"19999:10:43","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12334,"src":"20013:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12355,"nodeType":"IfStatement","src":"19995:98:43","trueBody":{"id":12354,"nodeType":"Block","src":"20020:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":12350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:43","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":12351,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12334,"src":"20076:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12349,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"20041:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12353,"nodeType":"RevertStatement","src":"20034:48:43"}]}}]},"documentation":{"id":12332,"nodeType":"StructuredDocumentation","src":"19558:312:43","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":12357,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:43","nodeType":"FunctionDefinition","parameters":{"id":12335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12334,"mutability":"mutable","name":"value","nameLocation":"19900:5:43","nodeType":"VariableDeclaration","scope":12357,"src":"19893:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12333,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:43"},"returnParameters":{"id":12338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12337,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:43","nodeType":"VariableDeclaration","scope":12357,"src":"19930:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":12336,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:43","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:43"},"scope":13074,"src":"19875:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12382,"nodeType":"Block","src":"20496:150:43","statements":[{"expression":{"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12365,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12363,"src":"20506:10:43","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"20526:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":12366,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:43","typeDescriptions":{}}},"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:43","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":12371,"nodeType":"ExpressionStatement","src":"20506:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12372,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12363,"src":"20546:10:43","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12373,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"20560:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12381,"nodeType":"IfStatement","src":"20542:98:43","trueBody":{"id":12380,"nodeType":"Block","src":"20567:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":12376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:43","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":12377,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"20623:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12375,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"20588:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12379,"nodeType":"RevertStatement","src":"20581:48:43"}]}}]},"documentation":{"id":12358,"nodeType":"StructuredDocumentation","src":"20105:312:43","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":12383,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:43","nodeType":"FunctionDefinition","parameters":{"id":12361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12360,"mutability":"mutable","name":"value","nameLocation":"20447:5:43","nodeType":"VariableDeclaration","scope":12383,"src":"20440:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12359,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:43"},"returnParameters":{"id":12364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12363,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:43","nodeType":"VariableDeclaration","scope":12383,"src":"20477:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":12362,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:43","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:43"},"scope":13074,"src":"20422:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12408,"nodeType":"Block","src":"21043:150:43","statements":[{"expression":{"id":12396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12391,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12389,"src":"21053:10:43","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"21073:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":12392,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:43","typeDescriptions":{}}},"id":12395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:43","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":12397,"nodeType":"ExpressionStatement","src":"21053:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12398,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12389,"src":"21093:10:43","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"21107:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12407,"nodeType":"IfStatement","src":"21089:98:43","trueBody":{"id":12406,"nodeType":"Block","src":"21114:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":12402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:43","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":12403,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12386,"src":"21170:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12401,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"21135:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12405,"nodeType":"RevertStatement","src":"21128:48:43"}]}}]},"documentation":{"id":12384,"nodeType":"StructuredDocumentation","src":"20652:312:43","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":12409,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:43","nodeType":"FunctionDefinition","parameters":{"id":12387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12386,"mutability":"mutable","name":"value","nameLocation":"20994:5:43","nodeType":"VariableDeclaration","scope":12409,"src":"20987:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12385,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:43"},"returnParameters":{"id":12390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12389,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:43","nodeType":"VariableDeclaration","scope":12409,"src":"21024:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":12388,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:43","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:43"},"scope":13074,"src":"20969:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12434,"nodeType":"Block","src":"21590:150:43","statements":[{"expression":{"id":12422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12417,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"21600:10:43","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12412,"src":"21620:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":12418,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:43","typeDescriptions":{}}},"id":12421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:43","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":12423,"nodeType":"ExpressionStatement","src":"21600:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12424,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12415,"src":"21640:10:43","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12412,"src":"21654:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12433,"nodeType":"IfStatement","src":"21636:98:43","trueBody":{"id":12432,"nodeType":"Block","src":"21661:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":12428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:43","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":12429,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12412,"src":"21717:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12427,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"21682:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12431,"nodeType":"RevertStatement","src":"21675:48:43"}]}}]},"documentation":{"id":12410,"nodeType":"StructuredDocumentation","src":"21199:312:43","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":12435,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:43","nodeType":"FunctionDefinition","parameters":{"id":12413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12412,"mutability":"mutable","name":"value","nameLocation":"21541:5:43","nodeType":"VariableDeclaration","scope":12435,"src":"21534:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12411,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:43"},"returnParameters":{"id":12416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12415,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:43","nodeType":"VariableDeclaration","scope":12435,"src":"21571:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":12414,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:43","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:43"},"scope":13074,"src":"21516:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12460,"nodeType":"Block","src":"22137:150:43","statements":[{"expression":{"id":12448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12443,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"22147:10:43","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"22167:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":12444,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:43","typeDescriptions":{}}},"id":12447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:43","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":12449,"nodeType":"ExpressionStatement","src":"22147:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12450,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12441,"src":"22187:10:43","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12451,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"22201:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12459,"nodeType":"IfStatement","src":"22183:98:43","trueBody":{"id":12458,"nodeType":"Block","src":"22208:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":12454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:43","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":12455,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12438,"src":"22264:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12453,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"22229:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12457,"nodeType":"RevertStatement","src":"22222:48:43"}]}}]},"documentation":{"id":12436,"nodeType":"StructuredDocumentation","src":"21746:312:43","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":12461,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:43","nodeType":"FunctionDefinition","parameters":{"id":12439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12438,"mutability":"mutable","name":"value","nameLocation":"22088:5:43","nodeType":"VariableDeclaration","scope":12461,"src":"22081:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12437,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:43"},"returnParameters":{"id":12442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12441,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:43","nodeType":"VariableDeclaration","scope":12461,"src":"22118:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":12440,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:43","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:43"},"scope":13074,"src":"22063:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12486,"nodeType":"Block","src":"22684:150:43","statements":[{"expression":{"id":12474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12469,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"22694:10:43","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12464,"src":"22714:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12471,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":12470,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:43","typeDescriptions":{}}},"id":12473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:43","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":12475,"nodeType":"ExpressionStatement","src":"22694:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12476,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12467,"src":"22734:10:43","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12477,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12464,"src":"22748:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12485,"nodeType":"IfStatement","src":"22730:98:43","trueBody":{"id":12484,"nodeType":"Block","src":"22755:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":12480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:43","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":12481,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12464,"src":"22811:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12479,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"22776:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12483,"nodeType":"RevertStatement","src":"22769:48:43"}]}}]},"documentation":{"id":12462,"nodeType":"StructuredDocumentation","src":"22293:312:43","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":12487,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:43","nodeType":"FunctionDefinition","parameters":{"id":12465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12464,"mutability":"mutable","name":"value","nameLocation":"22635:5:43","nodeType":"VariableDeclaration","scope":12487,"src":"22628:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12463,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:43"},"returnParameters":{"id":12468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12467,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:43","nodeType":"VariableDeclaration","scope":12487,"src":"22665:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":12466,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:43","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:43"},"scope":13074,"src":"22610:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12512,"nodeType":"Block","src":"23231:150:43","statements":[{"expression":{"id":12500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12495,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12493,"src":"23241:10:43","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"23261:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":12496,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:43","typeDescriptions":{}}},"id":12499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:43","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":12501,"nodeType":"ExpressionStatement","src":"23241:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12502,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12493,"src":"23281:10:43","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12503,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"23295:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12511,"nodeType":"IfStatement","src":"23277:98:43","trueBody":{"id":12510,"nodeType":"Block","src":"23302:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":12506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:43","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":12507,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"23358:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12505,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"23323:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12509,"nodeType":"RevertStatement","src":"23316:48:43"}]}}]},"documentation":{"id":12488,"nodeType":"StructuredDocumentation","src":"22840:312:43","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":12513,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:43","nodeType":"FunctionDefinition","parameters":{"id":12491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12490,"mutability":"mutable","name":"value","nameLocation":"23182:5:43","nodeType":"VariableDeclaration","scope":12513,"src":"23175:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12489,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:43"},"returnParameters":{"id":12494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12493,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:43","nodeType":"VariableDeclaration","scope":12513,"src":"23212:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":12492,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:43","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:43"},"scope":13074,"src":"23157:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12538,"nodeType":"Block","src":"23778:150:43","statements":[{"expression":{"id":12526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12521,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12519,"src":"23788:10:43","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12516,"src":"23808:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":12522,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:43","typeDescriptions":{}}},"id":12525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:43","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":12527,"nodeType":"ExpressionStatement","src":"23788:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12528,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12519,"src":"23828:10:43","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12516,"src":"23842:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12537,"nodeType":"IfStatement","src":"23824:98:43","trueBody":{"id":12536,"nodeType":"Block","src":"23849:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":12532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:43","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":12533,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12516,"src":"23905:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12531,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"23870:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12535,"nodeType":"RevertStatement","src":"23863:48:43"}]}}]},"documentation":{"id":12514,"nodeType":"StructuredDocumentation","src":"23387:312:43","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":12539,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:43","nodeType":"FunctionDefinition","parameters":{"id":12517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12516,"mutability":"mutable","name":"value","nameLocation":"23729:5:43","nodeType":"VariableDeclaration","scope":12539,"src":"23722:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12515,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:43"},"returnParameters":{"id":12520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12519,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:43","nodeType":"VariableDeclaration","scope":12539,"src":"23759:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":12518,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:43","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:43"},"scope":13074,"src":"23704:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12564,"nodeType":"Block","src":"24325:150:43","statements":[{"expression":{"id":12552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12547,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12545,"src":"24335:10:43","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"24355:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":12548,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:43","typeDescriptions":{}}},"id":12551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:43","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":12553,"nodeType":"ExpressionStatement","src":"24335:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12554,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12545,"src":"24375:10:43","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"24389:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12563,"nodeType":"IfStatement","src":"24371:98:43","trueBody":{"id":12562,"nodeType":"Block","src":"24396:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":12558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:43","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":12559,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12542,"src":"24452:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12557,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"24417:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12561,"nodeType":"RevertStatement","src":"24410:48:43"}]}}]},"documentation":{"id":12540,"nodeType":"StructuredDocumentation","src":"23934:312:43","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":12565,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:43","nodeType":"FunctionDefinition","parameters":{"id":12543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12542,"mutability":"mutable","name":"value","nameLocation":"24276:5:43","nodeType":"VariableDeclaration","scope":12565,"src":"24269:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12541,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:43"},"returnParameters":{"id":12546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12545,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:43","nodeType":"VariableDeclaration","scope":12565,"src":"24306:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":12544,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:43","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:43"},"scope":13074,"src":"24251:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12590,"nodeType":"Block","src":"24872:150:43","statements":[{"expression":{"id":12578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12573,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12571,"src":"24882:10:43","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12568,"src":"24902:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":12574,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:43","typeDescriptions":{}}},"id":12577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:43","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":12579,"nodeType":"ExpressionStatement","src":"24882:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12580,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12571,"src":"24922:10:43","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12581,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12568,"src":"24936:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12589,"nodeType":"IfStatement","src":"24918:98:43","trueBody":{"id":12588,"nodeType":"Block","src":"24943:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":12584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:43","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":12585,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12568,"src":"24999:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12583,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"24964:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12587,"nodeType":"RevertStatement","src":"24957:48:43"}]}}]},"documentation":{"id":12566,"nodeType":"StructuredDocumentation","src":"24481:312:43","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":12591,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:43","nodeType":"FunctionDefinition","parameters":{"id":12569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12568,"mutability":"mutable","name":"value","nameLocation":"24823:5:43","nodeType":"VariableDeclaration","scope":12591,"src":"24816:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12567,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:43"},"returnParameters":{"id":12572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12571,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:43","nodeType":"VariableDeclaration","scope":12591,"src":"24853:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":12570,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:43","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:43"},"scope":13074,"src":"24798:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12616,"nodeType":"Block","src":"25419:150:43","statements":[{"expression":{"id":12604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12599,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12597,"src":"25429:10:43","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12594,"src":"25449:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":12600,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:43","typeDescriptions":{}}},"id":12603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:43","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":12605,"nodeType":"ExpressionStatement","src":"25429:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12606,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12597,"src":"25469:10:43","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12594,"src":"25483:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12615,"nodeType":"IfStatement","src":"25465:98:43","trueBody":{"id":12614,"nodeType":"Block","src":"25490:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":12610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:43","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":12611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12594,"src":"25546:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12609,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"25511:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12613,"nodeType":"RevertStatement","src":"25504:48:43"}]}}]},"documentation":{"id":12592,"nodeType":"StructuredDocumentation","src":"25028:312:43","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":12617,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:43","nodeType":"FunctionDefinition","parameters":{"id":12595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12594,"mutability":"mutable","name":"value","nameLocation":"25370:5:43","nodeType":"VariableDeclaration","scope":12617,"src":"25363:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12593,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:43"},"returnParameters":{"id":12598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12597,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:43","nodeType":"VariableDeclaration","scope":12617,"src":"25400:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":12596,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:43","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:43"},"scope":13074,"src":"25345:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12642,"nodeType":"Block","src":"25966:150:43","statements":[{"expression":{"id":12630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12625,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12623,"src":"25976:10:43","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12620,"src":"25996:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":12626,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:43","typeDescriptions":{}}},"id":12629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:43","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":12631,"nodeType":"ExpressionStatement","src":"25976:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12632,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12623,"src":"26016:10:43","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12620,"src":"26030:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12641,"nodeType":"IfStatement","src":"26012:98:43","trueBody":{"id":12640,"nodeType":"Block","src":"26037:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":12636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:43","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":12637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12620,"src":"26093:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12635,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"26058:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12639,"nodeType":"RevertStatement","src":"26051:48:43"}]}}]},"documentation":{"id":12618,"nodeType":"StructuredDocumentation","src":"25575:312:43","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":12643,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:43","nodeType":"FunctionDefinition","parameters":{"id":12621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12620,"mutability":"mutable","name":"value","nameLocation":"25917:5:43","nodeType":"VariableDeclaration","scope":12643,"src":"25910:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12619,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:43"},"returnParameters":{"id":12624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12623,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:43","nodeType":"VariableDeclaration","scope":12643,"src":"25947:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":12622,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:43","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:43"},"scope":13074,"src":"25892:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12668,"nodeType":"Block","src":"26513:150:43","statements":[{"expression":{"id":12656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12651,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12649,"src":"26523:10:43","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"26543:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":12652,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:43","typeDescriptions":{}}},"id":12655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:43","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":12657,"nodeType":"ExpressionStatement","src":"26523:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12658,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12649,"src":"26563:10:43","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12659,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"26577:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12667,"nodeType":"IfStatement","src":"26559:98:43","trueBody":{"id":12666,"nodeType":"Block","src":"26584:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":12662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:43","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":12663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"26640:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12661,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"26605:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12665,"nodeType":"RevertStatement","src":"26598:48:43"}]}}]},"documentation":{"id":12644,"nodeType":"StructuredDocumentation","src":"26122:312:43","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":12669,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:43","nodeType":"FunctionDefinition","parameters":{"id":12647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12646,"mutability":"mutable","name":"value","nameLocation":"26464:5:43","nodeType":"VariableDeclaration","scope":12669,"src":"26457:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12645,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:43"},"returnParameters":{"id":12650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12649,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:43","nodeType":"VariableDeclaration","scope":12669,"src":"26494:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":12648,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:43","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:43"},"scope":13074,"src":"26439:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12694,"nodeType":"Block","src":"27060:150:43","statements":[{"expression":{"id":12682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12677,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12675,"src":"27070:10:43","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12672,"src":"27090:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":12678,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:43","typeDescriptions":{}}},"id":12681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:43","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":12683,"nodeType":"ExpressionStatement","src":"27070:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12684,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12675,"src":"27110:10:43","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12685,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12672,"src":"27124:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12693,"nodeType":"IfStatement","src":"27106:98:43","trueBody":{"id":12692,"nodeType":"Block","src":"27131:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":12688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:43","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":12689,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12672,"src":"27187:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12687,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"27152:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12691,"nodeType":"RevertStatement","src":"27145:48:43"}]}}]},"documentation":{"id":12670,"nodeType":"StructuredDocumentation","src":"26669:312:43","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":12695,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:43","nodeType":"FunctionDefinition","parameters":{"id":12673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12672,"mutability":"mutable","name":"value","nameLocation":"27011:5:43","nodeType":"VariableDeclaration","scope":12695,"src":"27004:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12671,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:43"},"returnParameters":{"id":12676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12675,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:43","nodeType":"VariableDeclaration","scope":12695,"src":"27041:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":12674,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:43","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:43"},"scope":13074,"src":"26986:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12720,"nodeType":"Block","src":"27607:150:43","statements":[{"expression":{"id":12708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12703,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12701,"src":"27617:10:43","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"27637:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":12704,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:43","typeDescriptions":{}}},"id":12707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:43","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":12709,"nodeType":"ExpressionStatement","src":"27617:26:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12710,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12701,"src":"27657:10:43","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12711,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"27671:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12719,"nodeType":"IfStatement","src":"27653:98:43","trueBody":{"id":12718,"nodeType":"Block","src":"27678:73:43","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":12714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:43","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":12715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"27734:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12713,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"27699:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12717,"nodeType":"RevertStatement","src":"27692:48:43"}]}}]},"documentation":{"id":12696,"nodeType":"StructuredDocumentation","src":"27216:312:43","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":12721,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:43","nodeType":"FunctionDefinition","parameters":{"id":12699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12698,"mutability":"mutable","name":"value","nameLocation":"27558:5:43","nodeType":"VariableDeclaration","scope":12721,"src":"27551:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12697,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:43"},"returnParameters":{"id":12702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12701,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:43","nodeType":"VariableDeclaration","scope":12721,"src":"27588:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":12700,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:43","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:43"},"scope":13074,"src":"27533:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12746,"nodeType":"Block","src":"28147:148:43","statements":[{"expression":{"id":12734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12729,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12727,"src":"28157:10:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12724,"src":"28176:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":12730,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:43","typeDescriptions":{}}},"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":12735,"nodeType":"ExpressionStatement","src":"28157:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12736,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12727,"src":"28196:10:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12724,"src":"28210:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12745,"nodeType":"IfStatement","src":"28192:97:43","trueBody":{"id":12744,"nodeType":"Block","src":"28217:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":12740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:43","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":12741,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12724,"src":"28272:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12739,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"28238:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12743,"nodeType":"RevertStatement","src":"28231:47:43"}]}}]},"documentation":{"id":12722,"nodeType":"StructuredDocumentation","src":"27763:307:43","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":12747,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:43","nodeType":"FunctionDefinition","parameters":{"id":12725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12724,"mutability":"mutable","name":"value","nameLocation":"28099:5:43","nodeType":"VariableDeclaration","scope":12747,"src":"28092:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12723,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:43"},"returnParameters":{"id":12728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12727,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:43","nodeType":"VariableDeclaration","scope":12747,"src":"28129:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12726,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:43"},"scope":13074,"src":"28075:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12772,"nodeType":"Block","src":"28685:148:43","statements":[{"expression":{"id":12760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12755,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"28695:10:43","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12758,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"28714:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":12756,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:43","typeDescriptions":{}}},"id":12759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:43","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":12761,"nodeType":"ExpressionStatement","src":"28695:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12762,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"28734:10:43","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"28748:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12771,"nodeType":"IfStatement","src":"28730:97:43","trueBody":{"id":12770,"nodeType":"Block","src":"28755:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":12766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:43","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":12767,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"28810:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12765,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"28776:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12769,"nodeType":"RevertStatement","src":"28769:47:43"}]}}]},"documentation":{"id":12748,"nodeType":"StructuredDocumentation","src":"28301:307:43","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":12773,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:43","nodeType":"FunctionDefinition","parameters":{"id":12751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12750,"mutability":"mutable","name":"value","nameLocation":"28637:5:43","nodeType":"VariableDeclaration","scope":12773,"src":"28630:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12749,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:43"},"returnParameters":{"id":12754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12753,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:43","nodeType":"VariableDeclaration","scope":12773,"src":"28667:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":12752,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:43","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:43"},"scope":13074,"src":"28613:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12798,"nodeType":"Block","src":"29223:148:43","statements":[{"expression":{"id":12786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12781,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12779,"src":"29233:10:43","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12784,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"29252:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":12782,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:43","typeDescriptions":{}}},"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:43","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":12787,"nodeType":"ExpressionStatement","src":"29233:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12788,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12779,"src":"29272:10:43","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"29286:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12797,"nodeType":"IfStatement","src":"29268:97:43","trueBody":{"id":12796,"nodeType":"Block","src":"29293:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":12792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:43","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":12793,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"29348:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12791,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"29314:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12795,"nodeType":"RevertStatement","src":"29307:47:43"}]}}]},"documentation":{"id":12774,"nodeType":"StructuredDocumentation","src":"28839:307:43","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":12799,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:43","nodeType":"FunctionDefinition","parameters":{"id":12777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12776,"mutability":"mutable","name":"value","nameLocation":"29175:5:43","nodeType":"VariableDeclaration","scope":12799,"src":"29168:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12775,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:43"},"returnParameters":{"id":12780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12779,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:43","nodeType":"VariableDeclaration","scope":12799,"src":"29205:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":12778,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:43","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:43"},"scope":13074,"src":"29151:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12824,"nodeType":"Block","src":"29761:148:43","statements":[{"expression":{"id":12812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12807,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12805,"src":"29771:10:43","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12802,"src":"29790:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":12808,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:43","typeDescriptions":{}}},"id":12811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:43","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":12813,"nodeType":"ExpressionStatement","src":"29771:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12814,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12805,"src":"29810:10:43","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12802,"src":"29824:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12823,"nodeType":"IfStatement","src":"29806:97:43","trueBody":{"id":12822,"nodeType":"Block","src":"29831:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":12818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:43","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":12819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12802,"src":"29886:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12817,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"29852:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12821,"nodeType":"RevertStatement","src":"29845:47:43"}]}}]},"documentation":{"id":12800,"nodeType":"StructuredDocumentation","src":"29377:307:43","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":12825,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:43","nodeType":"FunctionDefinition","parameters":{"id":12803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12802,"mutability":"mutable","name":"value","nameLocation":"29713:5:43","nodeType":"VariableDeclaration","scope":12825,"src":"29706:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12801,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:43"},"returnParameters":{"id":12806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12805,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:43","nodeType":"VariableDeclaration","scope":12825,"src":"29743:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":12804,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:43","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:43"},"scope":13074,"src":"29689:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12850,"nodeType":"Block","src":"30299:148:43","statements":[{"expression":{"id":12838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12833,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12831,"src":"30309:10:43","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"30328:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":12834,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:43","typeDescriptions":{}}},"id":12837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:43","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":12839,"nodeType":"ExpressionStatement","src":"30309:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12840,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12831,"src":"30348:10:43","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12841,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"30362:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12849,"nodeType":"IfStatement","src":"30344:97:43","trueBody":{"id":12848,"nodeType":"Block","src":"30369:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":12844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:43","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":12845,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"30424:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12843,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"30390:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12847,"nodeType":"RevertStatement","src":"30383:47:43"}]}}]},"documentation":{"id":12826,"nodeType":"StructuredDocumentation","src":"29915:307:43","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":12851,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:43","nodeType":"FunctionDefinition","parameters":{"id":12829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12828,"mutability":"mutable","name":"value","nameLocation":"30251:5:43","nodeType":"VariableDeclaration","scope":12851,"src":"30244:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12827,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:43"},"returnParameters":{"id":12832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12831,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:43","nodeType":"VariableDeclaration","scope":12851,"src":"30281:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":12830,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:43","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:43"},"scope":13074,"src":"30227:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12876,"nodeType":"Block","src":"30837:148:43","statements":[{"expression":{"id":12864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12859,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12857,"src":"30847:10:43","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12854,"src":"30866:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":12860,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:43","typeDescriptions":{}}},"id":12863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:43","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":12865,"nodeType":"ExpressionStatement","src":"30847:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12866,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12857,"src":"30886:10:43","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12867,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12854,"src":"30900:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12875,"nodeType":"IfStatement","src":"30882:97:43","trueBody":{"id":12874,"nodeType":"Block","src":"30907:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":12870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:43","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":12871,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12854,"src":"30962:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12869,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"30928:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12873,"nodeType":"RevertStatement","src":"30921:47:43"}]}}]},"documentation":{"id":12852,"nodeType":"StructuredDocumentation","src":"30453:307:43","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":12877,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:43","nodeType":"FunctionDefinition","parameters":{"id":12855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12854,"mutability":"mutable","name":"value","nameLocation":"30789:5:43","nodeType":"VariableDeclaration","scope":12877,"src":"30782:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12853,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:43"},"returnParameters":{"id":12858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12857,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:43","nodeType":"VariableDeclaration","scope":12877,"src":"30819:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":12856,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:43","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:43"},"scope":13074,"src":"30765:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12902,"nodeType":"Block","src":"31375:148:43","statements":[{"expression":{"id":12890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12885,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12883,"src":"31385:10:43","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12888,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12880,"src":"31404:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":12886,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:43","typeDescriptions":{}}},"id":12889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:43","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":12891,"nodeType":"ExpressionStatement","src":"31385:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12892,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12883,"src":"31424:10:43","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12893,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12880,"src":"31438:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12901,"nodeType":"IfStatement","src":"31420:97:43","trueBody":{"id":12900,"nodeType":"Block","src":"31445:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":12896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:43","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":12897,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12880,"src":"31500:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12895,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"31466:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12899,"nodeType":"RevertStatement","src":"31459:47:43"}]}}]},"documentation":{"id":12878,"nodeType":"StructuredDocumentation","src":"30991:307:43","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":12903,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:43","nodeType":"FunctionDefinition","parameters":{"id":12881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12880,"mutability":"mutable","name":"value","nameLocation":"31327:5:43","nodeType":"VariableDeclaration","scope":12903,"src":"31320:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12879,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:43"},"returnParameters":{"id":12884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12883,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:43","nodeType":"VariableDeclaration","scope":12903,"src":"31357:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":12882,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:43","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:43"},"scope":13074,"src":"31303:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12928,"nodeType":"Block","src":"31913:148:43","statements":[{"expression":{"id":12916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12911,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12909,"src":"31923:10:43","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12906,"src":"31942:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":12912,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:43","typeDescriptions":{}}},"id":12915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:43","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":12917,"nodeType":"ExpressionStatement","src":"31923:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12918,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12909,"src":"31962:10:43","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12906,"src":"31976:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12927,"nodeType":"IfStatement","src":"31958:97:43","trueBody":{"id":12926,"nodeType":"Block","src":"31983:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":12922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:43","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":12923,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12906,"src":"32038:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12921,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"32004:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12925,"nodeType":"RevertStatement","src":"31997:47:43"}]}}]},"documentation":{"id":12904,"nodeType":"StructuredDocumentation","src":"31529:307:43","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":12929,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:43","nodeType":"FunctionDefinition","parameters":{"id":12907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12906,"mutability":"mutable","name":"value","nameLocation":"31865:5:43","nodeType":"VariableDeclaration","scope":12929,"src":"31858:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12905,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:43"},"returnParameters":{"id":12910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12909,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:43","nodeType":"VariableDeclaration","scope":12929,"src":"31895:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":12908,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:43","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:43"},"scope":13074,"src":"31841:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12954,"nodeType":"Block","src":"32451:148:43","statements":[{"expression":{"id":12942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12937,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"32461:10:43","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12932,"src":"32480:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":12938,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:43","typeDescriptions":{}}},"id":12941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:43","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":12943,"nodeType":"ExpressionStatement","src":"32461:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12944,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12935,"src":"32500:10:43","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12932,"src":"32514:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12953,"nodeType":"IfStatement","src":"32496:97:43","trueBody":{"id":12952,"nodeType":"Block","src":"32521:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":12948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:43","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":12949,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12932,"src":"32576:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12947,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"32542:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12951,"nodeType":"RevertStatement","src":"32535:47:43"}]}}]},"documentation":{"id":12930,"nodeType":"StructuredDocumentation","src":"32067:307:43","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":12955,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:43","nodeType":"FunctionDefinition","parameters":{"id":12933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12932,"mutability":"mutable","name":"value","nameLocation":"32403:5:43","nodeType":"VariableDeclaration","scope":12955,"src":"32396:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12931,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:43"},"returnParameters":{"id":12936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12935,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:43","nodeType":"VariableDeclaration","scope":12955,"src":"32433:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":12934,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:43","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:43"},"scope":13074,"src":"32379:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12980,"nodeType":"Block","src":"32989:148:43","statements":[{"expression":{"id":12968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12963,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12961,"src":"32999:10:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12958,"src":"33018:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":12964,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:43","typeDescriptions":{}}},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":12969,"nodeType":"ExpressionStatement","src":"32999:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12970,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12961,"src":"33038:10:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12958,"src":"33052:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12979,"nodeType":"IfStatement","src":"33034:97:43","trueBody":{"id":12978,"nodeType":"Block","src":"33059:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":12974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:43","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":12975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12958,"src":"33114:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12973,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"33080:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":12976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12977,"nodeType":"RevertStatement","src":"33073:47:43"}]}}]},"documentation":{"id":12956,"nodeType":"StructuredDocumentation","src":"32605:307:43","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":12981,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:43","nodeType":"FunctionDefinition","parameters":{"id":12959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12958,"mutability":"mutable","name":"value","nameLocation":"32941:5:43","nodeType":"VariableDeclaration","scope":12981,"src":"32934:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12957,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:43"},"returnParameters":{"id":12962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12961,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:43","nodeType":"VariableDeclaration","scope":12981,"src":"32971:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":12960,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:43","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:43"},"scope":13074,"src":"32917:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13006,"nodeType":"Block","src":"33527:148:43","statements":[{"expression":{"id":12994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12989,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"33537:10:43","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12992,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12984,"src":"33556:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":12990,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:43","typeDescriptions":{}}},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:43","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":12995,"nodeType":"ExpressionStatement","src":"33537:25:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12996,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"33576:10:43","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":12997,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12984,"src":"33590:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13005,"nodeType":"IfStatement","src":"33572:97:43","trueBody":{"id":13004,"nodeType":"Block","src":"33597:72:43","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":13000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:43","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":13001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12984,"src":"33652:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12999,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"33618:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13003,"nodeType":"RevertStatement","src":"33611:47:43"}]}}]},"documentation":{"id":12982,"nodeType":"StructuredDocumentation","src":"33143:307:43","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":13007,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:43","nodeType":"FunctionDefinition","parameters":{"id":12985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12984,"mutability":"mutable","name":"value","nameLocation":"33479:5:43","nodeType":"VariableDeclaration","scope":13007,"src":"33472:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12983,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:43"},"returnParameters":{"id":12988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12987,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:43","nodeType":"VariableDeclaration","scope":13007,"src":"33509:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":12986,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:43","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:43"},"scope":13074,"src":"33455:220:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13032,"nodeType":"Block","src":"34058:146:43","statements":[{"expression":{"id":13020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13015,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13013,"src":"34068:10:43","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13010,"src":"34086:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":13016,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:43","typeDescriptions":{}}},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:43","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":13021,"nodeType":"ExpressionStatement","src":"34068:24:43"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":13024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13022,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13013,"src":"34106:10:43","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13010,"src":"34120:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13031,"nodeType":"IfStatement","src":"34102:96:43","trueBody":{"id":13030,"nodeType":"Block","src":"34127:71:43","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":13026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:43","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":13027,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13010,"src":"34181:5:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13025,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11331,"src":"34148:29:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":13028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13029,"nodeType":"RevertStatement","src":"34141:46:43"}]}}]},"documentation":{"id":13008,"nodeType":"StructuredDocumentation","src":"33681:302:43","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":13033,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:43","nodeType":"FunctionDefinition","parameters":{"id":13011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13010,"mutability":"mutable","name":"value","nameLocation":"34011:5:43","nodeType":"VariableDeclaration","scope":13033,"src":"34004:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13009,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:43"},"returnParameters":{"id":13014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13013,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:43","nodeType":"VariableDeclaration","scope":13033,"src":"34041:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":13012,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:43","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:43"},"scope":13074,"src":"33988:216:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13062,"nodeType":"Block","src":"34444:250:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13041,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"34557:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":13046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13045,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:43","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":13044,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:43","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":13048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:43","memberName":"max","nodeType":"MemberAccess","src":"34573:16:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":13043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13042,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:43","typeDescriptions":{}}},"id":13049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13056,"nodeType":"IfStatement","src":"34553:105:43","trueBody":{"id":13055,"nodeType":"Block","src":"34592:66:43","statements":[{"errorCall":{"arguments":[{"id":13052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"34641:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13051,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11336,"src":"34613:27:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":13053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13054,"nodeType":"RevertStatement","src":"34606:41:43"}]}},{"expression":{"arguments":[{"id":13059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13036,"src":"34681:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":13057,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:43","typeDescriptions":{}}},"id":13060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":13040,"id":13061,"nodeType":"Return","src":"34667:20:43"}]},"documentation":{"id":13034,"nodeType":"StructuredDocumentation","src":"34210:165:43","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":13063,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:43","nodeType":"FunctionDefinition","parameters":{"id":13037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13036,"mutability":"mutable","name":"value","nameLocation":"34406:5:43","nodeType":"VariableDeclaration","scope":13063,"src":"34398:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13035,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:43"},"returnParameters":{"id":13040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13063,"src":"34436:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13038,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:43","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:43"},"scope":13074,"src":"34380:314:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13072,"nodeType":"Block","src":"34853:87:43","statements":[{"AST":{"nativeSrc":"34888:46:43","nodeType":"YulBlock","src":"34888:46:43","statements":[{"nativeSrc":"34902:22:43","nodeType":"YulAssignment","src":"34902:22:43","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:43","nodeType":"YulIdentifier","src":"34921:1:43"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:43","nodeType":"YulIdentifier","src":"34914:6:43"},"nativeSrc":"34914:9:43","nodeType":"YulFunctionCall","src":"34914:9:43"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:43","nodeType":"YulIdentifier","src":"34907:6:43"},"nativeSrc":"34907:17:43","nodeType":"YulFunctionCall","src":"34907:17:43"},"variableNames":[{"name":"u","nativeSrc":"34902:1:43","nodeType":"YulIdentifier","src":"34902:1:43"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":13066,"isOffset":false,"isSlot":false,"src":"34921:1:43","valueSize":1},{"declaration":13069,"isOffset":false,"isSlot":false,"src":"34902:1:43","valueSize":1}],"flags":["memory-safe"],"id":13071,"nodeType":"InlineAssembly","src":"34863:71:43"}]},"documentation":{"id":13064,"nodeType":"StructuredDocumentation","src":"34700:90:43","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":13073,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:43","nodeType":"FunctionDefinition","parameters":{"id":13067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13066,"mutability":"mutable","name":"b","nameLocation":"34816:1:43","nodeType":"VariableDeclaration","scope":13073,"src":"34811:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13065,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:43"},"returnParameters":{"id":13070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13069,"mutability":"mutable","name":"u","nameLocation":"34850:1:43","nodeType":"VariableDeclaration","scope":13073,"src":"34842:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13068,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:43"},"scope":13074,"src":"34795:145:43","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":13075,"src":"769:34173:43","usedErrors":[11319,11324,11331,11336],"usedEvents":[]}],"src":"192:34751:43"},"id":43},"@openzeppelin/contracts/utils/types/Time.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/types/Time.sol","exportedSymbols":{"Math":[11309],"SafeCast":[13074],"Time":[13348]},"id":13349,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13076,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"104:24:44"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"../math/Math.sol","id":13078,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13349,"sourceUnit":11310,"src":"130:38:44","symbolAliases":[{"foreign":{"id":13077,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"138:4:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"../math/SafeCast.sol","id":13080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13349,"sourceUnit":13075,"src":"169:46:44","symbolAliases":[{"foreign":{"id":13079,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"177:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Time","contractDependencies":[],"contractKind":"library","documentation":{"id":13081,"nodeType":"StructuredDocumentation","src":"217:422:44","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":13348,"linearizedBaseContracts":[13348],"name":"Time","nameLocation":"648:4:44","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13083,"libraryName":{"id":13082,"name":"Time","nameLocations":["665:4:44"],"nodeType":"IdentifierPath","referencedDeclaration":13348,"src":"665:4:44"},"nodeType":"UsingForDirective","src":"659:17:44"},{"body":{"id":13095,"nodeType":"Block","src":"802:58:44","statements":[{"expression":{"arguments":[{"expression":{"id":13091,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"837:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"843:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"837:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13089,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"819:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"828:8:44","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":12064,"src":"819:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":13093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"819:34:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":13088,"id":13094,"nodeType":"Return","src":"812:41:44"}]},"documentation":{"id":13084,"nodeType":"StructuredDocumentation","src":"682:63:44","text":" @dev Get the block timestamp as a Timepoint."},"id":13096,"implemented":true,"kind":"function","modifiers":[],"name":"timestamp","nameLocation":"759:9:44","nodeType":"FunctionDefinition","parameters":{"id":13085,"nodeType":"ParameterList","parameters":[],"src":"768:2:44"},"returnParameters":{"id":13088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13096,"src":"794:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13086,"name":"uint48","nodeType":"ElementaryTypeName","src":"794:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"793:8:44"},"scope":13348,"src":"750:110:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13108,"nodeType":"Block","src":"985:55:44","statements":[{"expression":{"arguments":[{"expression":{"id":13104,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1020:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1026:6:44","memberName":"number","nodeType":"MemberAccess","src":"1020:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13102,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"1002:8:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$13074_$","typeString":"type(library SafeCast)"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1011:8:44","memberName":"toUint48","nodeType":"MemberAccess","referencedDeclaration":12064,"src":"1002:17:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint48_$","typeString":"function (uint256) pure returns (uint48)"}},"id":13106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1002:31:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":13101,"id":13107,"nodeType":"Return","src":"995:38:44"}]},"documentation":{"id":13097,"nodeType":"StructuredDocumentation","src":"866:60:44","text":" @dev Get the block number as a Timepoint."},"id":13109,"implemented":true,"kind":"function","modifiers":[],"name":"blockNumber","nameLocation":"940:11:44","nodeType":"FunctionDefinition","parameters":{"id":13098,"nodeType":"ParameterList","parameters":[],"src":"951:2:44"},"returnParameters":{"id":13101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13109,"src":"977:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13099,"name":"uint48","nodeType":"ElementaryTypeName","src":"977:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"976:8:44"},"scope":13348,"src":"931:109:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"Time.Delay","id":13111,"name":"Delay","nameLocation":"2377:5:44","nodeType":"UserDefinedValueTypeDefinition","src":"2372:22:44","underlyingType":{"id":13110,"name":"uint112","nodeType":"ElementaryTypeName","src":"2386:7:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}},{"body":{"id":13125,"nodeType":"Block","src":"2572:44:44","statements":[{"expression":{"arguments":[{"id":13122,"name":"duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"2600:8:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":13120,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"2589:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$13111_$","typeString":"type(Time.Delay)"}},"id":13121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2595:4:44","memberName":"wrap","nodeType":"MemberAccess","src":"2589:10:44","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint112_$returns$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (uint112) pure returns (Time.Delay)"}},"id":13123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2589:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"functionReturnParameters":13119,"id":13124,"nodeType":"Return","src":"2582:27:44"}]},"documentation":{"id":13112,"nodeType":"StructuredDocumentation","src":"2400:103:44","text":" @dev Wrap a duration into a Delay to add the one-step \"update in the future\" feature"},"id":13126,"implemented":true,"kind":"function","modifiers":[],"name":"toDelay","nameLocation":"2517:7:44","nodeType":"FunctionDefinition","parameters":{"id":13115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13114,"mutability":"mutable","name":"duration","nameLocation":"2532:8:44","nodeType":"VariableDeclaration","scope":13126,"src":"2525:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13113,"name":"uint32","nodeType":"ElementaryTypeName","src":"2525:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2524:17:44"},"returnParameters":{"id":13119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13118,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13126,"src":"2565:5:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13117,"nodeType":"UserDefinedTypeName","pathNode":{"id":13116,"name":"Delay","nameLocations":["2565:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"2565:5:44"},"referencedDeclaration":13111,"src":"2565:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"2564:7:44"},"scope":13348,"src":"2508:108:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13163,"nodeType":"Block","src":"3016:159:44","statements":[{"expression":{"id":13148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":13141,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"3027:11:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13142,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"3040:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13143,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13139,"src":"3052:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":13144,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3026:33:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13145,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13130,"src":"3062:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":13146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3067:6:44","memberName":"unpack","nodeType":"MemberAccess","referencedDeclaration":13309,"src":"3062:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) pure returns (uint32,uint32,uint48)"}},"id":13147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3062:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"src":"3026:49:44","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13149,"nodeType":"ExpressionStatement","src":"3026:49:44"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":13152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13150,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13139,"src":"3092:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":13151,"name":"timepoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13132,"src":"3102:9:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"3092:19:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"id":13157,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13135,"src":"3136:11:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13158,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"3149:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13159,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13139,"src":"3161:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":13160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3135:33:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3092:76:44","trueExpression":{"components":[{"id":13153,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13137,"src":"3115:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"hexValue":"30","id":13154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3127:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":13155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3130:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":13156,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3114:18:44","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":13140,"id":13162,"nodeType":"Return","src":"3085:83:44"}]},"documentation":{"id":13127,"nodeType":"StructuredDocumentation","src":"2622:241:44","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":13164,"implemented":true,"kind":"function","modifiers":[],"name":"_getFullAt","nameLocation":"2877:10:44","nodeType":"FunctionDefinition","parameters":{"id":13133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13130,"mutability":"mutable","name":"self","nameLocation":"2903:4:44","nodeType":"VariableDeclaration","scope":13164,"src":"2897:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13129,"nodeType":"UserDefinedTypeName","pathNode":{"id":13128,"name":"Delay","nameLocations":["2897:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"2897:5:44"},"referencedDeclaration":13111,"src":"2897:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":13132,"mutability":"mutable","name":"timepoint","nameLocation":"2924:9:44","nodeType":"VariableDeclaration","scope":13164,"src":"2917:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13131,"name":"uint48","nodeType":"ElementaryTypeName","src":"2917:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2887:52:44"},"returnParameters":{"id":13140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13135,"mutability":"mutable","name":"valueBefore","nameLocation":"2969:11:44","nodeType":"VariableDeclaration","scope":13164,"src":"2962:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13134,"name":"uint32","nodeType":"ElementaryTypeName","src":"2962:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13137,"mutability":"mutable","name":"valueAfter","nameLocation":"2989:10:44","nodeType":"VariableDeclaration","scope":13164,"src":"2982:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13136,"name":"uint32","nodeType":"ElementaryTypeName","src":"2982:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13139,"mutability":"mutable","name":"effect","nameLocation":"3008:6:44","nodeType":"VariableDeclaration","scope":13164,"src":"3001:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13138,"name":"uint48","nodeType":"ElementaryTypeName","src":"3001:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"2961:54:44"},"scope":13348,"src":"2868:307:44","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":13183,"nodeType":"Block","src":"3499:53:44","statements":[{"expression":{"arguments":[{"id":13178,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13168,"src":"3527:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},{"arguments":[],"expression":{"argumentTypes":[],"id":13179,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"3533:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":13180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3533:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":13177,"name":"_getFullAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"3516:10:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$returns$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"function (Time.Delay,uint48) pure returns (uint32,uint32,uint48)"}},"id":13181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3516:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"functionReturnParameters":13176,"id":13182,"nodeType":"Return","src":"3509:36:44"}]},"documentation":{"id":13165,"nodeType":"StructuredDocumentation","src":"3181:207:44","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":13184,"implemented":true,"kind":"function","modifiers":[],"name":"getFull","nameLocation":"3402:7:44","nodeType":"FunctionDefinition","parameters":{"id":13169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13168,"mutability":"mutable","name":"self","nameLocation":"3416:4:44","nodeType":"VariableDeclaration","scope":13184,"src":"3410:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13167,"nodeType":"UserDefinedTypeName","pathNode":{"id":13166,"name":"Delay","nameLocations":["3410:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"3410:5:44"},"referencedDeclaration":13111,"src":"3410:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"3409:12:44"},"returnParameters":{"id":13176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13171,"mutability":"mutable","name":"valueBefore","nameLocation":"3452:11:44","nodeType":"VariableDeclaration","scope":13184,"src":"3445:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13170,"name":"uint32","nodeType":"ElementaryTypeName","src":"3445:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13173,"mutability":"mutable","name":"valueAfter","nameLocation":"3472:10:44","nodeType":"VariableDeclaration","scope":13184,"src":"3465:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13172,"name":"uint32","nodeType":"ElementaryTypeName","src":"3465:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13175,"mutability":"mutable","name":"effect","nameLocation":"3491:6:44","nodeType":"VariableDeclaration","scope":13184,"src":"3484:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13174,"name":"uint48","nodeType":"ElementaryTypeName","src":"3484:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"3444:54:44"},"scope":13348,"src":"3393:159:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13201,"nodeType":"Block","src":"3665:74:44","statements":[{"assignments":[13194,null,null],"declarations":[{"constant":false,"id":13194,"mutability":"mutable","name":"delay","nameLocation":"3683:5:44","nodeType":"VariableDeclaration","scope":13201,"src":"3676:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13193,"name":"uint32","nodeType":"ElementaryTypeName","src":"3676:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},null,null],"id":13198,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13195,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13188,"src":"3696:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":13196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3701:7:44","memberName":"getFull","nodeType":"MemberAccess","referencedDeclaration":13184,"src":"3696:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$_t_uint32_$_t_uint48_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) view returns (uint32,uint32,uint48)"}},"id":13197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"nodeType":"VariableDeclarationStatement","src":"3675:35:44"},{"expression":{"id":13199,"name":"delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"3727:5:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":13192,"id":13200,"nodeType":"Return","src":"3720:12:44"}]},"documentation":{"id":13185,"nodeType":"StructuredDocumentation","src":"3558:46:44","text":" @dev Get the current value."},"id":13202,"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"3618:3:44","nodeType":"FunctionDefinition","parameters":{"id":13189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13188,"mutability":"mutable","name":"self","nameLocation":"3628:4:44","nodeType":"VariableDeclaration","scope":13202,"src":"3622:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13187,"nodeType":"UserDefinedTypeName","pathNode":{"id":13186,"name":"Delay","nameLocations":["3622:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"3622:5:44"},"referencedDeclaration":13111,"src":"3622:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"3621:12:44"},"returnParameters":{"id":13192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13191,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13202,"src":"3657:6:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13190,"name":"uint32","nodeType":"ElementaryTypeName","src":"3657:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"3656:8:44"},"scope":13348,"src":"3609:130:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13257,"nodeType":"Block","src":"4189:234:44","statements":[{"assignments":[13219],"declarations":[{"constant":false,"id":13219,"mutability":"mutable","name":"value","nameLocation":"4206:5:44","nodeType":"VariableDeclaration","scope":13257,"src":"4199:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13218,"name":"uint32","nodeType":"ElementaryTypeName","src":"4199:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":13223,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13220,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13206,"src":"4214:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4219:3:44","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":13202,"src":"4214:8:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint32_$attached_to$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (Time.Delay) view returns (uint32)"}},"id":13222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:10:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"4199:25:44"},{"assignments":[13225],"declarations":[{"constant":false,"id":13225,"mutability":"mutable","name":"setback","nameLocation":"4241:7:44","nodeType":"VariableDeclaration","scope":13257,"src":"4234:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13224,"name":"uint32","nodeType":"ElementaryTypeName","src":"4234:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":13241,"initialValue":{"arguments":[{"arguments":[{"id":13230,"name":"minSetback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13210,"src":"4267:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13231,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"4279:5:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13232,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13208,"src":"4287:8:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4279:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":13237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4317:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4279:39:44","trueExpression":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":13236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"4298:5:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13235,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13208,"src":"4306:8:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4298:16:44","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":13228,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4258:4:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4263:3:44","memberName":"max","nodeType":"MemberAccess","referencedDeclaration":9919,"src":"4258:8:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4258:61:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4251:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13226,"name":"uint32","nodeType":"ElementaryTypeName","src":"4251:6:44","typeDescriptions":{}}},"id":13240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4251:69:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"4234:86:44"},{"expression":{"id":13247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13242,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13216,"src":"4330:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint48","typeString":"uint48"},"id":13246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":13243,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13096,"src":"4339:9:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint48_$","typeString":"function () view returns (uint48)"}},"id":13244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4339:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13245,"name":"setback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"4353:7:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4339:21:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4330:30:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":13248,"nodeType":"ExpressionStatement","src":"4330:30:44"},{"expression":{"components":[{"arguments":[{"id":13250,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13219,"src":"4383:5:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13251,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13208,"src":"4390:8:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13252,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13216,"src":"4400:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":13249,"name":"pack","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13347,"src":"4378:4:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint48_$returns$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (uint32,uint32,uint48) pure returns (Time.Delay)"}},"id":13253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4378:29:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},{"id":13254,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13216,"src":"4409:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":13255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4377:39:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_userDefinedValueType$_Delay_$13111_$_t_uint48_$","typeString":"tuple(Time.Delay,uint48)"}},"functionReturnParameters":13217,"id":13256,"nodeType":"Return","src":"4370:46:44"}]},"documentation":{"id":13203,"nodeType":"StructuredDocumentation","src":"3745:283:44","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":13258,"implemented":true,"kind":"function","modifiers":[],"name":"withUpdate","nameLocation":"4042:10:44","nodeType":"FunctionDefinition","parameters":{"id":13211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13206,"mutability":"mutable","name":"self","nameLocation":"4068:4:44","nodeType":"VariableDeclaration","scope":13258,"src":"4062:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13205,"nodeType":"UserDefinedTypeName","pathNode":{"id":13204,"name":"Delay","nameLocations":["4062:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"4062:5:44"},"referencedDeclaration":13111,"src":"4062:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":13208,"mutability":"mutable","name":"newValue","nameLocation":"4089:8:44","nodeType":"VariableDeclaration","scope":13258,"src":"4082:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13207,"name":"uint32","nodeType":"ElementaryTypeName","src":"4082:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13210,"mutability":"mutable","name":"minSetback","nameLocation":"4114:10:44","nodeType":"VariableDeclaration","scope":13258,"src":"4107:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13209,"name":"uint32","nodeType":"ElementaryTypeName","src":"4107:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4052:78:44"},"returnParameters":{"id":13217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13214,"mutability":"mutable","name":"updatedDelay","nameLocation":"4160:12:44","nodeType":"VariableDeclaration","scope":13258,"src":"4154:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13213,"nodeType":"UserDefinedTypeName","pathNode":{"id":13212,"name":"Delay","nameLocations":["4154:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"4154:5:44"},"referencedDeclaration":13111,"src":"4154:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"},{"constant":false,"id":13216,"mutability":"mutable","name":"effect","nameLocation":"4181:6:44","nodeType":"VariableDeclaration","scope":13258,"src":"4174:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13215,"name":"uint48","nodeType":"ElementaryTypeName","src":"4174:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4153:35:44"},"scope":13348,"src":"4033:390:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13308,"nodeType":"Block","src":"4656:212:44","statements":[{"assignments":[13272],"declarations":[{"constant":false,"id":13272,"mutability":"mutable","name":"raw","nameLocation":"4674:3:44","nodeType":"VariableDeclaration","scope":13308,"src":"4666:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":13271,"name":"uint112","nodeType":"ElementaryTypeName","src":"4666:7:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"id":13277,"initialValue":{"arguments":[{"id":13275,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13262,"src":"4693:4:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}],"expression":{"id":13273,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"4680:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$13111_$","typeString":"type(Time.Delay)"}},"id":13274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4686:6:44","memberName":"unwrap","nodeType":"MemberAccess","src":"4680:12:44","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_Delay_$13111_$returns$_t_uint112_$","typeString":"function (Time.Delay) pure returns (uint112)"}},"id":13276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4680:18:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"4666:32:44"},{"expression":{"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13278,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13267,"src":"4709:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13281,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13272,"src":"4729:3:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":13280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4722:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13279,"name":"uint32","nodeType":"ElementaryTypeName","src":"4722:6:44","typeDescriptions":{}}},"id":13282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4722:11:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4709:24:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13284,"nodeType":"ExpressionStatement","src":"4709:24:44"},{"expression":{"id":13292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13285,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13265,"src":"4743:11:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13288,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13272,"src":"4764:3:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":13289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4771:2:44","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"4764:9:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":13287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4757:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":13286,"name":"uint32","nodeType":"ElementaryTypeName","src":"4757:6:44","typeDescriptions":{}}},"id":13291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4757:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"4743:31:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":13293,"nodeType":"ExpressionStatement","src":"4743:31:44"},{"expression":{"id":13301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13294,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"4784:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13297,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13272,"src":"4800:3:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":13298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4807:2:44","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"4800:9:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":13296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4793:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":13295,"name":"uint48","nodeType":"ElementaryTypeName","src":"4793:6:44","typeDescriptions":{}}},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4793:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"4784:26:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"id":13302,"nodeType":"ExpressionStatement","src":"4784:26:44"},{"expression":{"components":[{"id":13303,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13265,"src":"4829:11:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13304,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13267,"src":"4842:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":13305,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13269,"src":"4854:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"id":13306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4828:33:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint32_$_t_uint32_$_t_uint48_$","typeString":"tuple(uint32,uint32,uint48)"}},"functionReturnParameters":13270,"id":13307,"nodeType":"Return","src":"4821:40:44"}]},"documentation":{"id":13259,"nodeType":"StructuredDocumentation","src":"4429:117:44","text":" @dev Split a delay into its components: valueBefore, valueAfter and effect (transition timepoint)."},"id":13309,"implemented":true,"kind":"function","modifiers":[],"name":"unpack","nameLocation":"4560:6:44","nodeType":"FunctionDefinition","parameters":{"id":13263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13262,"mutability":"mutable","name":"self","nameLocation":"4573:4:44","nodeType":"VariableDeclaration","scope":13309,"src":"4567:10:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13261,"nodeType":"UserDefinedTypeName","pathNode":{"id":13260,"name":"Delay","nameLocations":["4567:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"4567:5:44"},"referencedDeclaration":13111,"src":"4567:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"4566:12:44"},"returnParameters":{"id":13270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13265,"mutability":"mutable","name":"valueBefore","nameLocation":"4609:11:44","nodeType":"VariableDeclaration","scope":13309,"src":"4602:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13264,"name":"uint32","nodeType":"ElementaryTypeName","src":"4602:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13267,"mutability":"mutable","name":"valueAfter","nameLocation":"4629:10:44","nodeType":"VariableDeclaration","scope":13309,"src":"4622:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13266,"name":"uint32","nodeType":"ElementaryTypeName","src":"4622:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13269,"mutability":"mutable","name":"effect","nameLocation":"4648:6:44","nodeType":"VariableDeclaration","scope":13309,"src":"4641:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13268,"name":"uint48","nodeType":"ElementaryTypeName","src":"4641:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4601:54:44"},"scope":13348,"src":"4551:317:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13346,"nodeType":"Block","src":"5041:112:44","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13326,"name":"effect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13316,"src":"5078:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint48","typeString":"uint48"}],"id":13325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5070:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":13324,"name":"uint112","nodeType":"ElementaryTypeName","src":"5070:7:44","typeDescriptions":{}}},"id":13327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5070:15:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":13328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5089:2:44","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"5070:21:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"id":13330,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5069:23:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":13336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13333,"name":"valueBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13312,"src":"5104:11:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":13332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5096:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":13331,"name":"uint112","nodeType":"ElementaryTypeName","src":"5096:7:44","typeDescriptions":{}}},"id":13334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5096:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":13335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5120:2:44","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"5096:26:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"id":13337,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5095:28:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"5069:54:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"id":13341,"name":"valueAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13314,"src":"5134:10:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":13340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5126:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":13339,"name":"uint112","nodeType":"ElementaryTypeName","src":"5126:7:44","typeDescriptions":{}}},"id":13342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5126:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"5069:76:44","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"id":13322,"name":"Delay","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13111,"src":"5058:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_Delay_$13111_$","typeString":"type(Time.Delay)"}},"id":13323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5064:4:44","memberName":"wrap","nodeType":"MemberAccess","src":"5058:10:44","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint112_$returns$_t_userDefinedValueType$_Delay_$13111_$","typeString":"function (uint112) pure returns (Time.Delay)"}},"id":13344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5058:88:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"functionReturnParameters":13321,"id":13345,"nodeType":"Return","src":"5051:95:44"}]},"documentation":{"id":13310,"nodeType":"StructuredDocumentation","src":"4874:64:44","text":" @dev pack the components into a Delay object."},"id":13347,"implemented":true,"kind":"function","modifiers":[],"name":"pack","nameLocation":"4952:4:44","nodeType":"FunctionDefinition","parameters":{"id":13317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13312,"mutability":"mutable","name":"valueBefore","nameLocation":"4964:11:44","nodeType":"VariableDeclaration","scope":13347,"src":"4957:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13311,"name":"uint32","nodeType":"ElementaryTypeName","src":"4957:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13314,"mutability":"mutable","name":"valueAfter","nameLocation":"4984:10:44","nodeType":"VariableDeclaration","scope":13347,"src":"4977:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13313,"name":"uint32","nodeType":"ElementaryTypeName","src":"4977:6:44","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13316,"mutability":"mutable","name":"effect","nameLocation":"5003:6:44","nodeType":"VariableDeclaration","scope":13347,"src":"4996:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":13315,"name":"uint48","nodeType":"ElementaryTypeName","src":"4996:6:44","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"4956:54:44"},"returnParameters":{"id":13321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13347,"src":"5034:5:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"},"typeName":{"id":13319,"nodeType":"UserDefinedTypeName","pathNode":{"id":13318,"name":"Delay","nameLocations":["5034:5:44"],"nodeType":"IdentifierPath","referencedDeclaration":13111,"src":"5034:5:44"},"referencedDeclaration":13111,"src":"5034:5:44","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_Delay_$13111","typeString":"Time.Delay"}},"visibility":"internal"}],"src":"5033:7:44"},"scope":13348,"src":"4943:210:44","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":13349,"src":"640:4515:44","usedErrors":[],"usedEvents":[]}],"src":"104:5052:44"},"id":44},"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol":{"ast":{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","exportedSymbols":{"IUniswapV3SwapCallback":[13362]},"id":13363,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13350,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:45"},{"abstract":false,"baseContracts":[],"canonicalName":"IUniswapV3SwapCallback","contractDependencies":[],"contractKind":"interface","documentation":{"id":13351,"nodeType":"StructuredDocumentation","src":"71:144:45","text":"@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface"},"fullyImplemented":false,"id":13362,"linearizedBaseContracts":[13362],"name":"IUniswapV3SwapCallback","nameLocation":"225:22:45","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13352,"nodeType":"StructuredDocumentation","src":"254:898:45","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":13361,"implemented":false,"kind":"function","modifiers":[],"name":"uniswapV3SwapCallback","nameLocation":"1166:21:45","nodeType":"FunctionDefinition","parameters":{"id":13359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13354,"mutability":"mutable","name":"amount0Delta","nameLocation":"1204:12:45","nodeType":"VariableDeclaration","scope":13361,"src":"1197:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13353,"name":"int256","nodeType":"ElementaryTypeName","src":"1197:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":13356,"mutability":"mutable","name":"amount1Delta","nameLocation":"1233:12:45","nodeType":"VariableDeclaration","scope":13361,"src":"1226:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":13355,"name":"int256","nodeType":"ElementaryTypeName","src":"1226:6:45","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":13358,"mutability":"mutable","name":"data","nameLocation":"1270:4:45","nodeType":"VariableDeclaration","scope":13361,"src":"1255:19:45","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13357,"name":"bytes","nodeType":"ElementaryTypeName","src":"1255:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1187:93:45"},"returnParameters":{"id":13360,"nodeType":"ParameterList","parameters":[],"src":"1289:0:45"},"scope":13362,"src":"1157:133:45","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13363,"src":"215:1077:45","usedErrors":[],"usedEvents":[]}],"src":"45:1248:45"},"id":45},"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol":{"ast":{"absolutePath":"@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol","exportedSymbols":{"ISwapRouter":[13462],"IUniswapV3SwapCallback":[13362]},"id":13463,"license":"GPL-2.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13364,"literals":["solidity",">=","0.7",".5"],"nodeType":"PragmaDirective","src":"45:24:46"},{"id":13365,"literals":["abicoder","v2"],"nodeType":"PragmaDirective","src":"70:19:46"},{"absolutePath":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","file":"@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol","id":13366,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13463,"sourceUnit":13363,"src":"91:83:46","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13368,"name":"IUniswapV3SwapCallback","nameLocations":["305:22:46"],"nodeType":"IdentifierPath","referencedDeclaration":13362,"src":"305:22:46"},"id":13369,"nodeType":"InheritanceSpecifier","src":"305:22:46"}],"canonicalName":"ISwapRouter","contractDependencies":[],"contractKind":"interface","documentation":{"id":13367,"nodeType":"StructuredDocumentation","src":"176:104:46","text":"@title Router token swapping functionality\n @notice Functions for swapping tokens via Uniswap V3"},"fullyImplemented":false,"id":13462,"linearizedBaseContracts":[13462,13362],"name":"ISwapRouter","nameLocation":"290:11:46","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapRouter.ExactInputSingleParams","id":13386,"members":[{"constant":false,"id":13371,"mutability":"mutable","name":"tokenIn","nameLocation":"382:7:46","nodeType":"VariableDeclaration","scope":13386,"src":"374:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13370,"name":"address","nodeType":"ElementaryTypeName","src":"374:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13373,"mutability":"mutable","name":"tokenOut","nameLocation":"407:8:46","nodeType":"VariableDeclaration","scope":13386,"src":"399:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13372,"name":"address","nodeType":"ElementaryTypeName","src":"399:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13375,"mutability":"mutable","name":"fee","nameLocation":"432:3:46","nodeType":"VariableDeclaration","scope":13386,"src":"425:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":13374,"name":"uint24","nodeType":"ElementaryTypeName","src":"425:6:46","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":13377,"mutability":"mutable","name":"recipient","nameLocation":"453:9:46","nodeType":"VariableDeclaration","scope":13386,"src":"445:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13376,"name":"address","nodeType":"ElementaryTypeName","src":"445:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13379,"mutability":"mutable","name":"deadline","nameLocation":"480:8:46","nodeType":"VariableDeclaration","scope":13386,"src":"472:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13378,"name":"uint256","nodeType":"ElementaryTypeName","src":"472:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13381,"mutability":"mutable","name":"amountIn","nameLocation":"506:8:46","nodeType":"VariableDeclaration","scope":13386,"src":"498:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13380,"name":"uint256","nodeType":"ElementaryTypeName","src":"498:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13383,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"532:16:46","nodeType":"VariableDeclaration","scope":13386,"src":"524:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13382,"name":"uint256","nodeType":"ElementaryTypeName","src":"524:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13385,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"566:17:46","nodeType":"VariableDeclaration","scope":13386,"src":"558:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13384,"name":"uint160","nodeType":"ElementaryTypeName","src":"558:7:46","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactInputSingleParams","nameLocation":"341:22:46","nodeType":"StructDefinition","scope":13462,"src":"334:256:46","visibility":"public"},{"documentation":{"id":13387,"nodeType":"StructuredDocumentation","src":"596:250:46","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":13395,"implemented":false,"kind":"function","modifiers":[],"name":"exactInputSingle","nameLocation":"860:16:46","nodeType":"FunctionDefinition","parameters":{"id":13391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13390,"mutability":"mutable","name":"params","nameLocation":"909:6:46","nodeType":"VariableDeclaration","scope":13395,"src":"877:38:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_calldata_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"},"typeName":{"id":13389,"nodeType":"UserDefinedTypeName","pathNode":{"id":13388,"name":"ExactInputSingleParams","nameLocations":["877:22:46"],"nodeType":"IdentifierPath","referencedDeclaration":13386,"src":"877:22:46"},"referencedDeclaration":13386,"src":"877:22:46","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputSingleParams_$13386_storage_ptr","typeString":"struct ISwapRouter.ExactInputSingleParams"}},"visibility":"internal"}],"src":"876:40:46"},"returnParameters":{"id":13394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13393,"mutability":"mutable","name":"amountOut","nameLocation":"951:9:46","nodeType":"VariableDeclaration","scope":13395,"src":"943:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13392,"name":"uint256","nodeType":"ElementaryTypeName","src":"943:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"942:19:46"},"scope":13462,"src":"851:111:46","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactInputParams","id":13406,"members":[{"constant":false,"id":13397,"mutability":"mutable","name":"path","nameLocation":"1008:4:46","nodeType":"VariableDeclaration","scope":13406,"src":"1002:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":13396,"name":"bytes","nodeType":"ElementaryTypeName","src":"1002:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13399,"mutability":"mutable","name":"recipient","nameLocation":"1030:9:46","nodeType":"VariableDeclaration","scope":13406,"src":"1022:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13398,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13401,"mutability":"mutable","name":"deadline","nameLocation":"1057:8:46","nodeType":"VariableDeclaration","scope":13406,"src":"1049:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13403,"mutability":"mutable","name":"amountIn","nameLocation":"1083:8:46","nodeType":"VariableDeclaration","scope":13406,"src":"1075:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13402,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13405,"mutability":"mutable","name":"amountOutMinimum","nameLocation":"1109:16:46","nodeType":"VariableDeclaration","scope":13406,"src":"1101:24:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13404,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactInputParams","nameLocation":"975:16:46","nodeType":"StructDefinition","scope":13462,"src":"968:164:46","visibility":"public"},{"documentation":{"id":13407,"nodeType":"StructuredDocumentation","src":"1138:273:46","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":13415,"implemented":false,"kind":"function","modifiers":[],"name":"exactInput","nameLocation":"1425:10:46","nodeType":"FunctionDefinition","parameters":{"id":13411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13410,"mutability":"mutable","name":"params","nameLocation":"1462:6:46","nodeType":"VariableDeclaration","scope":13415,"src":"1436:32:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$13406_calldata_ptr","typeString":"struct ISwapRouter.ExactInputParams"},"typeName":{"id":13409,"nodeType":"UserDefinedTypeName","pathNode":{"id":13408,"name":"ExactInputParams","nameLocations":["1436:16:46"],"nodeType":"IdentifierPath","referencedDeclaration":13406,"src":"1436:16:46"},"referencedDeclaration":13406,"src":"1436:16:46","typeDescriptions":{"typeIdentifier":"t_struct$_ExactInputParams_$13406_storage_ptr","typeString":"struct ISwapRouter.ExactInputParams"}},"visibility":"internal"}],"src":"1435:34:46"},"returnParameters":{"id":13414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13413,"mutability":"mutable","name":"amountOut","nameLocation":"1504:9:46","nodeType":"VariableDeclaration","scope":13415,"src":"1496:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13412,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:19:46"},"scope":13462,"src":"1416:99:46","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputSingleParams","id":13432,"members":[{"constant":false,"id":13417,"mutability":"mutable","name":"tokenIn","nameLocation":"1570:7:46","nodeType":"VariableDeclaration","scope":13432,"src":"1562:15:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13416,"name":"address","nodeType":"ElementaryTypeName","src":"1562:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13419,"mutability":"mutable","name":"tokenOut","nameLocation":"1595:8:46","nodeType":"VariableDeclaration","scope":13432,"src":"1587:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13418,"name":"address","nodeType":"ElementaryTypeName","src":"1587:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13421,"mutability":"mutable","name":"fee","nameLocation":"1620:3:46","nodeType":"VariableDeclaration","scope":13432,"src":"1613:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":13420,"name":"uint24","nodeType":"ElementaryTypeName","src":"1613:6:46","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":13423,"mutability":"mutable","name":"recipient","nameLocation":"1641:9:46","nodeType":"VariableDeclaration","scope":13432,"src":"1633:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13422,"name":"address","nodeType":"ElementaryTypeName","src":"1633:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13425,"mutability":"mutable","name":"deadline","nameLocation":"1668:8:46","nodeType":"VariableDeclaration","scope":13432,"src":"1660:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1660:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13427,"mutability":"mutable","name":"amountOut","nameLocation":"1694:9:46","nodeType":"VariableDeclaration","scope":13432,"src":"1686:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1686:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13429,"mutability":"mutable","name":"amountInMaximum","nameLocation":"1721:15:46","nodeType":"VariableDeclaration","scope":13432,"src":"1713:23:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13428,"name":"uint256","nodeType":"ElementaryTypeName","src":"1713:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13431,"mutability":"mutable","name":"sqrtPriceLimitX96","nameLocation":"1754:17:46","nodeType":"VariableDeclaration","scope":13432,"src":"1746:25:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":13430,"name":"uint160","nodeType":"ElementaryTypeName","src":"1746:7:46","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"name":"ExactOutputSingleParams","nameLocation":"1528:23:46","nodeType":"StructDefinition","scope":13462,"src":"1521:257:46","visibility":"public"},{"documentation":{"id":13433,"nodeType":"StructuredDocumentation","src":"1784:250:46","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":13441,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutputSingle","nameLocation":"2048:17:46","nodeType":"FunctionDefinition","parameters":{"id":13437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13436,"mutability":"mutable","name":"params","nameLocation":"2099:6:46","nodeType":"VariableDeclaration","scope":13441,"src":"2066:39:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"},"typeName":{"id":13435,"nodeType":"UserDefinedTypeName","pathNode":{"id":13434,"name":"ExactOutputSingleParams","nameLocations":["2066:23:46"],"nodeType":"IdentifierPath","referencedDeclaration":13432,"src":"2066:23:46"},"referencedDeclaration":13432,"src":"2066:23:46","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputSingleParams_$13432_storage_ptr","typeString":"struct ISwapRouter.ExactOutputSingleParams"}},"visibility":"internal"}],"src":"2065:41:46"},"returnParameters":{"id":13440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13439,"mutability":"mutable","name":"amountIn","nameLocation":"2141:8:46","nodeType":"VariableDeclaration","scope":13441,"src":"2133:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13438,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:18:46"},"scope":13462,"src":"2039:112:46","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"ISwapRouter.ExactOutputParams","id":13452,"members":[{"constant":false,"id":13443,"mutability":"mutable","name":"path","nameLocation":"2198:4:46","nodeType":"VariableDeclaration","scope":13452,"src":"2192:10:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":13442,"name":"bytes","nodeType":"ElementaryTypeName","src":"2192:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13445,"mutability":"mutable","name":"recipient","nameLocation":"2220:9:46","nodeType":"VariableDeclaration","scope":13452,"src":"2212:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13444,"name":"address","nodeType":"ElementaryTypeName","src":"2212:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13447,"mutability":"mutable","name":"deadline","nameLocation":"2247:8:46","nodeType":"VariableDeclaration","scope":13452,"src":"2239:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13446,"name":"uint256","nodeType":"ElementaryTypeName","src":"2239:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13449,"mutability":"mutable","name":"amountOut","nameLocation":"2273:9:46","nodeType":"VariableDeclaration","scope":13452,"src":"2265:17:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13448,"name":"uint256","nodeType":"ElementaryTypeName","src":"2265:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13451,"mutability":"mutable","name":"amountInMaximum","nameLocation":"2300:15:46","nodeType":"VariableDeclaration","scope":13452,"src":"2292:23:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13450,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ExactOutputParams","nameLocation":"2164:17:46","nodeType":"StructDefinition","scope":13462,"src":"2157:165:46","visibility":"public"},{"documentation":{"id":13453,"nodeType":"StructuredDocumentation","src":"2328:284:46","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":13461,"implemented":false,"kind":"function","modifiers":[],"name":"exactOutput","nameLocation":"2626:11:46","nodeType":"FunctionDefinition","parameters":{"id":13457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13456,"mutability":"mutable","name":"params","nameLocation":"2665:6:46","nodeType":"VariableDeclaration","scope":13461,"src":"2638:33:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$13452_calldata_ptr","typeString":"struct ISwapRouter.ExactOutputParams"},"typeName":{"id":13455,"nodeType":"UserDefinedTypeName","pathNode":{"id":13454,"name":"ExactOutputParams","nameLocations":["2638:17:46"],"nodeType":"IdentifierPath","referencedDeclaration":13452,"src":"2638:17:46"},"referencedDeclaration":13452,"src":"2638:17:46","typeDescriptions":{"typeIdentifier":"t_struct$_ExactOutputParams_$13452_storage_ptr","typeString":"struct ISwapRouter.ExactOutputParams"}},"visibility":"internal"}],"src":"2637:35:46"},"returnParameters":{"id":13460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13459,"mutability":"mutable","name":"amountIn","nameLocation":"2707:8:46","nodeType":"VariableDeclaration","scope":13461,"src":"2699:16:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13458,"name":"uint256","nodeType":"ElementaryTypeName","src":"2699:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2698:18:46"},"scope":13462,"src":"2617:100:46","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":13463,"src":"280:2439:46","usedErrors":[],"usedEvents":[]}],"src":"45:2675:46"},"id":46},"contracts/AaveV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/AaveV3InvestStrategy.sol","exportedSymbols":{"AaveV3InvestStrategy":[13836],"DataTypes":[19793],"IERC20":[8656],"IInvestStrategy":[22374],"IPool":[20704],"InvestStrategyClient":[15775],"ReserveConfiguration":[22197]},"id":13837,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":13464,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:47"},{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","file":"./dependencies/aave-v3/IPool.sol","id":13466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":20705,"src":"64:55:47","symbolAliases":[{"foreign":{"id":13465,"name":"IPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20704,"src":"72:5:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./dependencies/aave-v3/DataTypes.sol","id":13468,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":19794,"src":"120:63:47","symbolAliases":[{"foreign":{"id":13467,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"128:9:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","file":"./dependencies/aave-v3/ReserveConfiguration.sol","id":13470,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":22198,"src":"184:85:47","symbolAliases":[{"foreign":{"id":13469,"name":"ReserveConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22197,"src":"192:20:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":13472,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":7365,"src":"270:69:47","symbolAliases":[{"foreign":{"id":13471,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"278:6:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":13474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":22375,"src":"340:65:47","symbolAliases":[{"foreign":{"id":13473,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"348:15:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"./InvestStrategyClient.sol","id":13476,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13837,"sourceUnit":15776,"src":"406:64:47","symbolAliases":[{"foreign":{"id":13475,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"414:20:47","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13478,"name":"IInvestStrategy","nameLocations":["693:15:47"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"693:15:47"},"id":13479,"nodeType":"InheritanceSpecifier","src":"693:15:47"}],"canonicalName":"AaveV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":13477,"nodeType":"StructuredDocumentation","src":"472:187:47","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":13836,"linearizedBaseContracts":[13836,22374],"name":"AaveV3InvestStrategy","nameLocation":"669:20:47","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13483,"libraryName":{"id":13480,"name":"ReserveConfiguration","nameLocations":["719:20:47"],"nodeType":"IdentifierPath","referencedDeclaration":22197,"src":"719:20:47"},"nodeType":"UsingForDirective","src":"713:65:47","typeName":{"id":13482,"nodeType":"UserDefinedTypeName","pathNode":{"id":13481,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["744:9:47","754:23:47"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"744:33:47"},"referencedDeclaration":19478,"src":"744:33:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}}},{"constant":false,"id":13489,"mutability":"immutable","name":"__self","nameLocation":"808:6:47","nodeType":"VariableDeclaration","scope":13836,"src":"782:48:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13484,"name":"address","nodeType":"ElementaryTypeName","src":"782:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":13487,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"825:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"id":13486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"817:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13485,"name":"address","nodeType":"ElementaryTypeName","src":"817:7:47","typeDescriptions":{}}},"id":13488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"817:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[22373],"constant":false,"functionSelector":"5b9a4c35","id":13495,"mutability":"immutable","name":"storageSlot","nameLocation":"859:11:47","nodeType":"VariableDeclaration","scope":13836,"src":"834:81:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13490,"name":"bytes32","nodeType":"ElementaryTypeName","src":"834:7:47","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":13493,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"910:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"expression":{"id":13491,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"873:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":13492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"894:15:47","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"873:36:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":13494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"873:42:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":13498,"mutability":"immutable","name":"_aave","nameLocation":"945:5:47","nodeType":"VariableDeclaration","scope":13836,"src":"920:30:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"},"typeName":{"id":13497,"nodeType":"UserDefinedTypeName","pathNode":{"id":13496,"name":"IPool","nameLocations":["920:5:47"],"nodeType":"IdentifierPath","referencedDeclaration":20704,"src":"920:5:47"},"referencedDeclaration":20704,"src":"920:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"visibility":"internal"},{"constant":false,"id":13501,"mutability":"immutable","name":"_asset","nameLocation":"980:6:47","nodeType":"VariableDeclaration","scope":13836,"src":"954:32:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":13500,"nodeType":"UserDefinedTypeName","pathNode":{"id":13499,"name":"IERC20","nameLocations":["954:6:47"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"954:6:47"},"referencedDeclaration":8656,"src":"954:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"errorSelector":"aafc462c","id":13503,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"997:34:47","nodeType":"ErrorDefinition","parameters":{"id":13502,"nodeType":"ParameterList","parameters":[],"src":"1031:2:47"},"src":"991:43:47"},{"errorSelector":"8542eda2","id":13505,"name":"CannotDisconnectWithAssets","nameLocation":"1043:26:47","nodeType":"ErrorDefinition","parameters":{"id":13504,"nodeType":"ParameterList","parameters":[],"src":"1069:2:47"},"src":"1037:35:47"},{"errorSelector":"50701b61","id":13507,"name":"NoExtraDataAllowed","nameLocation":"1081:18:47","nodeType":"ErrorDefinition","parameters":{"id":13506,"nodeType":"ParameterList","parameters":[],"src":"1099:2:47"},"src":"1075:27:47"},{"errorSelector":"c3eb4ed5","id":13509,"name":"ReserveNotFoundInAave","nameLocation":"1111:21:47","nodeType":"ErrorDefinition","parameters":{"id":13508,"nodeType":"ParameterList","parameters":[],"src":"1132:2:47"},"src":"1105:30:47"},{"body":{"id":13522,"nodeType":"Block","src":"1164:90:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13513,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1182:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"id":13512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1174:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13511,"name":"address","nodeType":"ElementaryTypeName","src":"1174:7:47","typeDescriptions":{}}},"id":13514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1174:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13515,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13489,"src":"1191:6:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1174:23:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13520,"nodeType":"IfStatement","src":"1170:72:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13517,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13503,"src":"1206:34:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1206:36:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13519,"nodeType":"RevertStatement","src":"1199:43:47"}},{"id":13521,"nodeType":"PlaceholderStatement","src":"1248:1:47"}]},"id":13523,"name":"onlyDelegCall","nameLocation":"1148:13:47","nodeType":"ModifierDefinition","parameters":{"id":13510,"nodeType":"ParameterList","parameters":[],"src":"1161:2:47"},"src":"1139:115:47","virtual":false,"visibility":"internal"},{"body":{"id":13557,"nodeType":"Block","src":"1298:152:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"arguments":[{"id":13536,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13526,"src":"1337:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1329:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13534,"name":"address","nodeType":"ElementaryTypeName","src":"1329:7:47","typeDescriptions":{}}},"id":13537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1329:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13532,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13529,"src":"1308:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":13533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1314:14:47","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":20554,"src":"1308:20:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":13538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1308:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1346:13:47","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"1308:51:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":13542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371: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":13541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1363:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13540,"name":"address","nodeType":"ElementaryTypeName","src":"1363:7:47","typeDescriptions":{}}},"id":13543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1363:10:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1308:65:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13548,"nodeType":"IfStatement","src":"1304:101:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13545,"name":"ReserveNotFoundInAave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13509,"src":"1382:21:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1382:23:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13547,"nodeType":"RevertStatement","src":"1375:30:47"}},{"expression":{"id":13551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13549,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13498,"src":"1411:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13550,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13529,"src":"1419:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"src":"1411:13:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":13552,"nodeType":"ExpressionStatement","src":"1411:13:47"},{"expression":{"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13553,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"1430:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13554,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13526,"src":"1439:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"src":"1430:15:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":13556,"nodeType":"ExpressionStatement","src":"1430:15:47"}]},"id":13558,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13526,"mutability":"mutable","name":"asset_","nameLocation":"1277:6:47","nodeType":"VariableDeclaration","scope":13558,"src":"1270:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":13525,"nodeType":"UserDefinedTypeName","pathNode":{"id":13524,"name":"IERC20","nameLocations":["1270:6:47"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1270:6:47"},"referencedDeclaration":8656,"src":"1270:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13529,"mutability":"mutable","name":"aave_","nameLocation":"1291:5:47","nodeType":"VariableDeclaration","scope":13558,"src":"1285:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"},"typeName":{"id":13528,"nodeType":"UserDefinedTypeName","pathNode":{"id":13527,"name":"IPool","nameLocations":["1285:5:47"],"nodeType":"IdentifierPath","referencedDeclaration":20704,"src":"1285:5:47"},"referencedDeclaration":20704,"src":"1285:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"visibility":"internal"}],"src":"1269:28:47"},"returnParameters":{"id":13531,"nodeType":"ParameterList","parameters":[],"src":"1298:0:47"},"scope":13836,"src":"1258:192:47","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13572,"nodeType":"Block","src":"1531:55:47","statements":[{"expression":{"arguments":[{"arguments":[{"id":13568,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"1573:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1565:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13566,"name":"address","nodeType":"ElementaryTypeName","src":"1565:7:47","typeDescriptions":{}}},"id":13569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1565:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13564,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13498,"src":"1544:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":13565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1550:14:47","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":20554,"src":"1544:20:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":13570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1544:37:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"functionReturnParameters":13563,"id":13571,"nodeType":"Return","src":"1537:44:47"}]},"id":13573,"implemented":true,"kind":"function","modifiers":[],"name":"_reserveData","nameLocation":"1463:12:47","nodeType":"FunctionDefinition","parameters":{"id":13559,"nodeType":"ParameterList","parameters":[],"src":"1475:2:47"},"returnParameters":{"id":13563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13573,"src":"1501:28:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":13561,"nodeType":"UserDefinedTypeName","pathNode":{"id":13560,"name":"DataTypes.ReserveData","nameLocations":["1501:9:47","1511:11:47"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"1501:21:47"},"referencedDeclaration":19475,"src":"1501:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"1500:30:47"},"scope":13836,"src":"1454:132:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[22307],"body":{"id":13590,"nodeType":"Block","src":"1704:64:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13582,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13576,"src":"1714:8:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1723:6:47","memberName":"length","nodeType":"MemberAccess","src":"1714:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1733:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1714:20:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13589,"nodeType":"IfStatement","src":"1710:53:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13586,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13507,"src":"1743:18:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1743:20:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13588,"nodeType":"RevertStatement","src":"1736:27:47"}}]},"documentation":{"id":13574,"nodeType":"StructuredDocumentation","src":"1590:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":13591,"implemented":true,"kind":"function","modifiers":[{"id":13580,"kind":"modifierInvocation","modifierName":{"id":13579,"name":"onlyDelegCall","nameLocations":["1690:13:47"],"nodeType":"IdentifierPath","referencedDeclaration":13523,"src":"1690:13:47"},"nodeType":"ModifierInvocation","src":"1690:13:47"}],"name":"connect","nameLocation":"1633:7:47","nodeType":"FunctionDefinition","overrides":{"id":13578,"nodeType":"OverrideSpecifier","overrides":[],"src":"1681:8:47"},"parameters":{"id":13577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13576,"mutability":"mutable","name":"initData","nameLocation":"1654:8:47","nodeType":"VariableDeclaration","scope":13591,"src":"1641:21:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13575,"name":"bytes","nodeType":"ElementaryTypeName","src":"1641:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1640:23:47"},"returnParameters":{"id":13581,"nodeType":"ParameterList","parameters":[],"src":"1704:0:47"},"scope":13836,"src":"1624:144:47","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22313],"body":{"id":13625,"nodeType":"Block","src":"1878:156:47","statements":[{"assignments":[13602],"declarations":[{"constant":false,"id":13602,"mutability":"mutable","name":"aToken","nameLocation":"1891:6:47","nodeType":"VariableDeclaration","scope":13625,"src":"1884:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":13601,"nodeType":"UserDefinedTypeName","pathNode":{"id":13600,"name":"IERC20","nameLocations":["1884:6:47"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1884:6:47"},"referencedDeclaration":8656,"src":"1884:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"id":13608,"initialValue":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13604,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"1907:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":13605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1922:13:47","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"1907:28:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13603,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"1900:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":13607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1900:36:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1884:52:47"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1946:6:47","subExpression":{"id":13609,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13594,"src":"1947:5:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":13615,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1981:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"id":13614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1973:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13613,"name":"address","nodeType":"ElementaryTypeName","src":"1973:7:47","typeDescriptions":{}}},"id":13616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13611,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13602,"src":"1956:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":13612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1963:9:47","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"1956:16:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1956:31:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:36:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1946:46:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13624,"nodeType":"IfStatement","src":"1942:87:47","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13621,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13505,"src":"2001:26:47","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:28:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13623,"nodeType":"RevertStatement","src":"1994:35:47"}}]},"documentation":{"id":13592,"nodeType":"StructuredDocumentation","src":"1772:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":13626,"implemented":true,"kind":"function","modifiers":[{"id":13598,"kind":"modifierInvocation","modifierName":{"id":13597,"name":"onlyDelegCall","nameLocations":["1864:13:47"],"nodeType":"IdentifierPath","referencedDeclaration":13523,"src":"1864:13:47"},"nodeType":"ModifierInvocation","src":"1864:13:47"}],"name":"disconnect","nameLocation":"1815:10:47","nodeType":"FunctionDefinition","overrides":{"id":13596,"nodeType":"OverrideSpecifier","overrides":[],"src":"1855:8:47"},"parameters":{"id":13595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13594,"mutability":"mutable","name":"force","nameLocation":"1831:5:47","nodeType":"VariableDeclaration","scope":13626,"src":"1826:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13593,"name":"bool","nodeType":"ElementaryTypeName","src":"1826:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1825:12:47"},"returnParameters":{"id":13599,"nodeType":"ParameterList","parameters":[],"src":"1878:0:47"},"scope":13836,"src":"1806:228:47","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22367],"body":{"id":13664,"nodeType":"Block","src":"2159:218:47","statements":[{"assignments":[13639],"declarations":[{"constant":false,"id":13639,"mutability":"mutable","name":"reserve","nameLocation":"2194:7:47","nodeType":"VariableDeclaration","scope":13664,"src":"2165:36:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":13638,"nodeType":"UserDefinedTypeName","pathNode":{"id":13637,"name":"DataTypes.ReserveData","nameLocations":["2165:9:47","2175:11:47"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"2165:21:47"},"referencedDeclaration":19475,"src":"2165:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":13642,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13640,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2204:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":13641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2165:53:47"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2228:34:47","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13643,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13639,"src":"2229:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2237:13:47","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2229:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":13645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2251:9:47","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":21323,"src":"2229:31:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":13646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2229:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13648,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13639,"src":"2266:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2274:13:47","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2266:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":13650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2288:9:47","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":21423,"src":"2266:31:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":13651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2228:71:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13655,"nodeType":"IfStatement","src":"2224:85:47","trueBody":{"expression":{"hexValue":"30","id":13653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2308:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":13634,"id":13654,"nodeType":"Return","src":"2301:8:47"}},{"expression":{"arguments":[{"id":13661,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13629,"src":"2362:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":13657,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13639,"src":"2329:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2337:13:47","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"2329:21:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13656,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"2322:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":13659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:29:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2352:9:47","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2322:39:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:50:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13634,"id":13663,"nodeType":"Return","src":"2315:57:47"}]},"documentation":{"id":13627,"nodeType":"StructuredDocumentation","src":"2038:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":13665,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2081:11:47","nodeType":"FunctionDefinition","overrides":{"id":13631,"nodeType":"OverrideSpecifier","overrides":[],"src":"2132:8:47"},"parameters":{"id":13630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13629,"mutability":"mutable","name":"contract_","nameLocation":"2101:9:47","nodeType":"VariableDeclaration","scope":13665,"src":"2093:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13628,"name":"address","nodeType":"ElementaryTypeName","src":"2093:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2092:19:47"},"returnParameters":{"id":13634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13633,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13665,"src":"2150:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13632,"name":"uint256","nodeType":"ElementaryTypeName","src":"2150:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2149:9:47"},"scope":13836,"src":"2072:305:47","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22359],"body":{"id":13706,"nodeType":"Block","src":"2505:254:47","statements":[{"assignments":[13678],"declarations":[{"constant":false,"id":13678,"mutability":"mutable","name":"reserve","nameLocation":"2540:7:47","nodeType":"VariableDeclaration","scope":13706,"src":"2511:36:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":13677,"nodeType":"UserDefinedTypeName","pathNode":{"id":13676,"name":"DataTypes.ReserveData","nameLocations":["2511:9:47","2521:11:47"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"2511:21:47"},"referencedDeclaration":19475,"src":"2511:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":13681,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13679,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"2550:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":13680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2550:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2511:53:47"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2574:34:47","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13682,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13678,"src":"2575:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2583:13:47","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2575:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":13684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2597:9:47","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":21323,"src":"2575:31:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":13685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2575:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13687,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13678,"src":"2612:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2620:13:47","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2612:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":13689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2634:9:47","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":21423,"src":"2612:31:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":13690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2612:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2574:71:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":13692,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13678,"src":"2649:7:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2657:13:47","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2649:21:47","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":13694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2671:9:47","memberName":"getFrozen","nodeType":"MemberAccess","referencedDeclaration":21373,"src":"2649:31:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":13695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:33:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2574:108:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13699,"nodeType":"IfStatement","src":"2570:128:47","trueBody":{"expression":{"hexValue":"30","id":13697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2697:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":13673,"id":13698,"nodeType":"Return","src":"2690:8:47"}},{"expression":{"expression":{"arguments":[{"id":13702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2742:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13701,"name":"uint256","nodeType":"ElementaryTypeName","src":"2742:7:47","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":13700,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2737:4:47","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":13703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2737:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":13704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2751:3:47","memberName":"max","nodeType":"MemberAccess","src":"2737:17:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13673,"id":13705,"nodeType":"Return","src":"2730:24:47"}]},"documentation":{"id":13666,"nodeType":"StructuredDocumentation","src":"2381:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":13707,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2424:10:47","nodeType":"FunctionDefinition","overrides":{"id":13670,"nodeType":"OverrideSpecifier","overrides":[],"src":"2478:8:47"},"parameters":{"id":13669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13707,"src":"2435:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13667,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2434:23:47"},"returnParameters":{"id":13673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13707,"src":"2496:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2496:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2495:9:47"},"scope":13836,"src":"2415:344:47","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22343],"body":{"id":13721,"nodeType":"Block","src":"2868:33:47","statements":[{"expression":{"arguments":[{"id":13718,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"2889:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2881:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13716,"name":"address","nodeType":"ElementaryTypeName","src":"2881:7:47","typeDescriptions":{}}},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2881:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13715,"id":13720,"nodeType":"Return","src":"2874:22:47"}]},"documentation":{"id":13708,"nodeType":"StructuredDocumentation","src":"2763:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":13722,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"2806:5:47","nodeType":"FunctionDefinition","overrides":{"id":13712,"nodeType":"OverrideSpecifier","overrides":[],"src":"2841:8:47"},"parameters":{"id":13711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13722,"src":"2812:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13709,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2811:9:47"},"returnParameters":{"id":13715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13722,"src":"2859:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13713,"name":"address","nodeType":"ElementaryTypeName","src":"2859:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2858:9:47"},"scope":13836,"src":"2797:104:47","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22351],"body":{"id":13740,"nodeType":"Block","src":"3033:75:47","statements":[{"expression":{"arguments":[{"id":13737,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13725,"src":"3093:9:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13732,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13573,"src":"3053:12:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":13733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3053:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":13734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3068:13:47","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"3053:28:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13731,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"3046:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":13735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:36:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":13736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:9:47","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"3046:46:47","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:57:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13730,"id":13739,"nodeType":"Return","src":"3039:64:47"}]},"documentation":{"id":13723,"nodeType":"StructuredDocumentation","src":"2905:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":13741,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2948:11:47","nodeType":"FunctionDefinition","overrides":{"id":13727,"nodeType":"OverrideSpecifier","overrides":[],"src":"2999:8:47"},"parameters":{"id":13726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13725,"mutability":"mutable","name":"contract_","nameLocation":"2968:9:47","nodeType":"VariableDeclaration","scope":13741,"src":"2960:17:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13724,"name":"address","nodeType":"ElementaryTypeName","src":"2960:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2959:19:47"},"returnParameters":{"id":13730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13729,"mutability":"mutable","name":"assets","nameLocation":"3025:6:47","nodeType":"VariableDeclaration","scope":13741,"src":"3017:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13728,"name":"uint256","nodeType":"ElementaryTypeName","src":"3017:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3016:16:47"},"scope":13836,"src":"2939:169:47","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22325],"body":{"id":13768,"nodeType":"Block","src":"3220:82:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13750,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"3230:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3240:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3230:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13767,"nodeType":"IfStatement","src":"3226:71:47","trueBody":{"expression":{"arguments":[{"arguments":[{"id":13758,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"3266:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3258:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13756,"name":"address","nodeType":"ElementaryTypeName","src":"3258:7:47","typeDescriptions":{}}},"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3258:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13760,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"3275:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":13763,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3291:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"id":13762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3283:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13761,"name":"address","nodeType":"ElementaryTypeName","src":"3283:7:47","typeDescriptions":{}}},"id":13764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3283:13:47","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":13753,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13498,"src":"3243:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":13755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3249:8:47","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":20321,"src":"3243:14:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) external returns (uint256)"}},"id":13765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3243:54:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13766,"nodeType":"ExpressionStatement","src":"3243:54:47"}}]},"documentation":{"id":13742,"nodeType":"StructuredDocumentation","src":"3112:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":13769,"implemented":true,"kind":"function","modifiers":[{"id":13748,"kind":"modifierInvocation","modifierName":{"id":13747,"name":"onlyDelegCall","nameLocations":["3206:13:47"],"nodeType":"IdentifierPath","referencedDeclaration":13523,"src":"3206:13:47"},"nodeType":"ModifierInvocation","src":"3206:13:47"}],"name":"withdraw","nameLocation":"3155:8:47","nodeType":"FunctionDefinition","overrides":{"id":13746,"nodeType":"OverrideSpecifier","overrides":[],"src":"3197:8:47"},"parameters":{"id":13745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13744,"mutability":"mutable","name":"assets","nameLocation":"3172:6:47","nodeType":"VariableDeclaration","scope":13769,"src":"3164:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13743,"name":"uint256","nodeType":"ElementaryTypeName","src":"3164:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3163:16:47"},"returnParameters":{"id":13749,"nodeType":"ParameterList","parameters":[],"src":"3220:0:47"},"scope":13836,"src":"3146:156:47","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22319],"body":{"id":13786,"nodeType":"Block","src":"3413:43:47","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13778,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"3423:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3433:1:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3423:11:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13785,"nodeType":"IfStatement","src":"3419:32:47","trueBody":{"expression":{"arguments":[{"id":13782,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13772,"src":"3444:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13781,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13819,"src":"3436:7:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":13783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13784,"nodeType":"ExpressionStatement","src":"3436:15:47"}}]},"documentation":{"id":13770,"nodeType":"StructuredDocumentation","src":"3306:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":13787,"implemented":true,"kind":"function","modifiers":[{"id":13776,"kind":"modifierInvocation","modifierName":{"id":13775,"name":"onlyDelegCall","nameLocations":["3399:13:47"],"nodeType":"IdentifierPath","referencedDeclaration":13523,"src":"3399:13:47"},"nodeType":"ModifierInvocation","src":"3399:13:47"}],"name":"deposit","nameLocation":"3349:7:47","nodeType":"FunctionDefinition","overrides":{"id":13774,"nodeType":"OverrideSpecifier","overrides":[],"src":"3390:8:47"},"parameters":{"id":13773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13772,"mutability":"mutable","name":"assets","nameLocation":"3365:6:47","nodeType":"VariableDeclaration","scope":13787,"src":"3357:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13771,"name":"uint256","nodeType":"ElementaryTypeName","src":"3357:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3356:16:47"},"returnParameters":{"id":13777,"nodeType":"ParameterList","parameters":[],"src":"3413:0:47"},"scope":13836,"src":"3340:116:47","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":13818,"nodeType":"Block","src":"3502:118:47","statements":[{"expression":{"arguments":[{"arguments":[{"id":13798,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13498,"src":"3539:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}],"id":13797,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3531:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13796,"name":"address","nodeType":"ElementaryTypeName","src":"3531:7:47","typeDescriptions":{}}},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3531:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13800,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"3547:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13793,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"3515:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13792,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"3508:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":13794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3508:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":13795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3523:7:47","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"3508:22:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":13801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3508:46:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13802,"nodeType":"ExpressionStatement","src":"3508:46:47"},{"expression":{"arguments":[{"arguments":[{"id":13808,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13501,"src":"3581:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3573:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13806,"name":"address","nodeType":"ElementaryTypeName","src":"3573:7:47","typeDescriptions":{}}},"id":13809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3573:15:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13810,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13789,"src":"3590:6:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":13813,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3606:4:47","typeDescriptions":{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveV3InvestStrategy_$13836","typeString":"contract AaveV3InvestStrategy"}],"id":13812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3598:7:47","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13811,"name":"address","nodeType":"ElementaryTypeName","src":"3598:7:47","typeDescriptions":{}}},"id":13814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3598:13:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":13815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3613:1:47","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":13803,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13498,"src":"3560:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":13805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3566:6:47","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":20289,"src":"3560:12:47","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":13816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3560:55:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13817,"nodeType":"ExpressionStatement","src":"3560:55:47"}]},"id":13819,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"3469:7:47","nodeType":"FunctionDefinition","parameters":{"id":13790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13789,"mutability":"mutable","name":"assets","nameLocation":"3485:6:47","nodeType":"VariableDeclaration","scope":13819,"src":"3477:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13788,"name":"uint256","nodeType":"ElementaryTypeName","src":"3477:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3476:16:47"},"returnParameters":{"id":13791,"nodeType":"ParameterList","parameters":[],"src":"3502:0:47"},"scope":13836,"src":"3460:160:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[22335],"body":{"id":13834,"nodeType":"Block","src":"3757:84:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13831,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3828:6:47","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":13832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3828:8:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13833,"nodeType":"ExpressionStatement","src":"3828:8:47"}]},"documentation":{"id":13820,"nodeType":"StructuredDocumentation","src":"3624:31:47","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":13835,"implemented":true,"kind":"function","modifiers":[{"id":13827,"kind":"modifierInvocation","modifierName":{"id":13826,"name":"onlyDelegCall","nameLocations":["3720:13:47"],"nodeType":"IdentifierPath","referencedDeclaration":13523,"src":"3720:13:47"},"nodeType":"ModifierInvocation","src":"3720:13:47"}],"name":"forwardEntryPoint","nameLocation":"3667:17:47","nodeType":"FunctionDefinition","parameters":{"id":13825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13835,"src":"3685:5:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13821,"name":"uint8","nodeType":"ElementaryTypeName","src":"3685:5:47","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":13824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13835,"src":"3692:12:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13823,"name":"bytes","nodeType":"ElementaryTypeName","src":"3692:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3684:21:47"},"returnParameters":{"id":13830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13835,"src":"3743:12:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13828,"name":"bytes","nodeType":"ElementaryTypeName","src":"3743:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3742:14:47"},"scope":13836,"src":"3658:183:47","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13837,"src":"660:3183:47","usedErrors":[13503,13505,13507,13509],"usedEvents":[]}],"src":"39:3805:47"},"id":47},"contracts/AccessManagedMSV.sol":{"ast":{"absolutePath":"contracts/AccessManagedMSV.sol","exportedSymbols":{"AccessManagedMSV":[14237],"AccessManagedProxy":[14315],"ERC4626Upgradeable":[4427],"IAccessManager":[7253],"IERC20":[8656],"IERC4626":[7538],"IInvestStrategy":[22374],"MSVBase":[17437],"Math":[11309],"UUPSUpgradeable":[3046]},"id":14238,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":13838,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:48"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":13840,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":8657,"src":"64:70:48","symbolAliases":[{"foreign":{"id":13839,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"72:6:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":13842,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":7539,"src":"135:73:48","symbolAliases":[{"foreign":{"id":13841,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"143:8:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":13844,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":7254,"src":"209:89:48","symbolAliases":[{"foreign":{"id":13843,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"217:14:48","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":13846,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":4428,"src":"299:117:48","symbolAliases":[{"foreign":{"id":13845,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"307:18:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":13848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":3047,"src":"417:100:48","symbolAliases":[{"foreign":{"id":13847,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"425:15:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":13850,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":11310,"src":"518:65:48","symbolAliases":[{"foreign":{"id":13849,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"526:4:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/MSVBase.sol","file":"./MSVBase.sol","id":13852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":17438,"src":"584:38:48","symbolAliases":[{"foreign":{"id":13851,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17437,"src":"592:7:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":13854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":22375,"src":"623:65:48","symbolAliases":[{"foreign":{"id":13853,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"631:15:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/AccessManagedProxy.sol","file":"./AccessManagedProxy.sol","id":13856,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14238,"sourceUnit":14316,"src":"689:60:48","symbolAliases":[{"foreign":{"id":13855,"name":"AccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"697:18:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13858,"name":"MSVBase","nameLocations":["1384:7:48"],"nodeType":"IdentifierPath","referencedDeclaration":17437,"src":"1384:7:48"},"id":13859,"nodeType":"InheritanceSpecifier","src":"1384:7:48"},{"baseName":{"id":13860,"name":"UUPSUpgradeable","nameLocations":["1393:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":3046,"src":"1393:15:48"},"id":13861,"nodeType":"InheritanceSpecifier","src":"1393:15:48"},{"baseName":{"id":13862,"name":"ERC4626Upgradeable","nameLocations":["1410:18:48"],"nodeType":"IdentifierPath","referencedDeclaration":4427,"src":"1410:18:48"},"id":13863,"nodeType":"InheritanceSpecifier","src":"1410:18:48"}],"canonicalName":"AccessManagedMSV","contractDependencies":[],"contractKind":"contract","documentation":{"id":13857,"nodeType":"StructuredDocumentation","src":"751:603:48","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":14237,"linearizedBaseContracts":[14237,4427,7538,3663,7590,8682,8656,4473,3046,7548,2864,17437,22298],"name":"AccessManagedMSV","nameLocation":"1364:16:48","nodeType":"ContractDefinition","nodes":[{"body":{"id":13870,"nodeType":"Block","src":"1498:33:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13867,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"1504:20:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1504:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13869,"nodeType":"ExpressionStatement","src":"1504:22:48"}]},"documentation":{"id":13864,"nodeType":"StructuredDocumentation","src":"1433:48:48","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":13871,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13865,"nodeType":"ParameterList","parameters":[],"src":"1495:2:48"},"returnParameters":{"id":13866,"nodeType":"ParameterList","parameters":[],"src":"1498:0:48"},"scope":14237,"src":"1484:47:48","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13907,"nodeType":"Block","src":"2385:121:48","statements":[{"expression":{"arguments":[{"id":13898,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"2415:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13899,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"2422:7:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13900,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13879,"src":"2431:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":13901,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"2439:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":13902,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13886,"src":"2452:17:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":13903,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13889,"src":"2471:13:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":13904,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13892,"src":"2486:14:48","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_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$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":13897,"name":"__AccessManagedMSV_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13953,"src":"2391:23:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_contract$_IERC20_$8656_$_t_array$_t_contract$_IInvestStrategy_$22374_$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":13905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2391:110:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13906,"nodeType":"ExpressionStatement","src":"2391:110:48"}]},"documentation":{"id":13872,"nodeType":"StructuredDocumentation","src":"1535:576:48","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":13908,"implemented":true,"kind":"function","modifiers":[{"id":13895,"kind":"modifierInvocation","modifierName":{"id":13894,"name":"initializer","nameLocations":["2373:11:48"],"nodeType":"IdentifierPath","referencedDeclaration":2718,"src":"2373:11:48"},"nodeType":"ModifierInvocation","src":"2373:11:48"}],"name":"initialize","nameLocation":"2123:10:48","nodeType":"FunctionDefinition","parameters":{"id":13893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13874,"mutability":"mutable","name":"name_","nameLocation":"2153:5:48","nodeType":"VariableDeclaration","scope":13908,"src":"2139:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13873,"name":"string","nodeType":"ElementaryTypeName","src":"2139:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13876,"mutability":"mutable","name":"symbol_","nameLocation":"2178:7:48","nodeType":"VariableDeclaration","scope":13908,"src":"2164:21:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13875,"name":"string","nodeType":"ElementaryTypeName","src":"2164:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13879,"mutability":"mutable","name":"asset_","nameLocation":"2198:6:48","nodeType":"VariableDeclaration","scope":13908,"src":"2191:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":13878,"nodeType":"UserDefinedTypeName","pathNode":{"id":13877,"name":"IERC20","nameLocations":["2191:6:48"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"2191:6:48"},"referencedDeclaration":8656,"src":"2191:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13883,"mutability":"mutable","name":"strategies_","nameLocation":"2235:11:48","nodeType":"VariableDeclaration","scope":13908,"src":"2210:36:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":13881,"nodeType":"UserDefinedTypeName","pathNode":{"id":13880,"name":"IInvestStrategy","nameLocations":["2210:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2210:15:48"},"referencedDeclaration":22374,"src":"2210:15:48","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":13882,"nodeType":"ArrayTypeName","src":"2210:17:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":13886,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"2267:17:48","nodeType":"VariableDeclaration","scope":13908,"src":"2252:32:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":13884,"name":"bytes","nodeType":"ElementaryTypeName","src":"2252:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":13885,"nodeType":"ArrayTypeName","src":"2252:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":13889,"mutability":"mutable","name":"depositQueue_","nameLocation":"2305:13:48","nodeType":"VariableDeclaration","scope":13908,"src":"2290:28:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":13887,"name":"uint8","nodeType":"ElementaryTypeName","src":"2290:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13888,"nodeType":"ArrayTypeName","src":"2290:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":13892,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"2339:14:48","nodeType":"VariableDeclaration","scope":13908,"src":"2324:29:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":13890,"name":"uint8","nodeType":"ElementaryTypeName","src":"2324:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13891,"nodeType":"ArrayTypeName","src":"2324:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2133:224:48"},"returnParameters":{"id":13896,"nodeType":"ParameterList","parameters":[],"src":"2385:0:48"},"scope":14237,"src":"2114:392:48","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":13952,"nodeType":"Block","src":"2844:190:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13933,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"2850:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":13934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2850:24:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13935,"nodeType":"ExpressionStatement","src":"2850:24:48"},{"expression":{"arguments":[{"id":13937,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13915,"src":"2895:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":13936,"name":"__ERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"2880:14:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (contract IERC20)"}},"id":13938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2880:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13939,"nodeType":"ExpressionStatement","src":"2880:22:48"},{"expression":{"arguments":[{"id":13941,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13910,"src":"2921:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13942,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13912,"src":"2928:7:48","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":13940,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"2908:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":13943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2908:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13944,"nodeType":"ExpressionStatement","src":"2908:28:48"},{"expression":{"arguments":[{"id":13946,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13919,"src":"2967:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":13947,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13922,"src":"2980:17:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":13948,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13925,"src":"2999:13:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":13949,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13928,"src":"3014:14:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$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":13945,"name":"__MSVBase_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16143,"src":"2942:24:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IInvestStrategy_$22374_$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":13950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2942:87:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13951,"nodeType":"ExpressionStatement","src":"2942:87:48"}]},"id":13953,"implemented":true,"kind":"function","modifiers":[{"id":13931,"kind":"modifierInvocation","modifierName":{"id":13930,"name":"onlyInitializing","nameLocations":["2827:16:48"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"2827:16:48"},"nodeType":"ModifierInvocation","src":"2827:16:48"}],"name":"__AccessManagedMSV_init","nameLocation":"2570:23:48","nodeType":"FunctionDefinition","parameters":{"id":13929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13910,"mutability":"mutable","name":"name_","nameLocation":"2613:5:48","nodeType":"VariableDeclaration","scope":13953,"src":"2599:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13909,"name":"string","nodeType":"ElementaryTypeName","src":"2599:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13912,"mutability":"mutable","name":"symbol_","nameLocation":"2638:7:48","nodeType":"VariableDeclaration","scope":13953,"src":"2624:21:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13911,"name":"string","nodeType":"ElementaryTypeName","src":"2624:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13915,"mutability":"mutable","name":"asset_","nameLocation":"2658:6:48","nodeType":"VariableDeclaration","scope":13953,"src":"2651:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":13914,"nodeType":"UserDefinedTypeName","pathNode":{"id":13913,"name":"IERC20","nameLocations":["2651:6:48"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"2651:6:48"},"referencedDeclaration":8656,"src":"2651:6:48","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":13919,"mutability":"mutable","name":"strategies_","nameLocation":"2695:11:48","nodeType":"VariableDeclaration","scope":13953,"src":"2670:36:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":13917,"nodeType":"UserDefinedTypeName","pathNode":{"id":13916,"name":"IInvestStrategy","nameLocations":["2670:15:48"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2670:15:48"},"referencedDeclaration":22374,"src":"2670:15:48","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":13918,"nodeType":"ArrayTypeName","src":"2670:17:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":13922,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"2727:17:48","nodeType":"VariableDeclaration","scope":13953,"src":"2712:32:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":13920,"name":"bytes","nodeType":"ElementaryTypeName","src":"2712:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":13921,"nodeType":"ArrayTypeName","src":"2712:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":13925,"mutability":"mutable","name":"depositQueue_","nameLocation":"2765:13:48","nodeType":"VariableDeclaration","scope":13953,"src":"2750:28:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":13923,"name":"uint8","nodeType":"ElementaryTypeName","src":"2750:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13924,"nodeType":"ArrayTypeName","src":"2750:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":13928,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"2799:14:48","nodeType":"VariableDeclaration","scope":13953,"src":"2784:29:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":13926,"name":"uint8","nodeType":"ElementaryTypeName","src":"2784:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":13927,"nodeType":"ArrayTypeName","src":"2784:7:48","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2593:224:48"},"returnParameters":{"id":13932,"nodeType":"ParameterList","parameters":[],"src":"2844:0:48"},"scope":14237,"src":"2561:473:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3000],"body":{"id":13959,"nodeType":"Block","src":"3152:2:48","statements":[]},"id":13960,"implemented":true,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"3094:17:48","nodeType":"FunctionDefinition","overrides":{"id":13957,"nodeType":"OverrideSpecifier","overrides":[],"src":"3143:8:48"},"parameters":{"id":13956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13955,"mutability":"mutable","name":"newImpl","nameLocation":"3120:7:48","nodeType":"VariableDeclaration","scope":13960,"src":"3112:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13954,"name":"address","nodeType":"ElementaryTypeName","src":"3112:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3111:17:48"},"returnParameters":{"id":13958,"nodeType":"ParameterList","parameters":[],"src":"3152:0:48"},"scope":14237,"src":"3085:69:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[15912],"body":{"id":13969,"nodeType":"Block","src":"3217:25:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13966,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"3230:5:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":13967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3230:7:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13965,"id":13968,"nodeType":"Return","src":"3223:14:48"}]},"id":13970,"implemented":true,"kind":"function","modifiers":[],"name":"_asset","nameLocation":"3167:6:48","nodeType":"FunctionDefinition","overrides":{"id":13962,"nodeType":"OverrideSpecifier","overrides":[],"src":"3190:8:48"},"parameters":{"id":13961,"nodeType":"ParameterList","parameters":[],"src":"3173:2:48"},"returnParameters":{"id":13965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13970,"src":"3208:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13963,"name":"address","nodeType":"ElementaryTypeName","src":"3208:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3207:9:48"},"scope":14237,"src":"3158:84:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4005],"body":{"id":13990,"nodeType":"Block","src":"3356:99:48","statements":[{"assignments":[13980],"declarations":[{"constant":false,"id":13980,"mutability":"mutable","name":"ownerAssets","nameLocation":"3370:11:48","nodeType":"VariableDeclaration","scope":13990,"src":"3362:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13979,"name":"uint256","nodeType":"ElementaryTypeName","src":"3362:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13985,"initialValue":{"arguments":[{"id":13983,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13973,"src":"3402:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13981,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3384:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$14237_$","typeString":"type(contract super AccessManagedMSV)"}},"id":13982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3390:11:48","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4005,"src":"3384:17:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":13984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:24:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3362:46:48"},{"expression":{"arguments":[{"id":13987,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13980,"src":"3438:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13986,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"3421:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":13988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3421:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13978,"id":13989,"nodeType":"Return","src":"3414:36:48"}]},"documentation":{"id":13971,"nodeType":"StructuredDocumentation","src":"3246:24:48","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":13991,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"3282:11:48","nodeType":"FunctionDefinition","overrides":{"id":13975,"nodeType":"OverrideSpecifier","overrides":[],"src":"3329:8:48"},"parameters":{"id":13974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13973,"mutability":"mutable","name":"owner","nameLocation":"3302:5:48","nodeType":"VariableDeclaration","scope":13991,"src":"3294:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13972,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3293:15:48"},"returnParameters":{"id":13978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13991,"src":"3347:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13976,"name":"uint256","nodeType":"ElementaryTypeName","src":"3347:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3346:9:48"},"scope":14237,"src":"3273:182:48","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4018],"body":{"id":14035,"nodeType":"Block","src":"3567:277:48","statements":[{"assignments":[14001],"declarations":[{"constant":false,"id":14001,"mutability":"mutable","name":"shares","nameLocation":"3581:6:48","nodeType":"VariableDeclaration","scope":14035,"src":"3573:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3573:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14006,"initialValue":{"arguments":[{"id":14004,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13994,"src":"3606:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14002,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3590:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$14237_$","typeString":"type(contract super AccessManagedMSV)"}},"id":14003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3596:9:48","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4018,"src":"3590:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3573:39:48"},{"assignments":[14008],"declarations":[{"constant":false,"id":14008,"mutability":"mutable","name":"ownerAssets","nameLocation":"3626:11:48","nodeType":"VariableDeclaration","scope":14035,"src":"3618:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14007,"name":"uint256","nodeType":"ElementaryTypeName","src":"3618:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14015,"initialValue":{"arguments":[{"id":14010,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"3657:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":14011,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"3665:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":14012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3670:8:48","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"3665:13:48","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":14013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3679:5:48","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"3665:19:48","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":14009,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"3640:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":14014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3640:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3618:67:48"},{"assignments":[14017],"declarations":[{"constant":false,"id":14017,"mutability":"mutable","name":"maxAssets","nameLocation":"3699:9:48","nodeType":"VariableDeclaration","scope":14035,"src":"3691:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14016,"name":"uint256","nodeType":"ElementaryTypeName","src":"3691:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14021,"initialValue":{"arguments":[{"id":14019,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14008,"src":"3728:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14018,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"3711:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":14020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3691:49:48"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14022,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14017,"src":"3754:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14023,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14008,"src":"3767:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3754:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14025,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3753:26:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":14028,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14017,"src":"3808:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":14029,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"3819:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":14030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3824:8:48","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"3819:13:48","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":14031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3833:5:48","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"3819:19:48","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":14027,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"3791:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":14032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3791:48:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3753:86:48","trueExpression":{"id":14026,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14001,"src":"3782:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13999,"id":14034,"nodeType":"Return","src":"3746:93:48"}]},"documentation":{"id":13992,"nodeType":"StructuredDocumentation","src":"3459:24:48","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":14036,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"3495:9:48","nodeType":"FunctionDefinition","overrides":{"id":13996,"nodeType":"OverrideSpecifier","overrides":[],"src":"3540:8:48"},"parameters":{"id":13995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13994,"mutability":"mutable","name":"owner","nameLocation":"3513:5:48","nodeType":"VariableDeclaration","scope":14036,"src":"3505:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13993,"name":"address","nodeType":"ElementaryTypeName","src":"3505:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3504:15:48"},"returnParameters":{"id":13999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14036,"src":"3558:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13997,"name":"uint256","nodeType":"ElementaryTypeName","src":"3558:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3557:9:48"},"scope":14237,"src":"3486:358:48","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3972],"body":{"id":14048,"nodeType":"Block","src":"3955:35:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14045,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16260,"src":"3968:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3968:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14044,"id":14047,"nodeType":"Return","src":"3961:24:48"}]},"documentation":{"id":14037,"nodeType":"StructuredDocumentation","src":"3848:24:48","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":14049,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3884:10:48","nodeType":"FunctionDefinition","overrides":{"id":14041,"nodeType":"OverrideSpecifier","overrides":[],"src":"3924:8:48"},"parameters":{"id":14040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14049,"src":"3895:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14038,"name":"address","nodeType":"ElementaryTypeName","src":"3895:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3894:9:48"},"returnParameters":{"id":14044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14043,"mutability":"mutable","name":"ret","nameLocation":"3950:3:48","nodeType":"VariableDeclaration","scope":14049,"src":"3942:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14042,"name":"uint256","nodeType":"ElementaryTypeName","src":"3942:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3941:13:48"},"scope":14237,"src":"3875:115:48","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3987],"body":{"id":14083,"nodeType":"Block","src":"4094:153:48","statements":[{"assignments":[14059],"declarations":[{"constant":false,"id":14059,"mutability":"mutable","name":"maxDep","nameLocation":"4108:6:48","nodeType":"VariableDeclaration","scope":14083,"src":"4100:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14058,"name":"uint256","nodeType":"ElementaryTypeName","src":"4100:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14062,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14060,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16260,"src":"4117:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4117:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4100:34:48"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14063,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14059,"src":"4147:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":14066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4162:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14065,"name":"uint256","nodeType":"ElementaryTypeName","src":"4162:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14064,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4157:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4157:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4171:3:48","memberName":"max","nodeType":"MemberAccess","src":"4157:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4147:27:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":14076,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14059,"src":"4214:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":14077,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4222:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":14078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4227:8:48","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"4222:13:48","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":14079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4236:5:48","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"4222:19:48","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":14075,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4197:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":14080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4197:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4147:95:48","trueExpression":{"expression":{"arguments":[{"id":14072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4182:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14071,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":14070,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4177:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4177:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":14074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4191:3:48","memberName":"max","nodeType":"MemberAccess","src":"4177:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14057,"id":14082,"nodeType":"Return","src":"4140:102:48"}]},"documentation":{"id":14050,"nodeType":"StructuredDocumentation","src":"3994:24:48","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":14084,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"4030:7:48","nodeType":"FunctionDefinition","overrides":{"id":14054,"nodeType":"OverrideSpecifier","overrides":[],"src":"4067:8:48"},"parameters":{"id":14053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14084,"src":"4038:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14051,"name":"address","nodeType":"ElementaryTypeName","src":"4038:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4037:9:48"},"returnParameters":{"id":14057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14084,"src":"4085:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14055,"name":"uint256","nodeType":"ElementaryTypeName","src":"4085:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4084:9:48"},"scope":14237,"src":"4021:226:48","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3925],"body":{"id":14094,"nodeType":"Block","src":"4355:32:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14091,"name":"_totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16298,"src":"4368:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":14092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4368:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14090,"id":14093,"nodeType":"Return","src":"4361:21:48"}]},"documentation":{"id":14085,"nodeType":"StructuredDocumentation","src":"4251:24:48","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":14095,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4287:11:48","nodeType":"FunctionDefinition","overrides":{"id":14087,"nodeType":"OverrideSpecifier","overrides":[],"src":"4321:8:48"},"parameters":{"id":14086,"nodeType":"ParameterList","parameters":[],"src":"4298:2:48"},"returnParameters":{"id":14090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14089,"mutability":"mutable","name":"assets","nameLocation":"4347:6:48","nodeType":"VariableDeclaration","scope":14095,"src":"4339:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14088,"name":"uint256","nodeType":"ElementaryTypeName","src":"4339:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4338:16:48"},"scope":14237,"src":"4278:109:48","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4418],"body":{"id":14124,"nodeType":"Block","src":"4578:104:48","statements":[{"expression":{"arguments":[{"id":14111,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14104,"src":"4608:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14110,"name":"_withdrawFromStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16374,"src":"4584:23:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4584:31:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14113,"nodeType":"ExpressionStatement","src":"4584:31:48"},{"expression":{"arguments":[{"id":14117,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14098,"src":"4637:6:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14118,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14100,"src":"4645:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14119,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14102,"src":"4655:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14120,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14104,"src":"4662:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14121,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14106,"src":"4670:6:48","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":14114,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4621:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$14237_$","typeString":"type(contract super AccessManagedMSV)"}},"id":14116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4627:9:48","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4418,"src":"4621:15:48","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":14122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4621:56:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14123,"nodeType":"ExpressionStatement","src":"4621:56:48"}]},"documentation":{"id":14096,"nodeType":"StructuredDocumentation","src":"4391:34:48","text":"@inheritdoc ERC4626Upgradeable"},"id":14125,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"4437:9:48","nodeType":"FunctionDefinition","overrides":{"id":14108,"nodeType":"OverrideSpecifier","overrides":[],"src":"4569:8:48"},"parameters":{"id":14107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14098,"mutability":"mutable","name":"caller","nameLocation":"4460:6:48","nodeType":"VariableDeclaration","scope":14125,"src":"4452:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14097,"name":"address","nodeType":"ElementaryTypeName","src":"4452:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14100,"mutability":"mutable","name":"receiver","nameLocation":"4480:8:48","nodeType":"VariableDeclaration","scope":14125,"src":"4472:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14099,"name":"address","nodeType":"ElementaryTypeName","src":"4472:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14102,"mutability":"mutable","name":"owner","nameLocation":"4502:5:48","nodeType":"VariableDeclaration","scope":14125,"src":"4494:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14101,"name":"address","nodeType":"ElementaryTypeName","src":"4494:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14104,"mutability":"mutable","name":"assets","nameLocation":"4521:6:48","nodeType":"VariableDeclaration","scope":14125,"src":"4513:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14103,"name":"uint256","nodeType":"ElementaryTypeName","src":"4513:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14106,"mutability":"mutable","name":"shares","nameLocation":"4541:6:48","nodeType":"VariableDeclaration","scope":14125,"src":"4533:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14105,"name":"uint256","nodeType":"ElementaryTypeName","src":"4533:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4446:105:48"},"returnParameters":{"id":14109,"nodeType":"ParameterList","parameters":[],"src":"4578:0:48"},"scope":14237,"src":"4428:254:48","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4364],"body":{"id":14151,"nodeType":"Block","src":"4833:206:48","statements":[{"expression":{"arguments":[{"id":14141,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14128,"src":"4925:6:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14142,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14130,"src":"4933:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14143,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14132,"src":"4943:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14144,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14134,"src":"4951:6:48","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":14138,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4910:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedMSV_$14237_$","typeString":"type(contract super AccessManagedMSV)"}},"id":14140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4916:8:48","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4364,"src":"4910:14:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":14145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4910:48:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14146,"nodeType":"ExpressionStatement","src":"4910:48:48"},{"expression":{"arguments":[{"id":14148,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14132,"src":"5027:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14147,"name":"_depositToStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16450,"src":"5006:20:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14150,"nodeType":"ExpressionStatement","src":"5006:28:48"}]},"documentation":{"id":14126,"nodeType":"StructuredDocumentation","src":"4686:34:48","text":"@inheritdoc ERC4626Upgradeable"},"id":14152,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"4732:8:48","nodeType":"FunctionDefinition","overrides":{"id":14136,"nodeType":"OverrideSpecifier","overrides":[],"src":"4824:8:48"},"parameters":{"id":14135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14128,"mutability":"mutable","name":"caller","nameLocation":"4749:6:48","nodeType":"VariableDeclaration","scope":14152,"src":"4741:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14127,"name":"address","nodeType":"ElementaryTypeName","src":"4741:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14130,"mutability":"mutable","name":"receiver","nameLocation":"4765:8:48","nodeType":"VariableDeclaration","scope":14152,"src":"4757:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14129,"name":"address","nodeType":"ElementaryTypeName","src":"4757:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14132,"mutability":"mutable","name":"assets","nameLocation":"4783:6:48","nodeType":"VariableDeclaration","scope":14152,"src":"4775:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14131,"name":"uint256","nodeType":"ElementaryTypeName","src":"4775:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14134,"mutability":"mutable","name":"shares","nameLocation":"4799:6:48","nodeType":"VariableDeclaration","scope":14152,"src":"4791:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14133,"name":"uint256","nodeType":"ElementaryTypeName","src":"4791:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4740:66:48"},"returnParameters":{"id":14137,"nodeType":"ParameterList","parameters":[],"src":"4833:0:48"},"scope":14237,"src":"4723:316:48","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14182,"nodeType":"Block","src":"5677:231:48","statements":[{"assignments":[14163],"declarations":[{"constant":false,"id":14163,"mutability":"mutable","name":"strategy","nameLocation":"5797:8:48","nodeType":"VariableDeclaration","scope":14182,"src":"5789:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14162,"name":"address","nodeType":"ElementaryTypeName","src":"5789:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14170,"initialValue":{"arguments":[{"baseExpression":{"id":14166,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"5816:11:48","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":14168,"indexExpression":{"id":14167,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14155,"src":"5828:13:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5816:26:48","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":14165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5808:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14164,"name":"address","nodeType":"ElementaryTypeName","src":"5808:7:48","typeDescriptions":{}}},"id":14169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5808:35:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5789:54:48"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14176,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14163,"src":"5884:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14177,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14157,"src":"5894:6:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":14174,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5873:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5877:6:48","memberName":"encode","nodeType":"MemberAccess","src":"5873:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5873:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14173,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5863:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5863:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5856:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":14171,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5856:6:48","typeDescriptions":{}}},"id":14180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5856:47:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":14161,"id":14181,"nodeType":"Return","src":"5849:54:48"}]},"documentation":{"id":14153,"nodeType":"StructuredDocumentation","src":"5043:520:48","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":14183,"implemented":true,"kind":"function","modifiers":[],"name":"getForwardToStrategySelector","nameLocation":"5575:28:48","nodeType":"FunctionDefinition","parameters":{"id":14158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14155,"mutability":"mutable","name":"strategyIndex","nameLocation":"5610:13:48","nodeType":"VariableDeclaration","scope":14183,"src":"5604:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14154,"name":"uint8","nodeType":"ElementaryTypeName","src":"5604:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14157,"mutability":"mutable","name":"method","nameLocation":"5631:6:48","nodeType":"VariableDeclaration","scope":14183,"src":"5625:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14156,"name":"uint8","nodeType":"ElementaryTypeName","src":"5625:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5603:35:48"},"returnParameters":{"id":14161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14160,"mutability":"mutable","name":"selector","nameLocation":"5667:8:48","nodeType":"VariableDeclaration","scope":14183,"src":"5660:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14159,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5660:6:48","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5659:17:48"},"scope":14237,"src":"5566:342:48","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[16517],"body":{"id":14235,"nodeType":"Block","src":"6043:807:48","statements":[{"assignments":[14196],"declarations":[{"constant":false,"id":14196,"mutability":"mutable","name":"acMgr","nameLocation":"6306:5:48","nodeType":"VariableDeclaration","scope":14235,"src":"6291:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"},"typeName":{"id":14195,"nodeType":"UserDefinedTypeName","pathNode":{"id":14194,"name":"IAccessManager","nameLocations":["6291:14:48"],"nodeType":"IdentifierPath","referencedDeclaration":7253,"src":"6291:14:48"},"referencedDeclaration":7253,"src":"6291:14:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"visibility":"internal"}],"id":14208,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"arguments":[{"id":14202,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6349:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedMSV_$14237","typeString":"contract AccessManagedMSV"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedMSV_$14237","typeString":"contract AccessManagedMSV"}],"id":14201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6341:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14200,"name":"address","nodeType":"ElementaryTypeName","src":"6341:7:48","typeDescriptions":{}}},"id":14203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6341:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6333:8:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":14198,"name":"address","nodeType":"ElementaryTypeName","src":"6333:8:48","stateMutability":"payable","typeDescriptions":{}}},"id":14204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6333:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":14197,"name":"AccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"6314:18:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AccessManagedProxy_$14315_$","typeString":"type(contract AccessManagedProxy)"}},"id":14205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6314:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedProxy_$14315","typeString":"contract AccessManagedProxy"}},"id":14206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6357:14:48","memberName":"ACCESS_MANAGER","nodeType":"MemberAccess","referencedDeclaration":14249,"src":"6314:57:48","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAccessManager_$7253_$","typeString":"function () view external returns (contract IAccessManager)"}},"id":14207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6314:59:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"nodeType":"VariableDeclarationStatement","src":"6291:82:48"},{"assignments":[14210,null],"declarations":[{"constant":false,"id":14210,"mutability":"mutable","name":"immediate","nameLocation":"6385:9:48","nodeType":"VariableDeclaration","scope":14235,"src":"6380:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14209,"name":"bool","nodeType":"ElementaryTypeName","src":"6380:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":14224,"initialValue":{"arguments":[{"expression":{"id":14213,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6414:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6418:6:48","memberName":"sender","nodeType":"MemberAccess","src":"6414:10:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6434:4:48","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedMSV_$14237","typeString":"contract AccessManagedMSV"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedMSV_$14237","typeString":"contract AccessManagedMSV"}],"id":14216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6426:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14215,"name":"address","nodeType":"ElementaryTypeName","src":"6426:7:48","typeDescriptions":{}}},"id":14218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6426:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14220,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14186,"src":"6470:13:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":14221,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14188,"src":"6485:6:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":14219,"name":"getForwardToStrategySelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14183,"src":"6441:28:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint8_$_t_uint8_$returns$_t_bytes4_$","typeString":"function (uint8,uint8) view returns (bytes4)"}},"id":14222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:51:48","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":14211,"name":"acMgr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14196,"src":"6400:5:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"id":14212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:7:48","memberName":"canCall","nodeType":"MemberAccess","referencedDeclaration":6997,"src":"6400:13:48","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":14223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:93:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"6379:114:48"},{"condition":{"id":14226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6770:10:48","subExpression":{"id":14225,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"6771:9:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14234,"nodeType":"IfStatement","src":"6766:79:48","trueBody":{"errorCall":{"arguments":[{"expression":{"id":14230,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6834:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6838:6:48","memberName":"sender","nodeType":"MemberAccess","src":"6834:10:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14227,"name":"AccessManagedProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14315,"src":"6789:18:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AccessManagedProxy_$14315_$","typeString":"type(contract AccessManagedProxy)"}},"id":14229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6808:25:48","memberName":"AccessManagedUnauthorized","nodeType":"MemberAccess","referencedDeclaration":14253,"src":"6789:44:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":14232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6789:56:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14233,"nodeType":"RevertStatement","src":"6782:63:48"}}]},"documentation":{"id":14184,"nodeType":"StructuredDocumentation","src":"5912:23:48","text":"@inheritdoc MSVBase"},"id":14236,"implemented":true,"kind":"function","modifiers":[],"name":"_checkForwardToStrategy","nameLocation":"5947:23:48","nodeType":"FunctionDefinition","overrides":{"id":14192,"nodeType":"OverrideSpecifier","overrides":[],"src":"6034:8:48"},"parameters":{"id":14191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14186,"mutability":"mutable","name":"strategyIndex","nameLocation":"5977:13:48","nodeType":"VariableDeclaration","scope":14236,"src":"5971:19:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14185,"name":"uint8","nodeType":"ElementaryTypeName","src":"5971:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14188,"mutability":"mutable","name":"method","nameLocation":"5998:6:48","nodeType":"VariableDeclaration","scope":14236,"src":"5992:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14187,"name":"uint8","nodeType":"ElementaryTypeName","src":"5992:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14236,"src":"6006:12:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14189,"name":"bytes","nodeType":"ElementaryTypeName","src":"6006:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5970:49:48"},"returnParameters":{"id":14193,"nodeType":"ParameterList","parameters":[],"src":"6043:0:48"},"scope":14237,"src":"5938:912:48","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":14238,"src":"1355:5497:48","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,14253,15393,15868,15870,15875,15879,15883,15885,15887,15889,15891,15893,15895,15899,15903,15907],"usedEvents":[2635,7347,7389,7401,8590,8599,15379,15383,15387,15391,15820,15824,15828,15832,15839,15846,15851,15856,15866]}],"src":"39:6814:48"},"id":48},"contracts/AccessManagedProxy.sol":{"ast":{"absolutePath":"contracts/AccessManagedProxy.sol","exportedSymbols":{"AccessManagedProxy":[14315],"ERC1967Proxy":[7723],"IAccessManager":[7253]},"id":14316,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14239,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:49"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","id":14241,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14316,"sourceUnit":7724,"src":"57:84:49","symbolAliases":[{"foreign":{"id":14240,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7723,"src":"65:12:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/manager/IAccessManager.sol","file":"@openzeppelin/contracts/access/manager/IAccessManager.sol","id":14243,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14316,"sourceUnit":7254,"src":"142:89:49","symbolAliases":[{"foreign":{"id":14242,"name":"IAccessManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7253,"src":"150:14:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14245,"name":"ERC1967Proxy","nameLocations":["1142:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":7723,"src":"1142:12:49"},"id":14246,"nodeType":"InheritanceSpecifier","src":"1142:12:49"}],"canonicalName":"AccessManagedProxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":14244,"nodeType":"StructuredDocumentation","src":"233:877:49","text":" @title AccessManagedProxy\n @dev Proxy contract using IAccessManager to manage access control before delegating calls.\n      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      For gas efficiency, the ACCESS_MANAGER is immutable, so take care you don't lose control of it, otherwise\n      it will make your contract inaccesible or other bad things will happen.\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":true,"id":14315,"linearizedBaseContracts":[14315,7723,8053],"name":"AccessManagedProxy","nameLocation":"1120:18:49","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"3a7b7a39","id":14249,"mutability":"immutable","name":"ACCESS_MANAGER","nameLocation":"1191:14:49","nodeType":"VariableDeclaration","scope":14315,"src":"1159:46:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"},"typeName":{"id":14248,"nodeType":"UserDefinedTypeName","pathNode":{"id":14247,"name":"IAccessManager","nameLocations":["1159:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":7253,"src":"1159:14:49"},"referencedDeclaration":7253,"src":"1159:14:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"visibility":"public"},{"errorSelector":"068ca9d8","id":14253,"name":"AccessManagedUnauthorized","nameLocation":"1254:25:49","nodeType":"ErrorDefinition","parameters":{"id":14252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14251,"mutability":"mutable","name":"caller","nameLocation":"1288:6:49","nodeType":"VariableDeclaration","scope":14253,"src":"1280:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14250,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1279:16:49"},"src":"1248:48:49"},{"body":{"id":14271,"nodeType":"Block","src":"1440:35:49","statements":[{"expression":{"id":14269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14267,"name":"ACCESS_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14249,"src":"1446:14:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14268,"name":"manager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14260,"src":"1463:7:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"src":"1446:24:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"id":14270,"nodeType":"ExpressionStatement","src":"1446:24:49"}]},"id":14272,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14263,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14255,"src":"1417:14:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14264,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14257,"src":"1433:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":14265,"kind":"baseConstructorSpecifier","modifierName":{"id":14262,"name":"ERC1967Proxy","nameLocations":["1404:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":7723,"src":"1404:12:49"},"nodeType":"ModifierInvocation","src":"1404:35:49"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14255,"mutability":"mutable","name":"implementation","nameLocation":"1325:14:49","nodeType":"VariableDeclaration","scope":14272,"src":"1317:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14254,"name":"address","nodeType":"ElementaryTypeName","src":"1317:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14257,"mutability":"mutable","name":"_data","nameLocation":"1358:5:49","nodeType":"VariableDeclaration","scope":14272,"src":"1345:18:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14256,"name":"bytes","nodeType":"ElementaryTypeName","src":"1345:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":14260,"mutability":"mutable","name":"manager","nameLocation":"1384:7:49","nodeType":"VariableDeclaration","scope":14272,"src":"1369:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"},"typeName":{"id":14259,"nodeType":"UserDefinedTypeName","pathNode":{"id":14258,"name":"IAccessManager","nameLocations":["1369:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":7253,"src":"1369:14:49"},"referencedDeclaration":7253,"src":"1369:14:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"visibility":"internal"}],"src":"1311:84:49"},"returnParameters":{"id":14266,"nodeType":"ParameterList","parameters":[],"src":"1440:0:49"},"scope":14315,"src":"1300:175:49","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[8028],"body":{"id":14313,"nodeType":"Block","src":"2223:207:49","statements":[{"assignments":[14280,null],"declarations":[{"constant":false,"id":14280,"mutability":"mutable","name":"immediate","nameLocation":"2235:9:49","nodeType":"VariableDeclaration","scope":14313,"src":"2230:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14279,"name":"bool","nodeType":"ElementaryTypeName","src":"2230:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":14298,"initialValue":{"arguments":[{"expression":{"id":14283,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2273:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2277:6:49","memberName":"sender","nodeType":"MemberAccess","src":"2273:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14287,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2293:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_AccessManagedProxy_$14315","typeString":"contract AccessManagedProxy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AccessManagedProxy_$14315","typeString":"contract AccessManagedProxy"}],"id":14286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2285:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14285,"name":"address","nodeType":"ElementaryTypeName","src":"2285:7:49","typeDescriptions":{}}},"id":14288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2285:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"expression":{"id":14291,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2307:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2311:4:49","memberName":"data","nodeType":"MemberAccess","src":"2307:8:49","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"hexValue":"34","id":14294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2318:1:49","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"id":14295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2307:13:49","startExpression":{"hexValue":"30","id":14293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2316:1:49","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":14290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":14289,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2300:6:49","typeDescriptions":{}}},"id":14296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:21:49","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":14281,"name":"ACCESS_MANAGER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14249,"src":"2250:14:49","typeDescriptions":{"typeIdentifier":"t_contract$_IAccessManager_$7253","typeString":"contract IAccessManager"}},"id":14282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2265:7:49","memberName":"canCall","nodeType":"MemberAccess","referencedDeclaration":6997,"src":"2250:22:49","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":14297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2250:72:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint32_$","typeString":"tuple(bool,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"2229:93:49"},{"condition":{"id":14300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2332:10:49","subExpression":{"id":14299,"name":"immediate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14280,"src":"2333:9:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14306,"nodeType":"IfStatement","src":"2328:60:49","trueBody":{"errorCall":{"arguments":[{"expression":{"id":14302,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2377:3:49","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2381:6:49","memberName":"sender","nodeType":"MemberAccess","src":"2377:10:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14301,"name":"AccessManagedUnauthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14253,"src":"2351:25:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":14304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2351:37:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14305,"nodeType":"RevertStatement","src":"2344:44:49"}},{"expression":{"arguments":[{"id":14310,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14275,"src":"2410:14:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14307,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2394:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_AccessManagedProxy_$14315_$","typeString":"type(contract super AccessManagedProxy)"}},"id":14309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2400:9:49","memberName":"_delegate","nodeType":"MemberAccess","referencedDeclaration":8028,"src":"2394:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":14311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2394:31:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14312,"nodeType":"ExpressionStatement","src":"2394:31:49"}]},"documentation":{"id":14273,"nodeType":"StructuredDocumentation","src":"1479:672:49","text":" @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      This function does not return to its internal call site, it will return directly to the external caller.\n      It uses `msg.sender`, so it will ignore any metatx like ERC-2771 or other ways of changing the sender.\n      Only let's the call go throught for immediate access, but scheduled calls can be made throught the\n      ACCESS_MANAGER. It doesn't support the `.consumeScheduledOp(...)` flow that other access managed contracts\n      support."},"id":14314,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"2163:9:49","nodeType":"FunctionDefinition","overrides":{"id":14277,"nodeType":"OverrideSpecifier","overrides":[],"src":"2214:8:49"},"parameters":{"id":14276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14275,"mutability":"mutable","name":"implementation","nameLocation":"2181:14:49","nodeType":"VariableDeclaration","scope":14314,"src":"2173:22:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14274,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2172:24:49"},"returnParameters":{"id":14278,"nodeType":"ParameterList","parameters":[],"src":"2223:0:49"},"scope":14315,"src":"2154:276:49","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":14316,"src":"1111:1321:49","usedErrors":[7743,7756,9103,9395,14253],"usedEvents":[7347]}],"src":"32:2401:49"},"id":49},"contracts/CompoundV3ERC4626.sol":{"ast":{"absolutePath":"contracts/CompoundV3ERC4626.sol","exportedSymbols":{"CompoundV3ERC4626":[14776],"ICometRewards":[22236],"ICompoundV3":[22274],"IERC20":[8656],"IERC20Metadata":[8682],"PermissionedERC4626":[18512],"SafeERC20":[9093],"SwapLibrary":[1390]},"id":14777,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":14317,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:50"},{"absolutePath":"contracts/dependencies/compound-v3/ICompoundV3.sol","file":"./dependencies/compound-v3/ICompoundV3.sol","id":14319,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":22275,"src":"64:71:50","symbolAliases":[{"foreign":{"id":14318,"name":"ICompoundV3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22274,"src":"72:11:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/compound-v3/ICometRewards.sol","file":"./dependencies/compound-v3/ICometRewards.sol","id":14321,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":22237,"src":"136:75:50","symbolAliases":[{"foreign":{"id":14320,"name":"ICometRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22236,"src":"144:13:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":14323,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":8683,"src":"212:97:50","symbolAliases":[{"foreign":{"id":14322,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"220:14:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":14325,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":8657,"src":"310:70:50","symbolAliases":[{"foreign":{"id":14324,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"318:6:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":14327,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":9094,"src":"381:82:50","symbolAliases":[{"foreign":{"id":14326,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"389:9:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":14329,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":1391,"src":"464:74:50","symbolAliases":[{"foreign":{"id":14328,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"472:11:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/PermissionedERC4626.sol","file":"./PermissionedERC4626.sol","id":14331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14777,"sourceUnit":18513,"src":"539:62:50","symbolAliases":[{"foreign":{"id":14330,"name":"PermissionedERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18512,"src":"547:19:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14333,"name":"PermissionedERC4626","nameLocations":["1171:19:50"],"nodeType":"IdentifierPath","referencedDeclaration":18512,"src":"1171:19:50"},"id":14334,"nodeType":"InheritanceSpecifier","src":"1171:19:50"}],"canonicalName":"CompoundV3ERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":14332,"nodeType":"StructuredDocumentation","src":"603:537:50","text":" @title CompoundV3ERC4626\n @dev Vault that invests/deinvests into CompoundV3 on each deposit/withdraw. Also, has a method to claim the rewards,\n      swap them, and reinvests the result into CompoundV3.\n      Entering or exiting the vault is permissioned, requires LP_ROLE.\n      Use it at your own risk, this is a proof of concept, but it's not used by the authors, we prefer using the\n      pluggable strategies (See {CompoundV3InvestStrategy})\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":14776,"linearizedBaseContracts":[14776,18512,4427,7538,3663,7590,8682,8656,3046,7548,2610,4513,9703,4892,4473,2864],"name":"CompoundV3ERC4626","nameLocation":"1150:17:50","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14338,"libraryName":{"id":14335,"name":"SafeERC20","nameLocations":["1201:9:50"],"nodeType":"IdentifierPath","referencedDeclaration":9093,"src":"1201:9:50"},"nodeType":"UsingForDirective","src":"1195:35:50","typeName":{"id":14337,"nodeType":"UserDefinedTypeName","pathNode":{"id":14336,"name":"IERC20Metadata","nameLocations":["1215:14:50"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1215:14:50"},"referencedDeclaration":8682,"src":"1215:14:50","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}},{"global":false,"id":14342,"libraryName":{"id":14339,"name":"SwapLibrary","nameLocations":["1239:11:50"],"nodeType":"IdentifierPath","referencedDeclaration":1390,"src":"1239:11:50"},"nodeType":"UsingForDirective","src":"1233:45:50","typeName":{"id":14341,"nodeType":"UserDefinedTypeName","pathNode":{"id":14340,"name":"SwapLibrary.SwapConfig","nameLocations":["1255:11:50","1267:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1255:22:50"},"referencedDeclaration":624,"src":"1255:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":true,"functionSelector":"fbb12d07","id":14347,"mutability":"constant","name":"HARVEST_ROLE","nameLocation":"1306:12:50","nodeType":"VariableDeclaration","scope":14776,"src":"1282:64:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1282:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"484152564553545f524f4c45","id":14345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1331:14:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c","typeString":"literal_string \"HARVEST_ROLE\""},"value":"HARVEST_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c","typeString":"literal_string \"HARVEST_ROLE\""}],"id":14344,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1321:9:50","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1321:25:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"1389c029","id":14352,"mutability":"constant","name":"SWAP_ADMIN_ROLE","nameLocation":"1374:15:50","nodeType":"VariableDeclaration","scope":14776,"src":"1350:70:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1350:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"535741505f41444d494e5f524f4c45","id":14350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1402:17:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed16816","typeString":"literal_string \"SWAP_ADMIN_ROLE\""},"value":"SWAP_ADMIN_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed16816","typeString":"literal_string \"SWAP_ADMIN_ROLE\""}],"id":14349,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1392:9:50","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1392:28:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"documentation":{"id":14353,"nodeType":"StructuredDocumentation","src":"1425:61:50","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":14356,"mutability":"immutable","name":"_cToken","nameLocation":"1520:7:50","nodeType":"VariableDeclaration","scope":14776,"src":"1489:38:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"},"typeName":{"id":14355,"nodeType":"UserDefinedTypeName","pathNode":{"id":14354,"name":"ICompoundV3","nameLocations":["1489:11:50"],"nodeType":"IdentifierPath","referencedDeclaration":22274,"src":"1489:11:50"},"referencedDeclaration":22274,"src":"1489:11:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"documentation":{"id":14357,"nodeType":"StructuredDocumentation","src":"1531:61:50","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":14360,"mutability":"immutable","name":"_rewardsManager","nameLocation":"1628:15:50","nodeType":"VariableDeclaration","scope":14776,"src":"1595:48:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"},"typeName":{"id":14359,"nodeType":"UserDefinedTypeName","pathNode":{"id":14358,"name":"ICometRewards","nameLocations":["1595:13:50"],"nodeType":"IdentifierPath","referencedDeclaration":22236,"src":"1595:13:50"},"referencedDeclaration":22236,"src":"1595:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"visibility":"internal"},{"constant":false,"id":14363,"mutability":"mutable","name":"_swapConfig","nameLocation":"1680:11:50","nodeType":"VariableDeclaration","scope":14776,"src":"1648:43:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14362,"nodeType":"UserDefinedTypeName","pathNode":{"id":14361,"name":"SwapLibrary.SwapConfig","nameLocations":["1648:11:50","1660:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1648:22:50"},"referencedDeclaration":624,"src":"1648:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"dacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e325","id":14371,"name":"RewardsClaimed","nameLocation":"1702:14:50","nodeType":"EventDefinition","parameters":{"id":14370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14365,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1725:5:50","nodeType":"VariableDeclaration","scope":14371,"src":"1717:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14364,"name":"address","nodeType":"ElementaryTypeName","src":"1717:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14367,"indexed":false,"mutability":"mutable","name":"rewards","nameLocation":"1740:7:50","nodeType":"VariableDeclaration","scope":14371,"src":"1732:15:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14366,"name":"uint256","nodeType":"ElementaryTypeName","src":"1732:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14369,"indexed":false,"mutability":"mutable","name":"receivedInAsset","nameLocation":"1757:15:50","nodeType":"VariableDeclaration","scope":14371,"src":"1749:23:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1716:57:50"},"src":"1696:78:50"},{"anonymous":false,"eventSelector":"ca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8","id":14379,"name":"SwapConfigChanged","nameLocation":"1784:17:50","nodeType":"EventDefinition","parameters":{"id":14378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14374,"indexed":false,"mutability":"mutable","name":"oldConfig","nameLocation":"1825:9:50","nodeType":"VariableDeclaration","scope":14379,"src":"1802:32:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14373,"nodeType":"UserDefinedTypeName","pathNode":{"id":14372,"name":"SwapLibrary.SwapConfig","nameLocations":["1802:11:50","1814:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1802:22:50"},"referencedDeclaration":624,"src":"1802:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":14377,"indexed":false,"mutability":"mutable","name":"newConfig","nameLocation":"1859:9:50","nodeType":"VariableDeclaration","scope":14379,"src":"1836:32:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14376,"nodeType":"UserDefinedTypeName","pathNode":{"id":14375,"name":"SwapLibrary.SwapConfig","nameLocations":["1836:11:50","1848:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1836:22:50"},"referencedDeclaration":624,"src":"1836:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1801:68:50"},"src":"1778:92:50"},{"body":{"id":14400,"nodeType":"Block","src":"1989:95:50","statements":[{"expression":{"id":14391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14389,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1995:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14390,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"2005:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"src":"1995:17:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14392,"nodeType":"ExpressionStatement","src":"1995:17:50"},{"expression":{"id":14395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14393,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14360,"src":"2018:15:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14394,"name":"rewardsManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14386,"src":"2036:15:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"src":"2018:33:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":14396,"nodeType":"ExpressionStatement","src":"2018:33:50"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14397,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"2057:20:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":14398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2057:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14399,"nodeType":"ExpressionStatement","src":"2057:22:50"}]},"documentation":{"id":14380,"nodeType":"StructuredDocumentation","src":"1874:48:50","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":14401,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14383,"mutability":"mutable","name":"cToken_","nameLocation":"1949:7:50","nodeType":"VariableDeclaration","scope":14401,"src":"1937:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"},"typeName":{"id":14382,"nodeType":"UserDefinedTypeName","pathNode":{"id":14381,"name":"ICompoundV3","nameLocations":["1937:11:50"],"nodeType":"IdentifierPath","referencedDeclaration":22274,"src":"1937:11:50"},"referencedDeclaration":22274,"src":"1937:11:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"id":14386,"mutability":"mutable","name":"rewardsManager_","nameLocation":"1972:15:50","nodeType":"VariableDeclaration","scope":14401,"src":"1958:29:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"},"typeName":{"id":14385,"nodeType":"UserDefinedTypeName","pathNode":{"id":14384,"name":"ICometRewards","nameLocations":["1958:13:50"],"nodeType":"IdentifierPath","referencedDeclaration":22236,"src":"1958:13:50"},"referencedDeclaration":22236,"src":"1958:13:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"visibility":"internal"}],"src":"1936:52:50"},"returnParameters":{"id":14388,"nodeType":"ParameterList","parameters":[],"src":"1989:0:50"},"scope":14776,"src":"1925:159:50","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14423,"nodeType":"Block","src":"2316:72:50","statements":[{"expression":{"arguments":[{"id":14417,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14404,"src":"2347:5:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14418,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14406,"src":"2354:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14419,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"2363:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14420,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14411,"src":"2371:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}],"id":14416,"name":"__CompoundV3ERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14454,"src":"2322:24:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_struct$_SwapConfig_$624_calldata_ptr_$returns$__$","typeString":"function (string memory,string memory,address,struct SwapLibrary.SwapConfig calldata)"}},"id":14421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2322:61:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14422,"nodeType":"ExpressionStatement","src":"2322:61:50"}]},"documentation":{"id":14402,"nodeType":"StructuredDocumentation","src":"2088:53:50","text":" @dev Initializes the CompoundV3ERC4626"},"functionSelector":"c2f09e2b","id":14424,"implemented":true,"kind":"function","modifiers":[{"id":14414,"kind":"modifierInvocation","modifierName":{"id":14413,"name":"initializer","nameLocations":["2304:11:50"],"nodeType":"IdentifierPath","referencedDeclaration":2718,"src":"2304:11:50"},"nodeType":"ModifierInvocation","src":"2304:11:50"}],"name":"initialize","nameLocation":"2153:10:50","nodeType":"FunctionDefinition","parameters":{"id":14412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14404,"mutability":"mutable","name":"name_","nameLocation":"2183:5:50","nodeType":"VariableDeclaration","scope":14424,"src":"2169:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14403,"name":"string","nodeType":"ElementaryTypeName","src":"2169:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14406,"mutability":"mutable","name":"symbol_","nameLocation":"2208:7:50","nodeType":"VariableDeclaration","scope":14424,"src":"2194:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14405,"name":"string","nodeType":"ElementaryTypeName","src":"2194:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14408,"mutability":"mutable","name":"admin_","nameLocation":"2229:6:50","nodeType":"VariableDeclaration","scope":14424,"src":"2221:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14407,"name":"address","nodeType":"ElementaryTypeName","src":"2221:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14411,"mutability":"mutable","name":"swapConfig_","nameLocation":"2273:11:50","nodeType":"VariableDeclaration","scope":14424,"src":"2241:43:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14410,"nodeType":"UserDefinedTypeName","pathNode":{"id":14409,"name":"SwapLibrary.SwapConfig","nameLocations":["2241:11:50","2253:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"2241:22:50"},"referencedDeclaration":624,"src":"2241:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"2163:125:50"},"returnParameters":{"id":14415,"nodeType":"ParameterList","parameters":[],"src":"2316:0:50"},"scope":14776,"src":"2144:244:50","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":14453,"nodeType":"Block","src":"2628:143:50","statements":[{"expression":{"arguments":[{"id":14439,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14426,"src":"2661:5:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14440,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14428,"src":"2668:7:50","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14441,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14430,"src":"2677:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14443,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"2692:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2700:9:50","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":22249,"src":"2692:17:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:19:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14442,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"2685:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":14446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2685:27:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":14438,"name":"__PermissionedERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18426,"src":"2634:26:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (string memory,string memory,address,contract IERC20)"}},"id":14447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2634:79:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14448,"nodeType":"ExpressionStatement","src":"2634:79:50"},{"expression":{"arguments":[{"id":14450,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14433,"src":"2754:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}],"id":14449,"name":"__CompoundV3ERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14472,"src":"2719:34:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_calldata_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig calldata)"}},"id":14451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2719:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14452,"nodeType":"ExpressionStatement","src":"2719:47:50"}]},"id":14454,"implemented":true,"kind":"function","modifiers":[{"id":14436,"kind":"modifierInvocation","modifierName":{"id":14435,"name":"onlyInitializing","nameLocations":["2611:16:50"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"2611:16:50"},"nodeType":"ModifierInvocation","src":"2611:16:50"}],"name":"__CompoundV3ERC4626_init","nameLocation":"2452:24:50","nodeType":"FunctionDefinition","parameters":{"id":14434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14426,"mutability":"mutable","name":"name_","nameLocation":"2496:5:50","nodeType":"VariableDeclaration","scope":14454,"src":"2482:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14425,"name":"string","nodeType":"ElementaryTypeName","src":"2482:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14428,"mutability":"mutable","name":"symbol_","nameLocation":"2521:7:50","nodeType":"VariableDeclaration","scope":14454,"src":"2507:21:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14427,"name":"string","nodeType":"ElementaryTypeName","src":"2507:6:50","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14430,"mutability":"mutable","name":"admin_","nameLocation":"2542:6:50","nodeType":"VariableDeclaration","scope":14454,"src":"2534:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14429,"name":"address","nodeType":"ElementaryTypeName","src":"2534:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14433,"mutability":"mutable","name":"swapConfig_","nameLocation":"2586:11:50","nodeType":"VariableDeclaration","scope":14454,"src":"2554:43:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14432,"nodeType":"UserDefinedTypeName","pathNode":{"id":14431,"name":"SwapLibrary.SwapConfig","nameLocations":["2554:11:50","2566:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"2554:22:50"},"referencedDeclaration":624,"src":"2554:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"2476:125:50"},"returnParameters":{"id":14437,"nodeType":"ParameterList","parameters":[],"src":"2628:0:50"},"scope":14776,"src":"2443:328:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14471,"nodeType":"Block","src":"2941:64:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14462,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14457,"src":"2947:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":14464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2959:8:50","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":724,"src":"2947:20:50","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":14465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14466,"nodeType":"ExpressionStatement","src":"2947:22:50"},{"expression":{"id":14469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14467,"name":"_swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"2975:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14468,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14457,"src":"2989:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"src":"2975:25:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"id":14470,"nodeType":"ExpressionStatement","src":"2975:25:50"}]},"id":14472,"implemented":true,"kind":"function","modifiers":[{"id":14460,"kind":"modifierInvocation","modifierName":{"id":14459,"name":"onlyInitializing","nameLocations":["2924:16:50"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"2924:16:50"},"nodeType":"ModifierInvocation","src":"2924:16:50"}],"name":"__CompoundV3ERC4626_init_unchained","nameLocation":"2835:34:50","nodeType":"FunctionDefinition","parameters":{"id":14458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14457,"mutability":"mutable","name":"swapConfig_","nameLocation":"2902:11:50","nodeType":"VariableDeclaration","scope":14472,"src":"2870:43:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14456,"nodeType":"UserDefinedTypeName","pathNode":{"id":14455,"name":"SwapLibrary.SwapConfig","nameLocations":["2870:11:50","2882:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"2870:22:50"},"referencedDeclaration":624,"src":"2870:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"2869:45:50"},"returnParameters":{"id":14461,"nodeType":"ParameterList","parameters":[],"src":"2941:0:50"},"scope":14776,"src":"2826:179:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4005],"body":{"id":14492,"nodeType":"Block","src":"3142:88:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14481,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"3152:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3160:16:50","memberName":"isWithdrawPaused","nodeType":"MemberAccess","referencedDeclaration":22259,"src":"3152:24:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":14483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3152:26:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14486,"nodeType":"IfStatement","src":"3148:40:50","trueBody":{"expression":{"hexValue":"30","id":14484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3187:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14480,"id":14485,"nodeType":"Return","src":"3180:8:50"}},{"expression":{"arguments":[{"id":14489,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14475,"src":"3219:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14487,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3201:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3207:11:50","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4005,"src":"3201:17:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3201:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14480,"id":14491,"nodeType":"Return","src":"3194:31:50"}]},"documentation":{"id":14473,"nodeType":"StructuredDocumentation","src":"3009:47:50","text":" @dev See {IERC4626-maxWithdraw}."},"functionSelector":"ce96cb77","id":14493,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"3068:11:50","nodeType":"FunctionDefinition","overrides":{"id":14477,"nodeType":"OverrideSpecifier","overrides":[],"src":"3115:8:50"},"parameters":{"id":14476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14475,"mutability":"mutable","name":"owner","nameLocation":"3088:5:50","nodeType":"VariableDeclaration","scope":14493,"src":"3080:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14474,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3079:15:50"},"returnParameters":{"id":14480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14493,"src":"3133:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14478,"name":"uint256","nodeType":"ElementaryTypeName","src":"3133:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3132:9:50"},"scope":14776,"src":"3059:171:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4018],"body":{"id":14513,"nodeType":"Block","src":"3363:86:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14502,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"3373:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3381:16:50","memberName":"isWithdrawPaused","nodeType":"MemberAccess","referencedDeclaration":22259,"src":"3373:24:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":14504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3373:26:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14507,"nodeType":"IfStatement","src":"3369:40:50","trueBody":{"expression":{"hexValue":"30","id":14505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3408:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14501,"id":14506,"nodeType":"Return","src":"3401:8:50"}},{"expression":{"arguments":[{"id":14510,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14496,"src":"3438:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14508,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3422:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3428:9:50","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4018,"src":"3422:15:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3422:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14501,"id":14512,"nodeType":"Return","src":"3415:29:50"}]},"documentation":{"id":14494,"nodeType":"StructuredDocumentation","src":"3234:45:50","text":" @dev See {IERC4626-maxRedeem}."},"functionSelector":"d905777e","id":14514,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"3291:9:50","nodeType":"FunctionDefinition","overrides":{"id":14498,"nodeType":"OverrideSpecifier","overrides":[],"src":"3336:8:50"},"parameters":{"id":14497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14496,"mutability":"mutable","name":"owner","nameLocation":"3309:5:50","nodeType":"VariableDeclaration","scope":14514,"src":"3301:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14495,"name":"address","nodeType":"ElementaryTypeName","src":"3301:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3300:15:50"},"returnParameters":{"id":14501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14514,"src":"3354:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14499,"name":"uint256","nodeType":"ElementaryTypeName","src":"3354:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3353:9:50"},"scope":14776,"src":"3282:167:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18488],"body":{"id":14534,"nodeType":"Block","src":"3584:85:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14523,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"3594:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3602:14:50","memberName":"isSupplyPaused","nodeType":"MemberAccess","referencedDeclaration":22254,"src":"3594:22:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":14525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14528,"nodeType":"IfStatement","src":"3590:38:50","trueBody":{"expression":{"hexValue":"30","id":14526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14522,"id":14527,"nodeType":"Return","src":"3620:8:50"}},{"expression":{"arguments":[{"id":14531,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14517,"src":"3658:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14529,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3641:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3647:10:50","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":18488,"src":"3641:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3641:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14522,"id":14533,"nodeType":"Return","src":"3634:30:50"}]},"documentation":{"id":14515,"nodeType":"StructuredDocumentation","src":"3453:46:50","text":" @dev See {IERC4626-maxDeposit}."},"functionSelector":"402d267d","id":14535,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3511:10:50","nodeType":"FunctionDefinition","overrides":{"id":14519,"nodeType":"OverrideSpecifier","overrides":[],"src":"3557:8:50"},"parameters":{"id":14518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14517,"mutability":"mutable","name":"owner","nameLocation":"3530:5:50","nodeType":"VariableDeclaration","scope":14535,"src":"3522:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14516,"name":"address","nodeType":"ElementaryTypeName","src":"3522:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3521:15:50"},"returnParameters":{"id":14522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14521,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14535,"src":"3575:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14520,"name":"uint256","nodeType":"ElementaryTypeName","src":"3575:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3574:9:50"},"scope":14776,"src":"3502:167:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18511],"body":{"id":14555,"nodeType":"Block","src":"3798:82:50","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14544,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"3808:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3816:14:50","memberName":"isSupplyPaused","nodeType":"MemberAccess","referencedDeclaration":22254,"src":"3808:22:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":14546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3808:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14549,"nodeType":"IfStatement","src":"3804:38:50","trueBody":{"expression":{"hexValue":"30","id":14547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3841:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14543,"id":14548,"nodeType":"Return","src":"3834:8:50"}},{"expression":{"arguments":[{"id":14552,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14538,"src":"3869:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14550,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3855:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3861:7:50","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":18511,"src":"3855:13:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":14553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3855:20:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14543,"id":14554,"nodeType":"Return","src":"3848:27:50"}]},"documentation":{"id":14536,"nodeType":"StructuredDocumentation","src":"3673:43:50","text":" @dev See {IERC4626-maxMint}."},"functionSelector":"c63d75b6","id":14556,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"3728:7:50","nodeType":"FunctionDefinition","overrides":{"id":14540,"nodeType":"OverrideSpecifier","overrides":[],"src":"3771:8:50"},"parameters":{"id":14539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14538,"mutability":"mutable","name":"owner","nameLocation":"3744:5:50","nodeType":"VariableDeclaration","scope":14556,"src":"3736:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14537,"name":"address","nodeType":"ElementaryTypeName","src":"3736:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3735:15:50"},"returnParameters":{"id":14543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14556,"src":"3789:7:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14541,"name":"uint256","nodeType":"ElementaryTypeName","src":"3789:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3788:9:50"},"scope":14776,"src":"3719:161:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3925],"body":{"id":14571,"nodeType":"Block","src":"4011:50:50","statements":[{"expression":{"arguments":[{"arguments":[{"id":14567,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4050:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}],"id":14566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4042:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14565,"name":"address","nodeType":"ElementaryTypeName","src":"4042:7:50","typeDescriptions":{}}},"id":14568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4042:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14563,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4024:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4032:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"4024:17:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4024:32:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14562,"id":14570,"nodeType":"Return","src":"4017:39:50"}]},"documentation":{"id":14557,"nodeType":"StructuredDocumentation","src":"3884:47:50","text":" @dev See {IERC4626-totalAssets}."},"functionSelector":"01e1d114","id":14572,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"3943:11:50","nodeType":"FunctionDefinition","overrides":{"id":14559,"nodeType":"OverrideSpecifier","overrides":[],"src":"3977:8:50"},"parameters":{"id":14558,"nodeType":"ParameterList","parameters":[],"src":"3954:2:50"},"returnParameters":{"id":14562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14561,"mutability":"mutable","name":"assets","nameLocation":"4003:6:50","nodeType":"VariableDeclaration","scope":14572,"src":"3995:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14560,"name":"uint256","nodeType":"ElementaryTypeName","src":"3995:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3994:16:50"},"scope":14776,"src":"3934:127:50","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4418],"body":{"id":14607,"nodeType":"Block","src":"4215:115:50","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14591,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"4246:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4246:7:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4238:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14589,"name":"address","nodeType":"ElementaryTypeName","src":"4238:7:50","typeDescriptions":{}}},"id":14593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4238:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14594,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14580,"src":"4256:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14586,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4221:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4229:8:50","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":22266,"src":"4221:16:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":14595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4221:42:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14596,"nodeType":"ExpressionStatement","src":"4221:42:50"},{"expression":{"arguments":[{"id":14600,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14574,"src":"4285:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14601,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14576,"src":"4293:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14602,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14578,"src":"4303:5:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14603,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14580,"src":"4310:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14604,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14582,"src":"4318:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14597,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4269:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4275:9:50","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4418,"src":"4269:15:50","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":14605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4269:56:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14606,"nodeType":"ExpressionStatement","src":"4269:56:50"}]},"id":14608,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"4074:9:50","nodeType":"FunctionDefinition","overrides":{"id":14584,"nodeType":"OverrideSpecifier","overrides":[],"src":"4206:8:50"},"parameters":{"id":14583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14574,"mutability":"mutable","name":"caller","nameLocation":"4097:6:50","nodeType":"VariableDeclaration","scope":14608,"src":"4089:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14573,"name":"address","nodeType":"ElementaryTypeName","src":"4089:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14576,"mutability":"mutable","name":"receiver","nameLocation":"4117:8:50","nodeType":"VariableDeclaration","scope":14608,"src":"4109:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14575,"name":"address","nodeType":"ElementaryTypeName","src":"4109:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14578,"mutability":"mutable","name":"owner","nameLocation":"4139:5:50","nodeType":"VariableDeclaration","scope":14608,"src":"4131:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14577,"name":"address","nodeType":"ElementaryTypeName","src":"4131:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14580,"mutability":"mutable","name":"assets","nameLocation":"4158:6:50","nodeType":"VariableDeclaration","scope":14608,"src":"4150:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14579,"name":"uint256","nodeType":"ElementaryTypeName","src":"4150:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14582,"mutability":"mutable","name":"shares","nameLocation":"4178:6:50","nodeType":"VariableDeclaration","scope":14608,"src":"4170:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14581,"name":"uint256","nodeType":"ElementaryTypeName","src":"4170:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:105:50"},"returnParameters":{"id":14585,"nodeType":"ParameterList","parameters":[],"src":"4215:0:50"},"scope":14776,"src":"4065:265:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4364],"body":{"id":14633,"nodeType":"Block","src":"4444:149:50","statements":[{"expression":{"arguments":[{"id":14623,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14610,"src":"4534:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14624,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14612,"src":"4542:8:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14625,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14614,"src":"4552:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14626,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14616,"src":"4560:6:50","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":14620,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4519:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_CompoundV3ERC4626_$14776_$","typeString":"type(contract super CompoundV3ERC4626)"}},"id":14622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4525:8:50","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4364,"src":"4519:14:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":14627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4519:48:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14628,"nodeType":"ExpressionStatement","src":"4519:48:50"},{"expression":{"arguments":[{"id":14630,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14614,"src":"4581:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14629,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14663,"src":"4573:7:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4573:15:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14632,"nodeType":"ExpressionStatement","src":"4573:15:50"}]},"id":14634,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"4343:8:50","nodeType":"FunctionDefinition","overrides":{"id":14618,"nodeType":"OverrideSpecifier","overrides":[],"src":"4435:8:50"},"parameters":{"id":14617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14610,"mutability":"mutable","name":"caller","nameLocation":"4360:6:50","nodeType":"VariableDeclaration","scope":14634,"src":"4352:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14609,"name":"address","nodeType":"ElementaryTypeName","src":"4352:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14612,"mutability":"mutable","name":"receiver","nameLocation":"4376:8:50","nodeType":"VariableDeclaration","scope":14634,"src":"4368:16:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14611,"name":"address","nodeType":"ElementaryTypeName","src":"4368:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14614,"mutability":"mutable","name":"assets","nameLocation":"4394:6:50","nodeType":"VariableDeclaration","scope":14634,"src":"4386:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14613,"name":"uint256","nodeType":"ElementaryTypeName","src":"4386:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14616,"mutability":"mutable","name":"shares","nameLocation":"4410:6:50","nodeType":"VariableDeclaration","scope":14634,"src":"4402:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14615,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4351:66:50"},"returnParameters":{"id":14619,"nodeType":"ParameterList","parameters":[],"src":"4444:0:50"},"scope":14776,"src":"4334:259:50","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":14662,"nodeType":"Block","src":"4639:114:50","statements":[{"expression":{"arguments":[{"arguments":[{"id":14646,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4685:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":14645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4677:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14644,"name":"address","nodeType":"ElementaryTypeName","src":"4677:7:50","typeDescriptions":{}}},"id":14647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4677:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14648,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14636,"src":"4695:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14640,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"4660:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4660:7:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14639,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"4645:14:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":14642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4645:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":14643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4669:7:50","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"4645:31:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":14649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4645:57:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14650,"nodeType":"ExpressionStatement","src":"4645:57:50"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14656,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"4731:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4731:7:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4723:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14654,"name":"address","nodeType":"ElementaryTypeName","src":"4723:7:50","typeDescriptions":{}}},"id":14658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4723:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14659,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14636,"src":"4741:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14651,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4708:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4716:6:50","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":22273,"src":"4708:14:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":14660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4708:40:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14661,"nodeType":"ExpressionStatement","src":"4708:40:50"}]},"id":14663,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"4606:7:50","nodeType":"FunctionDefinition","parameters":{"id":14637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14636,"mutability":"mutable","name":"assets","nameLocation":"4622:6:50","nodeType":"VariableDeclaration","scope":14663,"src":"4614:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14635,"name":"uint256","nodeType":"ElementaryTypeName","src":"4614:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4613:16:50"},"returnParameters":{"id":14638,"nodeType":"ParameterList","parameters":[],"src":"4639:0:50"},"scope":14776,"src":"4597:156:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14736,"nodeType":"Block","src":"4828:426:50","statements":[{"assignments":[14672,null,null],"declarations":[{"constant":false,"id":14672,"mutability":"mutable","name":"reward","nameLocation":"4843:6:50","nodeType":"VariableDeclaration","scope":14736,"src":"4835:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14671,"name":"address","nodeType":"ElementaryTypeName","src":"4835:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null,null],"id":14680,"initialValue":{"arguments":[{"arguments":[{"id":14677,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4894:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":14676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4886:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14675,"name":"address","nodeType":"ElementaryTypeName","src":"4886:7:50","typeDescriptions":{}}},"id":14678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4886:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14673,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14360,"src":"4857:15:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":14674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4873:12:50","memberName":"rewardConfig","nodeType":"MemberAccess","referencedDeclaration":22216,"src":"4857:28:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_address_$_t_uint64_$_t_bool_$","typeString":"function (address) external returns (address,uint64,bool)"}},"id":14679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4857:46:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint64_$_t_bool_$","typeString":"tuple(address,uint64,bool)"}},"nodeType":"VariableDeclarationStatement","src":"4834:69:50"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14681,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"4913:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":14684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4931:1:50","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":14683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4923:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14682,"name":"address","nodeType":"ElementaryTypeName","src":"4923:7:50","typeDescriptions":{}}},"id":14685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4923:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4913:20:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14688,"nodeType":"IfStatement","src":"4909:33:50","trueBody":{"functionReturnParameters":14670,"id":14687,"nodeType":"Return","src":"4935:7:50"}},{"expression":{"arguments":[{"arguments":[{"id":14694,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"4977:7:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":14693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4969:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14692,"name":"address","nodeType":"ElementaryTypeName","src":"4969:7:50","typeDescriptions":{}}},"id":14695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4969:16:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14698,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4995:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}],"id":14697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4987:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14696,"name":"address","nodeType":"ElementaryTypeName","src":"4987:7:50","typeDescriptions":{}}},"id":14699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4987:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":14700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5002:4:50","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":14689,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14360,"src":"4947:15:50","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":14691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4963:5:50","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":22225,"src":"4947:21:50","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":14701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4947:60:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14702,"nodeType":"ExpressionStatement","src":"4947:60:50"},{"assignments":[14704],"declarations":[{"constant":false,"id":14704,"mutability":"mutable","name":"earned","nameLocation":"5022:6:50","nodeType":"VariableDeclaration","scope":14736,"src":"5014:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14703,"name":"uint256","nodeType":"ElementaryTypeName","src":"5014:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14714,"initialValue":{"arguments":[{"arguments":[{"id":14711,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5072:4:50","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3ERC4626_$14776","typeString":"contract CompoundV3ERC4626"}],"id":14710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5064:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14709,"name":"address","nodeType":"ElementaryTypeName","src":"5064:7:50","typeDescriptions":{}}},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5064:13:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":14706,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"5046:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14705,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"5031:14:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":14707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5031:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":14708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5054:9:50","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"5031:32:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5031:47:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5014:64:50"},{"assignments":[14716],"declarations":[{"constant":false,"id":14716,"mutability":"mutable","name":"reinvestAmount","nameLocation":"5092:14:50","nodeType":"VariableDeclaration","scope":14736,"src":"5084:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14715,"name":"uint256","nodeType":"ElementaryTypeName","src":"5084:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14725,"initialValue":{"arguments":[{"id":14719,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"5132:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":14720,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"5140:5:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":14721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:7:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14722,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14704,"src":"5149:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14723,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14665,"src":"5157:5:50","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":14717,"name":"_swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"5109:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"id":14718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5121:10:50","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":794,"src":"5109:22:50","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":14724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5109:54:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5084:79:50"},{"expression":{"arguments":[{"id":14727,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"5177:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14726,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14663,"src":"5169:7:50","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5169:23:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14729,"nodeType":"ExpressionStatement","src":"5169:23:50"},{"eventCall":{"arguments":[{"id":14731,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14672,"src":"5218:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14732,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14704,"src":"5226:6:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14733,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14716,"src":"5234:14:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14730,"name":"RewardsClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"5203:14:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":14734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5203:46:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14735,"nodeType":"EmitStatement","src":"5198:51:50"}]},"functionSelector":"57126d0d","id":14737,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14668,"name":"HARVEST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14347,"src":"4814:12:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":14669,"kind":"modifierInvocation","modifierName":{"id":14667,"name":"onlyRole","nameLocations":["4805:8:50"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"4805:8:50"},"nodeType":"ModifierInvocation","src":"4805:22:50"}],"name":"harvestRewards","nameLocation":"4766:14:50","nodeType":"FunctionDefinition","parameters":{"id":14666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14665,"mutability":"mutable","name":"price","nameLocation":"4789:5:50","nodeType":"VariableDeclaration","scope":14737,"src":"4781:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14664,"name":"uint256","nodeType":"ElementaryTypeName","src":"4781:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4780:15:50"},"returnParameters":{"id":14670,"nodeType":"ParameterList","parameters":[],"src":"4828:0:50"},"scope":14776,"src":"4757:497:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14760,"nodeType":"Block","src":"5361:118:50","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14746,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14740,"src":"5367:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"id":14748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5379:8:50","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":724,"src":"5367:20:50","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":14749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5367:22:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14750,"nodeType":"ExpressionStatement","src":"5367:22:50"},{"eventCall":{"arguments":[{"id":14752,"name":"_swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"5418:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},{"id":14753,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14740,"src":"5431:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"},{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}],"id":14751,"name":"SwapConfigChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14379,"src":"5400:17:50","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,struct SwapLibrary.SwapConfig memory)"}},"id":14754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5400:43:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14755,"nodeType":"EmitStatement","src":"5395:48:50"},{"expression":{"id":14758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14756,"name":"_swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"5449:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14757,"name":"swapConfig_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14740,"src":"5463:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig calldata"}},"src":"5449:25:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"id":14759,"nodeType":"ExpressionStatement","src":"5449:25:50"}]},"functionSelector":"b740a83f","id":14761,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":14743,"name":"SWAP_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14352,"src":"5344:15:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":14744,"kind":"modifierInvocation","modifierName":{"id":14742,"name":"onlyRole","nameLocations":["5335:8:50"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5335:8:50"},"nodeType":"ModifierInvocation","src":"5335:25:50"}],"name":"setSwapConfig","nameLocation":"5267:13:50","nodeType":"FunctionDefinition","parameters":{"id":14741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14740,"mutability":"mutable","name":"swapConfig_","nameLocation":"5313:11:50","nodeType":"VariableDeclaration","scope":14761,"src":"5281:43:50","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_calldata_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14739,"nodeType":"UserDefinedTypeName","pathNode":{"id":14738,"name":"SwapLibrary.SwapConfig","nameLocations":["5281:11:50","5293:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"5281:22:50"},"referencedDeclaration":624,"src":"5281:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"5280:45:50"},"returnParameters":{"id":14745,"nodeType":"ParameterList","parameters":[],"src":"5361:0:50"},"scope":14776,"src":"5258:221:50","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14769,"nodeType":"Block","src":"5560:29:50","statements":[{"expression":{"id":14767,"name":"_swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14363,"src":"5573:11:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage","typeString":"struct SwapLibrary.SwapConfig storage ref"}},"functionReturnParameters":14766,"id":14768,"nodeType":"Return","src":"5566:18:50"}]},"functionSelector":"0b2ce411","id":14770,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapConfig","nameLocation":"5492:13:50","nodeType":"FunctionDefinition","parameters":{"id":14762,"nodeType":"ParameterList","parameters":[],"src":"5505:2:50"},"returnParameters":{"id":14766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14770,"src":"5529:29:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14764,"nodeType":"UserDefinedTypeName","pathNode":{"id":14763,"name":"SwapLibrary.SwapConfig","nameLocations":["5529:11:50","5541:10:50"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"5529:22:50"},"referencedDeclaration":624,"src":"5529:22:50","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"5528:31:50"},"scope":14776,"src":"5483:106:50","stateMutability":"view","virtual":false,"visibility":"public"},{"constant":false,"documentation":{"id":14771,"nodeType":"StructuredDocumentation","src":"5593:246:50","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":14775,"mutability":"mutable","name":"__gap","nameLocation":"5862:5:50","nodeType":"VariableDeclaration","scope":14776,"src":"5842:25:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage","typeString":"uint256[47]"},"typeName":{"baseType":{"id":14772,"name":"uint256","nodeType":"ElementaryTypeName","src":"5842:7:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14774,"length":{"hexValue":"3437","id":14773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5850:2:50","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"nodeType":"ArrayTypeName","src":"5842:11:50","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$47_storage_ptr","typeString":"uint256[47]"}},"visibility":"private"}],"scope":14777,"src":"1141:4729:50","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,4819,4822,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,18375],"usedEvents":[2635,4831,4840,4849,7347,7389,7401,8590,8599,14371,14379]}],"src":"39:5832:50"},"id":50},"contracts/CompoundV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/CompoundV3InvestStrategy.sol","exportedSymbols":{"CompoundV3InvestStrategy":[15359],"ICometRewards":[22236],"ICompoundV3":[22274],"IERC20":[8656],"IExposeStorage":[22298],"IInvestStrategy":[22374],"InvestStrategyClient":[15775],"StorageSlot":[9667],"SwapLibrary":[1390]},"id":15360,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":14778,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:51"},{"absolutePath":"contracts/dependencies/compound-v3/ICompoundV3.sol","file":"./dependencies/compound-v3/ICompoundV3.sol","id":14780,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":22275,"src":"64:71:51","symbolAliases":[{"foreign":{"id":14779,"name":"ICompoundV3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22274,"src":"72:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/compound-v3/ICometRewards.sol","file":"./dependencies/compound-v3/ICometRewards.sol","id":14782,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":22237,"src":"136:75:51","symbolAliases":[{"foreign":{"id":14781,"name":"ICometRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22236,"src":"144:13:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":14784,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":7365,"src":"212:69:51","symbolAliases":[{"foreign":{"id":14783,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"220:6:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":14786,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":1391,"src":"282:74:51","symbolAliases":[{"foreign":{"id":14785,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"290:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":14788,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":22375,"src":"357:65:51","symbolAliases":[{"foreign":{"id":14787,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"365:15:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":14790,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":9668,"src":"423:74:51","symbolAliases":[{"foreign":{"id":14789,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"431:11:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"./interfaces/IExposeStorage.sol","id":14792,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":22299,"src":"498:63:51","symbolAliases":[{"foreign":{"id":14791,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"506:14:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"./InvestStrategyClient.sol","id":14794,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15360,"sourceUnit":15776,"src":"562:64:51","symbolAliases":[{"foreign":{"id":14793,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"570:20:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14796,"name":"IInvestStrategy","nameLocations":["1307:15:51"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1307:15:51"},"id":14797,"nodeType":"InheritanceSpecifier","src":"1307:15:51"}],"canonicalName":"CompoundV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":14795,"nodeType":"StructuredDocumentation","src":"628:641:51","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":15359,"linearizedBaseContracts":[15359,22374],"name":"CompoundV3InvestStrategy","nameLocation":"1279:24:51","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14801,"libraryName":{"id":14798,"name":"SwapLibrary","nameLocations":["1333:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":1390,"src":"1333:11:51"},"nodeType":"UsingForDirective","src":"1327:45:51","typeName":{"id":14800,"nodeType":"UserDefinedTypeName","pathNode":{"id":14799,"name":"SwapLibrary.SwapConfig","nameLocations":["1349:11:51","1361:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1349:22:51"},"referencedDeclaration":624,"src":"1349:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":false,"id":14807,"mutability":"immutable","name":"__self","nameLocation":"1402:6:51","nodeType":"VariableDeclaration","scope":15359,"src":"1376:48:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14802,"name":"address","nodeType":"ElementaryTypeName","src":"1376:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":14805,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1419:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":14804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1411:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14803,"name":"address","nodeType":"ElementaryTypeName","src":"1411:7:51","typeDescriptions":{}}},"id":14806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1411:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[22373],"constant":false,"functionSelector":"5b9a4c35","id":14813,"mutability":"immutable","name":"storageSlot","nameLocation":"1453:11:51","nodeType":"VariableDeclaration","scope":15359,"src":"1428:81:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1428:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":14811,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1504:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"expression":{"id":14809,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"1467:20:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":14810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1488:15:51","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"1467:36:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":14812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1467:42:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":14816,"mutability":"immutable","name":"_cToken","nameLocation":"1545:7:51","nodeType":"VariableDeclaration","scope":15359,"src":"1514:38:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"},"typeName":{"id":14815,"nodeType":"UserDefinedTypeName","pathNode":{"id":14814,"name":"ICompoundV3","nameLocations":["1514:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":22274,"src":"1514:11:51"},"referencedDeclaration":22274,"src":"1514:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"id":14819,"mutability":"immutable","name":"_rewardsManager","nameLocation":"1589:15:51","nodeType":"VariableDeclaration","scope":15359,"src":"1556:48:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"},"typeName":{"id":14818,"nodeType":"UserDefinedTypeName","pathNode":{"id":14817,"name":"ICometRewards","nameLocations":["1556:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":22236,"src":"1556:13:51"},"referencedDeclaration":22236,"src":"1556:13:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"visibility":"internal"},{"constant":false,"id":14821,"mutability":"immutable","name":"_baseToken","nameLocation":"1635:10:51","nodeType":"VariableDeclaration","scope":15359,"src":"1608:37:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14820,"name":"address","nodeType":"ElementaryTypeName","src":"1608:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"anonymous":false,"documentation":{"id":14822,"nodeType":"StructuredDocumentation","src":"1650:282:51","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":14830,"name":"RewardsClaimed","nameLocation":"1941:14:51","nodeType":"EventDefinition","parameters":{"id":14829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14824,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1964:5:51","nodeType":"VariableDeclaration","scope":14830,"src":"1956:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14823,"name":"address","nodeType":"ElementaryTypeName","src":"1956:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14826,"indexed":false,"mutability":"mutable","name":"rewards","nameLocation":"1979:7:51","nodeType":"VariableDeclaration","scope":14830,"src":"1971:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14825,"name":"uint256","nodeType":"ElementaryTypeName","src":"1971:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14828,"indexed":false,"mutability":"mutable","name":"receivedInAsset","nameLocation":"1996:15:51","nodeType":"VariableDeclaration","scope":14830,"src":"1988:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1955:57:51"},"src":"1935:78:51"},{"anonymous":false,"documentation":{"id":14831,"nodeType":"StructuredDocumentation","src":"2017:248:51","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":14839,"name":"SwapConfigChanged","nameLocation":"2274:17:51","nodeType":"EventDefinition","parameters":{"id":14838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14834,"indexed":false,"mutability":"mutable","name":"oldConfig","nameLocation":"2315:9:51","nodeType":"VariableDeclaration","scope":14839,"src":"2292:32:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14833,"nodeType":"UserDefinedTypeName","pathNode":{"id":14832,"name":"SwapLibrary.SwapConfig","nameLocations":["2292:11:51","2304:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"2292:22:51"},"referencedDeclaration":624,"src":"2292:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":14837,"indexed":false,"mutability":"mutable","name":"newConfig","nameLocation":"2349:9:51","nodeType":"VariableDeclaration","scope":14839,"src":"2326:32:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":14836,"nodeType":"UserDefinedTypeName","pathNode":{"id":14835,"name":"SwapLibrary.SwapConfig","nameLocations":["2326:11:51","2338:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"2326:22:51"},"referencedDeclaration":624,"src":"2326:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"2291:68:51"},"src":"2268:92:51"},{"errorSelector":"aafc462c","id":14841,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"2370:34:51","nodeType":"ErrorDefinition","parameters":{"id":14840,"nodeType":"ParameterList","parameters":[],"src":"2404:2:51"},"src":"2364:43:51"},{"errorSelector":"8542eda2","id":14843,"name":"CannotDisconnectWithAssets","nameLocation":"2416:26:51","nodeType":"ErrorDefinition","parameters":{"id":14842,"nodeType":"ParameterList","parameters":[],"src":"2442:2:51"},"src":"2410:35:51"},{"errorSelector":"50701b61","id":14845,"name":"NoExtraDataAllowed","nameLocation":"2454:18:51","nodeType":"ErrorDefinition","parameters":{"id":14844,"nodeType":"ParameterList","parameters":[],"src":"2472:2:51"},"src":"2448:27:51"},{"errorSelector":"a74363cd","id":14847,"name":"RewardsManagerRequired","nameLocation":"2484:22:51","nodeType":"ErrorDefinition","parameters":{"id":14846,"nodeType":"ParameterList","parameters":[],"src":"2506:2:51"},"src":"2478:31:51"},{"canonicalName":"CompoundV3InvestStrategy.ForwardMethods","documentation":{"id":14848,"nodeType":"StructuredDocumentation","src":"2513:293:51","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":14851,"members":[{"id":14849,"name":"harvestRewards","nameLocation":"2835:14:51","nodeType":"EnumValue","src":"2835:14:51"},{"id":14850,"name":"setSwapConfig","nameLocation":"2855:13:51","nodeType":"EnumValue","src":"2855:13:51"}],"name":"ForwardMethods","nameLocation":"2814:14:51","nodeType":"EnumDefinition","src":"2809:63:51"},{"body":{"id":14864,"nodeType":"Block","src":"2901:90:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14855,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2919:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":14854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2911:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14853,"name":"address","nodeType":"ElementaryTypeName","src":"2911:7:51","typeDescriptions":{}}},"id":14856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2911:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":14857,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14807,"src":"2928:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2911:23:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14862,"nodeType":"IfStatement","src":"2907:72:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14859,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14841,"src":"2943:34:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2943:36:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14861,"nodeType":"RevertStatement","src":"2936:43:51"}},{"id":14863,"nodeType":"PlaceholderStatement","src":"2985:1:51"}]},"id":14865,"name":"onlyDelegCall","nameLocation":"2885:13:51","nodeType":"ModifierDefinition","parameters":{"id":14852,"nodeType":"ParameterList","parameters":[],"src":"2898:2:51"},"src":"2876:115:51","virtual":false,"visibility":"internal"},{"body":{"id":14903,"nodeType":"Block","src":"3390:184:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":14878,"name":"rewardsManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"3412:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}],"id":14877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3404:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14876,"name":"address","nodeType":"ElementaryTypeName","src":"3404:7:51","typeDescriptions":{}}},"id":14879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3440:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3432:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14880,"name":"address","nodeType":"ElementaryTypeName","src":"3432:7:51","typeDescriptions":{}}},"id":14883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3432:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3404:38:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":14885,"name":"RewardsManagerRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14847,"src":"3444:22:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3444:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":14875,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3396:7:51","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":14887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3396:73:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14888,"nodeType":"ExpressionStatement","src":"3396:73:51"},{"expression":{"id":14891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14889,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"3475:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14890,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"3485:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"src":"3475:17:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14892,"nodeType":"ExpressionStatement","src":"3475:17:51"},{"expression":{"id":14895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14893,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14819,"src":"3498:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14894,"name":"rewardsManager_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14872,"src":"3516:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"src":"3498:33:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":14896,"nodeType":"ExpressionStatement","src":"3498:33:51"},{"expression":{"id":14901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14897,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"3537:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14898,"name":"cToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14869,"src":"3550:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3558:9:51","memberName":"baseToken","nodeType":"MemberAccess","referencedDeclaration":22249,"src":"3550:17:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":14900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3550:19:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3537:32:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14902,"nodeType":"ExpressionStatement","src":"3537:32:51"}]},"documentation":{"id":14866,"nodeType":"StructuredDocumentation","src":"2995:328:51","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":14904,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":14873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14869,"mutability":"mutable","name":"cToken_","nameLocation":"3350:7:51","nodeType":"VariableDeclaration","scope":14904,"src":"3338:19:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"},"typeName":{"id":14868,"nodeType":"UserDefinedTypeName","pathNode":{"id":14867,"name":"ICompoundV3","nameLocations":["3338:11:51"],"nodeType":"IdentifierPath","referencedDeclaration":22274,"src":"3338:11:51"},"referencedDeclaration":22274,"src":"3338:11:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"visibility":"internal"},{"constant":false,"id":14872,"mutability":"mutable","name":"rewardsManager_","nameLocation":"3373:15:51","nodeType":"VariableDeclaration","scope":14904,"src":"3359:29:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"},"typeName":{"id":14871,"nodeType":"UserDefinedTypeName","pathNode":{"id":14870,"name":"ICometRewards","nameLocations":["3359:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":22236,"src":"3359:13:51"},"referencedDeclaration":22236,"src":"3359:13:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"visibility":"internal"}],"src":"3337:52:51"},"returnParameters":{"id":14874,"nodeType":"ParameterList","parameters":[],"src":"3390:0:51"},"scope":15359,"src":"3326:248:51","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[22307],"body":{"id":14928,"nodeType":"Block","src":"3692:109:51","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":14916,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"3736:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":14917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3748:12:51","memberName":"SwapProtocol","nodeType":"MemberAccess","referencedDeclaration":616,"src":"3736:24:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":14918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3761:9:51","memberName":"undefined","nodeType":"MemberAccess","referencedDeclaration":613,"src":"3736:34:51","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},{"hexValue":"30","id":14919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3772:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"","id":14922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3781:2:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":14921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3775:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":14920,"name":"bytes","nodeType":"ElementaryTypeName","src":"3775:5:51","typeDescriptions":{}}},"id":14923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3775:9:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":14914,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"3713:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":14915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3725:10:51","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"3713:22:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}},"id":14924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:72:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":14925,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"3787:8:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14913,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15254,"src":"3698:14:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":14926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3698:98:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14927,"nodeType":"ExpressionStatement","src":"3698:98:51"}]},"documentation":{"id":14905,"nodeType":"StructuredDocumentation","src":"3578:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":14929,"implemented":true,"kind":"function","modifiers":[{"id":14911,"kind":"modifierInvocation","modifierName":{"id":14910,"name":"onlyDelegCall","nameLocations":["3678:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":14865,"src":"3678:13:51"},"nodeType":"ModifierInvocation","src":"3678:13:51"}],"name":"connect","nameLocation":"3621:7:51","nodeType":"FunctionDefinition","overrides":{"id":14909,"nodeType":"OverrideSpecifier","overrides":[],"src":"3669:8:51"},"parameters":{"id":14908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14907,"mutability":"mutable","name":"initData","nameLocation":"3642:8:51","nodeType":"VariableDeclaration","scope":14929,"src":"3629:21:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14906,"name":"bytes","nodeType":"ElementaryTypeName","src":"3629:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3628:23:51"},"returnParameters":{"id":14912,"nodeType":"ParameterList","parameters":[],"src":"3692:0:51"},"scope":15359,"src":"3612:189:51","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22313],"body":{"id":14988,"nodeType":"Block","src":"3911:315:51","statements":[{"condition":{"id":14939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3921:6:51","subExpression":{"id":14938,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14932,"src":"3922:5:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14987,"nodeType":"IfStatement","src":"3917:305:51","trueBody":{"id":14986,"nodeType":"Block","src":"3929:293:51","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":14944,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3967:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":14943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3959:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14942,"name":"address","nodeType":"ElementaryTypeName","src":"3959:7:51","typeDescriptions":{}}},"id":14945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3959:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14940,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"3941:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3949:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"3941:17:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3941:32:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3977:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3941:37:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14952,"nodeType":"IfStatement","src":"3937:78:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14949,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14843,"src":"3987:26:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3987:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14951,"nodeType":"RevertStatement","src":"3980:35:51"}},{"assignments":[14957],"declarations":[{"constant":false,"id":14957,"mutability":"mutable","name":"owed","nameLocation":"4055:4:51","nodeType":"VariableDeclaration","scope":14986,"src":"4023:36:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_memory_ptr","typeString":"struct ICometRewards.RewardOwed"},"typeName":{"id":14956,"nodeType":"UserDefinedTypeName","pathNode":{"id":14955,"name":"ICometRewards.RewardOwed","nameLocations":["4023:13:51","4037:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":22205,"src":"4023:24:51"},"referencedDeclaration":22205,"src":"4023:24:51","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_storage_ptr","typeString":"struct ICometRewards.RewardOwed"}},"visibility":"internal"}],"id":14969,"initialValue":{"arguments":[{"arguments":[{"id":14962,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4100:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":14961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4092:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14960,"name":"address","nodeType":"ElementaryTypeName","src":"4092:7:51","typeDescriptions":{}}},"id":14963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4092:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":14966,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4118:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":14965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4110:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14964,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:51","typeDescriptions":{}}},"id":14967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4110:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14958,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14819,"src":"4062:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":14959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4078:13:51","memberName":"getRewardOwed","nodeType":"MemberAccess","referencedDeclaration":22235,"src":"4062:29:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_struct$_RewardOwed_$22205_memory_ptr_$","typeString":"function (address,address) external returns (struct ICometRewards.RewardOwed memory)"}},"id":14968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4062:62:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"nodeType":"VariableDeclarationStatement","src":"4023:101:51"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14970,"name":"owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"4136:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"id":14971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4141:5:51","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":22202,"src":"4136:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4158:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4150:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14972,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:51","typeDescriptions":{}}},"id":14975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4150:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4136:24:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14977,"name":"owed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"4164:4:51","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_memory_ptr","typeString":"struct ICometRewards.RewardOwed memory"}},"id":14978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4169:4:51","memberName":"owed","nodeType":"MemberAccess","referencedDeclaration":22204,"src":"4164:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4177:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4164:14:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4136:42:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14985,"nodeType":"IfStatement","src":"4132:83:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14982,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14843,"src":"4187:26:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4187:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":14984,"nodeType":"RevertStatement","src":"4180:35:51"}}]}}]},"documentation":{"id":14930,"nodeType":"StructuredDocumentation","src":"3805:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":14989,"implemented":true,"kind":"function","modifiers":[{"id":14936,"kind":"modifierInvocation","modifierName":{"id":14935,"name":"onlyDelegCall","nameLocations":["3897:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":14865,"src":"3897:13:51"},"nodeType":"ModifierInvocation","src":"3897:13:51"}],"name":"disconnect","nameLocation":"3848:10:51","nodeType":"FunctionDefinition","overrides":{"id":14934,"nodeType":"OverrideSpecifier","overrides":[],"src":"3888:8:51"},"parameters":{"id":14933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14932,"mutability":"mutable","name":"force","nameLocation":"3864:5:51","nodeType":"VariableDeclaration","scope":14989,"src":"3859:10:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14931,"name":"bool","nodeType":"ElementaryTypeName","src":"3859:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3858:12:51"},"returnParameters":{"id":14937,"nodeType":"ParameterList","parameters":[],"src":"3911:0:51"},"scope":15359,"src":"3839:387:51","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22367],"body":{"id":15009,"nodeType":"Block","src":"4351:92:51","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14998,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4361:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":14999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4369:16:51","memberName":"isWithdrawPaused","nodeType":"MemberAccess","referencedDeclaration":22259,"src":"4361:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4361:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15003,"nodeType":"IfStatement","src":"4357:40:51","trueBody":{"expression":{"hexValue":"30","id":15001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4396:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":14997,"id":15002,"nodeType":"Return","src":"4389:8:51"}},{"expression":{"arguments":[{"id":15006,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14992,"src":"4428:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15004,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4410:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":15005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4418:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"4410:17:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4410:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14997,"id":15008,"nodeType":"Return","src":"4403:35:51"}]},"documentation":{"id":14990,"nodeType":"StructuredDocumentation","src":"4230:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":15010,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4273:11:51","nodeType":"FunctionDefinition","overrides":{"id":14994,"nodeType":"OverrideSpecifier","overrides":[],"src":"4324:8:51"},"parameters":{"id":14993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14992,"mutability":"mutable","name":"contract_","nameLocation":"4293:9:51","nodeType":"VariableDeclaration","scope":15010,"src":"4285:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14991,"name":"address","nodeType":"ElementaryTypeName","src":"4285:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4284:19:51"},"returnParameters":{"id":14997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15010,"src":"4342:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14995,"name":"uint256","nodeType":"ElementaryTypeName","src":"4342:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4341:9:51"},"scope":15359,"src":"4264:179:51","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22359],"body":{"id":15031,"nodeType":"Block","src":"4571:79:51","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15019,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4581:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":15020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4589:14:51","memberName":"isSupplyPaused","nodeType":"MemberAccess","referencedDeclaration":22254,"src":"4581:22:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bool_$","typeString":"function () view external returns (bool)"}},"id":15021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4581:24:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15024,"nodeType":"IfStatement","src":"4577:38:51","trueBody":{"expression":{"hexValue":"30","id":15022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4614:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":15018,"id":15023,"nodeType":"Return","src":"4607:8:51"}},{"expression":{"expression":{"arguments":[{"id":15027,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4633:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15026,"name":"uint256","nodeType":"ElementaryTypeName","src":"4633:7:51","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":15025,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4628:4:51","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4628:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":15029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4642:3:51","memberName":"max","nodeType":"MemberAccess","src":"4628:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15018,"id":15030,"nodeType":"Return","src":"4621:24:51"}]},"documentation":{"id":15011,"nodeType":"StructuredDocumentation","src":"4447:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":15032,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"4490:10:51","nodeType":"FunctionDefinition","overrides":{"id":15015,"nodeType":"OverrideSpecifier","overrides":[],"src":"4544:8:51"},"parameters":{"id":15014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15032,"src":"4501:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15012,"name":"address","nodeType":"ElementaryTypeName","src":"4501:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4500:23:51"},"returnParameters":{"id":15018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15032,"src":"4562:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15016,"name":"uint256","nodeType":"ElementaryTypeName","src":"4562:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4561:9:51"},"scope":15359,"src":"4481:169:51","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22343],"body":{"id":15043,"nodeType":"Block","src":"4759:28:51","statements":[{"expression":{"id":15041,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"4772:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":15040,"id":15042,"nodeType":"Return","src":"4765:17:51"}]},"documentation":{"id":15033,"nodeType":"StructuredDocumentation","src":"4654:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":15044,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"4697:5:51","nodeType":"FunctionDefinition","overrides":{"id":15037,"nodeType":"OverrideSpecifier","overrides":[],"src":"4732:8:51"},"parameters":{"id":15036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15044,"src":"4703:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15034,"name":"address","nodeType":"ElementaryTypeName","src":"4703:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4702:9:51"},"returnParameters":{"id":15040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15044,"src":"4750:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15038,"name":"address","nodeType":"ElementaryTypeName","src":"4750:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4749:9:51"},"scope":15359,"src":"4688:99:51","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22351],"body":{"id":15058,"nodeType":"Block","src":"4919:46:51","statements":[{"expression":{"arguments":[{"id":15055,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15047,"src":"4950:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15053,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"4932:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":15054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4940:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"4932:17:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4932:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15052,"id":15057,"nodeType":"Return","src":"4925:35:51"}]},"documentation":{"id":15045,"nodeType":"StructuredDocumentation","src":"4791:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":15059,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4834:11:51","nodeType":"FunctionDefinition","overrides":{"id":15049,"nodeType":"OverrideSpecifier","overrides":[],"src":"4885:8:51"},"parameters":{"id":15048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15047,"mutability":"mutable","name":"contract_","nameLocation":"4854:9:51","nodeType":"VariableDeclaration","scope":15059,"src":"4846:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15046,"name":"address","nodeType":"ElementaryTypeName","src":"4846:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4845:19:51"},"returnParameters":{"id":15052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15051,"mutability":"mutable","name":"assets","nameLocation":"4911:6:51","nodeType":"VariableDeclaration","scope":15059,"src":"4903:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15050,"name":"uint256","nodeType":"ElementaryTypeName","src":"4903:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4902:16:51"},"scope":15359,"src":"4825:140:51","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22325],"body":{"id":15075,"nodeType":"Block","src":"5077:47:51","statements":[{"expression":{"arguments":[{"id":15071,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"5100:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15072,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15062,"src":"5112:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15068,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"5083:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":15070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5091:8:51","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":22266,"src":"5083:16:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5083:36:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15074,"nodeType":"ExpressionStatement","src":"5083:36:51"}]},"documentation":{"id":15060,"nodeType":"StructuredDocumentation","src":"4969:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"2e1a7d4d","id":15076,"implemented":true,"kind":"function","modifiers":[{"id":15066,"kind":"modifierInvocation","modifierName":{"id":15065,"name":"onlyDelegCall","nameLocations":["5063:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":14865,"src":"5063:13:51"},"nodeType":"ModifierInvocation","src":"5063:13:51"}],"name":"withdraw","nameLocation":"5012:8:51","nodeType":"FunctionDefinition","overrides":{"id":15064,"nodeType":"OverrideSpecifier","overrides":[],"src":"5054:8:51"},"parameters":{"id":15063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15062,"mutability":"mutable","name":"assets","nameLocation":"5029:6:51","nodeType":"VariableDeclaration","scope":15076,"src":"5021:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15061,"name":"uint256","nodeType":"ElementaryTypeName","src":"5021:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5020:16:51"},"returnParameters":{"id":15067,"nodeType":"ParameterList","parameters":[],"src":"5077:0:51"},"scope":15359,"src":"5003:121:51","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22319],"body":{"id":15089,"nodeType":"Block","src":"5235:26:51","statements":[{"expression":{"arguments":[{"id":15086,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15079,"src":"5249:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15085,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15114,"src":"5241:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5241:15:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15088,"nodeType":"ExpressionStatement","src":"5241:15:51"}]},"documentation":{"id":15077,"nodeType":"StructuredDocumentation","src":"5128:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"b6b55f25","id":15090,"implemented":true,"kind":"function","modifiers":[{"id":15083,"kind":"modifierInvocation","modifierName":{"id":15082,"name":"onlyDelegCall","nameLocations":["5221:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":14865,"src":"5221:13:51"},"nodeType":"ModifierInvocation","src":"5221:13:51"}],"name":"deposit","nameLocation":"5171:7:51","nodeType":"FunctionDefinition","overrides":{"id":15081,"nodeType":"OverrideSpecifier","overrides":[],"src":"5212:8:51"},"parameters":{"id":15080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15079,"mutability":"mutable","name":"assets","nameLocation":"5187:6:51","nodeType":"VariableDeclaration","scope":15090,"src":"5179:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15078,"name":"uint256","nodeType":"ElementaryTypeName","src":"5179:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5178:16:51"},"returnParameters":{"id":15084,"nodeType":"ParameterList","parameters":[],"src":"5235:0:51"},"scope":15359,"src":"5162:99:51","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":15113,"nodeType":"Block","src":"5307:103:51","statements":[{"expression":{"arguments":[{"arguments":[{"id":15101,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"5348:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":15100,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5340:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15099,"name":"address","nodeType":"ElementaryTypeName","src":"5340:7:51","typeDescriptions":{}}},"id":15102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5340:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15103,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15092,"src":"5358:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15096,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"5320:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15095,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"5313:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":15097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:18:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":15098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5332:7:51","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"5313:26:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":15104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:52:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15105,"nodeType":"ExpressionStatement","src":"5313:52:51"},{"expression":{"arguments":[{"id":15109,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"5386:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15110,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15092,"src":"5398:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15106,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"5371:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}},"id":15108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5379:6:51","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":22273,"src":"5371:14:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":15111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5371:34:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15112,"nodeType":"ExpressionStatement","src":"5371:34:51"}]},"id":15114,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"5274:7:51","nodeType":"FunctionDefinition","parameters":{"id":15093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15092,"mutability":"mutable","name":"assets","nameLocation":"5290:6:51","nodeType":"VariableDeclaration","scope":15114,"src":"5282:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15091,"name":"uint256","nodeType":"ElementaryTypeName","src":"5282:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5281:16:51"},"returnParameters":{"id":15094,"nodeType":"ParameterList","parameters":[],"src":"5307:0:51"},"scope":15359,"src":"5265:145:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15200,"nodeType":"Block","src":"5463:569:51","statements":[{"assignments":[15120,null,null],"declarations":[{"constant":false,"id":15120,"mutability":"mutable","name":"reward","nameLocation":"5478:6:51","nodeType":"VariableDeclaration","scope":15200,"src":"5470:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15119,"name":"address","nodeType":"ElementaryTypeName","src":"5470:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null,null],"id":15128,"initialValue":{"arguments":[{"arguments":[{"id":15125,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"5529:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":15124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5521:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15123,"name":"address","nodeType":"ElementaryTypeName","src":"5521:7:51","typeDescriptions":{}}},"id":15126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5521:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15121,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14819,"src":"5492:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":15122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5508:12:51","memberName":"rewardConfig","nodeType":"MemberAccess","referencedDeclaration":22216,"src":"5492:28:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_address_$_t_uint64_$_t_bool_$","typeString":"function (address) external returns (address,uint64,bool)"}},"id":15127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5492:46:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint64_$_t_bool_$","typeString":"tuple(address,uint64,bool)"}},"nodeType":"VariableDeclarationStatement","src":"5469:69:51"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15129,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15120,"src":"5548:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5566:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5558:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15130,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:51","typeDescriptions":{}}},"id":15133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5558:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5548:20:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15136,"nodeType":"IfStatement","src":"5544:33:51","trueBody":{"functionReturnParameters":15118,"id":15135,"nodeType":"Return","src":"5570:7:51"}},{"expression":{"arguments":[{"arguments":[{"id":15142,"name":"_cToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"5612:7:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICompoundV3_$22274","typeString":"contract ICompoundV3"}],"id":15141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5604:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15140,"name":"address","nodeType":"ElementaryTypeName","src":"5604:7:51","typeDescriptions":{}}},"id":15143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5604:16:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":15146,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5630:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":15145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5622:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15144,"name":"address","nodeType":"ElementaryTypeName","src":"5622:7:51","typeDescriptions":{}}},"id":15147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5622:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":15148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5637:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":15137,"name":"_rewardsManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14819,"src":"5582:15:51","typeDescriptions":{"typeIdentifier":"t_contract$_ICometRewards_$22236","typeString":"contract ICometRewards"}},"id":15139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5598:5:51","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":22225,"src":"5582:21:51","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":15149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5582:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15150,"nodeType":"ExpressionStatement","src":"5582:60:51"},{"assignments":[15155],"declarations":[{"constant":false,"id":15155,"mutability":"mutable","name":"swapConfig","nameLocation":"5679:10:51","nodeType":"VariableDeclaration","scope":15200,"src":"5649:40:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":15154,"nodeType":"UserDefinedTypeName","pathNode":{"id":15153,"name":"SwapLibrary.SwapConfig","nameLocations":["5649:11:51","5661:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"5649:22:51"},"referencedDeclaration":624,"src":"5649:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":15167,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":15160,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14813,"src":"5735:11:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":15158,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"5710:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":15159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5722:12:51","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"5710:24:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":15161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5710:37:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":15162,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5748:5:51","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"5710:43:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"expression":{"id":15163,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"5762:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":15164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5774:10:51","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"5762:22:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":15165,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5761:24:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":15156,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5692:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5696:6:51","memberName":"decode","nodeType":"MemberAccess","src":"5692:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5692:99:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"5649:142:51"},{"assignments":[15169],"declarations":[{"constant":false,"id":15169,"mutability":"mutable","name":"earned","nameLocation":"5806:6:51","nodeType":"VariableDeclaration","scope":15200,"src":"5798:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15168,"name":"uint256","nodeType":"ElementaryTypeName","src":"5798:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15179,"initialValue":{"arguments":[{"arguments":[{"id":15176,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5848:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":15175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5840:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15174,"name":"address","nodeType":"ElementaryTypeName","src":"5840:7:51","typeDescriptions":{}}},"id":15177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5840:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":15171,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15120,"src":"5822:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15170,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"5815:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$8656_$","typeString":"type(contract IERC20)"}},"id":15172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:14:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":15173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5830:9:51","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"5815:24:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5815:39:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5798:56:51"},{"assignments":[15181],"declarations":[{"constant":false,"id":15181,"mutability":"mutable","name":"reinvestAmount","nameLocation":"5868:14:51","nodeType":"VariableDeclaration","scope":15200,"src":"5860:22:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15180,"name":"uint256","nodeType":"ElementaryTypeName","src":"5860:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15189,"initialValue":{"arguments":[{"id":15184,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15120,"src":"5907:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15185,"name":"_baseToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14821,"src":"5915:10:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15186,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15169,"src":"5927:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15187,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15116,"src":"5935:5:51","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":15182,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15155,"src":"5885:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":15183,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5896:10:51","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":794,"src":"5885:21:51","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":15188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:56:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5860:81:51"},{"expression":{"arguments":[{"id":15191,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15181,"src":"5955:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15190,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15114,"src":"5947:7:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5947:23:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15193,"nodeType":"ExpressionStatement","src":"5947:23:51"},{"eventCall":{"arguments":[{"id":15195,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15120,"src":"5996:6:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15196,"name":"earned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15169,"src":"6004:6:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15197,"name":"reinvestAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15181,"src":"6012:14:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15194,"name":"RewardsClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14830,"src":"5981:14:51","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":15198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:46:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15199,"nodeType":"EmitStatement","src":"5976:51:51"}]},"id":15201,"implemented":true,"kind":"function","modifiers":[],"name":"_harvestRewards","nameLocation":"5423:15:51","nodeType":"FunctionDefinition","parameters":{"id":15117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15116,"mutability":"mutable","name":"price","nameLocation":"5447:5:51","nodeType":"VariableDeclaration","scope":15201,"src":"5439:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15115,"name":"uint256","nodeType":"ElementaryTypeName","src":"5439:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5438:15:51"},"returnParameters":{"id":15118,"nodeType":"ParameterList","parameters":[],"src":"5463:0:51"},"scope":15359,"src":"5414:618:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15253,"nodeType":"Block","src":"6149:365:51","statements":[{"assignments":[15213],"declarations":[{"constant":false,"id":15213,"mutability":"mutable","name":"swapConfig","nameLocation":"6185:10:51","nodeType":"VariableDeclaration","scope":15253,"src":"6155:40:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":15212,"nodeType":"UserDefinedTypeName","pathNode":{"id":15211,"name":"SwapLibrary.SwapConfig","nameLocations":["6155:11:51","6167:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6155:22:51"},"referencedDeclaration":624,"src":"6155:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":15221,"initialValue":{"arguments":[{"id":15216,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15206,"src":"6209:20:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":15217,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"6232:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":15218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6244:10:51","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"6232:22:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":15219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6231:24:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":15214,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6198:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6202:6:51","memberName":"decode","nodeType":"MemberAccess","src":"6198:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6198:58:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"6155:101:51"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15222,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15213,"src":"6262:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":15224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6273:8:51","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":724,"src":"6262:19:51","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":15225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6262:21:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15226,"nodeType":"ExpressionStatement","src":"6262:21:51"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":15229,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15213,"src":"6304:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"expression":{"id":15227,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6293:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6297:6:51","memberName":"encode","nodeType":"MemberAccess","src":"6293:10:51","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6293:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6316:6:51","memberName":"length","nodeType":"MemberAccess","src":"6293:29:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15232,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15206,"src":"6326:20:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6347:6:51","memberName":"length","nodeType":"MemberAccess","src":"6326:27:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6293:60:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15238,"nodeType":"IfStatement","src":"6289:93:51","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15235,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14845,"src":"6362:18:51","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6362:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15237,"nodeType":"RevertStatement","src":"6355:27:51"}},{"eventCall":{"arguments":[{"id":15240,"name":"oldSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15204,"src":"6411:13:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":15241,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15213,"src":"6426:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"id":15239,"name":"SwapConfigChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14839,"src":"6393:17:51","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,struct SwapLibrary.SwapConfig memory)"}},"id":15242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6393:44:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15243,"nodeType":"EmitStatement","src":"6388:49:51"},{"expression":{"id":15251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":15247,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14813,"src":"6468:11:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":15244,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"6443:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":15246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6455:12:51","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"6443:24:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":15248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6443:37:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":15249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6481:5:51","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"6443:43:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15250,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15206,"src":"6489:20:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"6443:66:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":15252,"nodeType":"ExpressionStatement","src":"6443:66:51"}]},"id":15254,"implemented":true,"kind":"function","modifiers":[],"name":"_setSwapConfig","nameLocation":"6045:14:51","nodeType":"FunctionDefinition","parameters":{"id":15207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15204,"mutability":"mutable","name":"oldSwapConfig","nameLocation":"6090:13:51","nodeType":"VariableDeclaration","scope":15254,"src":"6060:43:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":15203,"nodeType":"UserDefinedTypeName","pathNode":{"id":15202,"name":"SwapLibrary.SwapConfig","nameLocations":["6060:11:51","6072:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6060:22:51"},"referencedDeclaration":624,"src":"6060:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":15206,"mutability":"mutable","name":"newSwapConfigAsBytes","nameLocation":"6118:20:51","nodeType":"VariableDeclaration","scope":15254,"src":"6105:33:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15205,"name":"bytes","nodeType":"ElementaryTypeName","src":"6105:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6059:80:51"},"returnParameters":{"id":15208,"nodeType":"ParameterList","parameters":[],"src":"6149:0:51"},"scope":15359,"src":"6036:478:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[22335],"body":{"id":15317,"nodeType":"Block","src":"6660:1373:51","statements":[{"assignments":[15268],"declarations":[{"constant":false,"id":15268,"mutability":"mutable","name":"checkedMethod","nameLocation":"6681:13:51","nodeType":"VariableDeclaration","scope":15317,"src":"6666:28:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"typeName":{"id":15267,"nodeType":"UserDefinedTypeName","pathNode":{"id":15266,"name":"ForwardMethods","nameLocations":["6666:14:51"],"nodeType":"IdentifierPath","referencedDeclaration":14851,"src":"6666:14:51"},"referencedDeclaration":14851,"src":"6666:14:51","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":15272,"initialValue":{"arguments":[{"id":15270,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15257,"src":"6712:6:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":15269,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14851,"src":"6697:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$14851_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":15271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6697:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"6666:53:51"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"id":15276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15273,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15268,"src":"6729:13:51","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15274,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14851,"src":"6746:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$14851_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":15275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6761:14:51","memberName":"harvestRewards","nodeType":"MemberAccess","referencedDeclaration":14849,"src":"6746:29:51","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"src":"6729:46:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"},"id":15295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15292,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15268,"src":"7426:13:51","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":15293,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14851,"src":"7443:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$14851_$","typeString":"type(enum CompoundV3InvestStrategy.ForwardMethods)"}},"id":15294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7458:13:51","memberName":"setSwapConfig","nodeType":"MemberAccess","referencedDeclaration":14850,"src":"7443:28:51","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$14851","typeString":"enum CompoundV3InvestStrategy.ForwardMethods"}},"src":"7426:45:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15307,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7997:6:51","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":15308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7997:8:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15309,"nodeType":"ExpressionStatement","src":"7997:8:51"},"id":15310,"nodeType":"IfStatement","src":"7422:583:51","trueBody":{"id":15306,"nodeType":"Block","src":"7473:274:51","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":15300,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7725:4:51","typeDescriptions":{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CompoundV3InvestStrategy_$15359","typeString":"contract CompoundV3InvestStrategy"}],"id":15299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7717:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15298,"name":"address","nodeType":"ElementaryTypeName","src":"7717:7:51","typeDescriptions":{}}},"id":15301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7717:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15297,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15344,"src":"7702:14:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":15302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7702:29:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":15303,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15259,"src":"7733:6:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15296,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15254,"src":"7687:14:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":15304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7687:53:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15305,"nodeType":"ExpressionStatement","src":"7687:53:51"}]}},"id":15311,"nodeType":"IfStatement","src":"6725:1280:51","trueBody":{"id":15291,"nodeType":"Block","src":"6777:639:51","statements":[{"assignments":[15278],"declarations":[{"constant":false,"id":15278,"mutability":"mutable","name":"price","nameLocation":"7342:5:51","nodeType":"VariableDeclaration","scope":15291,"src":"7334:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15277,"name":"uint256","nodeType":"ElementaryTypeName","src":"7334:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15286,"initialValue":{"arguments":[{"id":15281,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15259,"src":"7361:6:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":15283,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7370:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15282,"name":"uint256","nodeType":"ElementaryTypeName","src":"7370:7:51","typeDescriptions":{}}}],"id":15284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7369:9:51","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":15279,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7350:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7354:6:51","memberName":"decode","nodeType":"MemberAccess","src":"7350:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7350:29:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7334:45:51"},{"expression":{"arguments":[{"id":15288,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15278,"src":"7403:5:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15287,"name":"_harvestRewards","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15201,"src":"7387:15:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7387:22:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15290,"nodeType":"ExpressionStatement","src":"7387:22:51"}]}},{"expression":{"arguments":[{"hexValue":"","id":15314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8025:2:51","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":15313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8019:5:51","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":15312,"name":"bytes","nodeType":"ElementaryTypeName","src":"8019:5:51","typeDescriptions":{}}},"id":15315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8019:9:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":15265,"id":15316,"nodeType":"Return","src":"8012:16:51"}]},"documentation":{"id":15255,"nodeType":"StructuredDocumentation","src":"6518:31:51","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":15318,"implemented":true,"kind":"function","modifiers":[{"id":15262,"kind":"modifierInvocation","modifierName":{"id":15261,"name":"onlyDelegCall","nameLocations":["6623:13:51"],"nodeType":"IdentifierPath","referencedDeclaration":14865,"src":"6623:13:51"},"nodeType":"ModifierInvocation","src":"6623:13:51"}],"name":"forwardEntryPoint","nameLocation":"6561:17:51","nodeType":"FunctionDefinition","parameters":{"id":15260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15257,"mutability":"mutable","name":"method","nameLocation":"6585:6:51","nodeType":"VariableDeclaration","scope":15318,"src":"6579:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15256,"name":"uint8","nodeType":"ElementaryTypeName","src":"6579:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15259,"mutability":"mutable","name":"params","nameLocation":"6606:6:51","nodeType":"VariableDeclaration","scope":15318,"src":"6593:19:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15258,"name":"bytes","nodeType":"ElementaryTypeName","src":"6593:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6578:35:51"},"returnParameters":{"id":15265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15264,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15318,"src":"6646:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15263,"name":"bytes","nodeType":"ElementaryTypeName","src":"6646:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6645:14:51"},"scope":15359,"src":"6552:1481:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15343,"nodeType":"Block","src":"8134:163:51","statements":[{"assignments":[15327],"declarations":[{"constant":false,"id":15327,"mutability":"mutable","name":"swapConfigAsBytes","nameLocation":"8153:17:51","nodeType":"VariableDeclaration","scope":15343,"src":"8140:30:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15326,"name":"bytes","nodeType":"ElementaryTypeName","src":"8140:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15334,"initialValue":{"arguments":[{"id":15332,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14813,"src":"8212:11:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":15329,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15320,"src":"8188:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15328,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"8173:14:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$22298_$","typeString":"type(contract IExposeStorage)"}},"id":15330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$22298","typeString":"contract IExposeStorage"}},"id":15331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8199:12:51","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":22297,"src":"8173:38:51","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":15333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8173:51:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8140:84:51"},{"expression":{"arguments":[{"id":15337,"name":"swapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15327,"src":"8248:17:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":15338,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"8268:11:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":15339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8280:10:51","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"8268:22:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":15340,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8267:24:51","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":15335,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8237:3:51","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8241:6:51","memberName":"decode","nodeType":"MemberAccess","src":"8237:10:51","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":15341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8237:55:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":15325,"id":15342,"nodeType":"Return","src":"8230:62:51"}]},"id":15344,"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapConfig","nameLocation":"8046:14:51","nodeType":"FunctionDefinition","parameters":{"id":15321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15320,"mutability":"mutable","name":"contract_","nameLocation":"8069:9:51","nodeType":"VariableDeclaration","scope":15344,"src":"8061:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15319,"name":"address","nodeType":"ElementaryTypeName","src":"8061:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8060:19:51"},"returnParameters":{"id":15325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15344,"src":"8103:29:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":15323,"nodeType":"UserDefinedTypeName","pathNode":{"id":15322,"name":"SwapLibrary.SwapConfig","nameLocations":["8103:11:51","8115:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"8103:22:51"},"referencedDeclaration":624,"src":"8103:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8102:31:51"},"scope":15359,"src":"8037:260:51","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15357,"nodeType":"Block","src":"8653:43:51","statements":[{"expression":{"arguments":[{"id":15354,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15347,"src":"8681:9:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15353,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15344,"src":"8666:14:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":15355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8666:25:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":15352,"id":15356,"nodeType":"Return","src":"8659:32:51"}]},"documentation":{"id":15345,"nodeType":"StructuredDocumentation","src":"8301:255:51","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":15358,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapConfig","nameLocation":"8568:13:51","nodeType":"FunctionDefinition","parameters":{"id":15348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15347,"mutability":"mutable","name":"contract_","nameLocation":"8590:9:51","nodeType":"VariableDeclaration","scope":15358,"src":"8582:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15346,"name":"address","nodeType":"ElementaryTypeName","src":"8582:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8581:19:51"},"returnParameters":{"id":15352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15358,"src":"8622:29:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":15350,"nodeType":"UserDefinedTypeName","pathNode":{"id":15349,"name":"SwapLibrary.SwapConfig","nameLocations":["8622:11:51","8634:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"8622:22:51"},"referencedDeclaration":624,"src":"8622:22:51","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8621:31:51"},"scope":15359,"src":"8559:137:51","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":15360,"src":"1270:7428:51","usedErrors":[14841,14843,14845,14847],"usedEvents":[14830,14839]}],"src":"39:8660:51"},"id":51},"contracts/InvestStrategyClient.sol":{"ast":{"absolutePath":"contracts/InvestStrategyClient.sol","exportedSymbols":{"Address":[9352],"IERC20Metadata":[8682],"IInvestStrategy":[22374],"InvestStrategyClient":[15775]},"id":15776,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":15361,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:52"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":15363,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15776,"sourceUnit":9353,"src":"64:66:52","symbolAliases":[{"foreign":{"id":15362,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"72:7:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":15365,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15776,"sourceUnit":8683,"src":"131:97:52","symbolAliases":[{"foreign":{"id":15364,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"139:14:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":15367,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15776,"sourceUnit":22375,"src":"229:65:52","symbolAliases":[{"foreign":{"id":15366,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"237:15:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"InvestStrategyClient","contractDependencies":[],"contractKind":"library","documentation":{"id":15368,"nodeType":"StructuredDocumentation","src":"296:284:52","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":15775,"linearizedBaseContracts":[15775],"name":"InvestStrategyClient","nameLocation":"589:20:52","nodeType":"ContractDefinition","nodes":[{"global":false,"id":15371,"libraryName":{"id":15369,"name":"Address","nameLocations":["620:7:52"],"nodeType":"IdentifierPath","referencedDeclaration":9352,"src":"620:7:52"},"nodeType":"UsingForDirective","src":"614:26:52","typeName":{"id":15370,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":15379,"name":"StrategyChanged","nameLocation":"650:15:52","nodeType":"EventDefinition","parameters":{"id":15378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15374,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"682:11:52","nodeType":"VariableDeclaration","scope":15379,"src":"666:27:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15373,"nodeType":"UserDefinedTypeName","pathNode":{"id":15372,"name":"IInvestStrategy","nameLocations":["666:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"666:15:52"},"referencedDeclaration":22374,"src":"666:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15377,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"711:11:52","nodeType":"VariableDeclaration","scope":15379,"src":"695:27:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15376,"nodeType":"UserDefinedTypeName","pathNode":{"id":15375,"name":"IInvestStrategy","nameLocations":["695:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"695:15:52"},"referencedDeclaration":22374,"src":"695:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"665:58:52"},"src":"644:80:52"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":15383,"name":"WithdrawFailed","nameLocation":"733:14:52","nodeType":"EventDefinition","parameters":{"id":15382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15381,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"754:6:52","nodeType":"VariableDeclaration","scope":15383,"src":"748:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15380,"name":"bytes","nodeType":"ElementaryTypeName","src":"748:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"747:14:52"},"src":"727:35:52"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":15387,"name":"DepositFailed","nameLocation":"771:13:52","nodeType":"EventDefinition","parameters":{"id":15386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15385,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"791:6:52","nodeType":"VariableDeclaration","scope":15387,"src":"785:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15384,"name":"bytes","nodeType":"ElementaryTypeName","src":"785:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"784:14:52"},"src":"765:34:52"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":15391,"name":"DisconnectFailed","nameLocation":"808:16:52","nodeType":"EventDefinition","parameters":{"id":15390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15389,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"831:6:52","nodeType":"VariableDeclaration","scope":15391,"src":"825:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15388,"name":"bytes","nodeType":"ElementaryTypeName","src":"825:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"824:14:52"},"src":"802:37:52"},{"errorSelector":"e76673ef","id":15393,"name":"InvalidStrategyAsset","nameLocation":"849:20:52","nodeType":"ErrorDefinition","parameters":{"id":15392,"nodeType":"ParameterList","parameters":[],"src":"869:2:52"},"src":"843:29:52"},{"body":{"id":15415,"nodeType":"Block","src":"1205:108:52","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15409,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"1265:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1281:7:52","memberName":"connect","nodeType":"MemberAccess","referencedDeclaration":22307,"src":"1265:23:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function IInvestStrategy.connect(bytes memory)"}},{"id":15411,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15399,"src":"1290:16:52","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":15407,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1250:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1254:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"1250:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1250:57:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15404,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15397,"src":"1219:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15403,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15402,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:52","typeDescriptions":{}}},"id":15405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1229:20:52","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"1211:38:52","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":15413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:97:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15414,"nodeType":"ExpressionStatement","src":"1211:97:52"}]},"documentation":{"id":15394,"nodeType":"StructuredDocumentation","src":"876:241:52","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":15416,"implemented":true,"kind":"function","modifiers":[],"name":"dcConnect","nameLocation":"1129:9:52","nodeType":"FunctionDefinition","parameters":{"id":15400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15397,"mutability":"mutable","name":"strategy","nameLocation":"1155:8:52","nodeType":"VariableDeclaration","scope":15416,"src":"1139:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15396,"nodeType":"UserDefinedTypeName","pathNode":{"id":15395,"name":"IInvestStrategy","nameLocations":["1139:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1139:15:52"},"referencedDeclaration":22374,"src":"1139:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15399,"mutability":"mutable","name":"initStrategyData","nameLocation":"1178:16:52","nodeType":"VariableDeclaration","scope":15416,"src":"1165:29:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15398,"name":"bytes","nodeType":"ElementaryTypeName","src":"1165:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1138:57:52"},"returnParameters":{"id":15401,"nodeType":"ParameterList","parameters":[],"src":"1205:0:52"},"scope":15775,"src":"1120:193:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15466,"nodeType":"Block","src":"1798:396:52","statements":[{"condition":{"id":15425,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15422,"src":"1808:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15464,"nodeType":"Block","src":"2086:104:52","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15458,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"2148:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2164:10:52","memberName":"disconnect","nodeType":"MemberAccess","referencedDeclaration":22313,"src":"2148:26:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"}},{"hexValue":"66616c7365","id":15460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2176:5:52","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":15456,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2133:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2137:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"2133:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:49:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15453,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15420,"src":"2102:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2094:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15451,"name":"address","nodeType":"ElementaryTypeName","src":"2094:7:52","typeDescriptions":{}}},"id":15454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2094:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2112:20:52","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"2094:38:52","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":15462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2094:89:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15463,"nodeType":"ExpressionStatement","src":"2094:89:52"}]},"id":15465,"nodeType":"IfStatement","src":"1804:386:52","trueBody":{"id":15450,"nodeType":"Block","src":"1815:265:52","statements":[{"assignments":[15427,15429],"declarations":[{"constant":false,"id":15427,"mutability":"mutable","name":"success","nameLocation":"1886:7:52","nodeType":"VariableDeclaration","scope":15450,"src":"1881:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15426,"name":"bool","nodeType":"ElementaryTypeName","src":"1881:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15429,"mutability":"mutable","name":"returndata","nameLocation":"1908:10:52","nodeType":"VariableDeclaration","scope":15450,"src":"1895:23:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15428,"name":"bytes","nodeType":"ElementaryTypeName","src":"1895:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15442,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15437,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"1977:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1993:10:52","memberName":"disconnect","nodeType":"MemberAccess","referencedDeclaration":22313,"src":"1977:26:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_bool_$returns$__$","typeString":"function IInvestStrategy.disconnect(bool)"}},{"hexValue":"74727565","id":15439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2005:4:52","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":15435,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1962:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1966:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"1962:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:48:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15432,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15420,"src":"1930:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1922:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15430,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:52","typeDescriptions":{}}},"id":15433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:12:52","memberName":"delegatecall","nodeType":"MemberAccess","src":"1922:30:52","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":15441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1922:96:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1880:138:52"},{"condition":{"id":15444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2030:8:52","subExpression":{"id":15443,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15427,"src":"2031:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15449,"nodeType":"IfStatement","src":"2026:47:52","trueBody":{"eventCall":{"arguments":[{"id":15446,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15429,"src":"2062:10:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15445,"name":"DisconnectFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15391,"src":"2045:16:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2045:28:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15448,"nodeType":"EmitStatement","src":"2040:33:52"}}]}}]},"documentation":{"id":15417,"nodeType":"StructuredDocumentation","src":"1317:409:52","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":15467,"implemented":true,"kind":"function","modifiers":[],"name":"dcDisconnect","nameLocation":"1738:12:52","nodeType":"FunctionDefinition","parameters":{"id":15423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15420,"mutability":"mutable","name":"strategy","nameLocation":"1767:8:52","nodeType":"VariableDeclaration","scope":15467,"src":"1751:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15419,"nodeType":"UserDefinedTypeName","pathNode":{"id":15418,"name":"IInvestStrategy","nameLocations":["1751:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1751:15:52"},"referencedDeclaration":22374,"src":"1751:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15422,"mutability":"mutable","name":"force","nameLocation":"1782:5:52","nodeType":"VariableDeclaration","scope":15467,"src":"1777:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15421,"name":"bool","nodeType":"ElementaryTypeName","src":"1777:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1750:38:52"},"returnParameters":{"id":15424,"nodeType":"ParameterList","parameters":[],"src":"1798:0:52"},"scope":15775,"src":"1729:465:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15525,"nodeType":"Block","src":"2839:440:52","statements":[{"condition":{"id":15480,"name":"ignoreError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15475,"src":"2849:11:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15523,"nodeType":"Block","src":"3153:122:52","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15515,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"3215:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3231:8:52","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":22325,"src":"3215:24:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"}},{"id":15517,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15473,"src":"3241:6:52","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":15513,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3200:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3204:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"3200:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3200:48:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15510,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15471,"src":"3169:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3161:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15508,"name":"address","nodeType":"ElementaryTypeName","src":"3161:7:52","typeDescriptions":{}}},"id":15511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3161:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3179:20:52","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"3161:38:52","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":15519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3161:88:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15520,"nodeType":"ExpressionStatement","src":"3161:88:52"},{"expression":{"hexValue":"74727565","id":15521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3264:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15479,"id":15522,"nodeType":"Return","src":"3257:11:52"}]},"id":15524,"nodeType":"IfStatement","src":"2845:430:52","trueBody":{"id":15507,"nodeType":"Block","src":"2862:285:52","statements":[{"assignments":[15482,15484],"declarations":[{"constant":false,"id":15482,"mutability":"mutable","name":"success","nameLocation":"2933:7:52","nodeType":"VariableDeclaration","scope":15507,"src":"2928:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15481,"name":"bool","nodeType":"ElementaryTypeName","src":"2928:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15484,"mutability":"mutable","name":"returndata","nameLocation":"2955:10:52","nodeType":"VariableDeclaration","scope":15507,"src":"2942:23:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15483,"name":"bytes","nodeType":"ElementaryTypeName","src":"2942:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15497,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15492,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"3024:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3040:8:52","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":22325,"src":"3024:24:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.withdraw(uint256)"}},{"id":15494,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15473,"src":"3050:6:52","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":15490,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3009:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3013:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"3009:14:52","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":"3009:48:52","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":15471,"src":"2977:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2969:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15485,"name":"address","nodeType":"ElementaryTypeName","src":"2969:7:52","typeDescriptions":{}}},"id":15488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2969:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2987:12:52","memberName":"delegatecall","nodeType":"MemberAccess","src":"2969:30:52","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":15496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2969:96:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2927:138:52"},{"condition":{"id":15499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3077:8:52","subExpression":{"id":15498,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"3078:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15504,"nodeType":"IfStatement","src":"3073:45:52","trueBody":{"eventCall":{"arguments":[{"id":15501,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15484,"src":"3107:10:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15500,"name":"WithdrawFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15383,"src":"3092:14:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3092:26:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15503,"nodeType":"EmitStatement","src":"3087:31:52"}},{"expression":{"id":15505,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"3133:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15479,"id":15506,"nodeType":"Return","src":"3126:14:52"}]}}]},"documentation":{"id":15468,"nodeType":"StructuredDocumentation","src":"2198:534:52","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":15526,"implemented":true,"kind":"function","modifiers":[],"name":"dcWithdraw","nameLocation":"2744:10:52","nodeType":"FunctionDefinition","parameters":{"id":15476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15471,"mutability":"mutable","name":"strategy","nameLocation":"2771:8:52","nodeType":"VariableDeclaration","scope":15526,"src":"2755:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15470,"nodeType":"UserDefinedTypeName","pathNode":{"id":15469,"name":"IInvestStrategy","nameLocations":["2755:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2755:15:52"},"referencedDeclaration":22374,"src":"2755:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15473,"mutability":"mutable","name":"assets","nameLocation":"2789:6:52","nodeType":"VariableDeclaration","scope":15526,"src":"2781:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15475,"mutability":"mutable","name":"ignoreError","nameLocation":"2802:11:52","nodeType":"VariableDeclaration","scope":15526,"src":"2797:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15474,"name":"bool","nodeType":"ElementaryTypeName","src":"2797:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2754:60:52"},"returnParameters":{"id":15479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15526,"src":"2833:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15477,"name":"bool","nodeType":"ElementaryTypeName","src":"2833:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2832:6:52"},"scope":15775,"src":"2735:544:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15584,"nodeType":"Block","src":"3919:437:52","statements":[{"condition":{"id":15539,"name":"ignoreError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15534,"src":"3929:11:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15582,"nodeType":"Block","src":"4231:121:52","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15574,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"4293:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4309:7:52","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":22319,"src":"4293:23:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"}},{"id":15576,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15532,"src":"4318:6:52","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":15572,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4278:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4282:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"4278:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4278:47:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15569,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15530,"src":"4247:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4239:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15567,"name":"address","nodeType":"ElementaryTypeName","src":"4239:7:52","typeDescriptions":{}}},"id":15570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4239:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4257:20:52","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"4239:38:52","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":15578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4239:87:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15579,"nodeType":"ExpressionStatement","src":"4239:87:52"},{"expression":{"hexValue":"74727565","id":15580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4341:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15538,"id":15581,"nodeType":"Return","src":"4334:11:52"}]},"id":15583,"nodeType":"IfStatement","src":"3925:427:52","trueBody":{"id":15566,"nodeType":"Block","src":"3942:283:52","statements":[{"assignments":[15541,15543],"declarations":[{"constant":false,"id":15541,"mutability":"mutable","name":"success","nameLocation":"4013:7:52","nodeType":"VariableDeclaration","scope":15566,"src":"4008:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15540,"name":"bool","nodeType":"ElementaryTypeName","src":"4008:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15543,"mutability":"mutable","name":"returndata","nameLocation":"4035:10:52","nodeType":"VariableDeclaration","scope":15566,"src":"4022:23:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15542,"name":"bytes","nodeType":"ElementaryTypeName","src":"4022:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15556,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":15551,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"4104:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15552,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4120:7:52","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":22319,"src":"4104:23:52","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_uint256_$returns$__$","typeString":"function IInvestStrategy.deposit(uint256)"}},{"id":15553,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15532,"src":"4129:6:52","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":15549,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4089:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4093:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"4089:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4089:47:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15546,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15530,"src":"4057:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4049:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15544,"name":"address","nodeType":"ElementaryTypeName","src":"4049:7:52","typeDescriptions":{}}},"id":15547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4067:12:52","memberName":"delegatecall","nodeType":"MemberAccess","src":"4049:30:52","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":15555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:95:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4007:137:52"},{"condition":{"id":15558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4156:8:52","subExpression":{"id":15557,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15541,"src":"4157:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15563,"nodeType":"IfStatement","src":"4152:44:52","trueBody":{"eventCall":{"arguments":[{"id":15560,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15543,"src":"4185:10:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15559,"name":"DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15387,"src":"4171:13:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":15561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4171:25:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15562,"nodeType":"EmitStatement","src":"4166:30:52"}},{"expression":{"id":15564,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15541,"src":"4211:7:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15538,"id":15565,"nodeType":"Return","src":"4204:14:52"}]}}]},"documentation":{"id":15527,"nodeType":"StructuredDocumentation","src":"3283:530:52","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":15585,"implemented":true,"kind":"function","modifiers":[],"name":"dcDeposit","nameLocation":"3825:9:52","nodeType":"FunctionDefinition","parameters":{"id":15535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15530,"mutability":"mutable","name":"strategy","nameLocation":"3851:8:52","nodeType":"VariableDeclaration","scope":15585,"src":"3835:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15529,"nodeType":"UserDefinedTypeName","pathNode":{"id":15528,"name":"IInvestStrategy","nameLocations":["3835:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3835:15:52"},"referencedDeclaration":22374,"src":"3835:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15532,"mutability":"mutable","name":"assets","nameLocation":"3869:6:52","nodeType":"VariableDeclaration","scope":15585,"src":"3861:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15531,"name":"uint256","nodeType":"ElementaryTypeName","src":"3861:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15534,"mutability":"mutable","name":"ignoreError","nameLocation":"3882:11:52","nodeType":"VariableDeclaration","scope":15585,"src":"3877:16:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15533,"name":"bool","nodeType":"ElementaryTypeName","src":"3877:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3834:60:52"},"returnParameters":{"id":15538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15585,"src":"3913:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15536,"name":"bool","nodeType":"ElementaryTypeName","src":"3913:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3912:6:52"},"scope":15775,"src":"3816:540:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15613,"nodeType":"Block","src":"4858:134:52","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":15605,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"4931:15:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":15606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4947:17:52","memberName":"forwardEntryPoint","nodeType":"MemberAccess","referencedDeclaration":22335,"src":"4931:33:52","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":15607,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15591,"src":"4967:6:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":15608,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15593,"src":"4975:9:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":15609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4966:19:52","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":15603,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4916:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4920:10:52","memberName":"encodeCall","nodeType":"MemberAccess","src":"4916:14:52","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4916:70:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":15600,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15589,"src":"4885:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4877:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15598,"name":"address","nodeType":"ElementaryTypeName","src":"4877:7:52","typeDescriptions":{}}},"id":15601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:17:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:20:52","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":9269,"src":"4877:38:52","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":15611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4877:110:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":15597,"id":15612,"nodeType":"Return","src":"4864:123:52"}]},"documentation":{"id":15586,"nodeType":"StructuredDocumentation","src":"4360:380:52","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":15614,"implemented":true,"kind":"function","modifiers":[],"name":"dcForward","nameLocation":"4752:9:52","nodeType":"FunctionDefinition","parameters":{"id":15594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15589,"mutability":"mutable","name":"strategy","nameLocation":"4778:8:52","nodeType":"VariableDeclaration","scope":15614,"src":"4762:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15588,"nodeType":"UserDefinedTypeName","pathNode":{"id":15587,"name":"IInvestStrategy","nameLocations":["4762:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"4762:15:52"},"referencedDeclaration":22374,"src":"4762:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15591,"mutability":"mutable","name":"method","nameLocation":"4794:6:52","nodeType":"VariableDeclaration","scope":15614,"src":"4788:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15590,"name":"uint8","nodeType":"ElementaryTypeName","src":"4788:5:52","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":15593,"mutability":"mutable","name":"extraData","nameLocation":"4815:9:52","nodeType":"VariableDeclaration","scope":15614,"src":"4802:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4802:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4761:64:52"},"returnParameters":{"id":15597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15596,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15614,"src":"4844:12:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15595,"name":"bytes","nodeType":"ElementaryTypeName","src":"4844:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4843:14:52"},"scope":15775,"src":"4743:249:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15636,"nodeType":"Block","src":"5256:84:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":15627,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5289:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5281:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15625,"name":"address","nodeType":"ElementaryTypeName","src":"5281:7:52","typeDescriptions":{}}},"id":15628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5281:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15623,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15618,"src":"5266:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5275:5:52","memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":22343,"src":"5266:14:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":15629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:29:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15630,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"5299:5:52","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5266:38:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15635,"nodeType":"IfStatement","src":"5262:73:52","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15632,"name":"InvalidStrategyAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15393,"src":"5313:20:52","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:22:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15634,"nodeType":"RevertStatement","src":"5306:29:52"}}]},"documentation":{"id":15615,"nodeType":"StructuredDocumentation","src":"4996:182:52","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":15637,"implemented":true,"kind":"function","modifiers":[],"name":"checkAsset","nameLocation":"5190:10:52","nodeType":"FunctionDefinition","parameters":{"id":15621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15618,"mutability":"mutable","name":"strategy","nameLocation":"5217:8:52","nodeType":"VariableDeclaration","scope":15637,"src":"5201:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15617,"nodeType":"UserDefinedTypeName","pathNode":{"id":15616,"name":"IInvestStrategy","nameLocations":["5201:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"5201:15:52"},"referencedDeclaration":22374,"src":"5201:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15620,"mutability":"mutable","name":"asset","nameLocation":"5235:5:52","nodeType":"VariableDeclaration","scope":15637,"src":"5227:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15619,"name":"address","nodeType":"ElementaryTypeName","src":"5227:7:52","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5200:41:52"},"returnParameters":{"id":15622,"nodeType":"ParameterList","parameters":[],"src":"5256:0:52"},"scope":15775,"src":"5181:159:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15701,"nodeType":"Block","src":"6097:660:52","statements":[{"expression":{"arguments":[{"id":15655,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15644,"src":"6114:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":15658,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15649,"src":"6135:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":15657,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6127:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15656,"name":"address","nodeType":"ElementaryTypeName","src":"6127:7:52","typeDescriptions":{}}},"id":15659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6127:14:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15654,"name":"checkAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15637,"src":"6103:10:52","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$_t_address_$returns$__$","typeString":"function (contract IInvestStrategy,address) view"}},"id":15660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6103:39:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15661,"nodeType":"ExpressionStatement","src":"6103:39:52"},{"expression":{"arguments":[{"id":15663,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15641,"src":"6299:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"arguments":[{"arguments":[{"id":15668,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6344:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6336:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15666,"name":"address","nodeType":"ElementaryTypeName","src":"6336:7:52","typeDescriptions":{}}},"id":15669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15664,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15641,"src":"6312:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6324:11:52","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":22351,"src":"6312:23:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6312:38:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15671,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"6352:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15662,"name":"dcWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15526,"src":"6288:10:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":15672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6288:70:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15673,"nodeType":"ExpressionStatement","src":"6288:70:52"},{"expression":{"arguments":[{"id":15675,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15641,"src":"6377:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":15676,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"6390:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15674,"name":"dcDisconnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15467,"src":"6364:12:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,bool)"}},"id":15677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6364:32:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15678,"nodeType":"ExpressionStatement","src":"6364:32:52"},{"expression":{"arguments":[{"id":15680,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15644,"src":"6526:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":15681,"name":"newStrategyInitData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15646,"src":"6539:19:52","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15679,"name":"dcConnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15416,"src":"6516:9:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":15682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6516:43:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15683,"nodeType":"ExpressionStatement","src":"6516:43:52"},{"expression":{"arguments":[{"id":15685,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15644,"src":"6649:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"arguments":[{"arguments":[{"id":15690,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6686:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6678:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15688,"name":"address","nodeType":"ElementaryTypeName","src":"6678:7:52","typeDescriptions":{}}},"id":15691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6678:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15686,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15649,"src":"6662:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":15687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6668:9:52","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"6662:15:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6662:30:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":15693,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"6694:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":15684,"name":"dcDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15585,"src":"6639:9:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":15694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6639:61:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15695,"nodeType":"ExpressionStatement","src":"6639:61:52"},{"eventCall":{"arguments":[{"id":15697,"name":"oldStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15641,"src":"6727:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":15698,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15644,"src":"6740:11:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15696,"name":"StrategyChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15379,"src":"6711:15:52","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_contract$_IInvestStrategy_$22374_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy)"}},"id":15699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6711:41:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15700,"nodeType":"EmitStatement","src":"6706:46:52"}]},"documentation":{"id":15638,"nodeType":"StructuredDocumentation","src":"5344:567:52","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":15702,"implemented":true,"kind":"function","modifiers":[],"name":"strategyChange","nameLocation":"5923:14:52","nodeType":"FunctionDefinition","parameters":{"id":15652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15641,"mutability":"mutable","name":"oldStrategy","nameLocation":"5959:11:52","nodeType":"VariableDeclaration","scope":15702,"src":"5943:27:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15640,"nodeType":"UserDefinedTypeName","pathNode":{"id":15639,"name":"IInvestStrategy","nameLocations":["5943:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"5943:15:52"},"referencedDeclaration":22374,"src":"5943:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15644,"mutability":"mutable","name":"newStrategy","nameLocation":"5992:11:52","nodeType":"VariableDeclaration","scope":15702,"src":"5976:27:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15643,"nodeType":"UserDefinedTypeName","pathNode":{"id":15642,"name":"IInvestStrategy","nameLocations":["5976:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"5976:15:52"},"referencedDeclaration":22374,"src":"5976:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15646,"mutability":"mutable","name":"newStrategyInitData","nameLocation":"6022:19:52","nodeType":"VariableDeclaration","scope":15702,"src":"6009:32:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15645,"name":"bytes","nodeType":"ElementaryTypeName","src":"6009:5:52","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":15649,"mutability":"mutable","name":"asset","nameLocation":"6062:5:52","nodeType":"VariableDeclaration","scope":15702,"src":"6047:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":15648,"nodeType":"UserDefinedTypeName","pathNode":{"id":15647,"name":"IERC20Metadata","nameLocations":["6047:14:52"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"6047:14:52"},"referencedDeclaration":8682,"src":"6047:14:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":15651,"mutability":"mutable","name":"force","nameLocation":"6078:5:52","nodeType":"VariableDeclaration","scope":15702,"src":"6073:10:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15650,"name":"bool","nodeType":"ElementaryTypeName","src":"6073:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5937:150:52"},"returnParameters":{"id":15653,"nodeType":"ParameterList","parameters":[],"src":"6097:0:52"},"scope":15775,"src":"5914:843:52","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15719,"nodeType":"Block","src":"7286:83:52","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","id":15714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7320:32:52","typeDescriptions":{"typeIdentifier":"t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79","typeString":"literal_string \"co.ensuro.InvestStrategyClient\""},"value":"co.ensuro.InvestStrategyClient"},{"id":15715,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15706,"src":"7354:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79","typeString":"literal_string \"co.ensuro.InvestStrategyClient\""},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"expression":{"id":15712,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7309:3:52","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7313:6:52","memberName":"encode","nodeType":"MemberAccess","src":"7309:10:52","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7309:54:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15711,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7299:9:52","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7299:65:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":15710,"id":15718,"nodeType":"Return","src":"7292:72:52"}]},"documentation":{"id":15703,"nodeType":"StructuredDocumentation","src":"6761:439:52","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":15720,"implemented":true,"kind":"function","modifiers":[],"name":"makeStorageSlot","nameLocation":"7212:15:52","nodeType":"FunctionDefinition","parameters":{"id":15707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15706,"mutability":"mutable","name":"strategy","nameLocation":"7244:8:52","nodeType":"VariableDeclaration","scope":15720,"src":"7228:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15705,"nodeType":"UserDefinedTypeName","pathNode":{"id":15704,"name":"IInvestStrategy","nameLocations":["7228:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7228:15:52"},"referencedDeclaration":22374,"src":"7228:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7227:26:52"},"returnParameters":{"id":15710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15720,"src":"7277:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7277:7:52","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7276:9:52"},"scope":15775,"src":"7203:166:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15737,"nodeType":"Block","src":"7568:53:52","statements":[{"expression":{"arguments":[{"arguments":[{"id":15733,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7610:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7602:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15731,"name":"address","nodeType":"ElementaryTypeName","src":"7602:7:52","typeDescriptions":{}}},"id":15734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7602:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15729,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15724,"src":"7581:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7590:11:52","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":22351,"src":"7581:20:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7581:35:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15728,"id":15736,"nodeType":"Return","src":"7574:42:52"}]},"documentation":{"id":15721,"nodeType":"StructuredDocumentation","src":"7373:113:52","text":" @dev Returns the total assets in the strategy given.\n See {IInvestStrategy.totalAssets()}"},"id":15738,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"7498:11:52","nodeType":"FunctionDefinition","parameters":{"id":15725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15724,"mutability":"mutable","name":"strategy","nameLocation":"7526:8:52","nodeType":"VariableDeclaration","scope":15738,"src":"7510:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15723,"nodeType":"UserDefinedTypeName","pathNode":{"id":15722,"name":"IInvestStrategy","nameLocations":["7510:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7510:15:52"},"referencedDeclaration":22374,"src":"7510:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7509:26:52"},"returnParameters":{"id":15728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15738,"src":"7559:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15726,"name":"uint256","nodeType":"ElementaryTypeName","src":"7559:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7558:9:52"},"scope":15775,"src":"7489:132:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15755,"nodeType":"Block","src":"7849:52:52","statements":[{"expression":{"arguments":[{"arguments":[{"id":15751,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7890:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7882:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15749,"name":"address","nodeType":"ElementaryTypeName","src":"7882:7:52","typeDescriptions":{}}},"id":15752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15747,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15742,"src":"7862:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7871:10:52","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":22359,"src":"7862:19:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7862:34:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15746,"id":15754,"nodeType":"Return","src":"7855:41:52"}]},"documentation":{"id":15739,"nodeType":"StructuredDocumentation","src":"7625:143:52","text":" @dev Returns the maximum amount of assets that can be deposited in the strategy.\n      See {IInvestStrategy.maxDeposit}"},"id":15756,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"7780:10:52","nodeType":"FunctionDefinition","parameters":{"id":15743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15742,"mutability":"mutable","name":"strategy","nameLocation":"7807:8:52","nodeType":"VariableDeclaration","scope":15756,"src":"7791:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15741,"nodeType":"UserDefinedTypeName","pathNode":{"id":15740,"name":"IInvestStrategy","nameLocations":["7791:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7791:15:52"},"referencedDeclaration":22374,"src":"7791:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7790:26:52"},"returnParameters":{"id":15746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15756,"src":"7840:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15744,"name":"uint256","nodeType":"ElementaryTypeName","src":"7840:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7839:9:52"},"scope":15775,"src":"7771:130:52","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15773,"nodeType":"Block","src":"8133:53:52","statements":[{"expression":{"arguments":[{"arguments":[{"id":15769,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8175:4:52","typeDescriptions":{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_InvestStrategyClient_$15775","typeString":"library InvestStrategyClient"}],"id":15768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8167:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15767,"name":"address","nodeType":"ElementaryTypeName","src":"8167:7:52","typeDescriptions":{}}},"id":15770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8167:13:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15765,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15760,"src":"8146:8:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8155:11:52","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":22367,"src":"8146:20:52","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":15771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:35:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15764,"id":15772,"nodeType":"Return","src":"8139:42:52"}]},"documentation":{"id":15757,"nodeType":"StructuredDocumentation","src":"7905:146:52","text":" @dev Returns the maximum amount of assets that can be withdrawn from the strategy.\n      See {IInvestStrategy.maxWithdraw}"},"id":15774,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"8063:11:52","nodeType":"FunctionDefinition","parameters":{"id":15761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15760,"mutability":"mutable","name":"strategy","nameLocation":"8091:8:52","nodeType":"VariableDeclaration","scope":15774,"src":"8075:24:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15759,"nodeType":"UserDefinedTypeName","pathNode":{"id":15758,"name":"IInvestStrategy","nameLocations":["8075:15:52"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"8075:15:52"},"referencedDeclaration":22374,"src":"8075:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"8074:26:52"},"returnParameters":{"id":15764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15774,"src":"8124:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15762,"name":"uint256","nodeType":"ElementaryTypeName","src":"8124:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8123:9:52"},"scope":15775,"src":"8054:132:52","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":15776,"src":"581:7607:52","usedErrors":[15393],"usedEvents":[15379,15383,15387,15391]}],"src":"39:8150:52"},"id":52},"contracts/MSVBase.sol":{"ast":{"absolutePath":"contracts/MSVBase.sol","exportedSymbols":{"IERC20Metadata":[8682],"IExposeStorage":[22298],"IInvestStrategy":[22374],"InvestStrategyClient":[15775],"MSVBase":[17437],"Math":[11309],"StorageSlot":[9667]},"id":17438,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":15777,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:53"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":15779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":8683,"src":"64:97:53","symbolAliases":[{"foreign":{"id":15778,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"72:14:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":15781,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":9668,"src":"162:74:53","symbolAliases":[{"foreign":{"id":15780,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"170:11:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":15783,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":11310,"src":"237:65:53","symbolAliases":[{"foreign":{"id":15782,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"245:4:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":15785,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":22375,"src":"303:65:53","symbolAliases":[{"foreign":{"id":15784,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"311:15:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"./InvestStrategyClient.sol","id":15787,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":15776,"src":"369:64:53","symbolAliases":[{"foreign":{"id":15786,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"377:20:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"./interfaces/IExposeStorage.sol","id":15789,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17438,"sourceUnit":22299,"src":"434:63:53","symbolAliases":[{"foreign":{"id":15788,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"442:14:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":15791,"name":"IExposeStorage","nameLocations":["1673:14:53"],"nodeType":"IdentifierPath","referencedDeclaration":22298,"src":"1673:14:53"},"id":15792,"nodeType":"InheritanceSpecifier","src":"1673:14:53"}],"canonicalName":"MSVBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":15790,"nodeType":"StructuredDocumentation","src":"499:1144:53","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":17437,"linearizedBaseContracts":[17437,22298],"name":"MSVBase","nameLocation":"1662:7:53","nodeType":"ContractDefinition","nodes":[{"global":false,"id":15796,"libraryName":{"id":15793,"name":"InvestStrategyClient","nameLocations":["1698:20:53"],"nodeType":"IdentifierPath","referencedDeclaration":15775,"src":"1698:20:53"},"nodeType":"UsingForDirective","src":"1692:47:53","typeName":{"id":15795,"nodeType":"UserDefinedTypeName","pathNode":{"id":15794,"name":"IInvestStrategy","nameLocations":["1723:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1723:15:53"},"referencedDeclaration":22374,"src":"1723:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}},{"constant":true,"functionSelector":"767f06ae","id":15799,"mutability":"constant","name":"MAX_STRATEGIES","nameLocation":"1765:14:53","nodeType":"VariableDeclaration","scope":17437,"src":"1743:41:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15797,"name":"uint8","nodeType":"ElementaryTypeName","src":"1743:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":15798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"public"},{"constant":false,"id":15803,"mutability":"mutable","name":"_depositQueue","nameLocation":"1820:13:53","nodeType":"VariableDeclaration","scope":17437,"src":"1789:44:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32]"},"typeName":{"baseType":{"id":15800,"name":"uint8","nodeType":"ElementaryTypeName","src":"1789:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15802,"length":{"id":15801,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"1795:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1789:21:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"},{"constant":false,"id":15807,"mutability":"mutable","name":"_withdrawQueue","nameLocation":"1868:14:53","nodeType":"VariableDeclaration","scope":17437,"src":"1837:45:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32]"},"typeName":{"baseType":{"id":15804,"name":"uint8","nodeType":"ElementaryTypeName","src":"1837:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15806,"length":{"id":15805,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"1843:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1837:21:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"},{"constant":false,"id":15812,"mutability":"mutable","name":"_strategies","nameLocation":"1927:11:53","nodeType":"VariableDeclaration","scope":17437,"src":"1886:52:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32]"},"typeName":{"baseType":{"id":15809,"nodeType":"UserDefinedTypeName","pathNode":{"id":15808,"name":"IInvestStrategy","nameLocations":["1886:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1886:15:53"},"referencedDeclaration":22374,"src":"1886:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15811,"length":{"id":15810,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"1902:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"1886:31:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage_ptr","typeString":"contract IInvestStrategy[32]"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":15820,"name":"StrategyChanged","nameLocation":"2034:15:53","nodeType":"EventDefinition","parameters":{"id":15819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15815,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"2066:11:53","nodeType":"VariableDeclaration","scope":15820,"src":"2050:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15814,"nodeType":"UserDefinedTypeName","pathNode":{"id":15813,"name":"IInvestStrategy","nameLocations":["2050:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2050:15:53"},"referencedDeclaration":22374,"src":"2050:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15818,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"2095:11:53","nodeType":"VariableDeclaration","scope":15820,"src":"2079:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15817,"nodeType":"UserDefinedTypeName","pathNode":{"id":15816,"name":"IInvestStrategy","nameLocations":["2079:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2079:15:53"},"referencedDeclaration":22374,"src":"2079:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2049:58:53"},"src":"2028:80:53"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":15824,"name":"WithdrawFailed","nameLocation":"2117:14:53","nodeType":"EventDefinition","parameters":{"id":15823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15822,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2138:6:53","nodeType":"VariableDeclaration","scope":15824,"src":"2132:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15821,"name":"bytes","nodeType":"ElementaryTypeName","src":"2132:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2131:14:53"},"src":"2111:35:53"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":15828,"name":"DepositFailed","nameLocation":"2155:13:53","nodeType":"EventDefinition","parameters":{"id":15827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15826,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2175:6:53","nodeType":"VariableDeclaration","scope":15828,"src":"2169:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15825,"name":"bytes","nodeType":"ElementaryTypeName","src":"2169:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2168:14:53"},"src":"2149:34:53"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":15832,"name":"DisconnectFailed","nameLocation":"2192:16:53","nodeType":"EventDefinition","parameters":{"id":15831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15830,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2215:6:53","nodeType":"VariableDeclaration","scope":15832,"src":"2209:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15829,"name":"bytes","nodeType":"ElementaryTypeName","src":"2209:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2208:14:53"},"src":"2186:37:53"},{"anonymous":false,"eventSelector":"4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f58","id":15839,"name":"StrategyAdded","nameLocation":"2232:13:53","nodeType":"EventDefinition","parameters":{"id":15838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15835,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"2270:8:53","nodeType":"VariableDeclaration","scope":15839,"src":"2246:32:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15834,"nodeType":"UserDefinedTypeName","pathNode":{"id":15833,"name":"IInvestStrategy","nameLocations":["2246:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2246:15:53"},"referencedDeclaration":22374,"src":"2246:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15837,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2286:5:53","nodeType":"VariableDeclaration","scope":15839,"src":"2280:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15836,"name":"uint8","nodeType":"ElementaryTypeName","src":"2280:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2245:47:53"},"src":"2226:67:53"},{"anonymous":false,"eventSelector":"978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b8","id":15846,"name":"StrategyRemoved","nameLocation":"2302:15:53","nodeType":"EventDefinition","parameters":{"id":15845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15842,"indexed":true,"mutability":"mutable","name":"strategy","nameLocation":"2342:8:53","nodeType":"VariableDeclaration","scope":15846,"src":"2318:32:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15841,"nodeType":"UserDefinedTypeName","pathNode":{"id":15840,"name":"IInvestStrategy","nameLocations":["2318:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2318:15:53"},"referencedDeclaration":22374,"src":"2318:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15844,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"2358:5:53","nodeType":"VariableDeclaration","scope":15846,"src":"2352:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15843,"name":"uint8","nodeType":"ElementaryTypeName","src":"2352:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2317:47:53"},"src":"2296:69:53"},{"anonymous":false,"eventSelector":"193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec","id":15851,"name":"DepositQueueChanged","nameLocation":"2374:19:53","nodeType":"EventDefinition","parameters":{"id":15850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15849,"indexed":false,"mutability":"mutable","name":"queue","nameLocation":"2402:5:53","nodeType":"VariableDeclaration","scope":15851,"src":"2394:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15847,"name":"uint8","nodeType":"ElementaryTypeName","src":"2394:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15848,"nodeType":"ArrayTypeName","src":"2394:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2393:15:53"},"src":"2368:41:53"},{"anonymous":false,"eventSelector":"3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c","id":15856,"name":"WithdrawQueueChanged","nameLocation":"2418:20:53","nodeType":"EventDefinition","parameters":{"id":15855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15854,"indexed":false,"mutability":"mutable","name":"queue","nameLocation":"2447:5:53","nodeType":"VariableDeclaration","scope":15856,"src":"2439:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15852,"name":"uint8","nodeType":"ElementaryTypeName","src":"2439:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15853,"nodeType":"ArrayTypeName","src":"2439:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2438:15:53"},"src":"2412:42:53"},{"anonymous":false,"eventSelector":"b0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b","id":15866,"name":"Rebalance","nameLocation":"2463:9:53","nodeType":"EventDefinition","parameters":{"id":15865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15859,"indexed":true,"mutability":"mutable","name":"strategyFrom","nameLocation":"2497:12:53","nodeType":"VariableDeclaration","scope":15866,"src":"2473:36:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15858,"nodeType":"UserDefinedTypeName","pathNode":{"id":15857,"name":"IInvestStrategy","nameLocations":["2473:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2473:15:53"},"referencedDeclaration":22374,"src":"2473:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15862,"indexed":true,"mutability":"mutable","name":"strategyTo","nameLocation":"2535:10:53","nodeType":"VariableDeclaration","scope":15866,"src":"2511:34:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15861,"nodeType":"UserDefinedTypeName","pathNode":{"id":15860,"name":"IInvestStrategy","nameLocations":["2511:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2511:15:53"},"referencedDeclaration":22374,"src":"2511:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":15864,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2555:6:53","nodeType":"VariableDeclaration","scope":15866,"src":"2547:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15863,"name":"uint256","nodeType":"ElementaryTypeName","src":"2547:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2472:90:53"},"src":"2457:106:53"},{"errorSelector":"ff52e055","id":15868,"name":"InvalidStrategiesLength","nameLocation":"2573:23:53","nodeType":"ErrorDefinition","parameters":{"id":15867,"nodeType":"ParameterList","parameters":[],"src":"2596:2:53"},"src":"2567:32:53"},{"errorSelector":"4e236e9a","id":15870,"name":"InvalidStrategy","nameLocation":"2608:15:53","nodeType":"ErrorDefinition","parameters":{"id":15869,"nodeType":"ParameterList","parameters":[],"src":"2623:2:53"},"src":"2602:24:53"},{"errorSelector":"b5a9314f","id":15875,"name":"DuplicatedStrategy","nameLocation":"2635:18:53","nodeType":"ErrorDefinition","parameters":{"id":15874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15873,"mutability":"mutable","name":"strategy","nameLocation":"2670:8:53","nodeType":"VariableDeclaration","scope":15875,"src":"2654:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":15872,"nodeType":"UserDefinedTypeName","pathNode":{"id":15871,"name":"IInvestStrategy","nameLocations":["2654:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2654:15:53"},"referencedDeclaration":22374,"src":"2654:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2653:26:53"},"src":"2629:51:53"},{"errorSelector":"60d99aba","id":15879,"name":"InvalidStrategyInDepositQueue","nameLocation":"2689:29:53","nodeType":"ErrorDefinition","parameters":{"id":15878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15877,"mutability":"mutable","name":"index","nameLocation":"2725:5:53","nodeType":"VariableDeclaration","scope":15879,"src":"2719:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15876,"name":"uint8","nodeType":"ElementaryTypeName","src":"2719:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2718:13:53"},"src":"2683:49:53"},{"errorSelector":"4eed2482","id":15883,"name":"InvalidStrategyInWithdrawQueue","nameLocation":"2741:30:53","nodeType":"ErrorDefinition","parameters":{"id":15882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15881,"mutability":"mutable","name":"index","nameLocation":"2778:5:53","nodeType":"VariableDeclaration","scope":15883,"src":"2772:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15880,"name":"uint8","nodeType":"ElementaryTypeName","src":"2772:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2771:13:53"},"src":"2735:50:53"},{"errorSelector":"d4771574","id":15885,"name":"WithdrawError","nameLocation":"2794:13:53","nodeType":"ErrorDefinition","parameters":{"id":15884,"nodeType":"ParameterList","parameters":[],"src":"2807:2:53"},"src":"2788:22:53"},{"errorSelector":"285a546d","id":15887,"name":"DepositError","nameLocation":"2819:12:53","nodeType":"ErrorDefinition","parameters":{"id":15886,"nodeType":"ParameterList","parameters":[],"src":"2831:2:53"},"src":"2813:21:53"},{"errorSelector":"426213ba","id":15889,"name":"OnlyStrategyStorageExposed","nameLocation":"2843:26:53","nodeType":"ErrorDefinition","parameters":{"id":15888,"nodeType":"ParameterList","parameters":[],"src":"2869:2:53"},"src":"2837:35:53"},{"errorSelector":"43c2dfef","id":15891,"name":"CannotRemoveStrategyWithAssets","nameLocation":"2881:30:53","nodeType":"ErrorDefinition","parameters":{"id":15890,"nodeType":"ParameterList","parameters":[],"src":"2911:2:53"},"src":"2875:39:53"},{"errorSelector":"a29b1f11","id":15893,"name":"InvalidQueue","nameLocation":"2923:12:53","nodeType":"ErrorDefinition","parameters":{"id":15892,"nodeType":"ParameterList","parameters":[],"src":"2935:2:53"},"src":"2917:21:53"},{"errorSelector":"6712b27b","id":15895,"name":"InvalidQueueLength","nameLocation":"2947:18:53","nodeType":"ErrorDefinition","parameters":{"id":15894,"nodeType":"ParameterList","parameters":[],"src":"2965:2:53"},"src":"2941:27:53"},{"errorSelector":"c41fdbb9","id":15899,"name":"InvalidQueueIndexDuplicated","nameLocation":"2977:27:53","nodeType":"ErrorDefinition","parameters":{"id":15898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15897,"mutability":"mutable","name":"index","nameLocation":"3011:5:53","nodeType":"VariableDeclaration","scope":15899,"src":"3005:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15896,"name":"uint8","nodeType":"ElementaryTypeName","src":"3005:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3004:13:53"},"src":"2971:47:53"},{"errorSelector":"a147c6ea","id":15903,"name":"RebalanceAmountExceedsMaxDeposit","nameLocation":"3027:32:53","nodeType":"ErrorDefinition","parameters":{"id":15902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15901,"mutability":"mutable","name":"max","nameLocation":"3068:3:53","nodeType":"VariableDeclaration","scope":15903,"src":"3060:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3060:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3059:13:53"},"src":"3021:52:53"},{"errorSelector":"3ce011d5","id":15907,"name":"RebalanceAmountExceedsMaxWithdraw","nameLocation":"3082:33:53","nodeType":"ErrorDefinition","parameters":{"id":15906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15905,"mutability":"mutable","name":"max","nameLocation":"3124:3:53","nodeType":"VariableDeclaration","scope":15907,"src":"3116:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15904,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:13:53"},"src":"3076:53:53"},{"id":15912,"implemented":false,"kind":"function","modifiers":[],"name":"_asset","nameLocation":"3191:6:53","nodeType":"FunctionDefinition","parameters":{"id":15908,"nodeType":"ParameterList","parameters":[],"src":"3197:2:53"},"returnParameters":{"id":15911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15912,"src":"3231:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15909,"name":"address","nodeType":"ElementaryTypeName","src":"3231:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3230:9:53"},"scope":17437,"src":"3182:58:53","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":16142,"nodeType":"Block","src":"3491:1671:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15928,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3508:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3520:6:53","memberName":"length","nodeType":"MemberAccess","src":"3508:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3530:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3508:23:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15932,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3541:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3553:6:53","memberName":"length","nodeType":"MemberAccess","src":"3541:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":15934,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"3562:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3541:35:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:68:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15937,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3586:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3598:6:53","memberName":"length","nodeType":"MemberAccess","src":"3586:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15939,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15919,"src":"3608:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":15940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3626:6:53","memberName":"length","nodeType":"MemberAccess","src":"3608:24:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3586:46:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:124:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15943,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3642:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3654:6:53","memberName":"length","nodeType":"MemberAccess","src":"3642:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15945,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"3664:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3678:6:53","memberName":"length","nodeType":"MemberAccess","src":"3664:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3642:42:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:176:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15949,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3694:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3706:6:53","memberName":"length","nodeType":"MemberAccess","src":"3694:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15951,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"3716:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":15952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3731:6:53","memberName":"length","nodeType":"MemberAccess","src":"3716:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3694:43:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3508:229:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15958,"nodeType":"IfStatement","src":"3497:279:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15955,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15868,"src":"3751:23:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3751:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15957,"nodeType":"RevertStatement","src":"3744:32:53"}},{"assignments":[15964],"declarations":[{"constant":false,"id":15964,"mutability":"mutable","name":"presentInDeposit","nameLocation":"3810:16:53","nodeType":"VariableDeclaration","scope":16142,"src":"3782:44:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":15962,"name":"bool","nodeType":"ElementaryTypeName","src":"3782:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15963,"length":{"id":15961,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"3787:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"3782:20:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":15965,"nodeType":"VariableDeclarationStatement","src":"3782:44:53"},{"assignments":[15971],"declarations":[{"constant":false,"id":15971,"mutability":"mutable","name":"presentInWithdraw","nameLocation":"3860:17:53","nodeType":"VariableDeclaration","scope":16142,"src":"3832:45:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":15969,"name":"bool","nodeType":"ElementaryTypeName","src":"3832:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15970,"length":{"id":15968,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"3837:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"3832:20:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":15972,"nodeType":"VariableDeclarationStatement","src":"3832:45:53"},{"body":{"id":16132,"nodeType":"Block","src":"3928:1138:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":15985,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3948:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15987,"indexExpression":{"id":15986,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"3960:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3948:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":15984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3940:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15983,"name":"address","nodeType":"ElementaryTypeName","src":"3940:7:53","typeDescriptions":{}}},"id":15988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3940:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3975:1:53","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":15990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3967:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15989,"name":"address","nodeType":"ElementaryTypeName","src":"3967:7:53","typeDescriptions":{}}},"id":15992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3967:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3940:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15997,"nodeType":"IfStatement","src":"3936:67:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":15994,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"3986:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":15995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3986:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":15996,"nodeType":"RevertStatement","src":"3979:24:53"}},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16002,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15912,"src":"4037:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:8:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":15998,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4011:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16000,"indexExpression":{"id":15999,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4023:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4011:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4026:10:53","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15637,"src":"4011:25:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":16004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4011:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16005,"nodeType":"ExpressionStatement","src":"4011:35:53"},{"body":{"id":16029,"nodeType":"Block","src":"4127:98:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16015,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4141:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16017,"indexExpression":{"id":16016,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4153:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4141:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":16018,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4159:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16020,"indexExpression":{"id":16019,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16007,"src":"4171:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4159:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"4141:32:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16028,"nodeType":"IfStatement","src":"4137:79:53","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":16023,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4201:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16025,"indexExpression":{"id":16024,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4213:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4201:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16022,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15875,"src":"4182:18:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":16026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4182:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16027,"nodeType":"RevertStatement","src":"4175:41:53"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16009,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16007,"src":"4115:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16010,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4119:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4115:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16030,"initializationExpression":{"assignments":[16007],"declarations":[{"constant":false,"id":16007,"mutability":"mutable","name":"j","nameLocation":"4112:1:53","nodeType":"VariableDeclaration","scope":16030,"src":"4104:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4104:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16008,"nodeType":"VariableDeclarationStatement","src":"4104:9:53"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":16013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4122:3:53","subExpression":{"id":16012,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16007,"src":"4124:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16014,"nodeType":"ExpressionStatement","src":"4122:3:53"},"nodeType":"ForStatement","src":"4099:126:53"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16031,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"4323:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16033,"indexExpression":{"id":16032,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4337:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4323:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":16034,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4343:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4355:6:53","memberName":"length","nodeType":"MemberAccess","src":"4343:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4323:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"id":16037,"name":"presentInDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15964,"src":"4365:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":16041,"indexExpression":{"baseExpression":{"id":16038,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"4382:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16040,"indexExpression":{"id":16039,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4396:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4382:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4365:34:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4323:76:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16049,"nodeType":"IfStatement","src":"4319:144:53","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":16044,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"4446:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16046,"indexExpression":{"id":16045,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4460:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4446:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16043,"name":"InvalidStrategyInDepositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15879,"src":"4416:29:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":16047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4416:47:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16048,"nodeType":"RevertStatement","src":"4409:54:53"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16050,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4475:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16052,"indexExpression":{"id":16051,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4490:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4475:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":16053,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4496:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4508:6:53","memberName":"length","nodeType":"MemberAccess","src":"4496:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4475:39:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"baseExpression":{"id":16056,"name":"presentInWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15971,"src":"4518:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":16060,"indexExpression":{"baseExpression":{"id":16057,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4536:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16059,"indexExpression":{"id":16058,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4551:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4536:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4518:36:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4475:79:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16068,"nodeType":"IfStatement","src":"4471:149:53","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":16063,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4602:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16065,"indexExpression":{"id":16064,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4617:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4602:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16062,"name":"InvalidStrategyInWithdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15883,"src":"4571:30:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":16066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4571:49:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16067,"nodeType":"RevertStatement","src":"4564:56:53"}},{"expression":{"id":16075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16069,"name":"presentInDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15964,"src":"4628:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":16073,"indexExpression":{"baseExpression":{"id":16070,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"4645:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16072,"indexExpression":{"id":16071,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4659:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4645:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4628:34:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4665:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4628:41:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16076,"nodeType":"ExpressionStatement","src":"4628:41:53"},{"expression":{"id":16083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16077,"name":"presentInWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15971,"src":"4677:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":16081,"indexExpression":{"baseExpression":{"id":16078,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4695:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16080,"indexExpression":{"id":16079,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4710:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4695:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4677:36:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4716:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4677:43:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16084,"nodeType":"ExpressionStatement","src":"4677:43:53"},{"expression":{"id":16091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16085,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"4728:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16087,"indexExpression":{"id":16086,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4740:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4728:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":16088,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4745:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16090,"indexExpression":{"id":16089,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4757:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4745:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"4728:31:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16092,"nodeType":"ExpressionStatement","src":"4728:31:53"},{"expression":{"id":16101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16093,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"4767:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16095,"indexExpression":{"id":16094,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4781:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4767:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16096,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"4786:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16098,"indexExpression":{"id":16097,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4800:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4786:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4805:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4786:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4767:39:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16102,"nodeType":"ExpressionStatement","src":"4767:39:53"},{"expression":{"id":16111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16103,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"4863:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16105,"indexExpression":{"id":16104,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4878:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4863:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16106,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"4883:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":16108,"indexExpression":{"id":16107,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4898:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4883:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4903:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4883:21:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4863:41:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16112,"nodeType":"ExpressionStatement","src":"4863:41:53"},{"expression":{"arguments":[{"baseExpression":{"id":16117,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15919,"src":"4986:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":16119,"indexExpression":{"id":16118,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"5004:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4986:20:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"baseExpression":{"id":16113,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"4961:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16115,"indexExpression":{"id":16114,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"4973:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4961:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4976:9:53","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15416,"src":"4961:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":16120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4961:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16121,"nodeType":"ExpressionStatement","src":"4961:46:53"},{"eventCall":{"arguments":[{"baseExpression":{"id":16123,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"5034:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":16125,"indexExpression":{"id":16124,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"5046:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5034:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":16128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"5056:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5050:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16126,"name":"uint8","nodeType":"ElementaryTypeName","src":"5050:5:53","typeDescriptions":{}}},"id":16129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:8:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16122,"name":"StrategyAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15839,"src":"5020:13:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":16130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5020:39:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16131,"nodeType":"EmitStatement","src":"5015:44:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"3899:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15977,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15916,"src":"3903:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},"id":15978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3915:6:53","memberName":"length","nodeType":"MemberAccess","src":"3903:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3899:22:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16133,"initializationExpression":{"assignments":[15974],"declarations":[{"constant":false,"id":15974,"mutability":"mutable","name":"i","nameLocation":"3896:1:53","nodeType":"VariableDeclaration","scope":16133,"src":"3888:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15973,"name":"uint256","nodeType":"ElementaryTypeName","src":"3888:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15975,"nodeType":"VariableDeclarationStatement","src":"3888:9:53"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":15981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3923:3:53","subExpression":{"id":15980,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15974,"src":"3925:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15982,"nodeType":"ExpressionStatement","src":"3923:3:53"},"nodeType":"ForStatement","src":"3883:1183:53"},{"eventCall":{"arguments":[{"id":16135,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"5096:13:53","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":16134,"name":"DepositQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15851,"src":"5076:19:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":16136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5076:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16137,"nodeType":"EmitStatement","src":"5071:39:53"},{"eventCall":{"arguments":[{"id":16139,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15925,"src":"5142:14:53","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":16138,"name":"WithdrawQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15856,"src":"5121:20:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":16140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16141,"nodeType":"EmitStatement","src":"5116:41:53"}]},"id":16143,"implemented":true,"kind":"function","modifiers":[],"name":"__MSVBase_init_unchained","nameLocation":"3304:24:53","nodeType":"FunctionDefinition","parameters":{"id":15926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15916,"mutability":"mutable","name":"strategies_","nameLocation":"3359:11:53","nodeType":"VariableDeclaration","scope":16143,"src":"3334:36:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":15914,"nodeType":"UserDefinedTypeName","pathNode":{"id":15913,"name":"IInvestStrategy","nameLocations":["3334:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3334:15:53"},"referencedDeclaration":22374,"src":"3334:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":15915,"nodeType":"ArrayTypeName","src":"3334:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":15919,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"3391:17:53","nodeType":"VariableDeclaration","scope":16143,"src":"3376:32:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":15917,"name":"bytes","nodeType":"ElementaryTypeName","src":"3376:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":15918,"nodeType":"ArrayTypeName","src":"3376:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":15922,"mutability":"mutable","name":"depositQueue_","nameLocation":"3429:13:53","nodeType":"VariableDeclaration","scope":16143,"src":"3414:28:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15920,"name":"uint8","nodeType":"ElementaryTypeName","src":"3414:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15921,"nodeType":"ArrayTypeName","src":"3414:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":15925,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"3463:14:53","nodeType":"VariableDeclaration","scope":16143,"src":"3448:29:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":15923,"name":"uint8","nodeType":"ElementaryTypeName","src":"3448:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":15924,"nodeType":"ArrayTypeName","src":"3448:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"3328:153:53"},"returnParameters":{"id":15927,"nodeType":"ParameterList","parameters":[],"src":"3491:0:53"},"scope":17437,"src":"3295:1867:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16201,"nodeType":"Block","src":"5243:263:53","statements":[{"assignments":[16151],"declarations":[{"constant":false,"id":16151,"mutability":"mutable","name":"addSuccess","nameLocation":"5254:10:53","nodeType":"VariableDeclaration","scope":16201,"src":"5249:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16150,"name":"bool","nodeType":"ElementaryTypeName","src":"5249:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16152,"nodeType":"VariableDeclarationStatement","src":"5249:15:53"},{"body":{"id":16197,"nodeType":"Block","src":"5352:134:53","statements":[{"expression":{"id":16186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16174,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16151,"src":"5361:10:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16175,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16148,"src":"5373:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16176,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5360:17:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16179,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16148,"src":"5392:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16180,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"5397:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16182,"indexExpression":{"id":16181,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16154,"src":"5409:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5397:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5412:11:53","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"5397:26:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5397:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16177,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"5380:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":16178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5385:6:53","memberName":"tryAdd","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"5380:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":16185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5380:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"src":"5360:66:53","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16187,"nodeType":"ExpressionStatement","src":"5360:66:53"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5438:11:53","subExpression":{"id":16188,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16151,"src":"5439:10:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16190,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16148,"src":"5453:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":16191,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16145,"src":"5460:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5453:12:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5438:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16196,"nodeType":"IfStatement","src":"5434:45:53","trueBody":{"expression":{"id":16194,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16145,"src":"5474:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16149,"id":16195,"nodeType":"Return","src":"5467:12:53"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16158,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"5294:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16160,"indexExpression":{"id":16159,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16154,"src":"5306:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5294:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5286:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16156,"name":"address","nodeType":"ElementaryTypeName","src":"5286:7:53","typeDescriptions":{}}},"id":16161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5286:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5321:1:53","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":16163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5313:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16162,"name":"address","nodeType":"ElementaryTypeName","src":"5313:7:53","typeDescriptions":{}}},"id":16165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5313:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5286:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16167,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16154,"src":"5327:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16168,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"5331:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5327:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5286:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16198,"initializationExpression":{"assignments":[16154],"declarations":[{"constant":false,"id":16154,"mutability":"mutable","name":"i","nameLocation":"5283:1:53","nodeType":"VariableDeclaration","scope":16198,"src":"5275:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16153,"name":"uint256","nodeType":"ElementaryTypeName","src":"5275:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16155,"nodeType":"VariableDeclarationStatement","src":"5275:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5347:3:53","subExpression":{"id":16171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16154,"src":"5349:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16173,"nodeType":"ExpressionStatement","src":"5347:3:53"},"nodeType":"ForStatement","src":"5270:216:53"},{"expression":{"id":16199,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16148,"src":"5498:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16149,"id":16200,"nodeType":"Return","src":"5491:10:53"}]},"id":16202,"implemented":true,"kind":"function","modifiers":[],"name":"_maxWithdrawable","nameLocation":"5175:16:53","nodeType":"FunctionDefinition","parameters":{"id":16146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16145,"mutability":"mutable","name":"limit","nameLocation":"5200:5:53","nodeType":"VariableDeclaration","scope":16202,"src":"5192:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16144,"name":"uint256","nodeType":"ElementaryTypeName","src":"5192:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5191:15:53"},"returnParameters":{"id":16149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16148,"mutability":"mutable","name":"ret","nameLocation":"5238:3:53","nodeType":"VariableDeclaration","scope":16202,"src":"5230:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16147,"name":"uint256","nodeType":"ElementaryTypeName","src":"5230:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5229:13:53"},"scope":17437,"src":"5166:340:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16259,"nodeType":"Block","src":"5741:258:53","statements":[{"assignments":[16209],"declarations":[{"constant":false,"id":16209,"mutability":"mutable","name":"addSuccess","nameLocation":"5752:10:53","nodeType":"VariableDeclaration","scope":16259,"src":"5747:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16208,"name":"bool","nodeType":"ElementaryTypeName","src":"5747:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16210,"nodeType":"VariableDeclarationStatement","src":"5747:15:53"},{"body":{"id":16255,"nodeType":"Block","src":"5850:129:53","statements":[{"expression":{"id":16244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":16232,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16209,"src":"5859:10:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16233,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16206,"src":"5871:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":16234,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5858:17:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16237,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16206,"src":"5890:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16238,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"5895:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16240,"indexExpression":{"id":16239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16212,"src":"5907:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5895:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5910:10:53","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"5895:25:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5895:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16235,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"5878:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":16236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5883:6:53","memberName":"tryAdd","nodeType":"MemberAccess","referencedDeclaration":9747,"src":"5878:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":16243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5878:45:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"src":"5858:65:53","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16245,"nodeType":"ExpressionStatement","src":"5858:65:53"},{"condition":{"id":16247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5935:11:53","subExpression":{"id":16246,"name":"addSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16209,"src":"5936:10:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16254,"nodeType":"IfStatement","src":"5931:41:53","trueBody":{"expression":{"expression":{"arguments":[{"id":16250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5960:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":16249,"name":"uint256","nodeType":"ElementaryTypeName","src":"5960:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":16248,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5955:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":16252,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5969:3:53","memberName":"max","nodeType":"MemberAccess","src":"5955:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16207,"id":16253,"nodeType":"Return","src":"5948:24:53"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16216,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"5792:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16218,"indexExpression":{"id":16217,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16212,"src":"5804:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5792:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16214,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:53","typeDescriptions":{}}},"id":16219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819:1:53","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":16221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5811:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16220,"name":"address","nodeType":"ElementaryTypeName","src":"5811:7:53","typeDescriptions":{}}},"id":16223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5811:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5784:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16225,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16212,"src":"5825:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16226,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"5829:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5825:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5784:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16256,"initializationExpression":{"assignments":[16212],"declarations":[{"constant":false,"id":16212,"mutability":"mutable","name":"i","nameLocation":"5781:1:53","nodeType":"VariableDeclaration","scope":16256,"src":"5773:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16211,"name":"uint256","nodeType":"ElementaryTypeName","src":"5773:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16213,"nodeType":"VariableDeclarationStatement","src":"5773:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"5845:3:53","subExpression":{"id":16229,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16212,"src":"5847:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16231,"nodeType":"ExpressionStatement","src":"5845:3:53"},"nodeType":"ForStatement","src":"5768:211:53"},{"expression":{"id":16257,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16206,"src":"5991:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16207,"id":16258,"nodeType":"Return","src":"5984:10:53"}]},"documentation":{"id":16203,"nodeType":"StructuredDocumentation","src":"5510:165:53","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":16260,"implemented":true,"kind":"function","modifiers":[],"name":"_maxDepositable","nameLocation":"5687:15:53","nodeType":"FunctionDefinition","parameters":{"id":16204,"nodeType":"ParameterList","parameters":[],"src":"5702:2:53"},"returnParameters":{"id":16207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16206,"mutability":"mutable","name":"ret","nameLocation":"5736:3:53","nodeType":"VariableDeclaration","scope":16260,"src":"5728:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16205,"name":"uint256","nodeType":"ElementaryTypeName","src":"5728:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5727:13:53"},"scope":17437,"src":"5678:321:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16297,"nodeType":"Block","src":"6171:145:53","statements":[{"body":{"id":16295,"nodeType":"Block","src":"6259:53:53","statements":[{"expression":{"id":16293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16287,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16264,"src":"6267:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16288,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"6277:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16290,"indexExpression":{"id":16289,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16267,"src":"6289:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6277:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6292:11:53","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"6277:26:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6277:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6267:38:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16294,"nodeType":"ExpressionStatement","src":"6267:38:53"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16271,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"6201:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16273,"indexExpression":{"id":16272,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16267,"src":"6213:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6201:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16270,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6193:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16269,"name":"address","nodeType":"ElementaryTypeName","src":"6193:7:53","typeDescriptions":{}}},"id":16274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6193:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6228:1:53","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":16276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6220:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16275,"name":"address","nodeType":"ElementaryTypeName","src":"6220:7:53","typeDescriptions":{}}},"id":16278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6220:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6193:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16280,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16267,"src":"6234:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16281,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"6238:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6234:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6193:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16296,"initializationExpression":{"assignments":[16267],"declarations":[{"constant":false,"id":16267,"mutability":"mutable","name":"i","nameLocation":"6190:1:53","nodeType":"VariableDeclaration","scope":16296,"src":"6182:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16266,"name":"uint256","nodeType":"ElementaryTypeName","src":"6182:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16268,"nodeType":"VariableDeclarationStatement","src":"6182:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6254:3:53","subExpression":{"id":16284,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16267,"src":"6256:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16286,"nodeType":"ExpressionStatement","src":"6254:3:53"},"nodeType":"ForStatement","src":"6177:135:53"}]},"documentation":{"id":16261,"nodeType":"StructuredDocumentation","src":"6003:102:53","text":" @dev Sum up the total assets of each strategy in the vault and returns the total value."},"id":16298,"implemented":true,"kind":"function","modifiers":[],"name":"_totalAssets","nameLocation":"6117:12:53","nodeType":"FunctionDefinition","parameters":{"id":16262,"nodeType":"ParameterList","parameters":[],"src":"6129:2:53"},"returnParameters":{"id":16265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16264,"mutability":"mutable","name":"assets","nameLocation":"6163:6:53","nodeType":"VariableDeclaration","scope":16298,"src":"6155:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16263,"name":"uint256","nodeType":"ElementaryTypeName","src":"6155:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6154:16:53"},"scope":17437,"src":"6108:208:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":16373,"nodeType":"Block","src":"6687:481:53","statements":[{"assignments":[16305],"declarations":[{"constant":false,"id":16305,"mutability":"mutable","name":"left","nameLocation":"6701:4:53","nodeType":"VariableDeclaration","scope":16373,"src":"6693:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16304,"name":"uint256","nodeType":"ElementaryTypeName","src":"6693:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16307,"initialValue":{"id":16306,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16301,"src":"6708:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6693:21:53"},{"body":{"id":16364,"nodeType":"Block","src":"6800:252:53","statements":[{"assignments":[16329],"declarations":[{"constant":false,"id":16329,"mutability":"mutable","name":"strategy","nameLocation":"6824:8:53","nodeType":"VariableDeclaration","scope":16364,"src":"6808:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16328,"nodeType":"UserDefinedTypeName","pathNode":{"id":16327,"name":"IInvestStrategy","nameLocations":["6808:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"6808:15:53"},"referencedDeclaration":22374,"src":"6808:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16337,"initialValue":{"baseExpression":{"id":16330,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"6835:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16336,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16331,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"6847:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16333,"indexExpression":{"id":16332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16309,"src":"6862:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6847:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6867:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6847:21:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6835:34:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"6808:61:53"},{"assignments":[16339],"declarations":[{"constant":false,"id":16339,"mutability":"mutable","name":"toWithdraw","nameLocation":"6885:10:53","nodeType":"VariableDeclaration","scope":16364,"src":"6877:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16338,"name":"uint256","nodeType":"ElementaryTypeName","src":"6877:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16347,"initialValue":{"arguments":[{"id":16342,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16305,"src":"6907:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16343,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16329,"src":"6913:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6922:11:53","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"6913:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6913:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16340,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"6898:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":16341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6903:3:53","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"6898:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6898:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6877:59:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16348,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16339,"src":"6948:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6962:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6948:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16352,"nodeType":"IfStatement","src":"6944:29:53","trueBody":{"id":16351,"nodeType":"Continue","src":"6965:8:53"}},{"expression":{"arguments":[{"id":16356,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16339,"src":"7001:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":16357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7013:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16353,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16329,"src":"6981:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6990:10:53","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15526,"src":"6981:19:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":16358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6981:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16359,"nodeType":"ExpressionStatement","src":"6981:38:53"},{"expression":{"id":16362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16360,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16305,"src":"7027:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":16361,"name":"toWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16339,"src":"7035:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7027:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16363,"nodeType":"ExpressionStatement","src":"7027:18:53"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16311,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16305,"src":"6736:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16314,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"6749:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16316,"indexExpression":{"id":16315,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16309,"src":"6764:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6749:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6770:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6749:22:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6736:35:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16320,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16309,"src":"6775:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16321,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"6779:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6775:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6736:57:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16365,"initializationExpression":{"assignments":[16309],"declarations":[{"constant":false,"id":16309,"mutability":"mutable","name":"i","nameLocation":"6733:1:53","nodeType":"VariableDeclaration","scope":16365,"src":"6725:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16308,"name":"uint256","nodeType":"ElementaryTypeName","src":"6725:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16310,"nodeType":"VariableDeclarationStatement","src":"6725:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6795:3:53","subExpression":{"id":16324,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16309,"src":"6797:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16326,"nodeType":"ExpressionStatement","src":"6795:3:53"},"nodeType":"ForStatement","src":"6720:332:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16366,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16305,"src":"7061:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7069:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7061:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16372,"nodeType":"IfStatement","src":"7057:37:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16369,"name":"WithdrawError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15885,"src":"7079:13:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7079:15:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16371,"nodeType":"RevertStatement","src":"7072:22:53"}}]},"documentation":{"id":16299,"nodeType":"StructuredDocumentation","src":"6320:306:53","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":16374,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFromStrategies","nameLocation":"6638:23:53","nodeType":"FunctionDefinition","parameters":{"id":16302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16301,"mutability":"mutable","name":"assets","nameLocation":"6670:6:53","nodeType":"VariableDeclaration","scope":16374,"src":"6662:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16300,"name":"uint256","nodeType":"ElementaryTypeName","src":"6662:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6661:16:53"},"returnParameters":{"id":16303,"nodeType":"ParameterList","parameters":[],"src":"6687:0:53"},"scope":17437,"src":"6629:539:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16449,"nodeType":"Block","src":"7529:540:53","statements":[{"assignments":[16381],"declarations":[{"constant":false,"id":16381,"mutability":"mutable","name":"left","nameLocation":"7612:4:53","nodeType":"VariableDeclaration","scope":16449,"src":"7604:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16380,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16383,"initialValue":{"id":16382,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16377,"src":"7619:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7604:21:53"},{"body":{"id":16440,"nodeType":"Block","src":"7710:245:53","statements":[{"assignments":[16405],"declarations":[{"constant":false,"id":16405,"mutability":"mutable","name":"strategy","nameLocation":"7734:8:53","nodeType":"VariableDeclaration","scope":16440,"src":"7718:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16404,"nodeType":"UserDefinedTypeName","pathNode":{"id":16403,"name":"IInvestStrategy","nameLocations":["7718:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7718:15:53"},"referencedDeclaration":22374,"src":"7718:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16413,"initialValue":{"baseExpression":{"id":16406,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"7745:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16412,"indexExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16407,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"7757:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16409,"indexExpression":{"id":16408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16385,"src":"7771:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7757:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7776:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7757:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7745:33:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"7718:60:53"},{"assignments":[16415],"declarations":[{"constant":false,"id":16415,"mutability":"mutable","name":"toDeposit","nameLocation":"7794:9:53","nodeType":"VariableDeclaration","scope":16440,"src":"7786:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16414,"name":"uint256","nodeType":"ElementaryTypeName","src":"7786:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16423,"initialValue":{"arguments":[{"id":16418,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"7815:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16419,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16405,"src":"7821:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7830:10:53","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"7821:19:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7821:21:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16416,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"7806:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":16417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7811:3:53","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"7806:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":16422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7806:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7786:57:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16424,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16415,"src":"7855:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7868:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7855:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16428,"nodeType":"IfStatement","src":"7851:28:53","trueBody":{"id":16427,"nodeType":"Continue","src":"7871:8:53"}},{"expression":{"arguments":[{"id":16432,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16415,"src":"7906:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":16433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7917:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16429,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16405,"src":"7887:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7896:9:53","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15585,"src":"7887:18:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":16434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7887:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16435,"nodeType":"ExpressionStatement","src":"7887:36:53"},{"expression":{"id":16438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16436,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"7931:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":16437,"name":"toDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16415,"src":"7939:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7931:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16439,"nodeType":"ExpressionStatement","src":"7931:17:53"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16387,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"7647:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7655:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7647:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16390,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"7660:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16392,"indexExpression":{"id":16391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16385,"src":"7674:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7660:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7680:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7660:21:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7647:34:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16396,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16385,"src":"7685:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16397,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"7689:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7685:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7647:56:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16441,"initializationExpression":{"assignments":[16385],"declarations":[{"constant":false,"id":16385,"mutability":"mutable","name":"i","nameLocation":"7644:1:53","nodeType":"VariableDeclaration","scope":16441,"src":"7636:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16384,"name":"uint256","nodeType":"ElementaryTypeName","src":"7636:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16386,"nodeType":"VariableDeclarationStatement","src":"7636:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7705:3:53","subExpression":{"id":16400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16385,"src":"7707:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16402,"nodeType":"ExpressionStatement","src":"7705:3:53"},"nodeType":"ForStatement","src":"7631:324:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16442,"name":"left","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16381,"src":"7964:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7972:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7964:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16448,"nodeType":"IfStatement","src":"7960:36:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16445,"name":"DepositError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"7982:12:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7982:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16447,"nodeType":"RevertStatement","src":"7975:21:53"}}]},"documentation":{"id":16375,"nodeType":"StructuredDocumentation","src":"7172:299:53","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":16450,"implemented":true,"kind":"function","modifiers":[],"name":"_depositToStrategies","nameLocation":"7483:20:53","nodeType":"FunctionDefinition","parameters":{"id":16378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16377,"mutability":"mutable","name":"assets","nameLocation":"7512:6:53","nodeType":"VariableDeclaration","scope":16450,"src":"7504:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16376,"name":"uint256","nodeType":"ElementaryTypeName","src":"7504:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7503:16:53"},"returnParameters":{"id":16379,"nodeType":"ParameterList","parameters":[],"src":"7529:0:53"},"scope":17437,"src":"7474:595:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[22297],"body":{"id":16506,"nodeType":"Block","src":"8345:304:53","statements":[{"body":{"id":16501,"nodeType":"Block","src":"8441:163:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":16485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16479,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"8453:4:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":16480,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"8461:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16482,"indexExpression":{"id":16481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"8473:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8461:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8476:11:53","memberName":"storageSlot","nodeType":"MemberAccess","referencedDeclaration":22373,"src":"8461:26:53","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":16484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8461:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8453:36:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16500,"nodeType":"IfStatement","src":"8449:149:53","trueBody":{"id":16499,"nodeType":"Block","src":"8491:107:53","statements":[{"assignments":[16490],"declarations":[{"constant":false,"id":16490,"mutability":"mutable","name":"r","nameLocation":"8531:1:53","nodeType":"VariableDeclaration","scope":16499,"src":"8501:31:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":16489,"nodeType":"UserDefinedTypeName","pathNode":{"id":16488,"name":"StorageSlot.BytesSlot","nameLocations":["8501:11:53","8513:9:53"],"nodeType":"IdentifierPath","referencedDeclaration":9567,"src":"8501:21:53"},"referencedDeclaration":9567,"src":"8501:21:53","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"id":16495,"initialValue":{"arguments":[{"id":16493,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16453,"src":"8560:4:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":16491,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"8535:11:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":16492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8547:12:53","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"8535:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":16494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8535:30:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8501:64:53"},{"expression":{"expression":{"id":16496,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16490,"src":"8582:1:53","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":16497,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8584:5:53","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"8582:7:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":16458,"id":16498,"nodeType":"Return","src":"8575:14:53"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16462,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"8367:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16464,"indexExpression":{"id":16463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"8379:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8367:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8409:1:53","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":16467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8401:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16466,"name":"address","nodeType":"ElementaryTypeName","src":"8401:7:53","typeDescriptions":{}}},"id":16469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8401:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16465,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"8385:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":16470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8385:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"8367:45:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16472,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"8416:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16473,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"8420:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8416:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8367:67:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16502,"initializationExpression":{"assignments":[16460],"declarations":[{"constant":false,"id":16460,"mutability":"mutable","name":"i","nameLocation":"8364:1:53","nodeType":"VariableDeclaration","scope":16502,"src":"8356:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16459,"name":"uint256","nodeType":"ElementaryTypeName","src":"8356:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16461,"nodeType":"VariableDeclarationStatement","src":"8356:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8436:3:53","subExpression":{"id":16476,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16460,"src":"8438:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16478,"nodeType":"ExpressionStatement","src":"8436:3:53"},"nodeType":"ForStatement","src":"8351:253:53"},{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16503,"name":"OnlyStrategyStorageExposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15889,"src":"8616:26:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8616:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16505,"nodeType":"RevertStatement","src":"8609:35:53"}]},"documentation":{"id":16451,"nodeType":"StructuredDocumentation","src":"8073:187:53","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":16507,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"8272:12:53","nodeType":"FunctionDefinition","overrides":{"id":16455,"nodeType":"OverrideSpecifier","overrides":[],"src":"8313:8:53"},"parameters":{"id":16454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16453,"mutability":"mutable","name":"slot","nameLocation":"8293:4:53","nodeType":"VariableDeclaration","scope":16507,"src":"8285:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8285:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8284:14:53"},"returnParameters":{"id":16458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16507,"src":"8331:12:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16456,"name":"bytes","nodeType":"ElementaryTypeName","src":"8331:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8330:14:53"},"scope":17437,"src":"8263:386:53","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":16508,"nodeType":"StructuredDocumentation","src":"8653:548:53","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":16517,"implemented":false,"kind":"function","modifiers":[],"name":"_checkForwardToStrategy","nameLocation":"9213:23:53","nodeType":"FunctionDefinition","parameters":{"id":16515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16510,"mutability":"mutable","name":"strategyIndex","nameLocation":"9243:13:53","nodeType":"VariableDeclaration","scope":16517,"src":"9237:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16509,"name":"uint8","nodeType":"ElementaryTypeName","src":"9237:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16512,"mutability":"mutable","name":"method","nameLocation":"9264:6:53","nodeType":"VariableDeclaration","scope":16517,"src":"9258:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16511,"name":"uint8","nodeType":"ElementaryTypeName","src":"9258:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16514,"mutability":"mutable","name":"extraData","nameLocation":"9285:9:53","nodeType":"VariableDeclaration","scope":16517,"src":"9272:22:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16513,"name":"bytes","nodeType":"ElementaryTypeName","src":"9272:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9236:59:53"},"returnParameters":{"id":16516,"nodeType":"ParameterList","parameters":[],"src":"9317:0:53"},"scope":17437,"src":"9204:114:53","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":16563,"nodeType":"Block","src":"10060:262:53","statements":[{"expression":{"arguments":[{"id":16530,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"10090:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16531,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"10105:6:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16532,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16524,"src":"10113:9:53","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":16529,"name":"_checkForwardToStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16517,"src":"10066:23:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint8_$_t_uint8_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint8,uint8,bytes memory) view"}},"id":16533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10066:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16534,"nodeType":"ExpressionStatement","src":"10066:57:53"},{"assignments":[16537],"declarations":[{"constant":false,"id":16537,"mutability":"mutable","name":"strategy","nameLocation":"10145:8:53","nodeType":"VariableDeclaration","scope":16563,"src":"10129:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16536,"nodeType":"UserDefinedTypeName","pathNode":{"id":16535,"name":"IInvestStrategy","nameLocations":["10129:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"10129:15:53"},"referencedDeclaration":22374,"src":"10129:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16541,"initialValue":{"baseExpression":{"id":16538,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"10156:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16540,"indexExpression":{"id":16539,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"10168:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10156:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"10129:53:53"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16544,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16537,"src":"10200:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10192:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16542,"name":"address","nodeType":"ElementaryTypeName","src":"10192:7:53","typeDescriptions":{}}},"id":16545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10192:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10221:1:53","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":16547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10213:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16546,"name":"address","nodeType":"ElementaryTypeName","src":"10213:7:53","typeDescriptions":{}}},"id":16549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10213:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10192:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16554,"nodeType":"IfStatement","src":"10188:61:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16551,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"10232:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10232:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16553,"nodeType":"RevertStatement","src":"10225:24:53"}},{"expression":{"arguments":[{"id":16559,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16522,"src":"10299:6:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":16560,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16524,"src":"10307:9:53","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":16555,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"10262:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16557,"indexExpression":{"id":16556,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16520,"src":"10274:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10262:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10289:9:53","memberName":"dcForward","nodeType":"MemberAccess","referencedDeclaration":15614,"src":"10262:36:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint8,bytes memory) returns (bytes memory)"}},"id":16561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10262:55:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":16528,"id":16562,"nodeType":"Return","src":"10255:62:53"}]},"documentation":{"id":16518,"nodeType":"StructuredDocumentation","src":"9322:593:53","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":16564,"implemented":true,"kind":"function","modifiers":[],"name":"forwardToStrategy","nameLocation":"9927:17:53","nodeType":"FunctionDefinition","parameters":{"id":16525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16520,"mutability":"mutable","name":"strategyIndex","nameLocation":"9956:13:53","nodeType":"VariableDeclaration","scope":16564,"src":"9950:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16519,"name":"uint8","nodeType":"ElementaryTypeName","src":"9950:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16522,"mutability":"mutable","name":"method","nameLocation":"9981:6:53","nodeType":"VariableDeclaration","scope":16564,"src":"9975:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16521,"name":"uint8","nodeType":"ElementaryTypeName","src":"9975:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16524,"mutability":"mutable","name":"extraData","nameLocation":"10006:9:53","nodeType":"VariableDeclaration","scope":16564,"src":"9993:22:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16523,"name":"bytes","nodeType":"ElementaryTypeName","src":"9993:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9944:75:53"},"returnParameters":{"id":16528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16564,"src":"10046:12:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16526,"name":"bytes","nodeType":"ElementaryTypeName","src":"10046:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10045:14:53"},"scope":17437,"src":"9918:404:53","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":16652,"nodeType":"Block","src":"11335:497:53","statements":[{"assignments":[16579],"declarations":[{"constant":false,"id":16579,"mutability":"mutable","name":"strategy","nameLocation":"11357:8:53","nodeType":"VariableDeclaration","scope":16652,"src":"11341:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16578,"nodeType":"UserDefinedTypeName","pathNode":{"id":16577,"name":"IInvestStrategy","nameLocations":["11341:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"11341:15:53"},"referencedDeclaration":22374,"src":"11341:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16583,"initialValue":{"baseExpression":{"id":16580,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"11368:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16582,"indexExpression":{"id":16581,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16567,"src":"11380:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11368:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"11341:53:53"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16586,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16579,"src":"11412:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11404:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16584,"name":"address","nodeType":"ElementaryTypeName","src":"11404:7:53","typeDescriptions":{}}},"id":16587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11404:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11433:1:53","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":16589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11425:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16588,"name":"address","nodeType":"ElementaryTypeName","src":"11425:7:53","typeDescriptions":{}}},"id":16591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11425:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11404:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16596,"nodeType":"IfStatement","src":"11400:61:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16593,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"11444:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11444:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16595,"nodeType":"RevertStatement","src":"11437:24:53"}},{"body":{"id":16631,"nodeType":"Block","src":"11557:110:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16617,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"11569:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16619,"indexExpression":{"id":16618,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"11581:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11569:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16620,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16570,"src":"11587:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"11569:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16622,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"11602:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":16623,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16567,"src":"11607:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11569:51:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16630,"nodeType":"IfStatement","src":"11565:95:53","trueBody":{"errorCall":{"arguments":[{"id":16627,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16570,"src":"11648:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16626,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15875,"src":"11629:18:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":16628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11629:31:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16629,"nodeType":"RevertStatement","src":"11622:38:53"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16600,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"11483:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16601,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"11487:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11483:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16603,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"11505:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16605,"indexExpression":{"id":16604,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"11517:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11505:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11547:1:53","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":16608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11539:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16607,"name":"address","nodeType":"ElementaryTypeName","src":"11539:7:53","typeDescriptions":{}}},"id":16610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11539:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16606,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"11523:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":16611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11523:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"11505:45:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11483:67:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16632,"initializationExpression":{"assignments":[16598],"declarations":[{"constant":false,"id":16598,"mutability":"mutable","name":"i","nameLocation":"11480:1:53","nodeType":"VariableDeclaration","scope":16632,"src":"11472:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16597,"name":"uint256","nodeType":"ElementaryTypeName","src":"11472:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16599,"nodeType":"VariableDeclarationStatement","src":"11472:9:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"11552:3:53","subExpression":{"id":16614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16598,"src":"11554:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16616,"nodeType":"ExpressionStatement","src":"11552:3:53"},"nodeType":"ForStatement","src":"11467:200:53"},{"expression":{"arguments":[{"id":16636,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16579,"src":"11708:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":16637,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16570,"src":"11718:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":16638,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16572,"src":"11731:16:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16640,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15912,"src":"11764:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11764:8:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16639,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"11749:14:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":16642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11749:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},{"id":16643,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16574,"src":"11775:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":16633,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"11672:20:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":16635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11693:14:53","memberName":"strategyChange","nodeType":"MemberAccess","referencedDeclaration":15702,"src":"11672:35:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$_t_contract$_IERC20Metadata_$8682_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,bytes memory,contract IERC20Metadata,bool)"}},"id":16644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11672:109:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16645,"nodeType":"ExpressionStatement","src":"11672:109:53"},{"expression":{"id":16650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16646,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"11787:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16648,"indexExpression":{"id":16647,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16567,"src":"11799:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11787:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16649,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16570,"src":"11816:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"11787:40:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16651,"nodeType":"ExpressionStatement","src":"11787:40:53"}]},"documentation":{"id":16565,"nodeType":"StructuredDocumentation","src":"10326:853:53","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":16653,"implemented":true,"kind":"function","modifiers":[],"name":"replaceStrategy","nameLocation":"11191:15:53","nodeType":"FunctionDefinition","parameters":{"id":16575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16567,"mutability":"mutable","name":"strategyIndex","nameLocation":"11218:13:53","nodeType":"VariableDeclaration","scope":16653,"src":"11212:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16566,"name":"uint8","nodeType":"ElementaryTypeName","src":"11212:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16570,"mutability":"mutable","name":"newStrategy","nameLocation":"11253:11:53","nodeType":"VariableDeclaration","scope":16653,"src":"11237:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16569,"nodeType":"UserDefinedTypeName","pathNode":{"id":16568,"name":"IInvestStrategy","nameLocations":["11237:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"11237:15:53"},"referencedDeclaration":22374,"src":"11237:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":16572,"mutability":"mutable","name":"initStrategyData","nameLocation":"11283:16:53","nodeType":"VariableDeclaration","scope":16653,"src":"11270:29:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16571,"name":"bytes","nodeType":"ElementaryTypeName","src":"11270:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16574,"mutability":"mutable","name":"force","nameLocation":"11310:5:53","nodeType":"VariableDeclaration","scope":16653,"src":"11305:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16573,"name":"bool","nodeType":"ElementaryTypeName","src":"11305:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11206:113:53"},"returnParameters":{"id":16576,"nodeType":"ParameterList","parameters":[],"src":"11335:0:53"},"scope":17437,"src":"11182:650:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":16763,"nodeType":"Block","src":"12217:566:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16664,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12235:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12227:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16662,"name":"address","nodeType":"ElementaryTypeName","src":"12227:7:53","typeDescriptions":{}}},"id":16665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12227:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12259:1:53","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":16667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12251:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16666,"name":"address","nodeType":"ElementaryTypeName","src":"12251:7:53","typeDescriptions":{}}},"id":16669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12251:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12227:34:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16674,"nodeType":"IfStatement","src":"12223:64:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16671,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"12270:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12270:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16673,"nodeType":"RevertStatement","src":"12263:24:53"}},{"assignments":[16676],"declarations":[{"constant":false,"id":16676,"mutability":"mutable","name":"i","nameLocation":"12301:1:53","nodeType":"VariableDeclaration","scope":16763,"src":"12293:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16675,"name":"uint256","nodeType":"ElementaryTypeName","src":"12293:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16677,"nodeType":"VariableDeclarationStatement","src":"12293:9:53"},{"body":{"id":16705,"nodeType":"Block","src":"12389:88:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16695,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"12401:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16697,"indexExpression":{"id":16696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12413:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12401:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16698,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12419:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"12401:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16704,"nodeType":"IfStatement","src":"12397:73:53","trueBody":{"errorCall":{"arguments":[{"id":16701,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12458:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16700,"name":"DuplicatedStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15875,"src":"12439:18:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_error_$","typeString":"function (contract IInvestStrategy) pure returns (error)"}},"id":16702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12439:31:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16703,"nodeType":"RevertStatement","src":"12432:38:53"}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16678,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12315:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16679,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"12319:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12315:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16681,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"12337:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16683,"indexExpression":{"id":16682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12349:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12337:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12379:1:53","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":16686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12371:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16685,"name":"address","nodeType":"ElementaryTypeName","src":"12371:7:53","typeDescriptions":{}}},"id":16688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12371:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16684,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"12355:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":16689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12355:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"12337:45:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12315:67:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16706,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12384:3:53","subExpression":{"id":16692,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12386:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16694,"nodeType":"ExpressionStatement","src":"12384:3:53"},"nodeType":"ForStatement","src":"12308:169:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16707,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12486:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":16708,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"12491:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12486:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16713,"nodeType":"IfStatement","src":"12482:57:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16710,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15868,"src":"12514:23:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12514:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16712,"nodeType":"RevertStatement","src":"12507:32:53"}},{"expression":{"id":16718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16714,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"12545:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16716,"indexExpression":{"id":16715,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12557:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12545:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16717,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12562:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"12545:28:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16719,"nodeType":"ExpressionStatement","src":"12545:28:53"},{"expression":{"id":16729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16720,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"12579:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16722,"indexExpression":{"id":16721,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12593:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12579:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16725,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12604:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12608:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12604:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12598:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16723,"name":"uint8","nodeType":"ElementaryTypeName","src":"12598:5:53","typeDescriptions":{}}},"id":16728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12598:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12579:31:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16730,"nodeType":"ExpressionStatement","src":"12579:31:53"},{"expression":{"id":16740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16731,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"12616:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16733,"indexExpression":{"id":16732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12631:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12616:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16736,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12642:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12646:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12642:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12636:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16734,"name":"uint8","nodeType":"ElementaryTypeName","src":"12636:5:53","typeDescriptions":{}}},"id":16739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12636:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12616:32:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16741,"nodeType":"ExpressionStatement","src":"12616:32:53"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":16745,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15912,"src":"12677:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":16746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12677:8:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16742,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12654:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12666:10:53","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15637,"src":"12654:22:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":16747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12654:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16748,"nodeType":"ExpressionStatement","src":"12654:32:53"},{"expression":{"arguments":[{"id":16752,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16659,"src":"12714:16:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16749,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12692:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12704:9:53","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15416,"src":"12692:21:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":16753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12692:39:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16754,"nodeType":"ExpressionStatement","src":"12692:39:53"},{"eventCall":{"arguments":[{"id":16756,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16657,"src":"12756:11:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"arguments":[{"id":16759,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16676,"src":"12775:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12769:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":16757,"name":"uint8","nodeType":"ElementaryTypeName","src":"12769:5:53","typeDescriptions":{}}},"id":16760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12769:8:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":16755,"name":"StrategyAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15839,"src":"12742:13:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":16761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12742:36:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16762,"nodeType":"EmitStatement","src":"12737:41:53"}]},"documentation":{"id":16654,"nodeType":"StructuredDocumentation","src":"11836:282:53","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":16764,"implemented":true,"kind":"function","modifiers":[],"name":"addStrategy","nameLocation":"12130:11:53","nodeType":"FunctionDefinition","parameters":{"id":16660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16657,"mutability":"mutable","name":"newStrategy","nameLocation":"12158:11:53","nodeType":"VariableDeclaration","scope":16764,"src":"12142:27:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16656,"nodeType":"UserDefinedTypeName","pathNode":{"id":16655,"name":"IInvestStrategy","nameLocations":["12142:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"12142:15:53"},"referencedDeclaration":22374,"src":"12142:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":16659,"mutability":"mutable","name":"initStrategyData","nameLocation":"12184:16:53","nodeType":"VariableDeclaration","scope":16764,"src":"12171:29:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16658,"name":"bytes","nodeType":"ElementaryTypeName","src":"12171:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12141:60:53"},"returnParameters":{"id":16661,"nodeType":"ParameterList","parameters":[],"src":"12217:0:53"},"scope":17437,"src":"12121:662:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17045,"nodeType":"Block","src":"13231:2145:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16772,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"13241:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":16773,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"13258:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13241:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16778,"nodeType":"IfStatement","src":"13237:61:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16775,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"13281:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13281:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16777,"nodeType":"RevertStatement","src":"13274:24:53"}},{"assignments":[16781],"declarations":[{"constant":false,"id":16781,"mutability":"mutable","name":"strategy","nameLocation":"13320:8:53","nodeType":"VariableDeclaration","scope":17045,"src":"13304:24:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":16780,"nodeType":"UserDefinedTypeName","pathNode":{"id":16779,"name":"IInvestStrategy","nameLocations":["13304:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"13304:15:53"},"referencedDeclaration":22374,"src":"13304:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":16785,"initialValue":{"baseExpression":{"id":16782,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13331:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16784,"indexExpression":{"id":16783,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"13343:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13331:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"13304:53:53"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":16788,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16781,"src":"13375:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13367:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16786,"name":"address","nodeType":"ElementaryTypeName","src":"13367:7:53","typeDescriptions":{}}},"id":16789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13367:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13396:1:53","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":16791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13388:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16790,"name":"address","nodeType":"ElementaryTypeName","src":"13388:7:53","typeDescriptions":{}}},"id":16793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13388:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13367:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16798,"nodeType":"IfStatement","src":"13363:61:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16795,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"13407:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13407:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16797,"nodeType":"RevertStatement","src":"13400:24:53"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13434:6:53","subExpression":{"id":16799,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"13435:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16801,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16781,"src":"13444:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13453:11:53","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"13444:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":16803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13444:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13470:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13444:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13434:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16810,"nodeType":"IfStatement","src":"13430:82:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16807,"name":"CannotRemoveStrategyWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15891,"src":"13480:30:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13480:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16809,"nodeType":"RevertStatement","src":"13473:39:53"}},{"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":16813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16811,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"13563:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13580:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13563:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":16816,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13593:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16818,"indexExpression":{"hexValue":"31","id":16817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13605:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13593:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":16815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13585:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16814,"name":"address","nodeType":"ElementaryTypeName","src":"13585:7:53","typeDescriptions":{}}},"id":16819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13585:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13620:1:53","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":16821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13612:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16820,"name":"address","nodeType":"ElementaryTypeName","src":"13612:7:53","typeDescriptions":{}}},"id":16823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13612:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13585:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13563:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16829,"nodeType":"IfStatement","src":"13559:97:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":16826,"name":"InvalidStrategiesLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15868,"src":"13631:23:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":16827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13631:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":16828,"nodeType":"RevertStatement","src":"13624:32:53"}},{"assignments":[16831],"declarations":[{"constant":false,"id":16831,"mutability":"mutable","name":"i","nameLocation":"13721:1:53","nodeType":"VariableDeclaration","scope":17045,"src":"13713:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16830,"name":"uint256","nodeType":"ElementaryTypeName","src":"13713:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16835,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16832,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"13725:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13741:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13725:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13713:29:53"},{"body":{"id":16863,"nodeType":"Block","src":"13829:50:53","statements":[{"expression":{"id":16861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16853,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13837:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16857,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16854,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13849:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13853:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13849:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13837:18:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":16858,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13858:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16860,"indexExpression":{"id":16859,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13870:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13858:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"13837:35:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16862,"nodeType":"ExpressionStatement","src":"13837:35:53"}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16836,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13755:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16837,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"13759:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13755:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"id":16848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16839,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13777:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16841,"indexExpression":{"id":16840,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13789:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13777:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"arguments":[{"hexValue":"30","id":16845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13819:1:53","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":16844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13811:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16843,"name":"address","nodeType":"ElementaryTypeName","src":"13811:7:53","typeDescriptions":{}}},"id":16846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13811:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16842,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"13795:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":16847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13795:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"13777:45:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13755:67:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16864,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13824:3:53","subExpression":{"id":16850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13826:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16852,"nodeType":"ExpressionStatement","src":"13824:3:53"},"nodeType":"ForStatement","src":"13748:131:53"},{"expression":{"id":16876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16865,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"13884:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":16869,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16866,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"13896:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13900:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13896:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13884:18:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"hexValue":"30","id":16873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13929:1:53","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":16872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13921:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16871,"name":"address","nodeType":"ElementaryTypeName","src":"13921:7:53","typeDescriptions":{}}},"id":16874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16870,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"13905:15:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInvestStrategy_$22374_$","typeString":"type(contract IInvestStrategy)"}},"id":16875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13905:27:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"13884:48:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":16877,"nodeType":"ExpressionStatement","src":"13884:48:53"},{"assignments":[16879],"declarations":[{"constant":false,"id":16879,"mutability":"mutable","name":"shiftDeposit","nameLocation":"13993:12:53","nodeType":"VariableDeclaration","scope":17045,"src":"13988:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16878,"name":"bool","nodeType":"ElementaryTypeName","src":"13988:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16880,"nodeType":"VariableDeclarationStatement","src":"13988:17:53"},{"assignments":[16882],"declarations":[{"constant":false,"id":16882,"mutability":"mutable","name":"shiftWithdraw","nameLocation":"14016:13:53","nodeType":"VariableDeclaration","scope":17045,"src":"14011:18:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16881,"name":"bool","nodeType":"ElementaryTypeName","src":"14011:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":16883,"nodeType":"VariableDeclarationStatement","src":"14011:18:53"},{"body":{"id":17016,"nodeType":"Block","src":"14098:1128:53","statements":[{"condition":{"id":16900,"name":"shiftWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16882,"src":"14110:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16956,"nodeType":"Block","src":"14321:329:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16926,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14335:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16928,"indexExpression":{"id":16927,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14350:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14335:17:53","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":16767,"src":"14357:13:53","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":"14373:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14357:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14356:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14335:40:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16939,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14508:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16941,"indexExpression":{"id":16940,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14523:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14508:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16942,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"14529:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14545:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14529:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16945,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14528:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14508:39:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16954,"nodeType":"IfStatement","src":"14504:138:53","trueBody":{"id":16953,"nodeType":"Block","src":"14549:93:53","statements":[{"expression":{"id":16951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16947,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14609:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16949,"indexExpression":{"id":16948,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14624:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14609:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":16950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14630:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14609:22:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16952,"nodeType":"ExpressionStatement","src":"14609:22:53"}]}},"id":16955,"nodeType":"IfStatement","src":"14331:311:53","trueBody":{"id":16938,"nodeType":"Block","src":"14377:121:53","statements":[{"expression":{"id":16936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16934,"name":"shiftWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16882,"src":"14467:13:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14483:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"14467:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16937,"nodeType":"ExpressionStatement","src":"14467:20:53"}]}}]},"id":16957,"nodeType":"IfStatement","src":"14106:544:53","trueBody":{"id":16925,"nodeType":"Block","src":"14125:190:53","statements":[{"expression":{"id":16923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16901,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14211:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16905,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16902,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14226:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14230:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14226:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14211:21:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16906,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14235:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16908,"indexExpression":{"id":16907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14250:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14235:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16909,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14257:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16911,"indexExpression":{"id":16910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14272:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14257:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16912,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"14278:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14294:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14278:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14277:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14257:39:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16917,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14256:41:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14304:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14256:49:53","trueExpression":{"hexValue":"31","id":16918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14300:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16921,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14255:51:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14235:71:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14211:95:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16924,"nodeType":"ExpressionStatement","src":"14211:95:53"}]}},{"condition":{"id":16958,"name":"shiftDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16879,"src":"14688:12:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":17014,"nodeType":"Block","src":"14895:325:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16984,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"14909:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16986,"indexExpression":{"id":16985,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14923:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14909:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16987,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"14930:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14946:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14930:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14929:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14909:39:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16997,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"15080:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16999,"indexExpression":{"id":16998,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"15094:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15080:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17000,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"15100:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15116:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15100:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":17003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15099:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15080:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17012,"nodeType":"IfStatement","src":"15076:136:53","trueBody":{"id":17011,"nodeType":"Block","src":"15120:92:53","statements":[{"expression":{"id":17009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17005,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"15180:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17007,"indexExpression":{"id":17006,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"15194:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15180:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":17008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15200:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15180:21:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17010,"nodeType":"ExpressionStatement","src":"15180:21:53"}]}},"id":17013,"nodeType":"IfStatement","src":"14905:307:53","trueBody":{"id":16996,"nodeType":"Block","src":"14950:120:53","statements":[{"expression":{"id":16994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16992,"name":"shiftDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16879,"src":"15040:12:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15055:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"15040:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16995,"nodeType":"ExpressionStatement","src":"15040:19:53"}]}}]},"id":17015,"nodeType":"IfStatement","src":"14684:536:53","trueBody":{"id":16983,"nodeType":"Block","src":"14702:187:53","statements":[{"expression":{"id":16981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":16959,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"14788:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16963,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16960,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14802:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14806:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14802:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14788:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16964,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"14811:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16966,"indexExpression":{"id":16965,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14825:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14811:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16967,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"14832:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16969,"indexExpression":{"id":16968,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14846:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14832:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16970,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"14852:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":16971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14868:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14852:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16973,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14851:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14832:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":16975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14831:40:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":16977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14878:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":16978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14831:48:53","trueExpression":{"hexValue":"31","id":16976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14874:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":16979,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14830:50:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14811:69:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14788:92:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":16982,"nodeType":"ExpressionStatement","src":"14788:92:53"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":16896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":16892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":16888,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"14047:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":16890,"indexExpression":{"id":16889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14062:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14047:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":16891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14068:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14047:22:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16893,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14073:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":16894,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"14077:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14073:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14047:44:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17017,"initializationExpression":{"expression":{"id":16886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":16884,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14040:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":16885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14044:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14040:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16887,"nodeType":"ExpressionStatement","src":"14040:5:53"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":16898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"14093:3:53","subExpression":{"id":16897,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"14095:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16899,"nodeType":"ExpressionStatement","src":"14093:3:53"},"nodeType":"ForStatement","src":"14035:1191:53"},{"expression":{"id":17024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17018,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"15231:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17022,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17019,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"15245:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15249:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15245:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15231:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":17023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15254:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15231:24:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17025,"nodeType":"ExpressionStatement","src":"15231:24:53"},{"expression":{"id":17032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17026,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"15261:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17030,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16831,"src":"15276:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":17028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15280:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15276:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15261:21:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":17031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15285:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15261:25:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17033,"nodeType":"ExpressionStatement","src":"15261:25:53"},{"expression":{"arguments":[{"id":17037,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16769,"src":"15314:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17034,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16781,"src":"15292:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15301:12:53","memberName":"dcDisconnect","nodeType":"MemberAccess","referencedDeclaration":15467,"src":"15292:21:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bool_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,bool)"}},"id":17038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15292:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17039,"nodeType":"ExpressionStatement","src":"15292:28:53"},{"eventCall":{"arguments":[{"id":17041,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16781,"src":"15347:8:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":17042,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16767,"src":"15357:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17040,"name":"StrategyRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15846,"src":"15331:15:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint8_$returns$__$","typeString":"function (contract IInvestStrategy,uint8)"}},"id":17043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15331:40:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17044,"nodeType":"EmitStatement","src":"15326:45:53"}]},"documentation":{"id":16765,"nodeType":"StructuredDocumentation","src":"12787:369:53","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":17046,"implemented":true,"kind":"function","modifiers":[],"name":"removeStrategy","nameLocation":"13168:14:53","nodeType":"FunctionDefinition","parameters":{"id":16770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16767,"mutability":"mutable","name":"strategyIndex","nameLocation":"13189:13:53","nodeType":"VariableDeclaration","scope":17046,"src":"13183:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":16766,"name":"uint8","nodeType":"ElementaryTypeName","src":"13183:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":16769,"mutability":"mutable","name":"force","nameLocation":"13209:5:53","nodeType":"VariableDeclaration","scope":17046,"src":"13204:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16768,"name":"bool","nodeType":"ElementaryTypeName","src":"13204:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13182:33:53"},"returnParameters":{"id":16771,"nodeType":"ParameterList","parameters":[],"src":"13231:0:53"},"scope":17437,"src":"13159:2217:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17157,"nodeType":"Block","src":"15768:657:53","statements":[{"assignments":[17058],"declarations":[{"constant":false,"id":17058,"mutability":"mutable","name":"seen","nameLocation":"15802:4:53","nodeType":"VariableDeclaration","scope":17157,"src":"15774:32:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":17056,"name":"bool","nodeType":"ElementaryTypeName","src":"15774:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17057,"length":{"id":17055,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"15779:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"15774:20:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":17059,"nodeType":"VariableDeclarationStatement","src":"15774:32:53"},{"assignments":[17061],"declarations":[{"constant":false,"id":17061,"mutability":"mutable","name":"i","nameLocation":"15820:1:53","nodeType":"VariableDeclaration","scope":17157,"src":"15812:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17060,"name":"uint256","nodeType":"ElementaryTypeName","src":"15812:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17063,"initialValue":{"hexValue":"30","id":17062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15824:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15812:13:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17064,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"15835:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15852:6:53","memberName":"length","nodeType":"MemberAccess","src":"15835:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17066,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"15861:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15835:40:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17071,"nodeType":"IfStatement","src":"15831:67:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17068,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"15884:12:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15884:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17070,"nodeType":"RevertStatement","src":"15877:21:53"}},{"body":{"id":17132,"nodeType":"Block","src":"15945:330:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17079,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"15957:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17081,"indexExpression":{"id":17080,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"15974:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15957:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17082,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"15980:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"15957:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17086,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"16006:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17090,"indexExpression":{"baseExpression":{"id":17087,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16018:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17089,"indexExpression":{"id":17088,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16035:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16018:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:32:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15998:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17084,"name":"address","nodeType":"ElementaryTypeName","src":"15998:7:53","typeDescriptions":{}}},"id":17091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15998:41:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16051:1:53","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":17093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16043:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17092,"name":"address","nodeType":"ElementaryTypeName","src":"16043:7:53","typeDescriptions":{}}},"id":17095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16043:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15998:55:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15957:96:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17101,"nodeType":"IfStatement","src":"15953:131:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17098,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"16070:12:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16070:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17100,"nodeType":"RevertStatement","src":"16063:21:53"}},{"condition":{"baseExpression":{"id":17102,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17058,"src":"16096:4:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17106,"indexExpression":{"baseExpression":{"id":17103,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16101:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17105,"indexExpression":{"id":17104,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16118:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16101:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16096:25:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17113,"nodeType":"IfStatement","src":"16092:86:53","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":17108,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16158:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17110,"indexExpression":{"id":17109,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16175:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16158:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17107,"name":"InvalidQueueIndexDuplicated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15899,"src":"16130:27:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":17111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16130:48:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17112,"nodeType":"RevertStatement","src":"16123:55:53"}},{"expression":{"id":17120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17114,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17058,"src":"16186:4:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17118,"indexExpression":{"baseExpression":{"id":17115,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16191:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17117,"indexExpression":{"id":17116,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16208:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16191:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16186:25:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":17119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16214:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16186:32:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17121,"nodeType":"ExpressionStatement","src":"16186:32:53"},{"expression":{"id":17130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17122,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"16226:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17124,"indexExpression":{"id":17123,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16240:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16226:16:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17125,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16245:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17127,"indexExpression":{"id":17126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16262:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16245:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16267:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16245:23:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16226:42:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17131,"nodeType":"ExpressionStatement","src":"16226:42:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17072,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"15911:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17073,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"15915:16:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15932:6:53","memberName":"length","nodeType":"MemberAccess","src":"15915:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15911:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17133,"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":17077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15940:3:53","subExpression":{"id":17076,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"15942:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17078,"nodeType":"ExpressionStatement","src":"15940:3:53"},"nodeType":"ForStatement","src":"15904:371:53"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17134,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16284:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17135,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"16288:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16284:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17139,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"16314:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17141,"indexExpression":{"id":17140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17061,"src":"16326:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16314:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16306:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17137,"name":"address","nodeType":"ElementaryTypeName","src":"16306:7:53","typeDescriptions":{}}},"id":17142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16306:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16341:1:53","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":17144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16333:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17143,"name":"address","nodeType":"ElementaryTypeName","src":"16333:7:53","typeDescriptions":{}}},"id":17146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16333:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16306:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16284:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17152,"nodeType":"IfStatement","src":"16280:92:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17149,"name":"InvalidQueueLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15895,"src":"16352:18:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16352:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17151,"nodeType":"RevertStatement","src":"16345:27:53"}},{"eventCall":{"arguments":[{"id":17154,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17050,"src":"16403:16:53","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":17153,"name":"DepositQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15851,"src":"16383:19:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:37:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17156,"nodeType":"EmitStatement","src":"16378:42:53"}]},"documentation":{"id":17047,"nodeType":"StructuredDocumentation","src":"15379:310:53","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":17158,"implemented":true,"kind":"function","modifiers":[],"name":"changeDepositQueue","nameLocation":"15701:18:53","nodeType":"FunctionDefinition","parameters":{"id":17051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17050,"mutability":"mutable","name":"newDepositQueue_","nameLocation":"15735:16:53","nodeType":"VariableDeclaration","scope":17158,"src":"15720:31:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17048,"name":"uint8","nodeType":"ElementaryTypeName","src":"15720:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17049,"nodeType":"ArrayTypeName","src":"15720:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"15719:33:53"},"returnParameters":{"id":17052,"nodeType":"ParameterList","parameters":[],"src":"15768:0:53"},"scope":17437,"src":"15692:733:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17269,"nodeType":"Block","src":"16827:666:53","statements":[{"assignments":[17170],"declarations":[{"constant":false,"id":17170,"mutability":"mutable","name":"seen","nameLocation":"16861:4:53","nodeType":"VariableDeclaration","scope":17269,"src":"16833:32:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32]"},"typeName":{"baseType":{"id":17168,"name":"bool","nodeType":"ElementaryTypeName","src":"16833:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17169,"length":{"id":17167,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"16838:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"16833:20:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_storage_ptr","typeString":"bool[32]"}},"visibility":"internal"}],"id":17171,"nodeType":"VariableDeclarationStatement","src":"16833:32:53"},{"assignments":[17173],"declarations":[{"constant":false,"id":17173,"mutability":"mutable","name":"i","nameLocation":"16877:1:53","nodeType":"VariableDeclaration","scope":17269,"src":"16871:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17172,"name":"uint8","nodeType":"ElementaryTypeName","src":"16871:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":17175,"initialValue":{"hexValue":"30","id":17174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16881:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16871:11:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":17176,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"16892:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16910:6:53","memberName":"length","nodeType":"MemberAccess","src":"16892:24:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":17178,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"16919:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16892:41:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17183,"nodeType":"IfStatement","src":"16888:68:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17180,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"16942:12:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16942:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17182,"nodeType":"RevertStatement","src":"16935:21:53"}},{"body":{"id":17244,"nodeType":"Block","src":"17004:337:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17191,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17016:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17193,"indexExpression":{"id":17192,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17034:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17016:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17194,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"17040:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17016:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17198,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"17066:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17202,"indexExpression":{"baseExpression":{"id":17199,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17078:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17201,"indexExpression":{"id":17200,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17096:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17078:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17066:33:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17058:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17196,"name":"address","nodeType":"ElementaryTypeName","src":"17058:7:53","typeDescriptions":{}}},"id":17203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17058:42:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17112:1:53","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":17205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17104:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17204,"name":"address","nodeType":"ElementaryTypeName","src":"17104:7:53","typeDescriptions":{}}},"id":17207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17104:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17058:56:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17016:98:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17213,"nodeType":"IfStatement","src":"17012:133:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17210,"name":"InvalidQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15893,"src":"17131:12:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17131:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17212,"nodeType":"RevertStatement","src":"17124:21:53"}},{"condition":{"baseExpression":{"id":17214,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17170,"src":"17157:4:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17218,"indexExpression":{"baseExpression":{"id":17215,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17162:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17217,"indexExpression":{"id":17216,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17180:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17162:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17157:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17225,"nodeType":"IfStatement","src":"17153:88:53","trueBody":{"errorCall":{"arguments":[{"baseExpression":{"id":17220,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17220:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17222,"indexExpression":{"id":17221,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17238:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17220:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17219,"name":"InvalidQueueIndexDuplicated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15899,"src":"17192:27:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$_t_error_$","typeString":"function (uint8) pure returns (error)"}},"id":17223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17192:49:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17224,"nodeType":"RevertStatement","src":"17185:56:53"}},{"expression":{"id":17232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17226,"name":"seen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17170,"src":"17249:4:53","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$32_memory_ptr","typeString":"bool[32] memory"}},"id":17230,"indexExpression":{"baseExpression":{"id":17227,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17254:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17229,"indexExpression":{"id":17228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17272:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17254:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17249:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":17231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17278:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"17249:33:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17233,"nodeType":"ExpressionStatement","src":"17249:33:53"},{"expression":{"id":17242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":17234,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"17290:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"id":17236,"indexExpression":{"id":17235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17305:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17290:17:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":17237,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17310:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17239,"indexExpression":{"id":17238,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17328:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17310:20:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":17240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17333:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17310:24:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17290:44:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17243,"nodeType":"ExpressionStatement","src":"17290:44:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17184,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"16969:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":17185,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"16973:17:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},"id":17186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16991:6:53","memberName":"length","nodeType":"MemberAccess","src":"16973:24:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16969:28:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17245,"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":17189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"16999:3:53","subExpression":{"id":17188,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17001:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17190,"nodeType":"ExpressionStatement","src":"16999:3:53"},"nodeType":"ForStatement","src":"16962:379:53"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17246,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17350:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":17247,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"17354:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17350:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":17251,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"17380:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17253,"indexExpression":{"id":17252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17173,"src":"17392:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17380:14:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17372:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17249,"name":"address","nodeType":"ElementaryTypeName","src":"17372:7:53","typeDescriptions":{}}},"id":17254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17372:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":17257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17407:1:53","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":17256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17399:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17255,"name":"address","nodeType":"ElementaryTypeName","src":"17399:7:53","typeDescriptions":{}}},"id":17258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17399:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17372:37:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17350:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17264,"nodeType":"IfStatement","src":"17346:92:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17261,"name":"InvalidQueueLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15895,"src":"17418:18:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17418:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17263,"nodeType":"RevertStatement","src":"17411:27:53"}},{"eventCall":{"arguments":[{"id":17266,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17162,"src":"17470:17:53","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":17265,"name":"WithdrawQueueChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15856,"src":"17449:20:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17449:39:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17268,"nodeType":"EmitStatement","src":"17444:44:53"}]},"documentation":{"id":17159,"nodeType":"StructuredDocumentation","src":"16429:317:53","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":17270,"implemented":true,"kind":"function","modifiers":[],"name":"changeWithdrawQueue","nameLocation":"16758:19:53","nodeType":"FunctionDefinition","parameters":{"id":17163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17162,"mutability":"mutable","name":"newWithdrawQueue_","nameLocation":"16793:17:53","nodeType":"VariableDeclaration","scope":17270,"src":"16778:32:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17160,"name":"uint8","nodeType":"ElementaryTypeName","src":"16778:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17161,"nodeType":"ArrayTypeName","src":"16778:7:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"16777:34:53"},"returnParameters":{"id":17164,"nodeType":"ParameterList","parameters":[],"src":"16827:0:53"},"scope":17437,"src":"16749:744:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17396,"nodeType":"Block","src":"18076:897:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17282,"name":"strategyFromIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17273,"src":"18086:15:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17283,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"18105:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18086:33:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":17287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17285,"name":"strategyToIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17275,"src":"18123:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":17286,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"18140:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"18123:31:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18086:68:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17292,"nodeType":"IfStatement","src":"18082:98:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17289,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"18163:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17290,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18163:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17291,"nodeType":"RevertStatement","src":"18156:24:53"}},{"assignments":[17295],"declarations":[{"constant":false,"id":17295,"mutability":"mutable","name":"strategyFrom","nameLocation":"18202:12:53","nodeType":"VariableDeclaration","scope":17396,"src":"18186:28:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":17294,"nodeType":"UserDefinedTypeName","pathNode":{"id":17293,"name":"IInvestStrategy","nameLocations":["18186:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"18186:15:53"},"referencedDeclaration":22374,"src":"18186:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":17299,"initialValue":{"baseExpression":{"id":17296,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"18217:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17298,"indexExpression":{"id":17297,"name":"strategyFromIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17273,"src":"18229:15:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18217:28:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"18186:59:53"},{"assignments":[17302],"declarations":[{"constant":false,"id":17302,"mutability":"mutable","name":"strategyTo","nameLocation":"18267:10:53","nodeType":"VariableDeclaration","scope":17396,"src":"18251:26:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":17301,"nodeType":"UserDefinedTypeName","pathNode":{"id":17300,"name":"IInvestStrategy","nameLocations":["18251:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"18251:15:53"},"referencedDeclaration":22374,"src":"18251:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"id":17306,"initialValue":{"baseExpression":{"id":17303,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"18280:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17305,"indexExpression":{"id":17304,"name":"strategyToIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17275,"src":"18292:13:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18280:26:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"VariableDeclarationStatement","src":"18251:55:53"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":17325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17309,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18324:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18316:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17307,"name":"address","nodeType":"ElementaryTypeName","src":"18316:7:53","typeDescriptions":{}}},"id":17310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18316:21:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18349:1:53","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":17312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18341:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17311,"name":"address","nodeType":"ElementaryTypeName","src":"18341:7:53","typeDescriptions":{}}},"id":17314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18341:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18316:35:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":17324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17318,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17302,"src":"18363:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18355:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17316,"name":"address","nodeType":"ElementaryTypeName","src":"18355:7:53","typeDescriptions":{}}},"id":17319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18355:19:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":17322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18386:1:53","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":17321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18378:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17320,"name":"address","nodeType":"ElementaryTypeName","src":"18378:7:53","typeDescriptions":{}}},"id":17323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18378:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18355:33:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18316:72:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17329,"nodeType":"IfStatement","src":"18312:102:53","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":17326,"name":"InvalidStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15870,"src":"18397:15:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":17327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18397:17:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17328,"nodeType":"RevertStatement","src":"18390:24:53"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17330,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18424:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":17333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18439:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17332,"name":"uint256","nodeType":"ElementaryTypeName","src":"18439:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17331,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18434:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18434:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18448:3:53","memberName":"max","nodeType":"MemberAccess","src":"18434:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18424:27:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17343,"nodeType":"IfStatement","src":"18420:68:53","trueBody":{"expression":{"id":17341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":17337,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18453:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17338,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18462:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18475:11:53","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"18462:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18462:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18453:35:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17342,"nodeType":"ExpressionStatement","src":"18453:35:53"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17344,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18498:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18508:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18498:11:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17349,"nodeType":"IfStatement","src":"18494:25:53","trueBody":{"expression":{"hexValue":"30","id":17347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18518:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":17281,"id":17348,"nodeType":"Return","src":"18511:8:53"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17350,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18597:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17351,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18606:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18619:11:53","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"18606:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18606:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18597:35:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17361,"nodeType":"IfStatement","src":"18593:109:53","trueBody":{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17356,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18675:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18688:11:53","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"18675:24:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18675:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17355,"name":"RebalanceAmountExceedsMaxWithdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15907,"src":"18641:33:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":17359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18641:61:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17360,"nodeType":"RevertStatement","src":"18634:68:53"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17362,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18712:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17363,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17302,"src":"18721:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18732:10:53","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"18721:21:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18721:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18712:32:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17373,"nodeType":"IfStatement","src":"18708:102:53","trueBody":{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":17368,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17302,"src":"18786:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18797:10:53","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"18786:21:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":17370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18786:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17367,"name":"RebalanceAmountExceedsMaxDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15903,"src":"18753:32:53","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":17371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18753:57:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":17372,"nodeType":"RevertStatement","src":"18746:64:53"}},{"expression":{"arguments":[{"id":17377,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18840:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18848:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17374,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18816:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18829:10:53","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15526,"src":"18816:23:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":17379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18816:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17380,"nodeType":"ExpressionStatement","src":"18816:38:53"},{"expression":{"arguments":[{"id":17384,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18881:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":17385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18889:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17381,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17302,"src":"18860:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18871:9:53","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15585,"src":"18860:20:53","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":17386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18860:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17387,"nodeType":"ExpressionStatement","src":"18860:35:53"},{"eventCall":{"arguments":[{"id":17389,"name":"strategyFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17295,"src":"18916:12:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":17390,"name":"strategyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17302,"src":"18930:10:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":17391,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18942:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17388,"name":"Rebalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15866,"src":"18906:9:53","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,uint256)"}},"id":17392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18906:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17393,"nodeType":"EmitStatement","src":"18901:48:53"},{"expression":{"id":17394,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17277,"src":"18962:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17281,"id":17395,"nodeType":"Return","src":"18955:13:53"}]},"documentation":{"id":17271,"nodeType":"StructuredDocumentation","src":"17497:464:53","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":17397,"implemented":true,"kind":"function","modifiers":[],"name":"rebalance","nameLocation":"17973:9:53","nodeType":"FunctionDefinition","parameters":{"id":17278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17273,"mutability":"mutable","name":"strategyFromIdx","nameLocation":"17989:15:53","nodeType":"VariableDeclaration","scope":17397,"src":"17983:21:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17272,"name":"uint8","nodeType":"ElementaryTypeName","src":"17983:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17275,"mutability":"mutable","name":"strategyToIdx","nameLocation":"18012:13:53","nodeType":"VariableDeclaration","scope":17397,"src":"18006:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17274,"name":"uint8","nodeType":"ElementaryTypeName","src":"18006:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17277,"mutability":"mutable","name":"amount","nameLocation":"18035:6:53","nodeType":"VariableDeclaration","scope":17397,"src":"18027:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17276,"name":"uint256","nodeType":"ElementaryTypeName","src":"18027:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17982:60:53"},"returnParameters":{"id":17281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17280,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17397,"src":"18067:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17279,"name":"uint256","nodeType":"ElementaryTypeName","src":"18067:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18066:9:53"},"scope":17437,"src":"17964:1009:53","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17408,"nodeType":"Block","src":"19228:29:53","statements":[{"expression":{"id":17406,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"19241:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"functionReturnParameters":17405,"id":17407,"nodeType":"Return","src":"19234:18:53"}]},"documentation":{"id":17398,"nodeType":"StructuredDocumentation","src":"18977:163:53","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":17409,"implemented":true,"kind":"function","modifiers":[],"name":"strategies","nameLocation":"19152:10:53","nodeType":"FunctionDefinition","parameters":{"id":17399,"nodeType":"ParameterList","parameters":[],"src":"19162:2:53"},"returnParameters":{"id":17405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17404,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17409,"src":"19188:38:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_memory_ptr","typeString":"contract IInvestStrategy[32]"},"typeName":{"baseType":{"id":17401,"nodeType":"UserDefinedTypeName","pathNode":{"id":17400,"name":"IInvestStrategy","nameLocations":["19188:15:53"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"19188:15:53"},"referencedDeclaration":22374,"src":"19188:15:53","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17403,"length":{"id":17402,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"19204:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"19188:31:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage_ptr","typeString":"contract IInvestStrategy[32]"}},"visibility":"internal"}],"src":"19187:40:53"},"scope":17437,"src":"19143:114:53","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17419,"nodeType":"Block","src":"19500:31:53","statements":[{"expression":{"id":17417,"name":"_depositQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15803,"src":"19513:13:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"functionReturnParameters":17416,"id":17418,"nodeType":"Return","src":"19506:20:53"}]},"documentation":{"id":17410,"nodeType":"StructuredDocumentation","src":"19261:159:53","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":17420,"implemented":true,"kind":"function","modifiers":[],"name":"depositQueue","nameLocation":"19432:12:53","nodeType":"FunctionDefinition","parameters":{"id":17411,"nodeType":"ParameterList","parameters":[],"src":"19444:2:53"},"returnParameters":{"id":17416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17415,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17420,"src":"19470:28:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_memory_ptr","typeString":"uint8[32]"},"typeName":{"baseType":{"id":17412,"name":"uint8","nodeType":"ElementaryTypeName","src":"19470:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17414,"length":{"id":17413,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"19476:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"19470:21:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"}],"src":"19469:30:53"},"scope":17437,"src":"19423:108:53","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":17430,"nodeType":"Block","src":"19776:32:53","statements":[{"expression":{"id":17428,"name":"_withdrawQueue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15807,"src":"19789:14:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage","typeString":"uint8[32] storage ref"}},"functionReturnParameters":17427,"id":17429,"nodeType":"Return","src":"19782:21:53"}]},"documentation":{"id":17421,"nodeType":"StructuredDocumentation","src":"19535:160:53","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":17431,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawQueue","nameLocation":"19707:13:53","nodeType":"FunctionDefinition","parameters":{"id":17422,"nodeType":"ParameterList","parameters":[],"src":"19720:2:53"},"returnParameters":{"id":17427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17431,"src":"19746:28:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_memory_ptr","typeString":"uint8[32]"},"typeName":{"baseType":{"id":17423,"name":"uint8","nodeType":"ElementaryTypeName","src":"19746:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17425,"length":{"id":17424,"name":"MAX_STRATEGIES","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15799,"src":"19752:14:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"ArrayTypeName","src":"19746:21:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$32_storage_ptr","typeString":"uint8[32]"}},"visibility":"internal"}],"src":"19745:30:53"},"scope":17437,"src":"19698:110:53","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"documentation":{"id":17432,"nodeType":"StructuredDocumentation","src":"19812:246:53","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":17436,"mutability":"mutable","name":"__gap","nameLocation":"20081:5:53","nodeType":"VariableDeclaration","scope":17437,"src":"20061:25:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$16_storage","typeString":"uint256[16]"},"typeName":{"baseType":{"id":17433,"name":"uint256","nodeType":"ElementaryTypeName","src":"20061:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17435,"length":{"hexValue":"3136","id":17434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20069:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"nodeType":"ArrayTypeName","src":"20061:11:53","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$16_storage_ptr","typeString":"uint256[16]"}},"visibility":"private"}],"scope":17438,"src":"1644:18445:53","usedErrors":[9103,9395,15393,15868,15870,15875,15879,15883,15885,15887,15889,15891,15893,15895,15899,15903,15907],"usedEvents":[15379,15383,15387,15391,15820,15824,15828,15832,15839,15846,15851,15856,15866]}],"src":"39:20051:53"},"id":53},"contracts/MultiStrategyERC4626.sol":{"ast":{"absolutePath":"contracts/MultiStrategyERC4626.sol","exportedSymbols":{"ERC4626Upgradeable":[4427],"IERC20":[8656],"IERC4626":[7538],"IInvestStrategy":[22374],"MSVBase":[17437],"Math":[11309],"MultiStrategyERC4626":[17980],"PermissionedERC4626":[18512]},"id":17981,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":17439,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:54"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":17441,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":8657,"src":"64:70:54","symbolAliases":[{"foreign":{"id":17440,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"72:6:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":17443,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":7539,"src":"135:73:54","symbolAliases":[{"foreign":{"id":17442,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"143:8:54","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":17445,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":4428,"src":"209:117:54","symbolAliases":[{"foreign":{"id":17444,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"217:18:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":17447,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":11310,"src":"327:65:54","symbolAliases":[{"foreign":{"id":17446,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"335:4:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/PermissionedERC4626.sol","file":"./PermissionedERC4626.sol","id":17449,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":18513,"src":"393:62:54","symbolAliases":[{"foreign":{"id":17448,"name":"PermissionedERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18512,"src":"401:19:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/MSVBase.sol","file":"./MSVBase.sol","id":17451,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":17438,"src":"456:38:54","symbolAliases":[{"foreign":{"id":17450,"name":"MSVBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17437,"src":"464:7:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":17453,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":17981,"sourceUnit":22375,"src":"495:65:54","symbolAliases":[{"foreign":{"id":17452,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"503:15:54","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17455,"name":"MSVBase","nameLocations":["1244:7:54"],"nodeType":"IdentifierPath","referencedDeclaration":17437,"src":"1244:7:54"},"id":17456,"nodeType":"InheritanceSpecifier","src":"1244:7:54"},{"baseName":{"id":17457,"name":"PermissionedERC4626","nameLocations":["1253:19:54"],"nodeType":"IdentifierPath","referencedDeclaration":18512,"src":"1253:19:54"},"id":17458,"nodeType":"InheritanceSpecifier","src":"1253:19:54"}],"canonicalName":"MultiStrategyERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":17454,"nodeType":"StructuredDocumentation","src":"562:648:54","text":" @title MultiStrategyERC4626\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 @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":17980,"linearizedBaseContracts":[17980,18512,4427,7538,3663,7590,8682,8656,3046,7548,2610,4513,9703,4892,4473,2864,17437,22298],"name":"MultiStrategyERC4626","nameLocation":"1220:20:54","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"0b74ce8c","id":17463,"mutability":"constant","name":"STRATEGY_ADMIN_ROLE","nameLocation":"1301:19:54","nodeType":"VariableDeclaration","scope":17980,"src":"1277:78:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17459,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"53545241544547595f41444d494e5f524f4c45","id":17461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1333:21:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_5604e2fe54b4de17b81a5ded6f82357d742fd2722d67304e37ff20bd589b4f38","typeString":"literal_string \"STRATEGY_ADMIN_ROLE\""},"value":"STRATEGY_ADMIN_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5604e2fe54b4de17b81a5ded6f82357d742fd2722d67304e37ff20bd589b4f38","typeString":"literal_string \"STRATEGY_ADMIN_ROLE\""}],"id":17460,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1323:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":17462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1323:32:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"367fee39","id":17468,"mutability":"constant","name":"QUEUE_ADMIN_ROLE","nameLocation":"1383:16:54","nodeType":"VariableDeclaration","scope":17980,"src":"1359:72:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17464,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1359:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"51554555455f41444d494e5f524f4c45","id":17466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1412:18:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c1","typeString":"literal_string \"QUEUE_ADMIN_ROLE\""},"value":"QUEUE_ADMIN_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c1","typeString":"literal_string \"QUEUE_ADMIN_ROLE\""}],"id":17465,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1402:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":17467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1402:29:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"490b48f8","id":17473,"mutability":"constant","name":"REBALANCER_ROLE","nameLocation":"1459:15:54","nodeType":"VariableDeclaration","scope":17980,"src":"1435:70:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17469,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1435:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"524542414c414e4345525f524f4c45","id":17471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1487:17:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f46","typeString":"literal_string \"REBALANCER_ROLE\""},"value":"REBALANCER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f46","typeString":"literal_string \"REBALANCER_ROLE\""}],"id":17470,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1477:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":17472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1477:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"cd0e0f44","id":17478,"mutability":"constant","name":"FORWARD_TO_STRATEGY_ROLE","nameLocation":"1533:24:54","nodeType":"VariableDeclaration","scope":17980,"src":"1509:88:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17474,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1509:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"464f52574152445f544f5f53545241544547595f524f4c45","id":17476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1570:26:54","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc","typeString":"literal_string \"FORWARD_TO_STRATEGY_ROLE\""},"value":"FORWARD_TO_STRATEGY_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc","typeString":"literal_string \"FORWARD_TO_STRATEGY_ROLE\""}],"id":17475,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1560:9:54","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":17477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1560:37:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"body":{"id":17485,"nodeType":"Block","src":"1667:33:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17482,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"1673:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":17483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17484,"nodeType":"ExpressionStatement","src":"1673:22:54"}]},"documentation":{"id":17479,"nodeType":"StructuredDocumentation","src":"1602:48:54","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":17486,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":17480,"nodeType":"ParameterList","parameters":[],"src":"1664:2:54"},"returnParameters":{"id":17481,"nodeType":"ParameterList","parameters":[],"src":"1667:0:54"},"scope":17980,"src":"1653:47:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17525,"nodeType":"Block","src":"2679:187:54","statements":[{"expression":{"arguments":[{"id":17515,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17489,"src":"2720:5:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":17516,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17491,"src":"2733:7:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":17517,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17493,"src":"2748:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17518,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17496,"src":"2762:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":17519,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17500,"src":"2776:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":17520,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17503,"src":"2795:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":17521,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17506,"src":"2820:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":17522,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17509,"src":"2841:14:54","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_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$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":17514,"name":"__MultiStrategyERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17568,"src":"2685:27:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_contract$_IERC20_$8656_$_t_array$_t_contract$_IInvestStrategy_$22374_$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,address,contract IERC20,contract IInvestStrategy[] memory,bytes memory[] memory,uint8[] memory,uint8[] memory)"}},"id":17523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2685:176:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17524,"nodeType":"ExpressionStatement","src":"2685:176:54"}]},"documentation":{"id":17487,"nodeType":"StructuredDocumentation","src":"1704:681:54","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 admin_ User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\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":"6b3ea526","id":17526,"implemented":true,"kind":"function","modifiers":[{"id":17512,"kind":"modifierInvocation","modifierName":{"id":17511,"name":"initializer","nameLocations":["2667:11:54"],"nodeType":"IdentifierPath","referencedDeclaration":2718,"src":"2667:11:54"},"nodeType":"ModifierInvocation","src":"2667:11:54"}],"name":"initialize","nameLocation":"2397:10:54","nodeType":"FunctionDefinition","parameters":{"id":17510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17489,"mutability":"mutable","name":"name_","nameLocation":"2427:5:54","nodeType":"VariableDeclaration","scope":17526,"src":"2413:19:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17488,"name":"string","nodeType":"ElementaryTypeName","src":"2413:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17491,"mutability":"mutable","name":"symbol_","nameLocation":"2452:7:54","nodeType":"VariableDeclaration","scope":17526,"src":"2438:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17490,"name":"string","nodeType":"ElementaryTypeName","src":"2438:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17493,"mutability":"mutable","name":"admin_","nameLocation":"2473:6:54","nodeType":"VariableDeclaration","scope":17526,"src":"2465:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17492,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17496,"mutability":"mutable","name":"asset_","nameLocation":"2492:6:54","nodeType":"VariableDeclaration","scope":17526,"src":"2485:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":17495,"nodeType":"UserDefinedTypeName","pathNode":{"id":17494,"name":"IERC20","nameLocations":["2485:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"2485:6:54"},"referencedDeclaration":8656,"src":"2485:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17500,"mutability":"mutable","name":"strategies_","nameLocation":"2529:11:54","nodeType":"VariableDeclaration","scope":17526,"src":"2504:36:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":17498,"nodeType":"UserDefinedTypeName","pathNode":{"id":17497,"name":"IInvestStrategy","nameLocations":["2504:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2504:15:54"},"referencedDeclaration":22374,"src":"2504:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17499,"nodeType":"ArrayTypeName","src":"2504:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":17503,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"2561:17:54","nodeType":"VariableDeclaration","scope":17526,"src":"2546:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":17501,"name":"bytes","nodeType":"ElementaryTypeName","src":"2546:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":17502,"nodeType":"ArrayTypeName","src":"2546:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":17506,"mutability":"mutable","name":"depositQueue_","nameLocation":"2599:13:54","nodeType":"VariableDeclaration","scope":17526,"src":"2584:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17504,"name":"uint8","nodeType":"ElementaryTypeName","src":"2584:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17505,"nodeType":"ArrayTypeName","src":"2584:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":17509,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"2633:14:54","nodeType":"VariableDeclaration","scope":17526,"src":"2618:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17507,"name":"uint8","nodeType":"ElementaryTypeName","src":"2618:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17508,"nodeType":"ArrayTypeName","src":"2618:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2407:244:54"},"returnParameters":{"id":17513,"nodeType":"ParameterList","parameters":[],"src":"2679:0:54"},"scope":17980,"src":"2388:478:54","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":17567,"nodeType":"Block","src":"3228:162:54","statements":[{"expression":{"arguments":[{"id":17554,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17528,"src":"3261:5:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":17555,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17530,"src":"3268:7:54","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":17556,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17532,"src":"3277:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17557,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17535,"src":"3285:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":17553,"name":"__PermissionedERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18426,"src":"3234:26:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (string memory,string memory,address,contract IERC20)"}},"id":17558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3234:58:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17559,"nodeType":"ExpressionStatement","src":"3234:58:54"},{"expression":{"arguments":[{"id":17561,"name":"strategies_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17539,"src":"3323:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[] memory"}},{"id":17562,"name":"initStrategyDatas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17542,"src":"3336:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},{"id":17563,"name":"depositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17545,"src":"3355:13:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}},{"id":17564,"name":"withdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17548,"src":"3370:14:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$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":17560,"name":"__MSVBase_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16143,"src":"3298:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IInvestStrategy_$22374_$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":17565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3298:87:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17566,"nodeType":"ExpressionStatement","src":"3298:87:54"}]},"id":17568,"implemented":true,"kind":"function","modifiers":[{"id":17551,"kind":"modifierInvocation","modifierName":{"id":17550,"name":"onlyInitializing","nameLocations":["3211:16:54"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3211:16:54"},"nodeType":"ModifierInvocation","src":"3211:16:54"}],"name":"__MultiStrategyERC4626_init","nameLocation":"2930:27:54","nodeType":"FunctionDefinition","parameters":{"id":17549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17528,"mutability":"mutable","name":"name_","nameLocation":"2977:5:54","nodeType":"VariableDeclaration","scope":17568,"src":"2963:19:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17527,"name":"string","nodeType":"ElementaryTypeName","src":"2963:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17530,"mutability":"mutable","name":"symbol_","nameLocation":"3002:7:54","nodeType":"VariableDeclaration","scope":17568,"src":"2988:21:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":17529,"name":"string","nodeType":"ElementaryTypeName","src":"2988:6:54","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":17532,"mutability":"mutable","name":"admin_","nameLocation":"3023:6:54","nodeType":"VariableDeclaration","scope":17568,"src":"3015:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17531,"name":"address","nodeType":"ElementaryTypeName","src":"3015:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17535,"mutability":"mutable","name":"asset_","nameLocation":"3042:6:54","nodeType":"VariableDeclaration","scope":17568,"src":"3035:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":17534,"nodeType":"UserDefinedTypeName","pathNode":{"id":17533,"name":"IERC20","nameLocations":["3035:6:54"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"3035:6:54"},"referencedDeclaration":8656,"src":"3035:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":17539,"mutability":"mutable","name":"strategies_","nameLocation":"3079:11:54","nodeType":"VariableDeclaration","scope":17568,"src":"3054:36:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptr","typeString":"contract IInvestStrategy[]"},"typeName":{"baseType":{"id":17537,"nodeType":"UserDefinedTypeName","pathNode":{"id":17536,"name":"IInvestStrategy","nameLocations":["3054:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3054:15:54"},"referencedDeclaration":22374,"src":"3054:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":17538,"nodeType":"ArrayTypeName","src":"3054:17:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$dyn_storage_ptr","typeString":"contract IInvestStrategy[]"}},"visibility":"internal"},{"constant":false,"id":17542,"mutability":"mutable","name":"initStrategyDatas","nameLocation":"3111:17:54","nodeType":"VariableDeclaration","scope":17568,"src":"3096:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":17540,"name":"bytes","nodeType":"ElementaryTypeName","src":"3096:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":17541,"nodeType":"ArrayTypeName","src":"3096:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":17545,"mutability":"mutable","name":"depositQueue_","nameLocation":"3149:13:54","nodeType":"VariableDeclaration","scope":17568,"src":"3134:28:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17543,"name":"uint8","nodeType":"ElementaryTypeName","src":"3134:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17544,"nodeType":"ArrayTypeName","src":"3134:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"},{"constant":false,"id":17548,"mutability":"mutable","name":"withdrawQueue_","nameLocation":"3183:14:54","nodeType":"VariableDeclaration","scope":17568,"src":"3168:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17546,"name":"uint8","nodeType":"ElementaryTypeName","src":"3168:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17547,"nodeType":"ArrayTypeName","src":"3168:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"2957:244:54"},"returnParameters":{"id":17552,"nodeType":"ParameterList","parameters":[],"src":"3228:0:54"},"scope":17980,"src":"2921:469:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[15912],"body":{"id":17577,"nodeType":"Block","src":"3453:25:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17574,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"3466:5:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":17575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3466:7:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":17573,"id":17576,"nodeType":"Return","src":"3459:14:54"}]},"id":17578,"implemented":true,"kind":"function","modifiers":[],"name":"_asset","nameLocation":"3403:6:54","nodeType":"FunctionDefinition","overrides":{"id":17570,"nodeType":"OverrideSpecifier","overrides":[],"src":"3426:8:54"},"parameters":{"id":17569,"nodeType":"ParameterList","parameters":[],"src":"3409:2:54"},"returnParameters":{"id":17573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17572,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17578,"src":"3444:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17571,"name":"address","nodeType":"ElementaryTypeName","src":"3444:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3443:9:54"},"scope":17980,"src":"3394:84:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[4005],"body":{"id":17598,"nodeType":"Block","src":"3592:99:54","statements":[{"assignments":[17588],"declarations":[{"constant":false,"id":17588,"mutability":"mutable","name":"ownerAssets","nameLocation":"3606:11:54","nodeType":"VariableDeclaration","scope":17598,"src":"3598:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17587,"name":"uint256","nodeType":"ElementaryTypeName","src":"3598:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17593,"initialValue":{"arguments":[{"id":17591,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17581,"src":"3638:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17589,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3620:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3626:11:54","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4005,"src":"3620:17:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":17592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3620:24:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3598:46:54"},{"expression":{"arguments":[{"id":17595,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17588,"src":"3674:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17594,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"3657:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":17596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3657:29:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17586,"id":17597,"nodeType":"Return","src":"3650:36:54"}]},"documentation":{"id":17579,"nodeType":"StructuredDocumentation","src":"3482:24:54","text":"@inheritdoc IERC4626"},"functionSelector":"ce96cb77","id":17599,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"3518:11:54","nodeType":"FunctionDefinition","overrides":{"id":17583,"nodeType":"OverrideSpecifier","overrides":[],"src":"3565:8:54"},"parameters":{"id":17582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17581,"mutability":"mutable","name":"owner","nameLocation":"3538:5:54","nodeType":"VariableDeclaration","scope":17599,"src":"3530:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17580,"name":"address","nodeType":"ElementaryTypeName","src":"3530:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3529:15:54"},"returnParameters":{"id":17586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17599,"src":"3583:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17584,"name":"uint256","nodeType":"ElementaryTypeName","src":"3583:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3582:9:54"},"scope":17980,"src":"3509:182:54","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4018],"body":{"id":17643,"nodeType":"Block","src":"3803:277:54","statements":[{"assignments":[17609],"declarations":[{"constant":false,"id":17609,"mutability":"mutable","name":"shares","nameLocation":"3817:6:54","nodeType":"VariableDeclaration","scope":17643,"src":"3809:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17608,"name":"uint256","nodeType":"ElementaryTypeName","src":"3809:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17614,"initialValue":{"arguments":[{"id":17612,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17602,"src":"3842:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17610,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3826:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3832:9:54","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4018,"src":"3826:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":17613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3826:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3809:39:54"},{"assignments":[17616],"declarations":[{"constant":false,"id":17616,"mutability":"mutable","name":"ownerAssets","nameLocation":"3862:11:54","nodeType":"VariableDeclaration","scope":17643,"src":"3854:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17615,"name":"uint256","nodeType":"ElementaryTypeName","src":"3854:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17623,"initialValue":{"arguments":[{"id":17618,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17609,"src":"3893:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":17619,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"3901:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":17620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3906:8:54","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"3901:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":17621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3915:5:54","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"3901:19:54","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":17617,"name":"_convertToAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4320,"src":"3876:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":17622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3876:45:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3854:67:54"},{"assignments":[17625],"declarations":[{"constant":false,"id":17625,"mutability":"mutable","name":"maxAssets","nameLocation":"3935:9:54","nodeType":"VariableDeclaration","scope":17643,"src":"3927:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17624,"name":"uint256","nodeType":"ElementaryTypeName","src":"3927:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17629,"initialValue":{"arguments":[{"id":17627,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17616,"src":"3964:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17626,"name":"_maxWithdrawable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16202,"src":"3947:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":17628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3947:29:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3927:49:54"},{"expression":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17630,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17625,"src":"3990:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":17631,"name":"ownerAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17616,"src":"4003:11:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3990:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":17633,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3989:26:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":17636,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17625,"src":"4044:9:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":17637,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4055:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":17638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4060:8:54","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"4055:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":17639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4069:5:54","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"4055:19:54","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":17635,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4027:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":17640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4027:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"3989:86:54","trueExpression":{"id":17634,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17609,"src":"4018:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17607,"id":17642,"nodeType":"Return","src":"3982:93:54"}]},"documentation":{"id":17600,"nodeType":"StructuredDocumentation","src":"3695:24:54","text":"@inheritdoc IERC4626"},"functionSelector":"d905777e","id":17644,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"3731:9:54","nodeType":"FunctionDefinition","overrides":{"id":17604,"nodeType":"OverrideSpecifier","overrides":[],"src":"3776:8:54"},"parameters":{"id":17603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17602,"mutability":"mutable","name":"owner","nameLocation":"3749:5:54","nodeType":"VariableDeclaration","scope":17644,"src":"3741:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17601,"name":"address","nodeType":"ElementaryTypeName","src":"3741:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3740:15:54"},"returnParameters":{"id":17607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17644,"src":"3794:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17605,"name":"uint256","nodeType":"ElementaryTypeName","src":"3794:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3793:9:54"},"scope":17980,"src":"3722:358:54","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18488],"body":{"id":17665,"nodeType":"Block","src":"4197:83:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17655,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17647,"src":"4224:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17653,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4207:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4213:10:54","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":18488,"src":"4207:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":17656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4207:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4234:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4207:28:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17661,"nodeType":"IfStatement","src":"4203:42:54","trueBody":{"expression":{"hexValue":"30","id":17659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4244:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":17652,"id":17660,"nodeType":"Return","src":"4237:8:54"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17662,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16260,"src":"4258:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4258:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17652,"id":17664,"nodeType":"Return","src":"4251:24:54"}]},"documentation":{"id":17645,"nodeType":"StructuredDocumentation","src":"4084:24:54","text":"@inheritdoc IERC4626"},"functionSelector":"402d267d","id":17666,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"4120:10:54","nodeType":"FunctionDefinition","overrides":{"id":17649,"nodeType":"OverrideSpecifier","overrides":[],"src":"4166:8:54"},"parameters":{"id":17648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17647,"mutability":"mutable","name":"owner","nameLocation":"4139:5:54","nodeType":"VariableDeclaration","scope":17666,"src":"4131:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17646,"name":"address","nodeType":"ElementaryTypeName","src":"4131:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4130:15:54"},"returnParameters":{"id":17652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17651,"mutability":"mutable","name":"ret","nameLocation":"4192:3:54","nodeType":"VariableDeclaration","scope":17666,"src":"4184:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17650,"name":"uint256","nodeType":"ElementaryTypeName","src":"4184:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4183:13:54"},"scope":17980,"src":"4111:169:54","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18511],"body":{"id":17709,"nodeType":"Block","src":"4390:198:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":17677,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17669,"src":"4414:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":17675,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4400:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4406:7:54","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":18511,"src":"4400:13:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":17678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:20:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":17679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4424:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4400:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":17683,"nodeType":"IfStatement","src":"4396:39:54","trueBody":{"expression":{"hexValue":"30","id":17681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4434:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":17674,"id":17682,"nodeType":"Return","src":"4427:8:54"}},{"assignments":[17685],"declarations":[{"constant":false,"id":17685,"mutability":"mutable","name":"maxDep","nameLocation":"4449:6:54","nodeType":"VariableDeclaration","scope":17709,"src":"4441:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17684,"name":"uint256","nodeType":"ElementaryTypeName","src":"4441:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":17688,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":17686,"name":"_maxDepositable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16260,"src":"4458:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4458:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4441:34:54"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":17695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":17689,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17685,"src":"4488:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":17692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4503:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17691,"name":"uint256","nodeType":"ElementaryTypeName","src":"4503:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17690,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4498:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4498:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4512:3:54","memberName":"max","nodeType":"MemberAccess","src":"4498:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4488:27:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":17702,"name":"maxDep","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17685,"src":"4555:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":17703,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4563:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":17704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4568:8:54","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"4563:13:54","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":17705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4577:5:54","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"4563:19:54","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":17701,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4538:16:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":17706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4538:45:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":17707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4488:95:54","trueExpression":{"expression":{"arguments":[{"id":17698,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4523:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":17697,"name":"uint256","nodeType":"ElementaryTypeName","src":"4523:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":17696,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4518:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":17699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4518:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":17700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4532:3:54","memberName":"max","nodeType":"MemberAccess","src":"4518:17:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17674,"id":17708,"nodeType":"Return","src":"4481:102:54"}]},"documentation":{"id":17667,"nodeType":"StructuredDocumentation","src":"4284:24:54","text":"@inheritdoc IERC4626"},"functionSelector":"c63d75b6","id":17710,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"4320:7:54","nodeType":"FunctionDefinition","overrides":{"id":17671,"nodeType":"OverrideSpecifier","overrides":[],"src":"4363:8:54"},"parameters":{"id":17670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17669,"mutability":"mutable","name":"owner","nameLocation":"4336:5:54","nodeType":"VariableDeclaration","scope":17710,"src":"4328:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17668,"name":"address","nodeType":"ElementaryTypeName","src":"4328:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4327:15:54"},"returnParameters":{"id":17674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17673,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17710,"src":"4381:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17672,"name":"uint256","nodeType":"ElementaryTypeName","src":"4381:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4380:9:54"},"scope":17980,"src":"4311:277:54","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3925],"body":{"id":17720,"nodeType":"Block","src":"4696:32:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":17717,"name":"_totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16298,"src":"4709:12:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":17718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4709:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17716,"id":17719,"nodeType":"Return","src":"4702:21:54"}]},"documentation":{"id":17711,"nodeType":"StructuredDocumentation","src":"4592:24:54","text":"@inheritdoc IERC4626"},"functionSelector":"01e1d114","id":17721,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4628:11:54","nodeType":"FunctionDefinition","overrides":{"id":17713,"nodeType":"OverrideSpecifier","overrides":[],"src":"4662:8:54"},"parameters":{"id":17712,"nodeType":"ParameterList","parameters":[],"src":"4639:2:54"},"returnParameters":{"id":17716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17715,"mutability":"mutable","name":"assets","nameLocation":"4688:6:54","nodeType":"VariableDeclaration","scope":17721,"src":"4680:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17714,"name":"uint256","nodeType":"ElementaryTypeName","src":"4680:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4679:16:54"},"scope":17980,"src":"4619:109:54","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4418],"body":{"id":17750,"nodeType":"Block","src":"4919:104:54","statements":[{"expression":{"arguments":[{"id":17737,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"4949:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17736,"name":"_withdrawFromStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16374,"src":"4925:23:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4925:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17739,"nodeType":"ExpressionStatement","src":"4925:31:54"},{"expression":{"arguments":[{"id":17743,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17724,"src":"4978:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17744,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17726,"src":"4986:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17745,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17728,"src":"4996:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17746,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17730,"src":"5003:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17747,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17732,"src":"5011:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17740,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4962:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4968:9:54","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4418,"src":"4962:15:54","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":17748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4962:56:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17749,"nodeType":"ExpressionStatement","src":"4962:56:54"}]},"documentation":{"id":17722,"nodeType":"StructuredDocumentation","src":"4732:34:54","text":"@inheritdoc ERC4626Upgradeable"},"id":17751,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"4778:9:54","nodeType":"FunctionDefinition","overrides":{"id":17734,"nodeType":"OverrideSpecifier","overrides":[],"src":"4910:8:54"},"parameters":{"id":17733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17724,"mutability":"mutable","name":"caller","nameLocation":"4801:6:54","nodeType":"VariableDeclaration","scope":17751,"src":"4793:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17723,"name":"address","nodeType":"ElementaryTypeName","src":"4793:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17726,"mutability":"mutable","name":"receiver","nameLocation":"4821:8:54","nodeType":"VariableDeclaration","scope":17751,"src":"4813:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17725,"name":"address","nodeType":"ElementaryTypeName","src":"4813:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17728,"mutability":"mutable","name":"owner","nameLocation":"4843:5:54","nodeType":"VariableDeclaration","scope":17751,"src":"4835:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17727,"name":"address","nodeType":"ElementaryTypeName","src":"4835:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17730,"mutability":"mutable","name":"assets","nameLocation":"4862:6:54","nodeType":"VariableDeclaration","scope":17751,"src":"4854:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17729,"name":"uint256","nodeType":"ElementaryTypeName","src":"4854:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17732,"mutability":"mutable","name":"shares","nameLocation":"4882:6:54","nodeType":"VariableDeclaration","scope":17751,"src":"4874:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17731,"name":"uint256","nodeType":"ElementaryTypeName","src":"4874:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4787:105:54"},"returnParameters":{"id":17735,"nodeType":"ParameterList","parameters":[],"src":"4919:0:54"},"scope":17980,"src":"4769:254:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4364],"body":{"id":17777,"nodeType":"Block","src":"5174:162:54","statements":[{"expression":{"arguments":[{"id":17767,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17754,"src":"5264:6:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17768,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17756,"src":"5272:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":17769,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"5282:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":17770,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17760,"src":"5290:6:54","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":17764,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5249:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5255:8:54","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4364,"src":"5249:14:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":17771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5249:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17772,"nodeType":"ExpressionStatement","src":"5249:48:54"},{"expression":{"arguments":[{"id":17774,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17758,"src":"5324:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":17773,"name":"_depositToStrategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16450,"src":"5303:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":17775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5303:28:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17776,"nodeType":"ExpressionStatement","src":"5303:28:54"}]},"documentation":{"id":17752,"nodeType":"StructuredDocumentation","src":"5027:34:54","text":"@inheritdoc ERC4626Upgradeable"},"id":17778,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"5073:8:54","nodeType":"FunctionDefinition","overrides":{"id":17762,"nodeType":"OverrideSpecifier","overrides":[],"src":"5165:8:54"},"parameters":{"id":17761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17754,"mutability":"mutable","name":"caller","nameLocation":"5090:6:54","nodeType":"VariableDeclaration","scope":17778,"src":"5082:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17753,"name":"address","nodeType":"ElementaryTypeName","src":"5082:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17756,"mutability":"mutable","name":"receiver","nameLocation":"5106:8:54","nodeType":"VariableDeclaration","scope":17778,"src":"5098:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17755,"name":"address","nodeType":"ElementaryTypeName","src":"5098:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":17758,"mutability":"mutable","name":"assets","nameLocation":"5124:6:54","nodeType":"VariableDeclaration","scope":17778,"src":"5116:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17757,"name":"uint256","nodeType":"ElementaryTypeName","src":"5116:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":17760,"mutability":"mutable","name":"shares","nameLocation":"5140:6:54","nodeType":"VariableDeclaration","scope":17778,"src":"5132:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5132:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5081:66:54"},"returnParameters":{"id":17763,"nodeType":"ParameterList","parameters":[],"src":"5174:0:54"},"scope":17980,"src":"5064:272:54","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[16653],"body":{"id":17804,"nodeType":"Block","src":"5550:85:54","statements":[{"expression":{"arguments":[{"id":17798,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17781,"src":"5578:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17799,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17784,"src":"5593:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":17800,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17786,"src":"5606:16:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":17801,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17788,"src":"5624:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17795,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5556:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5562:15:54","memberName":"replaceStrategy","nodeType":"MemberAccess","referencedDeclaration":16653,"src":"5556:21:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$_t_bool_$returns$__$","typeString":"function (uint8,contract IInvestStrategy,bytes memory,bool)"}},"id":17802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5556:74:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17803,"nodeType":"ExpressionStatement","src":"5556:74:54"}]},"documentation":{"id":17779,"nodeType":"StructuredDocumentation","src":"5340:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"7ac445a7","id":17805,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17792,"name":"STRATEGY_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17463,"src":"5529:19:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17793,"kind":"modifierInvocation","modifierName":{"id":17791,"name":"onlyRole","nameLocations":["5520:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5520:8:54"},"nodeType":"ModifierInvocation","src":"5520:29:54"}],"name":"replaceStrategy","nameLocation":"5375:15:54","nodeType":"FunctionDefinition","overrides":{"id":17790,"nodeType":"OverrideSpecifier","overrides":[],"src":"5511:8:54"},"parameters":{"id":17789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17781,"mutability":"mutable","name":"strategyIndex","nameLocation":"5402:13:54","nodeType":"VariableDeclaration","scope":17805,"src":"5396:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17780,"name":"uint8","nodeType":"ElementaryTypeName","src":"5396:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17784,"mutability":"mutable","name":"newStrategy","nameLocation":"5437:11:54","nodeType":"VariableDeclaration","scope":17805,"src":"5421:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":17783,"nodeType":"UserDefinedTypeName","pathNode":{"id":17782,"name":"IInvestStrategy","nameLocations":["5421:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"5421:15:54"},"referencedDeclaration":22374,"src":"5421:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":17786,"mutability":"mutable","name":"initStrategyData","nameLocation":"5467:16:54","nodeType":"VariableDeclaration","scope":17805,"src":"5454:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17785,"name":"bytes","nodeType":"ElementaryTypeName","src":"5454:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17788,"mutability":"mutable","name":"force","nameLocation":"5494:5:54","nodeType":"VariableDeclaration","scope":17805,"src":"5489:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17787,"name":"bool","nodeType":"ElementaryTypeName","src":"5489:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5390:113:54"},"returnParameters":{"id":17794,"nodeType":"ParameterList","parameters":[],"src":"5550:0:54"},"scope":17980,"src":"5366:269:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[16764],"body":{"id":17825,"nodeType":"Block","src":"5804:59:54","statements":[{"expression":{"arguments":[{"id":17821,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17809,"src":"5828:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":17822,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17811,"src":"5841:16:54","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":17818,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5810:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5816:11:54","memberName":"addStrategy","nodeType":"MemberAccess","referencedDeclaration":16764,"src":"5810:17:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":17823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5810:48:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17824,"nodeType":"ExpressionStatement","src":"5810:48:54"}]},"documentation":{"id":17806,"nodeType":"StructuredDocumentation","src":"5639:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"7aeedf2a","id":17826,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17815,"name":"STRATEGY_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17463,"src":"5783:19:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17816,"kind":"modifierInvocation","modifierName":{"id":17814,"name":"onlyRole","nameLocations":["5774:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5774:8:54"},"nodeType":"ModifierInvocation","src":"5774:29:54"}],"name":"addStrategy","nameLocation":"5674:11:54","nodeType":"FunctionDefinition","overrides":{"id":17813,"nodeType":"OverrideSpecifier","overrides":[],"src":"5765:8:54"},"parameters":{"id":17812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17809,"mutability":"mutable","name":"newStrategy","nameLocation":"5707:11:54","nodeType":"VariableDeclaration","scope":17826,"src":"5691:27:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":17808,"nodeType":"UserDefinedTypeName","pathNode":{"id":17807,"name":"IInvestStrategy","nameLocations":["5691:15:54"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"5691:15:54"},"referencedDeclaration":22374,"src":"5691:15:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":17811,"mutability":"mutable","name":"initStrategyData","nameLocation":"5737:16:54","nodeType":"VariableDeclaration","scope":17826,"src":"5724:29:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17810,"name":"bytes","nodeType":"ElementaryTypeName","src":"5724:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5685:72:54"},"returnParameters":{"id":17817,"nodeType":"ParameterList","parameters":[],"src":"5804:0:54"},"scope":17980,"src":"5665:198:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[17046],"body":{"id":17845,"nodeType":"Block","src":"5996:53:54","statements":[{"expression":{"arguments":[{"id":17841,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17829,"src":"6023:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17842,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17831,"src":"6038:5:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":17838,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6002:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6008:14:54","memberName":"removeStrategy","nodeType":"MemberAccess","referencedDeclaration":17046,"src":"6002:20:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$_t_bool_$returns$__$","typeString":"function (uint8,bool)"}},"id":17843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6002:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17844,"nodeType":"ExpressionStatement","src":"6002:42:54"}]},"documentation":{"id":17827,"nodeType":"StructuredDocumentation","src":"5867:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"96da35da","id":17846,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17835,"name":"STRATEGY_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17463,"src":"5975:19:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17836,"kind":"modifierInvocation","modifierName":{"id":17834,"name":"onlyRole","nameLocations":["5966:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"5966:8:54"},"nodeType":"ModifierInvocation","src":"5966:29:54"}],"name":"removeStrategy","nameLocation":"5902:14:54","nodeType":"FunctionDefinition","overrides":{"id":17833,"nodeType":"OverrideSpecifier","overrides":[],"src":"5957:8:54"},"parameters":{"id":17832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17829,"mutability":"mutable","name":"strategyIndex","nameLocation":"5923:13:54","nodeType":"VariableDeclaration","scope":17846,"src":"5917:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17828,"name":"uint8","nodeType":"ElementaryTypeName","src":"5917:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17831,"mutability":"mutable","name":"force","nameLocation":"5943:5:54","nodeType":"VariableDeclaration","scope":17846,"src":"5938:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17830,"name":"bool","nodeType":"ElementaryTypeName","src":"5938:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5916:33:54"},"returnParameters":{"id":17837,"nodeType":"ParameterList","parameters":[],"src":"5996:0:54"},"scope":17980,"src":"5893:156:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[17158],"body":{"id":17863,"nodeType":"Block","src":"6183:53:54","statements":[{"expression":{"arguments":[{"id":17860,"name":"newDepositQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17850,"src":"6214: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"}],"expression":{"id":17857,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6189:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6195:18:54","memberName":"changeDepositQueue","nodeType":"MemberAccess","referencedDeclaration":17158,"src":"6189:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6189:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17862,"nodeType":"ExpressionStatement","src":"6189:42:54"}]},"documentation":{"id":17847,"nodeType":"StructuredDocumentation","src":"6053:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"914abf4f","id":17864,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17854,"name":"QUEUE_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17468,"src":"6165:16:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17855,"kind":"modifierInvocation","modifierName":{"id":17853,"name":"onlyRole","nameLocations":["6156:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"6156:8:54"},"nodeType":"ModifierInvocation","src":"6156:26:54"}],"name":"changeDepositQueue","nameLocation":"6088:18:54","nodeType":"FunctionDefinition","overrides":{"id":17852,"nodeType":"OverrideSpecifier","overrides":[],"src":"6147:8:54"},"parameters":{"id":17851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17850,"mutability":"mutable","name":"newDepositQueue_","nameLocation":"6122:16:54","nodeType":"VariableDeclaration","scope":17864,"src":"6107:31:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17848,"name":"uint8","nodeType":"ElementaryTypeName","src":"6107:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17849,"nodeType":"ArrayTypeName","src":"6107:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"6106:33:54"},"returnParameters":{"id":17856,"nodeType":"ParameterList","parameters":[],"src":"6183:0:54"},"scope":17980,"src":"6079:157:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[17270],"body":{"id":17881,"nodeType":"Block","src":"6372:55:54","statements":[{"expression":{"arguments":[{"id":17878,"name":"newWithdrawQueue_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17868,"src":"6404: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"}],"expression":{"id":17875,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6378:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6384:19:54","memberName":"changeWithdrawQueue","nodeType":"MemberAccess","referencedDeclaration":17270,"src":"6378:25:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint8_$dyn_memory_ptr_$returns$__$","typeString":"function (uint8[] memory)"}},"id":17879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6378:44:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":17880,"nodeType":"ExpressionStatement","src":"6378:44:54"}]},"documentation":{"id":17865,"nodeType":"StructuredDocumentation","src":"6240:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"bd577eb6","id":17882,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17872,"name":"QUEUE_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17468,"src":"6354:16:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17873,"kind":"modifierInvocation","modifierName":{"id":17871,"name":"onlyRole","nameLocations":["6345:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"6345:8:54"},"nodeType":"ModifierInvocation","src":"6345:26:54"}],"name":"changeWithdrawQueue","nameLocation":"6275:19:54","nodeType":"FunctionDefinition","overrides":{"id":17870,"nodeType":"OverrideSpecifier","overrides":[],"src":"6336:8:54"},"parameters":{"id":17869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17868,"mutability":"mutable","name":"newWithdrawQueue_","nameLocation":"6310:17:54","nodeType":"VariableDeclaration","scope":17882,"src":"6295:32:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_memory_ptr","typeString":"uint8[]"},"typeName":{"baseType":{"id":17866,"name":"uint8","nodeType":"ElementaryTypeName","src":"6295:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":17867,"nodeType":"ArrayTypeName","src":"6295:7:54","typeDescriptions":{"typeIdentifier":"t_array$_t_uint8_$dyn_storage_ptr","typeString":"uint8[]"}},"visibility":"internal"}],"src":"6294:34:54"},"returnParameters":{"id":17874,"nodeType":"ParameterList","parameters":[],"src":"6372:0:54"},"scope":17980,"src":"6266:161:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[17397],"body":{"id":17905,"nodeType":"Block","src":"6612:73:54","statements":[{"expression":{"arguments":[{"id":17900,"name":"strategyFromIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17885,"src":"6641:15:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17901,"name":"strategyToIdx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17887,"src":"6658:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17902,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17889,"src":"6673:6:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":17898,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6625:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_MultiStrategyERC4626_$17980_$","typeString":"type(contract super MultiStrategyERC4626)"}},"id":17899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6631:9:54","memberName":"rebalance","nodeType":"MemberAccess","referencedDeclaration":17397,"src":"6625:15:54","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$_t_uint8_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint8,uint8,uint256) returns (uint256)"}},"id":17903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6625:55:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":17897,"id":17904,"nodeType":"Return","src":"6618:62:54"}]},"documentation":{"id":17883,"nodeType":"StructuredDocumentation","src":"6431:23:54","text":"@inheritdoc MSVBase"},"functionSelector":"e682324d","id":17906,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17893,"name":"REBALANCER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17473,"src":"6577:15:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17894,"kind":"modifierInvocation","modifierName":{"id":17892,"name":"onlyRole","nameLocations":["6568:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"6568:8:54"},"nodeType":"ModifierInvocation","src":"6568:25:54"}],"name":"rebalance","nameLocation":"6466:9:54","nodeType":"FunctionDefinition","overrides":{"id":17891,"nodeType":"OverrideSpecifier","overrides":[],"src":"6559:8:54"},"parameters":{"id":17890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17885,"mutability":"mutable","name":"strategyFromIdx","nameLocation":"6487:15:54","nodeType":"VariableDeclaration","scope":17906,"src":"6481:21:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17884,"name":"uint8","nodeType":"ElementaryTypeName","src":"6481:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17887,"mutability":"mutable","name":"strategyToIdx","nameLocation":"6514:13:54","nodeType":"VariableDeclaration","scope":17906,"src":"6508:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17886,"name":"uint8","nodeType":"ElementaryTypeName","src":"6508:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17889,"mutability":"mutable","name":"amount","nameLocation":"6541:6:54","nodeType":"VariableDeclaration","scope":17906,"src":"6533:14:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17888,"name":"uint256","nodeType":"ElementaryTypeName","src":"6533:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6475:76:54"},"returnParameters":{"id":17897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17906,"src":"6603:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17895,"name":"uint256","nodeType":"ElementaryTypeName","src":"6603:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6602:9:54"},"scope":17980,"src":"6457:228:54","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":17957,"nodeType":"Block","src":"7244:232:54","statements":[{"assignments":[17917],"declarations":[{"constant":false,"id":17917,"mutability":"mutable","name":"strategy","nameLocation":"7258:8:54","nodeType":"VariableDeclaration","scope":17957,"src":"7250:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":17916,"name":"address","nodeType":"ElementaryTypeName","src":"7250:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":17924,"initialValue":{"arguments":[{"baseExpression":{"id":17920,"name":"_strategies","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15812,"src":"7277:11:54","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IInvestStrategy_$22374_$32_storage","typeString":"contract IInvestStrategy[32] storage ref"}},"id":17922,"indexExpression":{"id":17921,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17909,"src":"7289:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7277:26:54","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}],"id":17919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7269:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":17918,"name":"address","nodeType":"ElementaryTypeName","src":"7269:7:54","typeDescriptions":{}}},"id":17923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7269:35:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7250:54:54"},{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":17955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":17953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":17942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":17929,"name":"strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17917,"src":"7339:8:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7331:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":17927,"name":"bytes20","nodeType":"ElementaryTypeName","src":"7331:7:54","typeDescriptions":{}}},"id":17930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7331:17:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":17926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7323:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":17925,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7323:7:54","typeDescriptions":{}}},"id":17931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7323:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":17940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":17936,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17911,"src":"7374:6:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7367:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":17934,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7367:6:54","typeDescriptions":{}}},"id":17937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7367:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":17933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7359:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":17932,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7359:7:54","typeDescriptions":{}}},"id":17938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7359:23:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313630","id":17939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7386:3:54","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},"src":"7359:30:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7358:32:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7323:67:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":17951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":17947,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17909,"src":"7415:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7408:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":17945,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7408:6:54","typeDescriptions":{}}},"id":17948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7408:21:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":17944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7400:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":17943,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7400:7:54","typeDescriptions":{}}},"id":17949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7400:30:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313638","id":17950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7434:3:54","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},"src":"7400:37:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17952,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7399:39:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7323:115:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":17954,"name":"FORWARD_TO_STRATEGY_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17478,"src":"7447:24:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7323:148:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":17915,"id":17956,"nodeType":"Return","src":"7310:161:54"}]},"documentation":{"id":17907,"nodeType":"StructuredDocumentation","src":"6689:448:54","text":" @dev Returns the AccessControl role required to call forwardToStrategy on a given strategy and 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 role The bytes32 role required to execute the call"},"functionSelector":"128b772f","id":17958,"implemented":true,"kind":"function","modifiers":[],"name":"getForwardToStrategyRole","nameLocation":"7149:24:54","nodeType":"FunctionDefinition","parameters":{"id":17912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17909,"mutability":"mutable","name":"strategyIndex","nameLocation":"7180:13:54","nodeType":"VariableDeclaration","scope":17958,"src":"7174:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17908,"name":"uint8","nodeType":"ElementaryTypeName","src":"7174:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17911,"mutability":"mutable","name":"method","nameLocation":"7201:6:54","nodeType":"VariableDeclaration","scope":17958,"src":"7195:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17910,"name":"uint8","nodeType":"ElementaryTypeName","src":"7195:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"7173:35:54"},"returnParameters":{"id":17915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17914,"mutability":"mutable","name":"role","nameLocation":"7238:4:54","nodeType":"VariableDeclaration","scope":17958,"src":"7230:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7230:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7229:14:54"},"scope":17980,"src":"7140:336:54","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[16517],"body":{"id":17978,"nodeType":"Block","src":"7779:2:54","statements":[]},"documentation":{"id":17959,"nodeType":"StructuredDocumentation","src":"7480:23:54","text":"@inheritdoc MSVBase"},"id":17979,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":17969,"name":"FORWARD_TO_STRATEGY_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17478,"src":"7689:24:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17970,"kind":"modifierInvocation","modifierName":{"id":17968,"name":"onlyRole","nameLocations":["7680:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"7680:8:54"},"nodeType":"ModifierInvocation","src":"7680:34:54"},{"arguments":[{"arguments":[{"id":17973,"name":"strategyIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17961,"src":"7753:13:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":17974,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17963,"src":"7768:6:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":17972,"name":"getForwardToStrategyRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17958,"src":"7728:24:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint8_$_t_uint8_$returns$_t_bytes32_$","typeString":"function (uint8,uint8) view returns (bytes32)"}},"id":17975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7728:47:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":17976,"kind":"modifierInvocation","modifierName":{"id":17971,"name":"onlyRole","nameLocations":["7719:8:54"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"7719:8:54"},"nodeType":"ModifierInvocation","src":"7719:57:54"}],"name":"_checkForwardToStrategy","nameLocation":"7552:23:54","nodeType":"FunctionDefinition","overrides":{"id":17967,"nodeType":"OverrideSpecifier","overrides":[],"src":"7667:8:54"},"parameters":{"id":17966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17961,"mutability":"mutable","name":"strategyIndex","nameLocation":"7587:13:54","nodeType":"VariableDeclaration","scope":17979,"src":"7581:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17960,"name":"uint8","nodeType":"ElementaryTypeName","src":"7581:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17963,"mutability":"mutable","name":"method","nameLocation":"7612:6:54","nodeType":"VariableDeclaration","scope":17979,"src":"7606:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":17962,"name":"uint8","nodeType":"ElementaryTypeName","src":"7606:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":17965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":17979,"src":"7624:12:54","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":17964,"name":"bytes","nodeType":"ElementaryTypeName","src":"7624:5:54","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7575:65:54"},"returnParameters":{"id":17977,"nodeType":"ParameterList","parameters":[],"src":"7779:0:54"},"scope":17980,"src":"7543:238:54","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":17981,"src":"1211:6572:54","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,4819,4822,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,15393,15868,15870,15875,15879,15883,15885,15887,15889,15891,15893,15895,15899,15903,15907,18375],"usedEvents":[2635,4831,4840,4849,7347,7389,7401,8590,8599,15379,15383,15387,15391,15820,15824,15828,15832,15839,15846,15851,15856,15866]}],"src":"39:7745:54"},"id":54},"contracts/OutflowLimitedAMMSV.sol":{"ast":{"absolutePath":"contracts/OutflowLimitedAMMSV.sol","exportedSymbols":{"AccessManagedMSV":[14237],"ERC4626Upgradeable":[4427],"OutflowLimitedAMMSV":[18336],"SafeCast":[13074]},"id":18337,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":17982,"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":17984,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18337,"sourceUnit":4428,"src":"64:117:55","symbolAliases":[{"foreign":{"id":17983,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"72:18:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/AccessManagedMSV.sol","file":"./AccessManagedMSV.sol","id":17986,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18337,"sourceUnit":14238,"src":"182:56:55","symbolAliases":[{"foreign":{"id":17985,"name":"AccessManagedMSV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14237,"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":17988,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18337,"sourceUnit":13075,"src":"239:73:55","symbolAliases":[{"foreign":{"id":17987,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13074,"src":"247:8:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":17990,"name":"AccessManagedMSV","nameLocations":["1186:16:55"],"nodeType":"IdentifierPath","referencedDeclaration":14237,"src":"1186:16:55"},"id":17991,"nodeType":"InheritanceSpecifier","src":"1186:16:55"}],"canonicalName":"OutflowLimitedAMMSV","contractDependencies":[],"contractKind":"contract","documentation":{"id":17989,"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":18336,"linearizedBaseContracts":[18336,14237,4427,7538,3663,7590,8682,8656,4473,3046,7548,2864,17437,22298],"name":"OutflowLimitedAMMSV","nameLocation":"1163:19:55","nodeType":"ContractDefinition","nodes":[{"global":false,"id":17994,"libraryName":{"id":17992,"name":"SafeCast","nameLocations":["1213:8:55"],"nodeType":"IdentifierPath","referencedDeclaration":13074,"src":"1213:8:55"},"nodeType":"UsingForDirective","src":"1207:27:55","typeName":{"id":17993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"OutflowLimitedAMMSV.SlotIndex","id":17996,"name":"SlotIndex","nameLocation":"1243:9:55","nodeType":"UserDefinedValueTypeDefinition","src":"1238:26:55","underlyingType":{"id":17995,"name":"uint256","nodeType":"ElementaryTypeName","src":"1256:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"OutflowLimitedAMMSV.LOMStorage","id":18006,"members":[{"constant":false,"id":17998,"mutability":"mutable","name":"slotSize","nameLocation":"1421:8:55","nodeType":"VariableDeclaration","scope":18006,"src":"1413:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17997,"name":"uint128","nodeType":"ElementaryTypeName","src":"1413:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":18000,"mutability":"mutable","name":"limit","nameLocation":"1484:5:55","nodeType":"VariableDeclaration","scope":18006,"src":"1476:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":17999,"name":"uint128","nodeType":"ElementaryTypeName","src":"1476:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":18005,"mutability":"mutable","name":"assetsDelta","nameLocation":"1580:11:55","nodeType":"VariableDeclaration","scope":18006,"src":"1551:40:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"},"typeName":{"id":18004,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":18002,"nodeType":"UserDefinedTypeName","pathNode":{"id":18001,"name":"SlotIndex","nameLocations":["1559:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"1559:9:55"},"referencedDeclaration":17996,"src":"1559:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"Mapping","src":"1551:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":18003,"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":18336,"src":"1389:246:55","visibility":"public"},{"anonymous":false,"eventSelector":"b60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b85","id":18012,"name":"LimitChanged","nameLocation":"1645:12:55","nodeType":"EventDefinition","parameters":{"id":18011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18008,"indexed":false,"mutability":"mutable","name":"slotSize","nameLocation":"1666:8:55","nodeType":"VariableDeclaration","scope":18012,"src":"1658:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18007,"name":"uint256","nodeType":"ElementaryTypeName","src":"1658:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18010,"indexed":false,"mutability":"mutable","name":"newLimit","nameLocation":"1684:8:55","nodeType":"VariableDeclaration","scope":18012,"src":"1676:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18009,"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":18021,"name":"DeltaManuallySet","nameLocation":"1703:16:55","nodeType":"EventDefinition","parameters":{"id":18020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18015,"indexed":false,"mutability":"mutable","name":"slot","nameLocation":"1730:4:55","nodeType":"VariableDeclaration","scope":18021,"src":"1720:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18014,"nodeType":"UserDefinedTypeName","pathNode":{"id":18013,"name":"SlotIndex","nameLocations":["1720:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"1720:9:55"},"referencedDeclaration":17996,"src":"1720:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"},{"constant":false,"id":18017,"indexed":false,"mutability":"mutable","name":"oldDelta","nameLocation":"1743:8:55","nodeType":"VariableDeclaration","scope":18021,"src":"1736:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18016,"name":"int256","nodeType":"ElementaryTypeName","src":"1736:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":18019,"indexed":false,"mutability":"mutable","name":"newDelta","nameLocation":"1760:8:55","nodeType":"VariableDeclaration","scope":18021,"src":"1753:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18018,"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":18027,"name":"LimitReached","nameLocation":"1780:12:55","nodeType":"ErrorDefinition","parameters":{"id":18026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18023,"mutability":"mutable","name":"assetsDelta","nameLocation":"1800:11:55","nodeType":"VariableDeclaration","scope":18027,"src":"1793:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18022,"name":"int256","nodeType":"ElementaryTypeName","src":"1793:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":18025,"mutability":"mutable","name":"limit","nameLocation":"1821:5:55","nodeType":"VariableDeclaration","scope":18027,"src":"1813:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18024,"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":18030,"mutability":"constant","name":"STORAGE_LOCATION","nameLocation":"1972:16:55","nodeType":"VariableDeclaration","scope":18336,"src":"1947:110:55","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1947:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861326164613564363733646261356565636561376337353033656538376532393931336430643336616530393365393530643633326637623836383931663030","id":18029,"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":18037,"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":"cancun","externalReferences":[{"declaration":18034,"isOffset":false,"isSlot":true,"src":"2207:6:55","suffix":"slot","valueSize":1},{"declaration":18030,"isOffset":false,"isSlot":false,"src":"2217:16:55","valueSize":1}],"id":18036,"nodeType":"InlineAssembly","src":"2190:49:55"}]},"id":18038,"implemented":true,"kind":"function","modifiers":[],"name":"_getLOMStorage","nameLocation":"2071:14:55","nodeType":"FunctionDefinition","parameters":{"id":18031,"nodeType":"ParameterList","parameters":[],"src":"2085:2:55"},"returnParameters":{"id":18035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18034,"mutability":"mutable","name":"$","nameLocation":"2129:1:55","nodeType":"VariableDeclaration","scope":18038,"src":"2110:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":18033,"nodeType":"UserDefinedTypeName","pathNode":{"id":18032,"name":"LOMStorage","nameLocations":["2110:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":18006,"src":"2110:10:55"},"referencedDeclaration":18006,"src":"2110:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"src":"2109:22:55"},"scope":18336,"src":"2062:181:55","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":18073,"nodeType":"Block","src":"2743:162:55","statements":[{"assignments":[18048],"declarations":[{"constant":false,"id":18048,"mutability":"mutable","name":"$","nameLocation":"2768:1:55","nodeType":"VariableDeclaration","scope":18073,"src":"2749:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":18047,"nodeType":"UserDefinedTypeName","pathNode":{"id":18046,"name":"LOMStorage","nameLocations":["2749:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":18006,"src":"2749:10:55"},"referencedDeclaration":18006,"src":"2749:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"id":18051,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18049,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"2772:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2749:39:55"},{"expression":{"id":18058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":18052,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18048,"src":"2794:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2796:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":18000,"src":"2794:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18055,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18043,"src":"2804:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2810:9:55","memberName":"toUint128","nodeType":"MemberAccess","referencedDeclaration":11784,"src":"2804:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint128)"}},"id":18057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2804:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2794:27:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":18059,"nodeType":"ExpressionStatement","src":"2794:27:55"},{"expression":{"id":18066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":18060,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18048,"src":"2827:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18062,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2829:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17998,"src":"2827:10:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18063,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18041,"src":"2840:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2849:9:55","memberName":"toUint128","nodeType":"MemberAccess","referencedDeclaration":11784,"src":"2840:18:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint128_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint128)"}},"id":18065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2840:20:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"2827:33:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":18067,"nodeType":"ExpressionStatement","src":"2827:33:55"},{"eventCall":{"arguments":[{"id":18069,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18041,"src":"2884:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18070,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18043,"src":"2894:5:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18068,"name":"LimitChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18012,"src":"2871:12:55","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":18071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2871:29:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18072,"nodeType":"EmitStatement","src":"2866:34:55"}]},"documentation":{"id":18039,"nodeType":"StructuredDocumentation","src":"2247:424: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.\n @param limit    The max amount of outflows that will be allowed in a given time slot."},"functionSelector":"0a604584","id":18074,"implemented":true,"kind":"function","modifiers":[],"name":"setupOutflowLimit","nameLocation":"2683:17:55","nodeType":"FunctionDefinition","parameters":{"id":18044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18041,"mutability":"mutable","name":"slotSize","nameLocation":"2709:8:55","nodeType":"VariableDeclaration","scope":18074,"src":"2701:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18040,"name":"uint256","nodeType":"ElementaryTypeName","src":"2701:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18043,"mutability":"mutable","name":"limit","nameLocation":"2727:5:55","nodeType":"VariableDeclaration","scope":18074,"src":"2719:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2700:33:55"},"returnParameters":{"id":18045,"nodeType":"ParameterList","parameters":[],"src":"2743:0:55"},"scope":18336,"src":"2674:231:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18084,"nodeType":"Block","src":"3045:43:55","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18080,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"3058:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3075:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17998,"src":"3058:25:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":18079,"id":18083,"nodeType":"Return","src":"3051:32:55"}]},"documentation":{"id":18075,"nodeType":"StructuredDocumentation","src":"2909:66:55","text":" @dev Returns the current time slot size in seconds."},"functionSelector":"2e6863da","id":18085,"implemented":true,"kind":"function","modifiers":[],"name":"getOutflowLimitSlotSize","nameLocation":"2987:23:55","nodeType":"FunctionDefinition","parameters":{"id":18076,"nodeType":"ParameterList","parameters":[],"src":"3010:2:55"},"returnParameters":{"id":18079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18085,"src":"3036:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18077,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:9:55"},"scope":18336,"src":"2978:110:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18095,"nodeType":"Block","src":"3254:40:55","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18091,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"3267:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3267:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3284:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":18000,"src":"3267:22:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":18090,"id":18094,"nodeType":"Return","src":"3260:29:55"}]},"documentation":{"id":18086,"nodeType":"StructuredDocumentation","src":"3092:100:55","text":" @dev Returns the net outflow limit that will be applied on two consecutive time slots"},"functionSelector":"d89b074d","id":18096,"implemented":true,"kind":"function","modifiers":[],"name":"getOutflowLimit","nameLocation":"3204:15:55","nodeType":"FunctionDefinition","parameters":{"id":18087,"nodeType":"ParameterList","parameters":[],"src":"3219:2:55"},"returnParameters":{"id":18090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18096,"src":"3245:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18088,"name":"uint256","nodeType":"ElementaryTypeName","src":"3245:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3244:9:55"},"scope":18336,"src":"3195:99:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18111,"nodeType":"Block","src":"3736:52:55","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18105,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"3749:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3749:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3766:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"3749:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18109,"indexExpression":{"id":18108,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18100,"src":"3778:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3749:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":18104,"id":18110,"nodeType":"Return","src":"3742:41:55"}]},"documentation":{"id":18097,"nodeType":"StructuredDocumentation","src":"3298: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":18112,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetsDelta","nameLocation":"3674:14:55","nodeType":"FunctionDefinition","parameters":{"id":18101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18100,"mutability":"mutable","name":"slot","nameLocation":"3699:4:55","nodeType":"VariableDeclaration","scope":18112,"src":"3689:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18099,"nodeType":"UserDefinedTypeName","pathNode":{"id":18098,"name":"SlotIndex","nameLocations":["3689:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"3689:9:55"},"referencedDeclaration":17996,"src":"3689:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"3688:16:55"},"returnParameters":{"id":18104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18103,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18112,"src":"3728:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18102,"name":"int256","nodeType":"ElementaryTypeName","src":"3728:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"3727:8:55"},"scope":18336,"src":"3665:123:55","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":18135,"nodeType":"Block","src":"4373:74:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18125,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18115,"src":"4402:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":18126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4414:3:55","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"4402:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4401:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18129,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18117,"src":"4421:9:55","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":18130,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18115,"src":"4433:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4421:20:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4401:40:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18123,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17996,"src":"4386:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":18124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4396:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"4386:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":18133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4386:56:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"functionReturnParameters":18122,"id":18134,"nodeType":"Return","src":"4379:63:55"}]},"documentation":{"id":18113,"nodeType":"StructuredDocumentation","src":"3792: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":18136,"implemented":true,"kind":"function","modifiers":[],"name":"makeOutflowSlot","nameLocation":"4287:15:55","nodeType":"FunctionDefinition","parameters":{"id":18118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18115,"mutability":"mutable","name":"slotSize","nameLocation":"4311:8:55","nodeType":"VariableDeclaration","scope":18136,"src":"4303:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18114,"name":"uint256","nodeType":"ElementaryTypeName","src":"4303:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18117,"mutability":"mutable","name":"timestamp","nameLocation":"4328:9:55","nodeType":"VariableDeclaration","scope":18136,"src":"4321:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":18116,"name":"uint40","nodeType":"ElementaryTypeName","src":"4321:6:55","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"4302:36:55"},"returnParameters":{"id":18122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18121,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18136,"src":"4362:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18120,"nodeType":"UserDefinedTypeName","pathNode":{"id":18119,"name":"SlotIndex","nameLocations":["4362:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"4362:9:55"},"referencedDeclaration":17996,"src":"4362:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"4361:11:55"},"scope":18336,"src":"4278:169:55","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":18171,"nodeType":"Block","src":"5197:182:55","statements":[{"assignments":[18148],"declarations":[{"constant":false,"id":18148,"mutability":"mutable","name":"oldDelta","nameLocation":"5210:8:55","nodeType":"VariableDeclaration","scope":18171,"src":"5203:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18147,"name":"int256","nodeType":"ElementaryTypeName","src":"5203:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":18154,"initialValue":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18149,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"5221:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5221:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5238:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"5221:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18153,"indexExpression":{"id":18152,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18140,"src":"5250:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5221:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5203:52:55"},{"expression":{"id":18163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18155,"name":"newDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18145,"src":"5261:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18156,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"5272:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5272:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5289:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"5272:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18160,"indexExpression":{"id":18159,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18140,"src":"5301:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5272:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":18161,"name":"deltaChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18142,"src":"5310:11:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5272:49:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5261:60:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":18164,"nodeType":"ExpressionStatement","src":"5261:60:55"},{"eventCall":{"arguments":[{"id":18166,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18140,"src":"5349:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},{"id":18167,"name":"oldDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18148,"src":"5355:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":18168,"name":"newDelta","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18145,"src":"5365:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":18165,"name":"DeltaManuallySet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18021,"src":"5332:16:55","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$_t_int256_$returns$__$","typeString":"function (OutflowLimitedAMMSV.SlotIndex,int256,int256)"}},"id":18169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:42:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18170,"nodeType":"EmitStatement","src":"5327:47:55"}]},"documentation":{"id":18137,"nodeType":"StructuredDocumentation","src":"4451: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":18172,"implemented":true,"kind":"function","modifiers":[],"name":"changeDelta","nameLocation":"5114:11:55","nodeType":"FunctionDefinition","parameters":{"id":18143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18140,"mutability":"mutable","name":"slot","nameLocation":"5136:4:55","nodeType":"VariableDeclaration","scope":18172,"src":"5126:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18139,"nodeType":"UserDefinedTypeName","pathNode":{"id":18138,"name":"SlotIndex","nameLocations":["5126:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"5126:9:55"},"referencedDeclaration":17996,"src":"5126:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"},{"constant":false,"id":18142,"mutability":"mutable","name":"deltaChange","nameLocation":"5149:11:55","nodeType":"VariableDeclaration","scope":18172,"src":"5142:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18141,"name":"int256","nodeType":"ElementaryTypeName","src":"5142:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5125:36:55"},"returnParameters":{"id":18146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18145,"mutability":"mutable","name":"newDelta","nameLocation":"5187:8:55","nodeType":"VariableDeclaration","scope":18172,"src":"5180:15:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18144,"name":"int256","nodeType":"ElementaryTypeName","src":"5180:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"5179:17:55"},"scope":18336,"src":"5105:274:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":18197,"nodeType":"Block","src":"5439:130:55","statements":[{"assignments":[18179],"declarations":[{"constant":false,"id":18179,"mutability":"mutable","name":"slotSize","nameLocation":"5453:8:55","nodeType":"VariableDeclaration","scope":18197,"src":"5445:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18178,"name":"uint256","nodeType":"ElementaryTypeName","src":"5445:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":18183,"initialValue":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18180,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"5464:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5464:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5481:8:55","memberName":"slotSize","nodeType":"MemberAccess","referencedDeclaration":17998,"src":"5464:25:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"5445:44:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18186,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18179,"src":"5518:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":18187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5530:3:55","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"5518:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5517:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":18190,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5537:5:55","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":18191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5543:9:55","memberName":"timestamp","nodeType":"MemberAccess","src":"5537:15:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":18192,"name":"slotSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18179,"src":"5555:8:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5537:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5517:46:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18184,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17996,"src":"5502:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":18185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5512:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"5502:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":18195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5502:62:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"functionReturnParameters":18177,"id":18196,"nodeType":"Return","src":"5495:69:55"}]},"id":18198,"implemented":true,"kind":"function","modifiers":[],"name":"_slotIndex","nameLocation":"5392:10:55","nodeType":"FunctionDefinition","parameters":{"id":18173,"nodeType":"ParameterList","parameters":[],"src":"5402:2:55"},"returnParameters":{"id":18177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18176,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18198,"src":"5428:9:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18175,"nodeType":"UserDefinedTypeName","pathNode":{"id":18174,"name":"SlotIndex","nameLocations":["5428:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"5428:9:55"},"referencedDeclaration":17996,"src":"5428:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"src":"5427:11:55"},"scope":18336,"src":"5383:186:55","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[14125],"body":{"id":18295,"nodeType":"Block","src":"5760:813:55","statements":[{"assignments":[18215],"declarations":[{"constant":false,"id":18215,"mutability":"mutable","name":"slot","nameLocation":"5776:4:55","nodeType":"VariableDeclaration","scope":18295,"src":"5766:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18214,"nodeType":"UserDefinedTypeName","pathNode":{"id":18213,"name":"SlotIndex","nameLocations":["5766:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"5766:9:55"},"referencedDeclaration":17996,"src":"5766:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":18218,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18216,"name":"_slotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18198,"src":"5783:10:55","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"function () view returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":18217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5783:12:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"5766:29:55"},{"assignments":[18221],"declarations":[{"constant":false,"id":18221,"mutability":"mutable","name":"prevSlot","nameLocation":"5860:8:55","nodeType":"VariableDeclaration","scope":18295,"src":"5850:18:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18220,"nodeType":"UserDefinedTypeName","pathNode":{"id":18219,"name":"SlotIndex","nameLocations":["5850:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"5850:9:55"},"referencedDeclaration":17996,"src":"5850:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":18231,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18226,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18215,"src":"5903:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}],"expression":{"id":18224,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17996,"src":"5886:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":18225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5896:6:55","memberName":"unwrap","nodeType":"MemberAccess","src":"5886:16:55","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueType$_SlotIndex_$17996_$returns$_t_uint256_$","typeString":"function (OutflowLimitedAMMSV.SlotIndex) pure returns (uint256)"}},"id":18227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5886:22:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":18228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5911:1:55","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5886:26:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18222,"name":"SlotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":17996,"src":"5871:9:55","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"type(OutflowLimitedAMMSV.SlotIndex)"}},"id":18223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5881:4:55","memberName":"wrap","nodeType":"MemberAccess","src":"5871:14:55","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_uint256_$returns$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"function (uint256) pure returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":18230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5871:42:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"5850:63:55"},{"assignments":[18234],"declarations":[{"constant":false,"id":18234,"mutability":"mutable","name":"$","nameLocation":"5938:1:55","nodeType":"VariableDeclaration","scope":18295,"src":"5919:20:55","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"},"typeName":{"id":18233,"nodeType":"UserDefinedTypeName","pathNode":{"id":18232,"name":"LOMStorage","nameLocations":["5919:10:55"],"nodeType":"IdentifierPath","referencedDeclaration":18006,"src":"5919:10:55"},"referencedDeclaration":18006,"src":"5919:10:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage"}},"visibility":"internal"}],"id":18237,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18235,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"5942:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5942:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5919:39:55"},{"assignments":[18239],"declarations":[{"constant":false,"id":18239,"mutability":"mutable","name":"deltaLastTwoSlots","nameLocation":"5971:17:55","nodeType":"VariableDeclaration","scope":18295,"src":"5964:24:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":18238,"name":"int256","nodeType":"ElementaryTypeName","src":"5964:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":18255,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":18254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":18249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5991:15:55","subExpression":{"arguments":[{"id":18242,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18207,"src":"5999:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5992:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":18240,"name":"int256","nodeType":"ElementaryTypeName","src":"5992:6:55","typeDescriptions":{}}},"id":18243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5992:14:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"expression":{"id":18245,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18234,"src":"6009:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18246,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6011:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"6009:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18248,"indexExpression":{"id":18247,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18215,"src":"6023:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6009:19:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5991:37:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"expression":{"id":18250,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18234,"src":"6031:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6033:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"6031:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18253,"indexExpression":{"id":18252,"name":"prevSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18221,"src":"6045:8:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6031:23:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"5991:63:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5964:90:55"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":18258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18256,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18239,"src":"6284:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":18257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6304:1:55","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6284:21:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6317:18:55","subExpression":{"id":18261,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18239,"src":"6318:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":18260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6309:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18259,"name":"uint256","nodeType":"ElementaryTypeName","src":"6309:7:55","typeDescriptions":{}}},"id":18263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6309:27:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":18264,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18234,"src":"6339:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6341:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":18000,"src":"6339:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6309:37:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6284:62:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18274,"nodeType":"IfStatement","src":"6280:115:55","trueBody":{"errorCall":{"arguments":[{"id":18269,"name":"deltaLastTwoSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18239,"src":"6368:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":18270,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18234,"src":"6387:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6389:5:55","memberName":"limit","nodeType":"MemberAccess","referencedDeclaration":18000,"src":"6387:7:55","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":18268,"name":"LimitReached","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18027,"src":"6355:12:55","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$_t_uint256_$returns$_t_error_$","typeString":"function (int256,uint256) pure returns (error)"}},"id":18272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:40:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18273,"nodeType":"RevertStatement","src":"6348:47:55"}},{"expression":{"id":18283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":18275,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18234,"src":"6466:1:55","typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18278,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6468:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"6466:13:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18279,"indexExpression":{"id":18277,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18215,"src":"6480:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6466:19:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18280,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18207,"src":"6489:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6496:8:55","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":13063,"src":"6489:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":18282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6489:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6466:40:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":18284,"nodeType":"ExpressionStatement","src":"6466:40:55"},{"expression":{"arguments":[{"id":18288,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18201,"src":"6528:6:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18289,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18203,"src":"6536:8:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18290,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18205,"src":"6546:5:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18291,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18207,"src":"6553:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18292,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18209,"src":"6561: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":18285,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6512:5:55","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OutflowLimitedAMMSV_$18336_$","typeString":"type(contract super OutflowLimitedAMMSV)"}},"id":18287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6518:9:55","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":14125,"src":"6512: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":18293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6512:56:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18294,"nodeType":"ExpressionStatement","src":"6512:56:55"}]},"documentation":{"id":18199,"nodeType":"StructuredDocumentation","src":"5573:34:55","text":"@inheritdoc ERC4626Upgradeable"},"id":18296,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"5619:9:55","nodeType":"FunctionDefinition","overrides":{"id":18211,"nodeType":"OverrideSpecifier","overrides":[],"src":"5751:8:55"},"parameters":{"id":18210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18201,"mutability":"mutable","name":"caller","nameLocation":"5642:6:55","nodeType":"VariableDeclaration","scope":18296,"src":"5634:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18200,"name":"address","nodeType":"ElementaryTypeName","src":"5634:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18203,"mutability":"mutable","name":"receiver","nameLocation":"5662:8:55","nodeType":"VariableDeclaration","scope":18296,"src":"5654:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18202,"name":"address","nodeType":"ElementaryTypeName","src":"5654:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18205,"mutability":"mutable","name":"owner","nameLocation":"5684:5:55","nodeType":"VariableDeclaration","scope":18296,"src":"5676:13:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18204,"name":"address","nodeType":"ElementaryTypeName","src":"5676:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18207,"mutability":"mutable","name":"assets","nameLocation":"5703:6:55","nodeType":"VariableDeclaration","scope":18296,"src":"5695:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18206,"name":"uint256","nodeType":"ElementaryTypeName","src":"5695:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18209,"mutability":"mutable","name":"shares","nameLocation":"5723:6:55","nodeType":"VariableDeclaration","scope":18296,"src":"5715:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18208,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5628:105:55"},"returnParameters":{"id":18212,"nodeType":"ParameterList","parameters":[],"src":"5760:0:55"},"scope":18336,"src":"5610:963:55","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[14152],"body":{"id":18334,"nodeType":"Block","src":"6724:224:55","statements":[{"assignments":[18311],"declarations":[{"constant":false,"id":18311,"mutability":"mutable","name":"slot","nameLocation":"6809:4:55","nodeType":"VariableDeclaration","scope":18334,"src":"6799:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"},"typeName":{"id":18310,"nodeType":"UserDefinedTypeName","pathNode":{"id":18309,"name":"SlotIndex","nameLocations":["6799:9:55"],"nodeType":"IdentifierPath","referencedDeclaration":17996,"src":"6799:9:55"},"referencedDeclaration":17996,"src":"6799:9:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"visibility":"internal"}],"id":18314,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18312,"name":"_slotIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18198,"src":"6816:10:55","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_userDefinedValueType$_SlotIndex_$17996_$","typeString":"function () view returns (OutflowLimitedAMMSV.SlotIndex)"}},"id":18313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6816:12:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"nodeType":"VariableDeclarationStatement","src":"6799:29:55"},{"expression":{"id":18323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18315,"name":"_getLOMStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18038,"src":"6834:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_LOMStorage_$18006_storage_ptr_$","typeString":"function () pure returns (struct OutflowLimitedAMMSV.LOMStorage storage pointer)"}},"id":18316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:16:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_LOMStorage_$18006_storage_ptr","typeString":"struct OutflowLimitedAMMSV.LOMStorage storage pointer"}},"id":18317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6851:11:55","memberName":"assetsDelta","nodeType":"MemberAccess","referencedDeclaration":18005,"src":"6834:28:55","typeDescriptions":{"typeIdentifier":"t_mapping$_t_userDefinedValueType$_SlotIndex_$17996_$_t_int256_$","typeString":"mapping(OutflowLimitedAMMSV.SlotIndex => int256)"}},"id":18319,"indexExpression":{"id":18318,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18311,"src":"6863:4:55","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_SlotIndex_$17996","typeString":"OutflowLimitedAMMSV.SlotIndex"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6834:34:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18320,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18303,"src":"6872:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6879:8:55","memberName":"toInt256","nodeType":"MemberAccess","referencedDeclaration":13063,"src":"6872:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_int256_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (int256)"}},"id":18322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6872:17:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6834:55:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":18324,"nodeType":"ExpressionStatement","src":"6834:55:55"},{"expression":{"arguments":[{"id":18328,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18299,"src":"6910:6:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18329,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18301,"src":"6918:8:55","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18330,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18303,"src":"6928:6:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18331,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18305,"src":"6936: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":18325,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6895:5:55","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_OutflowLimitedAMMSV_$18336_$","typeString":"type(contract super OutflowLimitedAMMSV)"}},"id":18327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6901:8:55","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":14152,"src":"6895:14:55","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":18332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6895:48:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18333,"nodeType":"ExpressionStatement","src":"6895:48:55"}]},"documentation":{"id":18297,"nodeType":"StructuredDocumentation","src":"6577:34:55","text":"@inheritdoc ERC4626Upgradeable"},"id":18335,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"6623:8:55","nodeType":"FunctionDefinition","overrides":{"id":18307,"nodeType":"OverrideSpecifier","overrides":[],"src":"6715:8:55"},"parameters":{"id":18306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18299,"mutability":"mutable","name":"caller","nameLocation":"6640:6:55","nodeType":"VariableDeclaration","scope":18335,"src":"6632:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18298,"name":"address","nodeType":"ElementaryTypeName","src":"6632:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18301,"mutability":"mutable","name":"receiver","nameLocation":"6656:8:55","nodeType":"VariableDeclaration","scope":18335,"src":"6648:16:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18300,"name":"address","nodeType":"ElementaryTypeName","src":"6648:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18303,"mutability":"mutable","name":"assets","nameLocation":"6674:6:55","nodeType":"VariableDeclaration","scope":18335,"src":"6666:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18302,"name":"uint256","nodeType":"ElementaryTypeName","src":"6666:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18305,"mutability":"mutable","name":"shares","nameLocation":"6690:6:55","nodeType":"VariableDeclaration","scope":18335,"src":"6682:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18304,"name":"uint256","nodeType":"ElementaryTypeName","src":"6682:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6631:66:55"},"returnParameters":{"id":18308,"nodeType":"ParameterList","parameters":[],"src":"6724:0:55"},"scope":18336,"src":"6614:334:55","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":18337,"src":"1154:5796:55","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,11319,11336,14253,15393,15868,15870,15875,15879,15883,15885,15887,15889,15891,15893,15895,15899,15903,15907,18027],"usedEvents":[2635,7347,7389,7401,8590,8599,15379,15383,15387,15391,15820,15824,15828,15832,15839,15846,15851,15856,15866,18012,18021]}],"src":"39:6912:55"},"id":55},"contracts/PermissionedERC4626.sol":{"ast":{"absolutePath":"contracts/PermissionedERC4626.sol","exportedSymbols":{"AccessControlUpgradeable":[2610],"ERC4626Upgradeable":[4427],"IERC20":[8656],"IERC20Metadata":[8682],"PermissionedERC4626":[18512],"SafeERC20":[9093],"UUPSUpgradeable":[3046]},"id":18513,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":18338,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:56"},{"absolutePath":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","id":18340,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":2611,"src":"64:113:56","symbolAliases":[{"foreign":{"id":18339,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"72:24:56","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":18342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":4428,"src":"178:117:56","symbolAliases":[{"foreign":{"id":18341,"name":"ERC4626Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"186:18:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":18344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":8683,"src":"296:97:56","symbolAliases":[{"foreign":{"id":18343,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"304:14:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":18346,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":8657,"src":"394:70:56","symbolAliases":[{"foreign":{"id":18345,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"402:6:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":18348,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":9094,"src":"465:82:56","symbolAliases":[{"foreign":{"id":18347,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"473:9:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":18350,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18513,"sourceUnit":3047,"src":"548:100:56","symbolAliases":[{"foreign":{"id":18349,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3046,"src":"556:15:56","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18352,"name":"AccessControlUpgradeable","nameLocations":["973:24:56"],"nodeType":"IdentifierPath","referencedDeclaration":2610,"src":"973:24:56"},"id":18353,"nodeType":"InheritanceSpecifier","src":"973:24:56"},{"baseName":{"id":18354,"name":"UUPSUpgradeable","nameLocations":["999:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":3046,"src":"999:15:56"},"id":18355,"nodeType":"InheritanceSpecifier","src":"999:15:56"},{"baseName":{"id":18356,"name":"ERC4626Upgradeable","nameLocations":["1016:18:56"],"nodeType":"IdentifierPath","referencedDeclaration":4427,"src":"1016:18:56"},"id":18357,"nodeType":"InheritanceSpecifier","src":"1016:18:56"}],"canonicalName":"PermissionedERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":18351,"nodeType":"StructuredDocumentation","src":"650:290:56","text":" @title PermissionedERC4626\n @dev Base class for permissioned ERC-4626 that use AccessControl for the access permissions.\n      Not used at the moment, since we started to use AccessManagedProxy contracts.\n @custom:security-contact security@ensuro.co\n @author Ensuro"},"fullyImplemented":true,"id":18512,"linearizedBaseContracts":[18512,4427,7538,3663,7590,8682,8656,3046,7548,2610,4513,9703,4892,4473,2864],"name":"PermissionedERC4626","nameLocation":"950:19:56","nodeType":"ContractDefinition","nodes":[{"global":false,"id":18361,"libraryName":{"id":18358,"name":"SafeERC20","nameLocations":["1045:9:56"],"nodeType":"IdentifierPath","referencedDeclaration":9093,"src":"1045:9:56"},"nodeType":"UsingForDirective","src":"1039:35:56","typeName":{"id":18360,"nodeType":"UserDefinedTypeName","pathNode":{"id":18359,"name":"IERC20Metadata","nameLocations":["1059:14:56"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1059:14:56"},"referencedDeclaration":8682,"src":"1059:14:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}},{"constant":true,"functionSelector":"e1d39450","id":18366,"mutability":"constant","name":"LP_ROLE","nameLocation":"1102:7:56","nodeType":"VariableDeclaration","scope":18512,"src":"1078:54:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18362,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1078:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"4c505f524f4c45","id":18364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1122:9:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_b0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a6","typeString":"literal_string \"LP_ROLE\""},"value":"LP_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a6","typeString":"literal_string \"LP_ROLE\""}],"id":18363,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1112:9:56","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":18365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:20:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"24ea54f4","id":18371,"mutability":"constant","name":"GUARDIAN_ROLE","nameLocation":"1160:13:56","nodeType":"VariableDeclaration","scope":18512,"src":"1136:66:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18367,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1136:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"475541524449414e5f524f4c45","id":18369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1186:15:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041","typeString":"literal_string \"GUARDIAN_ROLE\""},"value":"GUARDIAN_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041","typeString":"literal_string \"GUARDIAN_ROLE\""}],"id":18368,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1176:9:56","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":18370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1176:26:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"errorSelector":"6f79c78a","id":18375,"name":"InvalidAsset","nameLocation":"1213:12:56","nodeType":"ErrorDefinition","parameters":{"id":18374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18373,"mutability":"mutable","name":"asset","nameLocation":"1234:5:56","nodeType":"VariableDeclaration","scope":18375,"src":"1226:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18372,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1225:15:56"},"src":"1207:34:56"},{"body":{"id":18425,"nodeType":"Block","src":"1453:247:56","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18389,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"1459:22:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1459:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18391,"nodeType":"ExpressionStatement","src":"1459:24:56"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18392,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2311,"src":"1489:20:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":18393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1489:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18394,"nodeType":"ExpressionStatement","src":"1489:22:56"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18397,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"1529:6:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":18396,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1521:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18395,"name":"address","nodeType":"ElementaryTypeName","src":"1521:7:56","typeDescriptions":{}}},"id":18398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1521:15:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":18401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1548:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18400,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1540:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18399,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:56","typeDescriptions":{}}},"id":18402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1540:10:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1521:29:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18411,"nodeType":"IfStatement","src":"1517:66:56","trueBody":{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":18407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1580:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":18406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1572:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18405,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:56","typeDescriptions":{}}},"id":18408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1572:10:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18404,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18375,"src":"1559:12:56","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":18409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1559:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18410,"nodeType":"RevertStatement","src":"1552:31:56"}},{"expression":{"arguments":[{"id":18413,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18384,"src":"1604:6:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":18412,"name":"__ERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"1589:14:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (contract IERC20)"}},"id":18414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1589:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18415,"nodeType":"ExpressionStatement","src":"1589:22:56"},{"expression":{"arguments":[{"id":18417,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18377,"src":"1630:5:56","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":18418,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18379,"src":"1637:7:56","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":18416,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3114,"src":"1617:12:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":18419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1617:28:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18420,"nodeType":"ExpressionStatement","src":"1617:28:56"},{"expression":{"arguments":[{"id":18422,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18381,"src":"1688:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18421,"name":"__PermissionedERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18439,"src":"1651:36:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":18423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1651:44:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18424,"nodeType":"ExpressionStatement","src":"1651:44:56"}]},"id":18426,"implemented":true,"kind":"function","modifiers":[{"id":18387,"kind":"modifierInvocation","modifierName":{"id":18386,"name":"onlyInitializing","nameLocations":["1436:16:56"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"1436:16:56"},"nodeType":"ModifierInvocation","src":"1436:16:56"}],"name":"__PermissionedERC4626_init","nameLocation":"1305:26:56","nodeType":"FunctionDefinition","parameters":{"id":18385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18377,"mutability":"mutable","name":"name_","nameLocation":"1351:5:56","nodeType":"VariableDeclaration","scope":18426,"src":"1337:19:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18376,"name":"string","nodeType":"ElementaryTypeName","src":"1337:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18379,"mutability":"mutable","name":"symbol_","nameLocation":"1376:7:56","nodeType":"VariableDeclaration","scope":18426,"src":"1362:21:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":18378,"name":"string","nodeType":"ElementaryTypeName","src":"1362:6:56","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":18381,"mutability":"mutable","name":"admin_","nameLocation":"1397:6:56","nodeType":"VariableDeclaration","scope":18426,"src":"1389:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18380,"name":"address","nodeType":"ElementaryTypeName","src":"1389:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18384,"mutability":"mutable","name":"asset_","nameLocation":"1416:6:56","nodeType":"VariableDeclaration","scope":18426,"src":"1409:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":18383,"nodeType":"UserDefinedTypeName","pathNode":{"id":18382,"name":"IERC20","nameLocations":["1409:6:56"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1409:6:56"},"referencedDeclaration":8656,"src":"1409:6:56","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1331:95:56"},"returnParameters":{"id":18388,"nodeType":"ParameterList","parameters":[],"src":"1453:0:56"},"scope":18512,"src":"1296:404:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":18438,"nodeType":"Block","src":"1843:49:56","statements":[{"expression":{"arguments":[{"id":18434,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2276,"src":"1860:18:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18435,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18428,"src":"1880:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18433,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"1849:10:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":18436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1849:38:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18437,"nodeType":"ExpressionStatement","src":"1849:38:56"}]},"id":18439,"implemented":true,"kind":"function","modifiers":[{"id":18431,"kind":"modifierInvocation","modifierName":{"id":18430,"name":"onlyInitializing","nameLocations":["1826:16:56"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"1826:16:56"},"nodeType":"ModifierInvocation","src":"1826:16:56"}],"name":"__PermissionedERC4626_init_unchained","nameLocation":"1764:36:56","nodeType":"FunctionDefinition","parameters":{"id":18429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18428,"mutability":"mutable","name":"admin_","nameLocation":"1809:6:56","nodeType":"VariableDeclaration","scope":18439,"src":"1801:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18427,"name":"address","nodeType":"ElementaryTypeName","src":"1801:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1800:16:56"},"returnParameters":{"id":18432,"nodeType":"ParameterList","parameters":[],"src":"1843:0:56"},"scope":18512,"src":"1755:137:56","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3000],"body":{"id":18448,"nodeType":"Block","src":"2034:2:56","statements":[]},"id":18449,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":18445,"name":"GUARDIAN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18371,"src":"2019:13:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":18446,"kind":"modifierInvocation","modifierName":{"id":18444,"name":"onlyRole","nameLocations":["2010:8:56"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"2010:8:56"},"nodeType":"ModifierInvocation","src":"2010:23:56"}],"name":"_authorizeUpgrade","nameLocation":"1952:17:56","nodeType":"FunctionDefinition","overrides":{"id":18443,"nodeType":"OverrideSpecifier","overrides":[],"src":"2001:8:56"},"parameters":{"id":18442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18441,"mutability":"mutable","name":"newImpl","nameLocation":"1978:7:56","nodeType":"VariableDeclaration","scope":18449,"src":"1970:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18440,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:17:56"},"returnParameters":{"id":18447,"nodeType":"ParameterList","parameters":[],"src":"2034:0:56"},"scope":18512,"src":"1943:93:56","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":18464,"nodeType":"Block","src":"2133:41:56","statements":[{"expression":{"arguments":[{"id":18460,"name":"role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18451,"src":"2153:4:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18461,"name":"adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18453,"src":"2159:9:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":18459,"name":"_setRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2516,"src":"2139:13:56","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":18462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2139:30:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18463,"nodeType":"ExpressionStatement","src":"2139:30:56"}]},"functionSelector":"1e4e0091","id":18465,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":18456,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2276,"src":"2113:18:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":18457,"kind":"modifierInvocation","modifierName":{"id":18455,"name":"onlyRole","nameLocations":["2104:8:56"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"2104:8:56"},"nodeType":"ModifierInvocation","src":"2104:28:56"}],"name":"setRoleAdmin","nameLocation":"2049:12:56","nodeType":"FunctionDefinition","parameters":{"id":18454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18451,"mutability":"mutable","name":"role","nameLocation":"2070:4:56","nodeType":"VariableDeclaration","scope":18465,"src":"2062:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18450,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2062:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":18453,"mutability":"mutable","name":"adminRole","nameLocation":"2084:9:56","nodeType":"VariableDeclaration","scope":18465,"src":"2076:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18452,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2076:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2061:33:56"},"returnParameters":{"id":18458,"nodeType":"ParameterList","parameters":[],"src":"2133:0:56"},"scope":18512,"src":"2040:134:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3972],"body":{"id":18487,"nodeType":"Block","src":"2309:85:56","statements":[{"condition":{"id":18478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2319:24:56","subExpression":{"arguments":[{"id":18475,"name":"LP_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"2328:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18476,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18468,"src":"2337:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18474,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"2320:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":18477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2320:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18481,"nodeType":"IfStatement","src":"2315:38:56","trueBody":{"expression":{"hexValue":"30","id":18479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2352:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18473,"id":18480,"nodeType":"Return","src":"2345:8:56"}},{"expression":{"arguments":[{"id":18484,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18468,"src":"2383:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18482,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2366:5:56","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionedERC4626_$18512_$","typeString":"type(contract super PermissionedERC4626)"}},"id":18483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2372:10:56","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":3972,"src":"2366:16:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":18485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2366:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18473,"id":18486,"nodeType":"Return","src":"2359:30:56"}]},"documentation":{"id":18466,"nodeType":"StructuredDocumentation","src":"2178:46:56","text":" @dev See {IERC4626-maxDeposit}."},"functionSelector":"402d267d","id":18488,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2236:10:56","nodeType":"FunctionDefinition","overrides":{"id":18470,"nodeType":"OverrideSpecifier","overrides":[],"src":"2282:8:56"},"parameters":{"id":18469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18468,"mutability":"mutable","name":"owner","nameLocation":"2255:5:56","nodeType":"VariableDeclaration","scope":18488,"src":"2247:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18467,"name":"address","nodeType":"ElementaryTypeName","src":"2247:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2246:15:56"},"returnParameters":{"id":18473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18488,"src":"2300:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18471,"name":"uint256","nodeType":"ElementaryTypeName","src":"2300:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2299:9:56"},"scope":18512,"src":"2227:167:56","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3987],"body":{"id":18510,"nodeType":"Block","src":"2523:82:56","statements":[{"condition":{"id":18501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2533:24:56","subExpression":{"arguments":[{"id":18498,"name":"LP_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18366,"src":"2542:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":18499,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18491,"src":"2551:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18497,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2364,"src":"2534:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":18500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2534:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18504,"nodeType":"IfStatement","src":"2529:38:56","trueBody":{"expression":{"hexValue":"30","id":18502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2566:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18496,"id":18503,"nodeType":"Return","src":"2559:8:56"}},{"expression":{"arguments":[{"id":18507,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18491,"src":"2594:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18505,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2580:5:56","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_PermissionedERC4626_$18512_$","typeString":"type(contract super PermissionedERC4626)"}},"id":18506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2586:7:56","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":3987,"src":"2580:13:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":18508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2580:20:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18496,"id":18509,"nodeType":"Return","src":"2573:27:56"}]},"documentation":{"id":18489,"nodeType":"StructuredDocumentation","src":"2398:43:56","text":" @dev See {IERC4626-maxMint}."},"functionSelector":"c63d75b6","id":18511,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"2453:7:56","nodeType":"FunctionDefinition","overrides":{"id":18493,"nodeType":"OverrideSpecifier","overrides":[],"src":"2496:8:56"},"parameters":{"id":18492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18491,"mutability":"mutable","name":"owner","nameLocation":"2469:5:56","nodeType":"VariableDeclaration","scope":18511,"src":"2461:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18490,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2460:15:56"},"returnParameters":{"id":18496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18511,"src":"2514:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:56"},"scope":18512,"src":"2444:161:56","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":18513,"src":"941:1666:56","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,4819,4822,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,18375],"usedEvents":[2635,4831,4840,4849,7347,7389,7401,8590,8599]}],"src":"39:2569:56"},"id":56},"contracts/SwapStableAaveV3InvestStrategy.sol":{"ast":{"absolutePath":"contracts/SwapStableAaveV3InvestStrategy.sol","exportedSymbols":{"DataTypes":[19793],"IERC20Metadata":[8682],"IPool":[20704],"ReserveConfiguration":[22197],"SwapStableAaveV3InvestStrategy":[18848],"SwapStableInvestStrategy":[19441]},"id":18849,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":18514,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:57"},{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","file":"./dependencies/aave-v3/IPool.sol","id":18516,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18849,"sourceUnit":20705,"src":"64:55:57","symbolAliases":[{"foreign":{"id":18515,"name":"IPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20704,"src":"72:5:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./dependencies/aave-v3/DataTypes.sol","id":18518,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18849,"sourceUnit":19794,"src":"120:63:57","symbolAliases":[{"foreign":{"id":18517,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"128:9:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","file":"./dependencies/aave-v3/ReserveConfiguration.sol","id":18520,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18849,"sourceUnit":22198,"src":"184:85:57","symbolAliases":[{"foreign":{"id":18519,"name":"ReserveConfiguration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22197,"src":"192:20:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":18522,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18849,"sourceUnit":7369,"src":"270:85:57","symbolAliases":[{"foreign":{"id":18521,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"278:14:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/SwapStableInvestStrategy.sol","file":"./SwapStableInvestStrategy.sol","id":18524,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":18849,"sourceUnit":19442,"src":"356:72:57","symbolAliases":[{"foreign":{"id":18523,"name":"SwapStableInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19441,"src":"364:24:57","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18526,"name":"SwapStableInvestStrategy","nameLocations":["866:24:57"],"nodeType":"IdentifierPath","referencedDeclaration":19441,"src":"866:24:57"},"id":18527,"nodeType":"InheritanceSpecifier","src":"866:24:57"}],"canonicalName":"SwapStableAaveV3InvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":18525,"nodeType":"StructuredDocumentation","src":"430:392:57","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":18848,"linearizedBaseContracts":[18848,19441,22374],"name":"SwapStableAaveV3InvestStrategy","nameLocation":"832:30:57","nodeType":"ContractDefinition","nodes":[{"global":false,"id":18531,"libraryName":{"id":18528,"name":"ReserveConfiguration","nameLocations":["901:20:57"],"nodeType":"IdentifierPath","referencedDeclaration":22197,"src":"901:20:57"},"nodeType":"UsingForDirective","src":"895:65:57","typeName":{"id":18530,"nodeType":"UserDefinedTypeName","pathNode":{"id":18529,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["926:9:57","936:23:57"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"926:33:57"},"referencedDeclaration":19478,"src":"926:33:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}}},{"anonymous":false,"eventSelector":"323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac","id":18535,"name":"ResupplyFailed","nameLocation":"970:14:57","nodeType":"EventDefinition","parameters":{"id":18534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18533,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"993:6:57","nodeType":"VariableDeclaration","scope":18535,"src":"985:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18532,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"984:16:57"},"src":"964:37:57"},{"constant":false,"id":18538,"mutability":"immutable","name":"_aave","nameLocation":"1030:5:57","nodeType":"VariableDeclaration","scope":18848,"src":"1005:30:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"},"typeName":{"id":18537,"nodeType":"UserDefinedTypeName","pathNode":{"id":18536,"name":"IPool","nameLocations":["1005:5:57"],"nodeType":"IdentifierPath","referencedDeclaration":20704,"src":"1005:5:57"},"referencedDeclaration":20704,"src":"1005:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"visibility":"internal"},{"body":{"id":18562,"nodeType":"Block","src":"1598:24:57","statements":[{"expression":{"id":18560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18558,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"1604:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18559,"name":"aave_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18550,"src":"1612:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"src":"1604:13:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":18561,"nodeType":"ExpressionStatement","src":"1604:13:57"}]},"documentation":{"id":18539,"nodeType":"StructuredDocumentation","src":"1039:388:57","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":18563,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":18553,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18542,"src":"1568:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},{"id":18554,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18545,"src":"1576:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},{"id":18555,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18547,"src":"1590:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":18556,"kind":"baseConstructorSpecifier","modifierName":{"id":18552,"name":"SwapStableInvestStrategy","nameLocations":["1543:24:57"],"nodeType":"IdentifierPath","referencedDeclaration":19441,"src":"1543:24:57"},"nodeType":"ModifierInvocation","src":"1543:54:57"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":18551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18542,"mutability":"mutable","name":"asset_","nameLocation":"1462:6:57","nodeType":"VariableDeclaration","scope":18563,"src":"1447:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18541,"nodeType":"UserDefinedTypeName","pathNode":{"id":18540,"name":"IERC20Metadata","nameLocations":["1447:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1447:14:57"},"referencedDeclaration":8682,"src":"1447:14:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18545,"mutability":"mutable","name":"investAsset_","nameLocation":"1489:12:57","nodeType":"VariableDeclaration","scope":18563,"src":"1474:27:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18544,"nodeType":"UserDefinedTypeName","pathNode":{"id":18543,"name":"IERC20Metadata","nameLocations":["1474:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1474:14:57"},"referencedDeclaration":8682,"src":"1474:14:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18547,"mutability":"mutable","name":"price_","nameLocation":"1515:6:57","nodeType":"VariableDeclaration","scope":18563,"src":"1507:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1507:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18550,"mutability":"mutable","name":"aave_","nameLocation":"1533:5:57","nodeType":"VariableDeclaration","scope":18563,"src":"1527:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"},"typeName":{"id":18549,"nodeType":"UserDefinedTypeName","pathNode":{"id":18548,"name":"IPool","nameLocations":["1527:5:57"],"nodeType":"IdentifierPath","referencedDeclaration":20704,"src":"1527:5:57"},"referencedDeclaration":20704,"src":"1527:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"visibility":"internal"}],"src":"1441:101:57"},"returnParameters":{"id":18557,"nodeType":"ParameterList","parameters":[],"src":"1598:0:57"},"scope":18848,"src":"1430:192:57","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18577,"nodeType":"Block","src":"1703:61:57","statements":[{"expression":{"arguments":[{"arguments":[{"id":18573,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"1745:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":18572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1737:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18571,"name":"address","nodeType":"ElementaryTypeName","src":"1737:7:57","typeDescriptions":{}}},"id":18574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1737:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18569,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"1716:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":18570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1722:14:57","memberName":"getReserveData","nodeType":"MemberAccess","referencedDeclaration":20554,"src":"1716:20:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function (address) view external returns (struct DataTypes.ReserveData memory)"}},"id":18575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1716:43:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"functionReturnParameters":18568,"id":18576,"nodeType":"Return","src":"1709:50:57"}]},"id":18578,"implemented":true,"kind":"function","modifiers":[],"name":"_reserveData","nameLocation":"1635:12:57","nodeType":"FunctionDefinition","parameters":{"id":18564,"nodeType":"ParameterList","parameters":[],"src":"1647:2:57"},"returnParameters":{"id":18568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18578,"src":"1673:28:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":18566,"nodeType":"UserDefinedTypeName","pathNode":{"id":18565,"name":"DataTypes.ReserveData","nameLocations":["1673:9:57","1683:11:57"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"1673:21:57"},"referencedDeclaration":19475,"src":"1673:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"1672:30:57"},"scope":18848,"src":"1626:138:57","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[19048],"body":{"id":18611,"nodeType":"Block","src":"1840:172:57","statements":[{"assignments":[18588],"declarations":[{"constant":false,"id":18588,"mutability":"mutable","name":"aToken","nameLocation":"1861:6:57","nodeType":"VariableDeclaration","scope":18611,"src":"1846:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18587,"nodeType":"UserDefinedTypeName","pathNode":{"id":18586,"name":"IERC20Metadata","nameLocations":["1846:14:57"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1846:14:57"},"referencedDeclaration":8682,"src":"1846:14:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"id":18594,"initialValue":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18590,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"1885:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":18591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1885:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1900:13:57","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"1885:28:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18589,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"1870:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":18593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1870:44:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"nodeType":"VariableDeclarationStatement","src":"1846:68:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1924:6:57","subExpression":{"id":18595,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18580,"src":"1925:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":18601,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1959:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1951:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18599,"name":"address","nodeType":"ElementaryTypeName","src":"1951:7:57","typeDescriptions":{}}},"id":18602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1951:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18597,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18588,"src":"1934:6:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1941:9:57","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"1934:16:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1934:31:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":18604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1969:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1934:36:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1924:46:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18610,"nodeType":"IfStatement","src":"1920:87:57","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18607,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18906,"src":"1979:26:57","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:28:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18609,"nodeType":"RevertStatement","src":"1972:35:57"}}]},"functionSelector":"5a117456","id":18612,"implemented":true,"kind":"function","modifiers":[{"id":18584,"kind":"modifierInvocation","modifierName":{"id":18583,"name":"onlyDelegCall","nameLocations":["1826:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"1826:13:57"},"nodeType":"ModifierInvocation","src":"1826:13:57"}],"name":"disconnect","nameLocation":"1777:10:57","nodeType":"FunctionDefinition","overrides":{"id":18582,"nodeType":"OverrideSpecifier","overrides":[],"src":"1817:8:57"},"parameters":{"id":18581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18580,"mutability":"mutable","name":"force","nameLocation":"1793:5:57","nodeType":"VariableDeclaration","scope":18612,"src":"1788:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18579,"name":"bool","nodeType":"ElementaryTypeName","src":"1788:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1787:12:57"},"returnParameters":{"id":18585,"nodeType":"ParameterList","parameters":[],"src":"1840:0:57"},"scope":18848,"src":"1768:244:57","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[19062],"body":{"id":18645,"nodeType":"Block","src":"2103:259:57","statements":[{"assignments":[18624],"declarations":[{"constant":false,"id":18624,"mutability":"mutable","name":"reserve","nameLocation":"2138:7:57","nodeType":"VariableDeclaration","scope":18645,"src":"2109:36:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":18623,"nodeType":"UserDefinedTypeName","pathNode":{"id":18622,"name":"DataTypes.ReserveData","nameLocations":["2109:9:57","2119:11:57"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"2109:21:57"},"referencedDeclaration":19475,"src":"2109:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":18627,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18625,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"2148:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":18626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2148:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2109:53:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2172:34:57","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18628,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18624,"src":"2173:7:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2181:13:57","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2173:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":18630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2195:9:57","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":21323,"src":"2173:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":18631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18633,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18624,"src":"2210:7:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18634,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2218:13:57","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2210:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":18635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2232:9:57","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":21423,"src":"2210:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":18636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2210:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2172:71:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18640,"nodeType":"IfStatement","src":"2168:85:57","trueBody":{"expression":{"hexValue":"30","id":18638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2252:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18619,"id":18639,"nodeType":"Return","src":"2245:8:57"}},{"expression":{"arguments":[{"id":18642,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18614,"src":"2278:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18641,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[18708],"referencedDeclaration":18708,"src":"2266:11:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":18643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18619,"id":18644,"nodeType":"Return","src":"2259:29:57"}]},"functionSelector":"ce96cb77","id":18646,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2025:11:57","nodeType":"FunctionDefinition","overrides":{"id":18616,"nodeType":"OverrideSpecifier","overrides":[],"src":"2076:8:57"},"parameters":{"id":18615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18614,"mutability":"mutable","name":"contract_","nameLocation":"2045:9:57","nodeType":"VariableDeclaration","scope":18646,"src":"2037:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18613,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2036:19:57"},"returnParameters":{"id":18619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18618,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18646,"src":"2094:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18617,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2093:9:57"},"scope":18848,"src":"2016:346:57","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[19078],"body":{"id":18686,"nodeType":"Block","src":"2456:254:57","statements":[{"assignments":[18658],"declarations":[{"constant":false,"id":18658,"mutability":"mutable","name":"reserve","nameLocation":"2491:7:57","nodeType":"VariableDeclaration","scope":18686,"src":"2462:36:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":18657,"nodeType":"UserDefinedTypeName","pathNode":{"id":18656,"name":"DataTypes.ReserveData","nameLocations":["2462:9:57","2472:11:57"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"2462:21:57"},"referencedDeclaration":19475,"src":"2462:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"id":18661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":18659,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"2501:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":18660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"nodeType":"VariableDeclarationStatement","src":"2462:53:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":18671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2525:34:57","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18662,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18658,"src":"2526:7:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18663,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2534:13:57","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2526:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":18664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2548:9:57","memberName":"getActive","nodeType":"MemberAccess","referencedDeclaration":21323,"src":"2526:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":18665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2526:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18667,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18658,"src":"2563:7:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2571:13:57","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2563:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":18669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2585:9:57","memberName":"getPaused","nodeType":"MemberAccess","referencedDeclaration":21423,"src":"2563:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":18670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2563:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2525:71:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":18672,"name":"reserve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18658,"src":"2600:7:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18673,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2608:13:57","memberName":"configuration","nodeType":"MemberAccess","referencedDeclaration":19446,"src":"2600:21:57","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":18674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2622:9:57","memberName":"getFrozen","nodeType":"MemberAccess","referencedDeclaration":21373,"src":"2600:31:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$returns$_t_bool_$attached_to$_t_struct$_ReserveConfigurationMap_$19478_memory_ptr_$","typeString":"function (struct DataTypes.ReserveConfigurationMap memory) pure returns (bool)"}},"id":18675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:33:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2525:108:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18679,"nodeType":"IfStatement","src":"2521:128:57","trueBody":{"expression":{"hexValue":"30","id":18677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2648:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":18653,"id":18678,"nodeType":"Return","src":"2641:8:57"}},{"expression":{"expression":{"arguments":[{"id":18682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2693:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18681,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:57","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":18680,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2688:4:57","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":18684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2702:3:57","memberName":"max","nodeType":"MemberAccess","src":"2688:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18653,"id":18685,"nodeType":"Return","src":"2681:24:57"}]},"functionSelector":"402d267d","id":18687,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2375:10:57","nodeType":"FunctionDefinition","overrides":{"id":18650,"nodeType":"OverrideSpecifier","overrides":[],"src":"2429:8:57"},"parameters":{"id":18649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18687,"src":"2386:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18647,"name":"address","nodeType":"ElementaryTypeName","src":"2386:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2385:23:57"},"returnParameters":{"id":18653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18687,"src":"2447:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18651,"name":"uint256","nodeType":"ElementaryTypeName","src":"2447:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2446:9:57"},"scope":18848,"src":"2366:344:57","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[19161],"body":{"id":18707,"nodeType":"Block","src":"2808:110:57","statements":[{"expression":{"arguments":[{"arguments":[{"id":18702,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18689,"src":"2891:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":18697,"name":"_reserveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18578,"src":"2851:12:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_ReserveData_$19475_memory_ptr_$","typeString":"function () view returns (struct DataTypes.ReserveData memory)"}},"id":18698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2851:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData memory"}},"id":18699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2866:13:57","memberName":"aTokenAddress","nodeType":"MemberAccess","referencedDeclaration":19462,"src":"2851:28:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":18696,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"2836:14:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":18700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:44:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2881:9:57","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2836:54:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2836:65:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":18704,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18689,"src":"2903:9:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":18695,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19143,"src":"2821:14:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":18705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2821:92:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18694,"id":18706,"nodeType":"Return","src":"2814:99:57"}]},"functionSelector":"f3e0ffbf","id":18708,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2723:11:57","nodeType":"FunctionDefinition","overrides":{"id":18691,"nodeType":"OverrideSpecifier","overrides":[],"src":"2774:8:57"},"parameters":{"id":18690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18689,"mutability":"mutable","name":"contract_","nameLocation":"2743:9:57","nodeType":"VariableDeclaration","scope":18708,"src":"2735:17:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18688,"name":"address","nodeType":"ElementaryTypeName","src":"2735:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2734:19:57"},"returnParameters":{"id":18694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18693,"mutability":"mutable","name":"assets","nameLocation":"2800:6:57","nodeType":"VariableDeclaration","scope":18708,"src":"2792:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18692,"name":"uint256","nodeType":"ElementaryTypeName","src":"2792:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2791:16:57"},"scope":18848,"src":"2714:204:57","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[19256],"body":{"id":18756,"nodeType":"Block","src":"2994:478:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18716,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18710,"src":"3004:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":18717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3014:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3004:11:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18720,"nodeType":"IfStatement","src":"3000:24:57","trueBody":{"functionReturnParameters":18715,"id":18719,"nodeType":"Return","src":"3017:7:57"}},{"expression":{"arguments":[{"arguments":[{"id":18726,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3106:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":18725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3098:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18724,"name":"address","nodeType":"ElementaryTypeName","src":"3098:7:57","typeDescriptions":{}}},"id":18727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3098:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":18730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3126:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":18729,"name":"uint256","nodeType":"ElementaryTypeName","src":"3126:7:57","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":18728,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3121:4:57","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":18731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":18732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3135:3:57","memberName":"max","nodeType":"MemberAccess","src":"3121:17:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":18735,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3148:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18734,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3140:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18733,"name":"address","nodeType":"ElementaryTypeName","src":"3140:7:57","typeDescriptions":{}}},"id":18736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:13:57","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":18721,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"3083:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":18723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3089:8:57","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":20321,"src":"3083:14:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) external returns (uint256)"}},"id":18737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3083:71:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18738,"nodeType":"ExpressionStatement","src":"3083:71:57"},{"expression":{"arguments":[{"id":18742,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18710,"src":"3228:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18739,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3213:5:57","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SwapStableAaveV3InvestStrategy_$18848_$","typeString":"type(contract super SwapStableAaveV3InvestStrategy)"}},"id":18741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3219:8:57","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":19256,"src":"3213:14:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3213:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18744,"nodeType":"ExpressionStatement","src":"3213:22:57"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":18750,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3454:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3446:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18748,"name":"address","nodeType":"ElementaryTypeName","src":"3446:7:57","typeDescriptions":{}}},"id":18751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3446:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18746,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3423:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3436:9:57","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"3423:22:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3423:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":18753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3462:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18745,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18847,"src":"3415:7:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool)"}},"id":18754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3415:52:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18755,"nodeType":"ExpressionStatement","src":"3415:52:57"}]},"functionSelector":"2e1a7d4d","id":18757,"implemented":true,"kind":"function","modifiers":[{"id":18714,"kind":"modifierInvocation","modifierName":{"id":18713,"name":"onlyDelegCall","nameLocations":["2980:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"2980:13:57"},"nodeType":"ModifierInvocation","src":"2980:13:57"}],"name":"withdraw","nameLocation":"2931:8:57","nodeType":"FunctionDefinition","overrides":{"id":18712,"nodeType":"OverrideSpecifier","overrides":[],"src":"2971:8:57"},"parameters":{"id":18711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18710,"mutability":"mutable","name":"assets","nameLocation":"2948:6:57","nodeType":"VariableDeclaration","scope":18757,"src":"2940:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18709,"name":"uint256","nodeType":"ElementaryTypeName","src":"2940:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2939:16:57"},"returnParameters":{"id":18715,"nodeType":"ParameterList","parameters":[],"src":"2994:0:57"},"scope":18848,"src":"2922:550:57","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[19303],"body":{"id":18782,"nodeType":"Block","src":"3547:126:57","statements":[{"expression":{"arguments":[{"id":18768,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18759,"src":"3567:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18765,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3553:5:57","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SwapStableAaveV3InvestStrategy_$18848_$","typeString":"type(contract super SwapStableAaveV3InvestStrategy)"}},"id":18767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3559:7:57","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":19303,"src":"3553:13:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3553:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18770,"nodeType":"ExpressionStatement","src":"3553:21:57"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":18776,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3654:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3646:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18774,"name":"address","nodeType":"ElementaryTypeName","src":"3646:7:57","typeDescriptions":{}}},"id":18777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3646:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":18772,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3623:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3636:9:57","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"3623:22:57","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":18778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3623:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":18779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3662:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":18771,"name":"_supply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18847,"src":"3615:7:57","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool)"}},"id":18780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3615:53:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18781,"nodeType":"ExpressionStatement","src":"3615:53:57"}]},"functionSelector":"b6b55f25","id":18783,"implemented":true,"kind":"function","modifiers":[{"id":18763,"kind":"modifierInvocation","modifierName":{"id":18762,"name":"onlyDelegCall","nameLocations":["3533:13:57"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"3533:13:57"},"nodeType":"ModifierInvocation","src":"3533:13:57"}],"name":"deposit","nameLocation":"3485:7:57","nodeType":"FunctionDefinition","overrides":{"id":18761,"nodeType":"OverrideSpecifier","overrides":[],"src":"3524:8:57"},"parameters":{"id":18760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18759,"mutability":"mutable","name":"assets","nameLocation":"3501:6:57","nodeType":"VariableDeclaration","scope":18783,"src":"3493:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18758,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:16:57"},"returnParameters":{"id":18764,"nodeType":"ParameterList","parameters":[],"src":"3547:0:57"},"scope":18848,"src":"3476:197:57","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":18846,"nodeType":"Block","src":"3734:329:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18790,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18785,"src":"3744:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":18791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3754:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3744:11:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18794,"nodeType":"IfStatement","src":"3740:24:57","trueBody":{"functionReturnParameters":18789,"id":18793,"nodeType":"Return","src":"3757:7:57"}},{"expression":{"arguments":[{"arguments":[{"id":18800,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"3798:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}],"id":18799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3790:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18798,"name":"address","nodeType":"ElementaryTypeName","src":"3790:7:57","typeDescriptions":{}}},"id":18801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3790:14:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18802,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18785,"src":"3806:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":18795,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3769:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3782:7:57","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":8643,"src":"3769:20:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":18803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3769:44:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18804,"nodeType":"ExpressionStatement","src":"3769:44:57"},{"condition":{"id":18805,"name":"failSafe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18787,"src":"3823:8:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[{"arguments":[{"id":18835,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"4018:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":18834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4010:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18833,"name":"address","nodeType":"ElementaryTypeName","src":"4010:7:57","typeDescriptions":{}}},"id":18836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4010:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18837,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18785,"src":"4033:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":18840,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4049:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4041:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18838,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:57","typeDescriptions":{}}},"id":18841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4041:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":18842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4056:1:57","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":18830,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"3997:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":18832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4003:6:57","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":20289,"src":"3997:12:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":18843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3997:61:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18844,"nodeType":"ExpressionStatement","src":"3997:61:57"},"id":18845,"nodeType":"IfStatement","src":"3819:239:57","trueBody":{"id":18829,"nodeType":"Block","src":"3833:158:57","statements":[{"clauses":[{"block":{"id":18820,"nodeType":"Block","src":"3907:25:57","statements":[{"functionReturnParameters":18789,"id":18819,"nodeType":"Return","src":"3917:7:57"}]},"errorName":"","id":18821,"nodeType":"TryCatchClause","src":"3907:25:57"},{"block":{"id":18826,"nodeType":"Block","src":"3939:46:57","statements":[{"eventCall":{"arguments":[{"id":18823,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18785,"src":"3969:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":18822,"name":"ResupplyFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18535,"src":"3954:14:57","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":18824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3954:22:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18825,"nodeType":"EmitStatement","src":"3949:27:57"}]},"errorName":"","id":18827,"nodeType":"TryCatchClause","src":"3933:52:57"}],"externalCall":{"arguments":[{"arguments":[{"id":18810,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3866:12:57","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":18809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3858:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18808,"name":"address","nodeType":"ElementaryTypeName","src":"3858:7:57","typeDescriptions":{}}},"id":18811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3858:21:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":18812,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18785,"src":"3881:6:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":18815,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3897:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableAaveV3InvestStrategy_$18848","typeString":"contract SwapStableAaveV3InvestStrategy"}],"id":18814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3889:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18813,"name":"address","nodeType":"ElementaryTypeName","src":"3889:7:57","typeDescriptions":{}}},"id":18816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3889:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":18817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3904:1:57","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":18806,"name":"_aave","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18538,"src":"3845:5:57","typeDescriptions":{"typeIdentifier":"t_contract$_IPool_$20704","typeString":"contract IPool"}},"id":18807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3851:6:57","memberName":"supply","nodeType":"MemberAccess","referencedDeclaration":20289,"src":"3845:12:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint16_$returns$__$","typeString":"function (address,uint256,address,uint16) external"}},"id":18818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3845:61:57","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18828,"nodeType":"TryStatement","src":"3841:144:57"}]}}]},"id":18847,"implemented":true,"kind":"function","modifiers":[],"name":"_supply","nameLocation":"3686:7:57","nodeType":"FunctionDefinition","parameters":{"id":18788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18785,"mutability":"mutable","name":"assets","nameLocation":"3702:6:57","nodeType":"VariableDeclaration","scope":18847,"src":"3694:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18784,"name":"uint256","nodeType":"ElementaryTypeName","src":"3694:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":18787,"mutability":"mutable","name":"failSafe","nameLocation":"3715:8:57","nodeType":"VariableDeclaration","scope":18847,"src":"3710:13:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18786,"name":"bool","nodeType":"ElementaryTypeName","src":"3710:4:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3693:31:57"},"returnParameters":{"id":18789,"nodeType":"ParameterList","parameters":[],"src":"3734:0:57"},"scope":18848,"src":"3677:386:57","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":18849,"src":"823:3242:57","usedErrors":[18904,18906,18908,18910],"usedEvents":[18535,18902]}],"src":"39:4027:57"},"id":57},"contracts/SwapStableInvestStrategy.sol":{"ast":{"absolutePath":"contracts/SwapStableInvestStrategy.sol","exportedSymbols":{"IERC20Metadata":[8682],"IExposeStorage":[22298],"IInvestStrategy":[22374],"InvestStrategyClient":[15775],"Math":[11309],"StorageSlot":[9667],"SwapLibrary":[1390],"SwapStableInvestStrategy":[19441]},"id":19442,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":18850,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:58"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","file":"@openzeppelin/contracts/interfaces/IERC20Metadata.sol","id":18852,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":7369,"src":"64:85:58","symbolAliases":[{"foreign":{"id":18851,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"72:14:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","file":"@ensuro/swaplibrary/contracts/SwapLibrary.sol","id":18854,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":1391,"src":"150:74:58","symbolAliases":[{"foreign":{"id":18853,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"158:11:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"./interfaces/IInvestStrategy.sol","id":18856,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":22375,"src":"225:65:58","symbolAliases":[{"foreign":{"id":18855,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"233:15:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":18858,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":9668,"src":"291:74:58","symbolAliases":[{"foreign":{"id":18857,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"299:11:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":18860,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":11310,"src":"366:65:58","symbolAliases":[{"foreign":{"id":18859,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"374:4:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"./interfaces/IExposeStorage.sol","id":18862,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":22299,"src":"432:63:58","symbolAliases":[{"foreign":{"id":18861,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"440:14:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"./InvestStrategyClient.sol","id":18864,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":19442,"sourceUnit":15776,"src":"496:64:58","symbolAliases":[{"foreign":{"id":18863,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"504:20:58","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":18866,"name":"IInvestStrategy","nameLocations":["894:15:58"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"894:15:58"},"id":18867,"nodeType":"InheritanceSpecifier","src":"894:15:58"}],"canonicalName":"SwapStableInvestStrategy","contractDependencies":[],"contractKind":"contract","documentation":{"id":18865,"nodeType":"StructuredDocumentation","src":"562:294:58","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":19441,"linearizedBaseContracts":[19441,22374],"name":"SwapStableInvestStrategy","nameLocation":"866:24:58","nodeType":"ContractDefinition","nodes":[{"global":false,"id":18871,"libraryName":{"id":18868,"name":"SwapLibrary","nameLocations":["920:11:58"],"nodeType":"IdentifierPath","referencedDeclaration":1390,"src":"920:11:58"},"nodeType":"UsingForDirective","src":"914:45:58","typeName":{"id":18870,"nodeType":"UserDefinedTypeName","pathNode":{"id":18869,"name":"SwapLibrary.SwapConfig","nameLocations":["936:11:58","948:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"936:22:58"},"referencedDeclaration":624,"src":"936:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}}},{"constant":true,"id":18874,"mutability":"constant","name":"WAD","nameLocation":"988:3:58","nodeType":"VariableDeclaration","scope":19441,"src":"963:35:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18872,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":18873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"994:4:58","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":false,"id":18880,"mutability":"immutable","name":"__self","nameLocation":"1029:6:58","nodeType":"VariableDeclaration","scope":19441,"src":"1003:48:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18875,"name":"address","nodeType":"ElementaryTypeName","src":"1003:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":18878,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1046:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":18877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1038:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18876,"name":"address","nodeType":"ElementaryTypeName","src":"1038:7:58","typeDescriptions":{}}},"id":18879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1038:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[22373],"constant":false,"functionSelector":"5b9a4c35","id":18886,"mutability":"immutable","name":"storageSlot","nameLocation":"1080:11:58","nodeType":"VariableDeclaration","scope":19441,"src":"1055:81:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":18881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1055:7:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":18884,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1131:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"expression":{"id":18882,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"1094:20:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":18883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1115:15:58","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"1094:36:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":18885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1094:42:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":18889,"mutability":"immutable","name":"_asset","nameLocation":"1175:6:58","nodeType":"VariableDeclaration","scope":19441,"src":"1141:40:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18888,"nodeType":"UserDefinedTypeName","pathNode":{"id":18887,"name":"IERC20Metadata","nameLocations":["1141:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1141:14:58"},"referencedDeclaration":8682,"src":"1141:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18892,"mutability":"immutable","name":"_investAsset","nameLocation":"1219:12:58","nodeType":"VariableDeclaration","scope":19441,"src":"1185:46:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18891,"nodeType":"UserDefinedTypeName","pathNode":{"id":18890,"name":"IERC20Metadata","nameLocations":["1185:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1185:14:58"},"referencedDeclaration":8682,"src":"1185:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18894,"mutability":"immutable","name":"_price","nameLocation":"1262:6:58","nodeType":"VariableDeclaration","scope":19441,"src":"1235:33:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18893,"name":"uint256","nodeType":"ElementaryTypeName","src":"1235:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"ca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f8","id":18902,"name":"SwapConfigChanged","nameLocation":"1355:17:58","nodeType":"EventDefinition","parameters":{"id":18901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18897,"indexed":false,"mutability":"mutable","name":"oldConfig","nameLocation":"1396:9:58","nodeType":"VariableDeclaration","scope":18902,"src":"1373:32:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":18896,"nodeType":"UserDefinedTypeName","pathNode":{"id":18895,"name":"SwapLibrary.SwapConfig","nameLocations":["1373:11:58","1385:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1373:22:58"},"referencedDeclaration":624,"src":"1373:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":18900,"indexed":false,"mutability":"mutable","name":"newConfig","nameLocation":"1430:9:58","nodeType":"VariableDeclaration","scope":18902,"src":"1407:32:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":18899,"nodeType":"UserDefinedTypeName","pathNode":{"id":18898,"name":"SwapLibrary.SwapConfig","nameLocations":["1407:11:58","1419:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"1407:22:58"},"referencedDeclaration":624,"src":"1407:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"1372:68:58"},"src":"1349:92:58"},{"errorSelector":"aafc462c","id":18904,"name":"CanBeCalledOnlyThroughDelegateCall","nameLocation":"1451:34:58","nodeType":"ErrorDefinition","parameters":{"id":18903,"nodeType":"ParameterList","parameters":[],"src":"1485:2:58"},"src":"1445:43:58"},{"errorSelector":"8542eda2","id":18906,"name":"CannotDisconnectWithAssets","nameLocation":"1497:26:58","nodeType":"ErrorDefinition","parameters":{"id":18905,"nodeType":"ParameterList","parameters":[],"src":"1523:2:58"},"src":"1491:35:58"},{"errorSelector":"50701b61","id":18908,"name":"NoExtraDataAllowed","nameLocation":"1535:18:58","nodeType":"ErrorDefinition","parameters":{"id":18907,"nodeType":"ParameterList","parameters":[],"src":"1553:2:58"},"src":"1529:27:58"},{"errorSelector":"c891add2","id":18910,"name":"InvalidAsset","nameLocation":"1565:12:58","nodeType":"ErrorDefinition","parameters":{"id":18909,"nodeType":"ParameterList","parameters":[],"src":"1577:2:58"},"src":"1559:21:58"},{"canonicalName":"SwapStableInvestStrategy.ForwardMethods","id":18912,"members":[{"id":18911,"name":"setSwapConfig","nameLocation":"1610:13:58","nodeType":"EnumValue","src":"1610:13:58"}],"name":"ForwardMethods","nameLocation":"1589:14:58","nodeType":"EnumDefinition","src":"1584:43:58"},{"body":{"id":18925,"nodeType":"Block","src":"1656:90:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":18919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":18916,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1674:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":18915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1666:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":18914,"name":"address","nodeType":"ElementaryTypeName","src":"1666:7:58","typeDescriptions":{}}},"id":18917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":18918,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18880,"src":"1683:6:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1666:23:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":18923,"nodeType":"IfStatement","src":"1662:72:58","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":18920,"name":"CanBeCalledOnlyThroughDelegateCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18904,"src":"1698:34:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1698:36:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":18922,"nodeType":"RevertStatement","src":"1691:43:58"}},{"id":18924,"nodeType":"PlaceholderStatement","src":"1740:1:58"}]},"id":18926,"name":"onlyDelegCall","nameLocation":"1640:13:58","nodeType":"ModifierDefinition","parameters":{"id":18913,"nodeType":"ParameterList","parameters":[],"src":"1653:2:58"},"src":"1631:115:58","virtual":false,"visibility":"internal"},{"body":{"id":18978,"nodeType":"Block","src":"2204:247:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":18943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18939,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18930,"src":"2218:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2225:8:58","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"2218:15:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":18941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2218:17:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3138","id":18942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2239:2:58","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2218:23:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":18944,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18910,"src":"2243:12:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2243:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":18938,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2210:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":18946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2210:48:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18947,"nodeType":"ExpressionStatement","src":"2210:48:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":18953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18949,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18933,"src":"2272:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2285:8:58","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"2272:21:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":18951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2272:23:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"3138","id":18952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2299:2:58","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2272:29:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":18954,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18910,"src":"2303:12:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2303:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":18948,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2264:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":18956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2264:54:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18957,"nodeType":"ExpressionStatement","src":"2264:54:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"id":18961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":18959,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18930,"src":"2332:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":18960,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18933,"src":"2342:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"src":"2332:22:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[],"expression":{"argumentTypes":[],"id":18962,"name":"InvalidAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18910,"src":"2356:12:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":18963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2356:14:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_error","typeString":"error"}],"id":18958,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2324:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_error_$returns$__$","typeString":"function (bool,error) pure"}},"id":18964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2324:47:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":18965,"nodeType":"ExpressionStatement","src":"2324:47:58"},{"expression":{"id":18968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18966,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"2377:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18967,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18930,"src":"2386:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"src":"2377:15:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18969,"nodeType":"ExpressionStatement","src":"2377:15:58"},{"expression":{"id":18972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18970,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"2398:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18971,"name":"investAsset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18933,"src":"2413:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"src":"2398:27:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18973,"nodeType":"ExpressionStatement","src":"2398:27:58"},{"expression":{"id":18976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":18974,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18894,"src":"2431:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":18975,"name":"price_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18935,"src":"2440:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2431:15:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":18977,"nodeType":"ExpressionStatement","src":"2431:15:58"}]},"documentation":{"id":18927,"nodeType":"StructuredDocumentation","src":"1750:371:58","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":18979,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":18936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18930,"mutability":"mutable","name":"asset_","nameLocation":"2151:6:58","nodeType":"VariableDeclaration","scope":18979,"src":"2136:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18929,"nodeType":"UserDefinedTypeName","pathNode":{"id":18928,"name":"IERC20Metadata","nameLocations":["2136:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"2136:14:58"},"referencedDeclaration":8682,"src":"2136:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18933,"mutability":"mutable","name":"investAsset_","nameLocation":"2174:12:58","nodeType":"VariableDeclaration","scope":18979,"src":"2159:27:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18932,"nodeType":"UserDefinedTypeName","pathNode":{"id":18931,"name":"IERC20Metadata","nameLocations":["2159:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"2159:14:58"},"referencedDeclaration":8682,"src":"2159:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"},{"constant":false,"id":18935,"mutability":"mutable","name":"price_","nameLocation":"2196:6:58","nodeType":"VariableDeclaration","scope":18979,"src":"2188:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2188:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2135:68:58"},"returnParameters":{"id":18937,"nodeType":"ParameterList","parameters":[],"src":"2204:0:58"},"scope":19441,"src":"2124:327:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":18996,"nodeType":"Block","src":"2531:47:58","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":18994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":18987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2544:2:58","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":18992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":18988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2551:2:58","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":18989,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18982,"src":"2556:5:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":18990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2562:8:58","memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":8681,"src":"2556:14:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":18991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2556:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2551:21:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":18993,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2550:23:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2544:29:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":18986,"id":18995,"nodeType":"Return","src":"2537:36:58"}]},"id":18997,"implemented":true,"kind":"function","modifiers":[],"name":"_toWadFactor","nameLocation":"2464:12:58","nodeType":"FunctionDefinition","parameters":{"id":18983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18982,"mutability":"mutable","name":"token","nameLocation":"2492:5:58","nodeType":"VariableDeclaration","scope":18997,"src":"2477:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},"typeName":{"id":18981,"nodeType":"UserDefinedTypeName","pathNode":{"id":18980,"name":"IERC20Metadata","nameLocations":["2477:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"2477:14:58"},"referencedDeclaration":8682,"src":"2477:14:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"visibility":"internal"}],"src":"2476:22:58"},"returnParameters":{"id":18986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":18985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":18997,"src":"2522:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":18984,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2521:9:58"},"scope":19441,"src":"2455:123:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[22307],"body":{"id":19021,"nodeType":"Block","src":"2696:109:58","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":19009,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2740:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2752:12:58","memberName":"SwapProtocol","nodeType":"MemberAccess","referencedDeclaration":616,"src":"2740:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapProtocol_$616_$","typeString":"type(enum SwapLibrary.SwapProtocol)"}},"id":19011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2765:9:58","memberName":"undefined","nodeType":"MemberAccess","referencedDeclaration":613,"src":"2740:34:58","typeDescriptions":{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"}},{"hexValue":"30","id":19012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2776:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"arguments":[{"hexValue":"","id":19015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2785:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":19014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2779:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":19013,"name":"bytes","nodeType":"ElementaryTypeName","src":"2779:5:58","typeDescriptions":{}}},"id":19016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2779:9:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapProtocol_$616","typeString":"enum SwapLibrary.SwapProtocol"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":19007,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2717:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2729:10:58","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"2717:22:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}},"id":19017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2717:72:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":19018,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19000,"src":"2791:8:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":19006,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19356,"src":"2702:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":19019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2702:98:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19020,"nodeType":"ExpressionStatement","src":"2702:98:58"}]},"documentation":{"id":18998,"nodeType":"StructuredDocumentation","src":"2582:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9cd47128","id":19022,"implemented":true,"kind":"function","modifiers":[{"id":19004,"kind":"modifierInvocation","modifierName":{"id":19003,"name":"onlyDelegCall","nameLocations":["2682:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"2682:13:58"},"nodeType":"ModifierInvocation","src":"2682:13:58"}],"name":"connect","nameLocation":"2625:7:58","nodeType":"FunctionDefinition","overrides":{"id":19002,"nodeType":"OverrideSpecifier","overrides":[],"src":"2673:8:58"},"parameters":{"id":19001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19000,"mutability":"mutable","name":"initData","nameLocation":"2646:8:58","nodeType":"VariableDeclaration","scope":19022,"src":"2633:21:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":18999,"name":"bytes","nodeType":"ElementaryTypeName","src":"2633:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2632:23:58"},"returnParameters":{"id":19005,"nodeType":"ParameterList","parameters":[],"src":"2696:0:58"},"scope":19441,"src":"2616:189:58","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22313],"body":{"id":19047,"nodeType":"Block","src":"2915:104:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":19042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2925:6:58","subExpression":{"id":19031,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19025,"src":"2926:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":19037,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2966:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":19036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2958:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19035,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:58","typeDescriptions":{}}},"id":19038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2958:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19033,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"2935:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":19034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2948:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2935:22:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2935:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":19040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2976:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2935:42:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2925:52:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19046,"nodeType":"IfStatement","src":"2921:93:58","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19043,"name":"CannotDisconnectWithAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18906,"src":"2986:26:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2986:28:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19045,"nodeType":"RevertStatement","src":"2979:35:58"}}]},"documentation":{"id":19023,"nodeType":"StructuredDocumentation","src":"2809:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"5a117456","id":19048,"implemented":true,"kind":"function","modifiers":[{"id":19029,"kind":"modifierInvocation","modifierName":{"id":19028,"name":"onlyDelegCall","nameLocations":["2901:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"2901:13:58"},"nodeType":"ModifierInvocation","src":"2901:13:58"}],"name":"disconnect","nameLocation":"2852:10:58","nodeType":"FunctionDefinition","overrides":{"id":19027,"nodeType":"OverrideSpecifier","overrides":[],"src":"2892:8:58"},"parameters":{"id":19026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19025,"mutability":"mutable","name":"force","nameLocation":"2868:5:58","nodeType":"VariableDeclaration","scope":19048,"src":"2863:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19024,"name":"bool","nodeType":"ElementaryTypeName","src":"2863:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2862:12:58"},"returnParameters":{"id":19030,"nodeType":"ParameterList","parameters":[],"src":"2915:0:58"},"scope":19441,"src":"2843:176:58","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[22367],"body":{"id":19061,"nodeType":"Block","src":"3144:109:58","statements":[{"expression":{"arguments":[{"id":19058,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19051,"src":"3169:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19057,"name":"totalAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19161,"src":"3157:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":19059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3157:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19056,"id":19060,"nodeType":"Return","src":"3150:29:58"}]},"documentation":{"id":19049,"nodeType":"StructuredDocumentation","src":"3023:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"ce96cb77","id":19062,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"3066:11:58","nodeType":"FunctionDefinition","overrides":{"id":19053,"nodeType":"OverrideSpecifier","overrides":[],"src":"3117:8:58"},"parameters":{"id":19052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19051,"mutability":"mutable","name":"contract_","nameLocation":"3086:9:58","nodeType":"VariableDeclaration","scope":19062,"src":"3078:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19050,"name":"address","nodeType":"ElementaryTypeName","src":"3078:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3077:19:58"},"returnParameters":{"id":19056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19062,"src":"3135:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19054,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:9:58"},"scope":19441,"src":"3057:196:58","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22359],"body":{"id":19077,"nodeType":"Block","src":"3381:104:58","statements":[{"expression":{"expression":{"arguments":[{"id":19073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3399:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":19072,"name":"uint256","nodeType":"ElementaryTypeName","src":"3399:7:58","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":19071,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3394:4:58","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":19074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3394:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":19075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3408:3:58","memberName":"max","nodeType":"MemberAccess","src":"3394:17:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19070,"id":19076,"nodeType":"Return","src":"3387:24:58"}]},"documentation":{"id":19063,"nodeType":"StructuredDocumentation","src":"3257:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"402d267d","id":19078,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3300:10:58","nodeType":"FunctionDefinition","overrides":{"id":19067,"nodeType":"OverrideSpecifier","overrides":[],"src":"3354:8:58"},"parameters":{"id":19066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19078,"src":"3311:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19064,"name":"address","nodeType":"ElementaryTypeName","src":"3311:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3310:23:58"},"returnParameters":{"id":19070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19078,"src":"3372:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19068,"name":"uint256","nodeType":"ElementaryTypeName","src":"3372:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3371:9:58"},"scope":19441,"src":"3291:194:58","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22343],"body":{"id":19092,"nodeType":"Block","src":"3594:33:58","statements":[{"expression":{"arguments":[{"id":19089,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"3615:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3607:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19087,"name":"address","nodeType":"ElementaryTypeName","src":"3607:7:58","typeDescriptions":{}}},"id":19090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19086,"id":19091,"nodeType":"Return","src":"3600:22:58"}]},"documentation":{"id":19079,"nodeType":"StructuredDocumentation","src":"3489:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"9c4667a2","id":19093,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"3532:5:58","nodeType":"FunctionDefinition","overrides":{"id":19083,"nodeType":"OverrideSpecifier","overrides":[],"src":"3567:8:58"},"parameters":{"id":19082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19093,"src":"3538:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19080,"name":"address","nodeType":"ElementaryTypeName","src":"3538:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3537:9:58"},"returnParameters":{"id":19086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19093,"src":"3585:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19084,"name":"address","nodeType":"ElementaryTypeName","src":"3585:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3584:9:58"},"scope":19441,"src":"3523:104:58","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":19106,"nodeType":"Block","src":"3772:39:58","statements":[{"expression":{"arguments":[{"id":19103,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"3793:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3785:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19101,"name":"address","nodeType":"ElementaryTypeName","src":"3785:7:58","typeDescriptions":{}}},"id":19104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3785:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":19100,"id":19105,"nodeType":"Return","src":"3778:28:58"}]},"documentation":{"id":19094,"nodeType":"StructuredDocumentation","src":"3631:78:58","text":" @dev Returns the address of the asset invested in the strategy."},"functionSelector":"de846ae4","id":19107,"implemented":true,"kind":"function","modifiers":[],"name":"investAsset","nameLocation":"3721:11:58","nodeType":"FunctionDefinition","parameters":{"id":19097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19107,"src":"3733:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19095,"name":"address","nodeType":"ElementaryTypeName","src":"3733:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3732:9:58"},"returnParameters":{"id":19100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19099,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19107,"src":"3763:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19098,"name":"address","nodeType":"ElementaryTypeName","src":"3763:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3762:9:58"},"scope":19441,"src":"3712:99:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":19142,"nodeType":"Block","src":"4380:209:58","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19121,"name":"investAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19110,"src":"4432:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":19123,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"4460:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19122,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18997,"src":"4447:12:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20Metadata_$8682_$returns$_t_uint256_$","typeString":"function (contract IERC20Metadata) view returns (uint256)"}},"id":19124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4447:26:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4432:41:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19126,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18894,"src":"4475:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19127,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18874,"src":"4483:3:58","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":19119,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4420:4:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":19120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4425:6:58","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"4420:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4420:67:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19129,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18874,"src":"4497:3:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"arguments":[{"id":19131,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19112,"src":"4518:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19130,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19426,"src":"4503:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":19132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4503:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":19133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4529:11:58","memberName":"maxSlippage","nodeType":"MemberAccess","referencedDeclaration":621,"src":"4503:37:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4497:43:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19135,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18874,"src":"4550:3:58","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":19117,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4399:4:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":19118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4404:6:58","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"4399:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:162:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":19138,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"4577:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19137,"name":"_toWadFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18997,"src":"4564:12:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20Metadata_$8682_$returns$_t_uint256_$","typeString":"function (contract IERC20Metadata) view returns (uint256)"}},"id":19139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4564:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4399:185:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19116,"id":19141,"nodeType":"Return","src":"4386:198:58"}]},"documentation":{"id":19108,"nodeType":"StructuredDocumentation","src":"3815:450:58","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":19143,"implemented":true,"kind":"function","modifiers":[],"name":"_convertAssets","nameLocation":"4277:14:58","nodeType":"FunctionDefinition","parameters":{"id":19113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19110,"mutability":"mutable","name":"investAssets","nameLocation":"4300:12:58","nodeType":"VariableDeclaration","scope":19143,"src":"4292:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19109,"name":"uint256","nodeType":"ElementaryTypeName","src":"4292:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19112,"mutability":"mutable","name":"contract_","nameLocation":"4322:9:58","nodeType":"VariableDeclaration","scope":19143,"src":"4314:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19111,"name":"address","nodeType":"ElementaryTypeName","src":"4314:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4291:41:58"},"returnParameters":{"id":19116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19115,"mutability":"mutable","name":"assets","nameLocation":"4372:6:58","nodeType":"VariableDeclaration","scope":19143,"src":"4364:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19114,"name":"uint256","nodeType":"ElementaryTypeName","src":"4364:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4363:16:58"},"scope":19441,"src":"4268:321:58","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[22351],"body":{"id":19160,"nodeType":"Block","src":"4721:78:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":19155,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19146,"src":"4772:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19153,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"4749:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":19154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4762:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"4749:22:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4749:33:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19157,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19146,"src":"4784:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19152,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19143,"src":"4734:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":19158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4734:60:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":19151,"id":19159,"nodeType":"Return","src":"4727:67:58"}]},"documentation":{"id":19144,"nodeType":"StructuredDocumentation","src":"4593:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"f3e0ffbf","id":19161,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4636:11:58","nodeType":"FunctionDefinition","overrides":{"id":19148,"nodeType":"OverrideSpecifier","overrides":[],"src":"4687:8:58"},"parameters":{"id":19147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19146,"mutability":"mutable","name":"contract_","nameLocation":"4656:9:58","nodeType":"VariableDeclaration","scope":19161,"src":"4648:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19145,"name":"address","nodeType":"ElementaryTypeName","src":"4648:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4647:19:58"},"returnParameters":{"id":19151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19150,"mutability":"mutable","name":"assets","nameLocation":"4713:6:58","nodeType":"VariableDeclaration","scope":19161,"src":"4705:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19149,"name":"uint256","nodeType":"ElementaryTypeName","src":"4705:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4704:16:58"},"scope":19441,"src":"4627:172:58","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22325],"body":{"id":19255,"nodeType":"Block","src":"5076:902:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19170,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19164,"src":"5086:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":19171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5096:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5086:11:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19174,"nodeType":"IfStatement","src":"5082:24:58","trueBody":{"functionReturnParameters":19169,"id":19173,"nodeType":"Return","src":"5099:7:58"}},{"assignments":[19179],"declarations":[{"constant":false,"id":19179,"mutability":"mutable","name":"swapConfig","nameLocation":"5141:10:58","nodeType":"VariableDeclaration","scope":19255,"src":"5111:40:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19178,"nodeType":"UserDefinedTypeName","pathNode":{"id":19177,"name":"SwapLibrary.SwapConfig","nameLocations":["5111:11:58","5123:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"5111:22:58"},"referencedDeclaration":624,"src":"5111:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":19191,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":19184,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18886,"src":"5197:11:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":19182,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"5172:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":19183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5184:12:58","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"5172:24:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":19185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5172:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":19186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5210:5:58","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"5172:43:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"expression":{"id":19187,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"5224:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5236:10:58","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"5224:22:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":19189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5223:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":19180,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5154:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5158:6:58","memberName":"decode","nodeType":"MemberAccess","src":"5154:10:58","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":19190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5154:99:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"5111:142:58"},{"assignments":[19193],"declarations":[{"constant":false,"id":19193,"mutability":"mutable","name":"price","nameLocation":"5375:5:58","nodeType":"VariableDeclaration","scope":19255,"src":"5367:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19192,"name":"uint256","nodeType":"ElementaryTypeName","src":"5367:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":19200,"initialValue":{"arguments":[{"id":19196,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18874,"src":"5395:3:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19197,"name":"WAD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18874,"src":"5400:3:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19198,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18894,"src":"5405:6:58","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":19194,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"5383:4:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":19195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5388:6:58","memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":10139,"src":"5383:11:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":19199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5383:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5367:45:58"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19201,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19164,"src":"5461:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"arguments":[{"arguments":[{"id":19207,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5517:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":19206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5509:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19205,"name":"address","nodeType":"ElementaryTypeName","src":"5509:7:58","typeDescriptions":{}}},"id":19208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5509:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19203,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"5486:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":19204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5499:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"5486:22:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5486:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":19212,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5533:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":19211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5525:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19210,"name":"address","nodeType":"ElementaryTypeName","src":"5525:7:58","typeDescriptions":{}}},"id":19213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5525:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":19202,"name":"_convertAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19143,"src":"5471:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":19214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5471:68:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5461:78:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":19253,"nodeType":"Block","src":"5882:92:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":19243,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"5921:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5913:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19241,"name":"address","nodeType":"ElementaryTypeName","src":"5913:7:58","typeDescriptions":{}}},"id":19244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5913:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":19247,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"5944:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5936:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19245,"name":"address","nodeType":"ElementaryTypeName","src":"5936:7:58","typeDescriptions":{}}},"id":19248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5936:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19249,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19164,"src":"5953:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19250,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19193,"src":"5961:5:58","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":19238,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19179,"src":"5890:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":19240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5901:11:58","memberName":"exactOutput","nodeType":"MemberAccess","referencedDeclaration":844,"src":"5890:22:58","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":19251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5890:77:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19252,"nodeType":"ExpressionStatement","src":"5890:77:58"}]},"id":19254,"nodeType":"IfStatement","src":"5457:517:58","trueBody":{"id":19237,"nodeType":"Block","src":"5541:335:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":19221,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"5792:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5784:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19219,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:58","typeDescriptions":{}}},"id":19222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5784:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":19225,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"5815:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5807:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19223,"name":"address","nodeType":"ElementaryTypeName","src":"5807:7:58","typeDescriptions":{}}},"id":19226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5807:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":19231,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5855:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":19230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5847:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19229,"name":"address","nodeType":"ElementaryTypeName","src":"5847:7:58","typeDescriptions":{}}},"id":19232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5847:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":19227,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"5824:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},"id":19228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5837:9:58","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"5824:22:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":19233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5824:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19234,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19193,"src":"5863:5:58","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":19216,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19179,"src":"5762:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":19218,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5773:10:58","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":794,"src":"5762:21:58","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":19235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5762:107:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19236,"nodeType":"ExpressionStatement","src":"5762:107:58"}]}}]},"documentation":{"id":19162,"nodeType":"StructuredDocumentation","src":"4837:164:58","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":19256,"implemented":true,"kind":"function","modifiers":[{"id":19168,"kind":"modifierInvocation","modifierName":{"id":19167,"name":"onlyDelegCall","nameLocations":["5062:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"5062:13:58"},"nodeType":"ModifierInvocation","src":"5062:13:58"}],"name":"withdraw","nameLocation":"5013:8:58","nodeType":"FunctionDefinition","overrides":{"id":19166,"nodeType":"OverrideSpecifier","overrides":[],"src":"5053:8:58"},"parameters":{"id":19165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19164,"mutability":"mutable","name":"assets","nameLocation":"5030:6:58","nodeType":"VariableDeclaration","scope":19256,"src":"5022:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19163,"name":"uint256","nodeType":"ElementaryTypeName","src":"5022:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5021:16:58"},"returnParameters":{"id":19169,"nodeType":"ParameterList","parameters":[],"src":"5076:0:58"},"scope":19441,"src":"5004:974:58","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[22319],"body":{"id":19302,"nodeType":"Block","src":"6255:374:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19265,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19259,"src":"6265:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":19266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6275:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6265:11:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19269,"nodeType":"IfStatement","src":"6261:24:58","trueBody":{"functionReturnParameters":19264,"id":19268,"nodeType":"Return","src":"6278:7:58"}},{"assignments":[19274],"declarations":[{"constant":false,"id":19274,"mutability":"mutable","name":"swapConfig","nameLocation":"6320:10:58","nodeType":"VariableDeclaration","scope":19302,"src":"6290:40:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19273,"nodeType":"UserDefinedTypeName","pathNode":{"id":19272,"name":"SwapLibrary.SwapConfig","nameLocations":["6290:11:58","6302:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6290:22:58"},"referencedDeclaration":624,"src":"6290:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":19286,"initialValue":{"arguments":[{"expression":{"arguments":[{"id":19279,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18886,"src":"6376:11:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":19277,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"6351:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":19278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6363:12:58","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"6351:24:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":19280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6351:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":19281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6389:5:58","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"6351:43:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"expression":{"id":19282,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"6403:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6415:10:58","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"6403:22:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":19284,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6402:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":19275,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6333:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6337:6:58","memberName":"decode","nodeType":"MemberAccess","src":"6333:10:58","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":19285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6333:99:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"6290:142:58"},{"expression":{"arguments":[{"arguments":[{"id":19292,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18889,"src":"6577:6:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6569:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19290,"name":"address","nodeType":"ElementaryTypeName","src":"6569:7:58","typeDescriptions":{}}},"id":19293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6569:15:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":19296,"name":"_investAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18892,"src":"6594:12:58","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}],"id":19295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6586:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19294,"name":"address","nodeType":"ElementaryTypeName","src":"6586:7:58","typeDescriptions":{}}},"id":19297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6586:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":19298,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19259,"src":"6609:6:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":19299,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18894,"src":"6617:6:58","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":19287,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19274,"src":"6547:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":19289,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6558:10:58","memberName":"exactInput","nodeType":"MemberAccess","referencedDeclaration":794,"src":"6547:21:58","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory,address,address,uint256,uint256) returns (uint256)"}},"id":19300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6547:77:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19301,"nodeType":"ExpressionStatement","src":"6547:77:58"}]},"documentation":{"id":19257,"nodeType":"StructuredDocumentation","src":"6016:165:58","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":19303,"implemented":true,"kind":"function","modifiers":[{"id":19263,"kind":"modifierInvocation","modifierName":{"id":19262,"name":"onlyDelegCall","nameLocations":["6241:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"6241:13:58"},"nodeType":"ModifierInvocation","src":"6241:13:58"}],"name":"deposit","nameLocation":"6193:7:58","nodeType":"FunctionDefinition","overrides":{"id":19261,"nodeType":"OverrideSpecifier","overrides":[],"src":"6232:8:58"},"parameters":{"id":19260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19259,"mutability":"mutable","name":"assets","nameLocation":"6209:6:58","nodeType":"VariableDeclaration","scope":19303,"src":"6201:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19258,"name":"uint256","nodeType":"ElementaryTypeName","src":"6201:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6200:16:58"},"returnParameters":{"id":19264,"nodeType":"ParameterList","parameters":[],"src":"6255:0:58"},"scope":19441,"src":"6184:445:58","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":19355,"nodeType":"Block","src":"6746:365:58","statements":[{"assignments":[19315],"declarations":[{"constant":false,"id":19315,"mutability":"mutable","name":"swapConfig","nameLocation":"6782:10:58","nodeType":"VariableDeclaration","scope":19355,"src":"6752:40:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19314,"nodeType":"UserDefinedTypeName","pathNode":{"id":19313,"name":"SwapLibrary.SwapConfig","nameLocations":["6752:11:58","6764:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6752:22:58"},"referencedDeclaration":624,"src":"6752:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"id":19323,"initialValue":{"arguments":[{"id":19318,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19308,"src":"6806:20:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":19319,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"6829:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6841:10:58","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"6829:22:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":19321,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6828:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":19316,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6795:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6799:6:58","memberName":"decode","nodeType":"MemberAccess","src":"6795:10:58","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":19322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6795:58:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"nodeType":"VariableDeclarationStatement","src":"6752:101:58"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":19324,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19315,"src":"6859:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"id":19326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6870:8:58","memberName":"validate","nodeType":"MemberAccess","referencedDeclaration":724,"src":"6859:19:58","typeDescriptions":{"typeIdentifier":"t_function_delegatecall_pure$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$attached_to$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (struct SwapLibrary.SwapConfig memory) pure"}},"id":19327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6859:21:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19328,"nodeType":"ExpressionStatement","src":"6859:21:58"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":19336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":19331,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19315,"src":"6901:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"expression":{"id":19329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6890:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6894:6:58","memberName":"encode","nodeType":"MemberAccess","src":"6890:10:58","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":19332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6890:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6913:6:58","memberName":"length","nodeType":"MemberAccess","src":"6890:29:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":19334,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19308,"src":"6923:20:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":19335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6944:6:58","memberName":"length","nodeType":"MemberAccess","src":"6923:27:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6890:60:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":19340,"nodeType":"IfStatement","src":"6886:93:58","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":19337,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18908,"src":"6959:18:58","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":19338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6959:20:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":19339,"nodeType":"RevertStatement","src":"6952:27:58"}},{"eventCall":{"arguments":[{"id":19342,"name":"oldSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19306,"src":"7008:13:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":19343,"name":"swapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19315,"src":"7023:10:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}],"id":19341,"name":"SwapConfigChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18902,"src":"6990:17:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_struct$_SwapConfig_$624_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,struct SwapLibrary.SwapConfig memory)"}},"id":19344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6990:44:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19345,"nodeType":"EmitStatement","src":"6985:49:58"},{"expression":{"id":19353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":19349,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18886,"src":"7065:11:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":19346,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"7040:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":19348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7052:12:58","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"7040:24:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":19350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":19351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7078:5:58","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"7040:43:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":19352,"name":"newSwapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19308,"src":"7086:20:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"7040:66:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":19354,"nodeType":"ExpressionStatement","src":"7040:66:58"}]},"id":19356,"implemented":true,"kind":"function","modifiers":[],"name":"_setSwapConfig","nameLocation":"6642:14:58","nodeType":"FunctionDefinition","parameters":{"id":19309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19306,"mutability":"mutable","name":"oldSwapConfig","nameLocation":"6687:13:58","nodeType":"VariableDeclaration","scope":19356,"src":"6657:43:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19305,"nodeType":"UserDefinedTypeName","pathNode":{"id":19304,"name":"SwapLibrary.SwapConfig","nameLocations":["6657:11:58","6669:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"6657:22:58"},"referencedDeclaration":624,"src":"6657:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"},{"constant":false,"id":19308,"mutability":"mutable","name":"newSwapConfigAsBytes","nameLocation":"6715:20:58","nodeType":"VariableDeclaration","scope":19356,"src":"6702:33:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19307,"name":"bytes","nodeType":"ElementaryTypeName","src":"6702:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6656:80:58"},"returnParameters":{"id":19310,"nodeType":"ParameterList","parameters":[],"src":"6746:0:58"},"scope":19441,"src":"6633:478:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[22335],"body":{"id":19399,"nodeType":"Block","src":"7257:741:58","statements":[{"assignments":[19370],"declarations":[{"constant":false,"id":19370,"mutability":"mutable","name":"checkedMethod","nameLocation":"7278:13:58","nodeType":"VariableDeclaration","scope":19399,"src":"7263:28:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"},"typeName":{"id":19369,"nodeType":"UserDefinedTypeName","pathNode":{"id":19368,"name":"ForwardMethods","nameLocations":["7263:14:58"],"nodeType":"IdentifierPath","referencedDeclaration":18912,"src":"7263:14:58"},"referencedDeclaration":18912,"src":"7263:14:58","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":19374,"initialValue":{"arguments":[{"id":19372,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19359,"src":"7309:6:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":19371,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18912,"src":"7294:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$18912_$","typeString":"type(enum SwapStableInvestStrategy.ForwardMethods)"}},"id":19373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7294:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"7263:53:58"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"},"id":19378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":19375,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19370,"src":"7326:13:58","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":19376,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18912,"src":"7343:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$18912_$","typeString":"type(enum SwapStableInvestStrategy.ForwardMethods)"}},"id":19377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7358:13:58","memberName":"setSwapConfig","nodeType":"MemberAccess","referencedDeclaration":18911,"src":"7343:28:58","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$18912","typeString":"enum SwapStableInvestStrategy.ForwardMethods"}},"src":"7326:45:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":19390,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7962:6:58","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$__$returns$__$","typeString":"function () pure"}},"id":19391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7962:8:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19392,"nodeType":"ExpressionStatement","src":"7962:8:58"},"id":19393,"nodeType":"IfStatement","src":"7322:648:58","trueBody":{"id":19389,"nodeType":"Block","src":"7373:337:58","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":19383,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7688:4:58","typeDescriptions":{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapStableInvestStrategy_$19441","typeString":"contract SwapStableInvestStrategy"}],"id":19382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7680:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":19381,"name":"address","nodeType":"ElementaryTypeName","src":"7680:7:58","typeDescriptions":{}}},"id":19384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7680:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19380,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19426,"src":"7665:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":19385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7665:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},{"id":19386,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19361,"src":"7696:6:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":19379,"name":"_setSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19356,"src":"7650:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SwapConfig_$624_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct SwapLibrary.SwapConfig memory,bytes memory)"}},"id":19387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7650:53:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":19388,"nodeType":"ExpressionStatement","src":"7650:53:58"}]}},{"expression":{"arguments":[{"hexValue":"","id":19396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7990:2:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":19395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7984:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":19394,"name":"bytes","nodeType":"ElementaryTypeName","src":"7984:5:58","typeDescriptions":{}}},"id":19397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7984:9:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":19367,"id":19398,"nodeType":"Return","src":"7977:16:58"}]},"documentation":{"id":19357,"nodeType":"StructuredDocumentation","src":"7115:31:58","text":"@inheritdoc IInvestStrategy"},"functionSelector":"0981b1c2","id":19400,"implemented":true,"kind":"function","modifiers":[{"id":19364,"kind":"modifierInvocation","modifierName":{"id":19363,"name":"onlyDelegCall","nameLocations":["7220:13:58"],"nodeType":"IdentifierPath","referencedDeclaration":18926,"src":"7220:13:58"},"nodeType":"ModifierInvocation","src":"7220:13:58"}],"name":"forwardEntryPoint","nameLocation":"7158:17:58","nodeType":"FunctionDefinition","parameters":{"id":19362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19359,"mutability":"mutable","name":"method","nameLocation":"7182:6:58","nodeType":"VariableDeclaration","scope":19400,"src":"7176:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19358,"name":"uint8","nodeType":"ElementaryTypeName","src":"7176:5:58","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19361,"mutability":"mutable","name":"params","nameLocation":"7203:6:58","nodeType":"VariableDeclaration","scope":19400,"src":"7190:19:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19360,"name":"bytes","nodeType":"ElementaryTypeName","src":"7190:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7175:35:58"},"returnParameters":{"id":19367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19366,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19400,"src":"7243:12:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19365,"name":"bytes","nodeType":"ElementaryTypeName","src":"7243:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7242:14:58"},"scope":19441,"src":"7149:849:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":19425,"nodeType":"Block","src":"8099:163:58","statements":[{"assignments":[19409],"declarations":[{"constant":false,"id":19409,"mutability":"mutable","name":"swapConfigAsBytes","nameLocation":"8118:17:58","nodeType":"VariableDeclaration","scope":19425,"src":"8105:30:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":19408,"name":"bytes","nodeType":"ElementaryTypeName","src":"8105:5:58","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":19416,"initialValue":{"arguments":[{"id":19414,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18886,"src":"8177:11:58","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":19411,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19402,"src":"8153:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19410,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"8138:14:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$22298_$","typeString":"type(contract IExposeStorage)"}},"id":19412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8138:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$22298","typeString":"contract IExposeStorage"}},"id":19413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8164:12:58","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":22297,"src":"8138:38:58","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":19415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8138:51:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8105:84:58"},{"expression":{"arguments":[{"id":19419,"name":"swapConfigAsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19409,"src":"8213:17:58","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"expression":{"id":19420,"name":"SwapLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"8233:11:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SwapLibrary_$1390_$","typeString":"type(library SwapLibrary)"}},"id":19421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8245:10:58","memberName":"SwapConfig","nodeType":"MemberAccess","referencedDeclaration":624,"src":"8233:22:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}}],"id":19422,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8232:24:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SwapConfig_$624_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_$624_storage_ptr_$","typeString":"type(struct SwapLibrary.SwapConfig storage pointer)"}],"expression":{"id":19417,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8202:3:58","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":19418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8206:6:58","memberName":"decode","nodeType":"MemberAccess","src":"8202:10:58","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":19423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8202:55:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":19407,"id":19424,"nodeType":"Return","src":"8195:62:58"}]},"id":19426,"implemented":true,"kind":"function","modifiers":[],"name":"_getSwapConfig","nameLocation":"8011:14:58","nodeType":"FunctionDefinition","parameters":{"id":19403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19402,"mutability":"mutable","name":"contract_","nameLocation":"8034:9:58","nodeType":"VariableDeclaration","scope":19426,"src":"8026:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19401,"name":"address","nodeType":"ElementaryTypeName","src":"8026:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8025:19:58"},"returnParameters":{"id":19407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19426,"src":"8068:29:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19405,"nodeType":"UserDefinedTypeName","pathNode":{"id":19404,"name":"SwapLibrary.SwapConfig","nameLocations":["8068:11:58","8080:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"8068:22:58"},"referencedDeclaration":624,"src":"8068:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8067:31:58"},"scope":19441,"src":"8002:260:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":19439,"nodeType":"Block","src":"8493:43:58","statements":[{"expression":{"arguments":[{"id":19436,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19429,"src":"8521:9:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":19435,"name":"_getSwapConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19426,"src":"8506:14:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_SwapConfig_$624_memory_ptr_$","typeString":"function (address) view returns (struct SwapLibrary.SwapConfig memory)"}},"id":19437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8506:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig memory"}},"functionReturnParameters":19434,"id":19438,"nodeType":"Return","src":"8499:32:58"}]},"documentation":{"id":19427,"nodeType":"StructuredDocumentation","src":"8266:130:58","text":" @dev Returns the swap configuration of the given contract.\n @param contract_ Address of the vault contract"},"functionSelector":"42b054f0","id":19440,"implemented":true,"kind":"function","modifiers":[],"name":"getSwapConfig","nameLocation":"8408:13:58","nodeType":"FunctionDefinition","parameters":{"id":19430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19429,"mutability":"mutable","name":"contract_","nameLocation":"8430:9:58","nodeType":"VariableDeclaration","scope":19440,"src":"8422:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19428,"name":"address","nodeType":"ElementaryTypeName","src":"8422:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8421:19:58"},"returnParameters":{"id":19434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":19433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":19440,"src":"8462:29:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_memory_ptr","typeString":"struct SwapLibrary.SwapConfig"},"typeName":{"id":19432,"nodeType":"UserDefinedTypeName","pathNode":{"id":19431,"name":"SwapLibrary.SwapConfig","nameLocations":["8462:11:58","8474:10:58"],"nodeType":"IdentifierPath","referencedDeclaration":624,"src":"8462:22:58"},"referencedDeclaration":624,"src":"8462:22:58","typeDescriptions":{"typeIdentifier":"t_struct$_SwapConfig_$624_storage_ptr","typeString":"struct SwapLibrary.SwapConfig"}},"visibility":"internal"}],"src":"8461:31:58"},"scope":19441,"src":"8399:137:58","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":19442,"src":"857:7681:58","usedErrors":[18904,18906,18908,18910],"usedEvents":[18902]}],"src":"39:8500:58"},"id":58},"contracts/dependencies/aave-v3/DataTypes.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","exportedSymbols":{"DataTypes":[19793]},"id":19794,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":19443,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:59"},{"abstract":false,"baseContracts":[],"canonicalName":"DataTypes","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":19793,"linearizedBaseContracts":[19793],"name":"DataTypes","nameLocation":"70:9:59","nodeType":"ContractDefinition","nodes":[{"canonicalName":"DataTypes.ReserveData","id":19475,"members":[{"constant":false,"id":19446,"mutability":"mutable","name":"configuration","nameLocation":"172:13:59","nodeType":"VariableDeclaration","scope":19475,"src":"148:37:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19445,"nodeType":"UserDefinedTypeName","pathNode":{"id":19444,"name":"ReserveConfigurationMap","nameLocations":["148:23:59"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"148:23:59"},"referencedDeclaration":19478,"src":"148:23:59","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19448,"mutability":"mutable","name":"liquidityIndex","nameLocation":"243:14:59","nodeType":"VariableDeclaration","scope":19475,"src":"235:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19447,"name":"uint128","nodeType":"ElementaryTypeName","src":"235:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19450,"mutability":"mutable","name":"currentLiquidityRate","nameLocation":"319:20:59","nodeType":"VariableDeclaration","scope":19475,"src":"311:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19449,"name":"uint128","nodeType":"ElementaryTypeName","src":"311:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19452,"mutability":"mutable","name":"variableBorrowIndex","nameLocation":"399:19:59","nodeType":"VariableDeclaration","scope":19475,"src":"391:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19451,"name":"uint128","nodeType":"ElementaryTypeName","src":"391:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19454,"mutability":"mutable","name":"currentVariableBorrowRate","nameLocation":"489:25:59","nodeType":"VariableDeclaration","scope":19475,"src":"481:33:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19453,"name":"uint128","nodeType":"ElementaryTypeName","src":"481:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19456,"mutability":"mutable","name":"currentStableBorrowRate","nameLocation":"583:23:59","nodeType":"VariableDeclaration","scope":19475,"src":"575:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19455,"name":"uint128","nodeType":"ElementaryTypeName","src":"575:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19458,"mutability":"mutable","name":"lastUpdateTimestamp","nameLocation":"650:19:59","nodeType":"VariableDeclaration","scope":19475,"src":"643:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":19457,"name":"uint40","nodeType":"ElementaryTypeName","src":"643:6:59","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":19460,"mutability":"mutable","name":"id","nameLocation":"770:2:59","nodeType":"VariableDeclaration","scope":19475,"src":"763:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19459,"name":"uint16","nodeType":"ElementaryTypeName","src":"763:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19462,"mutability":"mutable","name":"aTokenAddress","nameLocation":"807:13:59","nodeType":"VariableDeclaration","scope":19475,"src":"799:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19461,"name":"address","nodeType":"ElementaryTypeName","src":"799:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19464,"mutability":"mutable","name":"stableDebtTokenAddress","nameLocation":"864:22:59","nodeType":"VariableDeclaration","scope":19475,"src":"856:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19463,"name":"address","nodeType":"ElementaryTypeName","src":"856:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19466,"mutability":"mutable","name":"variableDebtTokenAddress","nameLocation":"932:24:59","nodeType":"VariableDeclaration","scope":19475,"src":"924:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19465,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19468,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"1014:27:59","nodeType":"VariableDeclaration","scope":19475,"src":"1006:35:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19467,"name":"address","nodeType":"ElementaryTypeName","src":"1006:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19470,"mutability":"mutable","name":"accruedToTreasury","nameLocation":"1098:17:59","nodeType":"VariableDeclaration","scope":19475,"src":"1090:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19469,"name":"uint128","nodeType":"ElementaryTypeName","src":"1090:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19472,"mutability":"mutable","name":"unbacked","nameLocation":"1204:8:59","nodeType":"VariableDeclaration","scope":19475,"src":"1196:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19471,"name":"uint128","nodeType":"ElementaryTypeName","src":"1196:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":19474,"mutability":"mutable","name":"isolationModeTotalDebt","nameLocation":"1299:22:59","nodeType":"VariableDeclaration","scope":19475,"src":"1291:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":19473,"name":"uint128","nodeType":"ElementaryTypeName","src":"1291:7:59","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"name":"ReserveData","nameLocation":"91:11:59","nodeType":"StructDefinition","scope":19793,"src":"84:1242:59","visibility":"public"},{"canonicalName":"DataTypes.ReserveConfigurationMap","id":19478,"members":[{"constant":false,"id":19477,"mutability":"mutable","name":"data","nameLocation":"2260:4:59","nodeType":"VariableDeclaration","scope":19478,"src":"2252:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19476,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReserveConfigurationMap","nameLocation":"1337:23:59","nodeType":"StructDefinition","scope":19793,"src":"1330:939:59","visibility":"public"},{"canonicalName":"DataTypes.UserConfigurationMap","id":19482,"members":[{"constant":false,"id":19481,"mutability":"mutable","name":"data","nameLocation":"2578:4:59","nodeType":"VariableDeclaration","scope":19482,"src":"2570:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19480,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"UserConfigurationMap","nameLocation":"2280:20:59","nodeType":"StructDefinition","scope":19793,"src":"2273:314:59","visibility":"public"},{"canonicalName":"DataTypes.EModeCategory","id":19493,"members":[{"constant":false,"id":19484,"mutability":"mutable","name":"ltv","nameLocation":"2695:3:59","nodeType":"VariableDeclaration","scope":19493,"src":"2688:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19483,"name":"uint16","nodeType":"ElementaryTypeName","src":"2688:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19486,"mutability":"mutable","name":"liquidationThreshold","nameLocation":"2711:20:59","nodeType":"VariableDeclaration","scope":19493,"src":"2704:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19485,"name":"uint16","nodeType":"ElementaryTypeName","src":"2704:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19488,"mutability":"mutable","name":"liquidationBonus","nameLocation":"2744:16:59","nodeType":"VariableDeclaration","scope":19493,"src":"2737:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19487,"name":"uint16","nodeType":"ElementaryTypeName","src":"2737:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19490,"mutability":"mutable","name":"priceSource","nameLocation":"2885:11:59","nodeType":"VariableDeclaration","scope":19493,"src":"2877:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19489,"name":"address","nodeType":"ElementaryTypeName","src":"2877:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19492,"mutability":"mutable","name":"label","nameLocation":"2909:5:59","nodeType":"VariableDeclaration","scope":19493,"src":"2902:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":19491,"name":"string","nodeType":"ElementaryTypeName","src":"2902:6:59","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"EModeCategory","nameLocation":"2598:13:59","nodeType":"StructDefinition","scope":19793,"src":"2591:328:59","visibility":"public"},{"canonicalName":"DataTypes.InterestRateMode","id":19497,"members":[{"id":19494,"name":"NONE","nameLocation":"2946:4:59","nodeType":"EnumValue","src":"2946:4:59"},{"id":19495,"name":"STABLE","nameLocation":"2952:6:59","nodeType":"EnumValue","src":"2952:6:59"},{"id":19496,"name":"VARIABLE","nameLocation":"2960:8:59","nodeType":"EnumValue","src":"2960:8:59"}],"name":"InterestRateMode","nameLocation":"2928:16:59","nodeType":"EnumDefinition","src":"2923:46:59"},{"canonicalName":"DataTypes.ReserveCache","id":19539,"members":[{"constant":false,"id":19499,"mutability":"mutable","name":"currScaledVariableDebt","nameLocation":"3007:22:59","nodeType":"VariableDeclaration","scope":19539,"src":"2999:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19501,"mutability":"mutable","name":"nextScaledVariableDebt","nameLocation":"3043:22:59","nodeType":"VariableDeclaration","scope":19539,"src":"3035:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19500,"name":"uint256","nodeType":"ElementaryTypeName","src":"3035:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19503,"mutability":"mutable","name":"currPrincipalStableDebt","nameLocation":"3079:23:59","nodeType":"VariableDeclaration","scope":19539,"src":"3071:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19502,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19505,"mutability":"mutable","name":"currAvgStableBorrowRate","nameLocation":"3116:23:59","nodeType":"VariableDeclaration","scope":19539,"src":"3108:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19504,"name":"uint256","nodeType":"ElementaryTypeName","src":"3108:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19507,"mutability":"mutable","name":"currTotalStableDebt","nameLocation":"3153:19:59","nodeType":"VariableDeclaration","scope":19539,"src":"3145:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19506,"name":"uint256","nodeType":"ElementaryTypeName","src":"3145:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19509,"mutability":"mutable","name":"nextAvgStableBorrowRate","nameLocation":"3186:23:59","nodeType":"VariableDeclaration","scope":19539,"src":"3178:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3178:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19511,"mutability":"mutable","name":"nextTotalStableDebt","nameLocation":"3223:19:59","nodeType":"VariableDeclaration","scope":19539,"src":"3215:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19510,"name":"uint256","nodeType":"ElementaryTypeName","src":"3215:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19513,"mutability":"mutable","name":"currLiquidityIndex","nameLocation":"3256:18:59","nodeType":"VariableDeclaration","scope":19539,"src":"3248:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19512,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19515,"mutability":"mutable","name":"nextLiquidityIndex","nameLocation":"3288:18:59","nodeType":"VariableDeclaration","scope":19539,"src":"3280:26:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19514,"name":"uint256","nodeType":"ElementaryTypeName","src":"3280:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19517,"mutability":"mutable","name":"currVariableBorrowIndex","nameLocation":"3320:23:59","nodeType":"VariableDeclaration","scope":19539,"src":"3312:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3312:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19519,"mutability":"mutable","name":"nextVariableBorrowIndex","nameLocation":"3357:23:59","nodeType":"VariableDeclaration","scope":19539,"src":"3349:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19518,"name":"uint256","nodeType":"ElementaryTypeName","src":"3349:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19521,"mutability":"mutable","name":"currLiquidityRate","nameLocation":"3394:17:59","nodeType":"VariableDeclaration","scope":19539,"src":"3386:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19520,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19523,"mutability":"mutable","name":"currVariableBorrowRate","nameLocation":"3425:22:59","nodeType":"VariableDeclaration","scope":19539,"src":"3417:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19522,"name":"uint256","nodeType":"ElementaryTypeName","src":"3417:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19525,"mutability":"mutable","name":"reserveFactor","nameLocation":"3461:13:59","nodeType":"VariableDeclaration","scope":19539,"src":"3453:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19524,"name":"uint256","nodeType":"ElementaryTypeName","src":"3453:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19528,"mutability":"mutable","name":"reserveConfiguration","nameLocation":"3504:20:59","nodeType":"VariableDeclaration","scope":19539,"src":"3480:44:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":19527,"nodeType":"UserDefinedTypeName","pathNode":{"id":19526,"name":"ReserveConfigurationMap","nameLocations":["3480:23:59"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"3480:23:59"},"referencedDeclaration":19478,"src":"3480:23:59","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19530,"mutability":"mutable","name":"aTokenAddress","nameLocation":"3538:13:59","nodeType":"VariableDeclaration","scope":19539,"src":"3530:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19529,"name":"address","nodeType":"ElementaryTypeName","src":"3530:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19532,"mutability":"mutable","name":"stableDebtTokenAddress","nameLocation":"3565:22:59","nodeType":"VariableDeclaration","scope":19539,"src":"3557:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19531,"name":"address","nodeType":"ElementaryTypeName","src":"3557:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19534,"mutability":"mutable","name":"variableDebtTokenAddress","nameLocation":"3601:24:59","nodeType":"VariableDeclaration","scope":19539,"src":"3593:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19533,"name":"address","nodeType":"ElementaryTypeName","src":"3593:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19536,"mutability":"mutable","name":"reserveLastUpdateTimestamp","nameLocation":"3638:26:59","nodeType":"VariableDeclaration","scope":19539,"src":"3631:33:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":19535,"name":"uint40","nodeType":"ElementaryTypeName","src":"3631:6:59","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":19538,"mutability":"mutable","name":"stableDebtLastUpdateTimestamp","nameLocation":"3677:29:59","nodeType":"VariableDeclaration","scope":19539,"src":"3670:36:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":19537,"name":"uint40","nodeType":"ElementaryTypeName","src":"3670:6:59","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"name":"ReserveCache","nameLocation":"2980:12:59","nodeType":"StructDefinition","scope":19793,"src":"2973:738:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteLiquidationCallParams","id":19558,"members":[{"constant":false,"id":19541,"mutability":"mutable","name":"reservesCount","nameLocation":"3765:13:59","nodeType":"VariableDeclaration","scope":19558,"src":"3757:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19540,"name":"uint256","nodeType":"ElementaryTypeName","src":"3757:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19543,"mutability":"mutable","name":"debtToCover","nameLocation":"3792:11:59","nodeType":"VariableDeclaration","scope":19558,"src":"3784:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19542,"name":"uint256","nodeType":"ElementaryTypeName","src":"3784:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19545,"mutability":"mutable","name":"collateralAsset","nameLocation":"3817:15:59","nodeType":"VariableDeclaration","scope":19558,"src":"3809:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19544,"name":"address","nodeType":"ElementaryTypeName","src":"3809:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19547,"mutability":"mutable","name":"debtAsset","nameLocation":"3846:9:59","nodeType":"VariableDeclaration","scope":19558,"src":"3838:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19546,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19549,"mutability":"mutable","name":"user","nameLocation":"3869:4:59","nodeType":"VariableDeclaration","scope":19558,"src":"3861:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19548,"name":"address","nodeType":"ElementaryTypeName","src":"3861:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19551,"mutability":"mutable","name":"receiveAToken","nameLocation":"3884:13:59","nodeType":"VariableDeclaration","scope":19558,"src":"3879:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19550,"name":"bool","nodeType":"ElementaryTypeName","src":"3879:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19553,"mutability":"mutable","name":"priceOracle","nameLocation":"3911:11:59","nodeType":"VariableDeclaration","scope":19558,"src":"3903:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19552,"name":"address","nodeType":"ElementaryTypeName","src":"3903:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19555,"mutability":"mutable","name":"userEModeCategory","nameLocation":"3934:17:59","nodeType":"VariableDeclaration","scope":19558,"src":"3928:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19554,"name":"uint8","nodeType":"ElementaryTypeName","src":"3928:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19557,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"3965:19:59","nodeType":"VariableDeclaration","scope":19558,"src":"3957:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19556,"name":"address","nodeType":"ElementaryTypeName","src":"3957:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ExecuteLiquidationCallParams","nameLocation":"3722:28:59","nodeType":"StructDefinition","scope":19793,"src":"3715:274:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteSupplyParams","id":19567,"members":[{"constant":false,"id":19560,"mutability":"mutable","name":"asset","nameLocation":"4034:5:59","nodeType":"VariableDeclaration","scope":19567,"src":"4026:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19559,"name":"address","nodeType":"ElementaryTypeName","src":"4026:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19562,"mutability":"mutable","name":"amount","nameLocation":"4053:6:59","nodeType":"VariableDeclaration","scope":19567,"src":"4045:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19561,"name":"uint256","nodeType":"ElementaryTypeName","src":"4045:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19564,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4073:10:59","nodeType":"VariableDeclaration","scope":19567,"src":"4065:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19563,"name":"address","nodeType":"ElementaryTypeName","src":"4065:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19566,"mutability":"mutable","name":"referralCode","nameLocation":"4096:12:59","nodeType":"VariableDeclaration","scope":19567,"src":"4089:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19565,"name":"uint16","nodeType":"ElementaryTypeName","src":"4089:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"ExecuteSupplyParams","nameLocation":"4000:19:59","nodeType":"StructDefinition","scope":19793,"src":"3993:120:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteBorrowParams","id":19593,"members":[{"constant":false,"id":19569,"mutability":"mutable","name":"asset","nameLocation":"4158:5:59","nodeType":"VariableDeclaration","scope":19593,"src":"4150:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19568,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19571,"mutability":"mutable","name":"user","nameLocation":"4177:4:59","nodeType":"VariableDeclaration","scope":19593,"src":"4169:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19570,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19573,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4195:10:59","nodeType":"VariableDeclaration","scope":19593,"src":"4187:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19572,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19575,"mutability":"mutable","name":"amount","nameLocation":"4219:6:59","nodeType":"VariableDeclaration","scope":19593,"src":"4211:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19574,"name":"uint256","nodeType":"ElementaryTypeName","src":"4211:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19578,"mutability":"mutable","name":"interestRateMode","nameLocation":"4248:16:59","nodeType":"VariableDeclaration","scope":19593,"src":"4231:33:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":19577,"nodeType":"UserDefinedTypeName","pathNode":{"id":19576,"name":"InterestRateMode","nameLocations":["4231:16:59"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"4231:16:59"},"referencedDeclaration":19497,"src":"4231:16:59","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":19580,"mutability":"mutable","name":"referralCode","nameLocation":"4277:12:59","nodeType":"VariableDeclaration","scope":19593,"src":"4270:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19579,"name":"uint16","nodeType":"ElementaryTypeName","src":"4270:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19582,"mutability":"mutable","name":"releaseUnderlying","nameLocation":"4300:17:59","nodeType":"VariableDeclaration","scope":19593,"src":"4295:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19581,"name":"bool","nodeType":"ElementaryTypeName","src":"4295:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19584,"mutability":"mutable","name":"maxStableRateBorrowSizePercent","nameLocation":"4331:30:59","nodeType":"VariableDeclaration","scope":19593,"src":"4323:38:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4323:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19586,"mutability":"mutable","name":"reservesCount","nameLocation":"4375:13:59","nodeType":"VariableDeclaration","scope":19593,"src":"4367:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19585,"name":"uint256","nodeType":"ElementaryTypeName","src":"4367:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19588,"mutability":"mutable","name":"oracle","nameLocation":"4402:6:59","nodeType":"VariableDeclaration","scope":19593,"src":"4394:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19587,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19590,"mutability":"mutable","name":"userEModeCategory","nameLocation":"4420:17:59","nodeType":"VariableDeclaration","scope":19593,"src":"4414:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19589,"name":"uint8","nodeType":"ElementaryTypeName","src":"4414:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19592,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"4451:19:59","nodeType":"VariableDeclaration","scope":19593,"src":"4443:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19591,"name":"address","nodeType":"ElementaryTypeName","src":"4443:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ExecuteBorrowParams","nameLocation":"4124:19:59","nodeType":"StructDefinition","scope":19793,"src":"4117:358:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteRepayParams","id":19605,"members":[{"constant":false,"id":19595,"mutability":"mutable","name":"asset","nameLocation":"4519:5:59","nodeType":"VariableDeclaration","scope":19605,"src":"4511:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19594,"name":"address","nodeType":"ElementaryTypeName","src":"4511:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19597,"mutability":"mutable","name":"amount","nameLocation":"4538:6:59","nodeType":"VariableDeclaration","scope":19605,"src":"4530:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19596,"name":"uint256","nodeType":"ElementaryTypeName","src":"4530:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19600,"mutability":"mutable","name":"interestRateMode","nameLocation":"4567:16:59","nodeType":"VariableDeclaration","scope":19605,"src":"4550:33:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":19599,"nodeType":"UserDefinedTypeName","pathNode":{"id":19598,"name":"InterestRateMode","nameLocations":["4550:16:59"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"4550:16:59"},"referencedDeclaration":19497,"src":"4550:16:59","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":19602,"mutability":"mutable","name":"onBehalfOf","nameLocation":"4597:10:59","nodeType":"VariableDeclaration","scope":19605,"src":"4589:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19601,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19604,"mutability":"mutable","name":"useATokens","nameLocation":"4618:10:59","nodeType":"VariableDeclaration","scope":19605,"src":"4613:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19603,"name":"bool","nodeType":"ElementaryTypeName","src":"4613:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExecuteRepayParams","nameLocation":"4486:18:59","nodeType":"StructDefinition","scope":19793,"src":"4479:154:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteWithdrawParams","id":19618,"members":[{"constant":false,"id":19607,"mutability":"mutable","name":"asset","nameLocation":"4680:5:59","nodeType":"VariableDeclaration","scope":19618,"src":"4672:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19606,"name":"address","nodeType":"ElementaryTypeName","src":"4672:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19609,"mutability":"mutable","name":"amount","nameLocation":"4699:6:59","nodeType":"VariableDeclaration","scope":19618,"src":"4691:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19608,"name":"uint256","nodeType":"ElementaryTypeName","src":"4691:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19611,"mutability":"mutable","name":"to","nameLocation":"4719:2:59","nodeType":"VariableDeclaration","scope":19618,"src":"4711:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19610,"name":"address","nodeType":"ElementaryTypeName","src":"4711:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19613,"mutability":"mutable","name":"reservesCount","nameLocation":"4735:13:59","nodeType":"VariableDeclaration","scope":19618,"src":"4727:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19612,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19615,"mutability":"mutable","name":"oracle","nameLocation":"4762:6:59","nodeType":"VariableDeclaration","scope":19618,"src":"4754:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19614,"name":"address","nodeType":"ElementaryTypeName","src":"4754:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19617,"mutability":"mutable","name":"userEModeCategory","nameLocation":"4780:17:59","nodeType":"VariableDeclaration","scope":19618,"src":"4774:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19616,"name":"uint8","nodeType":"ElementaryTypeName","src":"4774:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ExecuteWithdrawParams","nameLocation":"4644:21:59","nodeType":"StructDefinition","scope":19793,"src":"4637:165:59","visibility":"public"},{"canonicalName":"DataTypes.ExecuteSetUserEModeParams","id":19625,"members":[{"constant":false,"id":19620,"mutability":"mutable","name":"reservesCount","nameLocation":"4853:13:59","nodeType":"VariableDeclaration","scope":19625,"src":"4845:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19619,"name":"uint256","nodeType":"ElementaryTypeName","src":"4845:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19622,"mutability":"mutable","name":"oracle","nameLocation":"4880:6:59","nodeType":"VariableDeclaration","scope":19625,"src":"4872:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19621,"name":"address","nodeType":"ElementaryTypeName","src":"4872:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19624,"mutability":"mutable","name":"categoryId","nameLocation":"4898:10:59","nodeType":"VariableDeclaration","scope":19625,"src":"4892:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19623,"name":"uint8","nodeType":"ElementaryTypeName","src":"4892:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"ExecuteSetUserEModeParams","nameLocation":"4813:25:59","nodeType":"StructDefinition","scope":19793,"src":"4806:107:59","visibility":"public"},{"canonicalName":"DataTypes.FinalizeTransferParams","id":19644,"members":[{"constant":false,"id":19627,"mutability":"mutable","name":"asset","nameLocation":"4961:5:59","nodeType":"VariableDeclaration","scope":19644,"src":"4953:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19626,"name":"address","nodeType":"ElementaryTypeName","src":"4953:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19629,"mutability":"mutable","name":"from","nameLocation":"4980:4:59","nodeType":"VariableDeclaration","scope":19644,"src":"4972:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19628,"name":"address","nodeType":"ElementaryTypeName","src":"4972:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19631,"mutability":"mutable","name":"to","nameLocation":"4998:2:59","nodeType":"VariableDeclaration","scope":19644,"src":"4990:10:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19630,"name":"address","nodeType":"ElementaryTypeName","src":"4990:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19633,"mutability":"mutable","name":"amount","nameLocation":"5014:6:59","nodeType":"VariableDeclaration","scope":19644,"src":"5006:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19632,"name":"uint256","nodeType":"ElementaryTypeName","src":"5006:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19635,"mutability":"mutable","name":"balanceFromBefore","nameLocation":"5034:17:59","nodeType":"VariableDeclaration","scope":19644,"src":"5026:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19634,"name":"uint256","nodeType":"ElementaryTypeName","src":"5026:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19637,"mutability":"mutable","name":"balanceToBefore","nameLocation":"5065:15:59","nodeType":"VariableDeclaration","scope":19644,"src":"5057:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19636,"name":"uint256","nodeType":"ElementaryTypeName","src":"5057:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19639,"mutability":"mutable","name":"reservesCount","nameLocation":"5094:13:59","nodeType":"VariableDeclaration","scope":19644,"src":"5086:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19638,"name":"uint256","nodeType":"ElementaryTypeName","src":"5086:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19641,"mutability":"mutable","name":"oracle","nameLocation":"5121:6:59","nodeType":"VariableDeclaration","scope":19644,"src":"5113:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19640,"name":"address","nodeType":"ElementaryTypeName","src":"5113:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19643,"mutability":"mutable","name":"fromEModeCategory","nameLocation":"5139:17:59","nodeType":"VariableDeclaration","scope":19644,"src":"5133:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19642,"name":"uint8","nodeType":"ElementaryTypeName","src":"5133:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"FinalizeTransferParams","nameLocation":"4924:22:59","nodeType":"StructDefinition","scope":19793,"src":"4917:244:59","visibility":"public"},{"canonicalName":"DataTypes.FlashloanParams","id":19676,"members":[{"constant":false,"id":19646,"mutability":"mutable","name":"receiverAddress","nameLocation":"5202:15:59","nodeType":"VariableDeclaration","scope":19676,"src":"5194:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19645,"name":"address","nodeType":"ElementaryTypeName","src":"5194:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19649,"mutability":"mutable","name":"assets","nameLocation":"5233:6:59","nodeType":"VariableDeclaration","scope":19676,"src":"5223:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":19647,"name":"address","nodeType":"ElementaryTypeName","src":"5223:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":19648,"nodeType":"ArrayTypeName","src":"5223:9:59","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":19652,"mutability":"mutable","name":"amounts","nameLocation":"5255:7:59","nodeType":"VariableDeclaration","scope":19676,"src":"5245:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19650,"name":"uint256","nodeType":"ElementaryTypeName","src":"5245:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19651,"nodeType":"ArrayTypeName","src":"5245:9:59","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":19655,"mutability":"mutable","name":"interestRateModes","nameLocation":"5278:17:59","nodeType":"VariableDeclaration","scope":19676,"src":"5268:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19653,"name":"uint256","nodeType":"ElementaryTypeName","src":"5268:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":19654,"nodeType":"ArrayTypeName","src":"5268:9:59","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":19657,"mutability":"mutable","name":"onBehalfOf","nameLocation":"5309:10:59","nodeType":"VariableDeclaration","scope":19676,"src":"5301:18:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19656,"name":"address","nodeType":"ElementaryTypeName","src":"5301:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19659,"mutability":"mutable","name":"params","nameLocation":"5331:6:59","nodeType":"VariableDeclaration","scope":19676,"src":"5325:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":19658,"name":"bytes","nodeType":"ElementaryTypeName","src":"5325:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19661,"mutability":"mutable","name":"referralCode","nameLocation":"5350:12:59","nodeType":"VariableDeclaration","scope":19676,"src":"5343:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19660,"name":"uint16","nodeType":"ElementaryTypeName","src":"5343:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19663,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5376:26:59","nodeType":"VariableDeclaration","scope":19676,"src":"5368:34:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19662,"name":"uint256","nodeType":"ElementaryTypeName","src":"5368:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19665,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"5416:21:59","nodeType":"VariableDeclaration","scope":19676,"src":"5408:29:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19664,"name":"uint256","nodeType":"ElementaryTypeName","src":"5408:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19667,"mutability":"mutable","name":"maxStableRateBorrowSizePercent","nameLocation":"5451:30:59","nodeType":"VariableDeclaration","scope":19676,"src":"5443:38:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19666,"name":"uint256","nodeType":"ElementaryTypeName","src":"5443:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19669,"mutability":"mutable","name":"reservesCount","nameLocation":"5495:13:59","nodeType":"VariableDeclaration","scope":19676,"src":"5487:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19668,"name":"uint256","nodeType":"ElementaryTypeName","src":"5487:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19671,"mutability":"mutable","name":"addressesProvider","nameLocation":"5522:17:59","nodeType":"VariableDeclaration","scope":19676,"src":"5514:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19670,"name":"address","nodeType":"ElementaryTypeName","src":"5514:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19673,"mutability":"mutable","name":"userEModeCategory","nameLocation":"5551:17:59","nodeType":"VariableDeclaration","scope":19676,"src":"5545:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19672,"name":"uint8","nodeType":"ElementaryTypeName","src":"5545:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19675,"mutability":"mutable","name":"isAuthorizedFlashBorrower","nameLocation":"5579:25:59","nodeType":"VariableDeclaration","scope":19676,"src":"5574:30:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19674,"name":"bool","nodeType":"ElementaryTypeName","src":"5574:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FlashloanParams","nameLocation":"5172:15:59","nodeType":"StructDefinition","scope":19793,"src":"5165:444:59","visibility":"public"},{"canonicalName":"DataTypes.FlashloanSimpleParams","id":19691,"members":[{"constant":false,"id":19678,"mutability":"mutable","name":"receiverAddress","nameLocation":"5656:15:59","nodeType":"VariableDeclaration","scope":19691,"src":"5648:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19677,"name":"address","nodeType":"ElementaryTypeName","src":"5648:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19680,"mutability":"mutable","name":"asset","nameLocation":"5685:5:59","nodeType":"VariableDeclaration","scope":19691,"src":"5677:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19679,"name":"address","nodeType":"ElementaryTypeName","src":"5677:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19682,"mutability":"mutable","name":"amount","nameLocation":"5704:6:59","nodeType":"VariableDeclaration","scope":19691,"src":"5696:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19681,"name":"uint256","nodeType":"ElementaryTypeName","src":"5696:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19684,"mutability":"mutable","name":"params","nameLocation":"5722:6:59","nodeType":"VariableDeclaration","scope":19691,"src":"5716:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":19683,"name":"bytes","nodeType":"ElementaryTypeName","src":"5716:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19686,"mutability":"mutable","name":"referralCode","nameLocation":"5741:12:59","nodeType":"VariableDeclaration","scope":19691,"src":"5734:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19685,"name":"uint16","nodeType":"ElementaryTypeName","src":"5734:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19688,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5767:26:59","nodeType":"VariableDeclaration","scope":19691,"src":"5759:34:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19687,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19690,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"5807:21:59","nodeType":"VariableDeclaration","scope":19691,"src":"5799:29:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19689,"name":"uint256","nodeType":"ElementaryTypeName","src":"5799:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FlashloanSimpleParams","nameLocation":"5620:21:59","nodeType":"StructDefinition","scope":19793,"src":"5613:220:59","visibility":"public"},{"canonicalName":"DataTypes.FlashLoanRepaymentParams","id":19704,"members":[{"constant":false,"id":19693,"mutability":"mutable","name":"amount","nameLocation":"5883:6:59","nodeType":"VariableDeclaration","scope":19704,"src":"5875:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19692,"name":"uint256","nodeType":"ElementaryTypeName","src":"5875:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19695,"mutability":"mutable","name":"totalPremium","nameLocation":"5903:12:59","nodeType":"VariableDeclaration","scope":19704,"src":"5895:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19694,"name":"uint256","nodeType":"ElementaryTypeName","src":"5895:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19697,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"5929:26:59","nodeType":"VariableDeclaration","scope":19704,"src":"5921:34:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19696,"name":"uint256","nodeType":"ElementaryTypeName","src":"5921:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19699,"mutability":"mutable","name":"asset","nameLocation":"5969:5:59","nodeType":"VariableDeclaration","scope":19704,"src":"5961:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19698,"name":"address","nodeType":"ElementaryTypeName","src":"5961:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19701,"mutability":"mutable","name":"receiverAddress","nameLocation":"5988:15:59","nodeType":"VariableDeclaration","scope":19704,"src":"5980:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19700,"name":"address","nodeType":"ElementaryTypeName","src":"5980:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19703,"mutability":"mutable","name":"referralCode","nameLocation":"6016:12:59","nodeType":"VariableDeclaration","scope":19704,"src":"6009:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19702,"name":"uint16","nodeType":"ElementaryTypeName","src":"6009:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"FlashLoanRepaymentParams","nameLocation":"5844:24:59","nodeType":"StructDefinition","scope":19793,"src":"5837:196:59","visibility":"public"},{"canonicalName":"DataTypes.CalculateUserAccountDataParams","id":19716,"members":[{"constant":false,"id":19707,"mutability":"mutable","name":"userConfig","nameLocation":"6102:10:59","nodeType":"VariableDeclaration","scope":19716,"src":"6081:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":19706,"nodeType":"UserDefinedTypeName","pathNode":{"id":19705,"name":"UserConfigurationMap","nameLocations":["6081:20:59"],"nodeType":"IdentifierPath","referencedDeclaration":19482,"src":"6081:20:59"},"referencedDeclaration":19482,"src":"6081:20:59","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19709,"mutability":"mutable","name":"reservesCount","nameLocation":"6126:13:59","nodeType":"VariableDeclaration","scope":19716,"src":"6118:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19708,"name":"uint256","nodeType":"ElementaryTypeName","src":"6118:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19711,"mutability":"mutable","name":"user","nameLocation":"6153:4:59","nodeType":"VariableDeclaration","scope":19716,"src":"6145:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19710,"name":"address","nodeType":"ElementaryTypeName","src":"6145:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19713,"mutability":"mutable","name":"oracle","nameLocation":"6171:6:59","nodeType":"VariableDeclaration","scope":19716,"src":"6163:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19712,"name":"address","nodeType":"ElementaryTypeName","src":"6163:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19715,"mutability":"mutable","name":"userEModeCategory","nameLocation":"6189:17:59","nodeType":"VariableDeclaration","scope":19716,"src":"6183:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19714,"name":"uint8","nodeType":"ElementaryTypeName","src":"6183:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"CalculateUserAccountDataParams","nameLocation":"6044:30:59","nodeType":"StructDefinition","scope":19793,"src":"6037:174:59","visibility":"public"},{"canonicalName":"DataTypes.ValidateBorrowParams","id":19748,"members":[{"constant":false,"id":19719,"mutability":"mutable","name":"reserveCache","nameLocation":"6262:12:59","nodeType":"VariableDeclaration","scope":19748,"src":"6249:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$19539_storage_ptr","typeString":"struct DataTypes.ReserveCache"},"typeName":{"id":19718,"nodeType":"UserDefinedTypeName","pathNode":{"id":19717,"name":"ReserveCache","nameLocations":["6249:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":19539,"src":"6249:12:59"},"referencedDeclaration":19539,"src":"6249:12:59","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$19539_storage_ptr","typeString":"struct DataTypes.ReserveCache"}},"visibility":"internal"},{"constant":false,"id":19722,"mutability":"mutable","name":"userConfig","nameLocation":"6301:10:59","nodeType":"VariableDeclaration","scope":19748,"src":"6280:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":19721,"nodeType":"UserDefinedTypeName","pathNode":{"id":19720,"name":"UserConfigurationMap","nameLocations":["6280:20:59"],"nodeType":"IdentifierPath","referencedDeclaration":19482,"src":"6280:20:59"},"referencedDeclaration":19482,"src":"6280:20:59","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":19724,"mutability":"mutable","name":"asset","nameLocation":"6325:5:59","nodeType":"VariableDeclaration","scope":19748,"src":"6317:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19723,"name":"address","nodeType":"ElementaryTypeName","src":"6317:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19726,"mutability":"mutable","name":"userAddress","nameLocation":"6344:11:59","nodeType":"VariableDeclaration","scope":19748,"src":"6336:19:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19725,"name":"address","nodeType":"ElementaryTypeName","src":"6336:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19728,"mutability":"mutable","name":"amount","nameLocation":"6369:6:59","nodeType":"VariableDeclaration","scope":19748,"src":"6361:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19727,"name":"uint256","nodeType":"ElementaryTypeName","src":"6361:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19731,"mutability":"mutable","name":"interestRateMode","nameLocation":"6398:16:59","nodeType":"VariableDeclaration","scope":19748,"src":"6381:33:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":19730,"nodeType":"UserDefinedTypeName","pathNode":{"id":19729,"name":"InterestRateMode","nameLocations":["6381:16:59"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"6381:16:59"},"referencedDeclaration":19497,"src":"6381:16:59","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":19733,"mutability":"mutable","name":"maxStableLoanPercent","nameLocation":"6428:20:59","nodeType":"VariableDeclaration","scope":19748,"src":"6420:28:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19732,"name":"uint256","nodeType":"ElementaryTypeName","src":"6420:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19735,"mutability":"mutable","name":"reservesCount","nameLocation":"6462:13:59","nodeType":"VariableDeclaration","scope":19748,"src":"6454:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19734,"name":"uint256","nodeType":"ElementaryTypeName","src":"6454:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19737,"mutability":"mutable","name":"oracle","nameLocation":"6489:6:59","nodeType":"VariableDeclaration","scope":19748,"src":"6481:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19736,"name":"address","nodeType":"ElementaryTypeName","src":"6481:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19739,"mutability":"mutable","name":"userEModeCategory","nameLocation":"6507:17:59","nodeType":"VariableDeclaration","scope":19748,"src":"6501:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":19738,"name":"uint8","nodeType":"ElementaryTypeName","src":"6501:5:59","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":19741,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"6538:19:59","nodeType":"VariableDeclaration","scope":19748,"src":"6530:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19740,"name":"address","nodeType":"ElementaryTypeName","src":"6530:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19743,"mutability":"mutable","name":"isolationModeActive","nameLocation":"6568:19:59","nodeType":"VariableDeclaration","scope":19748,"src":"6563:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":19742,"name":"bool","nodeType":"ElementaryTypeName","src":"6563:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":19745,"mutability":"mutable","name":"isolationModeCollateralAddress","nameLocation":"6601:30:59","nodeType":"VariableDeclaration","scope":19748,"src":"6593:38:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19744,"name":"address","nodeType":"ElementaryTypeName","src":"6593:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19747,"mutability":"mutable","name":"isolationModeDebtCeiling","nameLocation":"6645:24:59","nodeType":"VariableDeclaration","scope":19748,"src":"6637:32:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19746,"name":"uint256","nodeType":"ElementaryTypeName","src":"6637:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ValidateBorrowParams","nameLocation":"6222:20:59","nodeType":"StructDefinition","scope":19793,"src":"6215:459:59","visibility":"public"},{"canonicalName":"DataTypes.ValidateLiquidationCallParams","id":19758,"members":[{"constant":false,"id":19751,"mutability":"mutable","name":"debtReserveCache","nameLocation":"6734:16:59","nodeType":"VariableDeclaration","scope":19758,"src":"6721:29:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$19539_storage_ptr","typeString":"struct DataTypes.ReserveCache"},"typeName":{"id":19750,"nodeType":"UserDefinedTypeName","pathNode":{"id":19749,"name":"ReserveCache","nameLocations":["6721:12:59"],"nodeType":"IdentifierPath","referencedDeclaration":19539,"src":"6721:12:59"},"referencedDeclaration":19539,"src":"6721:12:59","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveCache_$19539_storage_ptr","typeString":"struct DataTypes.ReserveCache"}},"visibility":"internal"},{"constant":false,"id":19753,"mutability":"mutable","name":"totalDebt","nameLocation":"6764:9:59","nodeType":"VariableDeclaration","scope":19758,"src":"6756:17:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19752,"name":"uint256","nodeType":"ElementaryTypeName","src":"6756:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19755,"mutability":"mutable","name":"healthFactor","nameLocation":"6787:12:59","nodeType":"VariableDeclaration","scope":19758,"src":"6779:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19754,"name":"uint256","nodeType":"ElementaryTypeName","src":"6779:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19757,"mutability":"mutable","name":"priceOracleSentinel","nameLocation":"6813:19:59","nodeType":"VariableDeclaration","scope":19758,"src":"6805:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19756,"name":"address","nodeType":"ElementaryTypeName","src":"6805:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"ValidateLiquidationCallParams","nameLocation":"6685:29:59","nodeType":"StructDefinition","scope":19793,"src":"6678:159:59","visibility":"public"},{"canonicalName":"DataTypes.CalculateInterestRatesParams","id":19777,"members":[{"constant":false,"id":19760,"mutability":"mutable","name":"unbacked","nameLocation":"6891:8:59","nodeType":"VariableDeclaration","scope":19777,"src":"6883:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19759,"name":"uint256","nodeType":"ElementaryTypeName","src":"6883:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19762,"mutability":"mutable","name":"liquidityAdded","nameLocation":"6913:14:59","nodeType":"VariableDeclaration","scope":19777,"src":"6905:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19761,"name":"uint256","nodeType":"ElementaryTypeName","src":"6905:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19764,"mutability":"mutable","name":"liquidityTaken","nameLocation":"6941:14:59","nodeType":"VariableDeclaration","scope":19777,"src":"6933:22:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19763,"name":"uint256","nodeType":"ElementaryTypeName","src":"6933:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19766,"mutability":"mutable","name":"totalStableDebt","nameLocation":"6969:15:59","nodeType":"VariableDeclaration","scope":19777,"src":"6961:23:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19765,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19768,"mutability":"mutable","name":"totalVariableDebt","nameLocation":"6998:17:59","nodeType":"VariableDeclaration","scope":19777,"src":"6990:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19767,"name":"uint256","nodeType":"ElementaryTypeName","src":"6990:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19770,"mutability":"mutable","name":"averageStableBorrowRate","nameLocation":"7029:23:59","nodeType":"VariableDeclaration","scope":19777,"src":"7021:31:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19769,"name":"uint256","nodeType":"ElementaryTypeName","src":"7021:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19772,"mutability":"mutable","name":"reserveFactor","nameLocation":"7066:13:59","nodeType":"VariableDeclaration","scope":19777,"src":"7058:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":19771,"name":"uint256","nodeType":"ElementaryTypeName","src":"7058:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":19774,"mutability":"mutable","name":"reserve","nameLocation":"7093:7:59","nodeType":"VariableDeclaration","scope":19777,"src":"7085:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19773,"name":"address","nodeType":"ElementaryTypeName","src":"7085:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19776,"mutability":"mutable","name":"aToken","nameLocation":"7114:6:59","nodeType":"VariableDeclaration","scope":19777,"src":"7106:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19775,"name":"address","nodeType":"ElementaryTypeName","src":"7106:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"CalculateInterestRatesParams","nameLocation":"6848:28:59","nodeType":"StructDefinition","scope":19793,"src":"6841:284:59","visibility":"public"},{"canonicalName":"DataTypes.InitReserveParams","id":19792,"members":[{"constant":false,"id":19779,"mutability":"mutable","name":"asset","nameLocation":"7168:5:59","nodeType":"VariableDeclaration","scope":19792,"src":"7160:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19778,"name":"address","nodeType":"ElementaryTypeName","src":"7160:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19781,"mutability":"mutable","name":"aTokenAddress","nameLocation":"7187:13:59","nodeType":"VariableDeclaration","scope":19792,"src":"7179:21:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19780,"name":"address","nodeType":"ElementaryTypeName","src":"7179:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19783,"mutability":"mutable","name":"stableDebtAddress","nameLocation":"7214:17:59","nodeType":"VariableDeclaration","scope":19792,"src":"7206:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19782,"name":"address","nodeType":"ElementaryTypeName","src":"7206:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19785,"mutability":"mutable","name":"variableDebtAddress","nameLocation":"7245:19:59","nodeType":"VariableDeclaration","scope":19792,"src":"7237:27:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19784,"name":"address","nodeType":"ElementaryTypeName","src":"7237:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19787,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"7278:27:59","nodeType":"VariableDeclaration","scope":19792,"src":"7270:35:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19786,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":19789,"mutability":"mutable","name":"reservesCount","nameLocation":"7318:13:59","nodeType":"VariableDeclaration","scope":19792,"src":"7311:20:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19788,"name":"uint16","nodeType":"ElementaryTypeName","src":"7311:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":19791,"mutability":"mutable","name":"maxNumberReserves","nameLocation":"7344:17:59","nodeType":"VariableDeclaration","scope":19792,"src":"7337:24:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":19790,"name":"uint16","nodeType":"ElementaryTypeName","src":"7337:6:59","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"name":"InitReserveParams","nameLocation":"7136:17:59","nodeType":"StructDefinition","scope":19793,"src":"7129:237:59","visibility":"public"}],"scope":19794,"src":"62:7306:59","usedErrors":[],"usedEvents":[]}],"src":"37:7332:59"},"id":59},"contracts/dependencies/aave-v3/Errors.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/Errors.sol","exportedSymbols":{"Errors":[20067]},"id":20068,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":19795,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:60"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":19796,"nodeType":"StructuredDocumentation","src":"62:142:60","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":20067,"linearizedBaseContracts":[20067],"name":"Errors","nameLocation":"213:6:60","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"ac753236","id":19799,"mutability":"constant","name":"CALLER_NOT_POOL_ADMIN","nameLocation":"247:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"224:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19797,"name":"string","nodeType":"ElementaryTypeName","src":"224:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"31","id":19798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"271:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"},"visibility":"public"},{"constant":true,"functionSelector":"485c8ff6","id":19802,"mutability":"constant","name":"CALLER_NOT_EMERGENCY_ADMIN","nameLocation":"353:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"330:55:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19800,"name":"string","nodeType":"ElementaryTypeName","src":"330:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"32","id":19801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"382:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a5","typeString":"literal_string \"2\""},"value":"2"},"visibility":"public"},{"constant":true,"functionSelector":"26e7b312","id":19805,"mutability":"constant","name":"CALLER_NOT_POOL_OR_EMERGENCY_ADMIN","nameLocation":"470:34:60","nodeType":"VariableDeclaration","scope":20067,"src":"447:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19803,"name":"string","nodeType":"ElementaryTypeName","src":"447:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"33","id":19804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"507:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a80e1ef1d7842f27f2e6be0972bb708b9a135c38860dbe73c27c3486c34f4de","typeString":"literal_string \"3\""},"value":"3"},"visibility":"public"},{"constant":true,"functionSelector":"b5e79366","id":19808,"mutability":"constant","name":"CALLER_NOT_RISK_OR_POOL_ADMIN","nameLocation":"602:29:60","nodeType":"VariableDeclaration","scope":20067,"src":"579:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19806,"name":"string","nodeType":"ElementaryTypeName","src":"579:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"34","id":19807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"634:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_13600b294191fc92924bb3ce4b969c1e7e2bab8f4c93c3fc6d0a51733df3c060","typeString":"literal_string \"4\""},"value":"4"},"visibility":"public"},{"constant":true,"functionSelector":"2c8e3b4c","id":19811,"mutability":"constant","name":"CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN","nameLocation":"724:38:60","nodeType":"VariableDeclaration","scope":20067,"src":"701:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19809,"name":"string","nodeType":"ElementaryTypeName","src":"701:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"35","id":19810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"765:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ceebf77a833b30520287ddd9478ff51abbdffa30aa90a8d655dba0e8a79ce0c1","typeString":"literal_string \"5\""},"value":"5"},"visibility":"public"},{"constant":true,"functionSelector":"4f77647b","id":19814,"mutability":"constant","name":"CALLER_NOT_BRIDGE","nameLocation":"865:17:60","nodeType":"VariableDeclaration","scope":20067,"src":"842:46:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19812,"name":"string","nodeType":"ElementaryTypeName","src":"842:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"36","id":19813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"885:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e455bf8ea6e7463a1046a0b52804526e119b4bf5136279614e0b1e8e296a4e2d","typeString":"literal_string \"6\""},"value":"6"},"visibility":"public"},{"constant":true,"functionSelector":"e02f07ee","id":19817,"mutability":"constant","name":"ADDRESSES_PROVIDER_NOT_REGISTERED","nameLocation":"963:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"940:62:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19815,"name":"string","nodeType":"ElementaryTypeName","src":"940:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"37","id":19816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"999:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_52f1a9b320cab38e5da8a8f97989383aab0a49165fc91c737310e4f7e9821021","typeString":"literal_string \"7\""},"value":"7"},"visibility":"public"},{"constant":true,"functionSelector":"60c3de80","id":19820,"mutability":"constant","name":"INVALID_ADDRESSES_PROVIDER_ID","nameLocation":"1076:29:60","nodeType":"VariableDeclaration","scope":20067,"src":"1053:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19818,"name":"string","nodeType":"ElementaryTypeName","src":"1053:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"38","id":19819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1108:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4b1702d9298fee62dfeccc57d322a463ad55ca201256d01f62b45b2e1c21c10","typeString":"literal_string \"8\""},"value":"8"},"visibility":"public"},{"constant":true,"functionSelector":"11d7b006","id":19823,"mutability":"constant","name":"NOT_CONTRACT","nameLocation":"1186:12:60","nodeType":"VariableDeclaration","scope":20067,"src":"1163:41:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19821,"name":"string","nodeType":"ElementaryTypeName","src":"1163:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"39","id":19822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1201:3:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb","typeString":"literal_string \"9\""},"value":"9"},"visibility":"public"},{"constant":true,"functionSelector":"61c111d2","id":19826,"mutability":"constant","name":"CALLER_NOT_POOL_CONFIGURATOR","nameLocation":"1262:28:60","nodeType":"VariableDeclaration","scope":20067,"src":"1239:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19824,"name":"string","nodeType":"ElementaryTypeName","src":"1239:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3130","id":19825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1293:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a192fabce13988b84994d4296e6cdc418d55e2f1d7f942188d4040b94fc57ac","typeString":"literal_string \"10\""},"value":"10"},"visibility":"public"},{"constant":true,"functionSelector":"a2e976c6","id":19829,"mutability":"constant","name":"CALLER_NOT_ATOKEN","nameLocation":"1385:17:60","nodeType":"VariableDeclaration","scope":20067,"src":"1362:47:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19827,"name":"string","nodeType":"ElementaryTypeName","src":"1362:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3131","id":19828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1405:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7880aec93413f117ef14bd4e6d130875ab2c7d7d55a064fac3c2f7bd51516380","typeString":"literal_string \"11\""},"value":"11"},"visibility":"public"},{"constant":true,"functionSelector":"37930782","id":19832,"mutability":"constant","name":"INVALID_ADDRESSES_PROVIDER","nameLocation":"1485:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"1462:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19830,"name":"string","nodeType":"ElementaryTypeName","src":"1462:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3132","id":19831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1514:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7f8b6b088b6d74c2852fc86c796dca07b44eed6fb3daf5e6b59f7c364db14528","typeString":"literal_string \"12\""},"value":"12"},"visibility":"public"},{"constant":true,"functionSelector":"7fea6f36","id":19835,"mutability":"constant","name":"INVALID_FLASHLOAN_EXECUTOR_RETURN","nameLocation":"1604:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"1581:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19833,"name":"string","nodeType":"ElementaryTypeName","src":"1581:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3133","id":19834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1640:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_789bcdf275fa270780a52ae3b79bb1ce0fda7e0aaad87b57b74bb99ac290714a","typeString":"literal_string \"13\""},"value":"13"},"visibility":"public"},{"constant":true,"functionSelector":"12dcade8","id":19838,"mutability":"constant","name":"RESERVE_ALREADY_ADDED","nameLocation":"1732:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"1709:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19836,"name":"string","nodeType":"ElementaryTypeName","src":"1709:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3134","id":19837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1756:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c4c6aa067b6f8e6cb38e6ab843832a94d1712d661a04d73c517d6a1931a9e5d","typeString":"literal_string \"14\""},"value":"14"},"visibility":"public"},{"constant":true,"functionSelector":"76ae8fca","id":19841,"mutability":"constant","name":"NO_MORE_RESERVES_ALLOWED","nameLocation":"1839:24:60","nodeType":"VariableDeclaration","scope":20067,"src":"1816:54:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19839,"name":"string","nodeType":"ElementaryTypeName","src":"1816:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3135","id":19840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1866:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d3be50b2bb17407dd170f1d5da128d1def30c6b1598d6a629e79b4775265526","typeString":"literal_string \"15\""},"value":"15"},"visibility":"public"},{"constant":true,"functionSelector":"f479ea11","id":19844,"mutability":"constant","name":"EMODE_CATEGORY_RESERVED","nameLocation":"1949:23:60","nodeType":"VariableDeclaration","scope":20067,"src":"1926:53:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19842,"name":"string","nodeType":"ElementaryTypeName","src":"1926:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3136","id":19843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1975:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_277ab82e5a4641341820a4a2933a62c1de997e42e92548657ae21b3728d580fe","typeString":"literal_string \"16\""},"value":"16"},"visibility":"public"},{"constant":true,"functionSelector":"5d9c76c0","id":19847,"mutability":"constant","name":"INVALID_EMODE_CATEGORY_ASSIGNMENT","nameLocation":"2077:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"2054:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19845,"name":"string","nodeType":"ElementaryTypeName","src":"2054:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3137","id":19846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2113:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8fab5f003314da8d1873ea7720e8d9f47650136d916064d1edb8a11d682624","typeString":"literal_string \"17\""},"value":"17"},"visibility":"public"},{"constant":true,"functionSelector":"084dfa0d","id":19850,"mutability":"constant","name":"RESERVE_LIQUIDITY_NOT_ZERO","nameLocation":"2192:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"2169:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19848,"name":"string","nodeType":"ElementaryTypeName","src":"2169:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3138","id":19849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2221:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fef2229291b68be841adf029e58b87f39ba144b2d3b0af1760243d0a9bc6a1c","typeString":"literal_string \"18\""},"value":"18"},"visibility":"public"},{"constant":true,"functionSelector":"747fa556","id":19853,"mutability":"constant","name":"FLASHLOAN_PREMIUM_INVALID","nameLocation":"2300:25:60","nodeType":"VariableDeclaration","scope":20067,"src":"2277:55:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19851,"name":"string","nodeType":"ElementaryTypeName","src":"2277:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3139","id":19852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2328:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_939eb54753ed0cc7e2272bfb34cbe098308c93936ed54d79078f76ade0b2e789","typeString":"literal_string \"19\""},"value":"19"},"visibility":"public"},{"constant":true,"functionSelector":"335763de","id":19856,"mutability":"constant","name":"INVALID_RESERVE_PARAMS","nameLocation":"2390:22:60","nodeType":"VariableDeclaration","scope":20067,"src":"2367:52:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19854,"name":"string","nodeType":"ElementaryTypeName","src":"2367:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3230","id":19855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2415:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_731dc163f73d31d8c68f9917ce4ff967753939f70432973c04fd2c2a48148607","typeString":"literal_string \"20\""},"value":"20"},"visibility":"public"},{"constant":true,"functionSelector":"47cf1523","id":19859,"mutability":"constant","name":"INVALID_EMODE_CATEGORY_PARAMS","nameLocation":"2491:29:60","nodeType":"VariableDeclaration","scope":20067,"src":"2468:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19857,"name":"string","nodeType":"ElementaryTypeName","src":"2468:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3231","id":19858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2523:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_f4c2b5de886427473655d4c904c743576dc2d53249b7535d96c06cc97ae7216b","typeString":"literal_string \"21\""},"value":"21"},"visibility":"public"},{"constant":true,"functionSelector":"7aa0767e","id":19862,"mutability":"constant","name":"BRIDGE_PROTOCOL_FEE_INVALID","nameLocation":"2606:27:60","nodeType":"VariableDeclaration","scope":20067,"src":"2583:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19860,"name":"string","nodeType":"ElementaryTypeName","src":"2583:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3232","id":19861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2636:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d4d1a59767271eefdc7830a772b9732a11d503531d972ab8c981a6b1c0e666e5","typeString":"literal_string \"22\""},"value":"22"},"visibility":"public"},{"constant":true,"functionSelector":"471df685","id":19865,"mutability":"constant","name":"CALLER_MUST_BE_POOL","nameLocation":"2700:19:60","nodeType":"VariableDeclaration","scope":20067,"src":"2677:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19863,"name":"string","nodeType":"ElementaryTypeName","src":"2677:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3233","id":19864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2722:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_1572b593c53d839d80004aa4b8c51211864104f06ace9e22be9c4365b50655ea","typeString":"literal_string \"23\""},"value":"23"},"visibility":"public"},{"constant":true,"functionSelector":"abd351b1","id":19868,"mutability":"constant","name":"INVALID_MINT_AMOUNT","nameLocation":"2801:19:60","nodeType":"VariableDeclaration","scope":20067,"src":"2778:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19866,"name":"string","nodeType":"ElementaryTypeName","src":"2778:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3234","id":19867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2823:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_6585423cb6456b1d4957f6454d2f004f0c4f58d53a00082412d5c2ef4b1b31fd","typeString":"literal_string \"24\""},"value":"24"},"visibility":"public"},{"constant":true,"functionSelector":"51267450","id":19871,"mutability":"constant","name":"INVALID_BURN_AMOUNT","nameLocation":"2882:19:60","nodeType":"VariableDeclaration","scope":20067,"src":"2859:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19869,"name":"string","nodeType":"ElementaryTypeName","src":"2859:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3235","id":19870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2904:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_81e080ffc23e8b8d44dd829bc823229e92b893eb1d8f624419d3f5682eb97fc3","typeString":"literal_string \"25\""},"value":"25"},"visibility":"public"},{"constant":true,"functionSelector":"fae82791","id":19874,"mutability":"constant","name":"INVALID_AMOUNT","nameLocation":"2963:14:60","nodeType":"VariableDeclaration","scope":20067,"src":"2940:44:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19872,"name":"string","nodeType":"ElementaryTypeName","src":"2940:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3236","id":19873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2980:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cce9eb03c9f29c6481fca9f0f942b15bef0bbbc47fda0ddb44df157019835d9","typeString":"literal_string \"26\""},"value":"26"},"visibility":"public"},{"constant":true,"functionSelector":"52ba9dbe","id":19877,"mutability":"constant","name":"RESERVE_INACTIVE","nameLocation":"3046:16:60","nodeType":"VariableDeclaration","scope":20067,"src":"3023:46:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19875,"name":"string","nodeType":"ElementaryTypeName","src":"3023:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3237","id":19876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3065:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_58a280f74f57bf051c40f060139dc747e015be52f68c57e2c4ab2e4bd4146f43","typeString":"literal_string \"27\""},"value":"27"},"visibility":"public"},{"constant":true,"functionSelector":"6cd3cfbc","id":19880,"mutability":"constant","name":"RESERVE_FROZEN","nameLocation":"3135:14:60","nodeType":"VariableDeclaration","scope":20067,"src":"3112:44:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19878,"name":"string","nodeType":"ElementaryTypeName","src":"3112:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3238","id":19879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3152:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_9560168699514dcd528543d614e81b4f36adf182dc624d2f1eb91df8addd987e","typeString":"literal_string \"28\""},"value":"28"},"visibility":"public"},{"constant":true,"functionSelector":"b68774e9","id":19883,"mutability":"constant","name":"RESERVE_PAUSED","nameLocation":"3245:14:60","nodeType":"VariableDeclaration","scope":20067,"src":"3222:44:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19881,"name":"string","nodeType":"ElementaryTypeName","src":"3222:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3239","id":19882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3262:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7749cc8014201da2069c21d93ba99c584b6f62d393fde534ed47eac227e31561","typeString":"literal_string \"29\""},"value":"29"},"visibility":"public"},{"constant":true,"functionSelector":"4ef999ff","id":19886,"mutability":"constant","name":"BORROWING_NOT_ENABLED","nameLocation":"3355:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"3332:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19884,"name":"string","nodeType":"ElementaryTypeName","src":"3332:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3330","id":19885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3379:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbf5a24880b10a5f9f601c4058e4771ddea17e7d765ceb3c903814e1c0d621e0","typeString":"literal_string \"30\""},"value":"30"},"visibility":"public"},{"constant":true,"functionSelector":"4d86f393","id":19889,"mutability":"constant","name":"STABLE_BORROWING_NOT_ENABLED","nameLocation":"3440:28:60","nodeType":"VariableDeclaration","scope":20067,"src":"3417:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19887,"name":"string","nodeType":"ElementaryTypeName","src":"3417:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3331","id":19888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3471:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_933c48a61c3bad621ebc5d57117f9e773fefae4468bceaf9d3198a3bf7c1d678","typeString":"literal_string \"31\""},"value":"31"},"visibility":"public"},{"constant":true,"functionSelector":"b7f5e224","id":19892,"mutability":"constant","name":"NOT_ENOUGH_AVAILABLE_USER_BALANCE","nameLocation":"3539:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"3516:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19890,"name":"string","nodeType":"ElementaryTypeName","src":"3516:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3332","id":19891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3575:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b953cbb84328003779eb1ef176ef07f7dd0ae3d4a8e408de53d15a36466c86e","typeString":"literal_string \"32\""},"value":"32"},"visibility":"public"},{"constant":true,"functionSelector":"89c5d45f","id":19895,"mutability":"constant","name":"INVALID_INTEREST_RATE_MODE_SELECTED","nameLocation":"3664:35:60","nodeType":"VariableDeclaration","scope":20067,"src":"3641:65:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19893,"name":"string","nodeType":"ElementaryTypeName","src":"3641:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3333","id":19894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3702:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ed93c67e1a9b7f09d3b44ee593360f0073603a8e45415e2c3c69afc994a1103d","typeString":"literal_string \"33\""},"value":"33"},"visibility":"public"},{"constant":true,"functionSelector":"4e01e3c1","id":19898,"mutability":"constant","name":"COLLATERAL_BALANCE_IS_ZERO","nameLocation":"3774:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"3751:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19896,"name":"string","nodeType":"ElementaryTypeName","src":"3751:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3334","id":19897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3803:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_77c32b454bb61eb9df9e3848d0ded3e59753acda90ae58befe564733aec82e4c","typeString":"literal_string \"34\""},"value":"34"},"visibility":"public"},{"constant":true,"functionSelector":"366eb54d","id":19901,"mutability":"constant","name":"HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD","nameLocation":"3867:46:60","nodeType":"VariableDeclaration","scope":20067,"src":"3844:76:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19899,"name":"string","nodeType":"ElementaryTypeName","src":"3844:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3335","id":19900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3916:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ca7b081b8c6c57b0469c340dba43ec8d33c0b898c69e55c4f74ff7ed9ac71ea","typeString":"literal_string \"35\""},"value":"35"},"visibility":"public"},{"constant":true,"functionSelector":"e3fa20f5","id":19904,"mutability":"constant","name":"COLLATERAL_CANNOT_COVER_NEW_BORROW","nameLocation":"4007:34:60","nodeType":"VariableDeclaration","scope":20067,"src":"3984:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19902,"name":"string","nodeType":"ElementaryTypeName","src":"3984:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3336","id":19903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4044:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_3b4066bd7b7960752225af105d3beafb5c47a26c5aae7e6798a437b7c0bb33e6","typeString":"literal_string \"36\""},"value":"36"},"visibility":"public"},{"constant":true,"functionSelector":"8a344000","id":19907,"mutability":"constant","name":"COLLATERAL_SAME_AS_BORROWING_CURRENCY","nameLocation":"4133:37:60","nodeType":"VariableDeclaration","scope":20067,"src":"4110:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19905,"name":"string","nodeType":"ElementaryTypeName","src":"4110:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3337","id":19906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4173:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5bc0457d8881b800fd1bc0d6df907345b3bf287e43a5790ded3d08dbacf9c03a","typeString":"literal_string \"37\""},"value":"37"},"visibility":"public"},{"constant":true,"functionSelector":"f07f6785","id":19910,"mutability":"constant","name":"AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE","nameLocation":"4273:39:60","nodeType":"VariableDeclaration","scope":20067,"src":"4250:69:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19908,"name":"string","nodeType":"ElementaryTypeName","src":"4250:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3338","id":19909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4315:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d67d834462ca31eaef1f30157e31659f60355143b7441e6fc7d9eae1fa79f3f8","typeString":"literal_string \"38\""},"value":"38"},"visibility":"public"},{"constant":true,"functionSelector":"dc191bd9","id":19913,"mutability":"constant","name":"NO_DEBT_OF_SELECTED_TYPE","nameLocation":"4426:24:60","nodeType":"VariableDeclaration","scope":20067,"src":"4403:54:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19911,"name":"string","nodeType":"ElementaryTypeName","src":"4403:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3339","id":19912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4453:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_318a541463286d7584b45438601196fbc1a55628e303a0613eb6d46e60640c95","typeString":"literal_string \"39\""},"value":"39"},"visibility":"public"},{"constant":true,"functionSelector":"712f536a","id":19916,"mutability":"constant","name":"NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF","nameLocation":"4569:37:60","nodeType":"VariableDeclaration","scope":20067,"src":"4546:67:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19914,"name":"string","nodeType":"ElementaryTypeName","src":"4546:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3430","id":19915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4609:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_880de8116b3dfac28e9ff528a9fef1d1e0a51449c1addce011ffec1f302992b6","typeString":"literal_string \"40\""},"value":"40"},"visibility":"public"},{"constant":true,"functionSelector":"74459b14","id":19919,"mutability":"constant","name":"NO_OUTSTANDING_STABLE_DEBT","nameLocation":"4712:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"4689:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19917,"name":"string","nodeType":"ElementaryTypeName","src":"4689:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3431","id":19918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4741:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_6bcaf047ba4c8ac400fca43393035242dd1aabda2d6068a0c51242b97224de8d","typeString":"literal_string \"41\""},"value":"41"},"visibility":"public"},{"constant":true,"functionSelector":"b4a45730","id":19922,"mutability":"constant","name":"NO_OUTSTANDING_VARIABLE_DEBT","nameLocation":"4841:28:60","nodeType":"VariableDeclaration","scope":20067,"src":"4818:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19920,"name":"string","nodeType":"ElementaryTypeName","src":"4818:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3432","id":19921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4872:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ccb1f717aa77602faf03a594761a36956b1c4cf44c6b336d1db57da799b331b8","typeString":"literal_string \"42\""},"value":"42"},"visibility":"public"},{"constant":true,"functionSelector":"a2797c80","id":19925,"mutability":"constant","name":"UNDERLYING_BALANCE_ZERO","nameLocation":"4974:23:60","nodeType":"VariableDeclaration","scope":20067,"src":"4951:53:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19923,"name":"string","nodeType":"ElementaryTypeName","src":"4951:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3433","id":19924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5000:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_4dfb3440902001bce9b7ebf7be7d95fe9e2056bd5ce309ceb83b32f4e00e21ed","typeString":"literal_string \"43\""},"value":"43"},"visibility":"public"},{"constant":true,"functionSelector":"2926c971","id":19928,"mutability":"constant","name":"INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET","nameLocation":"5086:42:60","nodeType":"VariableDeclaration","scope":20067,"src":"5063:72:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19926,"name":"string","nodeType":"ElementaryTypeName","src":"5063:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3434","id":19927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5131:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e9b7c94e032d8b3b8b30bd825717a5ac74958b53e7c37a892a4fd7dc56e4975","typeString":"literal_string \"44\""},"value":"44"},"visibility":"public"},{"constant":true,"functionSelector":"952633c5","id":19931,"mutability":"constant","name":"HEALTH_FACTOR_NOT_BELOW_THRESHOLD","nameLocation":"5215:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"5192:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19929,"name":"string","nodeType":"ElementaryTypeName","src":"5192:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3435","id":19930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5251:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc1431a2586c1e11fb75c87e5ee58e4204126a9fdde07075c91770f50276cbb0","typeString":"literal_string \"45\""},"value":"45"},"visibility":"public"},{"constant":true,"functionSelector":"895f7dc8","id":19934,"mutability":"constant","name":"COLLATERAL_CANNOT_BE_LIQUIDATED","nameLocation":"5328:31:60","nodeType":"VariableDeclaration","scope":20067,"src":"5305:61:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19932,"name":"string","nodeType":"ElementaryTypeName","src":"5305:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3436","id":19933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5362:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_c47ece0ffae697632ce145a7086cbcf260f7fa60876ff2606761ea2b7581ee76","typeString":"literal_string \"46\""},"value":"46"},"visibility":"public"},{"constant":true,"functionSelector":"22a73446","id":19937,"mutability":"constant","name":"SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER","nameLocation":"5441:39:60","nodeType":"VariableDeclaration","scope":20067,"src":"5418:69:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19935,"name":"string","nodeType":"ElementaryTypeName","src":"5418:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3437","id":19936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5483:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb09910a03c892999c305d4a86a46fa82693119d981eef22c8d043b31f9e8a31","typeString":"literal_string \"47\""},"value":"47"},"visibility":"public"},{"constant":true,"functionSelector":"73dea5e3","id":19940,"mutability":"constant","name":"INCONSISTENT_FLASHLOAN_PARAMS","nameLocation":"5562:29:60","nodeType":"VariableDeclaration","scope":20067,"src":"5539:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19938,"name":"string","nodeType":"ElementaryTypeName","src":"5539:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3439","id":19939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5594:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_59c0d2b7af0a8e6d3d8e710a078764bd67b7223777026c424cdb4f599824bb79","typeString":"literal_string \"49\""},"value":"49"},"visibility":"public"},{"constant":true,"functionSelector":"2eed17e8","id":19943,"mutability":"constant","name":"BORROW_CAP_EXCEEDED","nameLocation":"5664:19:60","nodeType":"VariableDeclaration","scope":20067,"src":"5641:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19941,"name":"string","nodeType":"ElementaryTypeName","src":"5641:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3530","id":19942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5686:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_215d56ac8bbcf4ec574772ebea743ba30ac9d1c5e1b1ff899e5de1045f5df803","typeString":"literal_string \"50\""},"value":"50"},"visibility":"public"},{"constant":true,"functionSelector":"b0510054","id":19946,"mutability":"constant","name":"SUPPLY_CAP_EXCEEDED","nameLocation":"5745:19:60","nodeType":"VariableDeclaration","scope":20067,"src":"5722:49:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19944,"name":"string","nodeType":"ElementaryTypeName","src":"5722:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3531","id":19945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5767:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_f928ede1c39c5595ff22fe845412ee05a93eeaa584f8ef0c46b5eeb14cb99ec8","typeString":"literal_string \"51\""},"value":"51"},"visibility":"public"},{"constant":true,"functionSelector":"6b3f7cc7","id":19949,"mutability":"constant","name":"UNBACKED_MINT_CAP_EXCEEDED","nameLocation":"5826:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"5803:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19947,"name":"string","nodeType":"ElementaryTypeName","src":"5803:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3532","id":19948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5855:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd41b8bf8f20f7ad95d96d948a315af225b219053fc98a80aee13063b692b681","typeString":"literal_string \"52\""},"value":"52"},"visibility":"public"},{"constant":true,"functionSelector":"65a83bab","id":19952,"mutability":"constant","name":"DEBT_CEILING_EXCEEDED","nameLocation":"5921:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"5898:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19950,"name":"string","nodeType":"ElementaryTypeName","src":"5898:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3533","id":19951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5945:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_bbd48b257be1b8216d144ef9be5734f8d11697959c9e0f7768bec89db74a63a3","typeString":"literal_string \"53\""},"value":"53"},"visibility":"public"},{"constant":true,"functionSelector":"94f9fd8a","id":19955,"mutability":"constant","name":"UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO","nameLocation":"6006:36:60","nodeType":"VariableDeclaration","scope":20067,"src":"5983:66:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19953,"name":"string","nodeType":"ElementaryTypeName","src":"5983:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3534","id":19954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6045:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_006b3e710f3089a74ecb6b0f5948e5ff07a3db6ba4da475d2be17624ba96b95b","typeString":"literal_string \"54\""},"value":"54"},"visibility":"public"},{"constant":true,"functionSelector":"65e7ef4c","id":19958,"mutability":"constant","name":"STABLE_DEBT_NOT_ZERO","nameLocation":"6160:20:60","nodeType":"VariableDeclaration","scope":20067,"src":"6137:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19956,"name":"string","nodeType":"ElementaryTypeName","src":"6137:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3535","id":19957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6183:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_6590fa52fa76f967656340b874bc9ca09733c2fddea9886210ebcbbceee04b35","typeString":"literal_string \"55\""},"value":"55"},"visibility":"public"},{"constant":true,"functionSelector":"f10727db","id":19961,"mutability":"constant","name":"VARIABLE_DEBT_SUPPLY_NOT_ZERO","nameLocation":"6250:29:60","nodeType":"VariableDeclaration","scope":20067,"src":"6227:59:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19959,"name":"string","nodeType":"ElementaryTypeName","src":"6227:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3536","id":19960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6282:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_32da71dbd53bc029835bc5ecdd3e688035cc92bb61b1811d1685e67ba974e19f","typeString":"literal_string \"56\""},"value":"56"},"visibility":"public"},{"constant":true,"functionSelector":"b87041c2","id":19964,"mutability":"constant","name":"LTV_VALIDATION_FAILED","nameLocation":"6351:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"6328:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19962,"name":"string","nodeType":"ElementaryTypeName","src":"6328:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3537","id":19963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6375:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e921da22f871c25c63f06c1365385cbb26397f64f79055cdbab32187a9377d16","typeString":"literal_string \"57\""},"value":"57"},"visibility":"public"},{"constant":true,"functionSelector":"8f7722b2","id":19967,"mutability":"constant","name":"INCONSISTENT_EMODE_CATEGORY","nameLocation":"6433:27:60","nodeType":"VariableDeclaration","scope":20067,"src":"6410:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19965,"name":"string","nodeType":"ElementaryTypeName","src":"6410:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3538","id":19966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6463:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_59d26ca75eb04b47ab1bca5d789d02e4d0cf9ff8cb49c9041caeeeab4eccafbf","typeString":"literal_string \"58\""},"value":"58"},"visibility":"public"},{"constant":true,"functionSelector":"c8638082","id":19970,"mutability":"constant","name":"PRICE_ORACLE_SENTINEL_CHECK_FAILED","nameLocation":"6527:34:60","nodeType":"VariableDeclaration","scope":20067,"src":"6504:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19968,"name":"string","nodeType":"ElementaryTypeName","src":"6504:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3539","id":19969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6564:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_dec29173c70f4e70086d64e09cb72b415f3d6a1843817cff62483903f0e12f62","typeString":"literal_string \"59\""},"value":"59"},"visibility":"public"},{"constant":true,"functionSelector":"8596aad5","id":19973,"mutability":"constant","name":"ASSET_NOT_BORROWABLE_IN_ISOLATION","nameLocation":"6640:33:60","nodeType":"VariableDeclaration","scope":20067,"src":"6617:63:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19971,"name":"string","nodeType":"ElementaryTypeName","src":"6617:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3630","id":19972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6676:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7446b42d7fe1689ec32fc1ca65129d9f21f1979742315d34500a6886f6986bea","typeString":"literal_string \"60\""},"value":"60"},"visibility":"public"},{"constant":true,"functionSelector":"d9adda85","id":19976,"mutability":"constant","name":"RESERVE_ALREADY_INITIALIZED","nameLocation":"6754:27:60","nodeType":"VariableDeclaration","scope":20067,"src":"6731:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19974,"name":"string","nodeType":"ElementaryTypeName","src":"6731:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3631","id":19975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6784:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ae62207e7adee0b793bf869601474e77943fa4d9e3e0420f34d788e59bc19bd","typeString":"literal_string \"61\""},"value":"61"},"visibility":"public"},{"constant":true,"functionSelector":"480702ae","id":19979,"mutability":"constant","name":"USER_IN_ISOLATION_MODE_OR_LTV_ZERO","nameLocation":"6857:34:60","nodeType":"VariableDeclaration","scope":20067,"src":"6834:64:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19977,"name":"string","nodeType":"ElementaryTypeName","src":"6834:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3632","id":19978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6894:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_d9670a00d025e59e1bd58d53874bea4ab34fea782716e2c168e89a3c8452d3bb","typeString":"literal_string \"62\""},"value":"62"},"visibility":"public"},{"constant":true,"functionSelector":"99ce53f3","id":19982,"mutability":"constant","name":"INVALID_LTV","nameLocation":"6971:11:60","nodeType":"VariableDeclaration","scope":20067,"src":"6948:41:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19980,"name":"string","nodeType":"ElementaryTypeName","src":"6948:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3633","id":19981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6985:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_4569971f3d79dc8da7f8a6820be6cb8dc4a52bb0df6599b2aae7182111b63cd5","typeString":"literal_string \"63\""},"value":"63"},"visibility":"public"},{"constant":true,"functionSelector":"dd1dd95f","id":19985,"mutability":"constant","name":"INVALID_LIQ_THRESHOLD","nameLocation":"7059:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"7036:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19983,"name":"string","nodeType":"ElementaryTypeName","src":"7036:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3634","id":19984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7083:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_646d998f946f968f0675fd4e3cb527e1222094ea0d9cc1fd615146a8fe29802e","typeString":"literal_string \"64\""},"value":"64"},"visibility":"public"},{"constant":true,"functionSelector":"9527e9d9","id":19988,"mutability":"constant","name":"INVALID_LIQ_BONUS","nameLocation":"7173:17:60","nodeType":"VariableDeclaration","scope":20067,"src":"7150:47:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19986,"name":"string","nodeType":"ElementaryTypeName","src":"7150:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3635","id":19987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7193:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_606503ebd6bdca7290248af82fd5a09ca0489398da9f242244210336ae6ece9f","typeString":"literal_string \"65\""},"value":"65"},"visibility":"public"},{"constant":true,"functionSelector":"fa163a83","id":19991,"mutability":"constant","name":"INVALID_DECIMALS","nameLocation":"7279:16:60","nodeType":"VariableDeclaration","scope":20067,"src":"7256:46:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19989,"name":"string","nodeType":"ElementaryTypeName","src":"7256:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3636","id":19990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7298:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_35bb2e240092263378f77ea1e9c278099a33b604c4c4e26d13ea227e8bb74470","typeString":"literal_string \"66\""},"value":"66"},"visibility":"public"},{"constant":true,"functionSelector":"a4868dca","id":19994,"mutability":"constant","name":"INVALID_RESERVE_FACTOR","nameLocation":"7400:22:60","nodeType":"VariableDeclaration","scope":20067,"src":"7377:52:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19992,"name":"string","nodeType":"ElementaryTypeName","src":"7377:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3637","id":19993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7425:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_eafa31dc210956fc0884ec5660eba9405197797219cbbda41b6aaf7118c651d8","typeString":"literal_string \"67\""},"value":"67"},"visibility":"public"},{"constant":true,"functionSelector":"d6f9fcde","id":19997,"mutability":"constant","name":"INVALID_BORROW_CAP","nameLocation":"7510:18:60","nodeType":"VariableDeclaration","scope":20067,"src":"7487:48:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19995,"name":"string","nodeType":"ElementaryTypeName","src":"7487:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3638","id":19996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7531:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc143a676b82d5e07b2c9d57717b403ab3c58caa273a42cdb95b15980141a86c","typeString":"literal_string \"68\""},"value":"68"},"visibility":"public"},{"constant":true,"functionSelector":"26bbd053","id":20000,"mutability":"constant","name":"INVALID_SUPPLY_CAP","nameLocation":"7602:18:60","nodeType":"VariableDeclaration","scope":20067,"src":"7579:48:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":19998,"name":"string","nodeType":"ElementaryTypeName","src":"7579:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3639","id":19999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7623:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_db37925934a3d3177db64e11f5e0156ceb8a756fee58ded16e549afa607ddb1d","typeString":"literal_string \"69\""},"value":"69"},"visibility":"public"},{"constant":true,"functionSelector":"8eda46bd","id":20003,"mutability":"constant","name":"INVALID_LIQUIDATION_PROTOCOL_FEE","nameLocation":"7694:32:60","nodeType":"VariableDeclaration","scope":20067,"src":"7671:62:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20001,"name":"string","nodeType":"ElementaryTypeName","src":"7671:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3730","id":20002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7729:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_cdbc23227c72e0a3f4683bdbccfcbed38047ca1a70d48b78c210dc5393029019","typeString":"literal_string \"70\""},"value":"70"},"visibility":"public"},{"constant":true,"functionSelector":"a8c97853","id":20006,"mutability":"constant","name":"INVALID_EMODE_CATEGORY","nameLocation":"7814:22:60","nodeType":"VariableDeclaration","scope":20067,"src":"7791:52:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20004,"name":"string","nodeType":"ElementaryTypeName","src":"7791:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3731","id":20005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7839:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2cc0d3dcb20652cd8f106aee76b6a7391771a130885634c0eb2bbe3cde796691","typeString":"literal_string \"71\""},"value":"71"},"visibility":"public"},{"constant":true,"functionSelector":"47ba93d8","id":20009,"mutability":"constant","name":"INVALID_UNBACKED_MINT_CAP","nameLocation":"7914:25:60","nodeType":"VariableDeclaration","scope":20067,"src":"7891:55:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20007,"name":"string","nodeType":"ElementaryTypeName","src":"7891:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3732","id":20008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7942:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_8fd0324b6a5df169e0aa0c7938ef0034d0e971a998f91b36eba211882d3617b1","typeString":"literal_string \"72\""},"value":"72"},"visibility":"public"},{"constant":true,"functionSelector":"dcc56db6","id":20012,"mutability":"constant","name":"INVALID_DEBT_CEILING","nameLocation":"8020:20:60","nodeType":"VariableDeclaration","scope":20067,"src":"7997:50:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20010,"name":"string","nodeType":"ElementaryTypeName","src":"7997:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3733","id":20011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8043:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_b2219b801710730437d0358146c829b62297a059eceaa0b40b27aea2daecf595","typeString":"literal_string \"73\""},"value":"73"},"visibility":"public"},{"constant":true,"functionSelector":"d1cd8b1d","id":20015,"mutability":"constant","name":"INVALID_RESERVE_INDEX","nameLocation":"8115:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"8092:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20013,"name":"string","nodeType":"ElementaryTypeName","src":"8092:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3734","id":20014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8139:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_57014f1e5f1d53e43fa40624186159531d6372d1ab8f40ec7882845ca66de31d","typeString":"literal_string \"74\""},"value":"74"},"visibility":"public"},{"constant":true,"functionSelector":"fd1828ff","id":20018,"mutability":"constant","name":"ACL_ADMIN_CANNOT_BE_ZERO","nameLocation":"8197:24:60","nodeType":"VariableDeclaration","scope":20067,"src":"8174:54:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20016,"name":"string","nodeType":"ElementaryTypeName","src":"8174:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3735","id":20017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8224:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_6dbb33232cde86c8a04f90a8bed9fc1c5ef520188a14538d96eb100d69bc2a94","typeString":"literal_string \"75\""},"value":"75"},"visibility":"public"},{"constant":true,"functionSelector":"bad8308c","id":20021,"mutability":"constant","name":"INCONSISTENT_PARAMS_LENGTH","nameLocation":"8304:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"8281:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20019,"name":"string","nodeType":"ElementaryTypeName","src":"8281:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3736","id":20020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8333:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_f1ae7da53f98170be52cc9330214a82f7ba06ee306297b4e1fb86fb21c611aa6","typeString":"literal_string \"76\""},"value":"76"},"visibility":"public"},{"constant":true,"functionSelector":"d14bb17a","id":20024,"mutability":"constant","name":"ZERO_ADDRESS_NOT_VALID","nameLocation":"8422:22:60","nodeType":"VariableDeclaration","scope":20067,"src":"8399:52:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20022,"name":"string","nodeType":"ElementaryTypeName","src":"8399:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3737","id":20023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8447:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_7fe86492ed9171487feeb17b76d71244c5fb104d897816bb03a924e5871f3fa3","typeString":"literal_string \"77\""},"value":"77"},"visibility":"public"},{"constant":true,"functionSelector":"c08a1146","id":20027,"mutability":"constant","name":"INVALID_EXPIRATION","nameLocation":"8506:18:60","nodeType":"VariableDeclaration","scope":20067,"src":"8483:48:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20025,"name":"string","nodeType":"ElementaryTypeName","src":"8483:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3738","id":20026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8527:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_63867b8d5e748cf93e24f7b381d92337d037805bfc271d6d67e0e86772662677","typeString":"literal_string \"78\""},"value":"78"},"visibility":"public"},{"constant":true,"functionSelector":"a3402a38","id":20030,"mutability":"constant","name":"INVALID_SIGNATURE","nameLocation":"8582:17:60","nodeType":"VariableDeclaration","scope":20067,"src":"8559:47:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20028,"name":"string","nodeType":"ElementaryTypeName","src":"8559:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3739","id":20029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8602:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_2bf418e3ea3cce1b306c1bbf566df40bf3703cc73b456ccd399088d784bc76ee","typeString":"literal_string \"79\""},"value":"79"},"visibility":"public"},{"constant":true,"functionSelector":"8b8b98d7","id":20033,"mutability":"constant","name":"OPERATION_NOT_SUPPORTED","nameLocation":"8656:23:60","nodeType":"VariableDeclaration","scope":20067,"src":"8633:53:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20031,"name":"string","nodeType":"ElementaryTypeName","src":"8633:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3830","id":20032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8682:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_742ccb3c5ad7b0e2030ad7fa03711e32b9f4236452343c6e16a6cf67d464d149","typeString":"literal_string \"80\""},"value":"80"},"visibility":"public"},{"constant":true,"functionSelector":"e4dd8b74","id":20036,"mutability":"constant","name":"DEBT_CEILING_NOT_ZERO","nameLocation":"8742:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"8719:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20034,"name":"string","nodeType":"ElementaryTypeName","src":"8719:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3831","id":20035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8766:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_e2ecacab2e0418b841e7d0b206f5c40e0e0489353c5747dd1cc77d7f5a66829f","typeString":"literal_string \"81\""},"value":"81"},"visibility":"public"},{"constant":true,"functionSelector":"cd23367c","id":20039,"mutability":"constant","name":"ASSET_NOT_LISTED","nameLocation":"8827:16:60","nodeType":"VariableDeclaration","scope":20067,"src":"8804:46:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20037,"name":"string","nodeType":"ElementaryTypeName","src":"8804:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3832","id":20038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8846:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5392f7a671cdf89487ccf8e3646ea8f7570009490584962db6fa064c6e4ad499","typeString":"literal_string \"82\""},"value":"82"},"visibility":"public"},{"constant":true,"functionSelector":"4e3aed37","id":20042,"mutability":"constant","name":"INVALID_OPTIMAL_USAGE_RATIO","nameLocation":"8902:27:60","nodeType":"VariableDeclaration","scope":20067,"src":"8879:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20040,"name":"string","nodeType":"ElementaryTypeName","src":"8879:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3833","id":20041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8932:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_043ab7193d962ca510e48770a5a13714f4684febe0e5affcfd1eb73cfed1f218","typeString":"literal_string \"83\""},"value":"83"},"visibility":"public"},{"constant":true,"functionSelector":"c899301a","id":20045,"mutability":"constant","name":"INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO","nameLocation":"8996:42:60","nodeType":"VariableDeclaration","scope":20067,"src":"8973:72:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20043,"name":"string","nodeType":"ElementaryTypeName","src":"8973:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3834","id":20044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9041:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_ab20a672b3c5d5f71a8da6c43d4bf580ed35b623d6b0366b1de9df7e12238080","typeString":"literal_string \"84\""},"value":"84"},"visibility":"public"},{"constant":true,"functionSelector":"ab883ca0","id":20048,"mutability":"constant","name":"UNDERLYING_CANNOT_BE_RESCUED","nameLocation":"9120:28:60","nodeType":"VariableDeclaration","scope":20067,"src":"9097:58:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20046,"name":"string","nodeType":"ElementaryTypeName","src":"9097:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3835","id":20047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9151:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_17157e479612de6088d957c64aca858964825e74089b3c7dacc26409e6d53000","typeString":"literal_string \"85\""},"value":"85"},"visibility":"public"},{"constant":true,"functionSelector":"14dcfbbc","id":20051,"mutability":"constant","name":"ADDRESSES_PROVIDER_ALREADY_ADDED","nameLocation":"9226:32:60","nodeType":"VariableDeclaration","scope":20067,"src":"9203:62:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20049,"name":"string","nodeType":"ElementaryTypeName","src":"9203:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3836","id":20050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9261:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc193713febc75d3d9bd2f9ce113f403ff19633f15c8cdbcf79756ae23e77f9a","typeString":"literal_string \"86\""},"value":"86"},"visibility":"public"},{"constant":true,"functionSelector":"1abbb001","id":20054,"mutability":"constant","name":"POOL_ADDRESSES_DO_NOT_MATCH","nameLocation":"9344:27:60","nodeType":"VariableDeclaration","scope":20067,"src":"9321:57:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20052,"name":"string","nodeType":"ElementaryTypeName","src":"9321:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3837","id":20053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9374:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_845e9c18ca148a712f01bf14c91c3e2fe352eabe86c44817e3f33b63f585a343","typeString":"literal_string \"87\""},"value":"87"},"visibility":"public"},{"constant":true,"functionSelector":"198d6a6b","id":20057,"mutability":"constant","name":"STABLE_BORROWING_ENABLED","nameLocation":"9516:24:60","nodeType":"VariableDeclaration","scope":20067,"src":"9493:54:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20055,"name":"string","nodeType":"ElementaryTypeName","src":"9493:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3838","id":20056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9543:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3bcf8af6929b66d6da7ee355c48fd1cf926fd090bc75a4dcbf7bd8e365645e3","typeString":"literal_string \"88\""},"value":"88"},"visibility":"public"},{"constant":true,"functionSelector":"de24948c","id":20060,"mutability":"constant","name":"SILOED_BORROWING_VIOLATION","nameLocation":"9607:26:60","nodeType":"VariableDeclaration","scope":20067,"src":"9584:56:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20058,"name":"string","nodeType":"ElementaryTypeName","src":"9584:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3839","id":20059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9636:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_5ad0f966e4dd8863f27c0e6ee7d684c0c8f4319efed210fe15662a0d29bcd615","typeString":"literal_string \"89\""},"value":"89"},"visibility":"public"},{"constant":true,"functionSelector":"e981483a","id":20063,"mutability":"constant","name":"RESERVE_DEBT_NOT_ZERO","nameLocation":"9736:21:60","nodeType":"VariableDeclaration","scope":20067,"src":"9713:51:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20061,"name":"string","nodeType":"ElementaryTypeName","src":"9713:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3930","id":20062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9760:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_04e57633024368235fc5219bfb9802814291d3a7b9a68d0aeb7bd3d297ac474e","typeString":"literal_string \"90\""},"value":"90"},"visibility":"public"},{"constant":true,"functionSelector":"8aa3ca4c","id":20066,"mutability":"constant","name":"FLASHLOAN_DISABLED","nameLocation":"9838:18:60","nodeType":"VariableDeclaration","scope":20067,"src":"9815:48:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20064,"name":"string","nodeType":"ElementaryTypeName","src":"9815:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"3931","id":20065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9859:4:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_4393e7114eb674248a1480712950c28cb06e118e040859a2eafa3ca8a6dfbd69","typeString":"literal_string \"91\""},"value":"91"},"visibility":"public"}],"scope":20068,"src":"205:9704:60","usedErrors":[],"usedEvents":[]}],"src":"37:9873:60"},"id":60},"contracts/dependencies/aave-v3/IPool.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/IPool.sol","exportedSymbols":{"DataTypes":[19793],"IPool":[20704],"IPoolAddressesProvider":[20913]},"id":20705,"license":"AGPL-3.0","nodeType":"SourceUnit","nodes":[{"id":20069,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:61"},{"absolutePath":"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol","file":"./IPoolAddressesProvider.sol","id":20071,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20705,"sourceUnit":20914,"src":"62:68:61","symbolAliases":[{"foreign":{"id":20070,"name":"IPoolAddressesProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20913,"src":"70:22:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./DataTypes.sol","id":20073,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":20705,"sourceUnit":19794,"src":"131:42:61","symbolAliases":[{"foreign":{"id":20072,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"139:9:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IPool","contractDependencies":[],"contractKind":"interface","documentation":{"id":20074,"nodeType":"StructuredDocumentation","src":"175:97:61","text":" @title IPool\n @author Aave\n @notice Defines the basic interface for an Aave Pool.*"},"fullyImplemented":false,"id":20704,"linearizedBaseContracts":[20704],"name":"IPool","nameLocation":"283:5:61","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":20075,"nodeType":"StructuredDocumentation","src":"293:350:61","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":20087,"name":"MintUnbacked","nameLocation":"652:12:61","nodeType":"EventDefinition","parameters":{"id":20086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20077,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"686:7:61","nodeType":"VariableDeclaration","scope":20087,"src":"670:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20076,"name":"address","nodeType":"ElementaryTypeName","src":"670:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20079,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"707:4:61","nodeType":"VariableDeclaration","scope":20087,"src":"699:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20078,"name":"address","nodeType":"ElementaryTypeName","src":"699:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20081,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"733:10:61","nodeType":"VariableDeclaration","scope":20087,"src":"717:26:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20080,"name":"address","nodeType":"ElementaryTypeName","src":"717:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20083,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"757:6:61","nodeType":"VariableDeclaration","scope":20087,"src":"749:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20082,"name":"uint256","nodeType":"ElementaryTypeName","src":"749:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20085,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"784:12:61","nodeType":"VariableDeclaration","scope":20087,"src":"769:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20084,"name":"uint16","nodeType":"ElementaryTypeName","src":"769:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"664:136:61"},"src":"646:155:61"},{"anonymous":false,"documentation":{"id":20088,"nodeType":"StructuredDocumentation","src":"805:258:61","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":20098,"name":"BackUnbacked","nameLocation":"1072:12:61","nodeType":"EventDefinition","parameters":{"id":20097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20090,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1101:7:61","nodeType":"VariableDeclaration","scope":20098,"src":"1085:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20089,"name":"address","nodeType":"ElementaryTypeName","src":"1085:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20092,"indexed":true,"mutability":"mutable","name":"backer","nameLocation":"1126:6:61","nodeType":"VariableDeclaration","scope":20098,"src":"1110:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20091,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20094,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1142:6:61","nodeType":"VariableDeclaration","scope":20098,"src":"1134:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20096,"indexed":false,"mutability":"mutable","name":"fee","nameLocation":"1158:3:61","nodeType":"VariableDeclaration","scope":20098,"src":"1150:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20095,"name":"uint256","nodeType":"ElementaryTypeName","src":"1150:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1084:78:61"},"src":"1066:97:61"},{"anonymous":false,"documentation":{"id":20099,"nodeType":"StructuredDocumentation","src":"1167:325:61","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":20111,"name":"Supply","nameLocation":"1501:6:61","nodeType":"EventDefinition","parameters":{"id":20110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20101,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1529:7:61","nodeType":"VariableDeclaration","scope":20111,"src":"1513:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20100,"name":"address","nodeType":"ElementaryTypeName","src":"1513:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20103,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"1550:4:61","nodeType":"VariableDeclaration","scope":20111,"src":"1542:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20102,"name":"address","nodeType":"ElementaryTypeName","src":"1542:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20105,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"1576:10:61","nodeType":"VariableDeclaration","scope":20111,"src":"1560:26:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20104,"name":"address","nodeType":"ElementaryTypeName","src":"1560:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20107,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1600:6:61","nodeType":"VariableDeclaration","scope":20111,"src":"1592:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1592:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20109,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"1627:12:61","nodeType":"VariableDeclaration","scope":20111,"src":"1612:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20108,"name":"uint16","nodeType":"ElementaryTypeName","src":"1612:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1507:136:61"},"src":"1495:149:61"},{"anonymous":false,"documentation":{"id":20112,"nodeType":"StructuredDocumentation","src":"1648:293:61","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":20122,"name":"Withdraw","nameLocation":"1950:8:61","nodeType":"EventDefinition","parameters":{"id":20121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20114,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"1975:7:61","nodeType":"VariableDeclaration","scope":20122,"src":"1959:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20113,"name":"address","nodeType":"ElementaryTypeName","src":"1959:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20116,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"2000:4:61","nodeType":"VariableDeclaration","scope":20122,"src":"1984:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20115,"name":"address","nodeType":"ElementaryTypeName","src":"1984:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20118,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2022:2:61","nodeType":"VariableDeclaration","scope":20122,"src":"2006:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20117,"name":"address","nodeType":"ElementaryTypeName","src":"2006:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20120,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2034:6:61","nodeType":"VariableDeclaration","scope":20122,"src":"2026:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1958:83:61"},"src":"1944:98:61"},{"anonymous":false,"documentation":{"id":20123,"nodeType":"StructuredDocumentation","src":"2046:629:61","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":20140,"name":"Borrow","nameLocation":"2684:6:61","nodeType":"EventDefinition","parameters":{"id":20139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20125,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"2712:7:61","nodeType":"VariableDeclaration","scope":20140,"src":"2696:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20124,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20127,"indexed":false,"mutability":"mutable","name":"user","nameLocation":"2733:4:61","nodeType":"VariableDeclaration","scope":20140,"src":"2725:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20126,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20129,"indexed":true,"mutability":"mutable","name":"onBehalfOf","nameLocation":"2759:10:61","nodeType":"VariableDeclaration","scope":20140,"src":"2743:26:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20128,"name":"address","nodeType":"ElementaryTypeName","src":"2743:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20131,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2783:6:61","nodeType":"VariableDeclaration","scope":20140,"src":"2775:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20130,"name":"uint256","nodeType":"ElementaryTypeName","src":"2775:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20134,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"2822:16:61","nodeType":"VariableDeclaration","scope":20140,"src":"2795:43:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":20133,"nodeType":"UserDefinedTypeName","pathNode":{"id":20132,"name":"DataTypes.InterestRateMode","nameLocations":["2795:9:61","2805:16:61"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"2795:26:61"},"referencedDeclaration":19497,"src":"2795:26:61","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":20136,"indexed":false,"mutability":"mutable","name":"borrowRate","nameLocation":"2852:10:61","nodeType":"VariableDeclaration","scope":20140,"src":"2844:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20135,"name":"uint256","nodeType":"ElementaryTypeName","src":"2844:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20138,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"2883:12:61","nodeType":"VariableDeclaration","scope":20140,"src":"2868:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20137,"name":"uint16","nodeType":"ElementaryTypeName","src":"2868:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2690:209:61"},"src":"2678:222:61"},{"anonymous":false,"documentation":{"id":20141,"nodeType":"StructuredDocumentation","src":"2904:426:61","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":20153,"name":"Repay","nameLocation":"3339:5:61","nodeType":"EventDefinition","parameters":{"id":20152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20143,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"3366:7:61","nodeType":"VariableDeclaration","scope":20153,"src":"3350:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20142,"name":"address","nodeType":"ElementaryTypeName","src":"3350:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20145,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3395:4:61","nodeType":"VariableDeclaration","scope":20153,"src":"3379:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20144,"name":"address","nodeType":"ElementaryTypeName","src":"3379:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20147,"indexed":true,"mutability":"mutable","name":"repayer","nameLocation":"3421:7:61","nodeType":"VariableDeclaration","scope":20153,"src":"3405:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20146,"name":"address","nodeType":"ElementaryTypeName","src":"3405:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20149,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3442:6:61","nodeType":"VariableDeclaration","scope":20153,"src":"3434:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20148,"name":"uint256","nodeType":"ElementaryTypeName","src":"3434:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20151,"indexed":false,"mutability":"mutable","name":"useATokens","nameLocation":"3459:10:61","nodeType":"VariableDeclaration","scope":20153,"src":"3454:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20150,"name":"bool","nodeType":"ElementaryTypeName","src":"3454:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3344:129:61"},"src":"3333:141:61"},{"anonymous":false,"documentation":{"id":20154,"nodeType":"StructuredDocumentation","src":"3478:307:61","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":20163,"name":"SwapBorrowRateMode","nameLocation":"3794:18:61","nodeType":"EventDefinition","parameters":{"id":20162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20156,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"3834:7:61","nodeType":"VariableDeclaration","scope":20163,"src":"3818:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20155,"name":"address","nodeType":"ElementaryTypeName","src":"3818:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20158,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"3863:4:61","nodeType":"VariableDeclaration","scope":20163,"src":"3847:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20157,"name":"address","nodeType":"ElementaryTypeName","src":"3847:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20161,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"3900:16:61","nodeType":"VariableDeclaration","scope":20163,"src":"3873:43:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":20160,"nodeType":"UserDefinedTypeName","pathNode":{"id":20159,"name":"DataTypes.InterestRateMode","nameLocations":["3873:9:61","3883:16:61"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"3873:26:61"},"referencedDeclaration":19497,"src":"3873:26:61","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"}],"src":"3812:108:61"},"src":"3788:133:61"},{"anonymous":false,"documentation":{"id":20164,"nodeType":"StructuredDocumentation","src":"3925:234:61","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":20170,"name":"IsolationModeTotalDebtUpdated","nameLocation":"4168:29:61","nodeType":"EventDefinition","parameters":{"id":20169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20166,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"4214:5:61","nodeType":"VariableDeclaration","scope":20170,"src":"4198:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20165,"name":"address","nodeType":"ElementaryTypeName","src":"4198:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20168,"indexed":false,"mutability":"mutable","name":"totalDebt","nameLocation":"4229:9:61","nodeType":"VariableDeclaration","scope":20170,"src":"4221:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20167,"name":"uint256","nodeType":"ElementaryTypeName","src":"4221:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4197:42:61"},"src":"4162:78:61"},{"anonymous":false,"documentation":{"id":20171,"nodeType":"StructuredDocumentation","src":"4244:165:61","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":20177,"name":"UserEModeSet","nameLocation":"4418:12:61","nodeType":"EventDefinition","parameters":{"id":20176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20173,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4447:4:61","nodeType":"VariableDeclaration","scope":20177,"src":"4431:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20172,"name":"address","nodeType":"ElementaryTypeName","src":"4431:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20175,"indexed":false,"mutability":"mutable","name":"categoryId","nameLocation":"4459:10:61","nodeType":"VariableDeclaration","scope":20177,"src":"4453:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20174,"name":"uint8","nodeType":"ElementaryTypeName","src":"4453:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4430:40:61"},"src":"4412:59:61"},{"anonymous":false,"documentation":{"id":20178,"nodeType":"StructuredDocumentation","src":"4475:208:61","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":20184,"name":"ReserveUsedAsCollateralEnabled","nameLocation":"4692:30:61","nodeType":"EventDefinition","parameters":{"id":20183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20180,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"4739:7:61","nodeType":"VariableDeclaration","scope":20184,"src":"4723:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20179,"name":"address","nodeType":"ElementaryTypeName","src":"4723:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20182,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4764:4:61","nodeType":"VariableDeclaration","scope":20184,"src":"4748:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20181,"name":"address","nodeType":"ElementaryTypeName","src":"4748:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4722:47:61"},"src":"4686:84:61"},{"anonymous":false,"documentation":{"id":20185,"nodeType":"StructuredDocumentation","src":"4774:208:61","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":20191,"name":"ReserveUsedAsCollateralDisabled","nameLocation":"4991:31:61","nodeType":"EventDefinition","parameters":{"id":20190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20187,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"5039:7:61","nodeType":"VariableDeclaration","scope":20191,"src":"5023:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20186,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20189,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"5064:4:61","nodeType":"VariableDeclaration","scope":20191,"src":"5048:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20188,"name":"address","nodeType":"ElementaryTypeName","src":"5048:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5022:47:61"},"src":"4985:85:61"},{"anonymous":false,"documentation":{"id":20192,"nodeType":"StructuredDocumentation","src":"5074:213:61","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":20198,"name":"RebalanceStableBorrowRate","nameLocation":"5296:25:61","nodeType":"EventDefinition","parameters":{"id":20197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20194,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"5338:7:61","nodeType":"VariableDeclaration","scope":20198,"src":"5322:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20193,"name":"address","nodeType":"ElementaryTypeName","src":"5322:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20196,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"5363:4:61","nodeType":"VariableDeclaration","scope":20198,"src":"5347:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20195,"name":"address","nodeType":"ElementaryTypeName","src":"5347:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5321:47:61"},"src":"5290:79:61"},{"anonymous":false,"documentation":{"id":20199,"nodeType":"StructuredDocumentation","src":"5373:483:61","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":20216,"name":"FlashLoan","nameLocation":"5865:9:61","nodeType":"EventDefinition","parameters":{"id":20215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20201,"indexed":true,"mutability":"mutable","name":"target","nameLocation":"5896:6:61","nodeType":"VariableDeclaration","scope":20216,"src":"5880:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20200,"name":"address","nodeType":"ElementaryTypeName","src":"5880:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20203,"indexed":false,"mutability":"mutable","name":"initiator","nameLocation":"5916:9:61","nodeType":"VariableDeclaration","scope":20216,"src":"5908:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20202,"name":"address","nodeType":"ElementaryTypeName","src":"5908:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20205,"indexed":true,"mutability":"mutable","name":"asset","nameLocation":"5947:5:61","nodeType":"VariableDeclaration","scope":20216,"src":"5931:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20204,"name":"address","nodeType":"ElementaryTypeName","src":"5931:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20207,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"5966:6:61","nodeType":"VariableDeclaration","scope":20216,"src":"5958:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20206,"name":"uint256","nodeType":"ElementaryTypeName","src":"5958:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20210,"indexed":false,"mutability":"mutable","name":"interestRateMode","nameLocation":"6005:16:61","nodeType":"VariableDeclaration","scope":20216,"src":"5978:43:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"},"typeName":{"id":20209,"nodeType":"UserDefinedTypeName","pathNode":{"id":20208,"name":"DataTypes.InterestRateMode","nameLocations":["5978:9:61","5988:16:61"],"nodeType":"IdentifierPath","referencedDeclaration":19497,"src":"5978:26:61"},"referencedDeclaration":19497,"src":"5978:26:61","typeDescriptions":{"typeIdentifier":"t_enum$_InterestRateMode_$19497","typeString":"enum DataTypes.InterestRateMode"}},"visibility":"internal"},{"constant":false,"id":20212,"indexed":false,"mutability":"mutable","name":"premium","nameLocation":"6035:7:61","nodeType":"VariableDeclaration","scope":20216,"src":"6027:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20211,"name":"uint256","nodeType":"ElementaryTypeName","src":"6027:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20214,"indexed":true,"mutability":"mutable","name":"referralCode","nameLocation":"6063:12:61","nodeType":"VariableDeclaration","scope":20216,"src":"6048:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20213,"name":"uint16","nodeType":"ElementaryTypeName","src":"6048:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"5874:205:61"},"src":"5859:221:61"},{"anonymous":false,"documentation":{"id":20217,"nodeType":"StructuredDocumentation","src":"6084:750:61","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":20233,"name":"LiquidationCall","nameLocation":"6843:15:61","nodeType":"EventDefinition","parameters":{"id":20232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20219,"indexed":true,"mutability":"mutable","name":"collateralAsset","nameLocation":"6880:15:61","nodeType":"VariableDeclaration","scope":20233,"src":"6864:31:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20218,"name":"address","nodeType":"ElementaryTypeName","src":"6864:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20221,"indexed":true,"mutability":"mutable","name":"debtAsset","nameLocation":"6917:9:61","nodeType":"VariableDeclaration","scope":20233,"src":"6901:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20220,"name":"address","nodeType":"ElementaryTypeName","src":"6901:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20223,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"6948:4:61","nodeType":"VariableDeclaration","scope":20233,"src":"6932:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20222,"name":"address","nodeType":"ElementaryTypeName","src":"6932:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20225,"indexed":false,"mutability":"mutable","name":"debtToCover","nameLocation":"6966:11:61","nodeType":"VariableDeclaration","scope":20233,"src":"6958:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20224,"name":"uint256","nodeType":"ElementaryTypeName","src":"6958:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20227,"indexed":false,"mutability":"mutable","name":"liquidatedCollateralAmount","nameLocation":"6991:26:61","nodeType":"VariableDeclaration","scope":20233,"src":"6983:34:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20226,"name":"uint256","nodeType":"ElementaryTypeName","src":"6983:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20229,"indexed":false,"mutability":"mutable","name":"liquidator","nameLocation":"7031:10:61","nodeType":"VariableDeclaration","scope":20233,"src":"7023:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20228,"name":"address","nodeType":"ElementaryTypeName","src":"7023:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20231,"indexed":false,"mutability":"mutable","name":"receiveAToken","nameLocation":"7052:13:61","nodeType":"VariableDeclaration","scope":20233,"src":"7047:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20230,"name":"bool","nodeType":"ElementaryTypeName","src":"7047:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6858:211:61"},"src":"6837:233:61"},{"anonymous":false,"documentation":{"id":20234,"nodeType":"StructuredDocumentation","src":"7074:422:61","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":20248,"name":"ReserveDataUpdated","nameLocation":"7505:18:61","nodeType":"EventDefinition","parameters":{"id":20247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20236,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"7545:7:61","nodeType":"VariableDeclaration","scope":20248,"src":"7529:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20235,"name":"address","nodeType":"ElementaryTypeName","src":"7529:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20238,"indexed":false,"mutability":"mutable","name":"liquidityRate","nameLocation":"7566:13:61","nodeType":"VariableDeclaration","scope":20248,"src":"7558:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20237,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20240,"indexed":false,"mutability":"mutable","name":"stableBorrowRate","nameLocation":"7593:16:61","nodeType":"VariableDeclaration","scope":20248,"src":"7585:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20239,"name":"uint256","nodeType":"ElementaryTypeName","src":"7585:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20242,"indexed":false,"mutability":"mutable","name":"variableBorrowRate","nameLocation":"7623:18:61","nodeType":"VariableDeclaration","scope":20248,"src":"7615:26:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20241,"name":"uint256","nodeType":"ElementaryTypeName","src":"7615:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20244,"indexed":false,"mutability":"mutable","name":"liquidityIndex","nameLocation":"7655:14:61","nodeType":"VariableDeclaration","scope":20248,"src":"7647:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20243,"name":"uint256","nodeType":"ElementaryTypeName","src":"7647:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20246,"indexed":false,"mutability":"mutable","name":"variableBorrowIndex","nameLocation":"7683:19:61","nodeType":"VariableDeclaration","scope":20248,"src":"7675:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20245,"name":"uint256","nodeType":"ElementaryTypeName","src":"7675:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7523:183:61"},"src":"7499:208:61"},{"anonymous":false,"documentation":{"id":20249,"nodeType":"StructuredDocumentation","src":"7711:212:61","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":20255,"name":"MintedToTreasury","nameLocation":"7932:16:61","nodeType":"EventDefinition","parameters":{"id":20254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20251,"indexed":true,"mutability":"mutable","name":"reserve","nameLocation":"7965:7:61","nodeType":"VariableDeclaration","scope":20255,"src":"7949:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20250,"name":"address","nodeType":"ElementaryTypeName","src":"7949:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20253,"indexed":false,"mutability":"mutable","name":"amountMinted","nameLocation":"7982:12:61","nodeType":"VariableDeclaration","scope":20255,"src":"7974:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20252,"name":"uint256","nodeType":"ElementaryTypeName","src":"7974:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7948:47:61"},"src":"7926:70:61"},{"documentation":{"id":20256,"nodeType":"StructuredDocumentation","src":"8000:426:61","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":20267,"implemented":false,"kind":"function","modifiers":[],"name":"mintUnbacked","nameLocation":"8438:12:61","nodeType":"FunctionDefinition","parameters":{"id":20265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20258,"mutability":"mutable","name":"asset","nameLocation":"8464:5:61","nodeType":"VariableDeclaration","scope":20267,"src":"8456:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20257,"name":"address","nodeType":"ElementaryTypeName","src":"8456:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20260,"mutability":"mutable","name":"amount","nameLocation":"8483:6:61","nodeType":"VariableDeclaration","scope":20267,"src":"8475:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20259,"name":"uint256","nodeType":"ElementaryTypeName","src":"8475:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20262,"mutability":"mutable","name":"onBehalfOf","nameLocation":"8503:10:61","nodeType":"VariableDeclaration","scope":20267,"src":"8495:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20261,"name":"address","nodeType":"ElementaryTypeName","src":"8495:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20264,"mutability":"mutable","name":"referralCode","nameLocation":"8526:12:61","nodeType":"VariableDeclaration","scope":20267,"src":"8519:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20263,"name":"uint16","nodeType":"ElementaryTypeName","src":"8519:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"8450:92:61"},"returnParameters":{"id":20266,"nodeType":"ParameterList","parameters":[],"src":"8551:0:61"},"scope":20704,"src":"8429:123:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20268,"nodeType":"StructuredDocumentation","src":"8556:226:61","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":20277,"implemented":false,"kind":"function","modifiers":[],"name":"backUnbacked","nameLocation":"8794:12:61","nodeType":"FunctionDefinition","parameters":{"id":20275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20270,"mutability":"mutable","name":"asset","nameLocation":"8820:5:61","nodeType":"VariableDeclaration","scope":20277,"src":"8812:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20269,"name":"address","nodeType":"ElementaryTypeName","src":"8812:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20272,"mutability":"mutable","name":"amount","nameLocation":"8839:6:61","nodeType":"VariableDeclaration","scope":20277,"src":"8831:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20271,"name":"uint256","nodeType":"ElementaryTypeName","src":"8831:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20274,"mutability":"mutable","name":"fee","nameLocation":"8859:3:61","nodeType":"VariableDeclaration","scope":20277,"src":"8851:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20273,"name":"uint256","nodeType":"ElementaryTypeName","src":"8851:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8806:60:61"},"returnParameters":{"id":20276,"nodeType":"ParameterList","parameters":[],"src":"8875:0:61"},"scope":20704,"src":"8785:91:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20278,"nodeType":"StructuredDocumentation","src":"8880:713:61","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":20289,"implemented":false,"kind":"function","modifiers":[],"name":"supply","nameLocation":"9605:6:61","nodeType":"FunctionDefinition","parameters":{"id":20287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20280,"mutability":"mutable","name":"asset","nameLocation":"9625:5:61","nodeType":"VariableDeclaration","scope":20289,"src":"9617:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20279,"name":"address","nodeType":"ElementaryTypeName","src":"9617:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20282,"mutability":"mutable","name":"amount","nameLocation":"9644:6:61","nodeType":"VariableDeclaration","scope":20289,"src":"9636:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20281,"name":"uint256","nodeType":"ElementaryTypeName","src":"9636:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20284,"mutability":"mutable","name":"onBehalfOf","nameLocation":"9664:10:61","nodeType":"VariableDeclaration","scope":20289,"src":"9656:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20283,"name":"address","nodeType":"ElementaryTypeName","src":"9656:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20286,"mutability":"mutable","name":"referralCode","nameLocation":"9687:12:61","nodeType":"VariableDeclaration","scope":20289,"src":"9680:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20285,"name":"uint16","nodeType":"ElementaryTypeName","src":"9680:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"9611:92:61"},"returnParameters":{"id":20288,"nodeType":"ParameterList","parameters":[],"src":"9712:0:61"},"scope":20704,"src":"9596:117:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20290,"nodeType":"StructuredDocumentation","src":"9717:963:61","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":20309,"implemented":false,"kind":"function","modifiers":[],"name":"supplyWithPermit","nameLocation":"10692:16:61","nodeType":"FunctionDefinition","parameters":{"id":20307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20292,"mutability":"mutable","name":"asset","nameLocation":"10722:5:61","nodeType":"VariableDeclaration","scope":20309,"src":"10714:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20291,"name":"address","nodeType":"ElementaryTypeName","src":"10714:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20294,"mutability":"mutable","name":"amount","nameLocation":"10741:6:61","nodeType":"VariableDeclaration","scope":20309,"src":"10733:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20293,"name":"uint256","nodeType":"ElementaryTypeName","src":"10733:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20296,"mutability":"mutable","name":"onBehalfOf","nameLocation":"10761:10:61","nodeType":"VariableDeclaration","scope":20309,"src":"10753:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20295,"name":"address","nodeType":"ElementaryTypeName","src":"10753:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20298,"mutability":"mutable","name":"referralCode","nameLocation":"10784:12:61","nodeType":"VariableDeclaration","scope":20309,"src":"10777:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20297,"name":"uint16","nodeType":"ElementaryTypeName","src":"10777:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":20300,"mutability":"mutable","name":"deadline","nameLocation":"10810:8:61","nodeType":"VariableDeclaration","scope":20309,"src":"10802:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20299,"name":"uint256","nodeType":"ElementaryTypeName","src":"10802:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20302,"mutability":"mutable","name":"permitV","nameLocation":"10830:7:61","nodeType":"VariableDeclaration","scope":20309,"src":"10824:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20301,"name":"uint8","nodeType":"ElementaryTypeName","src":"10824:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20304,"mutability":"mutable","name":"permitR","nameLocation":"10851:7:61","nodeType":"VariableDeclaration","scope":20309,"src":"10843:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20303,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10843:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20306,"mutability":"mutable","name":"permitS","nameLocation":"10872:7:61","nodeType":"VariableDeclaration","scope":20309,"src":"10864:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10864:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10708:175:61"},"returnParameters":{"id":20308,"nodeType":"ParameterList","parameters":[],"src":"10892:0:61"},"scope":20704,"src":"10683:210:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20310,"nodeType":"StructuredDocumentation","src":"10897:672:61","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":20321,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"11581:8:61","nodeType":"FunctionDefinition","parameters":{"id":20317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20312,"mutability":"mutable","name":"asset","nameLocation":"11603:5:61","nodeType":"VariableDeclaration","scope":20321,"src":"11595:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20311,"name":"address","nodeType":"ElementaryTypeName","src":"11595:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20314,"mutability":"mutable","name":"amount","nameLocation":"11622:6:61","nodeType":"VariableDeclaration","scope":20321,"src":"11614:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20313,"name":"uint256","nodeType":"ElementaryTypeName","src":"11614:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20316,"mutability":"mutable","name":"to","nameLocation":"11642:2:61","nodeType":"VariableDeclaration","scope":20321,"src":"11634:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20315,"name":"address","nodeType":"ElementaryTypeName","src":"11634:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11589:59:61"},"returnParameters":{"id":20320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20319,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20321,"src":"11667:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20318,"name":"uint256","nodeType":"ElementaryTypeName","src":"11667:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11666:9:61"},"scope":20704,"src":"11572:104:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20322,"nodeType":"StructuredDocumentation","src":"11680:1199:61","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":20335,"implemented":false,"kind":"function","modifiers":[],"name":"borrow","nameLocation":"12891:6:61","nodeType":"FunctionDefinition","parameters":{"id":20333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20324,"mutability":"mutable","name":"asset","nameLocation":"12911:5:61","nodeType":"VariableDeclaration","scope":20335,"src":"12903:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20323,"name":"address","nodeType":"ElementaryTypeName","src":"12903:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20326,"mutability":"mutable","name":"amount","nameLocation":"12930:6:61","nodeType":"VariableDeclaration","scope":20335,"src":"12922:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20325,"name":"uint256","nodeType":"ElementaryTypeName","src":"12922:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20328,"mutability":"mutable","name":"interestRateMode","nameLocation":"12950:16:61","nodeType":"VariableDeclaration","scope":20335,"src":"12942:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20327,"name":"uint256","nodeType":"ElementaryTypeName","src":"12942:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20330,"mutability":"mutable","name":"referralCode","nameLocation":"12979:12:61","nodeType":"VariableDeclaration","scope":20335,"src":"12972:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20329,"name":"uint16","nodeType":"ElementaryTypeName","src":"12972:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":20332,"mutability":"mutable","name":"onBehalfOf","nameLocation":"13005:10:61","nodeType":"VariableDeclaration","scope":20335,"src":"12997:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20331,"name":"address","nodeType":"ElementaryTypeName","src":"12997:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12897:122:61"},"returnParameters":{"id":20334,"nodeType":"ParameterList","parameters":[],"src":"13028:0:61"},"scope":20704,"src":"12882:147:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20336,"nodeType":"StructuredDocumentation","src":"13033:874:61","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":20349,"implemented":false,"kind":"function","modifiers":[],"name":"repay","nameLocation":"13919:5:61","nodeType":"FunctionDefinition","parameters":{"id":20345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20338,"mutability":"mutable","name":"asset","nameLocation":"13938:5:61","nodeType":"VariableDeclaration","scope":20349,"src":"13930:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20337,"name":"address","nodeType":"ElementaryTypeName","src":"13930:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20340,"mutability":"mutable","name":"amount","nameLocation":"13957:6:61","nodeType":"VariableDeclaration","scope":20349,"src":"13949:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20339,"name":"uint256","nodeType":"ElementaryTypeName","src":"13949:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20342,"mutability":"mutable","name":"interestRateMode","nameLocation":"13977:16:61","nodeType":"VariableDeclaration","scope":20349,"src":"13969:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20341,"name":"uint256","nodeType":"ElementaryTypeName","src":"13969:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20344,"mutability":"mutable","name":"onBehalfOf","nameLocation":"14007:10:61","nodeType":"VariableDeclaration","scope":20349,"src":"13999:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20343,"name":"address","nodeType":"ElementaryTypeName","src":"13999:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13924:97:61"},"returnParameters":{"id":20348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20349,"src":"14040:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20346,"name":"uint256","nodeType":"ElementaryTypeName","src":"14040:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14039:9:61"},"scope":20704,"src":"13910:139:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20350,"nodeType":"StructuredDocumentation","src":"14053:1086:61","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":20371,"implemented":false,"kind":"function","modifiers":[],"name":"repayWithPermit","nameLocation":"15151:15:61","nodeType":"FunctionDefinition","parameters":{"id":20367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20352,"mutability":"mutable","name":"asset","nameLocation":"15180:5:61","nodeType":"VariableDeclaration","scope":20371,"src":"15172:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20351,"name":"address","nodeType":"ElementaryTypeName","src":"15172:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20354,"mutability":"mutable","name":"amount","nameLocation":"15199:6:61","nodeType":"VariableDeclaration","scope":20371,"src":"15191:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20353,"name":"uint256","nodeType":"ElementaryTypeName","src":"15191:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20356,"mutability":"mutable","name":"interestRateMode","nameLocation":"15219:16:61","nodeType":"VariableDeclaration","scope":20371,"src":"15211:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20355,"name":"uint256","nodeType":"ElementaryTypeName","src":"15211:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20358,"mutability":"mutable","name":"onBehalfOf","nameLocation":"15249:10:61","nodeType":"VariableDeclaration","scope":20371,"src":"15241:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20357,"name":"address","nodeType":"ElementaryTypeName","src":"15241:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20360,"mutability":"mutable","name":"deadline","nameLocation":"15273:8:61","nodeType":"VariableDeclaration","scope":20371,"src":"15265:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20359,"name":"uint256","nodeType":"ElementaryTypeName","src":"15265:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20362,"mutability":"mutable","name":"permitV","nameLocation":"15293:7:61","nodeType":"VariableDeclaration","scope":20371,"src":"15287:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20361,"name":"uint8","nodeType":"ElementaryTypeName","src":"15287:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20364,"mutability":"mutable","name":"permitR","nameLocation":"15314:7:61","nodeType":"VariableDeclaration","scope":20371,"src":"15306:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15306:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20366,"mutability":"mutable","name":"permitS","nameLocation":"15335:7:61","nodeType":"VariableDeclaration","scope":20371,"src":"15327:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20365,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15327:7:61","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15166:180:61"},"returnParameters":{"id":20370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20369,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20371,"src":"15365:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20368,"name":"uint256","nodeType":"ElementaryTypeName","src":"15365:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15364:9:61"},"scope":20704,"src":"15142:232:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20372,"nodeType":"StructuredDocumentation","src":"15378:780:61","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":20383,"implemented":false,"kind":"function","modifiers":[],"name":"repayWithATokens","nameLocation":"16170:16:61","nodeType":"FunctionDefinition","parameters":{"id":20379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20374,"mutability":"mutable","name":"asset","nameLocation":"16200:5:61","nodeType":"VariableDeclaration","scope":20383,"src":"16192:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20373,"name":"address","nodeType":"ElementaryTypeName","src":"16192:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20376,"mutability":"mutable","name":"amount","nameLocation":"16219:6:61","nodeType":"VariableDeclaration","scope":20383,"src":"16211:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20375,"name":"uint256","nodeType":"ElementaryTypeName","src":"16211:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20378,"mutability":"mutable","name":"interestRateMode","nameLocation":"16239:16:61","nodeType":"VariableDeclaration","scope":20383,"src":"16231:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20377,"name":"uint256","nodeType":"ElementaryTypeName","src":"16231:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16186:73:61"},"returnParameters":{"id":20382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20381,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20383,"src":"16278:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20380,"name":"uint256","nodeType":"ElementaryTypeName","src":"16278:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16277:9:61"},"scope":20704,"src":"16161:126:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20384,"nodeType":"StructuredDocumentation","src":"16291:289:61","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":20391,"implemented":false,"kind":"function","modifiers":[],"name":"swapBorrowRateMode","nameLocation":"16592:18:61","nodeType":"FunctionDefinition","parameters":{"id":20389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20386,"mutability":"mutable","name":"asset","nameLocation":"16619:5:61","nodeType":"VariableDeclaration","scope":20391,"src":"16611:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20385,"name":"address","nodeType":"ElementaryTypeName","src":"16611:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20388,"mutability":"mutable","name":"interestRateMode","nameLocation":"16634:16:61","nodeType":"VariableDeclaration","scope":20391,"src":"16626:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20387,"name":"uint256","nodeType":"ElementaryTypeName","src":"16626:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16610:41:61"},"returnParameters":{"id":20390,"nodeType":"ParameterList","parameters":[],"src":"16660:0:61"},"scope":20704,"src":"16583:78:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20392,"nodeType":"StructuredDocumentation","src":"16665:554:61","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":20399,"implemented":false,"kind":"function","modifiers":[],"name":"rebalanceStableBorrowRate","nameLocation":"17231:25:61","nodeType":"FunctionDefinition","parameters":{"id":20397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20394,"mutability":"mutable","name":"asset","nameLocation":"17265:5:61","nodeType":"VariableDeclaration","scope":20399,"src":"17257:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20393,"name":"address","nodeType":"ElementaryTypeName","src":"17257:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20396,"mutability":"mutable","name":"user","nameLocation":"17280:4:61","nodeType":"VariableDeclaration","scope":20399,"src":"17272:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20395,"name":"address","nodeType":"ElementaryTypeName","src":"17272:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17256:29:61"},"returnParameters":{"id":20398,"nodeType":"ParameterList","parameters":[],"src":"17294:0:61"},"scope":20704,"src":"17222:73:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20400,"nodeType":"StructuredDocumentation","src":"17299:261:61","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":20407,"implemented":false,"kind":"function","modifiers":[],"name":"setUserUseReserveAsCollateral","nameLocation":"17572:29:61","nodeType":"FunctionDefinition","parameters":{"id":20405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20402,"mutability":"mutable","name":"asset","nameLocation":"17610:5:61","nodeType":"VariableDeclaration","scope":20407,"src":"17602:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20401,"name":"address","nodeType":"ElementaryTypeName","src":"17602:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20404,"mutability":"mutable","name":"useAsCollateral","nameLocation":"17622:15:61","nodeType":"VariableDeclaration","scope":20407,"src":"17617:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20403,"name":"bool","nodeType":"ElementaryTypeName","src":"17617:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17601:37:61"},"returnParameters":{"id":20406,"nodeType":"ParameterList","parameters":[],"src":"17647:0:61"},"scope":20704,"src":"17563:85:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20408,"nodeType":"StructuredDocumentation","src":"17652:861:61","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":20421,"implemented":false,"kind":"function","modifiers":[],"name":"liquidationCall","nameLocation":"18525:15:61","nodeType":"FunctionDefinition","parameters":{"id":20419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20410,"mutability":"mutable","name":"collateralAsset","nameLocation":"18554:15:61","nodeType":"VariableDeclaration","scope":20421,"src":"18546:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20409,"name":"address","nodeType":"ElementaryTypeName","src":"18546:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20412,"mutability":"mutable","name":"debtAsset","nameLocation":"18583:9:61","nodeType":"VariableDeclaration","scope":20421,"src":"18575:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20411,"name":"address","nodeType":"ElementaryTypeName","src":"18575:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20414,"mutability":"mutable","name":"user","nameLocation":"18606:4:61","nodeType":"VariableDeclaration","scope":20421,"src":"18598:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20413,"name":"address","nodeType":"ElementaryTypeName","src":"18598:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20416,"mutability":"mutable","name":"debtToCover","nameLocation":"18624:11:61","nodeType":"VariableDeclaration","scope":20421,"src":"18616:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20415,"name":"uint256","nodeType":"ElementaryTypeName","src":"18616:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20418,"mutability":"mutable","name":"receiveAToken","nameLocation":"18646:13:61","nodeType":"VariableDeclaration","scope":20421,"src":"18641:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":20417,"name":"bool","nodeType":"ElementaryTypeName","src":"18641:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18540:123:61"},"returnParameters":{"id":20420,"nodeType":"ParameterList","parameters":[],"src":"18672:0:61"},"scope":20704,"src":"18516:157:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20422,"nodeType":"StructuredDocumentation","src":"18677:1402:61","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":20442,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nameLocation":"20091:9:61","nodeType":"FunctionDefinition","parameters":{"id":20440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20424,"mutability":"mutable","name":"receiverAddress","nameLocation":"20114:15:61","nodeType":"VariableDeclaration","scope":20442,"src":"20106:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20423,"name":"address","nodeType":"ElementaryTypeName","src":"20106:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20427,"mutability":"mutable","name":"assets","nameLocation":"20154:6:61","nodeType":"VariableDeclaration","scope":20442,"src":"20135:25:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":20425,"name":"address","nodeType":"ElementaryTypeName","src":"20135:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20426,"nodeType":"ArrayTypeName","src":"20135:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":20430,"mutability":"mutable","name":"amounts","nameLocation":"20185:7:61","nodeType":"VariableDeclaration","scope":20442,"src":"20166:26:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20428,"name":"uint256","nodeType":"ElementaryTypeName","src":"20166:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20429,"nodeType":"ArrayTypeName","src":"20166:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20433,"mutability":"mutable","name":"interestRateModes","nameLocation":"20217:17:61","nodeType":"VariableDeclaration","scope":20442,"src":"20198:36:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":20431,"name":"uint256","nodeType":"ElementaryTypeName","src":"20198:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20432,"nodeType":"ArrayTypeName","src":"20198:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":20435,"mutability":"mutable","name":"onBehalfOf","nameLocation":"20248:10:61","nodeType":"VariableDeclaration","scope":20442,"src":"20240:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20434,"name":"address","nodeType":"ElementaryTypeName","src":"20240:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20437,"mutability":"mutable","name":"params","nameLocation":"20279:6:61","nodeType":"VariableDeclaration","scope":20442,"src":"20264:21:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":20436,"name":"bytes","nodeType":"ElementaryTypeName","src":"20264:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":20439,"mutability":"mutable","name":"referralCode","nameLocation":"20298:12:61","nodeType":"VariableDeclaration","scope":20442,"src":"20291:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20438,"name":"uint16","nodeType":"ElementaryTypeName","src":"20291:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"20100:214:61"},"returnParameters":{"id":20441,"nodeType":"ParameterList","parameters":[],"src":"20323:0:61"},"scope":20704,"src":"20082:242:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20443,"nodeType":"StructuredDocumentation","src":"20328:897:61","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":20456,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoanSimple","nameLocation":"21237:15:61","nodeType":"FunctionDefinition","parameters":{"id":20454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20445,"mutability":"mutable","name":"receiverAddress","nameLocation":"21266:15:61","nodeType":"VariableDeclaration","scope":20456,"src":"21258:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20444,"name":"address","nodeType":"ElementaryTypeName","src":"21258:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20447,"mutability":"mutable","name":"asset","nameLocation":"21295:5:61","nodeType":"VariableDeclaration","scope":20456,"src":"21287:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20446,"name":"address","nodeType":"ElementaryTypeName","src":"21287:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20449,"mutability":"mutable","name":"amount","nameLocation":"21314:6:61","nodeType":"VariableDeclaration","scope":20456,"src":"21306:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20448,"name":"uint256","nodeType":"ElementaryTypeName","src":"21306:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20451,"mutability":"mutable","name":"params","nameLocation":"21341:6:61","nodeType":"VariableDeclaration","scope":20456,"src":"21326:21:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":20450,"name":"bytes","nodeType":"ElementaryTypeName","src":"21326:5:61","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":20453,"mutability":"mutable","name":"referralCode","nameLocation":"21360:12:61","nodeType":"VariableDeclaration","scope":20456,"src":"21353:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20452,"name":"uint16","nodeType":"ElementaryTypeName","src":"21353:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"21252:124:61"},"returnParameters":{"id":20455,"nodeType":"ParameterList","parameters":[],"src":"21385:0:61"},"scope":20704,"src":"21228:158:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20457,"nodeType":"StructuredDocumentation","src":"21390:631:61","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":20474,"implemented":false,"kind":"function","modifiers":[],"name":"getUserAccountData","nameLocation":"22033:18:61","nodeType":"FunctionDefinition","parameters":{"id":20460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20459,"mutability":"mutable","name":"user","nameLocation":"22060:4:61","nodeType":"VariableDeclaration","scope":20474,"src":"22052:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20458,"name":"address","nodeType":"ElementaryTypeName","src":"22052:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22051:14:61"},"returnParameters":{"id":20473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20462,"mutability":"mutable","name":"totalCollateralBase","nameLocation":"22116:19:61","nodeType":"VariableDeclaration","scope":20474,"src":"22108:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20461,"name":"uint256","nodeType":"ElementaryTypeName","src":"22108:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20464,"mutability":"mutable","name":"totalDebtBase","nameLocation":"22151:13:61","nodeType":"VariableDeclaration","scope":20474,"src":"22143:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20463,"name":"uint256","nodeType":"ElementaryTypeName","src":"22143:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20466,"mutability":"mutable","name":"availableBorrowsBase","nameLocation":"22180:20:61","nodeType":"VariableDeclaration","scope":20474,"src":"22172:28:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20465,"name":"uint256","nodeType":"ElementaryTypeName","src":"22172:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20468,"mutability":"mutable","name":"currentLiquidationThreshold","nameLocation":"22216:27:61","nodeType":"VariableDeclaration","scope":20474,"src":"22208:35:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20467,"name":"uint256","nodeType":"ElementaryTypeName","src":"22208:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20470,"mutability":"mutable","name":"ltv","nameLocation":"22259:3:61","nodeType":"VariableDeclaration","scope":20474,"src":"22251:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20469,"name":"uint256","nodeType":"ElementaryTypeName","src":"22251:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20472,"mutability":"mutable","name":"healthFactor","nameLocation":"22278:12:61","nodeType":"VariableDeclaration","scope":20474,"src":"22270:20:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20471,"name":"uint256","nodeType":"ElementaryTypeName","src":"22270:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22100:196:61"},"scope":20704,"src":"22024:273:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20475,"nodeType":"StructuredDocumentation","src":"22301:646:61","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":20488,"implemented":false,"kind":"function","modifiers":[],"name":"initReserve","nameLocation":"22959:11:61","nodeType":"FunctionDefinition","parameters":{"id":20486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20477,"mutability":"mutable","name":"asset","nameLocation":"22984:5:61","nodeType":"VariableDeclaration","scope":20488,"src":"22976:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20476,"name":"address","nodeType":"ElementaryTypeName","src":"22976:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20479,"mutability":"mutable","name":"aTokenAddress","nameLocation":"23003:13:61","nodeType":"VariableDeclaration","scope":20488,"src":"22995:21:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20478,"name":"address","nodeType":"ElementaryTypeName","src":"22995:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20481,"mutability":"mutable","name":"stableDebtAddress","nameLocation":"23030:17:61","nodeType":"VariableDeclaration","scope":20488,"src":"23022:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20480,"name":"address","nodeType":"ElementaryTypeName","src":"23022:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20483,"mutability":"mutable","name":"variableDebtAddress","nameLocation":"23061:19:61","nodeType":"VariableDeclaration","scope":20488,"src":"23053:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20482,"name":"address","nodeType":"ElementaryTypeName","src":"23053:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20485,"mutability":"mutable","name":"interestRateStrategyAddress","nameLocation":"23094:27:61","nodeType":"VariableDeclaration","scope":20488,"src":"23086:35:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20484,"name":"address","nodeType":"ElementaryTypeName","src":"23086:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22970:155:61"},"returnParameters":{"id":20487,"nodeType":"ParameterList","parameters":[],"src":"23134:0:61"},"scope":20704,"src":"22950:185:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20489,"nodeType":"StructuredDocumentation","src":"23139:164:61","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":20494,"implemented":false,"kind":"function","modifiers":[],"name":"dropReserve","nameLocation":"23315:11:61","nodeType":"FunctionDefinition","parameters":{"id":20492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20491,"mutability":"mutable","name":"asset","nameLocation":"23335:5:61","nodeType":"VariableDeclaration","scope":20494,"src":"23327:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20490,"name":"address","nodeType":"ElementaryTypeName","src":"23327:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23326:15:61"},"returnParameters":{"id":20493,"nodeType":"ParameterList","parameters":[],"src":"23350:0:61"},"scope":20704,"src":"23306:45:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20495,"nodeType":"StructuredDocumentation","src":"23355:291:61","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":20502,"implemented":false,"kind":"function","modifiers":[],"name":"setReserveInterestRateStrategyAddress","nameLocation":"23658:37:61","nodeType":"FunctionDefinition","parameters":{"id":20500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20497,"mutability":"mutable","name":"asset","nameLocation":"23704:5:61","nodeType":"VariableDeclaration","scope":20502,"src":"23696:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20496,"name":"address","nodeType":"ElementaryTypeName","src":"23696:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20499,"mutability":"mutable","name":"rateStrategyAddress","nameLocation":"23719:19:61","nodeType":"VariableDeclaration","scope":20502,"src":"23711:27:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20498,"name":"address","nodeType":"ElementaryTypeName","src":"23711:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23695:44:61"},"returnParameters":{"id":20501,"nodeType":"ParameterList","parameters":[],"src":"23752:0:61"},"scope":20704,"src":"23649:104:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20503,"nodeType":"StructuredDocumentation","src":"23757:260:61","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":20511,"implemented":false,"kind":"function","modifiers":[],"name":"setConfiguration","nameLocation":"24029:16:61","nodeType":"FunctionDefinition","parameters":{"id":20509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20505,"mutability":"mutable","name":"asset","nameLocation":"24054:5:61","nodeType":"VariableDeclaration","scope":20511,"src":"24046:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20504,"name":"address","nodeType":"ElementaryTypeName","src":"24046:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20508,"mutability":"mutable","name":"configuration","nameLocation":"24104:13:61","nodeType":"VariableDeclaration","scope":20511,"src":"24061:56:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_calldata_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20507,"nodeType":"UserDefinedTypeName","pathNode":{"id":20506,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["24061:9:61","24071:23:61"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"24061:33:61"},"referencedDeclaration":19478,"src":"24061:33:61","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"24045:73:61"},"returnParameters":{"id":20510,"nodeType":"ParameterList","parameters":[],"src":"24131:0:61"},"scope":20704,"src":"24020:112:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20512,"nodeType":"StructuredDocumentation","src":"24136:179:61","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":20520,"implemented":false,"kind":"function","modifiers":[],"name":"getConfiguration","nameLocation":"24327:16:61","nodeType":"FunctionDefinition","parameters":{"id":20515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20514,"mutability":"mutable","name":"asset","nameLocation":"24352:5:61","nodeType":"VariableDeclaration","scope":20520,"src":"24344:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20513,"name":"address","nodeType":"ElementaryTypeName","src":"24344:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24343:15:61"},"returnParameters":{"id":20519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20520,"src":"24394:40:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":20517,"nodeType":"UserDefinedTypeName","pathNode":{"id":20516,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["24394:9:61","24404:23:61"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"24394:33:61"},"referencedDeclaration":19478,"src":"24394:33:61","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"24393:42:61"},"scope":20704,"src":"24318:118:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20521,"nodeType":"StructuredDocumentation","src":"24440:162:61","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":20529,"implemented":false,"kind":"function","modifiers":[],"name":"getUserConfiguration","nameLocation":"24614:20:61","nodeType":"FunctionDefinition","parameters":{"id":20524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20523,"mutability":"mutable","name":"user","nameLocation":"24643:4:61","nodeType":"VariableDeclaration","scope":20529,"src":"24635:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20522,"name":"address","nodeType":"ElementaryTypeName","src":"24635:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24634:14:61"},"returnParameters":{"id":20528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20529,"src":"24684:37:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_memory_ptr","typeString":"struct DataTypes.UserConfigurationMap"},"typeName":{"id":20526,"nodeType":"UserDefinedTypeName","pathNode":{"id":20525,"name":"DataTypes.UserConfigurationMap","nameLocations":["24684:9:61","24694:20:61"],"nodeType":"IdentifierPath","referencedDeclaration":19482,"src":"24684:30:61"},"referencedDeclaration":19482,"src":"24684:30:61","typeDescriptions":{"typeIdentifier":"t_struct$_UserConfigurationMap_$19482_storage_ptr","typeString":"struct DataTypes.UserConfigurationMap"}},"visibility":"internal"}],"src":"24683:39:61"},"scope":20704,"src":"24605:118:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20530,"nodeType":"StructuredDocumentation","src":"24727:199:61","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":20537,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveNormalizedIncome","nameLocation":"24938:26:61","nodeType":"FunctionDefinition","parameters":{"id":20533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20532,"mutability":"mutable","name":"asset","nameLocation":"24973:5:61","nodeType":"VariableDeclaration","scope":20537,"src":"24965:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20531,"name":"address","nodeType":"ElementaryTypeName","src":"24965:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24964:15:61"},"returnParameters":{"id":20536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20537,"src":"25003:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20534,"name":"uint256","nodeType":"ElementaryTypeName","src":"25003:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25002:9:61"},"scope":20704,"src":"24929:83:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20538,"nodeType":"StructuredDocumentation","src":"25016:196:61","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":20545,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveNormalizedVariableDebt","nameLocation":"25224:32:61","nodeType":"FunctionDefinition","parameters":{"id":20541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20540,"mutability":"mutable","name":"asset","nameLocation":"25265:5:61","nodeType":"VariableDeclaration","scope":20545,"src":"25257:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20539,"name":"address","nodeType":"ElementaryTypeName","src":"25257:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25256:15:61"},"returnParameters":{"id":20544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20545,"src":"25295:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20542,"name":"uint256","nodeType":"ElementaryTypeName","src":"25295:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25294:9:61"},"scope":20704,"src":"25215:89:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20546,"nodeType":"StructuredDocumentation","src":"25308:204:61","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":20554,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveData","nameLocation":"25524:14:61","nodeType":"FunctionDefinition","parameters":{"id":20549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20548,"mutability":"mutable","name":"asset","nameLocation":"25547:5:61","nodeType":"VariableDeclaration","scope":20554,"src":"25539:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20547,"name":"address","nodeType":"ElementaryTypeName","src":"25539:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25538:15:61"},"returnParameters":{"id":20553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20554,"src":"25577:28:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_memory_ptr","typeString":"struct DataTypes.ReserveData"},"typeName":{"id":20551,"nodeType":"UserDefinedTypeName","pathNode":{"id":20550,"name":"DataTypes.ReserveData","nameLocations":["25577:9:61","25587:11:61"],"nodeType":"IdentifierPath","referencedDeclaration":19475,"src":"25577:21:61"},"referencedDeclaration":19475,"src":"25577:21:61","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveData_$19475_storage_ptr","typeString":"struct DataTypes.ReserveData"}},"visibility":"internal"}],"src":"25576:30:61"},"scope":20704,"src":"25515:92:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20555,"nodeType":"StructuredDocumentation","src":"25611:537:61","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":20570,"implemented":false,"kind":"function","modifiers":[],"name":"finalizeTransfer","nameLocation":"26160:16:61","nodeType":"FunctionDefinition","parameters":{"id":20568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20557,"mutability":"mutable","name":"asset","nameLocation":"26190:5:61","nodeType":"VariableDeclaration","scope":20570,"src":"26182:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20556,"name":"address","nodeType":"ElementaryTypeName","src":"26182:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20559,"mutability":"mutable","name":"from","nameLocation":"26209:4:61","nodeType":"VariableDeclaration","scope":20570,"src":"26201:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20558,"name":"address","nodeType":"ElementaryTypeName","src":"26201:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20561,"mutability":"mutable","name":"to","nameLocation":"26227:2:61","nodeType":"VariableDeclaration","scope":20570,"src":"26219:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20560,"name":"address","nodeType":"ElementaryTypeName","src":"26219:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20563,"mutability":"mutable","name":"amount","nameLocation":"26243:6:61","nodeType":"VariableDeclaration","scope":20570,"src":"26235:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20562,"name":"uint256","nodeType":"ElementaryTypeName","src":"26235:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20565,"mutability":"mutable","name":"balanceFromBefore","nameLocation":"26263:17:61","nodeType":"VariableDeclaration","scope":20570,"src":"26255:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20564,"name":"uint256","nodeType":"ElementaryTypeName","src":"26255:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20567,"mutability":"mutable","name":"balanceToBefore","nameLocation":"26294:15:61","nodeType":"VariableDeclaration","scope":20570,"src":"26286:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20566,"name":"uint256","nodeType":"ElementaryTypeName","src":"26286:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26176:137:61"},"returnParameters":{"id":20569,"nodeType":"ParameterList","parameters":[],"src":"26322:0:61"},"scope":20704,"src":"26151:172:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20571,"nodeType":"StructuredDocumentation","src":"26327:224:61","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":20577,"implemented":false,"kind":"function","modifiers":[],"name":"getReservesList","nameLocation":"26563:15:61","nodeType":"FunctionDefinition","parameters":{"id":20572,"nodeType":"ParameterList","parameters":[],"src":"26578:2:61"},"returnParameters":{"id":20576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20577,"src":"26604:16:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":20573,"name":"address","nodeType":"ElementaryTypeName","src":"26604:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20574,"nodeType":"ArrayTypeName","src":"26604:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"26603:18:61"},"scope":20704,"src":"26554:68:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20578,"nodeType":"StructuredDocumentation","src":"26626:286:61","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":20585,"implemented":false,"kind":"function","modifiers":[],"name":"getReserveAddressById","nameLocation":"26924:21:61","nodeType":"FunctionDefinition","parameters":{"id":20581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20580,"mutability":"mutable","name":"id","nameLocation":"26953:2:61","nodeType":"VariableDeclaration","scope":20585,"src":"26946:9:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20579,"name":"uint16","nodeType":"ElementaryTypeName","src":"26946:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"26945:11:61"},"returnParameters":{"id":20584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20585,"src":"26980:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20582,"name":"address","nodeType":"ElementaryTypeName","src":"26980:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26979:9:61"},"scope":20704,"src":"26915:74:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20586,"nodeType":"StructuredDocumentation","src":"26993:138:61","text":" @notice Returns the PoolAddressesProvider connected to this contract\n @return The address of the PoolAddressesProvider*"},"functionSelector":"0542975c","id":20592,"implemented":false,"kind":"function","modifiers":[],"name":"ADDRESSES_PROVIDER","nameLocation":"27143:18:61","nodeType":"FunctionDefinition","parameters":{"id":20587,"nodeType":"ParameterList","parameters":[],"src":"27161:2:61"},"returnParameters":{"id":20591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20592,"src":"27187:22:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolAddressesProvider_$20913","typeString":"contract IPoolAddressesProvider"},"typeName":{"id":20589,"nodeType":"UserDefinedTypeName","pathNode":{"id":20588,"name":"IPoolAddressesProvider","nameLocations":["27187:22:61"],"nodeType":"IdentifierPath","referencedDeclaration":20913,"src":"27187:22:61"},"referencedDeclaration":20913,"src":"27187:22:61","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolAddressesProvider_$20913","typeString":"contract IPoolAddressesProvider"}},"visibility":"internal"}],"src":"27186:24:61"},"scope":20704,"src":"27134:77:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20593,"nodeType":"StructuredDocumentation","src":"27215:147:61","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":20598,"implemented":false,"kind":"function","modifiers":[],"name":"updateBridgeProtocolFee","nameLocation":"27374:23:61","nodeType":"FunctionDefinition","parameters":{"id":20596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20595,"mutability":"mutable","name":"bridgeProtocolFee","nameLocation":"27406:17:61","nodeType":"VariableDeclaration","scope":20598,"src":"27398:25:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20594,"name":"uint256","nodeType":"ElementaryTypeName","src":"27398:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27397:27:61"},"returnParameters":{"id":20597,"nodeType":"ParameterList","parameters":[],"src":"27433:0:61"},"scope":20704,"src":"27365:69:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20599,"nodeType":"StructuredDocumentation","src":"27438:650:61","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":20606,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlashloanPremiums","nameLocation":"28100:23:61","nodeType":"FunctionDefinition","parameters":{"id":20604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20601,"mutability":"mutable","name":"flashLoanPremiumTotal","nameLocation":"28137:21:61","nodeType":"VariableDeclaration","scope":20606,"src":"28129:29:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20600,"name":"uint128","nodeType":"ElementaryTypeName","src":"28129:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":20603,"mutability":"mutable","name":"flashLoanPremiumToProtocol","nameLocation":"28172:26:61","nodeType":"VariableDeclaration","scope":20606,"src":"28164:34:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20602,"name":"uint128","nodeType":"ElementaryTypeName","src":"28164:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"28123:79:61"},"returnParameters":{"id":20605,"nodeType":"ParameterList","parameters":[],"src":"28211:0:61"},"scope":20704,"src":"28091:121:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20607,"nodeType":"StructuredDocumentation","src":"28216:331:61","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":20615,"implemented":false,"kind":"function","modifiers":[],"name":"configureEModeCategory","nameLocation":"28559:22:61","nodeType":"FunctionDefinition","parameters":{"id":20613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20609,"mutability":"mutable","name":"id","nameLocation":"28588:2:61","nodeType":"VariableDeclaration","scope":20615,"src":"28582:8:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20608,"name":"uint8","nodeType":"ElementaryTypeName","src":"28582:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":20612,"mutability":"mutable","name":"config","nameLocation":"28623:6:61","nodeType":"VariableDeclaration","scope":20615,"src":"28592:37:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$19493_memory_ptr","typeString":"struct DataTypes.EModeCategory"},"typeName":{"id":20611,"nodeType":"UserDefinedTypeName","pathNode":{"id":20610,"name":"DataTypes.EModeCategory","nameLocations":["28592:9:61","28602:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":19493,"src":"28592:23:61"},"referencedDeclaration":19493,"src":"28592:23:61","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$19493_storage_ptr","typeString":"struct DataTypes.EModeCategory"}},"visibility":"internal"}],"src":"28581:49:61"},"returnParameters":{"id":20614,"nodeType":"ParameterList","parameters":[],"src":"28639:0:61"},"scope":20704,"src":"28550:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20616,"nodeType":"StructuredDocumentation","src":"28644:150:61","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":20624,"implemented":false,"kind":"function","modifiers":[],"name":"getEModeCategoryData","nameLocation":"28806:20:61","nodeType":"FunctionDefinition","parameters":{"id":20619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20618,"mutability":"mutable","name":"id","nameLocation":"28833:2:61","nodeType":"VariableDeclaration","scope":20624,"src":"28827:8:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20617,"name":"uint8","nodeType":"ElementaryTypeName","src":"28827:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"28826:10:61"},"returnParameters":{"id":20623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20622,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20624,"src":"28860:30:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$19493_memory_ptr","typeString":"struct DataTypes.EModeCategory"},"typeName":{"id":20621,"nodeType":"UserDefinedTypeName","pathNode":{"id":20620,"name":"DataTypes.EModeCategory","nameLocations":["28860:9:61","28870:13:61"],"nodeType":"IdentifierPath","referencedDeclaration":19493,"src":"28860:23:61"},"referencedDeclaration":19493,"src":"28860:23:61","typeDescriptions":{"typeIdentifier":"t_struct$_EModeCategory_$19493_storage_ptr","typeString":"struct DataTypes.EModeCategory"}},"visibility":"internal"}],"src":"28859:32:61"},"scope":20704,"src":"28797:95:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20625,"nodeType":"StructuredDocumentation","src":"28896:111:61","text":" @notice Allows a user to use the protocol in eMode\n @param categoryId The id of the category"},"functionSelector":"28530a47","id":20630,"implemented":false,"kind":"function","modifiers":[],"name":"setUserEMode","nameLocation":"29019:12:61","nodeType":"FunctionDefinition","parameters":{"id":20628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20627,"mutability":"mutable","name":"categoryId","nameLocation":"29038:10:61","nodeType":"VariableDeclaration","scope":20630,"src":"29032:16:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":20626,"name":"uint8","nodeType":"ElementaryTypeName","src":"29032:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"29031:18:61"},"returnParameters":{"id":20629,"nodeType":"ParameterList","parameters":[],"src":"29058:0:61"},"scope":20704,"src":"29010:49:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20631,"nodeType":"StructuredDocumentation","src":"29063:125:61","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":20638,"implemented":false,"kind":"function","modifiers":[],"name":"getUserEMode","nameLocation":"29200:12:61","nodeType":"FunctionDefinition","parameters":{"id":20634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20633,"mutability":"mutable","name":"user","nameLocation":"29221:4:61","nodeType":"VariableDeclaration","scope":20638,"src":"29213:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20632,"name":"address","nodeType":"ElementaryTypeName","src":"29213:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29212:14:61"},"returnParameters":{"id":20637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20638,"src":"29250:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20635,"name":"uint256","nodeType":"ElementaryTypeName","src":"29250:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29249:9:61"},"scope":20704,"src":"29191:68:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20639,"nodeType":"StructuredDocumentation","src":"29263:236:61","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":20644,"implemented":false,"kind":"function","modifiers":[],"name":"resetIsolationModeTotalDebt","nameLocation":"29511:27:61","nodeType":"FunctionDefinition","parameters":{"id":20642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20641,"mutability":"mutable","name":"asset","nameLocation":"29547:5:61","nodeType":"VariableDeclaration","scope":20644,"src":"29539:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20640,"name":"address","nodeType":"ElementaryTypeName","src":"29539:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"29538:15:61"},"returnParameters":{"id":20643,"nodeType":"ParameterList","parameters":[],"src":"29562:0:61"},"scope":20704,"src":"29502:61:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20645,"nodeType":"StructuredDocumentation","src":"29567:191:61","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":20650,"implemented":false,"kind":"function","modifiers":[],"name":"MAX_STABLE_RATE_BORROW_SIZE_PERCENT","nameLocation":"29770:35:61","nodeType":"FunctionDefinition","parameters":{"id":20646,"nodeType":"ParameterList","parameters":[],"src":"29805:2:61"},"returnParameters":{"id":20649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20650,"src":"29831:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20647,"name":"uint256","nodeType":"ElementaryTypeName","src":"29831:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29830:9:61"},"scope":20704,"src":"29761:79:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20651,"nodeType":"StructuredDocumentation","src":"29844:100:61","text":" @notice Returns the total fee on flash loans\n @return The total fee on flashloans"},"functionSelector":"074b2e43","id":20656,"implemented":false,"kind":"function","modifiers":[],"name":"FLASHLOAN_PREMIUM_TOTAL","nameLocation":"29956:23:61","nodeType":"FunctionDefinition","parameters":{"id":20652,"nodeType":"ParameterList","parameters":[],"src":"29979:2:61"},"returnParameters":{"id":20655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20656,"src":"30005:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20653,"name":"uint128","nodeType":"ElementaryTypeName","src":"30005:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30004:9:61"},"scope":20704,"src":"29947:67:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20657,"nodeType":"StructuredDocumentation","src":"30018:133:61","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":20662,"implemented":false,"kind":"function","modifiers":[],"name":"BRIDGE_PROTOCOL_FEE","nameLocation":"30163:19:61","nodeType":"FunctionDefinition","parameters":{"id":20658,"nodeType":"ParameterList","parameters":[],"src":"30182:2:61"},"returnParameters":{"id":20661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20662,"src":"30208:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20659,"name":"uint256","nodeType":"ElementaryTypeName","src":"30208:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30207:9:61"},"scope":20704,"src":"30154:63:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20663,"nodeType":"StructuredDocumentation","src":"30221:139:61","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":20668,"implemented":false,"kind":"function","modifiers":[],"name":"FLASHLOAN_PREMIUM_TO_PROTOCOL","nameLocation":"30372:29:61","nodeType":"FunctionDefinition","parameters":{"id":20664,"nodeType":"ParameterList","parameters":[],"src":"30401:2:61"},"returnParameters":{"id":20667,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20666,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20668,"src":"30427:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":20665,"name":"uint128","nodeType":"ElementaryTypeName","src":"30427:7:61","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"30426:9:61"},"scope":20704,"src":"30363:73:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20669,"nodeType":"StructuredDocumentation","src":"30440:151:61","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":20674,"implemented":false,"kind":"function","modifiers":[],"name":"MAX_NUMBER_RESERVES","nameLocation":"30603:19:61","nodeType":"FunctionDefinition","parameters":{"id":20670,"nodeType":"ParameterList","parameters":[],"src":"30622:2:61"},"returnParameters":{"id":20673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20674,"src":"30648:6:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20671,"name":"uint16","nodeType":"ElementaryTypeName","src":"30648:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"30647:8:61"},"scope":20704,"src":"30594:62:61","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20675,"nodeType":"StructuredDocumentation","src":"30660:197:61","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":20681,"implemented":false,"kind":"function","modifiers":[],"name":"mintToTreasury","nameLocation":"30869:14:61","nodeType":"FunctionDefinition","parameters":{"id":20679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20678,"mutability":"mutable","name":"assets","nameLocation":"30903:6:61","nodeType":"VariableDeclaration","scope":20681,"src":"30884:25:61","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":20676,"name":"address","nodeType":"ElementaryTypeName","src":"30884:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":20677,"nodeType":"ArrayTypeName","src":"30884:9:61","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"30883:27:61"},"returnParameters":{"id":20680,"nodeType":"ParameterList","parameters":[],"src":"30919:0:61"},"scope":20704,"src":"30860:60:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20682,"nodeType":"StructuredDocumentation","src":"30924:211:61","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":20691,"implemented":false,"kind":"function","modifiers":[],"name":"rescueTokens","nameLocation":"31147:12:61","nodeType":"FunctionDefinition","parameters":{"id":20689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20684,"mutability":"mutable","name":"token","nameLocation":"31173:5:61","nodeType":"VariableDeclaration","scope":20691,"src":"31165:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20683,"name":"address","nodeType":"ElementaryTypeName","src":"31165:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20686,"mutability":"mutable","name":"to","nameLocation":"31192:2:61","nodeType":"VariableDeclaration","scope":20691,"src":"31184:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20685,"name":"address","nodeType":"ElementaryTypeName","src":"31184:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20688,"mutability":"mutable","name":"amount","nameLocation":"31208:6:61","nodeType":"VariableDeclaration","scope":20691,"src":"31200:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20687,"name":"uint256","nodeType":"ElementaryTypeName","src":"31200:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31159:59:61"},"returnParameters":{"id":20690,"nodeType":"ParameterList","parameters":[],"src":"31227:0:61"},"scope":20704,"src":"31138:90:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20692,"nodeType":"StructuredDocumentation","src":"31232:769:61","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":20703,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"32013:7:61","nodeType":"FunctionDefinition","parameters":{"id":20701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20694,"mutability":"mutable","name":"asset","nameLocation":"32034:5:61","nodeType":"VariableDeclaration","scope":20703,"src":"32026:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20693,"name":"address","nodeType":"ElementaryTypeName","src":"32026:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20696,"mutability":"mutable","name":"amount","nameLocation":"32053:6:61","nodeType":"VariableDeclaration","scope":20703,"src":"32045:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20695,"name":"uint256","nodeType":"ElementaryTypeName","src":"32045:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":20698,"mutability":"mutable","name":"onBehalfOf","nameLocation":"32073:10:61","nodeType":"VariableDeclaration","scope":20703,"src":"32065:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20697,"name":"address","nodeType":"ElementaryTypeName","src":"32065:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20700,"mutability":"mutable","name":"referralCode","nameLocation":"32096:12:61","nodeType":"VariableDeclaration","scope":20703,"src":"32089:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":20699,"name":"uint16","nodeType":"ElementaryTypeName","src":"32089:6:61","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"32020:92:61"},"returnParameters":{"id":20702,"nodeType":"ParameterList","parameters":[],"src":"32121:0:61"},"scope":20704,"src":"32004:118:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":20705,"src":"273:31851:61","usedErrors":[],"usedEvents":[20087,20098,20111,20122,20140,20153,20163,20170,20177,20184,20191,20198,20216,20233,20248,20255]}],"src":"37:32088:61"},"id":61},"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/IPoolAddressesProvider.sol","exportedSymbols":{"IPoolAddressesProvider":[20913]},"id":20914,"license":"AGPL-3.0","nodeType":"SourceUnit","nodes":[{"id":20706,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:62"},{"abstract":false,"baseContracts":[],"canonicalName":"IPoolAddressesProvider","contractDependencies":[],"contractKind":"interface","documentation":{"id":20707,"nodeType":"StructuredDocumentation","src":"62:127:62","text":" @title IPoolAddressesProvider\n @author Aave\n @notice Defines the basic interface for a Pool Addresses Provider.*"},"fullyImplemented":false,"id":20913,"linearizedBaseContracts":[20913],"name":"IPoolAddressesProvider","nameLocation":"200:22:62","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":20708,"nodeType":"StructuredDocumentation","src":"227:164:62","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":20714,"name":"MarketIdSet","nameLocation":"400:11:62","nodeType":"EventDefinition","parameters":{"id":20713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20710,"indexed":true,"mutability":"mutable","name":"oldMarketId","nameLocation":"427:11:62","nodeType":"VariableDeclaration","scope":20714,"src":"412:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20709,"name":"string","nodeType":"ElementaryTypeName","src":"412:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":20712,"indexed":true,"mutability":"mutable","name":"newMarketId","nameLocation":"455:11:62","nodeType":"VariableDeclaration","scope":20714,"src":"440:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20711,"name":"string","nodeType":"ElementaryTypeName","src":"440:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"411:56:62"},"src":"394:74:62"},{"anonymous":false,"documentation":{"id":20715,"nodeType":"StructuredDocumentation","src":"472:155:62","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":20721,"name":"PoolUpdated","nameLocation":"636:11:62","nodeType":"EventDefinition","parameters":{"id":20720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20717,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"664:10:62","nodeType":"VariableDeclaration","scope":20721,"src":"648:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20716,"name":"address","nodeType":"ElementaryTypeName","src":"648:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20719,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"692:10:62","nodeType":"VariableDeclaration","scope":20721,"src":"676:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20718,"name":"address","nodeType":"ElementaryTypeName","src":"676:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"647:56:62"},"src":"630:74:62"},{"anonymous":false,"documentation":{"id":20722,"nodeType":"StructuredDocumentation","src":"708:192:62","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":20728,"name":"PoolConfiguratorUpdated","nameLocation":"909:23:62","nodeType":"EventDefinition","parameters":{"id":20727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20724,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"949:10:62","nodeType":"VariableDeclaration","scope":20728,"src":"933:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20723,"name":"address","nodeType":"ElementaryTypeName","src":"933:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20726,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"977:10:62","nodeType":"VariableDeclaration","scope":20728,"src":"961:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20725,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"932:56:62"},"src":"903:86:62"},{"anonymous":false,"documentation":{"id":20729,"nodeType":"StructuredDocumentation","src":"993:177:62","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":20735,"name":"PriceOracleUpdated","nameLocation":"1179:18:62","nodeType":"EventDefinition","parameters":{"id":20734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20731,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1214:10:62","nodeType":"VariableDeclaration","scope":20735,"src":"1198:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20730,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20733,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1242:10:62","nodeType":"VariableDeclaration","scope":20735,"src":"1226:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20732,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1197:56:62"},"src":"1173:81:62"},{"anonymous":false,"documentation":{"id":20736,"nodeType":"StructuredDocumentation","src":"1258:174:62","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":20742,"name":"ACLManagerUpdated","nameLocation":"1441:17:62","nodeType":"EventDefinition","parameters":{"id":20741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20738,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1475:10:62","nodeType":"VariableDeclaration","scope":20742,"src":"1459:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20737,"name":"address","nodeType":"ElementaryTypeName","src":"1459:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20740,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1503:10:62","nodeType":"VariableDeclaration","scope":20742,"src":"1487:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20739,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1458:56:62"},"src":"1435:80:62"},{"anonymous":false,"documentation":{"id":20743,"nodeType":"StructuredDocumentation","src":"1519:168:62","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":20749,"name":"ACLAdminUpdated","nameLocation":"1696:15:62","nodeType":"EventDefinition","parameters":{"id":20748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20745,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"1728:10:62","nodeType":"VariableDeclaration","scope":20749,"src":"1712:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20744,"name":"address","nodeType":"ElementaryTypeName","src":"1712:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20747,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"1756:10:62","nodeType":"VariableDeclaration","scope":20749,"src":"1740:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20746,"name":"address","nodeType":"ElementaryTypeName","src":"1740:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1711:56:62"},"src":"1690:78:62"},{"anonymous":false,"documentation":{"id":20750,"nodeType":"StructuredDocumentation","src":"1772:202:62","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":20756,"name":"PriceOracleSentinelUpdated","nameLocation":"1983:26:62","nodeType":"EventDefinition","parameters":{"id":20755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20752,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"2026:10:62","nodeType":"VariableDeclaration","scope":20756,"src":"2010:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20751,"name":"address","nodeType":"ElementaryTypeName","src":"2010:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20754,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"2054:10:62","nodeType":"VariableDeclaration","scope":20756,"src":"2038:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20753,"name":"address","nodeType":"ElementaryTypeName","src":"2038:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2009:56:62"},"src":"1977:89:62"},{"anonymous":false,"documentation":{"id":20757,"nodeType":"StructuredDocumentation","src":"2070:193:62","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":20763,"name":"PoolDataProviderUpdated","nameLocation":"2272:23:62","nodeType":"EventDefinition","parameters":{"id":20762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20759,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"2312:10:62","nodeType":"VariableDeclaration","scope":20763,"src":"2296:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20758,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20761,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"2340:10:62","nodeType":"VariableDeclaration","scope":20763,"src":"2324:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20760,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2295:56:62"},"src":"2266:86:62"},{"anonymous":false,"documentation":{"id":20764,"nodeType":"StructuredDocumentation","src":"2356:243:62","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":20772,"name":"ProxyCreated","nameLocation":"2608:12:62","nodeType":"EventDefinition","parameters":{"id":20771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20766,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"2642:2:62","nodeType":"VariableDeclaration","scope":20772,"src":"2626:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2626:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20768,"indexed":true,"mutability":"mutable","name":"proxyAddress","nameLocation":"2666:12:62","nodeType":"VariableDeclaration","scope":20772,"src":"2650:28:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20767,"name":"address","nodeType":"ElementaryTypeName","src":"2650:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20770,"indexed":true,"mutability":"mutable","name":"implementationAddress","nameLocation":"2700:21:62","nodeType":"VariableDeclaration","scope":20772,"src":"2684:37:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20769,"name":"address","nodeType":"ElementaryTypeName","src":"2684:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2620:105:62"},"src":"2602:124:62"},{"anonymous":false,"documentation":{"id":20773,"nodeType":"StructuredDocumentation","src":"2730:238:62","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":20781,"name":"AddressSet","nameLocation":"2977:10:62","nodeType":"EventDefinition","parameters":{"id":20780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20775,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3004:2:62","nodeType":"VariableDeclaration","scope":20781,"src":"2988:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20774,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2988:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20777,"indexed":true,"mutability":"mutable","name":"oldAddress","nameLocation":"3024:10:62","nodeType":"VariableDeclaration","scope":20781,"src":"3008:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20776,"name":"address","nodeType":"ElementaryTypeName","src":"3008:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20779,"indexed":true,"mutability":"mutable","name":"newAddress","nameLocation":"3052:10:62","nodeType":"VariableDeclaration","scope":20781,"src":"3036:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20778,"name":"address","nodeType":"ElementaryTypeName","src":"3036:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2987:76:62"},"src":"2971:93:62"},{"anonymous":false,"documentation":{"id":20782,"nodeType":"StructuredDocumentation","src":"3068:367:62","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":20792,"name":"AddressSetAsProxy","nameLocation":"3444:17:62","nodeType":"EventDefinition","parameters":{"id":20791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20784,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"3483:2:62","nodeType":"VariableDeclaration","scope":20792,"src":"3467:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20783,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3467:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20786,"indexed":true,"mutability":"mutable","name":"proxyAddress","nameLocation":"3507:12:62","nodeType":"VariableDeclaration","scope":20792,"src":"3491:28:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20785,"name":"address","nodeType":"ElementaryTypeName","src":"3491:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20788,"indexed":false,"mutability":"mutable","name":"oldImplementationAddress","nameLocation":"3533:24:62","nodeType":"VariableDeclaration","scope":20792,"src":"3525:32:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20787,"name":"address","nodeType":"ElementaryTypeName","src":"3525:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":20790,"indexed":true,"mutability":"mutable","name":"newImplementationAddress","nameLocation":"3579:24:62","nodeType":"VariableDeclaration","scope":20792,"src":"3563:40:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20789,"name":"address","nodeType":"ElementaryTypeName","src":"3563:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3461:146:62"},"src":"3438:170:62"},{"documentation":{"id":20793,"nodeType":"StructuredDocumentation","src":"3612:118:62","text":" @notice Returns the id of the Aave market to which this contract points to.\n @return The market id*"},"functionSelector":"568ef470","id":20798,"implemented":false,"kind":"function","modifiers":[],"name":"getMarketId","nameLocation":"3742:11:62","nodeType":"FunctionDefinition","parameters":{"id":20794,"nodeType":"ParameterList","parameters":[],"src":"3753:2:62"},"returnParameters":{"id":20797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20798,"src":"3779:13:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":20795,"name":"string","nodeType":"ElementaryTypeName","src":"3779:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3778:15:62"},"scope":20913,"src":"3733:61:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20799,"nodeType":"StructuredDocumentation","src":"3798:252:62","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":20804,"implemented":false,"kind":"function","modifiers":[],"name":"setMarketId","nameLocation":"4062:11:62","nodeType":"FunctionDefinition","parameters":{"id":20802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20801,"mutability":"mutable","name":"newMarketId","nameLocation":"4090:11:62","nodeType":"VariableDeclaration","scope":20804,"src":"4074:27:62","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":20800,"name":"string","nodeType":"ElementaryTypeName","src":"4074:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4073:29:62"},"returnParameters":{"id":20803,"nodeType":"ParameterList","parameters":[],"src":"4111:0:62"},"scope":20913,"src":"4053:59:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20805,"nodeType":"StructuredDocumentation","src":"4116:306:62","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":20812,"implemented":false,"kind":"function","modifiers":[],"name":"getAddress","nameLocation":"4434:10:62","nodeType":"FunctionDefinition","parameters":{"id":20808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20807,"mutability":"mutable","name":"id","nameLocation":"4453:2:62","nodeType":"VariableDeclaration","scope":20812,"src":"4445:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20806,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4445:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4444:12:62"},"returnParameters":{"id":20811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20812,"src":"4480:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20809,"name":"address","nodeType":"ElementaryTypeName","src":"4480:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4479:9:62"},"scope":20913,"src":"4425:64:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20813,"nodeType":"StructuredDocumentation","src":"4493:485:62","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":20820,"implemented":false,"kind":"function","modifiers":[],"name":"setAddressAsProxy","nameLocation":"4990:17:62","nodeType":"FunctionDefinition","parameters":{"id":20818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20815,"mutability":"mutable","name":"id","nameLocation":"5016:2:62","nodeType":"VariableDeclaration","scope":20820,"src":"5008:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20814,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5008:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20817,"mutability":"mutable","name":"newImplementationAddress","nameLocation":"5028:24:62","nodeType":"VariableDeclaration","scope":20820,"src":"5020:32:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20816,"name":"address","nodeType":"ElementaryTypeName","src":"5020:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5007:46:62"},"returnParameters":{"id":20819,"nodeType":"ParameterList","parameters":[],"src":"5062:0:62"},"scope":20913,"src":"4981:82:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20821,"nodeType":"StructuredDocumentation","src":"5067:244:62","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":20828,"implemented":false,"kind":"function","modifiers":[],"name":"setAddress","nameLocation":"5323:10:62","nodeType":"FunctionDefinition","parameters":{"id":20826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20823,"mutability":"mutable","name":"id","nameLocation":"5342:2:62","nodeType":"VariableDeclaration","scope":20828,"src":"5334:10:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":20822,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5334:7:62","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":20825,"mutability":"mutable","name":"newAddress","nameLocation":"5354:10:62","nodeType":"VariableDeclaration","scope":20828,"src":"5346:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20824,"name":"address","nodeType":"ElementaryTypeName","src":"5346:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5333:32:62"},"returnParameters":{"id":20827,"nodeType":"ParameterList","parameters":[],"src":"5374:0:62"},"scope":20913,"src":"5314:61:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20829,"nodeType":"StructuredDocumentation","src":"5379:98:62","text":" @notice Returns the address of the Pool proxy.\n @return The Pool proxy address*"},"functionSelector":"026b1d5f","id":20834,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nameLocation":"5489:7:62","nodeType":"FunctionDefinition","parameters":{"id":20830,"nodeType":"ParameterList","parameters":[],"src":"5496:2:62"},"returnParameters":{"id":20833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20834,"src":"5522:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20831,"name":"address","nodeType":"ElementaryTypeName","src":"5522:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5521:9:62"},"scope":20913,"src":"5480:51:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20835,"nodeType":"StructuredDocumentation","src":"5535:225:62","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":20840,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolImpl","nameLocation":"5772:11:62","nodeType":"FunctionDefinition","parameters":{"id":20838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20837,"mutability":"mutable","name":"newPoolImpl","nameLocation":"5792:11:62","nodeType":"VariableDeclaration","scope":20840,"src":"5784:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20836,"name":"address","nodeType":"ElementaryTypeName","src":"5784:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5783:21:62"},"returnParameters":{"id":20839,"nodeType":"ParameterList","parameters":[],"src":"5813:0:62"},"scope":20913,"src":"5763:51:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20841,"nodeType":"StructuredDocumentation","src":"5818:122:62","text":" @notice Returns the address of the PoolConfigurator proxy.\n @return The PoolConfigurator proxy address*"},"functionSelector":"631adfca","id":20846,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolConfigurator","nameLocation":"5952:19:62","nodeType":"FunctionDefinition","parameters":{"id":20842,"nodeType":"ParameterList","parameters":[],"src":"5971:2:62"},"returnParameters":{"id":20845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20846,"src":"5997:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20843,"name":"address","nodeType":"ElementaryTypeName","src":"5997:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5996:9:62"},"scope":20913,"src":"5943:63:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20847,"nodeType":"StructuredDocumentation","src":"6010:273:62","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":20852,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolConfiguratorImpl","nameLocation":"6295:23:62","nodeType":"FunctionDefinition","parameters":{"id":20850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20849,"mutability":"mutable","name":"newPoolConfiguratorImpl","nameLocation":"6327:23:62","nodeType":"VariableDeclaration","scope":20852,"src":"6319:31:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20848,"name":"address","nodeType":"ElementaryTypeName","src":"6319:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6318:33:62"},"returnParameters":{"id":20851,"nodeType":"ParameterList","parameters":[],"src":"6360:0:62"},"scope":20913,"src":"6286:75:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20853,"nodeType":"StructuredDocumentation","src":"6365:107:62","text":" @notice Returns the address of the price oracle.\n @return The address of the PriceOracle"},"functionSelector":"fca513a8","id":20858,"implemented":false,"kind":"function","modifiers":[],"name":"getPriceOracle","nameLocation":"6484:14:62","nodeType":"FunctionDefinition","parameters":{"id":20854,"nodeType":"ParameterList","parameters":[],"src":"6498:2:62"},"returnParameters":{"id":20857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20858,"src":"6524:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20855,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6523:9:62"},"scope":20913,"src":"6475:58:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20859,"nodeType":"StructuredDocumentation","src":"6537:125:62","text":" @notice Updates the address of the price oracle.\n @param newPriceOracle The address of the new PriceOracle"},"functionSelector":"530e784f","id":20864,"implemented":false,"kind":"function","modifiers":[],"name":"setPriceOracle","nameLocation":"6674:14:62","nodeType":"FunctionDefinition","parameters":{"id":20862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20861,"mutability":"mutable","name":"newPriceOracle","nameLocation":"6697:14:62","nodeType":"VariableDeclaration","scope":20864,"src":"6689:22:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20860,"name":"address","nodeType":"ElementaryTypeName","src":"6689:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6688:24:62"},"returnParameters":{"id":20863,"nodeType":"ParameterList","parameters":[],"src":"6721:0:62"},"scope":20913,"src":"6665:57:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20865,"nodeType":"StructuredDocumentation","src":"6726:105:62","text":" @notice Returns the address of the ACL manager.\n @return The address of the ACLManager"},"functionSelector":"707cd716","id":20870,"implemented":false,"kind":"function","modifiers":[],"name":"getACLManager","nameLocation":"6843:13:62","nodeType":"FunctionDefinition","parameters":{"id":20866,"nodeType":"ParameterList","parameters":[],"src":"6856:2:62"},"returnParameters":{"id":20869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20870,"src":"6882:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20867,"name":"address","nodeType":"ElementaryTypeName","src":"6882:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6881:9:62"},"scope":20913,"src":"6834:57:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20871,"nodeType":"StructuredDocumentation","src":"6895:123:62","text":" @notice Updates the address of the ACL manager.\n @param newAclManager The address of the new ACLManager*"},"functionSelector":"ed301ca9","id":20876,"implemented":false,"kind":"function","modifiers":[],"name":"setACLManager","nameLocation":"7030:13:62","nodeType":"FunctionDefinition","parameters":{"id":20874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20873,"mutability":"mutable","name":"newAclManager","nameLocation":"7052:13:62","nodeType":"VariableDeclaration","scope":20876,"src":"7044:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20872,"name":"address","nodeType":"ElementaryTypeName","src":"7044:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7043:23:62"},"returnParameters":{"id":20875,"nodeType":"ParameterList","parameters":[],"src":"7075:0:62"},"scope":20913,"src":"7021:55:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20877,"nodeType":"StructuredDocumentation","src":"7080:102:62","text":" @notice Returns the address of the ACL admin.\n @return The address of the ACL admin"},"functionSelector":"0e67178c","id":20882,"implemented":false,"kind":"function","modifiers":[],"name":"getACLAdmin","nameLocation":"7194:11:62","nodeType":"FunctionDefinition","parameters":{"id":20878,"nodeType":"ParameterList","parameters":[],"src":"7205:2:62"},"returnParameters":{"id":20881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20882,"src":"7231:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20879,"name":"address","nodeType":"ElementaryTypeName","src":"7231:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7230:9:62"},"scope":20913,"src":"7185:55:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20883,"nodeType":"StructuredDocumentation","src":"7244:117:62","text":" @notice Updates the address of the ACL admin.\n @param newAclAdmin The address of the new ACL admin"},"functionSelector":"76d84ffc","id":20888,"implemented":false,"kind":"function","modifiers":[],"name":"setACLAdmin","nameLocation":"7373:11:62","nodeType":"FunctionDefinition","parameters":{"id":20886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20885,"mutability":"mutable","name":"newAclAdmin","nameLocation":"7393:11:62","nodeType":"VariableDeclaration","scope":20888,"src":"7385:19:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20884,"name":"address","nodeType":"ElementaryTypeName","src":"7385:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7384:21:62"},"returnParameters":{"id":20887,"nodeType":"ParameterList","parameters":[],"src":"7414:0:62"},"scope":20913,"src":"7364:51:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20889,"nodeType":"StructuredDocumentation","src":"7419:124:62","text":" @notice Returns the address of the price oracle sentinel.\n @return The address of the PriceOracleSentinel"},"functionSelector":"5eb88d3d","id":20894,"implemented":false,"kind":"function","modifiers":[],"name":"getPriceOracleSentinel","nameLocation":"7555:22:62","nodeType":"FunctionDefinition","parameters":{"id":20890,"nodeType":"ParameterList","parameters":[],"src":"7577:2:62"},"returnParameters":{"id":20893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20892,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20894,"src":"7603:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20891,"name":"address","nodeType":"ElementaryTypeName","src":"7603:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7602:9:62"},"scope":20913,"src":"7546:66:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20895,"nodeType":"StructuredDocumentation","src":"7616:151:62","text":" @notice Updates the address of the price oracle sentinel.\n @param newPriceOracleSentinel The address of the new PriceOracleSentinel*"},"functionSelector":"74944cec","id":20900,"implemented":false,"kind":"function","modifiers":[],"name":"setPriceOracleSentinel","nameLocation":"7779:22:62","nodeType":"FunctionDefinition","parameters":{"id":20898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20897,"mutability":"mutable","name":"newPriceOracleSentinel","nameLocation":"7810:22:62","nodeType":"VariableDeclaration","scope":20900,"src":"7802:30:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20896,"name":"address","nodeType":"ElementaryTypeName","src":"7802:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7801:32:62"},"returnParameters":{"id":20899,"nodeType":"ParameterList","parameters":[],"src":"7842:0:62"},"scope":20913,"src":"7770:73:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":20901,"nodeType":"StructuredDocumentation","src":"7847:109:62","text":" @notice Returns the address of the data provider.\n @return The address of the DataProvider"},"functionSelector":"e860accb","id":20906,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolDataProvider","nameLocation":"7968:19:62","nodeType":"FunctionDefinition","parameters":{"id":20902,"nodeType":"ParameterList","parameters":[],"src":"7987:2:62"},"returnParameters":{"id":20905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":20906,"src":"8013:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20903,"name":"address","nodeType":"ElementaryTypeName","src":"8013:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8012:9:62"},"scope":20913,"src":"7959:63:62","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":20907,"nodeType":"StructuredDocumentation","src":"8026:129:62","text":" @notice Updates the address of the data provider.\n @param newDataProvider The address of the new DataProvider*"},"functionSelector":"e44e9ed1","id":20912,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolDataProvider","nameLocation":"8167:19:62","nodeType":"FunctionDefinition","parameters":{"id":20910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20909,"mutability":"mutable","name":"newDataProvider","nameLocation":"8195:15:62","nodeType":"VariableDeclaration","scope":20912,"src":"8187:23:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20908,"name":"address","nodeType":"ElementaryTypeName","src":"8187:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8186:25:62"},"returnParameters":{"id":20911,"nodeType":"ParameterList","parameters":[],"src":"8220:0:62"},"scope":20913,"src":"8158:63:62","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":20914,"src":"190:8033:62","usedErrors":[],"usedEvents":[20714,20721,20728,20735,20742,20749,20756,20763,20772,20781,20792]}],"src":"37:8187:62"},"id":62},"contracts/dependencies/aave-v3/ReserveConfiguration.sol":{"ast":{"absolutePath":"contracts/dependencies/aave-v3/ReserveConfiguration.sol","exportedSymbols":{"DataTypes":[19793],"Errors":[20067],"ReserveConfiguration":[22197]},"id":22198,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":20915,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"37:23:63"},{"absolutePath":"contracts/dependencies/aave-v3/Errors.sol","file":"./Errors.sol","id":20917,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22198,"sourceUnit":20068,"src":"62:36:63","symbolAliases":[{"foreign":{"id":20916,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"70:6:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/dependencies/aave-v3/DataTypes.sol","file":"./DataTypes.sol","id":20919,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22198,"sourceUnit":19794,"src":"99:42:63","symbolAliases":[{"foreign":{"id":20918,"name":"DataTypes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19793,"src":"107:9:63","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ReserveConfiguration","contractDependencies":[],"contractKind":"library","documentation":{"id":20920,"nodeType":"StructuredDocumentation","src":"143:137:63","text":" @title ReserveConfiguration library\n @author Aave\n @notice Implements the bitmap logic to handle the reserve configuration"},"fullyImplemented":true,"id":22197,"linearizedBaseContracts":[22197],"name":"ReserveConfiguration","nameLocation":"289:20:63","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":20923,"mutability":"constant","name":"LTV_MASK","nameLocation":"340:8:63","nodeType":"VariableDeclaration","scope":22197,"src":"314:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20921,"name":"uint256","nodeType":"ElementaryTypeName","src":"314:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464630303030","id":20922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"373:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457584007913129574400_by_1","typeString":"int_const 1157...(70 digits omitted)...4400"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000"},"visibility":"internal"},{"constant":true,"id":20926,"mutability":"constant","name":"LIQUIDATION_THRESHOLD_MASK","nameLocation":"488:26:63","nodeType":"VariableDeclaration","scope":22197,"src":"462:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20924,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646","id":20925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"521:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457584007908834738175_by_1","typeString":"int_const 1157...(70 digits omitted)...8175"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF"},"visibility":"internal"},{"constant":true,"id":20929,"mutability":"constant","name":"LIQUIDATION_BONUS_MASK","nameLocation":"636:22:63","nodeType":"VariableDeclaration","scope":22197,"src":"610:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20927,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646303030304646464646464646","id":20928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"669:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457583726442447896575_by_1","typeString":"int_const 1157...(70 digits omitted)...6575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20932,"mutability":"constant","name":"DECIMALS_MASK","nameLocation":"784:13:63","nodeType":"VariableDeclaration","scope":22197,"src":"758:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20930,"name":"uint256","nodeType":"ElementaryTypeName","src":"758:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030464646464646464646464646","id":20931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"817:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457512231794068422655_by_1","typeString":"int_const 1157...(70 digits omitted)...2655"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20935,"mutability":"constant","name":"ACTIVE_MASK","nameLocation":"932:11:63","nodeType":"VariableDeclaration","scope":22197,"src":"906:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20933,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646454646464646464646464646464646","id":20934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"965:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457511950319091711999_by_1","typeString":"int_const 1157...(70 digits omitted)...1999"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20938,"mutability":"constant","name":"FROZEN_MASK","nameLocation":"1080:11:63","nodeType":"VariableDeclaration","scope":22197,"src":"1054:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20936,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646444646464646464646464646464646","id":20937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1113:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457439892725053784063_by_1","typeString":"int_const 1157...(70 digits omitted)...4063"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20941,"mutability":"constant","name":"BORROWING_MASK","nameLocation":"1228:14:63","nodeType":"VariableDeclaration","scope":22197,"src":"1202:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646424646464646464646464646464646","id":20940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1261:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457295777536977928191_by_1","typeString":"int_const 1157...(70 digits omitted)...8191"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20944,"mutability":"constant","name":"STABLE_BORROWING_MASK","nameLocation":"1376:21:63","nodeType":"VariableDeclaration","scope":22197,"src":"1350:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20942,"name":"uint256","nodeType":"ElementaryTypeName","src":"1350:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646374646464646464646464646464646","id":20943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1409:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457007547160826216447_by_1","typeString":"int_const 1157...(70 digits omitted)...6447"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20947,"mutability":"constant","name":"PAUSED_MASK","nameLocation":"1524:11:63","nodeType":"VariableDeclaration","scope":22197,"src":"1498:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20945,"name":"uint256","nodeType":"ElementaryTypeName","src":"1498:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645464646464646464646464646464646","id":20946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1557:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039456431086408522792959_by_1","typeString":"int_const 1157...(70 digits omitted)...2959"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20950,"mutability":"constant","name":"BORROWABLE_IN_ISOLATION_MASK","nameLocation":"1672:28:63","nodeType":"VariableDeclaration","scope":22197,"src":"1646:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20948,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644464646464646464646464646464646","id":20949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1705:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039455278164903915945983_by_1","typeString":"int_const 1157...(70 digits omitted)...5983"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20953,"mutability":"constant","name":"SILOED_BORROWING_MASK","nameLocation":"1820:21:63","nodeType":"VariableDeclaration","scope":22197,"src":"1794:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1794:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464642464646464646464646464646464646","id":20952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1853:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039452972321894702252031_by_1","typeString":"int_const 1157...(70 digits omitted)...2031"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20956,"mutability":"constant","name":"FLASHLOAN_ENABLED_MASK","nameLocation":"1968:22:63","nodeType":"VariableDeclaration","scope":22197,"src":"1942:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20954,"name":"uint256","nodeType":"ElementaryTypeName","src":"1942:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464637464646464646464646464646464646","id":20955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2001:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039448360635876274864127_by_1","typeString":"int_const 1157...(70 digits omitted)...4127"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20959,"mutability":"constant","name":"RESERVE_FACTOR_MASK","nameLocation":"2116:19:63","nodeType":"VariableDeclaration","scope":22197,"src":"2090:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20957,"name":"uint256","nodeType":"ElementaryTypeName","src":"2090:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646464646464646464646463030303046464646464646464646464646464646","id":20958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2149:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640562830550211137357664485375_by_1","typeString":"int_const 1157...(70 digits omitted)...5375"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20962,"mutability":"constant","name":"BORROW_CAP_MASK","nameLocation":"2264:15:63","nodeType":"VariableDeclaration","scope":22197,"src":"2238:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20960,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646464646464646464646463030303030303030304646464646464646464646464646464646464646","id":20961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269901588890828691141347134601036824575_by_1","typeString":"int_const 1157...(70 digits omitted)...4575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20965,"mutability":"constant","name":"SUPPLY_CAP_MASK","nameLocation":"2412:15:63","nodeType":"VariableDeclaration","scope":22197,"src":"2386:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20963,"name":"uint256","nodeType":"ElementaryTypeName","src":"2386:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646464646463030303030303030304646464646464646464646464646464646464646464646464646464646","id":20964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2445:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008682198862499243902866067452821842515308866174975_by_1","typeString":"int_const 1157...(70 digits omitted)...4975"},"value":"0xFFFFFFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20968,"mutability":"constant","name":"LIQUIDATION_PROTOCOL_FEE_MASK","nameLocation":"2560:29:63","nodeType":"VariableDeclaration","scope":22197,"src":"2534:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2534:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646464646303030304646464646464646464646464646464646464646464646464646464646464646464646464646","id":20967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2593:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570984634549197687329661445021480007966928956539929624575_by_1","typeString":"int_const 1157...(70 digits omitted)...4575"},"value":"0xFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20971,"mutability":"constant","name":"EMODE_CATEGORY_MASK","nameLocation":"2708:19:63","nodeType":"VariableDeclaration","scope":22197,"src":"2682:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20969,"name":"uint256","nodeType":"ElementaryTypeName","src":"2682:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646464646464646464646463030464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":20970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2741:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570889601861022891927484329094684320502060868636724166655_by_1","typeString":"int_const 1157...(70 digits omitted)...6655"},"value":"0xFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20974,"mutability":"constant","name":"UNBACKED_MINT_CAP_MASK","nameLocation":"2856:22:63","nodeType":"VariableDeclaration","scope":22197,"src":"2830:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20972,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846464646464646464646463030303030303030304646464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":20973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2889:66:63","typeDescriptions":{"typeIdentifier":"t_rational_115792089237309613405341795965490592094593402660309829990319025859654871678975_by_1","typeString":"int_const 1157...(70 digits omitted)...8975"},"value":"0xFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"id":20977,"mutability":"constant","name":"DEBT_CEILING_MASK","nameLocation":"3004:17:63","nodeType":"VariableDeclaration","scope":22197,"src":"2978:125:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20975,"name":"uint256","nodeType":"ElementaryTypeName","src":"2978:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307846303030303030303030304646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646","id":20976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3037:66:63","typeDescriptions":{"typeIdentifier":"t_rational_108555083659990515227827083269813533489170840026057959730454019326871953473535_by_1","typeString":"int_const 1085...(70 digits omitted)...3535"},"value":"0xF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"},"visibility":"internal"},{"constant":true,"documentation":{"id":20978,"nodeType":"StructuredDocumentation","src":"3127:83:63","text":"@dev For the LTV, the start bit is 0 (up to 15), hence no bitshifting is needed"},"id":20981,"mutability":"constant","name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nameLocation":"3239:40:63","nodeType":"VariableDeclaration","scope":22197,"src":"3213:71:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20979,"name":"uint256","nodeType":"ElementaryTypeName","src":"3213:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136","id":20980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3282:2:63","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"visibility":"internal"},{"constant":true,"id":20984,"mutability":"constant","name":"LIQUIDATION_BONUS_START_BIT_POSITION","nameLocation":"3314:36:63","nodeType":"VariableDeclaration","scope":22197,"src":"3288:67:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20982,"name":"uint256","nodeType":"ElementaryTypeName","src":"3288:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3332","id":20983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3353:2:63","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"internal"},{"constant":true,"id":20987,"mutability":"constant","name":"RESERVE_DECIMALS_START_BIT_POSITION","nameLocation":"3385:35:63","nodeType":"VariableDeclaration","scope":22197,"src":"3359:66:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20985,"name":"uint256","nodeType":"ElementaryTypeName","src":"3359:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3438","id":20986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3423:2:63","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"visibility":"internal"},{"constant":true,"id":20990,"mutability":"constant","name":"IS_ACTIVE_START_BIT_POSITION","nameLocation":"3455:28:63","nodeType":"VariableDeclaration","scope":22197,"src":"3429:59:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20988,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3536","id":20989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3486:2:63","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},"visibility":"internal"},{"constant":true,"id":20993,"mutability":"constant","name":"IS_FROZEN_START_BIT_POSITION","nameLocation":"3518:28:63","nodeType":"VariableDeclaration","scope":22197,"src":"3492:59:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20991,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3537","id":20992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3549:2:63","typeDescriptions":{"typeIdentifier":"t_rational_57_by_1","typeString":"int_const 57"},"value":"57"},"visibility":"internal"},{"constant":true,"id":20996,"mutability":"constant","name":"BORROWING_ENABLED_START_BIT_POSITION","nameLocation":"3581:36:63","nodeType":"VariableDeclaration","scope":22197,"src":"3555:67:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20994,"name":"uint256","nodeType":"ElementaryTypeName","src":"3555:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3538","id":20995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3620:2:63","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"visibility":"internal"},{"constant":true,"id":20999,"mutability":"constant","name":"STABLE_BORROWING_ENABLED_START_BIT_POSITION","nameLocation":"3652:43:63","nodeType":"VariableDeclaration","scope":22197,"src":"3626:74:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20997,"name":"uint256","nodeType":"ElementaryTypeName","src":"3626:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3539","id":20998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3698:2:63","typeDescriptions":{"typeIdentifier":"t_rational_59_by_1","typeString":"int_const 59"},"value":"59"},"visibility":"internal"},{"constant":true,"id":21002,"mutability":"constant","name":"IS_PAUSED_START_BIT_POSITION","nameLocation":"3730:28:63","nodeType":"VariableDeclaration","scope":22197,"src":"3704:59:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21000,"name":"uint256","nodeType":"ElementaryTypeName","src":"3704:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3630","id":21001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3761:2:63","typeDescriptions":{"typeIdentifier":"t_rational_60_by_1","typeString":"int_const 60"},"value":"60"},"visibility":"internal"},{"constant":true,"id":21005,"mutability":"constant","name":"BORROWABLE_IN_ISOLATION_START_BIT_POSITION","nameLocation":"3793:42:63","nodeType":"VariableDeclaration","scope":22197,"src":"3767:73:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21003,"name":"uint256","nodeType":"ElementaryTypeName","src":"3767:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3631","id":21004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3838:2:63","typeDescriptions":{"typeIdentifier":"t_rational_61_by_1","typeString":"int_const 61"},"value":"61"},"visibility":"internal"},{"constant":true,"id":21008,"mutability":"constant","name":"SILOED_BORROWING_START_BIT_POSITION","nameLocation":"3870:35:63","nodeType":"VariableDeclaration","scope":22197,"src":"3844:66:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21006,"name":"uint256","nodeType":"ElementaryTypeName","src":"3844:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3632","id":21007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3908:2:63","typeDescriptions":{"typeIdentifier":"t_rational_62_by_1","typeString":"int_const 62"},"value":"62"},"visibility":"internal"},{"constant":true,"id":21011,"mutability":"constant","name":"FLASHLOAN_ENABLED_START_BIT_POSITION","nameLocation":"3940:36:63","nodeType":"VariableDeclaration","scope":22197,"src":"3914:67:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21009,"name":"uint256","nodeType":"ElementaryTypeName","src":"3914:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3633","id":21010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:2:63","typeDescriptions":{"typeIdentifier":"t_rational_63_by_1","typeString":"int_const 63"},"value":"63"},"visibility":"internal"},{"constant":true,"id":21014,"mutability":"constant","name":"RESERVE_FACTOR_START_BIT_POSITION","nameLocation":"4011:33:63","nodeType":"VariableDeclaration","scope":22197,"src":"3985:64:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3634","id":21013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4047:2:63","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"visibility":"internal"},{"constant":true,"id":21017,"mutability":"constant","name":"BORROW_CAP_START_BIT_POSITION","nameLocation":"4079:29:63","nodeType":"VariableDeclaration","scope":22197,"src":"4053:60:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21015,"name":"uint256","nodeType":"ElementaryTypeName","src":"4053:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830","id":21016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4111:2:63","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},"visibility":"internal"},{"constant":true,"id":21020,"mutability":"constant","name":"SUPPLY_CAP_START_BIT_POSITION","nameLocation":"4143:29:63","nodeType":"VariableDeclaration","scope":22197,"src":"4117:61:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21018,"name":"uint256","nodeType":"ElementaryTypeName","src":"4117:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313136","id":21019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4175:3:63","typeDescriptions":{"typeIdentifier":"t_rational_116_by_1","typeString":"int_const 116"},"value":"116"},"visibility":"internal"},{"constant":true,"id":21023,"mutability":"constant","name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nameLocation":"4208:43:63","nodeType":"VariableDeclaration","scope":22197,"src":"4182:75:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21021,"name":"uint256","nodeType":"ElementaryTypeName","src":"4182:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313532","id":21022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4254:3:63","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},"visibility":"internal"},{"constant":true,"id":21026,"mutability":"constant","name":"EMODE_CATEGORY_START_BIT_POSITION","nameLocation":"4287:33:63","nodeType":"VariableDeclaration","scope":22197,"src":"4261:65:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21024,"name":"uint256","nodeType":"ElementaryTypeName","src":"4261:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313638","id":21025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4323:3:63","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},"visibility":"internal"},{"constant":true,"id":21029,"mutability":"constant","name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nameLocation":"4356:36:63","nodeType":"VariableDeclaration","scope":22197,"src":"4330:68:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21027,"name":"uint256","nodeType":"ElementaryTypeName","src":"4330:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313736","id":21028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4395:3:63","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},"visibility":"internal"},{"constant":true,"id":21032,"mutability":"constant","name":"DEBT_CEILING_START_BIT_POSITION","nameLocation":"4428:31:63","nodeType":"VariableDeclaration","scope":22197,"src":"4402:63:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21030,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323132","id":21031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4462:3:63","typeDescriptions":{"typeIdentifier":"t_rational_212_by_1","typeString":"int_const 212"},"value":"212"},"visibility":"internal"},{"constant":true,"id":21035,"mutability":"constant","name":"MAX_VALID_LTV","nameLocation":"4496:13:63","nodeType":"VariableDeclaration","scope":22197,"src":"4470:47:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21033,"name":"uint256","nodeType":"ElementaryTypeName","src":"4470:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":21034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4512:5:63","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":21038,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_THRESHOLD","nameLocation":"4547:31:63","nodeType":"VariableDeclaration","scope":22197,"src":"4521:65:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21036,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":21037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4581:5:63","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":21041,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_BONUS","nameLocation":"4616:27:63","nodeType":"VariableDeclaration","scope":22197,"src":"4590:61:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21039,"name":"uint256","nodeType":"ElementaryTypeName","src":"4590:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":21040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4646:5:63","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":21044,"mutability":"constant","name":"MAX_VALID_DECIMALS","nameLocation":"4681:18:63","nodeType":"VariableDeclaration","scope":22197,"src":"4655:50:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21042,"name":"uint256","nodeType":"ElementaryTypeName","src":"4655:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323535","id":21043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4702:3:63","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"internal"},{"constant":true,"id":21047,"mutability":"constant","name":"MAX_VALID_RESERVE_FACTOR","nameLocation":"4735:24:63","nodeType":"VariableDeclaration","scope":22197,"src":"4709:58:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21045,"name":"uint256","nodeType":"ElementaryTypeName","src":"4709:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":21046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4762:5:63","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":21050,"mutability":"constant","name":"MAX_VALID_BORROW_CAP","nameLocation":"4797:20:63","nodeType":"VariableDeclaration","scope":22197,"src":"4771:60:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21048,"name":"uint256","nodeType":"ElementaryTypeName","src":"4771:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":21049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4820:11:63","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":21053,"mutability":"constant","name":"MAX_VALID_SUPPLY_CAP","nameLocation":"4861:20:63","nodeType":"VariableDeclaration","scope":22197,"src":"4835:60:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21051,"name":"uint256","nodeType":"ElementaryTypeName","src":"4835:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":21052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4884:11:63","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":21056,"mutability":"constant","name":"MAX_VALID_LIQUIDATION_PROTOCOL_FEE","nameLocation":"4925:34:63","nodeType":"VariableDeclaration","scope":22197,"src":"4899:68:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21054,"name":"uint256","nodeType":"ElementaryTypeName","src":"4899:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3635353335","id":21055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4962:5:63","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"65535"},"visibility":"internal"},{"constant":true,"id":21059,"mutability":"constant","name":"MAX_VALID_EMODE_CATEGORY","nameLocation":"4997:24:63","nodeType":"VariableDeclaration","scope":22197,"src":"4971:56:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21057,"name":"uint256","nodeType":"ElementaryTypeName","src":"4971:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323535","id":21058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5024:3:63","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"internal"},{"constant":true,"id":21062,"mutability":"constant","name":"MAX_VALID_UNBACKED_MINT_CAP","nameLocation":"5057:27:63","nodeType":"VariableDeclaration","scope":22197,"src":"5031:67:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21060,"name":"uint256","nodeType":"ElementaryTypeName","src":"5031:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3638373139343736373335","id":21061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5087:11:63","typeDescriptions":{"typeIdentifier":"t_rational_68719476735_by_1","typeString":"int_const 68719476735"},"value":"68719476735"},"visibility":"internal"},{"constant":true,"id":21065,"mutability":"constant","name":"MAX_VALID_DEBT_CEILING","nameLocation":"5128:22:63","nodeType":"VariableDeclaration","scope":22197,"src":"5102:64:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21063,"name":"uint256","nodeType":"ElementaryTypeName","src":"5102:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303939353131363237373735","id":21064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5153:13:63","typeDescriptions":{"typeIdentifier":"t_rational_1099511627775_by_1","typeString":"int_const 1099511627775"},"value":"1099511627775"},"visibility":"internal"},{"constant":true,"functionSelector":"280d5de9","id":21068,"mutability":"constant","name":"DEBT_CEILING_DECIMALS","nameLocation":"5195:21:63","nodeType":"VariableDeclaration","scope":22197,"src":"5171:49:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21066,"name":"uint256","nodeType":"ElementaryTypeName","src":"5171:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":21067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5219:1:63","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"constant":true,"functionSelector":"31b561ba","id":21071,"mutability":"constant","name":"MAX_RESERVES_COUNT","nameLocation":"5247:18:63","nodeType":"VariableDeclaration","scope":22197,"src":"5224:47:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":21069,"name":"uint16","nodeType":"ElementaryTypeName","src":"5224:6:63","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"313238","id":21070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5268:3:63","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"visibility":"public"},{"body":{"id":21100,"nodeType":"Block","src":"5500:107:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21081,"name":"ltv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21077,"src":"5514:3:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21082,"name":"MAX_VALID_LTV","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21035,"src":"5521:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5514:20:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21084,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"5536:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5543:11:63","memberName":"INVALID_LTV","nodeType":"MemberAccess","referencedDeclaration":19982,"src":"5536:18:63","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":21080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"5506:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5506:49:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21087,"nodeType":"ExpressionStatement","src":"5506:49:63"},{"expression":{"id":21098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21088,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21075,"src":"5562:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5567:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"5562:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21091,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21075,"src":"5575:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5580:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"5575:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21093,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"5587:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5575:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21095,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5574:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":21096,"name":"ltv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21077,"src":"5599:3:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5574:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5562:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21099,"nodeType":"ExpressionStatement","src":"5562:40:63"}]},"documentation":{"id":21072,"nodeType":"StructuredDocumentation","src":"5276:131:63","text":" @notice Sets the Loan to Value of the reserve\n @param self The reserve configuration\n @param ltv The new ltv"},"id":21101,"implemented":true,"kind":"function","modifiers":[],"name":"setLtv","nameLocation":"5419:6:63","nodeType":"FunctionDefinition","parameters":{"id":21078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21075,"mutability":"mutable","name":"self","nameLocation":"5467:4:63","nodeType":"VariableDeclaration","scope":21101,"src":"5426:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21074,"nodeType":"UserDefinedTypeName","pathNode":{"id":21073,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["5426:9:63","5436:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"5426:33:63"},"referencedDeclaration":19478,"src":"5426:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21077,"mutability":"mutable","name":"ltv","nameLocation":"5481:3:63","nodeType":"VariableDeclaration","scope":21101,"src":"5473:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21076,"name":"uint256","nodeType":"ElementaryTypeName","src":"5473:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5425:60:63"},"returnParameters":{"id":21079,"nodeType":"ParameterList","parameters":[],"src":"5500:0:63"},"scope":22197,"src":"5410:197:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21116,"nodeType":"Block","src":"5843:39:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21110,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21105,"src":"5856:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5861:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"5856:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5868:9:63","subExpression":{"id":21112,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"5869:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5856:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21109,"id":21115,"nodeType":"Return","src":"5849:28:63"}]},"documentation":{"id":21102,"nodeType":"StructuredDocumentation","src":"5611:134:63","text":" @notice Gets the Loan to Value of the reserve\n @param self The reserve configuration\n @return The loan to value"},"id":21117,"implemented":true,"kind":"function","modifiers":[],"name":"getLtv","nameLocation":"5757:6:63","nodeType":"FunctionDefinition","parameters":{"id":21106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21105,"mutability":"mutable","name":"self","nameLocation":"5805:4:63","nodeType":"VariableDeclaration","scope":21117,"src":"5764:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21104,"nodeType":"UserDefinedTypeName","pathNode":{"id":21103,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["5764:9:63","5774:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"5764:33:63"},"referencedDeclaration":19478,"src":"5764:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"5763:47:63"},"returnParameters":{"id":21109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21117,"src":"5834:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21107,"name":"uint256","nodeType":"ElementaryTypeName","src":"5834:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5833:9:63"},"scope":22197,"src":"5748:134:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21149,"nodeType":"Block","src":"6177:223:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21127,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21123,"src":"6191:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21128,"name":"MAX_VALID_LIQUIDATION_THRESHOLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21038,"src":"6204:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6191:44:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21130,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"6237:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21131,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6244:21:63","memberName":"INVALID_LIQ_THRESHOLD","nodeType":"MemberAccess","referencedDeclaration":19985,"src":"6237:28:63","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":21126,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6183:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6183:83:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21133,"nodeType":"ExpressionStatement","src":"6183:83:63"},{"expression":{"id":21147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21134,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21121,"src":"6273:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6278:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"6273:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21137,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21121,"src":"6292:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6297:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"6292:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21139,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20926,"src":"6304:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6292:38:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21141,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6291:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21142,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21123,"src":"6341:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21143,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20981,"src":"6354:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6341:53:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21145,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6340:55:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6291:104:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6273:122:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21148,"nodeType":"ExpressionStatement","src":"6273:122:63"}]},"documentation":{"id":21118,"nodeType":"StructuredDocumentation","src":"5886:163:63","text":" @notice Sets the liquidation threshold of the reserve\n @param self The reserve configuration\n @param threshold The new liquidation threshold"},"id":21150,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationThreshold","nameLocation":"6061:23:63","nodeType":"FunctionDefinition","parameters":{"id":21124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21121,"mutability":"mutable","name":"self","nameLocation":"6131:4:63","nodeType":"VariableDeclaration","scope":21150,"src":"6090:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21120,"nodeType":"UserDefinedTypeName","pathNode":{"id":21119,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6090:9:63","6100:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"6090:33:63"},"referencedDeclaration":19478,"src":"6090:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21123,"mutability":"mutable","name":"threshold","nameLocation":"6149:9:63","nodeType":"VariableDeclaration","scope":21150,"src":"6141:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21122,"name":"uint256","nodeType":"ElementaryTypeName","src":"6141:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6084:78:63"},"returnParameters":{"id":21125,"nodeType":"ParameterList","parameters":[],"src":"6177:0:63"},"scope":22197,"src":"6052:348:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21168,"nodeType":"Block","src":"6677:103:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21159,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21154,"src":"6691:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6696:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"6691:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"6703:27:63","subExpression":{"id":21161,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20926,"src":"6704:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6691:39:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21164,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6690:41:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21165,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20981,"src":"6735:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6690:85:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21158,"id":21167,"nodeType":"Return","src":"6683:92:63"}]},"documentation":{"id":21151,"nodeType":"StructuredDocumentation","src":"6404:150:63","text":" @notice Gets the liquidation threshold of the reserve\n @param self The reserve configuration\n @return The liquidation threshold"},"id":21169,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationThreshold","nameLocation":"6566:23:63","nodeType":"FunctionDefinition","parameters":{"id":21155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21154,"mutability":"mutable","name":"self","nameLocation":"6636:4:63","nodeType":"VariableDeclaration","scope":21169,"src":"6595:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21153,"nodeType":"UserDefinedTypeName","pathNode":{"id":21152,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6595:9:63","6605:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"6595:33:63"},"referencedDeclaration":19478,"src":"6595:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"6589:55:63"},"returnParameters":{"id":21158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21169,"src":"6668:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21156,"name":"uint256","nodeType":"ElementaryTypeName","src":"6668:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6667:9:63"},"scope":22197,"src":"6557:223:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21201,"nodeType":"Block","src":"7055:199:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21179,"name":"bonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"7069:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21180,"name":"MAX_VALID_LIQUIDATION_BONUS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21041,"src":"7078:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7069:36:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21182,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"7107:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7114:17:63","memberName":"INVALID_LIQ_BONUS","nodeType":"MemberAccess","referencedDeclaration":19988,"src":"7107:24:63","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":21178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7061:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7061:71:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21185,"nodeType":"ExpressionStatement","src":"7061:71:63"},{"expression":{"id":21199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21186,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"7139:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7144:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"7139:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21189,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21173,"src":"7158:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7163:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"7158:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21191,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20929,"src":"7170:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7158:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7157:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21194,"name":"bonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21175,"src":"7203:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21195,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20984,"src":"7212:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7203:45:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7202:47:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7157:92:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7139:110:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21200,"nodeType":"ExpressionStatement","src":"7139:110:63"}]},"documentation":{"id":21170,"nodeType":"StructuredDocumentation","src":"6784:151:63","text":" @notice Sets the liquidation bonus of the reserve\n @param self The reserve configuration\n @param bonus The new liquidation bonus"},"id":21202,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationBonus","nameLocation":"6947:19:63","nodeType":"FunctionDefinition","parameters":{"id":21176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21173,"mutability":"mutable","name":"self","nameLocation":"7013:4:63","nodeType":"VariableDeclaration","scope":21202,"src":"6972:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21172,"nodeType":"UserDefinedTypeName","pathNode":{"id":21171,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["6972:9:63","6982:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"6972:33:63"},"referencedDeclaration":19478,"src":"6972:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21175,"mutability":"mutable","name":"bonus","nameLocation":"7031:5:63","nodeType":"VariableDeclaration","scope":21202,"src":"7023:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21174,"name":"uint256","nodeType":"ElementaryTypeName","src":"7023:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6966:74:63"},"returnParameters":{"id":21177,"nodeType":"ParameterList","parameters":[],"src":"7055:0:63"},"scope":22197,"src":"6938:316:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21220,"nodeType":"Block","src":"7519:95:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21211,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21206,"src":"7533:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7538:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"7533:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"7545:23:63","subExpression":{"id":21213,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20929,"src":"7546:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7533:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21216,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7532:37:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21217,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20984,"src":"7573:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7532:77:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21210,"id":21219,"nodeType":"Return","src":"7525:84:63"}]},"documentation":{"id":21203,"nodeType":"StructuredDocumentation","src":"7258:142:63","text":" @notice Gets the liquidation bonus of the reserve\n @param self The reserve configuration\n @return The liquidation bonus"},"id":21221,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationBonus","nameLocation":"7412:19:63","nodeType":"FunctionDefinition","parameters":{"id":21207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21206,"mutability":"mutable","name":"self","nameLocation":"7478:4:63","nodeType":"VariableDeclaration","scope":21221,"src":"7437:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21205,"nodeType":"UserDefinedTypeName","pathNode":{"id":21204,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["7437:9:63","7447:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"7437:33:63"},"referencedDeclaration":19478,"src":"7437:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"7431:55:63"},"returnParameters":{"id":21210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21221,"src":"7510:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21208,"name":"uint256","nodeType":"ElementaryTypeName","src":"7510:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7509:9:63"},"scope":22197,"src":"7403:211:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21253,"nodeType":"Block","src":"7889:173:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21231,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21227,"src":"7903:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21232,"name":"MAX_VALID_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21044,"src":"7915:18:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7903:30:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21234,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"7935:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7942:16:63","memberName":"INVALID_DECIMALS","nodeType":"MemberAccess","referencedDeclaration":19991,"src":"7935:23:63","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":21230,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7895:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7895:64:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21237,"nodeType":"ExpressionStatement","src":"7895:64:63"},{"expression":{"id":21251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21238,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21225,"src":"7966:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7971:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"7966:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21241,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21225,"src":"7979:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7984:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"7979:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21243,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"7991:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7979:25:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7978:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21246,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21227,"src":"8009:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21247,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20987,"src":"8021:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8009:47:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21249,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8008:49:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7978:79:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7966:91:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21252,"nodeType":"ExpressionStatement","src":"7966:91:63"}]},"documentation":{"id":21222,"nodeType":"StructuredDocumentation","src":"7618:156:63","text":" @notice Sets the decimals of the underlying asset of the reserve\n @param self The reserve configuration\n @param decimals The decimals"},"id":21254,"implemented":true,"kind":"function","modifiers":[],"name":"setDecimals","nameLocation":"7786:11:63","nodeType":"FunctionDefinition","parameters":{"id":21228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21225,"mutability":"mutable","name":"self","nameLocation":"7844:4:63","nodeType":"VariableDeclaration","scope":21254,"src":"7803:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21224,"nodeType":"UserDefinedTypeName","pathNode":{"id":21223,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["7803:9:63","7813:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"7803:33:63"},"referencedDeclaration":19478,"src":"7803:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21227,"mutability":"mutable","name":"decimals","nameLocation":"7862:8:63","nodeType":"VariableDeclaration","scope":21254,"src":"7854:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21226,"name":"uint256","nodeType":"ElementaryTypeName","src":"7854:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7797:77:63"},"returnParameters":{"id":21229,"nodeType":"ParameterList","parameters":[],"src":"7889:0:63"},"scope":22197,"src":"7777:285:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21272,"nodeType":"Block","src":"8338:85:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21263,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21258,"src":"8352:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8357:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"8352:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"8364:14:63","subExpression":{"id":21265,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"8365:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8352:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8351:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21269,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20987,"src":"8383:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8351:67:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21262,"id":21271,"nodeType":"Return","src":"8344:74:63"}]},"documentation":{"id":21255,"nodeType":"StructuredDocumentation","src":"8066:161:63","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":21273,"implemented":true,"kind":"function","modifiers":[],"name":"getDecimals","nameLocation":"8239:11:63","nodeType":"FunctionDefinition","parameters":{"id":21259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21258,"mutability":"mutable","name":"self","nameLocation":"8297:4:63","nodeType":"VariableDeclaration","scope":21273,"src":"8256:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21257,"nodeType":"UserDefinedTypeName","pathNode":{"id":21256,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8256:9:63","8266:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"8256:33:63"},"referencedDeclaration":19478,"src":"8256:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"8250:55:63"},"returnParameters":{"id":21262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21273,"src":"8329:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21260,"name":"uint256","nodeType":"ElementaryTypeName","src":"8329:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8328:9:63"},"scope":22197,"src":"8230:193:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21303,"nodeType":"Block","src":"8661:120:63","statements":[{"expression":{"id":21301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21282,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21277,"src":"8667:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21284,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8672:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"8667:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21285,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21277,"src":"8686:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21286,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8691:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"8686:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21287,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20935,"src":"8698:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8686:23:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21289,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8685:25:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21292,"name":"active","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21279,"src":"8728:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8741:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8728:14:63","trueExpression":{"hexValue":"31","id":21293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8737:1:63","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":21291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8720:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21290,"name":"uint256","nodeType":"ElementaryTypeName","src":"8720:7:63","typeDescriptions":{}}},"id":21296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8720:23:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21297,"name":"IS_ACTIVE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20990,"src":"8747:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8720:55:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8719:57:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8685:91:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8667:109:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21302,"nodeType":"ExpressionStatement","src":"8667:109:63"}]},"documentation":{"id":21274,"nodeType":"StructuredDocumentation","src":"8427:138:63","text":" @notice Sets the active state of the reserve\n @param self The reserve configuration\n @param active The active state"},"id":21304,"implemented":true,"kind":"function","modifiers":[],"name":"setActive","nameLocation":"8577:9:63","nodeType":"FunctionDefinition","parameters":{"id":21280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21277,"mutability":"mutable","name":"self","nameLocation":"8628:4:63","nodeType":"VariableDeclaration","scope":21304,"src":"8587:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21276,"nodeType":"UserDefinedTypeName","pathNode":{"id":21275,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8587:9:63","8597:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"8587:33:63"},"referencedDeclaration":19478,"src":"8587:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21279,"mutability":"mutable","name":"active","nameLocation":"8639:6:63","nodeType":"VariableDeclaration","scope":21304,"src":"8634:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21278,"name":"bool","nodeType":"ElementaryTypeName","src":"8634:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8586:60:63"},"returnParameters":{"id":21281,"nodeType":"ParameterList","parameters":[],"src":"8661:0:63"},"scope":22197,"src":"8568:213:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21322,"nodeType":"Block","src":"9015:49:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21313,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21308,"src":"9029:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9034:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9029:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"9041:12:63","subExpression":{"id":21315,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20935,"src":"9042:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9029:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21318,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9028:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9058:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9028:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21312,"id":21321,"nodeType":"Return","src":"9021:38:63"}]},"documentation":{"id":21305,"nodeType":"StructuredDocumentation","src":"8785:132:63","text":" @notice Gets the active state of the reserve\n @param self The reserve configuration\n @return The active state"},"id":21323,"implemented":true,"kind":"function","modifiers":[],"name":"getActive","nameLocation":"8929:9:63","nodeType":"FunctionDefinition","parameters":{"id":21309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21308,"mutability":"mutable","name":"self","nameLocation":"8980:4:63","nodeType":"VariableDeclaration","scope":21323,"src":"8939:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21307,"nodeType":"UserDefinedTypeName","pathNode":{"id":21306,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["8939:9:63","8949:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"8939:33:63"},"referencedDeclaration":19478,"src":"8939:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"8938:47:63"},"returnParameters":{"id":21312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21323,"src":"9009:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21310,"name":"bool","nodeType":"ElementaryTypeName","src":"9009:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9008:6:63"},"scope":22197,"src":"8920:144:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21353,"nodeType":"Block","src":"9302:120:63","statements":[{"expression":{"id":21351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21332,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21327,"src":"9308:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21334,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9313:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9308:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21335,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21327,"src":"9327:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9332:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9327:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21337,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"9339:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9327:23:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21339,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9326:25:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21342,"name":"frozen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21329,"src":"9369:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9382:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9369:14:63","trueExpression":{"hexValue":"31","id":21343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9378:1:63","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":21341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9361:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21340,"name":"uint256","nodeType":"ElementaryTypeName","src":"9361:7:63","typeDescriptions":{}}},"id":21346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9361:23:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21347,"name":"IS_FROZEN_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20993,"src":"9388:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9361:55:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21349,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9360:57:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9326:91:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9308:109:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21352,"nodeType":"ExpressionStatement","src":"9308:109:63"}]},"documentation":{"id":21324,"nodeType":"StructuredDocumentation","src":"9068:138:63","text":" @notice Sets the frozen state of the reserve\n @param self The reserve configuration\n @param frozen The frozen state"},"id":21354,"implemented":true,"kind":"function","modifiers":[],"name":"setFrozen","nameLocation":"9218:9:63","nodeType":"FunctionDefinition","parameters":{"id":21330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21327,"mutability":"mutable","name":"self","nameLocation":"9269:4:63","nodeType":"VariableDeclaration","scope":21354,"src":"9228:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21326,"nodeType":"UserDefinedTypeName","pathNode":{"id":21325,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9228:9:63","9238:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"9228:33:63"},"referencedDeclaration":19478,"src":"9228:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21329,"mutability":"mutable","name":"frozen","nameLocation":"9280:6:63","nodeType":"VariableDeclaration","scope":21354,"src":"9275:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21328,"name":"bool","nodeType":"ElementaryTypeName","src":"9275:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9227:60:63"},"returnParameters":{"id":21331,"nodeType":"ParameterList","parameters":[],"src":"9302:0:63"},"scope":22197,"src":"9209:213:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21372,"nodeType":"Block","src":"9656:49:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21363,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21358,"src":"9670:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9675:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9670:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"9682:12:63","subExpression":{"id":21365,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"9683:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9670:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9669:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9699:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9669:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21362,"id":21371,"nodeType":"Return","src":"9662:38:63"}]},"documentation":{"id":21355,"nodeType":"StructuredDocumentation","src":"9426:132:63","text":" @notice Gets the frozen state of the reserve\n @param self The reserve configuration\n @return The frozen state"},"id":21373,"implemented":true,"kind":"function","modifiers":[],"name":"getFrozen","nameLocation":"9570:9:63","nodeType":"FunctionDefinition","parameters":{"id":21359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21358,"mutability":"mutable","name":"self","nameLocation":"9621:4:63","nodeType":"VariableDeclaration","scope":21373,"src":"9580:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21357,"nodeType":"UserDefinedTypeName","pathNode":{"id":21356,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9580:9:63","9590:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"9580:33:63"},"referencedDeclaration":19478,"src":"9580:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"9579:47:63"},"returnParameters":{"id":21362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21373,"src":"9650:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21360,"name":"bool","nodeType":"ElementaryTypeName","src":"9650:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9649:6:63"},"scope":22197,"src":"9561:144:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21403,"nodeType":"Block","src":"9943:120:63","statements":[{"expression":{"id":21401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21382,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21377,"src":"9949:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9954:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9949:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21385,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21377,"src":"9968:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9973:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"9968:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21387,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20947,"src":"9980:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9968:23:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21389,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9967:25:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21392,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21379,"src":"10010:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10023:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10010:14:63","trueExpression":{"hexValue":"31","id":21393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10019:1:63","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":21391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10002:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21390,"name":"uint256","nodeType":"ElementaryTypeName","src":"10002:7:63","typeDescriptions":{}}},"id":21396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10002:23:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21397,"name":"IS_PAUSED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21002,"src":"10029:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10002:55:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21399,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10001:57:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9967:91:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9949:109:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21402,"nodeType":"ExpressionStatement","src":"9949:109:63"}]},"documentation":{"id":21374,"nodeType":"StructuredDocumentation","src":"9709:138:63","text":" @notice Sets the paused state of the reserve\n @param self The reserve configuration\n @param paused The paused state"},"id":21404,"implemented":true,"kind":"function","modifiers":[],"name":"setPaused","nameLocation":"9859:9:63","nodeType":"FunctionDefinition","parameters":{"id":21380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21377,"mutability":"mutable","name":"self","nameLocation":"9910:4:63","nodeType":"VariableDeclaration","scope":21404,"src":"9869:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21376,"nodeType":"UserDefinedTypeName","pathNode":{"id":21375,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["9869:9:63","9879:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"9869:33:63"},"referencedDeclaration":19478,"src":"9869:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21379,"mutability":"mutable","name":"paused","nameLocation":"9921:6:63","nodeType":"VariableDeclaration","scope":21404,"src":"9916:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21378,"name":"bool","nodeType":"ElementaryTypeName","src":"9916:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9868:60:63"},"returnParameters":{"id":21381,"nodeType":"ParameterList","parameters":[],"src":"9943:0:63"},"scope":22197,"src":"9850:213:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21422,"nodeType":"Block","src":"10297:49:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21413,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21408,"src":"10311:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10316:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"10311:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"10323:12:63","subExpression":{"id":21415,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20947,"src":"10324:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10311:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21418,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10310:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10340:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10310:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21412,"id":21421,"nodeType":"Return","src":"10303:38:63"}]},"documentation":{"id":21405,"nodeType":"StructuredDocumentation","src":"10067:132:63","text":" @notice Gets the paused state of the reserve\n @param self The reserve configuration\n @return The paused state"},"id":21423,"implemented":true,"kind":"function","modifiers":[],"name":"getPaused","nameLocation":"10211:9:63","nodeType":"FunctionDefinition","parameters":{"id":21409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21408,"mutability":"mutable","name":"self","nameLocation":"10262:4:63","nodeType":"VariableDeclaration","scope":21423,"src":"10221:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21407,"nodeType":"UserDefinedTypeName","pathNode":{"id":21406,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["10221:9:63","10231:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"10221:33:63"},"referencedDeclaration":19478,"src":"10221:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"10220:47:63"},"returnParameters":{"id":21412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21423,"src":"10291:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21410,"name":"bool","nodeType":"ElementaryTypeName","src":"10291:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10290:6:63"},"scope":22197,"src":"10202:144:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21453,"nodeType":"Block","src":"11010:155:63","statements":[{"expression":{"id":21451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21432,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21427,"src":"11016:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11021:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"11016:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21435,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21427,"src":"11035:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21436,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11040:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"11035:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21437,"name":"BORROWABLE_IN_ISOLATION_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20950,"src":"11047:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11035:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21439,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11034:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21442,"name":"borrowable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21429,"src":"11094:10:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11111:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11094:18:63","trueExpression":{"hexValue":"31","id":21443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:1:63","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":21441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11086:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21440,"name":"uint256","nodeType":"ElementaryTypeName","src":"11086:7:63","typeDescriptions":{}}},"id":21446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11086:27:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21447,"name":"BORROWABLE_IN_ISOLATION_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21005,"src":"11117:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11086:73:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21449,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11085:75:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11034:126:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11016:144:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21452,"nodeType":"ExpressionStatement","src":"11016:144:63"}]},"documentation":{"id":21424,"nodeType":"StructuredDocumentation","src":"10350:533:63","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":21454,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowableInIsolation","nameLocation":"10895:24:63","nodeType":"FunctionDefinition","parameters":{"id":21430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21427,"mutability":"mutable","name":"self","nameLocation":"10966:4:63","nodeType":"VariableDeclaration","scope":21454,"src":"10925:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21426,"nodeType":"UserDefinedTypeName","pathNode":{"id":21425,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["10925:9:63","10935:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"10925:33:63"},"referencedDeclaration":19478,"src":"10925:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21429,"mutability":"mutable","name":"borrowable","nameLocation":"10981:10:63","nodeType":"VariableDeclaration","scope":21454,"src":"10976:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21428,"name":"bool","nodeType":"ElementaryTypeName","src":"10976:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10919:76:63"},"returnParameters":{"id":21431,"nodeType":"ParameterList","parameters":[],"src":"11010:0:63"},"scope":22197,"src":"10886:279:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21472,"nodeType":"Block","src":"11822:66:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21463,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21458,"src":"11836:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11841:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"11836:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"11848:29:63","subExpression":{"id":21465,"name":"BORROWABLE_IN_ISOLATION_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20950,"src":"11849:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11836:41:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11835:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11882:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11835:48:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21462,"id":21471,"nodeType":"Return","src":"11828:55:63"}]},"documentation":{"id":21455,"nodeType":"StructuredDocumentation","src":"11169:532:63","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":21473,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowableInIsolation","nameLocation":"11713:24:63","nodeType":"FunctionDefinition","parameters":{"id":21459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21458,"mutability":"mutable","name":"self","nameLocation":"11784:4:63","nodeType":"VariableDeclaration","scope":21473,"src":"11743:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21457,"nodeType":"UserDefinedTypeName","pathNode":{"id":21456,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["11743:9:63","11753:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"11743:33:63"},"referencedDeclaration":19478,"src":"11743:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"11737:55:63"},"returnParameters":{"id":21462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21473,"src":"11816:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21460,"name":"bool","nodeType":"ElementaryTypeName","src":"11816:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11815:6:63"},"scope":22197,"src":"11704:184:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21503,"nodeType":"Block","src":"12284:137:63","statements":[{"expression":{"id":21501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21482,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21477,"src":"12290:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21484,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12295:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"12290:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21485,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21477,"src":"12309:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12314:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"12309:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21487,"name":"SILOED_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20953,"src":"12321:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12309:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21489,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12308:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21492,"name":"siloed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21479,"src":"12361:6:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12374:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12361:14:63","trueExpression":{"hexValue":"31","id":21493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12370:1:63","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":21491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12353:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21490,"name":"uint256","nodeType":"ElementaryTypeName","src":"12353:7:63","typeDescriptions":{}}},"id":21496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12353:23:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21497,"name":"SILOED_BORROWING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21008,"src":"12380:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12353:62:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12352:64:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12308:108:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12290:126:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21502,"nodeType":"ExpressionStatement","src":"12290:126:63"}]},"documentation":{"id":21474,"nodeType":"StructuredDocumentation","src":"11892:275:63","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":21504,"implemented":true,"kind":"function","modifiers":[],"name":"setSiloedBorrowing","nameLocation":"12179:18:63","nodeType":"FunctionDefinition","parameters":{"id":21480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21477,"mutability":"mutable","name":"self","nameLocation":"12244:4:63","nodeType":"VariableDeclaration","scope":21504,"src":"12203:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21476,"nodeType":"UserDefinedTypeName","pathNode":{"id":21475,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["12203:9:63","12213:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"12203:33:63"},"referencedDeclaration":19478,"src":"12203:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21479,"mutability":"mutable","name":"siloed","nameLocation":"12259:6:63","nodeType":"VariableDeclaration","scope":21504,"src":"12254:11:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21478,"name":"bool","nodeType":"ElementaryTypeName","src":"12254:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12197:72:63"},"returnParameters":{"id":21481,"nodeType":"ParameterList","parameters":[],"src":"12284:0:63"},"scope":22197,"src":"12170:251:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21522,"nodeType":"Block","src":"12807:59:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21513,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21508,"src":"12821:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12826:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"12821:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"12833:22:63","subExpression":{"id":21515,"name":"SILOED_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20953,"src":"12834:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12821:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21518,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12820:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12860:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12820:41:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21512,"id":21521,"nodeType":"Return","src":"12813:48:63"}]},"documentation":{"id":21505,"nodeType":"StructuredDocumentation","src":"12425:267:63","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":21523,"implemented":true,"kind":"function","modifiers":[],"name":"getSiloedBorrowing","nameLocation":"12704:18:63","nodeType":"FunctionDefinition","parameters":{"id":21509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21508,"mutability":"mutable","name":"self","nameLocation":"12769:4:63","nodeType":"VariableDeclaration","scope":21523,"src":"12728:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21507,"nodeType":"UserDefinedTypeName","pathNode":{"id":21506,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["12728:9:63","12738:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"12728:33:63"},"referencedDeclaration":19478,"src":"12728:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"12722:55:63"},"returnParameters":{"id":21512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21511,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21523,"src":"12801:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21510,"name":"bool","nodeType":"ElementaryTypeName","src":"12801:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12800:6:63"},"scope":22197,"src":"12695:171:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21553,"nodeType":"Block","src":"13178:132:63","statements":[{"expression":{"id":21551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21532,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21527,"src":"13184:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13189:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"13184:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21535,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21527,"src":"13203:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21536,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13208:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"13203:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21537,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20941,"src":"13215:14:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13203:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21539,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13202:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21542,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21529,"src":"13248:7:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13262:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13248:15:63","trueExpression":{"hexValue":"31","id":21543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13258:1:63","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":21541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13240:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21540,"name":"uint256","nodeType":"ElementaryTypeName","src":"13240:7:63","typeDescriptions":{}}},"id":21546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13240:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21547,"name":"BORROWING_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20996,"src":"13268:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13240:64:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21549,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13239:66:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13202:103:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13184:121:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21552,"nodeType":"ExpressionStatement","src":"13184:121:63"}]},"documentation":{"id":21524,"nodeType":"StructuredDocumentation","src":"12870:189:63","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":21554,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowingEnabled","nameLocation":"13071:19:63","nodeType":"FunctionDefinition","parameters":{"id":21530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21527,"mutability":"mutable","name":"self","nameLocation":"13137:4:63","nodeType":"VariableDeclaration","scope":21554,"src":"13096:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21526,"nodeType":"UserDefinedTypeName","pathNode":{"id":21525,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13096:9:63","13106:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"13096:33:63"},"referencedDeclaration":19478,"src":"13096:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21529,"mutability":"mutable","name":"enabled","nameLocation":"13152:7:63","nodeType":"VariableDeclaration","scope":21554,"src":"13147:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21528,"name":"bool","nodeType":"ElementaryTypeName","src":"13147:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13090:73:63"},"returnParameters":{"id":21531,"nodeType":"ParameterList","parameters":[],"src":"13178:0:63"},"scope":22197,"src":"13062:248:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21572,"nodeType":"Block","src":"13568:52:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21563,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21558,"src":"13582:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13587:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"13582:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"13594:15:63","subExpression":{"id":21565,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20941,"src":"13595:14:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13582:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21568,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13581:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13614:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13581:34:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21562,"id":21571,"nodeType":"Return","src":"13574:41:63"}]},"documentation":{"id":21555,"nodeType":"StructuredDocumentation","src":"13314:138:63","text":" @notice Gets the borrowing state of the reserve\n @param self The reserve configuration\n @return The borrowing state"},"id":21573,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowingEnabled","nameLocation":"13464:19:63","nodeType":"FunctionDefinition","parameters":{"id":21559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21558,"mutability":"mutable","name":"self","nameLocation":"13530:4:63","nodeType":"VariableDeclaration","scope":21573,"src":"13489:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21557,"nodeType":"UserDefinedTypeName","pathNode":{"id":21556,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13489:9:63","13499:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"13489:33:63"},"referencedDeclaration":19478,"src":"13489:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"13483:55:63"},"returnParameters":{"id":21562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21573,"src":"13562:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21560,"name":"bool","nodeType":"ElementaryTypeName","src":"13562:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13561:6:63"},"scope":22197,"src":"13455:165:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21603,"nodeType":"Block","src":"13966:146:63","statements":[{"expression":{"id":21601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21582,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"13972:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13977:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"13972:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21585,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21577,"src":"13991:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13996:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"13991:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21587,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20944,"src":"14003:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13991:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13990:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":21592,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21579,"src":"14043:7:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":21594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14057:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":21595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14043:15:63","trueExpression":{"hexValue":"31","id":21593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14053:1:63","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":21591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14035:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":21590,"name":"uint256","nodeType":"ElementaryTypeName","src":"14035:7:63","typeDescriptions":{}}},"id":21596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14035:24:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21597,"name":"STABLE_BORROWING_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20999,"src":"14063:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14035:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21599,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14034:73:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13990:117:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13972:135:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21602,"nodeType":"ExpressionStatement","src":"13972:135:63"}]},"documentation":{"id":21574,"nodeType":"StructuredDocumentation","src":"13624:213:63","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":21604,"implemented":true,"kind":"function","modifiers":[],"name":"setStableRateBorrowingEnabled","nameLocation":"13849:29:63","nodeType":"FunctionDefinition","parameters":{"id":21580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21577,"mutability":"mutable","name":"self","nameLocation":"13925:4:63","nodeType":"VariableDeclaration","scope":21604,"src":"13884:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21576,"nodeType":"UserDefinedTypeName","pathNode":{"id":21575,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["13884:9:63","13894:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"13884:33:63"},"referencedDeclaration":19478,"src":"13884:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21579,"mutability":"mutable","name":"enabled","nameLocation":"13940:7:63","nodeType":"VariableDeclaration","scope":21604,"src":"13935:12:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21578,"name":"bool","nodeType":"ElementaryTypeName","src":"13935:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13878:73:63"},"returnParameters":{"id":21581,"nodeType":"ParameterList","parameters":[],"src":"13966:0:63"},"scope":22197,"src":"13840:272:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21622,"nodeType":"Block","src":"14404:59:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21613,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21608,"src":"14418:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14423:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"14418:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"14430:22:63","subExpression":{"id":21615,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20944,"src":"14431:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14418:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21618,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14417:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":21619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14457:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14417:41:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":21612,"id":21621,"nodeType":"Return","src":"14410:48:63"}]},"documentation":{"id":21605,"nodeType":"StructuredDocumentation","src":"14116:162:63","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":21623,"implemented":true,"kind":"function","modifiers":[],"name":"getStableRateBorrowingEnabled","nameLocation":"14290:29:63","nodeType":"FunctionDefinition","parameters":{"id":21609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21608,"mutability":"mutable","name":"self","nameLocation":"14366:4:63","nodeType":"VariableDeclaration","scope":21623,"src":"14325:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21607,"nodeType":"UserDefinedTypeName","pathNode":{"id":21606,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["14325:9:63","14335:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"14325:33:63"},"referencedDeclaration":19478,"src":"14325:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"14319:55:63"},"returnParameters":{"id":21612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21611,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21623,"src":"14398:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21610,"name":"bool","nodeType":"ElementaryTypeName","src":"14398:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14397:6:63"},"scope":22197,"src":"14281:182:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21655,"nodeType":"Block","src":"14741:211:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21633,"name":"reserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21629,"src":"14755:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21634,"name":"MAX_VALID_RESERVE_FACTOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21047,"src":"14772:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14755:41:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21636,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"14798:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14805:22:63","memberName":"INVALID_RESERVE_FACTOR","nodeType":"MemberAccess","referencedDeclaration":19994,"src":"14798:29:63","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":21632,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14747:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14747:81:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21639,"nodeType":"ExpressionStatement","src":"14747:81:63"},{"expression":{"id":21653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21640,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21627,"src":"14835:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14840:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"14835:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21643,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21627,"src":"14854:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14859:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"14854:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21645,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20959,"src":"14866:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14854:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21647,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14853:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21648,"name":"reserveFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21629,"src":"14896:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21649,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21014,"src":"14913:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14896:50:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21651,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14895:52:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14853:94:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14835:112:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21654,"nodeType":"ExpressionStatement","src":"14835:112:63"}]},"documentation":{"id":21624,"nodeType":"StructuredDocumentation","src":"14467:149:63","text":" @notice Sets the reserve factor of the reserve\n @param self The reserve configuration\n @param reserveFactor The reserve factor"},"id":21656,"implemented":true,"kind":"function","modifiers":[],"name":"setReserveFactor","nameLocation":"14628:16:63","nodeType":"FunctionDefinition","parameters":{"id":21630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21627,"mutability":"mutable","name":"self","nameLocation":"14691:4:63","nodeType":"VariableDeclaration","scope":21656,"src":"14650:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21626,"nodeType":"UserDefinedTypeName","pathNode":{"id":21625,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["14650:9:63","14660:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"14650:33:63"},"referencedDeclaration":19478,"src":"14650:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21629,"mutability":"mutable","name":"reserveFactor","nameLocation":"14709:13:63","nodeType":"VariableDeclaration","scope":21656,"src":"14701:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21628,"name":"uint256","nodeType":"ElementaryTypeName","src":"14701:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14644:82:63"},"returnParameters":{"id":21631,"nodeType":"ParameterList","parameters":[],"src":"14741:0:63"},"scope":22197,"src":"14619:333:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21674,"nodeType":"Block","src":"15208:89:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21665,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21660,"src":"15222:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15227:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"15222:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"15234:20:63","subExpression":{"id":21667,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20959,"src":"15235:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15222:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21670,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15221:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21671,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21014,"src":"15259:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15221:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21664,"id":21673,"nodeType":"Return","src":"15214:78:63"}]},"documentation":{"id":21657,"nodeType":"StructuredDocumentation","src":"14956:136:63","text":" @notice Gets the reserve factor of the reserve\n @param self The reserve configuration\n @return The reserve factor"},"id":21675,"implemented":true,"kind":"function","modifiers":[],"name":"getReserveFactor","nameLocation":"15104:16:63","nodeType":"FunctionDefinition","parameters":{"id":21661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21660,"mutability":"mutable","name":"self","nameLocation":"15167:4:63","nodeType":"VariableDeclaration","scope":21675,"src":"15126:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21659,"nodeType":"UserDefinedTypeName","pathNode":{"id":21658,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15126:9:63","15136:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"15126:33:63"},"referencedDeclaration":19478,"src":"15126:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"15120:55:63"},"returnParameters":{"id":21664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21675,"src":"15199:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21662,"name":"uint256","nodeType":"ElementaryTypeName","src":"15199:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15198:9:63"},"scope":22197,"src":"15095:202:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21707,"nodeType":"Block","src":"15555:175:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21685,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"15569:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21686,"name":"MAX_VALID_BORROW_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21050,"src":"15582:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15569:33:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21688,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"15604:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15611:18:63","memberName":"INVALID_BORROW_CAP","nodeType":"MemberAccess","referencedDeclaration":19997,"src":"15604:25:63","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":21684,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15561:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15561:69:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21691,"nodeType":"ExpressionStatement","src":"15561:69:63"},{"expression":{"id":21705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21692,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21679,"src":"15637:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15642:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"15637:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21695,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21679,"src":"15650:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15655:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"15650:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21697,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20962,"src":"15662:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15650:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21699,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15649:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21700,"name":"borrowCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21681,"src":"15682:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21701,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21017,"src":"15695:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15682:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21703,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15681:44:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15649:76:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15637:88:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21706,"nodeType":"ExpressionStatement","src":"15637:88:63"}]},"documentation":{"id":21676,"nodeType":"StructuredDocumentation","src":"15301:137:63","text":" @notice Sets the borrow cap of the reserve\n @param self The reserve configuration\n @param borrowCap The borrow cap"},"id":21708,"implemented":true,"kind":"function","modifiers":[],"name":"setBorrowCap","nameLocation":"15450:12:63","nodeType":"FunctionDefinition","parameters":{"id":21682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21679,"mutability":"mutable","name":"self","nameLocation":"15509:4:63","nodeType":"VariableDeclaration","scope":21708,"src":"15468:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21678,"nodeType":"UserDefinedTypeName","pathNode":{"id":21677,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15468:9:63","15478:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"15468:33:63"},"referencedDeclaration":19478,"src":"15468:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21681,"mutability":"mutable","name":"borrowCap","nameLocation":"15527:9:63","nodeType":"VariableDeclaration","scope":21708,"src":"15519:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21680,"name":"uint256","nodeType":"ElementaryTypeName","src":"15519:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15462:78:63"},"returnParameters":{"id":21683,"nodeType":"ParameterList","parameters":[],"src":"15555:0:63"},"scope":22197,"src":"15441:289:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21726,"nodeType":"Block","src":"15974:81:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21717,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21712,"src":"15988:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21718,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15993:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"15988:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16000:16:63","subExpression":{"id":21719,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20962,"src":"16001:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15988:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15987:30:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21723,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21017,"src":"16021:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15987:63:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21716,"id":21725,"nodeType":"Return","src":"15980:70:63"}]},"documentation":{"id":21709,"nodeType":"StructuredDocumentation","src":"15734:128:63","text":" @notice Gets the borrow cap of the reserve\n @param self The reserve configuration\n @return The borrow cap"},"id":21727,"implemented":true,"kind":"function","modifiers":[],"name":"getBorrowCap","nameLocation":"15874:12:63","nodeType":"FunctionDefinition","parameters":{"id":21713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21712,"mutability":"mutable","name":"self","nameLocation":"15933:4:63","nodeType":"VariableDeclaration","scope":21727,"src":"15892:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21711,"nodeType":"UserDefinedTypeName","pathNode":{"id":21710,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["15892:9:63","15902:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"15892:33:63"},"referencedDeclaration":19478,"src":"15892:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"15886:55:63"},"returnParameters":{"id":21716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21727,"src":"15965:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21714,"name":"uint256","nodeType":"ElementaryTypeName","src":"15965:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15964:9:63"},"scope":22197,"src":"15865:190:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21759,"nodeType":"Block","src":"16313:175:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21737,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21733,"src":"16327:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21738,"name":"MAX_VALID_SUPPLY_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21053,"src":"16340:20:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16327:33:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21740,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"16362:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16369:18:63","memberName":"INVALID_SUPPLY_CAP","nodeType":"MemberAccess","referencedDeclaration":20000,"src":"16362:25:63","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":21736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16319:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16319:69:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21743,"nodeType":"ExpressionStatement","src":"16319:69:63"},{"expression":{"id":21757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21744,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21731,"src":"16395:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21746,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16400:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"16395:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21747,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21731,"src":"16408:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16413:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"16408:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21749,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20965,"src":"16420:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16408:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16407:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21752,"name":"supplyCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21733,"src":"16440:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21753,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21020,"src":"16453:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16440:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21755,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16439:44:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16407:76:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16395:88:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21758,"nodeType":"ExpressionStatement","src":"16395:88:63"}]},"documentation":{"id":21728,"nodeType":"StructuredDocumentation","src":"16059:137:63","text":" @notice Sets the supply cap of the reserve\n @param self The reserve configuration\n @param supplyCap The supply cap"},"id":21760,"implemented":true,"kind":"function","modifiers":[],"name":"setSupplyCap","nameLocation":"16208:12:63","nodeType":"FunctionDefinition","parameters":{"id":21734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21731,"mutability":"mutable","name":"self","nameLocation":"16267:4:63","nodeType":"VariableDeclaration","scope":21760,"src":"16226:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21730,"nodeType":"UserDefinedTypeName","pathNode":{"id":21729,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["16226:9:63","16236:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"16226:33:63"},"referencedDeclaration":19478,"src":"16226:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21733,"mutability":"mutable","name":"supplyCap","nameLocation":"16285:9:63","nodeType":"VariableDeclaration","scope":21760,"src":"16277:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21732,"name":"uint256","nodeType":"ElementaryTypeName","src":"16277:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16220:78:63"},"returnParameters":{"id":21735,"nodeType":"ParameterList","parameters":[],"src":"16313:0:63"},"scope":22197,"src":"16199:289:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21778,"nodeType":"Block","src":"16732:81:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21769,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21764,"src":"16746:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16751:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"16746:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"16758:16:63","subExpression":{"id":21771,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20965,"src":"16759:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16746:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21774,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16745:30:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21775,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21020,"src":"16779:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16745:63:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21768,"id":21777,"nodeType":"Return","src":"16738:70:63"}]},"documentation":{"id":21761,"nodeType":"StructuredDocumentation","src":"16492:128:63","text":" @notice Gets the supply cap of the reserve\n @param self The reserve configuration\n @return The supply cap"},"id":21779,"implemented":true,"kind":"function","modifiers":[],"name":"getSupplyCap","nameLocation":"16632:12:63","nodeType":"FunctionDefinition","parameters":{"id":21765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21764,"mutability":"mutable","name":"self","nameLocation":"16691:4:63","nodeType":"VariableDeclaration","scope":21779,"src":"16650:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21763,"nodeType":"UserDefinedTypeName","pathNode":{"id":21762,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["16650:9:63","16660:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"16650:33:63"},"referencedDeclaration":19478,"src":"16650:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"16644:55:63"},"returnParameters":{"id":21768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21779,"src":"16723:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21766,"name":"uint256","nodeType":"ElementaryTypeName","src":"16723:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16722:9:63"},"scope":22197,"src":"16623:190:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21811,"nodeType":"Block","src":"17112:179:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21789,"name":"ceiling","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21785,"src":"17126:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21790,"name":"MAX_VALID_DEBT_CEILING","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21065,"src":"17137:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17126:33:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21792,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"17161:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21793,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17168:20:63","memberName":"INVALID_DEBT_CEILING","nodeType":"MemberAccess","referencedDeclaration":20012,"src":"17161:27:63","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":21788,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"17118:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17118:71:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21795,"nodeType":"ExpressionStatement","src":"17118:71:63"},{"expression":{"id":21809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21796,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21783,"src":"17196:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"17201:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"17196:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21799,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21783,"src":"17209:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17214:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"17209:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21801,"name":"DEBT_CEILING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20977,"src":"17221:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17209:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21803,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17208:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21804,"name":"ceiling","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21785,"src":"17243:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21805,"name":"DEBT_CEILING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21032,"src":"17254:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17243:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21807,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17242:44:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17208:78:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17196:90:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21810,"nodeType":"ExpressionStatement","src":"17196:90:63"}]},"documentation":{"id":21780,"nodeType":"StructuredDocumentation","src":"16817:178:63","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":21812,"implemented":true,"kind":"function","modifiers":[],"name":"setDebtCeiling","nameLocation":"17007:14:63","nodeType":"FunctionDefinition","parameters":{"id":21786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21783,"mutability":"mutable","name":"self","nameLocation":"17068:4:63","nodeType":"VariableDeclaration","scope":21812,"src":"17027:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21782,"nodeType":"UserDefinedTypeName","pathNode":{"id":21781,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17027:9:63","17037:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"17027:33:63"},"referencedDeclaration":19478,"src":"17027:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21785,"mutability":"mutable","name":"ceiling","nameLocation":"17086:7:63","nodeType":"VariableDeclaration","scope":21812,"src":"17078:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21784,"name":"uint256","nodeType":"ElementaryTypeName","src":"17078:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17021:76:63"},"returnParameters":{"id":21787,"nodeType":"ParameterList","parameters":[],"src":"17112:0:63"},"scope":22197,"src":"16998:293:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21830,"nodeType":"Block","src":"17604:85:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21821,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21816,"src":"17618:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21822,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17623:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"17618:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"17630:18:63","subExpression":{"id":21823,"name":"DEBT_CEILING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20977,"src":"17631:17:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17618:30:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17617:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21827,"name":"DEBT_CEILING_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21032,"src":"17653:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17617:67:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21820,"id":21829,"nodeType":"Return","src":"17610:74:63"}]},"documentation":{"id":21813,"nodeType":"StructuredDocumentation","src":"17295:195:63","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":21831,"implemented":true,"kind":"function","modifiers":[],"name":"getDebtCeiling","nameLocation":"17502:14:63","nodeType":"FunctionDefinition","parameters":{"id":21817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21816,"mutability":"mutable","name":"self","nameLocation":"17563:4:63","nodeType":"VariableDeclaration","scope":21831,"src":"17522:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21815,"nodeType":"UserDefinedTypeName","pathNode":{"id":21814,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17522:9:63","17532:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"17522:33:63"},"referencedDeclaration":19478,"src":"17522:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"17516:55:63"},"returnParameters":{"id":21820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21819,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21831,"src":"17595:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21818,"name":"uint256","nodeType":"ElementaryTypeName","src":"17595:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17594:9:63"},"scope":22197,"src":"17493:196:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21863,"nodeType":"Block","src":"18014:287:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21841,"name":"liquidationProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21837,"src":"18035:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21842,"name":"MAX_VALID_LIQUIDATION_PROTOCOL_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21056,"src":"18061:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18035:60:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21844,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"18103:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18110:32:63","memberName":"INVALID_LIQUIDATION_PROTOCOL_FEE","nodeType":"MemberAccess","referencedDeclaration":20003,"src":"18103:39:63","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":21840,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18020:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18020:128:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21847,"nodeType":"ExpressionStatement","src":"18020:128:63"},{"expression":{"id":21861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21848,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"18155:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18160:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"18155:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21851,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21835,"src":"18174:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21852,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18179:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"18174:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21853,"name":"LIQUIDATION_PROTOCOL_FEE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20968,"src":"18186:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18174:41:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18173:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21856,"name":"liquidationProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21837,"src":"18226:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21857,"name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21023,"src":"18252:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18226:69:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18225:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18173:123:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18155:141:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21862,"nodeType":"ExpressionStatement","src":"18155:141:63"}]},"documentation":{"id":21832,"nodeType":"StructuredDocumentation","src":"17693:178:63","text":" @notice Sets the liquidation protocol fee of the reserve\n @param self The reserve configuration\n @param liquidationProtocolFee The liquidation protocol fee"},"id":21864,"implemented":true,"kind":"function","modifiers":[],"name":"setLiquidationProtocolFee","nameLocation":"17883:25:63","nodeType":"FunctionDefinition","parameters":{"id":21838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21835,"mutability":"mutable","name":"self","nameLocation":"17955:4:63","nodeType":"VariableDeclaration","scope":21864,"src":"17914:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21834,"nodeType":"UserDefinedTypeName","pathNode":{"id":21833,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["17914:9:63","17924:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"17914:33:63"},"referencedDeclaration":19478,"src":"17914:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21837,"mutability":"mutable","name":"liquidationProtocolFee","nameLocation":"17973:22:63","nodeType":"VariableDeclaration","scope":21864,"src":"17965:30:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21836,"name":"uint256","nodeType":"ElementaryTypeName","src":"17965:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17908:91:63"},"returnParameters":{"id":21839,"nodeType":"ParameterList","parameters":[],"src":"18014:0:63"},"scope":22197,"src":"17874:427:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21882,"nodeType":"Block","src":"18568:115:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21873,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21868,"src":"18588:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18593:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"18588:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"18600:30:63","subExpression":{"id":21875,"name":"LIQUIDATION_PROTOCOL_FEE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20968,"src":"18601:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18588:42:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21878,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18587:44:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21879,"name":"LIQUIDATION_PROTOCOL_FEE_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21023,"src":"18635:43:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18587:91:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21872,"id":21881,"nodeType":"Return","src":"18574:104:63"}]},"documentation":{"id":21865,"nodeType":"StructuredDocumentation","src":"18305:138:63","text":" @dev Gets the liquidation protocol fee\n @param self The reserve configuration\n @return The liquidation protocol fee"},"id":21883,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidationProtocolFee","nameLocation":"18455:25:63","nodeType":"FunctionDefinition","parameters":{"id":21869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21868,"mutability":"mutable","name":"self","nameLocation":"18527:4:63","nodeType":"VariableDeclaration","scope":21883,"src":"18486:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21867,"nodeType":"UserDefinedTypeName","pathNode":{"id":21866,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["18486:9:63","18496:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"18486:33:63"},"referencedDeclaration":19478,"src":"18486:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"18480:55:63"},"returnParameters":{"id":21872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21883,"src":"18559:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21870,"name":"uint256","nodeType":"ElementaryTypeName","src":"18559:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18558:9:63"},"scope":22197,"src":"18446:237:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21915,"nodeType":"Block","src":"18973:227:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21893,"name":"unbackedMintCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21889,"src":"18987:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21894,"name":"MAX_VALID_UNBACKED_MINT_CAP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21062,"src":"19006:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18987:46:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21896,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"19035:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19042:25:63","memberName":"INVALID_UNBACKED_MINT_CAP","nodeType":"MemberAccess","referencedDeclaration":20009,"src":"19035:32:63","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":21892,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18979:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18979:89:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21899,"nodeType":"ExpressionStatement","src":"18979:89:63"},{"expression":{"id":21913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21900,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21887,"src":"19075:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19080:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"19075:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21903,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21887,"src":"19094:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19099:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"19094:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21905,"name":"UNBACKED_MINT_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20974,"src":"19106:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19094:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19093:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21908,"name":"unbackedMintCap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21889,"src":"19139:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21909,"name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21029,"src":"19158:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19139:55:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21911,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19138:57:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19093:102:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19075:120:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21914,"nodeType":"ExpressionStatement","src":"19075:120:63"}]},"documentation":{"id":21884,"nodeType":"StructuredDocumentation","src":"18687:157:63","text":" @notice Sets the unbacked mint cap of the reserve\n @param self The reserve configuration\n @param unbackedMintCap The unbacked mint cap"},"id":21916,"implemented":true,"kind":"function","modifiers":[],"name":"setUnbackedMintCap","nameLocation":"18856:18:63","nodeType":"FunctionDefinition","parameters":{"id":21890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21887,"mutability":"mutable","name":"self","nameLocation":"18921:4:63","nodeType":"VariableDeclaration","scope":21916,"src":"18880:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21886,"nodeType":"UserDefinedTypeName","pathNode":{"id":21885,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["18880:9:63","18890:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"18880:33:63"},"referencedDeclaration":19478,"src":"18880:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21889,"mutability":"mutable","name":"unbackedMintCap","nameLocation":"18939:15:63","nodeType":"VariableDeclaration","scope":21916,"src":"18931:23:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21888,"name":"uint256","nodeType":"ElementaryTypeName","src":"18931:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18874:84:63"},"returnParameters":{"id":21891,"nodeType":"ParameterList","parameters":[],"src":"18973:0:63"},"scope":22197,"src":"18847:353:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21934,"nodeType":"Block","src":"19461:95:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21925,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21920,"src":"19475:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19480:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"19475:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"19487:23:63","subExpression":{"id":21927,"name":"UNBACKED_MINT_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20974,"src":"19488:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19475:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19474:37:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21931,"name":"UNBACKED_MINT_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21029,"src":"19515:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19474:77:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21924,"id":21933,"nodeType":"Return","src":"19467:84:63"}]},"documentation":{"id":21917,"nodeType":"StructuredDocumentation","src":"19204:139:63","text":" @dev Gets the unbacked mint cap of the reserve\n @param self The reserve configuration\n @return The unbacked mint cap"},"id":21935,"implemented":true,"kind":"function","modifiers":[],"name":"getUnbackedMintCap","nameLocation":"19355:18:63","nodeType":"FunctionDefinition","parameters":{"id":21921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21920,"mutability":"mutable","name":"self","nameLocation":"19420:4:63","nodeType":"VariableDeclaration","scope":21935,"src":"19379:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21919,"nodeType":"UserDefinedTypeName","pathNode":{"id":21918,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["19379:9:63","19389:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"19379:33:63"},"referencedDeclaration":19478,"src":"19379:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"19373:55:63"},"returnParameters":{"id":21924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21923,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21935,"src":"19452:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21922,"name":"uint256","nodeType":"ElementaryTypeName","src":"19452:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19451:9:63"},"scope":22197,"src":"19346:210:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21967,"nodeType":"Block","src":"19847:189:63","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21945,"name":"category","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21941,"src":"19861:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":21946,"name":"MAX_VALID_EMODE_CATEGORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21059,"src":"19873:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19861:36:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":21948,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20067,"src":"19899:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$20067_$","typeString":"type(library Errors)"}},"id":21949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19906:22:63","memberName":"INVALID_EMODE_CATEGORY","nodeType":"MemberAccess","referencedDeclaration":20006,"src":"19899:29:63","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":21944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19853:7:63","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":21950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19853:76:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21951,"nodeType":"ExpressionStatement","src":"19853:76:63"},{"expression":{"id":21965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21952,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21939,"src":"19936:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19941:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"19936:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21955,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21939,"src":"19949:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19954:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"19949:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21957,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20971,"src":"19961:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19949:31:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21959,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19948:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":21960,"name":"category","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21941,"src":"19985:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":21961,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"19997:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19985:45:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21963,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19984:47:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19948:83:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19936:95:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":21966,"nodeType":"ExpressionStatement","src":"19936:95:63"}]},"documentation":{"id":21936,"nodeType":"StructuredDocumentation","src":"19560:167:63","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":21968,"implemented":true,"kind":"function","modifiers":[],"name":"setEModeCategory","nameLocation":"19739:16:63","nodeType":"FunctionDefinition","parameters":{"id":21942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21939,"mutability":"mutable","name":"self","nameLocation":"19802:4:63","nodeType":"VariableDeclaration","scope":21968,"src":"19761:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21938,"nodeType":"UserDefinedTypeName","pathNode":{"id":21937,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["19761:9:63","19771:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"19761:33:63"},"referencedDeclaration":19478,"src":"19761:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21941,"mutability":"mutable","name":"category","nameLocation":"19820:8:63","nodeType":"VariableDeclaration","scope":21968,"src":"19812:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21940,"name":"uint256","nodeType":"ElementaryTypeName","src":"19812:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19755:77:63"},"returnParameters":{"id":21943,"nodeType":"ParameterList","parameters":[],"src":"19847:0:63"},"scope":22197,"src":"19730:306:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":21986,"nodeType":"Block","src":"20294:89:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":21981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21977,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21972,"src":"20308:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20313:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"20308:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":21980,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"20320:20:63","subExpression":{"id":21979,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20971,"src":"20321:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20308:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":21982,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20307:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":21983,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"20345:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20307:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":21976,"id":21985,"nodeType":"Return","src":"20300:78:63"}]},"documentation":{"id":21969,"nodeType":"StructuredDocumentation","src":"20040:138:63","text":" @dev Gets the eMode asset category\n @param self The reserve configuration\n @return The eMode category for the asset"},"id":21987,"implemented":true,"kind":"function","modifiers":[],"name":"getEModeCategory","nameLocation":"20190:16:63","nodeType":"FunctionDefinition","parameters":{"id":21973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21972,"mutability":"mutable","name":"self","nameLocation":"20253:4:63","nodeType":"VariableDeclaration","scope":21987,"src":"20212:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21971,"nodeType":"UserDefinedTypeName","pathNode":{"id":21970,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["20212:9:63","20222:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"20212:33:63"},"referencedDeclaration":19478,"src":"20212:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"20206:55:63"},"returnParameters":{"id":21976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21975,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":21987,"src":"20285:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":21974,"name":"uint256","nodeType":"ElementaryTypeName","src":"20285:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20284:9:63"},"scope":22197,"src":"20181:202:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22017,"nodeType":"Block","src":"20705:149:63","statements":[{"expression":{"id":22015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":21996,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21991,"src":"20711:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":21998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20716:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"20711:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":21999,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21991,"src":"20730:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20735:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"20730:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22001,"name":"FLASHLOAN_ENABLED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20956,"src":"20742:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20730:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20729:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"condition":{"id":22006,"name":"flashLoanEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21993,"src":"20783:16:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":22008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20806:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":22009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"20783:24:63","trueExpression":{"hexValue":"31","id":22007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20802:1:63","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":22005,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20775:7:63","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22004,"name":"uint256","nodeType":"ElementaryTypeName","src":"20775:7:63","typeDescriptions":{}}},"id":22010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20775:33:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":22011,"name":"FLASHLOAN_ENABLED_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21011,"src":"20812:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20775:73:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22013,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20774:75:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20729:120:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20711:138:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":22016,"nodeType":"ExpressionStatement","src":"20711:138:63"}]},"documentation":{"id":21988,"nodeType":"StructuredDocumentation","src":"20387:190:63","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":22018,"implemented":true,"kind":"function","modifiers":[],"name":"setFlashLoanEnabled","nameLocation":"20589:19:63","nodeType":"FunctionDefinition","parameters":{"id":21994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":21991,"mutability":"mutable","name":"self","nameLocation":"20655:4:63","nodeType":"VariableDeclaration","scope":22018,"src":"20614:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":21990,"nodeType":"UserDefinedTypeName","pathNode":{"id":21989,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["20614:9:63","20624:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"20614:33:63"},"referencedDeclaration":19478,"src":"20614:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"},{"constant":false,"id":21993,"mutability":"mutable","name":"flashLoanEnabled","nameLocation":"20670:16:63","nodeType":"VariableDeclaration","scope":22018,"src":"20665:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":21992,"name":"bool","nodeType":"ElementaryTypeName","src":"20665:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20608:82:63"},"returnParameters":{"id":21995,"nodeType":"ParameterList","parameters":[],"src":"20705:0:63"},"scope":22197,"src":"20580:274:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22036,"nodeType":"Block","src":"21119:60:63","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":22027,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22022,"src":"21133:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21138:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"21133:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21145:23:63","subExpression":{"id":22029,"name":"FLASHLOAN_ENABLED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20956,"src":"21146:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21133:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22032,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21132:37:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21173:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21132:42:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":22026,"id":22035,"nodeType":"Return","src":"21125:49:63"}]},"documentation":{"id":22019,"nodeType":"StructuredDocumentation","src":"20858:145:63","text":" @notice Gets the flashloanable flag for the reserve\n @param self The reserve configuration\n @return The flashloanable flag"},"id":22037,"implemented":true,"kind":"function","modifiers":[],"name":"getFlashLoanEnabled","nameLocation":"21015:19:63","nodeType":"FunctionDefinition","parameters":{"id":22023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22022,"mutability":"mutable","name":"self","nameLocation":"21081:4:63","nodeType":"VariableDeclaration","scope":22037,"src":"21040:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":22021,"nodeType":"UserDefinedTypeName","pathNode":{"id":22020,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["21040:9:63","21050:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"21040:33:63"},"referencedDeclaration":19478,"src":"21040:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"21034:55:63"},"returnParameters":{"id":22026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22037,"src":"21113:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22024,"name":"bool","nodeType":"ElementaryTypeName","src":"21113:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21112:6:63"},"scope":22197,"src":"21006:173:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22096,"nodeType":"Block","src":"21693:268:63","statements":[{"assignments":[22055],"declarations":[{"constant":false,"id":22055,"mutability":"mutable","name":"dataLocal","nameLocation":"21707:9:63","nodeType":"VariableDeclaration","scope":22096,"src":"21699:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22054,"name":"uint256","nodeType":"ElementaryTypeName","src":"21699:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22058,"initialValue":{"expression":{"id":22056,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22041,"src":"21719:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21724:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"21719:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21699:29:63"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22059,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22055,"src":"21751:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21763:12:63","subExpression":{"id":22060,"name":"ACTIVE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20935,"src":"21764:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21751:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22063,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21750:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21780:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21750:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22066,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22055,"src":"21790:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21802:12:63","subExpression":{"id":22067,"name":"FROZEN_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20938,"src":"21803:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21790:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22070,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21789:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21819:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21789:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22073,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22055,"src":"21829:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21841:15:63","subExpression":{"id":22074,"name":"BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20941,"src":"21842:14:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21829:27:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21828:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21861:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21828:34:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22080,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22055,"src":"21871:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21883:22:63","subExpression":{"id":22081,"name":"STABLE_BORROWING_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20944,"src":"21884:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21871:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22084,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21870:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21910:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21870:41:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22087,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22055,"src":"21920:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"21932:12:63","subExpression":{"id":22088,"name":"PAUSED_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20947,"src":"21933:11:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21920:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21919:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":22092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21949:1:63","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21919:31:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":22094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21742:214:63","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_bool_$_t_bool_$_t_bool_$","typeString":"tuple(bool,bool,bool,bool,bool)"}},"functionReturnParameters":22053,"id":22095,"nodeType":"Return","src":"21735:221:63"}]},"documentation":{"id":22038,"nodeType":"StructuredDocumentation","src":"21183:381:63","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":22097,"implemented":true,"kind":"function","modifiers":[],"name":"getFlags","nameLocation":"21576:8:63","nodeType":"FunctionDefinition","parameters":{"id":22042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22041,"mutability":"mutable","name":"self","nameLocation":"21631:4:63","nodeType":"VariableDeclaration","scope":22097,"src":"21590:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":22040,"nodeType":"UserDefinedTypeName","pathNode":{"id":22039,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["21590:9:63","21600:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"21590:33:63"},"referencedDeclaration":19478,"src":"21590:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"21584:55:63"},"returnParameters":{"id":22053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22044,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22097,"src":"21663:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22043,"name":"bool","nodeType":"ElementaryTypeName","src":"21663:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22046,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22097,"src":"21669:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22045,"name":"bool","nodeType":"ElementaryTypeName","src":"21669:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22097,"src":"21675:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22047,"name":"bool","nodeType":"ElementaryTypeName","src":"21675:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22097,"src":"21681:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22049,"name":"bool","nodeType":"ElementaryTypeName","src":"21681:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22097,"src":"21687:4:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22051,"name":"bool","nodeType":"ElementaryTypeName","src":"21687:4:63","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21662:30:63"},"scope":22197,"src":"21567:394:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22162,"nodeType":"Block","src":"22589:500:63","statements":[{"assignments":[22117],"declarations":[{"constant":false,"id":22117,"mutability":"mutable","name":"dataLocal","nameLocation":"22603:9:63","nodeType":"VariableDeclaration","scope":22162,"src":"22595:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22116,"name":"uint256","nodeType":"ElementaryTypeName","src":"22595:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22120,"initialValue":{"expression":{"id":22118,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22101,"src":"22615:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22620:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"22615:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22595:29:63"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22121,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"22646:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22658:9:63","subExpression":{"id":22122,"name":"LTV_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20923,"src":"22659:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22646:21:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22125,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"22676:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22127,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22688:27:63","subExpression":{"id":22126,"name":"LIQUIDATION_THRESHOLD_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20926,"src":"22689:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22676:39:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22675:41:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22130,"name":"LIQUIDATION_THRESHOLD_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20981,"src":"22720:40:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22675:85:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22132,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"22769:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22781:23:63","subExpression":{"id":22133,"name":"LIQUIDATION_BONUS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20929,"src":"22782:22:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22769:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22136,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22768:37:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22137,"name":"LIQUIDATION_BONUS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20984,"src":"22809:36:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22768:77:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22139,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"22854:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22866:14:63","subExpression":{"id":22140,"name":"DECIMALS_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20932,"src":"22867:13:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22854:26:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22853:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22144,"name":"RESERVE_DECIMALS_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20987,"src":"22885:35:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22853:67:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22146,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"22929:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"22941:20:63","subExpression":{"id":22147,"name":"RESERVE_FACTOR_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20959,"src":"22942:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22929:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22150,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22928:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22151,"name":"RESERVE_FACTOR_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21014,"src":"22966:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22928:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22153,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22117,"src":"23008:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23020:20:63","subExpression":{"id":22154,"name":"EMODE_CATEGORY_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20971,"src":"23021:19:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23008:32:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23007:34:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22158,"name":"EMODE_CATEGORY_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21026,"src":"23045:33:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23007:71:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22638:446:63","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":22115,"id":22161,"nodeType":"Return","src":"22631:453:63"}]},"documentation":{"id":22098,"nodeType":"StructuredDocumentation","src":"21965:470:63","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":22163,"implemented":true,"kind":"function","modifiers":[],"name":"getParams","nameLocation":"22447:9:63","nodeType":"FunctionDefinition","parameters":{"id":22102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22101,"mutability":"mutable","name":"self","nameLocation":"22503:4:63","nodeType":"VariableDeclaration","scope":22163,"src":"22462:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":22100,"nodeType":"UserDefinedTypeName","pathNode":{"id":22099,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["22462:9:63","22472:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"22462:33:63"},"referencedDeclaration":19478,"src":"22462:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"22456:55:63"},"returnParameters":{"id":22115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22535:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22103,"name":"uint256","nodeType":"ElementaryTypeName","src":"22535:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22544:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22105,"name":"uint256","nodeType":"ElementaryTypeName","src":"22544:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22553:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22107,"name":"uint256","nodeType":"ElementaryTypeName","src":"22553:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22562:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22109,"name":"uint256","nodeType":"ElementaryTypeName","src":"22562:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22571:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22111,"name":"uint256","nodeType":"ElementaryTypeName","src":"22571:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22114,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22163,"src":"22580:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22113,"name":"uint256","nodeType":"ElementaryTypeName","src":"22580:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22534:54:63"},"scope":22197,"src":"22438:651:63","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":22195,"nodeType":"Block","src":"23434:202:63","statements":[{"assignments":[22175],"declarations":[{"constant":false,"id":22175,"mutability":"mutable","name":"dataLocal","nameLocation":"23448:9:63","nodeType":"VariableDeclaration","scope":22195,"src":"23440:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22174,"name":"uint256","nodeType":"ElementaryTypeName","src":"23440:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22178,"initialValue":{"expression":{"id":22176,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22167,"src":"23460:4:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap memory"}},"id":22177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"23465:4:63","memberName":"data","nodeType":"MemberAccess","referencedDeclaration":19477,"src":"23460:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23440:29:63"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22179,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22175,"src":"23492:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23504:16:63","subExpression":{"id":22180,"name":"BORROW_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20962,"src":"23505:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23492:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22183,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23491:30:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22184,"name":"BORROW_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21017,"src":"23525:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23491:63:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22186,"name":"dataLocal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22175,"src":"23563:9:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":22188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"23575:16:63","subExpression":{"id":22187,"name":"SUPPLY_CAP_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20965,"src":"23576:15:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23563:28:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23562:30:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":22191,"name":"SUPPLY_CAP_START_BIT_POSITION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21020,"src":"23596:29:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23562:63:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":22193,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"23483:148:63","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":22173,"id":22194,"nodeType":"Return","src":"23476:155:63"}]},"documentation":{"id":22164,"nodeType":"StructuredDocumentation","src":"23093:225:63","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":22196,"implemented":true,"kind":"function","modifiers":[],"name":"getCaps","nameLocation":"23330:7:63","nodeType":"FunctionDefinition","parameters":{"id":22168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22167,"mutability":"mutable","name":"self","nameLocation":"23384:4:63","nodeType":"VariableDeclaration","scope":22196,"src":"23343:45:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_memory_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"},"typeName":{"id":22166,"nodeType":"UserDefinedTypeName","pathNode":{"id":22165,"name":"DataTypes.ReserveConfigurationMap","nameLocations":["23343:9:63","23353:23:63"],"nodeType":"IdentifierPath","referencedDeclaration":19478,"src":"23343:33:63"},"referencedDeclaration":19478,"src":"23343:33:63","typeDescriptions":{"typeIdentifier":"t_struct$_ReserveConfigurationMap_$19478_storage_ptr","typeString":"struct DataTypes.ReserveConfigurationMap"}},"visibility":"internal"}],"src":"23337:55:63"},"returnParameters":{"id":22173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22196,"src":"23416:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22169,"name":"uint256","nodeType":"ElementaryTypeName","src":"23416:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":22172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22196,"src":"23425:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22171,"name":"uint256","nodeType":"ElementaryTypeName","src":"23425:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23415:18:63"},"scope":22197,"src":"23321:315:63","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":22198,"src":"281:23357:63","usedErrors":[],"usedEvents":[]}],"src":"37:23602:63"},"id":63},"contracts/dependencies/compound-v3/ICometRewards.sol":{"ast":{"absolutePath":"contracts/dependencies/compound-v3/ICometRewards.sol","exportedSymbols":{"ICometRewards":[22236]},"id":22237,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22199,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:64"},{"abstract":false,"baseContracts":[],"canonicalName":"ICometRewards","contractDependencies":[],"contractKind":"interface","documentation":{"id":22200,"nodeType":"StructuredDocumentation","src":"64:169:64","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":22236,"linearizedBaseContracts":[22236],"name":"ICometRewards","nameLocation":"244:13:64","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICometRewards.RewardOwed","id":22205,"members":[{"constant":false,"id":22202,"mutability":"mutable","name":"token","nameLocation":"302:5:64","nodeType":"VariableDeclaration","scope":22205,"src":"294:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22201,"name":"address","nodeType":"ElementaryTypeName","src":"294:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22204,"mutability":"mutable","name":"owed","nameLocation":"322:4:64","nodeType":"VariableDeclaration","scope":22205,"src":"317:9:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22203,"name":"uint","nodeType":"ElementaryTypeName","src":"317:4:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"RewardOwed","nameLocation":"273:10:64","nodeType":"StructDefinition","scope":22236,"src":"266:67:64","visibility":"public"},{"functionSelector":"2289b6b8","id":22216,"implemented":false,"kind":"function","modifiers":[],"name":"rewardConfig","nameLocation":"346:12:64","nodeType":"FunctionDefinition","parameters":{"id":22208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22207,"mutability":"mutable","name":"cToken","nameLocation":"367:6:64","nodeType":"VariableDeclaration","scope":22216,"src":"359:14:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22206,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:16:64"},"returnParameters":{"id":22215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22210,"mutability":"mutable","name":"token","nameLocation":"401:5:64","nodeType":"VariableDeclaration","scope":22216,"src":"393:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22209,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22212,"mutability":"mutable","name":"rescaleFactor","nameLocation":"415:13:64","nodeType":"VariableDeclaration","scope":22216,"src":"408:20:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":22211,"name":"uint64","nodeType":"ElementaryTypeName","src":"408:6:64","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":22214,"mutability":"mutable","name":"shouldUpscale","nameLocation":"435:13:64","nodeType":"VariableDeclaration","scope":22216,"src":"430:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22213,"name":"bool","nodeType":"ElementaryTypeName","src":"430:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"392:57:64"},"scope":22236,"src":"337:113:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b7034f7e","id":22225,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"463:5:64","nodeType":"FunctionDefinition","parameters":{"id":22223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22218,"mutability":"mutable","name":"comet","nameLocation":"477:5:64","nodeType":"VariableDeclaration","scope":22225,"src":"469:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22217,"name":"address","nodeType":"ElementaryTypeName","src":"469:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22220,"mutability":"mutable","name":"src","nameLocation":"492:3:64","nodeType":"VariableDeclaration","scope":22225,"src":"484:11:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22219,"name":"address","nodeType":"ElementaryTypeName","src":"484:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22222,"mutability":"mutable","name":"shouldAccrue","nameLocation":"502:12:64","nodeType":"VariableDeclaration","scope":22225,"src":"497:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22221,"name":"bool","nodeType":"ElementaryTypeName","src":"497:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"468:47:64"},"returnParameters":{"id":22224,"nodeType":"ParameterList","parameters":[],"src":"524:0:64"},"scope":22236,"src":"454:71:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"41e0cad6","id":22235,"implemented":false,"kind":"function","modifiers":[],"name":"getRewardOwed","nameLocation":"538:13:64","nodeType":"FunctionDefinition","parameters":{"id":22230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22227,"mutability":"mutable","name":"comet","nameLocation":"560:5:64","nodeType":"VariableDeclaration","scope":22235,"src":"552:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22226,"name":"address","nodeType":"ElementaryTypeName","src":"552:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22229,"mutability":"mutable","name":"account","nameLocation":"575:7:64","nodeType":"VariableDeclaration","scope":22235,"src":"567:15:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22228,"name":"address","nodeType":"ElementaryTypeName","src":"567:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"551:32:64"},"returnParameters":{"id":22234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22233,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22235,"src":"602:17:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_memory_ptr","typeString":"struct ICometRewards.RewardOwed"},"typeName":{"id":22232,"nodeType":"UserDefinedTypeName","pathNode":{"id":22231,"name":"RewardOwed","nameLocations":["602:10:64"],"nodeType":"IdentifierPath","referencedDeclaration":22205,"src":"602:10:64"},"referencedDeclaration":22205,"src":"602:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_RewardOwed_$22205_storage_ptr","typeString":"struct ICometRewards.RewardOwed"}},"visibility":"internal"}],"src":"601:19:64"},"scope":22236,"src":"529:92:64","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22237,"src":"234:389:64","usedErrors":[],"usedEvents":[]}],"src":"39:585:64"},"id":64},"contracts/dependencies/compound-v3/ICompoundV3.sol":{"ast":{"absolutePath":"contracts/dependencies/compound-v3/ICompoundV3.sol","exportedSymbols":{"ICompoundV3":[22274],"IERC20Metadata":[8682]},"id":22275,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22238,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:65"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":22240,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22275,"sourceUnit":8683,"src":"64:97:65","symbolAliases":[{"foreign":{"id":22239,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"72:14:65","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22242,"name":"IERC20Metadata","nameLocations":["450:14:65"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"450:14:65"},"id":22243,"nodeType":"InheritanceSpecifier","src":"450:14:65"}],"canonicalName":"ICompoundV3","contractDependencies":[],"contractKind":"interface","documentation":{"id":22241,"nodeType":"StructuredDocumentation","src":"163:261:65","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":22274,"linearizedBaseContracts":[22274,8682,8656],"name":"ICompoundV3","nameLocation":"435:11:65","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":22244,"nodeType":"StructuredDocumentation","src":"469:62:65","text":" @dev Executes the collector and withdrawer task"},"functionSelector":"c55dae63","id":22249,"implemented":false,"kind":"function","modifiers":[],"name":"baseToken","nameLocation":"543:9:65","nodeType":"FunctionDefinition","parameters":{"id":22245,"nodeType":"ParameterList","parameters":[],"src":"552:2:65"},"returnParameters":{"id":22248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22249,"src":"578:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22246,"name":"address","nodeType":"ElementaryTypeName","src":"578:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"577:9:65"},"scope":22274,"src":"534:53:65","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0bc47ad1","id":22254,"implemented":false,"kind":"function","modifiers":[],"name":"isSupplyPaused","nameLocation":"600:14:65","nodeType":"FunctionDefinition","parameters":{"id":22250,"nodeType":"ParameterList","parameters":[],"src":"614:2:65"},"returnParameters":{"id":22253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22254,"src":"640:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22251,"name":"bool","nodeType":"ElementaryTypeName","src":"640:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"639:6:65"},"scope":22274,"src":"591:55:65","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"67800b5f","id":22259,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawPaused","nameLocation":"658:16:65","nodeType":"FunctionDefinition","parameters":{"id":22255,"nodeType":"ParameterList","parameters":[],"src":"674:2:65"},"returnParameters":{"id":22258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22259,"src":"700:4:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22256,"name":"bool","nodeType":"ElementaryTypeName","src":"700:4:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"699:6:65"},"scope":22274,"src":"649:57:65","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f3fef3a3","id":22266,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"719:8:65","nodeType":"FunctionDefinition","parameters":{"id":22264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22261,"mutability":"mutable","name":"asset","nameLocation":"736:5:65","nodeType":"VariableDeclaration","scope":22266,"src":"728:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22260,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22263,"mutability":"mutable","name":"amount","nameLocation":"751:6:65","nodeType":"VariableDeclaration","scope":22266,"src":"743:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22262,"name":"uint256","nodeType":"ElementaryTypeName","src":"743:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"727:31:65"},"returnParameters":{"id":22265,"nodeType":"ParameterList","parameters":[],"src":"767:0:65"},"scope":22274,"src":"710:58:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f2b9fdb8","id":22273,"implemented":false,"kind":"function","modifiers":[],"name":"supply","nameLocation":"780:6:65","nodeType":"FunctionDefinition","parameters":{"id":22271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22268,"mutability":"mutable","name":"asset","nameLocation":"795:5:65","nodeType":"VariableDeclaration","scope":22273,"src":"787:13:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22267,"name":"address","nodeType":"ElementaryTypeName","src":"787:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22270,"mutability":"mutable","name":"amount","nameLocation":"810:6:65","nodeType":"VariableDeclaration","scope":22273,"src":"802:14:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22269,"name":"uint256","nodeType":"ElementaryTypeName","src":"802:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"786:31:65"},"returnParameters":{"id":22272,"nodeType":"ParameterList","parameters":[],"src":"826:0:65"},"scope":22274,"src":"771:56:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22275,"src":"425:404:65","usedErrors":[],"usedEvents":[8590,8599]}],"src":"39:791:65"},"id":65},"contracts/hardhat-dependency-compiler/@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","exportedSymbols":{"IERC20Metadata":[8682],"ISwapRouter":[13462],"ISwapRouterErrors":[1697],"Math":[11309],"SafeCast":[13074],"SafeERC20":[9093],"SwapRouterMock":[2150]},"id":22278,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":22276,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:66"},{"absolutePath":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","file":"@ensuro/swaplibrary/contracts/mocks/SwapRouterMock.sol","id":22277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22278,"sourceUnit":2151,"src":"63:64:66","symbolAliases":[],"unitAlias":""}],"src":"39:89:66"},"id":66},"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestCurrency.sol":{"ast":{"absolutePath":"contracts/hardhat-dependency-compiler/@ensuro/utils/contracts/TestCurrency.sol","exportedSymbols":{"AccessControl":[4809],"ERC20":[8578],"TestCurrency":[2247]},"id":22281,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":22279,"literals":["solidity",">","0.0",".0"],"nodeType":"PragmaDirective","src":"39:23:67"},{"absolutePath":"@ensuro/utils/contracts/TestCurrency.sol","file":"@ensuro/utils/contracts/TestCurrency.sol","id":22280,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22281,"sourceUnit":2248,"src":"63:50:67","symbolAliases":[],"unitAlias":""}],"src":"39:75: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":[6781],"Address":[9352],"Context":[9382],"IAccessManaged":[6821],"IAccessManager":[7253],"Math":[11309],"Multicall":[9491],"Time":[13348]},"id":22284,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":22282,"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":22283,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22284,"sourceUnit":6782,"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":[7723],"ERC1967Utils":[8017],"Proxy":[8053]},"id":22287,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":22285,"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":22286,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22287,"sourceUnit":7724,"src":"63:64:69","symbolAliases":[],"unitAlias":""}],"src":"39:89:69"},"id":69},"contracts/interfaces/IExposeStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IExposeStorage.sol","exportedSymbols":{"IExposeStorage":[22298]},"id":22299,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22288,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:70"},{"abstract":false,"baseContracts":[],"canonicalName":"IExposeStorage","contractDependencies":[],"contractKind":"interface","documentation":{"id":22289,"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":22298,"linearizedBaseContracts":[22298],"name":"IExposeStorage","nameLocation":"323:14:70","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":22290,"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":22297,"implemented":false,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"609:12:70","nodeType":"FunctionDefinition","parameters":{"id":22293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22292,"mutability":"mutable","name":"slot","nameLocation":"630:4:70","nodeType":"VariableDeclaration","scope":22297,"src":"622:12:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:70","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"621:14:70"},"returnParameters":{"id":22296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22295,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22297,"src":"659:12:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22294,"name":"bytes","nodeType":"ElementaryTypeName","src":"659:5:70","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"658:14:70"},"scope":22298,"src":"600:73:70","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22299,"src":"313:362:70","usedErrors":[],"usedEvents":[]}],"src":"39:637:70"},"id":70},"contracts/interfaces/IInvestStrategy.sol":{"ast":{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","exportedSymbols":{"IInvestStrategy":[22374]},"id":22375,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22300,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:71"},{"abstract":false,"baseContracts":[],"canonicalName":"IInvestStrategy","contractDependencies":[],"contractKind":"interface","documentation":{"id":22301,"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":22374,"linearizedBaseContracts":[22374],"name":"IInvestStrategy","nameLocation":"667:15:71","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":22302,"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":22307,"implemented":false,"kind":"function","modifiers":[],"name":"connect","nameLocation":"981:7:71","nodeType":"FunctionDefinition","parameters":{"id":22305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22304,"mutability":"mutable","name":"initData","nameLocation":"1002:8:71","nodeType":"VariableDeclaration","scope":22307,"src":"989:21:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22303,"name":"bytes","nodeType":"ElementaryTypeName","src":"989:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"988:23:71"},"returnParameters":{"id":22306,"nodeType":"ParameterList","parameters":[],"src":"1020:0:71"},"scope":22374,"src":"972:49:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":22308,"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":22313,"implemented":false,"kind":"function","modifiers":[],"name":"disconnect","nameLocation":"1364:10:71","nodeType":"FunctionDefinition","parameters":{"id":22311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22310,"mutability":"mutable","name":"force","nameLocation":"1380:5:71","nodeType":"VariableDeclaration","scope":22313,"src":"1375:10:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22309,"name":"bool","nodeType":"ElementaryTypeName","src":"1375:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1374:12:71"},"returnParameters":{"id":22312,"nodeType":"ParameterList","parameters":[],"src":"1395:0:71"},"scope":22374,"src":"1355:41:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":22314,"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":22319,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"1709:7:71","nodeType":"FunctionDefinition","parameters":{"id":22317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22316,"mutability":"mutable","name":"assets","nameLocation":"1725:6:71","nodeType":"VariableDeclaration","scope":22319,"src":"1717:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22315,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1716:16:71"},"returnParameters":{"id":22318,"nodeType":"ParameterList","parameters":[],"src":"1741:0:71"},"scope":22374,"src":"1700:42:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":22320,"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":22325,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"2053:8:71","nodeType":"FunctionDefinition","parameters":{"id":22323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22322,"mutability":"mutable","name":"assets","nameLocation":"2070:6:71","nodeType":"VariableDeclaration","scope":22325,"src":"2062:14:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22321,"name":"uint256","nodeType":"ElementaryTypeName","src":"2062:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2061:16:71"},"returnParameters":{"id":22324,"nodeType":"ParameterList","parameters":[],"src":"2086:0:71"},"scope":22374,"src":"2044:43:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":22326,"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":22335,"implemented":false,"kind":"function","modifiers":[],"name":"forwardEntryPoint","nameLocation":"2717:17:71","nodeType":"FunctionDefinition","parameters":{"id":22331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22328,"mutability":"mutable","name":"method","nameLocation":"2741:6:71","nodeType":"VariableDeclaration","scope":22335,"src":"2735:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22327,"name":"uint8","nodeType":"ElementaryTypeName","src":"2735:5:71","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22330,"mutability":"mutable","name":"params","nameLocation":"2762:6:71","nodeType":"VariableDeclaration","scope":22335,"src":"2749:19:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22329,"name":"bytes","nodeType":"ElementaryTypeName","src":"2749:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2734:35:71"},"returnParameters":{"id":22334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22335,"src":"2788:12:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22332,"name":"bytes","nodeType":"ElementaryTypeName","src":"2788:5:71","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2787:14:71"},"scope":22374,"src":"2708:94:71","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":22336,"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":22343,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nameLocation":"3332:5:71","nodeType":"FunctionDefinition","parameters":{"id":22339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22338,"mutability":"mutable","name":"contract_","nameLocation":"3346:9:71","nodeType":"VariableDeclaration","scope":22343,"src":"3338:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22337,"name":"address","nodeType":"ElementaryTypeName","src":"3338:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3337:19:71"},"returnParameters":{"id":22342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22343,"src":"3380:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22340,"name":"address","nodeType":"ElementaryTypeName","src":"3380:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3379:9:71"},"scope":22374,"src":"3323:66:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":22344,"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":22351,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"3635:11:71","nodeType":"FunctionDefinition","parameters":{"id":22347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22346,"mutability":"mutable","name":"contract_","nameLocation":"3655:9:71","nodeType":"VariableDeclaration","scope":22351,"src":"3647:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22345,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3646:19:71"},"returnParameters":{"id":22350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22349,"mutability":"mutable","name":"totalManagedAssets","nameLocation":"3697:18:71","nodeType":"VariableDeclaration","scope":22351,"src":"3689:26:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22348,"name":"uint256","nodeType":"ElementaryTypeName","src":"3689:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3688:28:71"},"scope":22374,"src":"3626:91:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":22352,"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":22359,"implemented":false,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"3932:10:71","nodeType":"FunctionDefinition","parameters":{"id":22355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22354,"mutability":"mutable","name":"contract_","nameLocation":"3951:9:71","nodeType":"VariableDeclaration","scope":22359,"src":"3943:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22353,"name":"address","nodeType":"ElementaryTypeName","src":"3943:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3942:19:71"},"returnParameters":{"id":22358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22357,"mutability":"mutable","name":"maxAssets","nameLocation":"3993:9:71","nodeType":"VariableDeclaration","scope":22359,"src":"3985:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22356,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3984:19:71"},"scope":22374,"src":"3923:81:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":22360,"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":22367,"implemented":false,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4219:11:71","nodeType":"FunctionDefinition","parameters":{"id":22363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22362,"mutability":"mutable","name":"contract_","nameLocation":"4239:9:71","nodeType":"VariableDeclaration","scope":22367,"src":"4231:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22361,"name":"address","nodeType":"ElementaryTypeName","src":"4231:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4230:19:71"},"returnParameters":{"id":22366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22365,"mutability":"mutable","name":"maxAssets","nameLocation":"4281:9:71","nodeType":"VariableDeclaration","scope":22367,"src":"4273:17:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22364,"name":"uint256","nodeType":"ElementaryTypeName","src":"4273:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4272:19:71"},"scope":22374,"src":"4210:82:71","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":22368,"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":22373,"implemented":false,"kind":"function","modifiers":[],"name":"storageSlot","nameLocation":"4485:11:71","nodeType":"FunctionDefinition","parameters":{"id":22369,"nodeType":"ParameterList","parameters":[],"src":"4496:2:71"},"returnParameters":{"id":22372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22373,"src":"4522:7:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22370,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4522:7:71","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4521:9:71"},"scope":22374,"src":"4476:55:71","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22375,"src":"657:3876:71","usedErrors":[],"usedEvents":[]}],"src":"39:4495:71"},"id":71},"contracts/mock/DummyInvestStrategy.sol":{"ast":{"absolutePath":"contracts/mock/DummyInvestStrategy.sol","exportedSymbols":{"DummyInvestStrategy":[22785],"IERC20":[8656],"IERC4626":[7538],"IExposeStorage":[22298],"IInvestStrategy":[22374],"InvestStrategyClient":[15775],"OtherAddress":[22407],"StorageSlot":[9667]},"id":22786,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22376,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:72"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","id":22378,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":7365,"src":"64:69:72","symbolAliases":[{"foreign":{"id":22377,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"72:6:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4626.sol","file":"@openzeppelin/contracts/interfaces/IERC4626.sol","id":22380,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":7539,"src":"134:73:72","symbolAliases":[{"foreign":{"id":22379,"name":"IERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"142:8:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":22382,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":9668,"src":"208:74:72","symbolAliases":[{"foreign":{"id":22381,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"216:11:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":22384,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":22375,"src":"283:66:72","symbolAliases":[{"foreign":{"id":22383,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"291:15:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":22386,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":22299,"src":"350:64:72","symbolAliases":[{"foreign":{"id":22385,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"358:14:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":22388,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":22786,"sourceUnit":15776,"src":"415:65:72","symbolAliases":[{"foreign":{"id":22387,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"423:20:72","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"OtherAddress","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":22407,"linearizedBaseContracts":[22407],"name":"OtherAddress","nameLocation":"491:12:72","nodeType":"ContractDefinition","nodes":[{"body":{"id":22405,"nodeType":"Block","src":"580:38:72","statements":[{"expression":{"arguments":[{"id":22401,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22393,"src":"602:2:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22402,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22395,"src":"606:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22398,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22391,"src":"586:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":22400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"593:8:72","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8623,"src":"586:15:72","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":22403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"586:27:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22404,"nodeType":"ExpressionStatement","src":"586:27:72"}]},"functionSelector":"a5f2a152","id":22406,"implemented":true,"kind":"function","modifiers":[],"name":"transferTo","nameLocation":"517:10:72","nodeType":"FunctionDefinition","parameters":{"id":22396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22391,"mutability":"mutable","name":"asset_","nameLocation":"535:6:72","nodeType":"VariableDeclaration","scope":22406,"src":"528:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":22390,"nodeType":"UserDefinedTypeName","pathNode":{"id":22389,"name":"IERC20","nameLocations":["528:6:72"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"528:6:72"},"referencedDeclaration":8656,"src":"528:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22393,"mutability":"mutable","name":"to","nameLocation":"551:2:72","nodeType":"VariableDeclaration","scope":22406,"src":"543:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22392,"name":"address","nodeType":"ElementaryTypeName","src":"543:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22395,"mutability":"mutable","name":"amount","nameLocation":"563:6:72","nodeType":"VariableDeclaration","scope":22406,"src":"555:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22394,"name":"uint256","nodeType":"ElementaryTypeName","src":"555:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"527:43:72"},"returnParameters":{"id":22397,"nodeType":"ParameterList","parameters":[],"src":"580:0:72"},"scope":22407,"src":"508:110:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":22786,"src":"482:138:72","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":22408,"name":"IInvestStrategy","nameLocations":["654:15:72"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"654:15:72"},"id":22409,"nodeType":"InheritanceSpecifier","src":"654:15:72"}],"canonicalName":"DummyInvestStrategy","contractDependencies":[22407],"contractKind":"contract","fullyImplemented":true,"id":22785,"linearizedBaseContracts":[22785,22374],"name":"DummyInvestStrategy","nameLocation":"631:19:72","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":22412,"mutability":"immutable","name":"_asset","nameLocation":"700:6:72","nodeType":"VariableDeclaration","scope":22785,"src":"674:32:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":22411,"nodeType":"UserDefinedTypeName","pathNode":{"id":22410,"name":"IERC20","nameLocations":["674:6:72"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"674:6:72"},"referencedDeclaration":8656,"src":"674:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22418,"mutability":"immutable","name":"__self","nameLocation":"736:6:72","nodeType":"VariableDeclaration","scope":22785,"src":"710:48:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22413,"name":"address","nodeType":"ElementaryTypeName","src":"710:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":22416,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"753:4:72","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}],"id":22415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"745:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22414,"name":"address","nodeType":"ElementaryTypeName","src":"745:7:72","typeDescriptions":{}}},"id":22417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"745:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"baseFunctions":[22373],"constant":false,"functionSelector":"5b9a4c35","id":22424,"mutability":"immutable","name":"storageSlot","nameLocation":"787:11:72","nodeType":"VariableDeclaration","scope":22785,"src":"762:81:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22419,"name":"bytes32","nodeType":"ElementaryTypeName","src":"762:7:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"id":22422,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"838:4:72","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}],"expression":{"id":22420,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"801:20:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":22421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"822:15:72","memberName":"makeStorageSlot","nodeType":"MemberAccess","referencedDeclaration":15720,"src":"801:36:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IInvestStrategy_$22374_$returns$_t_bytes32_$","typeString":"function (contract IInvestStrategy) pure returns (bytes32)"}},"id":22423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"801:42:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"functionSelector":"85295877","id":22426,"mutability":"immutable","name":"other","nameLocation":"872:5:72","nodeType":"VariableDeclaration","scope":22785,"src":"847:30:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22425,"name":"address","nodeType":"ElementaryTypeName","src":"847:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"errorSelector":"f11f7f0c","id":22430,"name":"Fail","nameLocation":"888:4:72","nodeType":"ErrorDefinition","parameters":{"id":22429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22428,"mutability":"mutable","name":"where","nameLocation":"900:5:72","nodeType":"VariableDeclaration","scope":22430,"src":"893:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22427,"name":"string","nodeType":"ElementaryTypeName","src":"893:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"892:14:72"},"src":"882:25:72"},{"errorSelector":"50701b61","id":22432,"name":"NoExtraDataAllowed","nameLocation":"916:18:72","nodeType":"ErrorDefinition","parameters":{"id":22431,"nodeType":"ParameterList","parameters":[],"src":"934:2:72"},"src":"910:27:72"},{"canonicalName":"DummyInvestStrategy.ForwardMethods","id":22434,"members":[{"id":22433,"name":"setFail","nameLocation":"967:7:72","nodeType":"EnumValue","src":"967:7:72"}],"name":"ForwardMethods","nameLocation":"946:14:72","nodeType":"EnumDefinition","src":"941:37:72"},{"canonicalName":"DummyInvestStrategy.DummyStorage","id":22443,"members":[{"constant":false,"id":22436,"mutability":"mutable","name":"failConnect","nameLocation":"1013:11:72","nodeType":"VariableDeclaration","scope":22443,"src":"1008:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22435,"name":"bool","nodeType":"ElementaryTypeName","src":"1008:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22438,"mutability":"mutable","name":"failDisconnect","nameLocation":"1035:14:72","nodeType":"VariableDeclaration","scope":22443,"src":"1030:19:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22437,"name":"bool","nodeType":"ElementaryTypeName","src":"1030:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22440,"mutability":"mutable","name":"failDeposit","nameLocation":"1060:11:72","nodeType":"VariableDeclaration","scope":22443,"src":"1055:16:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22439,"name":"bool","nodeType":"ElementaryTypeName","src":"1055:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":22442,"mutability":"mutable","name":"failWithdraw","nameLocation":"1082:12:72","nodeType":"VariableDeclaration","scope":22443,"src":"1077:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22441,"name":"bool","nodeType":"ElementaryTypeName","src":"1077:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"DummyStorage","nameLocation":"989:12:72","nodeType":"StructDefinition","scope":22785,"src":"982:117:72","visibility":"public"},{"anonymous":false,"eventSelector":"4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e38426","id":22447,"name":"Deposit","nameLocation":"1109:7:72","nodeType":"EventDefinition","parameters":{"id":22446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22445,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"1125:6:72","nodeType":"VariableDeclaration","scope":22447,"src":"1117:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22444,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1116:16:72"},"src":"1103:30:72"},{"anonymous":false,"eventSelector":"5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d","id":22451,"name":"Withdraw","nameLocation":"1142:8:72","nodeType":"EventDefinition","parameters":{"id":22450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22449,"indexed":false,"mutability":"mutable","name":"assets","nameLocation":"1159:6:72","nodeType":"VariableDeclaration","scope":22451,"src":"1151:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1150:16:72"},"src":"1136:31:72"},{"anonymous":false,"eventSelector":"1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e","id":22455,"name":"Disconnect","nameLocation":"1176:10:72","nodeType":"EventDefinition","parameters":{"id":22454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22453,"indexed":false,"mutability":"mutable","name":"force","nameLocation":"1192:5:72","nodeType":"VariableDeclaration","scope":22455,"src":"1187:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22452,"name":"bool","nodeType":"ElementaryTypeName","src":"1187:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1186:12:72"},"src":"1170:29:72"},{"anonymous":false,"eventSelector":"71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce","id":22459,"name":"Connect","nameLocation":"1208:7:72","nodeType":"EventDefinition","parameters":{"id":22458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22457,"indexed":false,"mutability":"mutable","name":"initData","nameLocation":"1222:8:72","nodeType":"VariableDeclaration","scope":22459,"src":"1216:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22456,"name":"bytes","nodeType":"ElementaryTypeName","src":"1216:5:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1215:16:72"},"src":"1202:30:72"},{"anonymous":false,"eventSelector":"973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1","id":22464,"name":"SetFail","nameLocation":"1241:7:72","nodeType":"EventDefinition","parameters":{"id":22463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22462,"indexed":false,"mutability":"mutable","name":"fail","nameLocation":"1262:4:72","nodeType":"VariableDeclaration","scope":22464,"src":"1249:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22461,"nodeType":"UserDefinedTypeName","pathNode":{"id":22460,"name":"DummyStorage","nameLocations":["1249:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"1249:12:72"},"referencedDeclaration":22443,"src":"1249:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1248:19:72"},"src":"1235:33:72"},{"body":{"id":22484,"nodeType":"Block","src":"1299:67:72","statements":[{"expression":{"id":22472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22470,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"1305:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22471,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22467,"src":"1314:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"src":"1305:15:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":22473,"nodeType":"ExpressionStatement","src":"1305:15:72"},{"expression":{"id":22482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22474,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22426,"src":"1326:5:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":22479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1342:16:72","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_OtherAddress_$22407_$","typeString":"function () returns (contract OtherAddress)"},"typeName":{"id":22478,"nodeType":"UserDefinedTypeName","pathNode":{"id":22477,"name":"OtherAddress","nameLocations":["1346:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22407,"src":"1346:12:72"},"referencedDeclaration":22407,"src":"1346:12:72","typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$22407","typeString":"contract OtherAddress"}}},"id":22480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:18:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$22407","typeString":"contract OtherAddress"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OtherAddress_$22407","typeString":"contract OtherAddress"}],"id":22476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1334:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22475,"name":"address","nodeType":"ElementaryTypeName","src":"1334:7:72","typeDescriptions":{}}},"id":22481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1334:27:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1326:35:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":22483,"nodeType":"ExpressionStatement","src":"1326:35:72"}]},"id":22485,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22467,"mutability":"mutable","name":"asset_","nameLocation":"1291:6:72","nodeType":"VariableDeclaration","scope":22485,"src":"1284:13:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":22466,"nodeType":"UserDefinedTypeName","pathNode":{"id":22465,"name":"IERC20","nameLocations":["1284:6:72"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"1284:6:72"},"referencedDeclaration":8656,"src":"1284:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1283:15:72"},"returnParameters":{"id":22469,"nodeType":"ParameterList","parameters":[],"src":"1299:0:72"},"scope":22785,"src":"1272:94:72","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[22307],"body":{"id":22533,"nodeType":"Block","src":"1428:293:72","statements":[{"assignments":[22493],"declarations":[{"constant":false,"id":22493,"mutability":"mutable","name":"fail","nameLocation":"1454:4:72","nodeType":"VariableDeclaration","scope":22533,"src":"1434:24:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22492,"nodeType":"UserDefinedTypeName","pathNode":{"id":22491,"name":"DummyStorage","nameLocations":["1434:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"1434:12:72"},"referencedDeclaration":22443,"src":"1434:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"id":22500,"initialValue":{"arguments":[{"id":22496,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"1472:8:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":22497,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22443,"src":"1483:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":22498,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1482:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_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_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":22494,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1461:3:72","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22495,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1465:6:72","memberName":"decode","nodeType":"MemberAccess","src":"1461:10:72","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1461:36:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"nodeType":"VariableDeclarationStatement","src":"1434:63:72"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":22508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":22503,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22493,"src":"1518:4:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}],"expression":{"id":22501,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1507:3:72","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22502,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1511:6:72","memberName":"encode","nodeType":"MemberAccess","src":"1507:10:72","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":22504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:16:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:6:72","memberName":"length","nodeType":"MemberAccess","src":"1507:23:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":22506,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"1534:8:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":22507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1543:6:72","memberName":"length","nodeType":"MemberAccess","src":"1534:15:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1507:42:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22512,"nodeType":"IfStatement","src":"1503:75:72","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":22509,"name":"NoExtraDataAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22432,"src":"1558:18:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":22510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1558:20:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22511,"nodeType":"RevertStatement","src":"1551:27:72"}},{"expression":{"id":22520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":22516,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22424,"src":"1609:11:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":22513,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1584:11:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":22515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1596:12:72","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"1584:24:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":22517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:37:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":22518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1622:5:72","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"1584:43:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22519,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"1630:8:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1584:54:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":22521,"nodeType":"ExpressionStatement","src":"1584:54:72"},{"condition":{"expression":{"id":22522,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22493,"src":"1648:4:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1653:11:72","memberName":"failConnect","nodeType":"MemberAccess","referencedDeclaration":22436,"src":"1648:16:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22528,"nodeType":"IfStatement","src":"1644:44:72","trueBody":{"errorCall":{"arguments":[{"hexValue":"636f6e6e656374","id":22525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1678:9:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324","typeString":"literal_string \"connect\""},"value":"connect"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324","typeString":"literal_string \"connect\""}],"id":22524,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"1673:4:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":22526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1673:15:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22527,"nodeType":"RevertStatement","src":"1666:22:72"}},{"eventCall":{"arguments":[{"id":22530,"name":"initData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22487,"src":"1707:8:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22529,"name":"Connect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22459,"src":"1699:7:72","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory)"}},"id":22531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1699:17:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22532,"nodeType":"EmitStatement","src":"1694:22:72"}]},"functionSelector":"9cd47128","id":22534,"implemented":true,"kind":"function","modifiers":[],"name":"connect","nameLocation":"1379:7:72","nodeType":"FunctionDefinition","overrides":{"id":22489,"nodeType":"OverrideSpecifier","overrides":[],"src":"1419:8:72"},"parameters":{"id":22488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22487,"mutability":"mutable","name":"initData","nameLocation":"1400:8:72","nodeType":"VariableDeclaration","scope":22534,"src":"1387:21:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22486,"name":"bytes","nodeType":"ElementaryTypeName","src":"1387:5:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1386:23:72"},"returnParameters":{"id":22490,"nodeType":"ParameterList","parameters":[],"src":"1428:0:72"},"scope":22785,"src":"1370:351:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22551,"nodeType":"Block","src":"1792:89:72","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":22544,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22424,"src":"1841:11:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":22542,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"1816:11:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":22543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1828:12:72","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"1816:24:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":22545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1816:37:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":22546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1854:5:72","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"1816:43:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"components":[{"id":22547,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22443,"src":"1862:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":22548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1861:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_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_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":22540,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1805:3:72","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1809:6:72","memberName":"decode","nodeType":"MemberAccess","src":"1805:10:72","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:71:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":22539,"id":22550,"nodeType":"Return","src":"1798:78:72"}]},"id":22552,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"1734:11:72","nodeType":"FunctionDefinition","parameters":{"id":22535,"nodeType":"ParameterList","parameters":[],"src":"1745:2:72"},"returnParameters":{"id":22539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22552,"src":"1771:19:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22537,"nodeType":"UserDefinedTypeName","pathNode":{"id":22536,"name":"DummyStorage","nameLocations":["1771:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"1771:12:72"},"referencedDeclaration":22443,"src":"1771:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1770:21:72"},"scope":22785,"src":"1725:156:72","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":22572,"nodeType":"Block","src":"1977:97:72","statements":[{"expression":{"arguments":[{"arguments":[{"id":22566,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22424,"src":"2040:11:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":22563,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22554,"src":"2016:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22562,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"2001:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExposeStorage_$22298_$","typeString":"type(contract IExposeStorage)"}},"id":22564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:25:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExposeStorage_$22298","typeString":"contract IExposeStorage"}},"id":22565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2027:12:72","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":22297,"src":"2001:38:72","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes32) view external returns (bytes memory)"}},"id":22567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:51:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":22568,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22443,"src":"2055:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":22569,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2054:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_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_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":22560,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1990:3:72","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1994:6:72","memberName":"decode","nodeType":"MemberAccess","src":"1990:10:72","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:79:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":22559,"id":22571,"nodeType":"Return","src":"1983:86:72"}]},"id":22573,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageForViews","nameLocation":"1894:19:72","nodeType":"FunctionDefinition","parameters":{"id":22555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22554,"mutability":"mutable","name":"contract_","nameLocation":"1922:9:72","nodeType":"VariableDeclaration","scope":22573,"src":"1914:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22553,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1913:19:72"},"returnParameters":{"id":22559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22573,"src":"1956:19:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22557,"nodeType":"UserDefinedTypeName","pathNode":{"id":22556,"name":"DummyStorage","nameLocations":["1956:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"1956:12:72"},"referencedDeclaration":22443,"src":"1956:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"1955:21:72"},"scope":22785,"src":"1885:189:72","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[22313],"body":{"id":22591,"nodeType":"Block","src":"2128:98:72","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22579,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22552,"src":"2138:11:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2138:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2152:14:72","memberName":"failDisconnect","nodeType":"MemberAccess","referencedDeclaration":22438,"src":"2138:28:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22586,"nodeType":"IfStatement","src":"2134:59:72","trueBody":{"errorCall":{"arguments":[{"hexValue":"646973636f6e6e656374","id":22583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2180:12:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39","typeString":"literal_string \"disconnect\""},"value":"disconnect"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39","typeString":"literal_string \"disconnect\""}],"id":22582,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"2175:4:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":22584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2175:18:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22585,"nodeType":"RevertStatement","src":"2168:25:72"}},{"eventCall":{"arguments":[{"id":22588,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22575,"src":"2215:5:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":22587,"name":"Disconnect","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22455,"src":"2204:10:72","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":22589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:17:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22590,"nodeType":"EmitStatement","src":"2199:22:72"}]},"functionSelector":"5a117456","id":22592,"implemented":true,"kind":"function","modifiers":[],"name":"disconnect","nameLocation":"2087:10:72","nodeType":"FunctionDefinition","overrides":{"id":22577,"nodeType":"OverrideSpecifier","overrides":[],"src":"2119:8:72"},"parameters":{"id":22576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22575,"mutability":"mutable","name":"force","nameLocation":"2103:5:72","nodeType":"VariableDeclaration","scope":22592,"src":"2098:10:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":22574,"name":"bool","nodeType":"ElementaryTypeName","src":"2098:4:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2097:12:72"},"returnParameters":{"id":22578,"nodeType":"ParameterList","parameters":[],"src":"2128:0:72"},"scope":22785,"src":"2078:148:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[22367],"body":{"id":22612,"nodeType":"Block","src":"2317:104:72","statements":[{"condition":{"expression":{"arguments":[{"id":22601,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22594,"src":"2347:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22600,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22573,"src":"2327:19:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2327:30:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22603,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2358:12:72","memberName":"failWithdraw","nodeType":"MemberAccess","referencedDeclaration":22442,"src":"2327:43:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22606,"nodeType":"IfStatement","src":"2323:57:72","trueBody":{"expression":{"hexValue":"30","id":22604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2379:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22599,"id":22605,"nodeType":"Return","src":"2372:8:72"}},{"expression":{"arguments":[{"id":22609,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22426,"src":"2410:5:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22607,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"2393:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":22608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2400:9:72","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2393:16:72","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2393:23:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22599,"id":22611,"nodeType":"Return","src":"2386:30:72"}]},"functionSelector":"ce96cb77","id":22613,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"2239:11:72","nodeType":"FunctionDefinition","overrides":{"id":22596,"nodeType":"OverrideSpecifier","overrides":[],"src":"2290:8:72"},"parameters":{"id":22595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22594,"mutability":"mutable","name":"contract_","nameLocation":"2259:9:72","nodeType":"VariableDeclaration","scope":22613,"src":"2251:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22593,"name":"address","nodeType":"ElementaryTypeName","src":"2251:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2250:19:72"},"returnParameters":{"id":22599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22613,"src":"2308:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22597,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2307:9:72"},"scope":22785,"src":"2230:191:72","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22359],"body":{"id":22634,"nodeType":"Block","src":"2511:97:72","statements":[{"condition":{"expression":{"arguments":[{"id":22622,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22615,"src":"2541:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22621,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22573,"src":"2521:19:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2521:30:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2552:11:72","memberName":"failDeposit","nodeType":"MemberAccess","referencedDeclaration":22440,"src":"2521:42:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22627,"nodeType":"IfStatement","src":"2517:56:72","trueBody":{"expression":{"hexValue":"30","id":22625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2572:1:72","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":22620,"id":22626,"nodeType":"Return","src":"2565:8:72"}},{"expression":{"expression":{"arguments":[{"id":22630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2591:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":22629,"name":"uint256","nodeType":"ElementaryTypeName","src":"2591:7:72","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":22628,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2586:4:72","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":22631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2586:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":22632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2600:3:72","memberName":"max","nodeType":"MemberAccess","src":"2586:17:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22620,"id":22633,"nodeType":"Return","src":"2579:24:72"}]},"functionSelector":"402d267d","id":22635,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"2434:10:72","nodeType":"FunctionDefinition","overrides":{"id":22617,"nodeType":"OverrideSpecifier","overrides":[],"src":"2484:8:72"},"parameters":{"id":22616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22615,"mutability":"mutable","name":"contract_","nameLocation":"2453:9:72","nodeType":"VariableDeclaration","scope":22635,"src":"2445:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22614,"name":"address","nodeType":"ElementaryTypeName","src":"2445:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:19:72"},"returnParameters":{"id":22620,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22619,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22635,"src":"2502:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22618,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2501:9:72"},"scope":22785,"src":"2425:183:72","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22343],"body":{"id":22648,"nodeType":"Block","src":"2683:33:72","statements":[{"expression":{"arguments":[{"id":22645,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"2704:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":22644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2696:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22643,"name":"address","nodeType":"ElementaryTypeName","src":"2696:7:72","typeDescriptions":{}}},"id":22646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2696:15:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":22642,"id":22647,"nodeType":"Return","src":"2689:22:72"}]},"functionSelector":"9c4667a2","id":22649,"implemented":true,"kind":"function","modifiers":[],"name":"asset","nameLocation":"2621:5:72","nodeType":"FunctionDefinition","overrides":{"id":22639,"nodeType":"OverrideSpecifier","overrides":[],"src":"2656:8:72"},"parameters":{"id":22638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22649,"src":"2627:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22636,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2626:9:72"},"returnParameters":{"id":22642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22649,"src":"2674:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22640,"name":"address","nodeType":"ElementaryTypeName","src":"2674:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2673:9:72"},"scope":22785,"src":"2612:104:72","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22351],"body":{"id":22662,"nodeType":"Block","src":"2804:41:72","statements":[{"expression":{"arguments":[{"id":22659,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22426,"src":"2834:5:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22657,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"2817:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":22658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2824:9:72","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":8613,"src":"2817:16:72","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":22660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2817:23:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22656,"id":22661,"nodeType":"Return","src":"2810:30:72"}]},"functionSelector":"f3e0ffbf","id":22663,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"2729:11:72","nodeType":"FunctionDefinition","overrides":{"id":22653,"nodeType":"OverrideSpecifier","overrides":[],"src":"2770:8:72"},"parameters":{"id":22652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22663,"src":"2741:7:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22650,"name":"address","nodeType":"ElementaryTypeName","src":"2741:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2740:9:72"},"returnParameters":{"id":22656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22655,"mutability":"mutable","name":"assets","nameLocation":"2796:6:72","nodeType":"VariableDeclaration","scope":22663,"src":"2788:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22654,"name":"uint256","nodeType":"ElementaryTypeName","src":"2788:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2787:16:72"},"scope":22785,"src":"2720:125:72","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[22325],"body":{"id":22693,"nodeType":"Block","src":"2901:160:72","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22669,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22552,"src":"2911:11:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2911:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22671,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2925:12:72","memberName":"failWithdraw","nodeType":"MemberAccess","referencedDeclaration":22442,"src":"2911:26:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22676,"nodeType":"IfStatement","src":"2907:55:72","trueBody":{"errorCall":{"arguments":[{"hexValue":"7769746864726177","id":22673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2951:10:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77","typeString":"literal_string \"withdraw\""},"value":"withdraw"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77","typeString":"literal_string \"withdraw\""}],"id":22672,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"2946:4:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":22674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2946:16:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22675,"nodeType":"RevertStatement","src":"2939:23:72"}},{"expression":{"arguments":[{"id":22681,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"2999:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"arguments":[{"id":22684,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3015:4:72","typeDescriptions":{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DummyInvestStrategy_$22785","typeString":"contract DummyInvestStrategy"}],"id":22683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3007:7:72","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":22682,"name":"address","nodeType":"ElementaryTypeName","src":"3007:7:72","typeDescriptions":{}}},"id":22685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3007:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22686,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22665,"src":"3022:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":22678,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22426,"src":"2981:5:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22677,"name":"OtherAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22407,"src":"2968:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OtherAddress_$22407_$","typeString":"type(contract OtherAddress)"}},"id":22679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:19:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OtherAddress_$22407","typeString":"contract OtherAddress"}},"id":22680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2988:10:72","memberName":"transferTo","nodeType":"MemberAccess","referencedDeclaration":22406,"src":"2968:30:72","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$8656_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256) external"}},"id":22687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:61:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22688,"nodeType":"ExpressionStatement","src":"2968:61:72"},{"eventCall":{"arguments":[{"id":22690,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22665,"src":"3049:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22689,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22451,"src":"3040:8:72","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":22691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:16:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22692,"nodeType":"EmitStatement","src":"3035:21:72"}]},"functionSelector":"2e1a7d4d","id":22694,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"2858:8:72","nodeType":"FunctionDefinition","overrides":{"id":22667,"nodeType":"OverrideSpecifier","overrides":[],"src":"2892:8:72"},"parameters":{"id":22666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22665,"mutability":"mutable","name":"assets","nameLocation":"2875:6:72","nodeType":"VariableDeclaration","scope":22694,"src":"2867:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22664,"name":"uint256","nodeType":"ElementaryTypeName","src":"2867:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2866:16:72"},"returnParameters":{"id":22668,"nodeType":"ParameterList","parameters":[],"src":"2901:0:72"},"scope":22785,"src":"2849:212:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[22319],"body":{"id":22719,"nodeType":"Block","src":"3116:126:72","statements":[{"condition":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22700,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22552,"src":"3126:11:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function () view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3126:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"id":22702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3140:11:72","memberName":"failDeposit","nodeType":"MemberAccess","referencedDeclaration":22440,"src":"3126:25:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22707,"nodeType":"IfStatement","src":"3122:53:72","trueBody":{"errorCall":{"arguments":[{"hexValue":"6465706f736974","id":22704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3165:9:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01","typeString":"literal_string \"deposit\""},"value":"deposit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01","typeString":"literal_string \"deposit\""}],"id":22703,"name":"Fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"3160:4:72","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":22705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3160:15:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":22706,"nodeType":"RevertStatement","src":"3153:22:72"}},{"expression":{"arguments":[{"id":22711,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22426,"src":"3197:5:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22712,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22696,"src":"3204:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22708,"name":"_asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22412,"src":"3181:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"id":22710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3188:8:72","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":8623,"src":"3181:15:72","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":22713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:30:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22714,"nodeType":"ExpressionStatement","src":"3181:30:72"},{"eventCall":{"arguments":[{"id":22716,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22696,"src":"3230:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":22715,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22447,"src":"3222:7:72","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":22717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3222:15:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22718,"nodeType":"EmitStatement","src":"3217:20:72"}]},"functionSelector":"b6b55f25","id":22720,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"3074:7:72","nodeType":"FunctionDefinition","overrides":{"id":22698,"nodeType":"OverrideSpecifier","overrides":[],"src":"3107:8:72"},"parameters":{"id":22697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22696,"mutability":"mutable","name":"assets","nameLocation":"3090:6:72","nodeType":"VariableDeclaration","scope":22720,"src":"3082:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22695,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3081:16:72"},"returnParameters":{"id":22699,"nodeType":"ParameterList","parameters":[],"src":"3116:0:72"},"scope":22785,"src":"3065:177:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[22335],"body":{"id":22770,"nodeType":"Block","src":"3340:298:72","statements":[{"assignments":[22731],"declarations":[{"constant":false,"id":22731,"mutability":"mutable","name":"checkedMethod","nameLocation":"3361:13:72","nodeType":"VariableDeclaration","scope":22770,"src":"3346:28:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"},"typeName":{"id":22730,"nodeType":"UserDefinedTypeName","pathNode":{"id":22729,"name":"ForwardMethods","nameLocations":["3346:14:72"],"nodeType":"IdentifierPath","referencedDeclaration":22434,"src":"3346:14:72"},"referencedDeclaration":22434,"src":"3346:14:72","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"visibility":"internal"}],"id":22735,"initialValue":{"arguments":[{"id":22733,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22722,"src":"3392:6:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":22732,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22434,"src":"3377:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$22434_$","typeString":"type(enum DummyInvestStrategy.ForwardMethods)"}},"id":22734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3377:22:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"nodeType":"VariableDeclarationStatement","src":"3346:53:72"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"},"id":22739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":22736,"name":"checkedMethod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22731,"src":"3409:13:72","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":22737,"name":"ForwardMethods","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22434,"src":"3426:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ForwardMethods_$22434_$","typeString":"type(enum DummyInvestStrategy.ForwardMethods)"}},"id":22738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3441:7:72","memberName":"setFail","nodeType":"MemberAccess","referencedDeclaration":22433,"src":"3426:22:72","typeDescriptions":{"typeIdentifier":"t_enum$_ForwardMethods_$22434","typeString":"enum DummyInvestStrategy.ForwardMethods"}},"src":"3409:39:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":22764,"nodeType":"IfStatement","src":"3405:207:72","trueBody":{"id":22763,"nodeType":"Block","src":"3450:162:72","statements":[{"assignments":[22742],"declarations":[{"constant":false,"id":22742,"mutability":"mutable","name":"fail","nameLocation":"3478:4:72","nodeType":"VariableDeclaration","scope":22763,"src":"3458:24:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22741,"nodeType":"UserDefinedTypeName","pathNode":{"id":22740,"name":"DummyStorage","nameLocations":["3458:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"3458:12:72"},"referencedDeclaration":22443,"src":"3458:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"id":22749,"initialValue":{"arguments":[{"id":22745,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22724,"src":"3496:6:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":22746,"name":"DummyStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22443,"src":"3505:12:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}}],"id":22747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3504:14:72","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_DummyStorage_$22443_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_$22443_storage_ptr_$","typeString":"type(struct DummyInvestStrategy.DummyStorage storage pointer)"}],"expression":{"id":22743,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3485:3:72","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":22744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3489:6:72","memberName":"decode","nodeType":"MemberAccess","src":"3485:10:72","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":22748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3485:34:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"nodeType":"VariableDeclarationStatement","src":"3458:61:72"},{"expression":{"id":22757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":22753,"name":"storageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22424,"src":"3552:11:72","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":22750,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"3527:11:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":22752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3539:12:72","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"3527:24:72","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":22754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:37:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":22755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3565:5:72","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"3527:43:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22756,"name":"params","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22724,"src":"3573:6:72","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3527:52:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":22758,"nodeType":"ExpressionStatement","src":"3527:52:72"},{"eventCall":{"arguments":[{"id":22760,"name":"fail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22742,"src":"3600:4:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}],"id":22759,"name":"SetFail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22464,"src":"3592:7:72","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_struct$_DummyStorage_$22443_memory_ptr_$returns$__$","typeString":"function (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3592:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22762,"nodeType":"EmitStatement","src":"3587:18:72"}]}},{"expression":{"arguments":[{"hexValue":"","id":22767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3630:2:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":22766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3624:5:72","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":22765,"name":"bytes","nodeType":"ElementaryTypeName","src":"3624:5:72","typeDescriptions":{}}},"id":22768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3624:9:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":22728,"id":22769,"nodeType":"Return","src":"3617:16:72"}]},"functionSelector":"0981b1c2","id":22771,"implemented":true,"kind":"function","modifiers":[],"name":"forwardEntryPoint","nameLocation":"3255:17:72","nodeType":"FunctionDefinition","parameters":{"id":22725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22722,"mutability":"mutable","name":"method","nameLocation":"3279:6:72","nodeType":"VariableDeclaration","scope":22771,"src":"3273:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":22721,"name":"uint8","nodeType":"ElementaryTypeName","src":"3273:5:72","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":22724,"mutability":"mutable","name":"params","nameLocation":"3300:6:72","nodeType":"VariableDeclaration","scope":22771,"src":"3287:19:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22723,"name":"bytes","nodeType":"ElementaryTypeName","src":"3287:5:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3272:35:72"},"returnParameters":{"id":22728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22771,"src":"3326:12:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22726,"name":"bytes","nodeType":"ElementaryTypeName","src":"3326:5:72","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3325:14:72"},"scope":22785,"src":"3246:392:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":22783,"nodeType":"Block","src":"3722:48:72","statements":[{"expression":{"arguments":[{"id":22780,"name":"contract_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22773,"src":"3755:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":22779,"name":"_getStorageForViews","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22573,"src":"3735:19:72","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_DummyStorage_$22443_memory_ptr_$","typeString":"function (address) view returns (struct DummyInvestStrategy.DummyStorage memory)"}},"id":22781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:30:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage memory"}},"functionReturnParameters":22778,"id":22782,"nodeType":"Return","src":"3728:37:72"}]},"functionSelector":"728d6fd8","id":22784,"implemented":true,"kind":"function","modifiers":[],"name":"getFail","nameLocation":"3651:7:72","nodeType":"FunctionDefinition","parameters":{"id":22774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22773,"mutability":"mutable","name":"contract_","nameLocation":"3667:9:72","nodeType":"VariableDeclaration","scope":22784,"src":"3659:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22772,"name":"address","nodeType":"ElementaryTypeName","src":"3659:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3658:19:72"},"returnParameters":{"id":22778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22784,"src":"3701:19:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_memory_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"},"typeName":{"id":22776,"nodeType":"UserDefinedTypeName","pathNode":{"id":22775,"name":"DummyStorage","nameLocations":["3701:12:72"],"nodeType":"IdentifierPath","referencedDeclaration":22443,"src":"3701:12:72"},"referencedDeclaration":22443,"src":"3701:12:72","typeDescriptions":{"typeIdentifier":"t_struct$_DummyStorage_$22443_storage_ptr","typeString":"struct DummyInvestStrategy.DummyStorage"}},"visibility":"internal"}],"src":"3700:21:72"},"scope":22785,"src":"3642:128:72","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":22786,"src":"622:3150:72","usedErrors":[22430,22432],"usedEvents":[22447,22451,22455,22459,22464]}],"src":"39:3734:72"},"id":72},"contracts/mock/SingleStrategyERC4626.sol":{"ast":{"absolutePath":"contracts/mock/SingleStrategyERC4626.sol","exportedSymbols":{"Address":[9352],"IERC20":[8656],"IERC20Metadata":[8682],"IExposeStorage":[22298],"IInvestStrategy":[22374],"InvestStrategyClient":[15775],"Math":[11309],"PermissionedERC4626":[18512],"SafeERC20":[9093],"SingleStrategyERC4626":[23223],"StorageSlot":[9667]},"id":23224,"license":"Apache-2.0","nodeType":"SourceUnit","nodes":[{"id":22787,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"39:23:73"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","id":22789,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":8683,"src":"64:97:73","symbolAliases":[{"foreign":{"id":22788,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"72:14:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":22791,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":8657,"src":"162:70:73","symbolAliases":[{"foreign":{"id":22790,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8656,"src":"170:6:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":22793,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":9353,"src":"233:66:73","symbolAliases":[{"foreign":{"id":22792,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9352,"src":"241:7:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","id":22795,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":9668,"src":"300:74:73","symbolAliases":[{"foreign":{"id":22794,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"308:11:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":22797,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":9094,"src":"375:82:73","symbolAliases":[{"foreign":{"id":22796,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9093,"src":"383:9:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":22799,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":11310,"src":"458:65:73","symbolAliases":[{"foreign":{"id":22798,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"466:4:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/PermissionedERC4626.sol","file":"../PermissionedERC4626.sol","id":22801,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":18513,"src":"524:63:73","symbolAliases":[{"foreign":{"id":22800,"name":"PermissionedERC4626","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18512,"src":"532:19:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IInvestStrategy.sol","file":"../interfaces/IInvestStrategy.sol","id":22803,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":22375,"src":"588:66:73","symbolAliases":[{"foreign":{"id":22802,"name":"IInvestStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22374,"src":"596:15:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IExposeStorage.sol","file":"../interfaces/IExposeStorage.sol","id":22805,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":22299,"src":"655:64:73","symbolAliases":[{"foreign":{"id":22804,"name":"IExposeStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22298,"src":"663:14:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/InvestStrategyClient.sol","file":"../InvestStrategyClient.sol","id":22807,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":23224,"sourceUnit":15776,"src":"720:65:73","symbolAliases":[{"foreign":{"id":22806,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"728:20:73","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":22809,"name":"PermissionedERC4626","nameLocations":["1699:19:73"],"nodeType":"IdentifierPath","referencedDeclaration":18512,"src":"1699:19:73"},"id":22810,"nodeType":"InheritanceSpecifier","src":"1699:19:73"},{"baseName":{"id":22811,"name":"IExposeStorage","nameLocations":["1720:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":22298,"src":"1720:14:73"},"id":22812,"nodeType":"InheritanceSpecifier","src":"1720:14:73"}],"canonicalName":"SingleStrategyERC4626","contractDependencies":[],"contractKind":"contract","documentation":{"id":22808,"nodeType":"StructuredDocumentation","src":"787:877:73","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":23223,"linearizedBaseContracts":[23223,22298,18512,4427,7538,3663,7590,8682,8656,3046,7548,2610,4513,9703,4892,4473,2864],"name":"SingleStrategyERC4626","nameLocation":"1674:21:73","nodeType":"ContractDefinition","nodes":[{"global":false,"id":22816,"libraryName":{"id":22813,"name":"SafeERC20","nameLocations":["1745:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":9093,"src":"1745:9:73"},"nodeType":"UsingForDirective","src":"1739:35:73","typeName":{"id":22815,"nodeType":"UserDefinedTypeName","pathNode":{"id":22814,"name":"IERC20Metadata","nameLocations":["1759:14:73"],"nodeType":"IdentifierPath","referencedDeclaration":8682,"src":"1759:14:73"},"referencedDeclaration":8682,"src":"1759:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}}},{"global":false,"id":22819,"libraryName":{"id":22817,"name":"Address","nameLocations":["1783:7:73"],"nodeType":"IdentifierPath","referencedDeclaration":9352,"src":"1783:7:73"},"nodeType":"UsingForDirective","src":"1777:26:73","typeName":{"id":22818,"name":"address","nodeType":"ElementaryTypeName","src":"1795:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":22823,"libraryName":{"id":22820,"name":"InvestStrategyClient","nameLocations":["1812:20:73"],"nodeType":"IdentifierPath","referencedDeclaration":15775,"src":"1812:20:73"},"nodeType":"UsingForDirective","src":"1806:47:73","typeName":{"id":22822,"nodeType":"UserDefinedTypeName","pathNode":{"id":22821,"name":"IInvestStrategy","nameLocations":["1837:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1837:15:73"},"referencedDeclaration":22374,"src":"1837:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}}},{"constant":true,"functionSelector":"baaf36b5","id":22828,"mutability":"constant","name":"SET_STRATEGY_ROLE","nameLocation":"1881:17:73","nodeType":"VariableDeclaration","scope":23223,"src":"1857:74:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22824,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1857:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5345545f53545241544547595f524f4c45","id":22826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1911:19:73","typeDescriptions":{"typeIdentifier":"t_stringliteral_2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb548","typeString":"literal_string \"SET_STRATEGY_ROLE\""},"value":"SET_STRATEGY_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb548","typeString":"literal_string \"SET_STRATEGY_ROLE\""}],"id":22825,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1901:9:73","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":22827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":false,"id":22831,"mutability":"mutable","name":"_strategy","nameLocation":"1961:9:73","nodeType":"VariableDeclaration","scope":23223,"src":"1936:34:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22830,"nodeType":"UserDefinedTypeName","pathNode":{"id":22829,"name":"IInvestStrategy","nameLocations":["1936:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"1936:15:73"},"referencedDeclaration":22374,"src":"1936:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"anonymous":false,"eventSelector":"254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5","id":22839,"name":"StrategyChanged","nameLocation":"2066:15:73","nodeType":"EventDefinition","parameters":{"id":22838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22834,"indexed":false,"mutability":"mutable","name":"oldStrategy","nameLocation":"2098:11:73","nodeType":"VariableDeclaration","scope":22839,"src":"2082:27:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22833,"nodeType":"UserDefinedTypeName","pathNode":{"id":22832,"name":"IInvestStrategy","nameLocations":["2082:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2082:15:73"},"referencedDeclaration":22374,"src":"2082:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":22837,"indexed":false,"mutability":"mutable","name":"newStrategy","nameLocation":"2127:11:73","nodeType":"VariableDeclaration","scope":22839,"src":"2111:27:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22836,"nodeType":"UserDefinedTypeName","pathNode":{"id":22835,"name":"IInvestStrategy","nameLocations":["2111:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"2111:15:73"},"referencedDeclaration":22374,"src":"2111:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"2081:58:73"},"src":"2060:80:73"},{"anonymous":false,"eventSelector":"ad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d728","id":22843,"name":"WithdrawFailed","nameLocation":"2149:14:73","nodeType":"EventDefinition","parameters":{"id":22842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22841,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2170:6:73","nodeType":"VariableDeclaration","scope":22843,"src":"2164:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22840,"name":"bytes","nodeType":"ElementaryTypeName","src":"2164:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2163:14:73"},"src":"2143:35:73"},{"anonymous":false,"eventSelector":"f8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd3","id":22847,"name":"DepositFailed","nameLocation":"2187:13:73","nodeType":"EventDefinition","parameters":{"id":22846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22845,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2207:6:73","nodeType":"VariableDeclaration","scope":22847,"src":"2201:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22844,"name":"bytes","nodeType":"ElementaryTypeName","src":"2201:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2200:14:73"},"src":"2181:34:73"},{"anonymous":false,"eventSelector":"9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8","id":22851,"name":"DisconnectFailed","nameLocation":"2224:16:73","nodeType":"EventDefinition","parameters":{"id":22850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22849,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"2247:6:73","nodeType":"VariableDeclaration","scope":22851,"src":"2241:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22848,"name":"bytes","nodeType":"ElementaryTypeName","src":"2241:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2240:14:73"},"src":"2218:37:73"},{"errorSelector":"426213ba","id":22853,"name":"OnlyStrategyStorageExposed","nameLocation":"2265:26:73","nodeType":"ErrorDefinition","parameters":{"id":22852,"nodeType":"ParameterList","parameters":[],"src":"2291:2:73"},"src":"2259:35:73"},{"body":{"id":22860,"nodeType":"Block","src":"2363:33:73","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":22857,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2832,"src":"2369:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":22858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2369:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22859,"nodeType":"ExpressionStatement","src":"2369:22:73"}]},"documentation":{"id":22854,"nodeType":"StructuredDocumentation","src":"2298:48:73","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":22861,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":22855,"nodeType":"ParameterList","parameters":[],"src":"2360:2:73"},"returnParameters":{"id":22856,"nodeType":"ParameterList","parameters":[],"src":"2363:0:73"},"scope":23223,"src":"2349:47:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":22890,"nodeType":"Block","src":"3108:100:73","statements":[{"expression":{"arguments":[{"id":22882,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22864,"src":"3143:5:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":22883,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22866,"src":"3150:7:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":22884,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22868,"src":"3159:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22885,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22871,"src":"3167:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},{"id":22886,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22874,"src":"3175:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":22887,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22876,"src":"3186:16:73","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_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22881,"name":"__SingleStrategyERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22923,"src":"3114:28:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_contract$_IERC20_$8656_$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (string memory,string memory,address,contract IERC20,contract IInvestStrategy,bytes memory)"}},"id":22888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3114:89:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22889,"nodeType":"ExpressionStatement","src":"3114:89:73"}]},"documentation":{"id":22862,"nodeType":"StructuredDocumentation","src":"2400:497:73","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 admin_ User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\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":"02a602e9","id":22891,"implemented":true,"kind":"function","modifiers":[{"id":22879,"kind":"modifierInvocation","modifierName":{"id":22878,"name":"initializer","nameLocations":["3096:11:73"],"nodeType":"IdentifierPath","referencedDeclaration":2718,"src":"3096:11:73"},"nodeType":"ModifierInvocation","src":"3096:11:73"}],"name":"initialize","nameLocation":"2909:10:73","nodeType":"FunctionDefinition","parameters":{"id":22877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22864,"mutability":"mutable","name":"name_","nameLocation":"2939:5:73","nodeType":"VariableDeclaration","scope":22891,"src":"2925:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22863,"name":"string","nodeType":"ElementaryTypeName","src":"2925:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":22866,"mutability":"mutable","name":"symbol_","nameLocation":"2964:7:73","nodeType":"VariableDeclaration","scope":22891,"src":"2950:21:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22865,"name":"string","nodeType":"ElementaryTypeName","src":"2950:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":22868,"mutability":"mutable","name":"admin_","nameLocation":"2985:6:73","nodeType":"VariableDeclaration","scope":22891,"src":"2977:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22867,"name":"address","nodeType":"ElementaryTypeName","src":"2977:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22871,"mutability":"mutable","name":"asset_","nameLocation":"3004:6:73","nodeType":"VariableDeclaration","scope":22891,"src":"2997:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":22870,"nodeType":"UserDefinedTypeName","pathNode":{"id":22869,"name":"IERC20","nameLocations":["2997:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"2997:6:73"},"referencedDeclaration":8656,"src":"2997:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22874,"mutability":"mutable","name":"strategy_","nameLocation":"3032:9:73","nodeType":"VariableDeclaration","scope":22891,"src":"3016:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22873,"nodeType":"UserDefinedTypeName","pathNode":{"id":22872,"name":"IInvestStrategy","nameLocations":["3016:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3016:15:73"},"referencedDeclaration":22374,"src":"3016:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":22876,"mutability":"mutable","name":"initStrategyData","nameLocation":"3060:16:73","nodeType":"VariableDeclaration","scope":22891,"src":"3047:29:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22875,"name":"bytes","nodeType":"ElementaryTypeName","src":"3047:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2919:161:73"},"returnParameters":{"id":22880,"nodeType":"ParameterList","parameters":[],"src":"3108:0:73"},"scope":23223,"src":"2900:308:73","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":22922,"nodeType":"Block","src":"3488:142:73","statements":[{"expression":{"arguments":[{"id":22911,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22893,"src":"3521:5:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":22912,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22895,"src":"3528:7:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":22913,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22897,"src":"3537:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":22914,"name":"asset_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22900,"src":"3545:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}],"id":22910,"name":"__PermissionedERC4626_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18426,"src":"3494:26:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_contract$_IERC20_$8656_$returns$__$","typeString":"function (string memory,string memory,address,contract IERC20)"}},"id":22915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3494:58:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22916,"nodeType":"ExpressionStatement","src":"3494:58:73"},{"expression":{"arguments":[{"id":22918,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22903,"src":"3597:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":22919,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22905,"src":"3608:16:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":22917,"name":"__SingleStrategyERC4626_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22951,"src":"3558:38:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":22920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3558:67:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22921,"nodeType":"ExpressionStatement","src":"3558:67:73"}]},"id":22923,"implemented":true,"kind":"function","modifiers":[{"id":22908,"kind":"modifierInvocation","modifierName":{"id":22907,"name":"onlyInitializing","nameLocations":["3471:16:73"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3471:16:73"},"nodeType":"ModifierInvocation","src":"3471:16:73"}],"name":"__SingleStrategyERC4626_init","nameLocation":"3272:28:73","nodeType":"FunctionDefinition","parameters":{"id":22906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22893,"mutability":"mutable","name":"name_","nameLocation":"3320:5:73","nodeType":"VariableDeclaration","scope":22923,"src":"3306:19:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22892,"name":"string","nodeType":"ElementaryTypeName","src":"3306:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":22895,"mutability":"mutable","name":"symbol_","nameLocation":"3345:7:73","nodeType":"VariableDeclaration","scope":22923,"src":"3331:21:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":22894,"name":"string","nodeType":"ElementaryTypeName","src":"3331:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":22897,"mutability":"mutable","name":"admin_","nameLocation":"3366:6:73","nodeType":"VariableDeclaration","scope":22923,"src":"3358:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22896,"name":"address","nodeType":"ElementaryTypeName","src":"3358:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22900,"mutability":"mutable","name":"asset_","nameLocation":"3385:6:73","nodeType":"VariableDeclaration","scope":22923,"src":"3378:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"},"typeName":{"id":22899,"nodeType":"UserDefinedTypeName","pathNode":{"id":22898,"name":"IERC20","nameLocations":["3378:6:73"],"nodeType":"IdentifierPath","referencedDeclaration":8656,"src":"3378:6:73"},"referencedDeclaration":8656,"src":"3378:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$8656","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":22903,"mutability":"mutable","name":"strategy_","nameLocation":"3413:9:73","nodeType":"VariableDeclaration","scope":22923,"src":"3397:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22902,"nodeType":"UserDefinedTypeName","pathNode":{"id":22901,"name":"IInvestStrategy","nameLocations":["3397:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3397:15:73"},"referencedDeclaration":22374,"src":"3397:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":22905,"mutability":"mutable","name":"initStrategyData","nameLocation":"3441:16:73","nodeType":"VariableDeclaration","scope":22923,"src":"3428:29:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22904,"name":"bytes","nodeType":"ElementaryTypeName","src":"3428:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3300:161:73"},"returnParameters":{"id":22909,"nodeType":"ParameterList","parameters":[],"src":"3488:0:73"},"scope":23223,"src":"3263:367:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":22950,"nodeType":"Block","src":"3829:110:73","statements":[{"expression":{"id":22935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":22933,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"3835:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":22934,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"3847:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"3835:21:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":22936,"nodeType":"ExpressionStatement","src":"3835:21:73"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":22940,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"3883:5:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":22941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3883:7:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22937,"name":"strategy_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22926,"src":"3862:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":22939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3872:10:73","memberName":"checkAsset","nodeType":"MemberAccess","referencedDeclaration":15637,"src":"3862:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$_t_address_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,address) view"}},"id":22942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:29:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22943,"nodeType":"ExpressionStatement","src":"3862:29:73"},{"expression":{"arguments":[{"id":22947,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22928,"src":"3917:16:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":22944,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"3897:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":22946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3907:9:73","memberName":"dcConnect","nodeType":"MemberAccess","referencedDeclaration":15416,"src":"3897:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$returns$__$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,bytes memory)"}},"id":22948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3897:37:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":22949,"nodeType":"ExpressionStatement","src":"3897:37:73"}]},"id":22951,"implemented":true,"kind":"function","modifiers":[{"id":22931,"kind":"modifierInvocation","modifierName":{"id":22930,"name":"onlyInitializing","nameLocations":["3812:16:73"],"nodeType":"IdentifierPath","referencedDeclaration":2773,"src":"3812:16:73"},"nodeType":"ModifierInvocation","src":"3812:16:73"}],"name":"__SingleStrategyERC4626_init_unchained","nameLocation":"3694:38:73","nodeType":"FunctionDefinition","parameters":{"id":22929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22926,"mutability":"mutable","name":"strategy_","nameLocation":"3754:9:73","nodeType":"VariableDeclaration","scope":22951,"src":"3738:25:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":22925,"nodeType":"UserDefinedTypeName","pathNode":{"id":22924,"name":"IInvestStrategy","nameLocations":["3738:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"3738:15:73"},"referencedDeclaration":22374,"src":"3738:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":22928,"mutability":"mutable","name":"initStrategyData","nameLocation":"3782:16:73","nodeType":"VariableDeclaration","scope":22951,"src":"3769:29:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":22927,"name":"bytes","nodeType":"ElementaryTypeName","src":"3769:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3732:70:73"},"returnParameters":{"id":22932,"nodeType":"ParameterList","parameters":[],"src":"3829:0:73"},"scope":23223,"src":"3685:254:73","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4005],"body":{"id":22971,"nodeType":"Block","src":"4076:77:73","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22962,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"4098:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":22963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4108:11:73","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"4098:21:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":22964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4098:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22967,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22954,"src":"4141:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22965,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4123:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":22966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4129:11:73","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":4005,"src":"4123:17:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":22968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4123:24:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22960,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4089:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":22961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4094:3:73","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"4089:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4089:59:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22959,"id":22970,"nodeType":"Return","src":"4082:66:73"}]},"documentation":{"id":22952,"nodeType":"StructuredDocumentation","src":"3943:47:73","text":" @dev See {IERC4626-maxWithdraw}."},"functionSelector":"ce96cb77","id":22972,"implemented":true,"kind":"function","modifiers":[],"name":"maxWithdraw","nameLocation":"4002:11:73","nodeType":"FunctionDefinition","overrides":{"id":22956,"nodeType":"OverrideSpecifier","overrides":[],"src":"4049:8:73"},"parameters":{"id":22955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22954,"mutability":"mutable","name":"owner","nameLocation":"4022:5:73","nodeType":"VariableDeclaration","scope":22972,"src":"4014:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22953,"name":"address","nodeType":"ElementaryTypeName","src":"4014:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4013:15:73"},"returnParameters":{"id":22959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22958,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":22972,"src":"4067:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22957,"name":"uint256","nodeType":"ElementaryTypeName","src":"4067:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4066:9:73"},"scope":23223,"src":"3993:160:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4018],"body":{"id":23001,"nodeType":"Block","src":"4286:149:73","statements":[{"assignments":[22982],"declarations":[{"constant":false,"id":22982,"mutability":"mutable","name":"maxAssets","nameLocation":"4300:9:73","nodeType":"VariableDeclaration","scope":23001,"src":"4292:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22981,"name":"uint256","nodeType":"ElementaryTypeName","src":"4292:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":22986,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":22983,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"4312:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":22984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4322:11:73","memberName":"maxWithdraw","nodeType":"MemberAccess","referencedDeclaration":15774,"src":"4312:21:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":22985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4312:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4292:43:73"},{"expression":{"arguments":[{"arguments":[{"id":22990,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22982,"src":"4374:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":22991,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4385:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":22992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4390:8:73","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"4385:13:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":22993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4399:5:73","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"4385:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":22989,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4357:16:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":22994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4357:48:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":22997,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22975,"src":"4423:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":22995,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4407:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":22996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4413:9:73","memberName":"maxRedeem","nodeType":"MemberAccess","referencedDeclaration":4018,"src":"4407:15:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":22998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4407:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":22987,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4348:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":22988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4353:3:73","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"4348:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":22999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4348:82:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":22980,"id":23000,"nodeType":"Return","src":"4341:89:73"}]},"documentation":{"id":22973,"nodeType":"StructuredDocumentation","src":"4157:45:73","text":" @dev See {IERC4626-maxRedeem}."},"functionSelector":"d905777e","id":23002,"implemented":true,"kind":"function","modifiers":[],"name":"maxRedeem","nameLocation":"4214:9:73","nodeType":"FunctionDefinition","overrides":{"id":22977,"nodeType":"OverrideSpecifier","overrides":[],"src":"4259:8:73"},"parameters":{"id":22976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22975,"mutability":"mutable","name":"owner","nameLocation":"4232:5:73","nodeType":"VariableDeclaration","scope":23002,"src":"4224:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":22974,"name":"address","nodeType":"ElementaryTypeName","src":"4224:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4223:15:73"},"returnParameters":{"id":22980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23002,"src":"4277:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22978,"name":"uint256","nodeType":"ElementaryTypeName","src":"4277:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4276:9:73"},"scope":23223,"src":"4205:230:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18488],"body":{"id":23022,"nodeType":"Block","src":"4570:75:73","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23013,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"4592:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4602:10:73","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"4592:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":23015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4592:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":23018,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23005,"src":"4633:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23016,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4616:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":23017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4622:10:73","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":18488,"src":"4616:16:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":23019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4616:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23011,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4583:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":23012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4588:3:73","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"4583:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":23020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:57:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23010,"id":23021,"nodeType":"Return","src":"4576:64:73"}]},"documentation":{"id":23003,"nodeType":"StructuredDocumentation","src":"4439:46:73","text":" @dev See {IERC4626-maxDeposit}."},"functionSelector":"402d267d","id":23023,"implemented":true,"kind":"function","modifiers":[],"name":"maxDeposit","nameLocation":"4497:10:73","nodeType":"FunctionDefinition","overrides":{"id":23007,"nodeType":"OverrideSpecifier","overrides":[],"src":"4543:8:73"},"parameters":{"id":23006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23005,"mutability":"mutable","name":"owner","nameLocation":"4516:5:73","nodeType":"VariableDeclaration","scope":23023,"src":"4508:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23004,"name":"address","nodeType":"ElementaryTypeName","src":"4508:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4507:15:73"},"returnParameters":{"id":23010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23009,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23023,"src":"4561:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23008,"name":"uint256","nodeType":"ElementaryTypeName","src":"4561:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4560:9:73"},"scope":23223,"src":"4488:157:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[18511],"body":{"id":23052,"nodeType":"Block","src":"4774:146:73","statements":[{"assignments":[23033],"declarations":[{"constant":false,"id":23033,"mutability":"mutable","name":"maxAssets","nameLocation":"4788:9:73","nodeType":"VariableDeclaration","scope":23052,"src":"4780:17:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23032,"name":"uint256","nodeType":"ElementaryTypeName","src":"4780:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23037,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23034,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"4800:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4810:10:73","memberName":"maxDeposit","nodeType":"MemberAccess","referencedDeclaration":15756,"src":"4800:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":23036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4800:22:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4780:42:73"},{"expression":{"arguments":[{"arguments":[{"id":23041,"name":"maxAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23033,"src":"4861:9:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":23042,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4872:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":23043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4877:8:73","memberName":"Rounding","nodeType":"MemberAccess","referencedDeclaration":9715,"src":"4872:13:73","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$9715_$","typeString":"type(enum Math.Rounding)"}},"id":23044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4886:5:73","memberName":"Floor","nodeType":"MemberAccess","referencedDeclaration":9711,"src":"4872:19:73","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_Rounding_$9715","typeString":"enum Math.Rounding"}],"id":23040,"name":"_convertToShares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"4844:16:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_enum$_Rounding_$9715_$returns$_t_uint256_$","typeString":"function (uint256,enum Math.Rounding) view returns (uint256)"}},"id":23045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:48:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":23048,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23026,"src":"4908:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":23046,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4894:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":23047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:7:73","memberName":"maxMint","nodeType":"MemberAccess","referencedDeclaration":18511,"src":"4894:13:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":23049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4894:20:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":23038,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11309,"src":"4835:4:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$11309_$","typeString":"type(library Math)"}},"id":23039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4840:3:73","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":9938,"src":"4835:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":23050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4835:80:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23031,"id":23051,"nodeType":"Return","src":"4828:87:73"}]},"documentation":{"id":23024,"nodeType":"StructuredDocumentation","src":"4649:43:73","text":" @dev See {IERC4626-maxMint}."},"functionSelector":"c63d75b6","id":23053,"implemented":true,"kind":"function","modifiers":[],"name":"maxMint","nameLocation":"4704:7:73","nodeType":"FunctionDefinition","overrides":{"id":23028,"nodeType":"OverrideSpecifier","overrides":[],"src":"4747:8:73"},"parameters":{"id":23027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23026,"mutability":"mutable","name":"owner","nameLocation":"4720:5:73","nodeType":"VariableDeclaration","scope":23053,"src":"4712:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23025,"name":"address","nodeType":"ElementaryTypeName","src":"4712:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4711:15:73"},"returnParameters":{"id":23031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23053,"src":"4765:7:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23029,"name":"uint256","nodeType":"ElementaryTypeName","src":"4765:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4764:9:73"},"scope":23223,"src":"4695:225:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[3925],"body":{"id":23064,"nodeType":"Block","src":"5051:41:73","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23060,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"5064:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5074:11:73","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":15738,"src":"5064:21:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IInvestStrategy_$22374_$returns$_t_uint256_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy) view returns (uint256)"}},"id":23062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5064:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23059,"id":23063,"nodeType":"Return","src":"5057:30:73"}]},"documentation":{"id":23054,"nodeType":"StructuredDocumentation","src":"4924:47:73","text":" @dev See {IERC4626-totalAssets}."},"functionSelector":"01e1d114","id":23065,"implemented":true,"kind":"function","modifiers":[],"name":"totalAssets","nameLocation":"4983:11:73","nodeType":"FunctionDefinition","overrides":{"id":23056,"nodeType":"OverrideSpecifier","overrides":[],"src":"5017:8:73"},"parameters":{"id":23055,"nodeType":"ParameterList","parameters":[],"src":"4994:2:73"},"returnParameters":{"id":23059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23058,"mutability":"mutable","name":"assets","nameLocation":"5043:6:73","nodeType":"VariableDeclaration","scope":23065,"src":"5035:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23057,"name":"uint256","nodeType":"ElementaryTypeName","src":"5035:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5034:16:73"},"scope":23223,"src":"4974:118:73","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4418],"body":{"id":23096,"nodeType":"Block","src":"5246:108:73","statements":[{"expression":{"arguments":[{"id":23082,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23073,"src":"5273:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":23083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5281:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23079,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"5252:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5262:10:73","memberName":"dcWithdraw","nodeType":"MemberAccess","referencedDeclaration":15526,"src":"5252:20:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":23084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5252:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23085,"nodeType":"ExpressionStatement","src":"5252:35:73"},{"expression":{"arguments":[{"id":23089,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23067,"src":"5309:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23090,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23069,"src":"5317:8:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23091,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23071,"src":"5327:5:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23092,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23073,"src":"5334:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23093,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23075,"src":"5342:6:73","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":23086,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5293:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":23088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5299:9:73","memberName":"_withdraw","nodeType":"MemberAccess","referencedDeclaration":4418,"src":"5293:15:73","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":23094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5293:56:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23095,"nodeType":"ExpressionStatement","src":"5293:56:73"}]},"id":23097,"implemented":true,"kind":"function","modifiers":[],"name":"_withdraw","nameLocation":"5105:9:73","nodeType":"FunctionDefinition","overrides":{"id":23077,"nodeType":"OverrideSpecifier","overrides":[],"src":"5237:8:73"},"parameters":{"id":23076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23067,"mutability":"mutable","name":"caller","nameLocation":"5128:6:73","nodeType":"VariableDeclaration","scope":23097,"src":"5120:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23066,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23069,"mutability":"mutable","name":"receiver","nameLocation":"5148:8:73","nodeType":"VariableDeclaration","scope":23097,"src":"5140:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23068,"name":"address","nodeType":"ElementaryTypeName","src":"5140:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23071,"mutability":"mutable","name":"owner","nameLocation":"5170:5:73","nodeType":"VariableDeclaration","scope":23097,"src":"5162:13:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23070,"name":"address","nodeType":"ElementaryTypeName","src":"5162:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23073,"mutability":"mutable","name":"assets","nameLocation":"5189:6:73","nodeType":"VariableDeclaration","scope":23097,"src":"5181:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23072,"name":"uint256","nodeType":"ElementaryTypeName","src":"5181:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23075,"mutability":"mutable","name":"shares","nameLocation":"5209:6:73","nodeType":"VariableDeclaration","scope":23097,"src":"5201:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23074,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5114:105:73"},"returnParameters":{"id":23078,"nodeType":"ParameterList","parameters":[],"src":"5246:0:73"},"scope":23223,"src":"5096:258:73","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4364],"body":{"id":23125,"nodeType":"Block","src":"5468:168:73","statements":[{"expression":{"arguments":[{"id":23112,"name":"caller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23099,"src":"5558:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23113,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23101,"src":"5566:8:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":23114,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23103,"src":"5576:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":23115,"name":"shares","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23105,"src":"5584:6:73","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":23109,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"5543:5:73","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SingleStrategyERC4626_$23223_$","typeString":"type(contract super SingleStrategyERC4626)"}},"id":23111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5549:8:73","memberName":"_deposit","nodeType":"MemberAccess","referencedDeclaration":4364,"src":"5543:14:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":23116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5543:48:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23117,"nodeType":"ExpressionStatement","src":"5543:48:73"},{"expression":{"arguments":[{"id":23121,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23103,"src":"5617:6:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":23122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5625:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23118,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"5597:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5607:9:73","memberName":"dcDeposit","nodeType":"MemberAccess","referencedDeclaration":15585,"src":"5597:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint256_$_t_bool_$returns$_t_bool_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint256,bool) returns (bool)"}},"id":23123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5597:34:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23124,"nodeType":"ExpressionStatement","src":"5597:34:73"}]},"id":23126,"implemented":true,"kind":"function","modifiers":[],"name":"_deposit","nameLocation":"5367:8:73","nodeType":"FunctionDefinition","overrides":{"id":23107,"nodeType":"OverrideSpecifier","overrides":[],"src":"5459:8:73"},"parameters":{"id":23106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23099,"mutability":"mutable","name":"caller","nameLocation":"5384:6:73","nodeType":"VariableDeclaration","scope":23126,"src":"5376:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23098,"name":"address","nodeType":"ElementaryTypeName","src":"5376:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23101,"mutability":"mutable","name":"receiver","nameLocation":"5400:8:73","nodeType":"VariableDeclaration","scope":23126,"src":"5392:16:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23100,"name":"address","nodeType":"ElementaryTypeName","src":"5392:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":23103,"mutability":"mutable","name":"assets","nameLocation":"5418:6:73","nodeType":"VariableDeclaration","scope":23126,"src":"5410:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23102,"name":"uint256","nodeType":"ElementaryTypeName","src":"5410:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23105,"mutability":"mutable","name":"shares","nameLocation":"5434:6:73","nodeType":"VariableDeclaration","scope":23126,"src":"5426:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23104,"name":"uint256","nodeType":"ElementaryTypeName","src":"5426:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5375:66:73"},"returnParameters":{"id":23108,"nodeType":"ParameterList","parameters":[],"src":"5468:0:73"},"scope":23223,"src":"5358:278:73","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[22297],"body":{"id":23157,"nodeType":"Block","src":"5912:173:73","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":23139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23135,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23129,"src":"5922:4:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":23136,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"5930:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5940:11:73","memberName":"storageSlot","nodeType":"MemberAccess","referencedDeclaration":22373,"src":"5930:21:73","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":23138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5930:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5922:31:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":23143,"nodeType":"IfStatement","src":"5918:72:73","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":23140,"name":"OnlyStrategyStorageExposed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22853,"src":"5962:26:73","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":23141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5962:28:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":23142,"nodeType":"RevertStatement","src":"5955:35:73"}},{"assignments":[23148],"declarations":[{"constant":false,"id":23148,"mutability":"mutable","name":"r","nameLocation":"6026:1:73","nodeType":"VariableDeclaration","scope":23157,"src":"5996:31:73","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":23147,"nodeType":"UserDefinedTypeName","pathNode":{"id":23146,"name":"StorageSlot.BytesSlot","nameLocations":["5996:11:73","6008:9:73"],"nodeType":"IdentifierPath","referencedDeclaration":9567,"src":"5996:21:73"},"referencedDeclaration":9567,"src":"5996:21:73","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"id":23153,"initialValue":{"arguments":[{"id":23151,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23129,"src":"6055:4:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":23149,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9667,"src":"6030:11:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$9667_$","typeString":"type(library StorageSlot)"}},"id":23150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6042:12:73","memberName":"getBytesSlot","nodeType":"MemberAccess","referencedDeclaration":9655,"src":"6030:24:73","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_BytesSlot_$9567_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.BytesSlot storage pointer)"}},"id":23152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6030:30:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5996:64:73"},{"expression":{"expression":{"id":23154,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23148,"src":"6073:1:73","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$9567_storage_ptr","typeString":"struct StorageSlot.BytesSlot storage pointer"}},"id":23155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6075:5:73","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9566,"src":"6073:7:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"functionReturnParameters":23134,"id":23156,"nodeType":"Return","src":"6066:14:73"}]},"documentation":{"id":23127,"nodeType":"StructuredDocumentation","src":"5640:187:73","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":23158,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"5839:12:73","nodeType":"FunctionDefinition","overrides":{"id":23131,"nodeType":"OverrideSpecifier","overrides":[],"src":"5880:8:73"},"parameters":{"id":23130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23129,"mutability":"mutable","name":"slot","nameLocation":"5860:4:73","nodeType":"VariableDeclaration","scope":23158,"src":"5852:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5852:7:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5851:14:73"},"returnParameters":{"id":23134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23158,"src":"5898:12:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23132,"name":"bytes","nodeType":"ElementaryTypeName","src":"5898:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5897:14:73"},"scope":23223,"src":"5830:255:73","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":23174,"nodeType":"Block","src":"6695:56:73","statements":[{"expression":{"arguments":[{"id":23170,"name":"method","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23161,"src":"6728:6:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":23171,"name":"extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23163,"src":"6736:9:73","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":23168,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"6708:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6718:9:73","memberName":"dcForward","nodeType":"MemberAccess","referencedDeclaration":15614,"src":"6708:19:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_uint8_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_contract$_IInvestStrategy_$22374_$","typeString":"function (contract IInvestStrategy,uint8,bytes memory) returns (bytes memory)"}},"id":23172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6708:38:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":23167,"id":23173,"nodeType":"Return","src":"6701:45:73"}]},"documentation":{"id":23159,"nodeType":"StructuredDocumentation","src":"6089:506:73","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":23175,"implemented":true,"kind":"function","modifiers":[],"name":"forwardToStrategy","nameLocation":"6607:17:73","nodeType":"FunctionDefinition","parameters":{"id":23164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23161,"mutability":"mutable","name":"method","nameLocation":"6631:6:73","nodeType":"VariableDeclaration","scope":23175,"src":"6625:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23160,"name":"uint8","nodeType":"ElementaryTypeName","src":"6625:5:73","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":23163,"mutability":"mutable","name":"extraData","nameLocation":"6652:9:73","nodeType":"VariableDeclaration","scope":23175,"src":"6639:22:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23162,"name":"bytes","nodeType":"ElementaryTypeName","src":"6639:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6624:38:73"},"returnParameters":{"id":23167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23166,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23175,"src":"6681:12:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23165,"name":"bytes","nodeType":"ElementaryTypeName","src":"6681:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6680:14:73"},"scope":23223,"src":"6598:153:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23206,"nodeType":"Block","src":"7626:149:73","statements":[{"expression":{"arguments":[{"id":23192,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"7668:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":23193,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23179,"src":"7679:11:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},{"id":23194,"name":"initStrategyData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23181,"src":"7692:16:73","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":23196,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"7725:5:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":23197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7725:7:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":23195,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8682,"src":"7710:14:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Metadata_$8682_$","typeString":"type(contract IERC20Metadata)"}},"id":23198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7710:23:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"}},{"id":23199,"name":"force","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23183,"src":"7735:5:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_contract$_IERC20Metadata_$8682","typeString":"contract IERC20Metadata"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":23189,"name":"InvestStrategyClient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15775,"src":"7632:20:73","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InvestStrategyClient_$15775_$","typeString":"type(library InvestStrategyClient)"}},"id":23191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7653:14:73","memberName":"strategyChange","nodeType":"MemberAccess","referencedDeclaration":15702,"src":"7632:35:73","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IInvestStrategy_$22374_$_t_contract$_IInvestStrategy_$22374_$_t_bytes_memory_ptr_$_t_contract$_IERC20Metadata_$8682_$_t_bool_$returns$__$","typeString":"function (contract IInvestStrategy,contract IInvestStrategy,bytes memory,contract IERC20Metadata,bool)"}},"id":23200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7632:109:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23201,"nodeType":"ExpressionStatement","src":"7632:109:73"},{"expression":{"id":23204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":23202,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"7747:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":23203,"name":"newStrategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23179,"src":"7759:11:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"src":"7747:23:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"id":23205,"nodeType":"ExpressionStatement","src":"7747:23:73"}]},"documentation":{"id":23176,"nodeType":"StructuredDocumentation","src":"6755:722:73","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":23207,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":23186,"name":"SET_STRATEGY_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22828,"src":"7607:17:73","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":23187,"kind":"modifierInvocation","modifierName":{"id":23185,"name":"onlyRole","nameLocations":["7598:8:73"],"nodeType":"IdentifierPath","referencedDeclaration":2305,"src":"7598:8:73"},"nodeType":"ModifierInvocation","src":"7598:27:73"}],"name":"setStrategy","nameLocation":"7489:11:73","nodeType":"FunctionDefinition","parameters":{"id":23184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23179,"mutability":"mutable","name":"newStrategy","nameLocation":"7522:11:73","nodeType":"VariableDeclaration","scope":23207,"src":"7506:27:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":23178,"nodeType":"UserDefinedTypeName","pathNode":{"id":23177,"name":"IInvestStrategy","nameLocations":["7506:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7506:15:73"},"referencedDeclaration":22374,"src":"7506:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"},{"constant":false,"id":23181,"mutability":"mutable","name":"initStrategyData","nameLocation":"7552:16:73","nodeType":"VariableDeclaration","scope":23207,"src":"7539:29:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23180,"name":"bytes","nodeType":"ElementaryTypeName","src":"7539:5:73","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23183,"mutability":"mutable","name":"force","nameLocation":"7579:5:73","nodeType":"VariableDeclaration","scope":23207,"src":"7574:10:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23182,"name":"bool","nodeType":"ElementaryTypeName","src":"7574:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7500:88:73"},"returnParameters":{"id":23188,"nodeType":"ParameterList","parameters":[],"src":"7626:0:73"},"scope":23223,"src":"7480:295:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":23216,"nodeType":"Block","src":"7916:27:73","statements":[{"expression":{"id":23214,"name":"_strategy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22831,"src":"7929:9:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"functionReturnParameters":23213,"id":23215,"nodeType":"Return","src":"7922:16:73"}]},"documentation":{"id":23208,"nodeType":"StructuredDocumentation","src":"7779:74:73","text":" @dev Returns the current strategy plugged into the contract"},"functionSelector":"a8c62e76","id":23217,"implemented":true,"kind":"function","modifiers":[],"name":"strategy","nameLocation":"7865:8:73","nodeType":"FunctionDefinition","parameters":{"id":23209,"nodeType":"ParameterList","parameters":[],"src":"7873:2:73"},"returnParameters":{"id":23213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23217,"src":"7899:15:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"},"typeName":{"id":23211,"nodeType":"UserDefinedTypeName","pathNode":{"id":23210,"name":"IInvestStrategy","nameLocations":["7899:15:73"],"nodeType":"IdentifierPath","referencedDeclaration":22374,"src":"7899:15:73"},"referencedDeclaration":22374,"src":"7899:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IInvestStrategy_$22374","typeString":"contract IInvestStrategy"}},"visibility":"internal"}],"src":"7898:17:73"},"scope":23223,"src":"7856:87:73","stateMutability":"view","virtual":false,"visibility":"external"},{"constant":false,"documentation":{"id":23218,"nodeType":"StructuredDocumentation","src":"7947:246:73","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":23222,"mutability":"mutable","name":"__gap","nameLocation":"8216:5:73","nodeType":"VariableDeclaration","scope":23223,"src":"8196:25:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage","typeString":"uint256[49]"},"typeName":{"baseType":{"id":23219,"name":"uint256","nodeType":"ElementaryTypeName","src":"8196:7:73","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":23221,"length":{"hexValue":"3439","id":23220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8204:2:73","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"nodeType":"ArrayTypeName","src":"8196:11:73","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$49_storage_ptr","typeString":"uint256[49]"}},"visibility":"private"}],"scope":23224,"src":"1665:6559:73","usedErrors":[2627,2630,2891,2896,3716,3725,3734,3743,4819,4822,7560,7565,7570,7579,7584,7589,7743,7756,8696,9103,9395,15393,18375,22853],"usedEvents":[2635,4831,4840,4849,7347,7389,7401,8590,8599,15379,15383,15387,15391,22839,22843,22847,22851]}],"src":"39:8186:73"},"id":73},"solidity-bytes-utils/contracts/BytesLib.sol":{"ast":{"absolutePath":"solidity-bytes-utils/contracts/BytesLib.sol","exportedSymbols":{"BytesLib":[23573]},"id":23574,"license":"Unlicense","nodeType":"SourceUnit","nodes":[{"id":23225,"literals":["solidity",">=","0.8",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"336:31:74"},{"abstract":false,"baseContracts":[],"canonicalName":"BytesLib","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":23573,"linearizedBaseContracts":[23573],"name":"BytesLib","nameLocation":"378:8:74","nodeType":"ContractDefinition","nodes":[{"body":{"id":23240,"nodeType":"Block","src":"545:2803:74","statements":[{"assignments":[23235],"declarations":[{"constant":false,"id":23235,"mutability":"mutable","name":"tempBytes","nameLocation":"568:9:74","nodeType":"VariableDeclaration","scope":23240,"src":"555:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23234,"name":"bytes","nodeType":"ElementaryTypeName","src":"555:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23236,"nodeType":"VariableDeclarationStatement","src":"555:22:74"},{"AST":{"nativeSrc":"597:2718:74","nodeType":"YulBlock","src":"597:2718:74","statements":[{"nativeSrc":"741:24:74","nodeType":"YulAssignment","src":"741:24:74","value":{"arguments":[{"kind":"number","nativeSrc":"760:4:74","nodeType":"YulLiteral","src":"760:4:74","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"754:5:74","nodeType":"YulIdentifier","src":"754:5:74"},"nativeSrc":"754:11:74","nodeType":"YulFunctionCall","src":"754:11:74"},"variableNames":[{"name":"tempBytes","nativeSrc":"741:9:74","nodeType":"YulIdentifier","src":"741:9:74"}]},{"nativeSrc":"897:30:74","nodeType":"YulVariableDeclaration","src":"897:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"917:9:74","nodeType":"YulIdentifier","src":"917:9:74"}],"functionName":{"name":"mload","nativeSrc":"911:5:74","nodeType":"YulIdentifier","src":"911:5:74"},"nativeSrc":"911:16:74","nodeType":"YulFunctionCall","src":"911:16:74"},"variables":[{"name":"length","nativeSrc":"901:6:74","nodeType":"YulTypedName","src":"901:6:74","type":""}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"947:9:74","nodeType":"YulIdentifier","src":"947:9:74"},{"name":"length","nativeSrc":"958:6:74","nodeType":"YulIdentifier","src":"958:6:74"}],"functionName":{"name":"mstore","nativeSrc":"940:6:74","nodeType":"YulIdentifier","src":"940:6:74"},"nativeSrc":"940:25:74","nodeType":"YulFunctionCall","src":"940:25:74"},"nativeSrc":"940:25:74","nodeType":"YulExpressionStatement","src":"940:25:74"},{"nativeSrc":"1175:30:74","nodeType":"YulVariableDeclaration","src":"1175:30:74","value":{"arguments":[{"name":"tempBytes","nativeSrc":"1189:9:74","nodeType":"YulIdentifier","src":"1189:9:74"},{"kind":"number","nativeSrc":"1200:4:74","nodeType":"YulLiteral","src":"1200:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1185:3:74","nodeType":"YulIdentifier","src":"1185:3:74"},"nativeSrc":"1185:20:74","nodeType":"YulFunctionCall","src":"1185:20:74"},"variables":[{"name":"mc","nativeSrc":"1179:2:74","nodeType":"YulTypedName","src":"1179:2:74","type":""}]},{"nativeSrc":"1330:26:74","nodeType":"YulVariableDeclaration","src":"1330:26:74","value":{"arguments":[{"name":"mc","nativeSrc":"1345:2:74","nodeType":"YulIdentifier","src":"1345:2:74"},{"name":"length","nativeSrc":"1349:6:74","nodeType":"YulIdentifier","src":"1349:6:74"}],"functionName":{"name":"add","nativeSrc":"1341:3:74","nodeType":"YulIdentifier","src":"1341:3:74"},"nativeSrc":"1341:15:74","nodeType":"YulFunctionCall","src":"1341:15:74"},"variables":[{"name":"end","nativeSrc":"1334:3:74","nodeType":"YulTypedName","src":"1334:3:74","type":""}]},{"body":{"nativeSrc":"1733:162:74","nodeType":"YulBlock","src":"1733:162:74","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"1867:2:74","nodeType":"YulIdentifier","src":"1867:2:74"},{"arguments":[{"name":"cc","nativeSrc":"1877:2:74","nodeType":"YulIdentifier","src":"1877:2:74"}],"functionName":{"name":"mload","nativeSrc":"1871:5:74","nodeType":"YulIdentifier","src":"1871:5:74"},"nativeSrc":"1871:9:74","nodeType":"YulFunctionCall","src":"1871:9:74"}],"functionName":{"name":"mstore","nativeSrc":"1860:6:74","nodeType":"YulIdentifier","src":"1860:6:74"},"nativeSrc":"1860:21:74","nodeType":"YulFunctionCall","src":"1860:21:74"},"nativeSrc":"1860:21:74","nodeType":"YulExpressionStatement","src":"1860:21:74"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"1566:2:74","nodeType":"YulIdentifier","src":"1566:2:74"},{"name":"end","nativeSrc":"1570:3:74","nodeType":"YulIdentifier","src":"1570:3:74"}],"functionName":{"name":"lt","nativeSrc":"1563:2:74","nodeType":"YulIdentifier","src":"1563:2:74"},"nativeSrc":"1563:11:74","nodeType":"YulFunctionCall","src":"1563:11:74"},"nativeSrc":"1370:525:74","nodeType":"YulForLoop","post":{"nativeSrc":"1575:157:74","nodeType":"YulBlock","src":"1575:157:74","statements":[{"nativeSrc":"1663:19:74","nodeType":"YulAssignment","src":"1663:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"1673:2:74","nodeType":"YulIdentifier","src":"1673:2:74"},{"kind":"number","nativeSrc":"1677:4:74","nodeType":"YulLiteral","src":"1677:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1669:3:74","nodeType":"YulIdentifier","src":"1669:3:74"},"nativeSrc":"1669:13:74","nodeType":"YulFunctionCall","src":"1669:13:74"},"variableNames":[{"name":"mc","nativeSrc":"1663:2:74","nodeType":"YulIdentifier","src":"1663:2:74"}]},{"nativeSrc":"1699:19:74","nodeType":"YulAssignment","src":"1699:19:74","value":{"arguments":[{"name":"cc","nativeSrc":"1709:2:74","nodeType":"YulIdentifier","src":"1709:2:74"},{"kind":"number","nativeSrc":"1713:4:74","nodeType":"YulLiteral","src":"1713:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1705:3:74","nodeType":"YulIdentifier","src":"1705:3:74"},"nativeSrc":"1705:13:74","nodeType":"YulFunctionCall","src":"1705:13:74"},"variableNames":[{"name":"cc","nativeSrc":"1699:2:74","nodeType":"YulIdentifier","src":"1699:2:74"}]}]},"pre":{"nativeSrc":"1374:188:74","nodeType":"YulBlock","src":"1374:188:74","statements":[{"nativeSrc":"1518:30:74","nodeType":"YulVariableDeclaration","src":"1518:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"1532:9:74","nodeType":"YulIdentifier","src":"1532:9:74"},{"kind":"number","nativeSrc":"1543:4:74","nodeType":"YulLiteral","src":"1543:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1528:3:74","nodeType":"YulIdentifier","src":"1528:3:74"},"nativeSrc":"1528:20:74","nodeType":"YulFunctionCall","src":"1528:20:74"},"variables":[{"name":"cc","nativeSrc":"1522:2:74","nodeType":"YulTypedName","src":"1522:2:74","type":""}]}]},"src":"1370:525:74"},{"nativeSrc":"2096:27:74","nodeType":"YulAssignment","src":"2096:27:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2112:10:74","nodeType":"YulIdentifier","src":"2112:10:74"}],"functionName":{"name":"mload","nativeSrc":"2106:5:74","nodeType":"YulIdentifier","src":"2106:5:74"},"nativeSrc":"2106:17:74","nodeType":"YulFunctionCall","src":"2106:17:74"},"variableNames":[{"name":"length","nativeSrc":"2096:6:74","nodeType":"YulIdentifier","src":"2096:6:74"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"2143:9:74","nodeType":"YulIdentifier","src":"2143:9:74"},{"arguments":[{"name":"length","nativeSrc":"2158:6:74","nodeType":"YulIdentifier","src":"2158:6:74"},{"arguments":[{"name":"tempBytes","nativeSrc":"2172:9:74","nodeType":"YulIdentifier","src":"2172:9:74"}],"functionName":{"name":"mload","nativeSrc":"2166:5:74","nodeType":"YulIdentifier","src":"2166:5:74"},"nativeSrc":"2166:16:74","nodeType":"YulFunctionCall","src":"2166:16:74"}],"functionName":{"name":"add","nativeSrc":"2154:3:74","nodeType":"YulIdentifier","src":"2154:3:74"},"nativeSrc":"2154:29:74","nodeType":"YulFunctionCall","src":"2154:29:74"}],"functionName":{"name":"mstore","nativeSrc":"2136:6:74","nodeType":"YulIdentifier","src":"2136:6:74"},"nativeSrc":"2136:48:74","nodeType":"YulFunctionCall","src":"2136:48:74"},"nativeSrc":"2136:48:74","nodeType":"YulExpressionStatement","src":"2136:48:74"},{"nativeSrc":"2322:9:74","nodeType":"YulAssignment","src":"2322:9:74","value":{"name":"end","nativeSrc":"2328:3:74","nodeType":"YulIdentifier","src":"2328:3:74"},"variableNames":[{"name":"mc","nativeSrc":"2322:2:74","nodeType":"YulIdentifier","src":"2322:2:74"}]},{"nativeSrc":"2458:22:74","nodeType":"YulAssignment","src":"2458:22:74","value":{"arguments":[{"name":"mc","nativeSrc":"2469:2:74","nodeType":"YulIdentifier","src":"2469:2:74"},{"name":"length","nativeSrc":"2473:6:74","nodeType":"YulIdentifier","src":"2473:6:74"}],"functionName":{"name":"add","nativeSrc":"2465:3:74","nodeType":"YulIdentifier","src":"2465:3:74"},"nativeSrc":"2465:15:74","nodeType":"YulFunctionCall","src":"2465:15:74"},"variableNames":[{"name":"end","nativeSrc":"2458:3:74","nodeType":"YulIdentifier","src":"2458:3:74"}]},{"body":{"nativeSrc":"2662:53:74","nodeType":"YulBlock","src":"2662:53:74","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"2687:2:74","nodeType":"YulIdentifier","src":"2687:2:74"},{"arguments":[{"name":"cc","nativeSrc":"2697:2:74","nodeType":"YulIdentifier","src":"2697:2:74"}],"functionName":{"name":"mload","nativeSrc":"2691:5:74","nodeType":"YulIdentifier","src":"2691:5:74"},"nativeSrc":"2691:9:74","nodeType":"YulFunctionCall","src":"2691:9:74"}],"functionName":{"name":"mstore","nativeSrc":"2680:6:74","nodeType":"YulIdentifier","src":"2680:6:74"},"nativeSrc":"2680:21:74","nodeType":"YulFunctionCall","src":"2680:21:74"},"nativeSrc":"2680:21:74","nodeType":"YulExpressionStatement","src":"2680:21:74"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"2565:2:74","nodeType":"YulIdentifier","src":"2565:2:74"},{"name":"end","nativeSrc":"2569:3:74","nodeType":"YulIdentifier","src":"2569:3:74"}],"functionName":{"name":"lt","nativeSrc":"2562:2:74","nodeType":"YulIdentifier","src":"2562:2:74"},"nativeSrc":"2562:11:74","nodeType":"YulFunctionCall","src":"2562:11:74"},"nativeSrc":"2494:221:74","nodeType":"YulForLoop","post":{"nativeSrc":"2574:87:74","nodeType":"YulBlock","src":"2574:87:74","statements":[{"nativeSrc":"2592:19:74","nodeType":"YulAssignment","src":"2592:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"2602:2:74","nodeType":"YulIdentifier","src":"2602:2:74"},{"kind":"number","nativeSrc":"2606:4:74","nodeType":"YulLiteral","src":"2606:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2598:3:74","nodeType":"YulIdentifier","src":"2598:3:74"},"nativeSrc":"2598:13:74","nodeType":"YulFunctionCall","src":"2598:13:74"},"variableNames":[{"name":"mc","nativeSrc":"2592:2:74","nodeType":"YulIdentifier","src":"2592:2:74"}]},{"nativeSrc":"2628:19:74","nodeType":"YulAssignment","src":"2628:19:74","value":{"arguments":[{"name":"cc","nativeSrc":"2638:2:74","nodeType":"YulIdentifier","src":"2638:2:74"},{"kind":"number","nativeSrc":"2642:4:74","nodeType":"YulLiteral","src":"2642:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2634:3:74","nodeType":"YulIdentifier","src":"2634:3:74"},"nativeSrc":"2634:13:74","nodeType":"YulFunctionCall","src":"2634:13:74"},"variableNames":[{"name":"cc","nativeSrc":"2628:2:74","nodeType":"YulIdentifier","src":"2628:2:74"}]}]},"pre":{"nativeSrc":"2498:63:74","nodeType":"YulBlock","src":"2498:63:74","statements":[{"nativeSrc":"2516:31:74","nodeType":"YulVariableDeclaration","src":"2516:31:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"2530:10:74","nodeType":"YulIdentifier","src":"2530:10:74"},{"kind":"number","nativeSrc":"2542:4:74","nodeType":"YulLiteral","src":"2542:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2526:3:74","nodeType":"YulIdentifier","src":"2526:3:74"},"nativeSrc":"2526:21:74","nodeType":"YulFunctionCall","src":"2526:21:74"},"variables":[{"name":"cc","nativeSrc":"2520:2:74","nodeType":"YulTypedName","src":"2520:2:74","type":""}]}]},"src":"2494:221:74"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3147:4:74","nodeType":"YulLiteral","src":"3147:4:74","type":"","value":"0x40"},{"arguments":[{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3180:3:74","nodeType":"YulIdentifier","src":"3180:3:74"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3196:6:74","nodeType":"YulIdentifier","src":"3196:6:74"},{"arguments":[{"name":"_preBytes","nativeSrc":"3210:9:74","nodeType":"YulIdentifier","src":"3210:9:74"}],"functionName":{"name":"mload","nativeSrc":"3204:5:74","nodeType":"YulIdentifier","src":"3204:5:74"},"nativeSrc":"3204:16:74","nodeType":"YulFunctionCall","src":"3204:16:74"}],"functionName":{"name":"add","nativeSrc":"3192:3:74","nodeType":"YulIdentifier","src":"3192:3:74"},"nativeSrc":"3192:29:74","nodeType":"YulFunctionCall","src":"3192:29:74"}],"functionName":{"name":"iszero","nativeSrc":"3185:6:74","nodeType":"YulIdentifier","src":"3185:6:74"},"nativeSrc":"3185:37:74","nodeType":"YulFunctionCall","src":"3185:37:74"}],"functionName":{"name":"add","nativeSrc":"3176:3:74","nodeType":"YulIdentifier","src":"3176:3:74"},"nativeSrc":"3176:47:74","nodeType":"YulFunctionCall","src":"3176:47:74"},{"kind":"number","nativeSrc":"3225:2:74","nodeType":"YulLiteral","src":"3225:2:74","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3172:3:74","nodeType":"YulIdentifier","src":"3172:3:74"},"nativeSrc":"3172:56:74","nodeType":"YulFunctionCall","src":"3172:56:74"},{"arguments":[{"kind":"number","nativeSrc":"3248:2:74","nodeType":"YulLiteral","src":"3248:2:74","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3244:3:74","nodeType":"YulIdentifier","src":"3244:3:74"},"nativeSrc":"3244:7:74","nodeType":"YulFunctionCall","src":"3244:7:74"}],"functionName":{"name":"and","nativeSrc":"3153:3:74","nodeType":"YulIdentifier","src":"3153:3:74"},"nativeSrc":"3153:151:74","nodeType":"YulFunctionCall","src":"3153:151:74"}],"functionName":{"name":"mstore","nativeSrc":"3140:6:74","nodeType":"YulIdentifier","src":"3140:6:74"},"nativeSrc":"3140:165:74","nodeType":"YulFunctionCall","src":"3140:165:74"},"nativeSrc":"3140:165:74","nodeType":"YulExpressionStatement","src":"3140:165:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23229,"isOffset":false,"isSlot":false,"src":"2112:10:74","valueSize":1},{"declaration":23229,"isOffset":false,"isSlot":false,"src":"2530:10:74","valueSize":1},{"declaration":23227,"isOffset":false,"isSlot":false,"src":"1532:9:74","valueSize":1},{"declaration":23227,"isOffset":false,"isSlot":false,"src":"3210:9:74","valueSize":1},{"declaration":23227,"isOffset":false,"isSlot":false,"src":"917:9:74","valueSize":1},{"declaration":23235,"isOffset":false,"isSlot":false,"src":"1189:9:74","valueSize":1},{"declaration":23235,"isOffset":false,"isSlot":false,"src":"2143:9:74","valueSize":1},{"declaration":23235,"isOffset":false,"isSlot":false,"src":"2172:9:74","valueSize":1},{"declaration":23235,"isOffset":false,"isSlot":false,"src":"741:9:74","valueSize":1},{"declaration":23235,"isOffset":false,"isSlot":false,"src":"947:9:74","valueSize":1}],"id":23237,"nodeType":"InlineAssembly","src":"588:2727:74"},{"expression":{"id":23238,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23235,"src":"3332:9:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":23233,"id":23239,"nodeType":"Return","src":"3325:16:74"}]},"id":23241,"implemented":true,"kind":"function","modifiers":[],"name":"concat","nameLocation":"402:6:74","nodeType":"FunctionDefinition","parameters":{"id":23230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23227,"mutability":"mutable","name":"_preBytes","nameLocation":"431:9:74","nodeType":"VariableDeclaration","scope":23241,"src":"418:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23226,"name":"bytes","nodeType":"ElementaryTypeName","src":"418:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23229,"mutability":"mutable","name":"_postBytes","nameLocation":"463:10:74","nodeType":"VariableDeclaration","scope":23241,"src":"450:23:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23228,"name":"bytes","nodeType":"ElementaryTypeName","src":"450:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"408:71:74"},"returnParameters":{"id":23233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23232,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23241,"src":"527:12:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23231,"name":"bytes","nodeType":"ElementaryTypeName","src":"527:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"526:14:74"},"scope":23573,"src":"393:2955:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23249,"nodeType":"Block","src":"3436:6015:74","statements":[{"AST":{"nativeSrc":"3455:5990:74","nodeType":"YulBlock","src":"3455:5990:74","statements":[{"nativeSrc":"3678:34:74","nodeType":"YulVariableDeclaration","src":"3678:34:74","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"3697:14:74","nodeType":"YulIdentifier","src":"3697:14:74"}],"functionName":{"name":"sload","nativeSrc":"3691:5:74","nodeType":"YulIdentifier","src":"3691:5:74"},"nativeSrc":"3691:21:74","nodeType":"YulFunctionCall","src":"3691:21:74"},"variables":[{"name":"fslot","nativeSrc":"3682:5:74","nodeType":"YulTypedName","src":"3682:5:74","type":""}]},{"nativeSrc":"4205:76:74","nodeType":"YulVariableDeclaration","src":"4205:76:74","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4228:5:74","nodeType":"YulIdentifier","src":"4228:5:74"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4243:5:74","nodeType":"YulLiteral","src":"4243:5:74","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"4261:5:74","nodeType":"YulIdentifier","src":"4261:5:74"},{"kind":"number","nativeSrc":"4268:1:74","nodeType":"YulLiteral","src":"4268:1:74","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"4257:3:74","nodeType":"YulIdentifier","src":"4257:3:74"},"nativeSrc":"4257:13:74","nodeType":"YulFunctionCall","src":"4257:13:74"}],"functionName":{"name":"iszero","nativeSrc":"4250:6:74","nodeType":"YulIdentifier","src":"4250:6:74"},"nativeSrc":"4250:21:74","nodeType":"YulFunctionCall","src":"4250:21:74"}],"functionName":{"name":"mul","nativeSrc":"4239:3:74","nodeType":"YulIdentifier","src":"4239:3:74"},"nativeSrc":"4239:33:74","nodeType":"YulFunctionCall","src":"4239:33:74"},{"kind":"number","nativeSrc":"4274:1:74","nodeType":"YulLiteral","src":"4274:1:74","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4235:3:74","nodeType":"YulIdentifier","src":"4235:3:74"},"nativeSrc":"4235:41:74","nodeType":"YulFunctionCall","src":"4235:41:74"}],"functionName":{"name":"and","nativeSrc":"4224:3:74","nodeType":"YulIdentifier","src":"4224:3:74"},"nativeSrc":"4224:53:74","nodeType":"YulFunctionCall","src":"4224:53:74"},{"kind":"number","nativeSrc":"4279:1:74","nodeType":"YulLiteral","src":"4279:1:74","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"4220:3:74","nodeType":"YulIdentifier","src":"4220:3:74"},"nativeSrc":"4220:61:74","nodeType":"YulFunctionCall","src":"4220:61:74"},"variables":[{"name":"slength","nativeSrc":"4209:7:74","nodeType":"YulTypedName","src":"4209:7:74","type":""}]},{"nativeSrc":"4294:32:74","nodeType":"YulVariableDeclaration","src":"4294:32:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"4315:10:74","nodeType":"YulIdentifier","src":"4315:10:74"}],"functionName":{"name":"mload","nativeSrc":"4309:5:74","nodeType":"YulIdentifier","src":"4309:5:74"},"nativeSrc":"4309:17:74","nodeType":"YulFunctionCall","src":"4309:17:74"},"variables":[{"name":"mlength","nativeSrc":"4298:7:74","nodeType":"YulTypedName","src":"4298:7:74","type":""}]},{"nativeSrc":"4339:38:74","nodeType":"YulVariableDeclaration","src":"4339:38:74","value":{"arguments":[{"name":"slength","nativeSrc":"4360:7:74","nodeType":"YulIdentifier","src":"4360:7:74"},{"name":"mlength","nativeSrc":"4369:7:74","nodeType":"YulIdentifier","src":"4369:7:74"}],"functionName":{"name":"add","nativeSrc":"4356:3:74","nodeType":"YulIdentifier","src":"4356:3:74"},"nativeSrc":"4356:21:74","nodeType":"YulFunctionCall","src":"4356:21:74"},"variables":[{"name":"newlength","nativeSrc":"4343:9:74","nodeType":"YulTypedName","src":"4343:9:74","type":""}]},{"cases":[{"body":{"nativeSrc":"4710:1485:74","nodeType":"YulBlock","src":"4710:1485:74","statements":[{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"4991:14:74","nodeType":"YulIdentifier","src":"4991:14:74"},{"arguments":[{"name":"fslot","nativeSrc":"5303:5:74","nodeType":"YulIdentifier","src":"5303:5:74"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"5521:10:74","nodeType":"YulIdentifier","src":"5521:10:74"},{"kind":"number","nativeSrc":"5533:4:74","nodeType":"YulLiteral","src":"5533:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5517:3:74","nodeType":"YulIdentifier","src":"5517:3:74"},"nativeSrc":"5517:21:74","nodeType":"YulFunctionCall","src":"5517:21:74"}],"functionName":{"name":"mload","nativeSrc":"5511:5:74","nodeType":"YulIdentifier","src":"5511:5:74"},"nativeSrc":"5511:28:74","nodeType":"YulFunctionCall","src":"5511:28:74"},{"arguments":[{"kind":"number","nativeSrc":"5648:5:74","nodeType":"YulLiteral","src":"5648:5:74","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5659:2:74","nodeType":"YulLiteral","src":"5659:2:74","type":"","value":"32"},{"name":"mlength","nativeSrc":"5663:7:74","nodeType":"YulIdentifier","src":"5663:7:74"}],"functionName":{"name":"sub","nativeSrc":"5655:3:74","nodeType":"YulIdentifier","src":"5655:3:74"},"nativeSrc":"5655:16:74","nodeType":"YulFunctionCall","src":"5655:16:74"}],"functionName":{"name":"exp","nativeSrc":"5644:3:74","nodeType":"YulIdentifier","src":"5644:3:74"},"nativeSrc":"5644:28:74","nodeType":"YulFunctionCall","src":"5644:28:74"}],"functionName":{"name":"div","nativeSrc":"5404:3:74","nodeType":"YulIdentifier","src":"5404:3:74"},"nativeSrc":"5404:302:74","nodeType":"YulFunctionCall","src":"5404:302:74"},{"arguments":[{"kind":"number","nativeSrc":"5895:5:74","nodeType":"YulLiteral","src":"5895:5:74","type":"","value":"0x100"},{"arguments":[{"kind":"number","nativeSrc":"5906:2:74","nodeType":"YulLiteral","src":"5906:2:74","type":"","value":"32"},{"name":"newlength","nativeSrc":"5910:9:74","nodeType":"YulIdentifier","src":"5910:9:74"}],"functionName":{"name":"sub","nativeSrc":"5902:3:74","nodeType":"YulIdentifier","src":"5902:3:74"},"nativeSrc":"5902:18:74","nodeType":"YulFunctionCall","src":"5902:18:74"}],"functionName":{"name":"exp","nativeSrc":"5891:3:74","nodeType":"YulIdentifier","src":"5891:3:74"},"nativeSrc":"5891:30:74","nodeType":"YulFunctionCall","src":"5891:30:74"}],"functionName":{"name":"mul","nativeSrc":"5367:3:74","nodeType":"YulIdentifier","src":"5367:3:74"},"nativeSrc":"5367:584:74","nodeType":"YulFunctionCall","src":"5367:584:74"},{"arguments":[{"name":"mlength","nativeSrc":"6104:7:74","nodeType":"YulIdentifier","src":"6104:7:74"},{"kind":"number","nativeSrc":"6113:1:74","nodeType":"YulLiteral","src":"6113:1:74","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6100:3:74","nodeType":"YulIdentifier","src":"6100:3:74"},"nativeSrc":"6100:15:74","nodeType":"YulFunctionCall","src":"6100:15:74"}],"functionName":{"name":"add","nativeSrc":"5334:3:74","nodeType":"YulIdentifier","src":"5334:3:74"},"nativeSrc":"5334:807:74","nodeType":"YulFunctionCall","src":"5334:807:74"}],"functionName":{"name":"add","nativeSrc":"5134:3:74","nodeType":"YulIdentifier","src":"5134:3:74"},"nativeSrc":"5134:1029:74","nodeType":"YulFunctionCall","src":"5134:1029:74"}],"functionName":{"name":"sstore","nativeSrc":"4963:6:74","nodeType":"YulIdentifier","src":"4963:6:74"},"nativeSrc":"4963:1218:74","nodeType":"YulFunctionCall","src":"4963:1218:74"},"nativeSrc":"4963:1218:74","nodeType":"YulExpressionStatement","src":"4963:1218:74"}]},"nativeSrc":"4703:1492:74","nodeType":"YulCase","src":"4703:1492:74","value":{"kind":"number","nativeSrc":"4708:1:74","nodeType":"YulLiteral","src":"4708:1:74","type":"","value":"2"}},{"body":{"nativeSrc":"6215:1935:74","nodeType":"YulBlock","src":"6215:1935:74","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6424:3:74","nodeType":"YulLiteral","src":"6424:3:74","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"6429:14:74","nodeType":"YulIdentifier","src":"6429:14:74"}],"functionName":{"name":"mstore","nativeSrc":"6417:6:74","nodeType":"YulIdentifier","src":"6417:6:74"},"nativeSrc":"6417:27:74","nodeType":"YulFunctionCall","src":"6417:27:74"},"nativeSrc":"6417:27:74","nodeType":"YulExpressionStatement","src":"6417:27:74"},{"nativeSrc":"6461:53:74","nodeType":"YulVariableDeclaration","src":"6461:53:74","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6485:3:74","nodeType":"YulLiteral","src":"6485:3:74","type":"","value":"0x0"},{"kind":"number","nativeSrc":"6490:4:74","nodeType":"YulLiteral","src":"6490:4:74","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6475:9:74","nodeType":"YulIdentifier","src":"6475:9:74"},"nativeSrc":"6475:20:74","nodeType":"YulFunctionCall","src":"6475:20:74"},{"arguments":[{"name":"slength","nativeSrc":"6501:7:74","nodeType":"YulIdentifier","src":"6501:7:74"},{"kind":"number","nativeSrc":"6510:2:74","nodeType":"YulLiteral","src":"6510:2:74","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"6497:3:74","nodeType":"YulIdentifier","src":"6497:3:74"},"nativeSrc":"6497:16:74","nodeType":"YulFunctionCall","src":"6497:16:74"}],"functionName":{"name":"add","nativeSrc":"6471:3:74","nodeType":"YulIdentifier","src":"6471:3:74"},"nativeSrc":"6471:43:74","nodeType":"YulFunctionCall","src":"6471:43:74"},"variables":[{"name":"sc","nativeSrc":"6465:2:74","nodeType":"YulTypedName","src":"6465:2:74","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"6574:14:74","nodeType":"YulIdentifier","src":"6574:14:74"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"6598:9:74","nodeType":"YulIdentifier","src":"6598:9:74"},{"kind":"number","nativeSrc":"6609:1:74","nodeType":"YulLiteral","src":"6609:1:74","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"6594:3:74","nodeType":"YulIdentifier","src":"6594:3:74"},"nativeSrc":"6594:17:74","nodeType":"YulFunctionCall","src":"6594:17:74"},{"kind":"number","nativeSrc":"6613:1:74","nodeType":"YulLiteral","src":"6613:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6590:3:74","nodeType":"YulIdentifier","src":"6590:3:74"},"nativeSrc":"6590:25:74","nodeType":"YulFunctionCall","src":"6590:25:74"}],"functionName":{"name":"sstore","nativeSrc":"6567:6:74","nodeType":"YulIdentifier","src":"6567:6:74"},"nativeSrc":"6567:49:74","nodeType":"YulFunctionCall","src":"6567:49:74"},"nativeSrc":"6567:49:74","nodeType":"YulExpressionStatement","src":"6567:49:74"},{"nativeSrc":"7204:30:74","nodeType":"YulVariableDeclaration","src":"7204:30:74","value":{"arguments":[{"kind":"number","nativeSrc":"7222:2:74","nodeType":"YulLiteral","src":"7222:2:74","type":"","value":"32"},{"name":"slength","nativeSrc":"7226:7:74","nodeType":"YulIdentifier","src":"7226:7:74"}],"functionName":{"name":"sub","nativeSrc":"7218:3:74","nodeType":"YulIdentifier","src":"7218:3:74"},"nativeSrc":"7218:16:74","nodeType":"YulFunctionCall","src":"7218:16:74"},"variables":[{"name":"submod","nativeSrc":"7208:6:74","nodeType":"YulTypedName","src":"7208:6:74","type":""}]},{"nativeSrc":"7251:33:74","nodeType":"YulVariableDeclaration","src":"7251:33:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7265:10:74","nodeType":"YulIdentifier","src":"7265:10:74"},{"name":"submod","nativeSrc":"7277:6:74","nodeType":"YulIdentifier","src":"7277:6:74"}],"functionName":{"name":"add","nativeSrc":"7261:3:74","nodeType":"YulIdentifier","src":"7261:3:74"},"nativeSrc":"7261:23:74","nodeType":"YulFunctionCall","src":"7261:23:74"},"variables":[{"name":"mc","nativeSrc":"7255:2:74","nodeType":"YulTypedName","src":"7255:2:74","type":""}]},{"nativeSrc":"7301:35:74","nodeType":"YulVariableDeclaration","src":"7301:35:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"7316:10:74","nodeType":"YulIdentifier","src":"7316:10:74"},{"name":"mlength","nativeSrc":"7328:7:74","nodeType":"YulIdentifier","src":"7328:7:74"}],"functionName":{"name":"add","nativeSrc":"7312:3:74","nodeType":"YulIdentifier","src":"7312:3:74"},"nativeSrc":"7312:24:74","nodeType":"YulFunctionCall","src":"7312:24:74"},"variables":[{"name":"end","nativeSrc":"7305:3:74","nodeType":"YulTypedName","src":"7305:3:74","type":""}]},{"nativeSrc":"7353:38:74","nodeType":"YulVariableDeclaration","src":"7353:38:74","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7373:5:74","nodeType":"YulLiteral","src":"7373:5:74","type":"","value":"0x100"},{"name":"submod","nativeSrc":"7380:6:74","nodeType":"YulIdentifier","src":"7380:6:74"}],"functionName":{"name":"exp","nativeSrc":"7369:3:74","nodeType":"YulIdentifier","src":"7369:3:74"},"nativeSrc":"7369:18:74","nodeType":"YulFunctionCall","src":"7369:18:74"},{"kind":"number","nativeSrc":"7389:1:74","nodeType":"YulLiteral","src":"7389:1:74","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7365:3:74","nodeType":"YulIdentifier","src":"7365:3:74"},"nativeSrc":"7365:26:74","nodeType":"YulFunctionCall","src":"7365:26:74"},"variables":[{"name":"mask","nativeSrc":"7357:4:74","nodeType":"YulTypedName","src":"7357:4:74","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"7437:2:74","nodeType":"YulIdentifier","src":"7437:2:74"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"7523:5:74","nodeType":"YulIdentifier","src":"7523:5:74"},{"kind":"number","nativeSrc":"7558:66:74","nodeType":"YulLiteral","src":"7558:66:74","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00"}],"functionName":{"name":"and","nativeSrc":"7490:3:74","nodeType":"YulIdentifier","src":"7490:3:74"},"nativeSrc":"7490:160:74","nodeType":"YulFunctionCall","src":"7490:160:74"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"7686:2:74","nodeType":"YulIdentifier","src":"7686:2:74"}],"functionName":{"name":"mload","nativeSrc":"7680:5:74","nodeType":"YulIdentifier","src":"7680:5:74"},"nativeSrc":"7680:9:74","nodeType":"YulFunctionCall","src":"7680:9:74"},{"name":"mask","nativeSrc":"7691:4:74","nodeType":"YulIdentifier","src":"7691:4:74"}],"functionName":{"name":"and","nativeSrc":"7676:3:74","nodeType":"YulIdentifier","src":"7676:3:74"},"nativeSrc":"7676:20:74","nodeType":"YulFunctionCall","src":"7676:20:74"}],"functionName":{"name":"add","nativeSrc":"7461:3:74","nodeType":"YulIdentifier","src":"7461:3:74"},"nativeSrc":"7461:257:74","nodeType":"YulFunctionCall","src":"7461:257:74"}],"functionName":{"name":"sstore","nativeSrc":"7409:6:74","nodeType":"YulIdentifier","src":"7409:6:74"},"nativeSrc":"7409:327:74","nodeType":"YulFunctionCall","src":"7409:327:74"},"nativeSrc":"7409:327:74","nodeType":"YulExpressionStatement","src":"7409:327:74"},{"body":{"nativeSrc":"7964:61:74","nodeType":"YulBlock","src":"7964:61:74","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"7993:2:74","nodeType":"YulIdentifier","src":"7993:2:74"},{"arguments":[{"name":"mc","nativeSrc":"8003:2:74","nodeType":"YulIdentifier","src":"8003:2:74"}],"functionName":{"name":"mload","nativeSrc":"7997:5:74","nodeType":"YulIdentifier","src":"7997:5:74"},"nativeSrc":"7997:9:74","nodeType":"YulFunctionCall","src":"7997:9:74"}],"functionName":{"name":"sstore","nativeSrc":"7986:6:74","nodeType":"YulIdentifier","src":"7986:6:74"},"nativeSrc":"7986:21:74","nodeType":"YulFunctionCall","src":"7986:21:74"},"nativeSrc":"7986:21:74","nodeType":"YulExpressionStatement","src":"7986:21:74"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"7858:2:74","nodeType":"YulIdentifier","src":"7858:2:74"},{"name":"end","nativeSrc":"7862:3:74","nodeType":"YulIdentifier","src":"7862:3:74"}],"functionName":{"name":"lt","nativeSrc":"7855:2:74","nodeType":"YulIdentifier","src":"7855:2:74"},"nativeSrc":"7855:11:74","nodeType":"YulFunctionCall","src":"7855:11:74"},"nativeSrc":"7754:271:74","nodeType":"YulForLoop","post":{"nativeSrc":"7867:96:74","nodeType":"YulBlock","src":"7867:96:74","statements":[{"nativeSrc":"7889:16:74","nodeType":"YulAssignment","src":"7889:16:74","value":{"arguments":[{"name":"sc","nativeSrc":"7899:2:74","nodeType":"YulIdentifier","src":"7899:2:74"},{"kind":"number","nativeSrc":"7903:1:74","nodeType":"YulLiteral","src":"7903:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7895:3:74","nodeType":"YulIdentifier","src":"7895:3:74"},"nativeSrc":"7895:10:74","nodeType":"YulFunctionCall","src":"7895:10:74"},"variableNames":[{"name":"sc","nativeSrc":"7889:2:74","nodeType":"YulIdentifier","src":"7889:2:74"}]},{"nativeSrc":"7926:19:74","nodeType":"YulAssignment","src":"7926:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"7936:2:74","nodeType":"YulIdentifier","src":"7936:2:74"},{"kind":"number","nativeSrc":"7940:4:74","nodeType":"YulLiteral","src":"7940:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7932:3:74","nodeType":"YulIdentifier","src":"7932:3:74"},"nativeSrc":"7932:13:74","nodeType":"YulFunctionCall","src":"7932:13:74"},"variableNames":[{"name":"mc","nativeSrc":"7926:2:74","nodeType":"YulIdentifier","src":"7926:2:74"}]}]},"pre":{"nativeSrc":"7758:96:74","nodeType":"YulBlock","src":"7758:96:74","statements":[{"nativeSrc":"7780:19:74","nodeType":"YulAssignment","src":"7780:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"7790:2:74","nodeType":"YulIdentifier","src":"7790:2:74"},{"kind":"number","nativeSrc":"7794:4:74","nodeType":"YulLiteral","src":"7794:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7786:3:74","nodeType":"YulIdentifier","src":"7786:3:74"},"nativeSrc":"7786:13:74","nodeType":"YulFunctionCall","src":"7786:13:74"},"variableNames":[{"name":"mc","nativeSrc":"7780:2:74","nodeType":"YulIdentifier","src":"7780:2:74"}]},{"nativeSrc":"7820:16:74","nodeType":"YulAssignment","src":"7820:16:74","value":{"arguments":[{"name":"sc","nativeSrc":"7830:2:74","nodeType":"YulIdentifier","src":"7830:2:74"},{"kind":"number","nativeSrc":"7834:1:74","nodeType":"YulLiteral","src":"7834:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7826:3:74","nodeType":"YulIdentifier","src":"7826:3:74"},"nativeSrc":"7826:10:74","nodeType":"YulFunctionCall","src":"7826:10:74"},"variableNames":[{"name":"sc","nativeSrc":"7820:2:74","nodeType":"YulIdentifier","src":"7820:2:74"}]}]},"src":"7754:271:74"},{"nativeSrc":"8043:32:74","nodeType":"YulAssignment","src":"8043:32:74","value":{"arguments":[{"kind":"number","nativeSrc":"8055:5:74","nodeType":"YulLiteral","src":"8055:5:74","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"8066:2:74","nodeType":"YulIdentifier","src":"8066:2:74"},{"name":"end","nativeSrc":"8070:3:74","nodeType":"YulIdentifier","src":"8070:3:74"}],"functionName":{"name":"sub","nativeSrc":"8062:3:74","nodeType":"YulIdentifier","src":"8062:3:74"},"nativeSrc":"8062:12:74","nodeType":"YulFunctionCall","src":"8062:12:74"}],"functionName":{"name":"exp","nativeSrc":"8051:3:74","nodeType":"YulIdentifier","src":"8051:3:74"},"nativeSrc":"8051:24:74","nodeType":"YulFunctionCall","src":"8051:24:74"},"variableNames":[{"name":"mask","nativeSrc":"8043:4:74","nodeType":"YulIdentifier","src":"8043:4:74"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8100:2:74","nodeType":"YulIdentifier","src":"8100:2:74"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"8118:2:74","nodeType":"YulIdentifier","src":"8118:2:74"}],"functionName":{"name":"mload","nativeSrc":"8112:5:74","nodeType":"YulIdentifier","src":"8112:5:74"},"nativeSrc":"8112:9:74","nodeType":"YulFunctionCall","src":"8112:9:74"},{"name":"mask","nativeSrc":"8123:4:74","nodeType":"YulIdentifier","src":"8123:4:74"}],"functionName":{"name":"div","nativeSrc":"8108:3:74","nodeType":"YulIdentifier","src":"8108:3:74"},"nativeSrc":"8108:20:74","nodeType":"YulFunctionCall","src":"8108:20:74"},{"name":"mask","nativeSrc":"8130:4:74","nodeType":"YulIdentifier","src":"8130:4:74"}],"functionName":{"name":"mul","nativeSrc":"8104:3:74","nodeType":"YulIdentifier","src":"8104:3:74"},"nativeSrc":"8104:31:74","nodeType":"YulFunctionCall","src":"8104:31:74"}],"functionName":{"name":"sstore","nativeSrc":"8093:6:74","nodeType":"YulIdentifier","src":"8093:6:74"},"nativeSrc":"8093:43:74","nodeType":"YulFunctionCall","src":"8093:43:74"},"nativeSrc":"8093:43:74","nodeType":"YulExpressionStatement","src":"8093:43:74"}]},"nativeSrc":"6208:1942:74","nodeType":"YulCase","src":"6208:1942:74","value":{"kind":"number","nativeSrc":"6213:1:74","nodeType":"YulLiteral","src":"6213:1:74","type":"","value":"1"}},{"body":{"nativeSrc":"8171:1264:74","nodeType":"YulBlock","src":"8171:1264:74","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8268:3:74","nodeType":"YulLiteral","src":"8268:3:74","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"8273:14:74","nodeType":"YulIdentifier","src":"8273:14:74"}],"functionName":{"name":"mstore","nativeSrc":"8261:6:74","nodeType":"YulIdentifier","src":"8261:6:74"},"nativeSrc":"8261:27:74","nodeType":"YulFunctionCall","src":"8261:27:74"},"nativeSrc":"8261:27:74","nodeType":"YulExpressionStatement","src":"8261:27:74"},{"nativeSrc":"8381:53:74","nodeType":"YulVariableDeclaration","src":"8381:53:74","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8405:3:74","nodeType":"YulLiteral","src":"8405:3:74","type":"","value":"0x0"},{"kind":"number","nativeSrc":"8410:4:74","nodeType":"YulLiteral","src":"8410:4:74","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8395:9:74","nodeType":"YulIdentifier","src":"8395:9:74"},"nativeSrc":"8395:20:74","nodeType":"YulFunctionCall","src":"8395:20:74"},{"arguments":[{"name":"slength","nativeSrc":"8421:7:74","nodeType":"YulIdentifier","src":"8421:7:74"},{"kind":"number","nativeSrc":"8430:2:74","nodeType":"YulLiteral","src":"8430:2:74","type":"","value":"32"}],"functionName":{"name":"div","nativeSrc":"8417:3:74","nodeType":"YulIdentifier","src":"8417:3:74"},"nativeSrc":"8417:16:74","nodeType":"YulFunctionCall","src":"8417:16:74"}],"functionName":{"name":"add","nativeSrc":"8391:3:74","nodeType":"YulIdentifier","src":"8391:3:74"},"nativeSrc":"8391:43:74","nodeType":"YulFunctionCall","src":"8391:43:74"},"variables":[{"name":"sc","nativeSrc":"8385:2:74","nodeType":"YulTypedName","src":"8385:2:74","type":""}]},{"expression":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"8494:14:74","nodeType":"YulIdentifier","src":"8494:14:74"},{"arguments":[{"arguments":[{"name":"newlength","nativeSrc":"8518:9:74","nodeType":"YulIdentifier","src":"8518:9:74"},{"kind":"number","nativeSrc":"8529:1:74","nodeType":"YulLiteral","src":"8529:1:74","type":"","value":"2"}],"functionName":{"name":"mul","nativeSrc":"8514:3:74","nodeType":"YulIdentifier","src":"8514:3:74"},"nativeSrc":"8514:17:74","nodeType":"YulFunctionCall","src":"8514:17:74"},{"kind":"number","nativeSrc":"8533:1:74","nodeType":"YulLiteral","src":"8533:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8510:3:74","nodeType":"YulIdentifier","src":"8510:3:74"},"nativeSrc":"8510:25:74","nodeType":"YulFunctionCall","src":"8510:25:74"}],"functionName":{"name":"sstore","nativeSrc":"8487:6:74","nodeType":"YulIdentifier","src":"8487:6:74"},"nativeSrc":"8487:49:74","nodeType":"YulFunctionCall","src":"8487:49:74"},"nativeSrc":"8487:49:74","nodeType":"YulExpressionStatement","src":"8487:49:74"},{"nativeSrc":"8663:34:74","nodeType":"YulVariableDeclaration","src":"8663:34:74","value":{"arguments":[{"name":"slength","nativeSrc":"8685:7:74","nodeType":"YulIdentifier","src":"8685:7:74"},{"kind":"number","nativeSrc":"8694:2:74","nodeType":"YulLiteral","src":"8694:2:74","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8681:3:74","nodeType":"YulIdentifier","src":"8681:3:74"},"nativeSrc":"8681:16:74","nodeType":"YulFunctionCall","src":"8681:16:74"},"variables":[{"name":"slengthmod","nativeSrc":"8667:10:74","nodeType":"YulTypedName","src":"8667:10:74","type":""}]},{"nativeSrc":"8714:34:74","nodeType":"YulVariableDeclaration","src":"8714:34:74","value":{"arguments":[{"name":"mlength","nativeSrc":"8736:7:74","nodeType":"YulIdentifier","src":"8736:7:74"},{"kind":"number","nativeSrc":"8745:2:74","nodeType":"YulLiteral","src":"8745:2:74","type":"","value":"32"}],"functionName":{"name":"mod","nativeSrc":"8732:3:74","nodeType":"YulIdentifier","src":"8732:3:74"},"nativeSrc":"8732:16:74","nodeType":"YulFunctionCall","src":"8732:16:74"},"variables":[{"name":"mlengthmod","nativeSrc":"8718:10:74","nodeType":"YulTypedName","src":"8718:10:74","type":""}]},{"nativeSrc":"8765:33:74","nodeType":"YulVariableDeclaration","src":"8765:33:74","value":{"arguments":[{"kind":"number","nativeSrc":"8783:2:74","nodeType":"YulLiteral","src":"8783:2:74","type":"","value":"32"},{"name":"slengthmod","nativeSrc":"8787:10:74","nodeType":"YulIdentifier","src":"8787:10:74"}],"functionName":{"name":"sub","nativeSrc":"8779:3:74","nodeType":"YulIdentifier","src":"8779:3:74"},"nativeSrc":"8779:19:74","nodeType":"YulFunctionCall","src":"8779:19:74"},"variables":[{"name":"submod","nativeSrc":"8769:6:74","nodeType":"YulTypedName","src":"8769:6:74","type":""}]},{"nativeSrc":"8815:33:74","nodeType":"YulVariableDeclaration","src":"8815:33:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8829:10:74","nodeType":"YulIdentifier","src":"8829:10:74"},{"name":"submod","nativeSrc":"8841:6:74","nodeType":"YulIdentifier","src":"8841:6:74"}],"functionName":{"name":"add","nativeSrc":"8825:3:74","nodeType":"YulIdentifier","src":"8825:3:74"},"nativeSrc":"8825:23:74","nodeType":"YulFunctionCall","src":"8825:23:74"},"variables":[{"name":"mc","nativeSrc":"8819:2:74","nodeType":"YulTypedName","src":"8819:2:74","type":""}]},{"nativeSrc":"8865:35:74","nodeType":"YulVariableDeclaration","src":"8865:35:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"8880:10:74","nodeType":"YulIdentifier","src":"8880:10:74"},{"name":"mlength","nativeSrc":"8892:7:74","nodeType":"YulIdentifier","src":"8892:7:74"}],"functionName":{"name":"add","nativeSrc":"8876:3:74","nodeType":"YulIdentifier","src":"8876:3:74"},"nativeSrc":"8876:24:74","nodeType":"YulFunctionCall","src":"8876:24:74"},"variables":[{"name":"end","nativeSrc":"8869:3:74","nodeType":"YulTypedName","src":"8869:3:74","type":""}]},{"nativeSrc":"8917:38:74","nodeType":"YulVariableDeclaration","src":"8917:38:74","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8937:5:74","nodeType":"YulLiteral","src":"8937:5:74","type":"","value":"0x100"},{"name":"submod","nativeSrc":"8944:6:74","nodeType":"YulIdentifier","src":"8944:6:74"}],"functionName":{"name":"exp","nativeSrc":"8933:3:74","nodeType":"YulIdentifier","src":"8933:3:74"},"nativeSrc":"8933:18:74","nodeType":"YulFunctionCall","src":"8933:18:74"},{"kind":"number","nativeSrc":"8953:1:74","nodeType":"YulLiteral","src":"8953:1:74","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8929:3:74","nodeType":"YulIdentifier","src":"8929:3:74"},"nativeSrc":"8929:26:74","nodeType":"YulFunctionCall","src":"8929:26:74"},"variables":[{"name":"mask","nativeSrc":"8921:4:74","nodeType":"YulTypedName","src":"8921:4:74","type":""}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"8980:2:74","nodeType":"YulIdentifier","src":"8980:2:74"},{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"8994:2:74","nodeType":"YulIdentifier","src":"8994:2:74"}],"functionName":{"name":"sload","nativeSrc":"8988:5:74","nodeType":"YulIdentifier","src":"8988:5:74"},"nativeSrc":"8988:9:74","nodeType":"YulFunctionCall","src":"8988:9:74"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9009:2:74","nodeType":"YulIdentifier","src":"9009:2:74"}],"functionName":{"name":"mload","nativeSrc":"9003:5:74","nodeType":"YulIdentifier","src":"9003:5:74"},"nativeSrc":"9003:9:74","nodeType":"YulFunctionCall","src":"9003:9:74"},{"name":"mask","nativeSrc":"9014:4:74","nodeType":"YulIdentifier","src":"9014:4:74"}],"functionName":{"name":"and","nativeSrc":"8999:3:74","nodeType":"YulIdentifier","src":"8999:3:74"},"nativeSrc":"8999:20:74","nodeType":"YulFunctionCall","src":"8999:20:74"}],"functionName":{"name":"add","nativeSrc":"8984:3:74","nodeType":"YulIdentifier","src":"8984:3:74"},"nativeSrc":"8984:36:74","nodeType":"YulFunctionCall","src":"8984:36:74"}],"functionName":{"name":"sstore","nativeSrc":"8973:6:74","nodeType":"YulIdentifier","src":"8973:6:74"},"nativeSrc":"8973:48:74","nodeType":"YulFunctionCall","src":"8973:48:74"},"nativeSrc":"8973:48:74","nodeType":"YulExpressionStatement","src":"8973:48:74"},{"body":{"nativeSrc":"9249:61:74","nodeType":"YulBlock","src":"9249:61:74","statements":[{"expression":{"arguments":[{"name":"sc","nativeSrc":"9278:2:74","nodeType":"YulIdentifier","src":"9278:2:74"},{"arguments":[{"name":"mc","nativeSrc":"9288:2:74","nodeType":"YulIdentifier","src":"9288:2:74"}],"functionName":{"name":"mload","nativeSrc":"9282:5:74","nodeType":"YulIdentifier","src":"9282:5:74"},"nativeSrc":"9282:9:74","nodeType":"YulFunctionCall","src":"9282:9:74"}],"functionName":{"name":"sstore","nativeSrc":"9271:6:74","nodeType":"YulIdentifier","src":"9271:6:74"},"nativeSrc":"9271:21:74","nodeType":"YulFunctionCall","src":"9271:21:74"},"nativeSrc":"9271:21:74","nodeType":"YulExpressionStatement","src":"9271:21:74"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"9143:2:74","nodeType":"YulIdentifier","src":"9143:2:74"},{"name":"end","nativeSrc":"9147:3:74","nodeType":"YulIdentifier","src":"9147:3:74"}],"functionName":{"name":"lt","nativeSrc":"9140:2:74","nodeType":"YulIdentifier","src":"9140:2:74"},"nativeSrc":"9140:11:74","nodeType":"YulFunctionCall","src":"9140:11:74"},"nativeSrc":"9039:271:74","nodeType":"YulForLoop","post":{"nativeSrc":"9152:96:74","nodeType":"YulBlock","src":"9152:96:74","statements":[{"nativeSrc":"9174:16:74","nodeType":"YulAssignment","src":"9174:16:74","value":{"arguments":[{"name":"sc","nativeSrc":"9184:2:74","nodeType":"YulIdentifier","src":"9184:2:74"},{"kind":"number","nativeSrc":"9188:1:74","nodeType":"YulLiteral","src":"9188:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9180:3:74","nodeType":"YulIdentifier","src":"9180:3:74"},"nativeSrc":"9180:10:74","nodeType":"YulFunctionCall","src":"9180:10:74"},"variableNames":[{"name":"sc","nativeSrc":"9174:2:74","nodeType":"YulIdentifier","src":"9174:2:74"}]},{"nativeSrc":"9211:19:74","nodeType":"YulAssignment","src":"9211:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"9221:2:74","nodeType":"YulIdentifier","src":"9221:2:74"},{"kind":"number","nativeSrc":"9225:4:74","nodeType":"YulLiteral","src":"9225:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9217:3:74","nodeType":"YulIdentifier","src":"9217:3:74"},"nativeSrc":"9217:13:74","nodeType":"YulFunctionCall","src":"9217:13:74"},"variableNames":[{"name":"mc","nativeSrc":"9211:2:74","nodeType":"YulIdentifier","src":"9211:2:74"}]}]},"pre":{"nativeSrc":"9043:96:74","nodeType":"YulBlock","src":"9043:96:74","statements":[{"nativeSrc":"9065:16:74","nodeType":"YulAssignment","src":"9065:16:74","value":{"arguments":[{"name":"sc","nativeSrc":"9075:2:74","nodeType":"YulIdentifier","src":"9075:2:74"},{"kind":"number","nativeSrc":"9079:1:74","nodeType":"YulLiteral","src":"9079:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9071:3:74","nodeType":"YulIdentifier","src":"9071:3:74"},"nativeSrc":"9071:10:74","nodeType":"YulFunctionCall","src":"9071:10:74"},"variableNames":[{"name":"sc","nativeSrc":"9065:2:74","nodeType":"YulIdentifier","src":"9065:2:74"}]},{"nativeSrc":"9102:19:74","nodeType":"YulAssignment","src":"9102:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"9112:2:74","nodeType":"YulIdentifier","src":"9112:2:74"},{"kind":"number","nativeSrc":"9116:4:74","nodeType":"YulLiteral","src":"9116:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9108:3:74","nodeType":"YulIdentifier","src":"9108:3:74"},"nativeSrc":"9108:13:74","nodeType":"YulFunctionCall","src":"9108:13:74"},"variableNames":[{"name":"mc","nativeSrc":"9102:2:74","nodeType":"YulIdentifier","src":"9102:2:74"}]}]},"src":"9039:271:74"},{"nativeSrc":"9328:32:74","nodeType":"YulAssignment","src":"9328:32:74","value":{"arguments":[{"kind":"number","nativeSrc":"9340:5:74","nodeType":"YulLiteral","src":"9340:5:74","type":"","value":"0x100"},{"arguments":[{"name":"mc","nativeSrc":"9351:2:74","nodeType":"YulIdentifier","src":"9351:2:74"},{"name":"end","nativeSrc":"9355:3:74","nodeType":"YulIdentifier","src":"9355:3:74"}],"functionName":{"name":"sub","nativeSrc":"9347:3:74","nodeType":"YulIdentifier","src":"9347:3:74"},"nativeSrc":"9347:12:74","nodeType":"YulFunctionCall","src":"9347:12:74"}],"functionName":{"name":"exp","nativeSrc":"9336:3:74","nodeType":"YulIdentifier","src":"9336:3:74"},"nativeSrc":"9336:24:74","nodeType":"YulFunctionCall","src":"9336:24:74"},"variableNames":[{"name":"mask","nativeSrc":"9328:4:74","nodeType":"YulIdentifier","src":"9328:4:74"}]},{"expression":{"arguments":[{"name":"sc","nativeSrc":"9385:2:74","nodeType":"YulIdentifier","src":"9385:2:74"},{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"9403:2:74","nodeType":"YulIdentifier","src":"9403:2:74"}],"functionName":{"name":"mload","nativeSrc":"9397:5:74","nodeType":"YulIdentifier","src":"9397:5:74"},"nativeSrc":"9397:9:74","nodeType":"YulFunctionCall","src":"9397:9:74"},{"name":"mask","nativeSrc":"9408:4:74","nodeType":"YulIdentifier","src":"9408:4:74"}],"functionName":{"name":"div","nativeSrc":"9393:3:74","nodeType":"YulIdentifier","src":"9393:3:74"},"nativeSrc":"9393:20:74","nodeType":"YulFunctionCall","src":"9393:20:74"},{"name":"mask","nativeSrc":"9415:4:74","nodeType":"YulIdentifier","src":"9415:4:74"}],"functionName":{"name":"mul","nativeSrc":"9389:3:74","nodeType":"YulIdentifier","src":"9389:3:74"},"nativeSrc":"9389:31:74","nodeType":"YulFunctionCall","src":"9389:31:74"}],"functionName":{"name":"sstore","nativeSrc":"9378:6:74","nodeType":"YulIdentifier","src":"9378:6:74"},"nativeSrc":"9378:43:74","nodeType":"YulFunctionCall","src":"9378:43:74"},"nativeSrc":"9378:43:74","nodeType":"YulExpressionStatement","src":"9378:43:74"}]},"nativeSrc":"8163:1272:74","nodeType":"YulCase","src":"8163:1272:74","value":"default"}],"expression":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"4658:7:74","nodeType":"YulIdentifier","src":"4658:7:74"},{"kind":"number","nativeSrc":"4667:2:74","nodeType":"YulLiteral","src":"4667:2:74","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4655:2:74","nodeType":"YulIdentifier","src":"4655:2:74"},"nativeSrc":"4655:15:74","nodeType":"YulFunctionCall","src":"4655:15:74"},{"arguments":[{"name":"newlength","nativeSrc":"4675:9:74","nodeType":"YulIdentifier","src":"4675:9:74"},{"kind":"number","nativeSrc":"4686:2:74","nodeType":"YulLiteral","src":"4686:2:74","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4672:2:74","nodeType":"YulIdentifier","src":"4672:2:74"},"nativeSrc":"4672:17:74","nodeType":"YulFunctionCall","src":"4672:17:74"}],"functionName":{"name":"add","nativeSrc":"4651:3:74","nodeType":"YulIdentifier","src":"4651:3:74"},"nativeSrc":"4651:39:74","nodeType":"YulFunctionCall","src":"4651:39:74"},"nativeSrc":"4644:4791:74","nodeType":"YulSwitch","src":"4644:4791:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23245,"isOffset":false,"isSlot":false,"src":"4315:10:74","valueSize":1},{"declaration":23245,"isOffset":false,"isSlot":false,"src":"5521:10:74","valueSize":1},{"declaration":23245,"isOffset":false,"isSlot":false,"src":"7265:10:74","valueSize":1},{"declaration":23245,"isOffset":false,"isSlot":false,"src":"7316:10:74","valueSize":1},{"declaration":23245,"isOffset":false,"isSlot":false,"src":"8829:10:74","valueSize":1},{"declaration":23245,"isOffset":false,"isSlot":false,"src":"8880:10:74","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"3697:14:74","suffix":"slot","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"4991:14:74","suffix":"slot","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"6429:14:74","suffix":"slot","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"6574:14:74","suffix":"slot","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"8273:14:74","suffix":"slot","valueSize":1},{"declaration":23243,"isOffset":false,"isSlot":true,"src":"8494:14:74","suffix":"slot","valueSize":1}],"id":23248,"nodeType":"InlineAssembly","src":"3446:5999:74"}]},"id":23250,"implemented":true,"kind":"function","modifiers":[],"name":"concatStorage","nameLocation":"3363:13:74","nodeType":"FunctionDefinition","parameters":{"id":23246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23243,"mutability":"mutable","name":"_preBytes","nameLocation":"3391:9:74","nodeType":"VariableDeclaration","scope":23250,"src":"3377:23:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":23242,"name":"bytes","nodeType":"ElementaryTypeName","src":"3377:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23245,"mutability":"mutable","name":"_postBytes","nameLocation":"3415:10:74","nodeType":"VariableDeclaration","scope":23250,"src":"3402:23:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23244,"name":"bytes","nodeType":"ElementaryTypeName","src":"3402:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3376:50:74"},"returnParameters":{"id":23247,"nodeType":"ParameterList","parameters":[],"src":"3436:0:74"},"scope":23573,"src":"3354:6097:74","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":23286,"nodeType":"Block","src":"9621:2640:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23262,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23256,"src":"9639:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3331","id":23263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9649:2:74","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"9639:12:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":23265,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23256,"src":"9655:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9639:23:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f766572666c6f77","id":23267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9664:16:74","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":23261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9631:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9631:50:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23269,"nodeType":"ExpressionStatement","src":"9631:50:74"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23271,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23252,"src":"9699:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9706:6:74","memberName":"length","nodeType":"MemberAccess","src":"9699:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23273,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23254,"src":"9716:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":23274,"name":"_length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23256,"src":"9725:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9716:16:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9699:33:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"736c6963655f6f75744f66426f756e6473","id":23277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9734:19:74","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":23270,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"9691:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9691:63:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23279,"nodeType":"ExpressionStatement","src":"9691:63:74"},{"assignments":[23281],"declarations":[{"constant":false,"id":23281,"mutability":"mutable","name":"tempBytes","nameLocation":"9778:9:74","nodeType":"VariableDeclaration","scope":23286,"src":"9765:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23280,"name":"bytes","nodeType":"ElementaryTypeName","src":"9765:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":23282,"nodeType":"VariableDeclarationStatement","src":"9765:22:74"},{"AST":{"nativeSrc":"9807:2421:74","nodeType":"YulBlock","src":"9807:2421:74","statements":[{"cases":[{"body":{"nativeSrc":"9863:1960:74","nodeType":"YulBlock","src":"9863:1960:74","statements":[{"nativeSrc":"10019:24:74","nodeType":"YulAssignment","src":"10019:24:74","value":{"arguments":[{"kind":"number","nativeSrc":"10038:4:74","nodeType":"YulLiteral","src":"10038:4:74","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"10032:5:74","nodeType":"YulIdentifier","src":"10032:5:74"},"nativeSrc":"10032:11:74","nodeType":"YulFunctionCall","src":"10032:11:74"},"variableNames":[{"name":"tempBytes","nativeSrc":"10019:9:74","nodeType":"YulIdentifier","src":"10019:9:74"}]},{"nativeSrc":"10667:33:74","nodeType":"YulVariableDeclaration","src":"10667:33:74","value":{"arguments":[{"name":"_length","nativeSrc":"10688:7:74","nodeType":"YulIdentifier","src":"10688:7:74"},{"kind":"number","nativeSrc":"10697:2:74","nodeType":"YulLiteral","src":"10697:2:74","type":"","value":"31"}],"functionName":{"name":"and","nativeSrc":"10684:3:74","nodeType":"YulIdentifier","src":"10684:3:74"},"nativeSrc":"10684:16:74","nodeType":"YulFunctionCall","src":"10684:16:74"},"variables":[{"name":"lengthmod","nativeSrc":"10671:9:74","nodeType":"YulTypedName","src":"10671:9:74","type":""}]},{"nativeSrc":"11021:70:74","nodeType":"YulVariableDeclaration","src":"11021:70:74","value":{"arguments":[{"arguments":[{"name":"tempBytes","nativeSrc":"11039:9:74","nodeType":"YulIdentifier","src":"11039:9:74"},{"name":"lengthmod","nativeSrc":"11050:9:74","nodeType":"YulIdentifier","src":"11050:9:74"}],"functionName":{"name":"add","nativeSrc":"11035:3:74","nodeType":"YulIdentifier","src":"11035:3:74"},"nativeSrc":"11035:25:74","nodeType":"YulFunctionCall","src":"11035:25:74"},{"arguments":[{"kind":"number","nativeSrc":"11066:4:74","nodeType":"YulLiteral","src":"11066:4:74","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11079:9:74","nodeType":"YulIdentifier","src":"11079:9:74"}],"functionName":{"name":"iszero","nativeSrc":"11072:6:74","nodeType":"YulIdentifier","src":"11072:6:74"},"nativeSrc":"11072:17:74","nodeType":"YulFunctionCall","src":"11072:17:74"}],"functionName":{"name":"mul","nativeSrc":"11062:3:74","nodeType":"YulIdentifier","src":"11062:3:74"},"nativeSrc":"11062:28:74","nodeType":"YulFunctionCall","src":"11062:28:74"}],"functionName":{"name":"add","nativeSrc":"11031:3:74","nodeType":"YulIdentifier","src":"11031:3:74"},"nativeSrc":"11031:60:74","nodeType":"YulFunctionCall","src":"11031:60:74"},"variables":[{"name":"mc","nativeSrc":"11025:2:74","nodeType":"YulTypedName","src":"11025:2:74","type":""}]},{"nativeSrc":"11108:27:74","nodeType":"YulVariableDeclaration","src":"11108:27:74","value":{"arguments":[{"name":"mc","nativeSrc":"11123:2:74","nodeType":"YulIdentifier","src":"11123:2:74"},{"name":"_length","nativeSrc":"11127:7:74","nodeType":"YulIdentifier","src":"11127:7:74"}],"functionName":{"name":"add","nativeSrc":"11119:3:74","nodeType":"YulIdentifier","src":"11119:3:74"},"nativeSrc":"11119:16:74","nodeType":"YulFunctionCall","src":"11119:16:74"},"variables":[{"name":"end","nativeSrc":"11112:3:74","nodeType":"YulTypedName","src":"11112:3:74","type":""}]},{"body":{"nativeSrc":"11517:61:74","nodeType":"YulBlock","src":"11517:61:74","statements":[{"expression":{"arguments":[{"name":"mc","nativeSrc":"11546:2:74","nodeType":"YulIdentifier","src":"11546:2:74"},{"arguments":[{"name":"cc","nativeSrc":"11556:2:74","nodeType":"YulIdentifier","src":"11556:2:74"}],"functionName":{"name":"mload","nativeSrc":"11550:5:74","nodeType":"YulIdentifier","src":"11550:5:74"},"nativeSrc":"11550:9:74","nodeType":"YulFunctionCall","src":"11550:9:74"}],"functionName":{"name":"mstore","nativeSrc":"11539:6:74","nodeType":"YulIdentifier","src":"11539:6:74"},"nativeSrc":"11539:21:74","nodeType":"YulFunctionCall","src":"11539:21:74"},"nativeSrc":"11539:21:74","nodeType":"YulExpressionStatement","src":"11539:21:74"}]},"condition":{"arguments":[{"name":"mc","nativeSrc":"11408:2:74","nodeType":"YulIdentifier","src":"11408:2:74"},{"name":"end","nativeSrc":"11412:3:74","nodeType":"YulIdentifier","src":"11412:3:74"}],"functionName":{"name":"lt","nativeSrc":"11405:2:74","nodeType":"YulIdentifier","src":"11405:2:74"},"nativeSrc":"11405:11:74","nodeType":"YulFunctionCall","src":"11405:11:74"},"nativeSrc":"11153:425:74","nodeType":"YulForLoop","post":{"nativeSrc":"11417:99:74","nodeType":"YulBlock","src":"11417:99:74","statements":[{"nativeSrc":"11439:19:74","nodeType":"YulAssignment","src":"11439:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"11449:2:74","nodeType":"YulIdentifier","src":"11449:2:74"},{"kind":"number","nativeSrc":"11453:4:74","nodeType":"YulLiteral","src":"11453:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11445:3:74","nodeType":"YulIdentifier","src":"11445:3:74"},"nativeSrc":"11445:13:74","nodeType":"YulFunctionCall","src":"11445:13:74"},"variableNames":[{"name":"mc","nativeSrc":"11439:2:74","nodeType":"YulIdentifier","src":"11439:2:74"}]},{"nativeSrc":"11479:19:74","nodeType":"YulAssignment","src":"11479:19:74","value":{"arguments":[{"name":"cc","nativeSrc":"11489:2:74","nodeType":"YulIdentifier","src":"11489:2:74"},{"kind":"number","nativeSrc":"11493:4:74","nodeType":"YulLiteral","src":"11493:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11485:3:74","nodeType":"YulIdentifier","src":"11485:3:74"},"nativeSrc":"11485:13:74","nodeType":"YulFunctionCall","src":"11485:13:74"},"variableNames":[{"name":"cc","nativeSrc":"11479:2:74","nodeType":"YulIdentifier","src":"11479:2:74"}]}]},"pre":{"nativeSrc":"11157:247:74","nodeType":"YulBlock","src":"11157:247:74","statements":[{"nativeSrc":"11306:80:74","nodeType":"YulVariableDeclaration","src":"11306:80:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"11328:6:74","nodeType":"YulIdentifier","src":"11328:6:74"},{"name":"lengthmod","nativeSrc":"11336:9:74","nodeType":"YulIdentifier","src":"11336:9:74"}],"functionName":{"name":"add","nativeSrc":"11324:3:74","nodeType":"YulIdentifier","src":"11324:3:74"},"nativeSrc":"11324:22:74","nodeType":"YulFunctionCall","src":"11324:22:74"},{"arguments":[{"kind":"number","nativeSrc":"11352:4:74","nodeType":"YulLiteral","src":"11352:4:74","type":"","value":"0x20"},{"arguments":[{"name":"lengthmod","nativeSrc":"11365:9:74","nodeType":"YulIdentifier","src":"11365:9:74"}],"functionName":{"name":"iszero","nativeSrc":"11358:6:74","nodeType":"YulIdentifier","src":"11358:6:74"},"nativeSrc":"11358:17:74","nodeType":"YulFunctionCall","src":"11358:17:74"}],"functionName":{"name":"mul","nativeSrc":"11348:3:74","nodeType":"YulIdentifier","src":"11348:3:74"},"nativeSrc":"11348:28:74","nodeType":"YulFunctionCall","src":"11348:28:74"}],"functionName":{"name":"add","nativeSrc":"11320:3:74","nodeType":"YulIdentifier","src":"11320:3:74"},"nativeSrc":"11320:57:74","nodeType":"YulFunctionCall","src":"11320:57:74"},{"name":"_start","nativeSrc":"11379:6:74","nodeType":"YulIdentifier","src":"11379:6:74"}],"functionName":{"name":"add","nativeSrc":"11316:3:74","nodeType":"YulIdentifier","src":"11316:3:74"},"nativeSrc":"11316:70:74","nodeType":"YulFunctionCall","src":"11316:70:74"},"variables":[{"name":"cc","nativeSrc":"11310:2:74","nodeType":"YulTypedName","src":"11310:2:74","type":""}]}]},"src":"11153:425:74"},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"11603:9:74","nodeType":"YulIdentifier","src":"11603:9:74"},{"name":"_length","nativeSrc":"11614:7:74","nodeType":"YulIdentifier","src":"11614:7:74"}],"functionName":{"name":"mstore","nativeSrc":"11596:6:74","nodeType":"YulIdentifier","src":"11596:6:74"},"nativeSrc":"11596:26:74","nodeType":"YulFunctionCall","src":"11596:26:74"},"nativeSrc":"11596:26:74","nodeType":"YulExpressionStatement","src":"11596:26:74"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11777:4:74","nodeType":"YulLiteral","src":"11777:4:74","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"11791:2:74","nodeType":"YulIdentifier","src":"11791:2:74"},{"kind":"number","nativeSrc":"11795:2:74","nodeType":"YulLiteral","src":"11795:2:74","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"11787:3:74","nodeType":"YulIdentifier","src":"11787:3:74"},"nativeSrc":"11787:11:74","nodeType":"YulFunctionCall","src":"11787:11:74"},{"arguments":[{"kind":"number","nativeSrc":"11804:2:74","nodeType":"YulLiteral","src":"11804:2:74","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"11800:3:74","nodeType":"YulIdentifier","src":"11800:3:74"},"nativeSrc":"11800:7:74","nodeType":"YulFunctionCall","src":"11800:7:74"}],"functionName":{"name":"and","nativeSrc":"11783:3:74","nodeType":"YulIdentifier","src":"11783:3:74"},"nativeSrc":"11783:25:74","nodeType":"YulFunctionCall","src":"11783:25:74"}],"functionName":{"name":"mstore","nativeSrc":"11770:6:74","nodeType":"YulIdentifier","src":"11770:6:74"},"nativeSrc":"11770:39:74","nodeType":"YulFunctionCall","src":"11770:39:74"},"nativeSrc":"11770:39:74","nodeType":"YulExpressionStatement","src":"11770:39:74"}]},"nativeSrc":"9856:1967:74","nodeType":"YulCase","src":"9856:1967:74","value":{"kind":"number","nativeSrc":"9861:1:74","nodeType":"YulLiteral","src":"9861:1:74","type":"","value":"0"}},{"body":{"nativeSrc":"11927:291:74","nodeType":"YulBlock","src":"11927:291:74","statements":[{"nativeSrc":"11945:24:74","nodeType":"YulAssignment","src":"11945:24:74","value":{"arguments":[{"kind":"number","nativeSrc":"11964:4:74","nodeType":"YulLiteral","src":"11964:4:74","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"11958:5:74","nodeType":"YulIdentifier","src":"11958:5:74"},"nativeSrc":"11958:11:74","nodeType":"YulFunctionCall","src":"11958:11:74"},"variableNames":[{"name":"tempBytes","nativeSrc":"11945:9:74","nodeType":"YulIdentifier","src":"11945:9:74"}]},{"expression":{"arguments":[{"name":"tempBytes","nativeSrc":"12139:9:74","nodeType":"YulIdentifier","src":"12139:9:74"},{"kind":"number","nativeSrc":"12150:1:74","nodeType":"YulLiteral","src":"12150:1:74","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12132:6:74","nodeType":"YulIdentifier","src":"12132:6:74"},"nativeSrc":"12132:20:74","nodeType":"YulFunctionCall","src":"12132:20:74"},"nativeSrc":"12132:20:74","nodeType":"YulExpressionStatement","src":"12132:20:74"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12177:4:74","nodeType":"YulLiteral","src":"12177:4:74","type":"","value":"0x40"},{"arguments":[{"name":"tempBytes","nativeSrc":"12187:9:74","nodeType":"YulIdentifier","src":"12187:9:74"},{"kind":"number","nativeSrc":"12198:4:74","nodeType":"YulLiteral","src":"12198:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12183:3:74","nodeType":"YulIdentifier","src":"12183:3:74"},"nativeSrc":"12183:20:74","nodeType":"YulFunctionCall","src":"12183:20:74"}],"functionName":{"name":"mstore","nativeSrc":"12170:6:74","nodeType":"YulIdentifier","src":"12170:6:74"},"nativeSrc":"12170:34:74","nodeType":"YulFunctionCall","src":"12170:34:74"},"nativeSrc":"12170:34:74","nodeType":"YulExpressionStatement","src":"12170:34:74"}]},"nativeSrc":"11919:299:74","nodeType":"YulCase","src":"11919:299:74","value":"default"}],"expression":{"arguments":[{"name":"_length","nativeSrc":"9835:7:74","nodeType":"YulIdentifier","src":"9835:7:74"}],"functionName":{"name":"iszero","nativeSrc":"9828:6:74","nodeType":"YulIdentifier","src":"9828:6:74"},"nativeSrc":"9828:15:74","nodeType":"YulFunctionCall","src":"9828:15:74"},"nativeSrc":"9821:2397:74","nodeType":"YulSwitch","src":"9821:2397:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23252,"isOffset":false,"isSlot":false,"src":"11328:6:74","valueSize":1},{"declaration":23256,"isOffset":false,"isSlot":false,"src":"10688:7:74","valueSize":1},{"declaration":23256,"isOffset":false,"isSlot":false,"src":"11127:7:74","valueSize":1},{"declaration":23256,"isOffset":false,"isSlot":false,"src":"11614:7:74","valueSize":1},{"declaration":23256,"isOffset":false,"isSlot":false,"src":"9835:7:74","valueSize":1},{"declaration":23254,"isOffset":false,"isSlot":false,"src":"11379:6:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"10019:9:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"11039:9:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"11603:9:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"11945:9:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"12139:9:74","valueSize":1},{"declaration":23281,"isOffset":false,"isSlot":false,"src":"12187:9:74","valueSize":1}],"id":23283,"nodeType":"InlineAssembly","src":"9798:2430:74"},{"expression":{"id":23284,"name":"tempBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23281,"src":"12245:9:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":23260,"id":23285,"nodeType":"Return","src":"12238:16:74"}]},"id":23287,"implemented":true,"kind":"function","modifiers":[],"name":"slice","nameLocation":"9466:5:74","nodeType":"FunctionDefinition","parameters":{"id":23257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23252,"mutability":"mutable","name":"_bytes","nameLocation":"9494:6:74","nodeType":"VariableDeclaration","scope":23287,"src":"9481:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23251,"name":"bytes","nodeType":"ElementaryTypeName","src":"9481:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23254,"mutability":"mutable","name":"_start","nameLocation":"9518:6:74","nodeType":"VariableDeclaration","scope":23287,"src":"9510:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23253,"name":"uint256","nodeType":"ElementaryTypeName","src":"9510:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":23256,"mutability":"mutable","name":"_length","nameLocation":"9542:7:74","nodeType":"VariableDeclaration","scope":23287,"src":"9534:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23255,"name":"uint256","nodeType":"ElementaryTypeName","src":"9534:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9471:84:74"},"returnParameters":{"id":23260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23259,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23287,"src":"9603:12:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23258,"name":"bytes","nodeType":"ElementaryTypeName","src":"9603:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9602:14:74"},"scope":23573,"src":"9457:2804:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23312,"nodeType":"Block","src":"12355:266:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23297,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23289,"src":"12373:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12380:6:74","memberName":"length","nodeType":"MemberAccess","src":"12373:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23299,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23291,"src":"12390:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3230","id":23300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12399:2:74","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"12390:11:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12373:28:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","id":23303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12403:23:74","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":23296,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12365:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:62:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23305,"nodeType":"ExpressionStatement","src":"12365:62:74"},{"assignments":[23307],"declarations":[{"constant":false,"id":23307,"mutability":"mutable","name":"tempAddress","nameLocation":"12445:11:74","nodeType":"VariableDeclaration","scope":23312,"src":"12437:19:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23306,"name":"address","nodeType":"ElementaryTypeName","src":"12437:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":23308,"nodeType":"VariableDeclarationStatement","src":"12437:19:74"},{"AST":{"nativeSrc":"12476:110:74","nodeType":"YulBlock","src":"12476:110:74","statements":[{"nativeSrc":"12490:86:74","nodeType":"YulAssignment","src":"12490:86:74","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"12523:6:74","nodeType":"YulIdentifier","src":"12523:6:74"},{"kind":"number","nativeSrc":"12531:4:74","nodeType":"YulLiteral","src":"12531:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12519:3:74","nodeType":"YulIdentifier","src":"12519:3:74"},"nativeSrc":"12519:17:74","nodeType":"YulFunctionCall","src":"12519:17:74"},{"name":"_start","nativeSrc":"12538:6:74","nodeType":"YulIdentifier","src":"12538:6:74"}],"functionName":{"name":"add","nativeSrc":"12515:3:74","nodeType":"YulIdentifier","src":"12515:3:74"},"nativeSrc":"12515:30:74","nodeType":"YulFunctionCall","src":"12515:30:74"}],"functionName":{"name":"mload","nativeSrc":"12509:5:74","nodeType":"YulIdentifier","src":"12509:5:74"},"nativeSrc":"12509:37:74","nodeType":"YulFunctionCall","src":"12509:37:74"},{"kind":"number","nativeSrc":"12548:27:74","nodeType":"YulLiteral","src":"12548:27:74","type":"","value":"0x1000000000000000000000000"}],"functionName":{"name":"div","nativeSrc":"12505:3:74","nodeType":"YulIdentifier","src":"12505:3:74"},"nativeSrc":"12505:71:74","nodeType":"YulFunctionCall","src":"12505:71:74"},"variableNames":[{"name":"tempAddress","nativeSrc":"12490:11:74","nodeType":"YulIdentifier","src":"12490:11:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23289,"isOffset":false,"isSlot":false,"src":"12523:6:74","valueSize":1},{"declaration":23291,"isOffset":false,"isSlot":false,"src":"12538:6:74","valueSize":1},{"declaration":23307,"isOffset":false,"isSlot":false,"src":"12490:11:74","valueSize":1}],"id":23309,"nodeType":"InlineAssembly","src":"12467:119:74"},{"expression":{"id":23310,"name":"tempAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23307,"src":"12603:11:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":23295,"id":23311,"nodeType":"Return","src":"12596:18:74"}]},"id":23313,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"12276:9:74","nodeType":"FunctionDefinition","parameters":{"id":23292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23289,"mutability":"mutable","name":"_bytes","nameLocation":"12299:6:74","nodeType":"VariableDeclaration","scope":23313,"src":"12286:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23288,"name":"bytes","nodeType":"ElementaryTypeName","src":"12286:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23291,"mutability":"mutable","name":"_start","nameLocation":"12315:6:74","nodeType":"VariableDeclaration","scope":23313,"src":"12307:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23290,"name":"uint256","nodeType":"ElementaryTypeName","src":"12307:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12285:37:74"},"returnParameters":{"id":23295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23313,"src":"12346:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":23293,"name":"address","nodeType":"ElementaryTypeName","src":"12346:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12345:9:74"},"scope":23573,"src":"12267:354:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23338,"nodeType":"Block","src":"12711:218:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23323,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23315,"src":"12729:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12736:6:74","memberName":"length","nodeType":"MemberAccess","src":"12729:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23325,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23317,"src":"12746:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":23326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12755:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12746:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12729:27:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e74385f6f75744f66426f756e6473","id":23329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12759:21:74","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":23322,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12721:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12721:60:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23331,"nodeType":"ExpressionStatement","src":"12721:60:74"},{"assignments":[23333],"declarations":[{"constant":false,"id":23333,"mutability":"mutable","name":"tempUint","nameLocation":"12797:8:74","nodeType":"VariableDeclaration","scope":23338,"src":"12791:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23332,"name":"uint8","nodeType":"ElementaryTypeName","src":"12791:5:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":23334,"nodeType":"VariableDeclarationStatement","src":"12791:14:74"},{"AST":{"nativeSrc":"12825:72:74","nodeType":"YulBlock","src":"12825:72:74","statements":[{"nativeSrc":"12839:48:74","nodeType":"YulAssignment","src":"12839:48:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"12865:6:74","nodeType":"YulIdentifier","src":"12865:6:74"},{"kind":"number","nativeSrc":"12873:3:74","nodeType":"YulLiteral","src":"12873:3:74","type":"","value":"0x1"}],"functionName":{"name":"add","nativeSrc":"12861:3:74","nodeType":"YulIdentifier","src":"12861:3:74"},"nativeSrc":"12861:16:74","nodeType":"YulFunctionCall","src":"12861:16:74"},{"name":"_start","nativeSrc":"12879:6:74","nodeType":"YulIdentifier","src":"12879:6:74"}],"functionName":{"name":"add","nativeSrc":"12857:3:74","nodeType":"YulIdentifier","src":"12857:3:74"},"nativeSrc":"12857:29:74","nodeType":"YulFunctionCall","src":"12857:29:74"}],"functionName":{"name":"mload","nativeSrc":"12851:5:74","nodeType":"YulIdentifier","src":"12851:5:74"},"nativeSrc":"12851:36:74","nodeType":"YulFunctionCall","src":"12851:36:74"},"variableNames":[{"name":"tempUint","nativeSrc":"12839:8:74","nodeType":"YulIdentifier","src":"12839:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23315,"isOffset":false,"isSlot":false,"src":"12865:6:74","valueSize":1},{"declaration":23317,"isOffset":false,"isSlot":false,"src":"12879:6:74","valueSize":1},{"declaration":23333,"isOffset":false,"isSlot":false,"src":"12839:8:74","valueSize":1}],"id":23335,"nodeType":"InlineAssembly","src":"12816:81:74"},{"expression":{"id":23336,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23333,"src":"12914:8:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":23321,"id":23337,"nodeType":"Return","src":"12907:15:74"}]},"id":23339,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"12636:7:74","nodeType":"FunctionDefinition","parameters":{"id":23318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23315,"mutability":"mutable","name":"_bytes","nameLocation":"12657:6:74","nodeType":"VariableDeclaration","scope":23339,"src":"12644:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23314,"name":"bytes","nodeType":"ElementaryTypeName","src":"12644:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23317,"mutability":"mutable","name":"_start","nameLocation":"12673:6:74","nodeType":"VariableDeclaration","scope":23339,"src":"12665:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23316,"name":"uint256","nodeType":"ElementaryTypeName","src":"12665:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12643:37:74"},"returnParameters":{"id":23321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23339,"src":"12704:5:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":23319,"name":"uint8","nodeType":"ElementaryTypeName","src":"12704:5:74","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"12703:7:74"},"scope":23573,"src":"12627:302:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23364,"nodeType":"Block","src":"13021:219:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23349,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23341,"src":"13039:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13046:6:74","memberName":"length","nodeType":"MemberAccess","src":"13039:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23351,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23343,"src":"13056:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":23352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13065:1:74","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13056:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13039:27:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7431365f6f75744f66426f756e6473","id":23355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13068:22:74","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":23348,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13031:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13031:60:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23357,"nodeType":"ExpressionStatement","src":"13031:60:74"},{"assignments":[23359],"declarations":[{"constant":false,"id":23359,"mutability":"mutable","name":"tempUint","nameLocation":"13108:8:74","nodeType":"VariableDeclaration","scope":23364,"src":"13101:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":23358,"name":"uint16","nodeType":"ElementaryTypeName","src":"13101:6:74","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":23360,"nodeType":"VariableDeclarationStatement","src":"13101:15:74"},{"AST":{"nativeSrc":"13136:72:74","nodeType":"YulBlock","src":"13136:72:74","statements":[{"nativeSrc":"13150:48:74","nodeType":"YulAssignment","src":"13150:48:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13176:6:74","nodeType":"YulIdentifier","src":"13176:6:74"},{"kind":"number","nativeSrc":"13184:3:74","nodeType":"YulLiteral","src":"13184:3:74","type":"","value":"0x2"}],"functionName":{"name":"add","nativeSrc":"13172:3:74","nodeType":"YulIdentifier","src":"13172:3:74"},"nativeSrc":"13172:16:74","nodeType":"YulFunctionCall","src":"13172:16:74"},{"name":"_start","nativeSrc":"13190:6:74","nodeType":"YulIdentifier","src":"13190:6:74"}],"functionName":{"name":"add","nativeSrc":"13168:3:74","nodeType":"YulIdentifier","src":"13168:3:74"},"nativeSrc":"13168:29:74","nodeType":"YulFunctionCall","src":"13168:29:74"}],"functionName":{"name":"mload","nativeSrc":"13162:5:74","nodeType":"YulIdentifier","src":"13162:5:74"},"nativeSrc":"13162:36:74","nodeType":"YulFunctionCall","src":"13162:36:74"},"variableNames":[{"name":"tempUint","nativeSrc":"13150:8:74","nodeType":"YulIdentifier","src":"13150:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23341,"isOffset":false,"isSlot":false,"src":"13176:6:74","valueSize":1},{"declaration":23343,"isOffset":false,"isSlot":false,"src":"13190:6:74","valueSize":1},{"declaration":23359,"isOffset":false,"isSlot":false,"src":"13150:8:74","valueSize":1}],"id":23361,"nodeType":"InlineAssembly","src":"13127:81:74"},{"expression":{"id":23362,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23359,"src":"13225:8:74","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":23347,"id":23363,"nodeType":"Return","src":"13218:15:74"}]},"id":23365,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"12944:8:74","nodeType":"FunctionDefinition","parameters":{"id":23344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23341,"mutability":"mutable","name":"_bytes","nameLocation":"12966:6:74","nodeType":"VariableDeclaration","scope":23365,"src":"12953:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23340,"name":"bytes","nodeType":"ElementaryTypeName","src":"12953:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23343,"mutability":"mutable","name":"_start","nameLocation":"12982:6:74","nodeType":"VariableDeclaration","scope":23365,"src":"12974:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23342,"name":"uint256","nodeType":"ElementaryTypeName","src":"12974:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12952:37:74"},"returnParameters":{"id":23347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23365,"src":"13013:6:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":23345,"name":"uint16","nodeType":"ElementaryTypeName","src":"13013:6:74","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"13012:8:74"},"scope":23573,"src":"12935:305:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23390,"nodeType":"Block","src":"13332:219:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23375,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23367,"src":"13350:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13357:6:74","memberName":"length","nodeType":"MemberAccess","src":"13350:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23377,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23369,"src":"13367:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":23378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13376:1:74","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"13367:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13350:27:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7433325f6f75744f66426f756e6473","id":23381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13379:22:74","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":23374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13342:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13342:60:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23383,"nodeType":"ExpressionStatement","src":"13342:60:74"},{"assignments":[23385],"declarations":[{"constant":false,"id":23385,"mutability":"mutable","name":"tempUint","nameLocation":"13419:8:74","nodeType":"VariableDeclaration","scope":23390,"src":"13412:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":23384,"name":"uint32","nodeType":"ElementaryTypeName","src":"13412:6:74","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":23386,"nodeType":"VariableDeclarationStatement","src":"13412:15:74"},{"AST":{"nativeSrc":"13447:72:74","nodeType":"YulBlock","src":"13447:72:74","statements":[{"nativeSrc":"13461:48:74","nodeType":"YulAssignment","src":"13461:48:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13487:6:74","nodeType":"YulIdentifier","src":"13487:6:74"},{"kind":"number","nativeSrc":"13495:3:74","nodeType":"YulLiteral","src":"13495:3:74","type":"","value":"0x4"}],"functionName":{"name":"add","nativeSrc":"13483:3:74","nodeType":"YulIdentifier","src":"13483:3:74"},"nativeSrc":"13483:16:74","nodeType":"YulFunctionCall","src":"13483:16:74"},{"name":"_start","nativeSrc":"13501:6:74","nodeType":"YulIdentifier","src":"13501:6:74"}],"functionName":{"name":"add","nativeSrc":"13479:3:74","nodeType":"YulIdentifier","src":"13479:3:74"},"nativeSrc":"13479:29:74","nodeType":"YulFunctionCall","src":"13479:29:74"}],"functionName":{"name":"mload","nativeSrc":"13473:5:74","nodeType":"YulIdentifier","src":"13473:5:74"},"nativeSrc":"13473:36:74","nodeType":"YulFunctionCall","src":"13473:36:74"},"variableNames":[{"name":"tempUint","nativeSrc":"13461:8:74","nodeType":"YulIdentifier","src":"13461:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23367,"isOffset":false,"isSlot":false,"src":"13487:6:74","valueSize":1},{"declaration":23369,"isOffset":false,"isSlot":false,"src":"13501:6:74","valueSize":1},{"declaration":23385,"isOffset":false,"isSlot":false,"src":"13461:8:74","valueSize":1}],"id":23387,"nodeType":"InlineAssembly","src":"13438:81:74"},{"expression":{"id":23388,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23385,"src":"13536:8:74","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":23373,"id":23389,"nodeType":"Return","src":"13529:15:74"}]},"id":23391,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"13255:8:74","nodeType":"FunctionDefinition","parameters":{"id":23370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23367,"mutability":"mutable","name":"_bytes","nameLocation":"13277:6:74","nodeType":"VariableDeclaration","scope":23391,"src":"13264:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23366,"name":"bytes","nodeType":"ElementaryTypeName","src":"13264:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23369,"mutability":"mutable","name":"_start","nameLocation":"13293:6:74","nodeType":"VariableDeclaration","scope":23391,"src":"13285:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23368,"name":"uint256","nodeType":"ElementaryTypeName","src":"13285:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13263:37:74"},"returnParameters":{"id":23373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23391,"src":"13324:6:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":23371,"name":"uint32","nodeType":"ElementaryTypeName","src":"13324:6:74","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"13323:8:74"},"scope":23573,"src":"13246:305:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23416,"nodeType":"Block","src":"13643:219:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23401,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23393,"src":"13661:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13668:6:74","memberName":"length","nodeType":"MemberAccess","src":"13661:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23403,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23395,"src":"13678:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"38","id":23404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13687:1:74","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"13678:10:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13661:27:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7436345f6f75744f66426f756e6473","id":23407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13690:22:74","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":23400,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13653:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13653:60:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23409,"nodeType":"ExpressionStatement","src":"13653:60:74"},{"assignments":[23411],"declarations":[{"constant":false,"id":23411,"mutability":"mutable","name":"tempUint","nameLocation":"13730:8:74","nodeType":"VariableDeclaration","scope":23416,"src":"13723:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23410,"name":"uint64","nodeType":"ElementaryTypeName","src":"13723:6:74","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":23412,"nodeType":"VariableDeclarationStatement","src":"13723:15:74"},{"AST":{"nativeSrc":"13758:72:74","nodeType":"YulBlock","src":"13758:72:74","statements":[{"nativeSrc":"13772:48:74","nodeType":"YulAssignment","src":"13772:48:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"13798:6:74","nodeType":"YulIdentifier","src":"13798:6:74"},{"kind":"number","nativeSrc":"13806:3:74","nodeType":"YulLiteral","src":"13806:3:74","type":"","value":"0x8"}],"functionName":{"name":"add","nativeSrc":"13794:3:74","nodeType":"YulIdentifier","src":"13794:3:74"},"nativeSrc":"13794:16:74","nodeType":"YulFunctionCall","src":"13794:16:74"},{"name":"_start","nativeSrc":"13812:6:74","nodeType":"YulIdentifier","src":"13812:6:74"}],"functionName":{"name":"add","nativeSrc":"13790:3:74","nodeType":"YulIdentifier","src":"13790:3:74"},"nativeSrc":"13790:29:74","nodeType":"YulFunctionCall","src":"13790:29:74"}],"functionName":{"name":"mload","nativeSrc":"13784:5:74","nodeType":"YulIdentifier","src":"13784:5:74"},"nativeSrc":"13784:36:74","nodeType":"YulFunctionCall","src":"13784:36:74"},"variableNames":[{"name":"tempUint","nativeSrc":"13772:8:74","nodeType":"YulIdentifier","src":"13772:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23393,"isOffset":false,"isSlot":false,"src":"13798:6:74","valueSize":1},{"declaration":23395,"isOffset":false,"isSlot":false,"src":"13812:6:74","valueSize":1},{"declaration":23411,"isOffset":false,"isSlot":false,"src":"13772:8:74","valueSize":1}],"id":23413,"nodeType":"InlineAssembly","src":"13749:81:74"},{"expression":{"id":23414,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23411,"src":"13847:8:74","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":23399,"id":23415,"nodeType":"Return","src":"13840:15:74"}]},"id":23417,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13566:8:74","nodeType":"FunctionDefinition","parameters":{"id":23396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23393,"mutability":"mutable","name":"_bytes","nameLocation":"13588:6:74","nodeType":"VariableDeclaration","scope":23417,"src":"13575:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23392,"name":"bytes","nodeType":"ElementaryTypeName","src":"13575:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23395,"mutability":"mutable","name":"_start","nameLocation":"13604:6:74","nodeType":"VariableDeclaration","scope":23417,"src":"13596:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23394,"name":"uint256","nodeType":"ElementaryTypeName","src":"13596:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13574:37:74"},"returnParameters":{"id":23399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23417,"src":"13635:6:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23397,"name":"uint64","nodeType":"ElementaryTypeName","src":"13635:6:74","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13634:8:74"},"scope":23573,"src":"13557:305:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23442,"nodeType":"Block","src":"13954:220:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23427,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23419,"src":"13972:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13979:6:74","memberName":"length","nodeType":"MemberAccess","src":"13972:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23429,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23421,"src":"13989:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3132","id":23430,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13998:2:74","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"13989:11:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13972:28:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e7439365f6f75744f66426f756e6473","id":23433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14002:22:74","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":23426,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13964:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13964:61:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23435,"nodeType":"ExpressionStatement","src":"13964:61:74"},{"assignments":[23437],"declarations":[{"constant":false,"id":23437,"mutability":"mutable","name":"tempUint","nameLocation":"14042:8:74","nodeType":"VariableDeclaration","scope":23442,"src":"14035:15:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":23436,"name":"uint96","nodeType":"ElementaryTypeName","src":"14035:6:74","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":23438,"nodeType":"VariableDeclarationStatement","src":"14035:15:74"},{"AST":{"nativeSrc":"14070:72:74","nodeType":"YulBlock","src":"14070:72:74","statements":[{"nativeSrc":"14084:48:74","nodeType":"YulAssignment","src":"14084:48:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14110:6:74","nodeType":"YulIdentifier","src":"14110:6:74"},{"kind":"number","nativeSrc":"14118:3:74","nodeType":"YulLiteral","src":"14118:3:74","type":"","value":"0xc"}],"functionName":{"name":"add","nativeSrc":"14106:3:74","nodeType":"YulIdentifier","src":"14106:3:74"},"nativeSrc":"14106:16:74","nodeType":"YulFunctionCall","src":"14106:16:74"},{"name":"_start","nativeSrc":"14124:6:74","nodeType":"YulIdentifier","src":"14124:6:74"}],"functionName":{"name":"add","nativeSrc":"14102:3:74","nodeType":"YulIdentifier","src":"14102:3:74"},"nativeSrc":"14102:29:74","nodeType":"YulFunctionCall","src":"14102:29:74"}],"functionName":{"name":"mload","nativeSrc":"14096:5:74","nodeType":"YulIdentifier","src":"14096:5:74"},"nativeSrc":"14096:36:74","nodeType":"YulFunctionCall","src":"14096:36:74"},"variableNames":[{"name":"tempUint","nativeSrc":"14084:8:74","nodeType":"YulIdentifier","src":"14084:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23419,"isOffset":false,"isSlot":false,"src":"14110:6:74","valueSize":1},{"declaration":23421,"isOffset":false,"isSlot":false,"src":"14124:6:74","valueSize":1},{"declaration":23437,"isOffset":false,"isSlot":false,"src":"14084:8:74","valueSize":1}],"id":23439,"nodeType":"InlineAssembly","src":"14061:81:74"},{"expression":{"id":23440,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23437,"src":"14159:8:74","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":23425,"id":23441,"nodeType":"Return","src":"14152:15:74"}]},"id":23443,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"13877:8:74","nodeType":"FunctionDefinition","parameters":{"id":23422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23419,"mutability":"mutable","name":"_bytes","nameLocation":"13899:6:74","nodeType":"VariableDeclaration","scope":23443,"src":"13886:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23418,"name":"bytes","nodeType":"ElementaryTypeName","src":"13886:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23421,"mutability":"mutable","name":"_start","nameLocation":"13915:6:74","nodeType":"VariableDeclaration","scope":23443,"src":"13907:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23420,"name":"uint256","nodeType":"ElementaryTypeName","src":"13907:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13885:37:74"},"returnParameters":{"id":23425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23424,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23443,"src":"13946:6:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":23423,"name":"uint96","nodeType":"ElementaryTypeName","src":"13946:6:74","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"13945:8:74"},"scope":23573,"src":"13868:306:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23468,"nodeType":"Block","src":"14268:223:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23453,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23445,"src":"14286:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14293:6:74","memberName":"length","nodeType":"MemberAccess","src":"14286:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23455,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23447,"src":"14303:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3136","id":23456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14312:2:74","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"14303:11:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14286:28:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743132385f6f75744f66426f756e6473","id":23459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14316:23:74","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":23452,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14278:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14278:62:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23461,"nodeType":"ExpressionStatement","src":"14278:62:74"},{"assignments":[23463],"declarations":[{"constant":false,"id":23463,"mutability":"mutable","name":"tempUint","nameLocation":"14358:8:74","nodeType":"VariableDeclaration","scope":23468,"src":"14350:16:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":23462,"name":"uint128","nodeType":"ElementaryTypeName","src":"14350:7:74","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":23464,"nodeType":"VariableDeclarationStatement","src":"14350:16:74"},{"AST":{"nativeSrc":"14386:73:74","nodeType":"YulBlock","src":"14386:73:74","statements":[{"nativeSrc":"14400:49:74","nodeType":"YulAssignment","src":"14400:49:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14426:6:74","nodeType":"YulIdentifier","src":"14426:6:74"},{"kind":"number","nativeSrc":"14434:4:74","nodeType":"YulLiteral","src":"14434:4:74","type":"","value":"0x10"}],"functionName":{"name":"add","nativeSrc":"14422:3:74","nodeType":"YulIdentifier","src":"14422:3:74"},"nativeSrc":"14422:17:74","nodeType":"YulFunctionCall","src":"14422:17:74"},{"name":"_start","nativeSrc":"14441:6:74","nodeType":"YulIdentifier","src":"14441:6:74"}],"functionName":{"name":"add","nativeSrc":"14418:3:74","nodeType":"YulIdentifier","src":"14418:3:74"},"nativeSrc":"14418:30:74","nodeType":"YulFunctionCall","src":"14418:30:74"}],"functionName":{"name":"mload","nativeSrc":"14412:5:74","nodeType":"YulIdentifier","src":"14412:5:74"},"nativeSrc":"14412:37:74","nodeType":"YulFunctionCall","src":"14412:37:74"},"variableNames":[{"name":"tempUint","nativeSrc":"14400:8:74","nodeType":"YulIdentifier","src":"14400:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23445,"isOffset":false,"isSlot":false,"src":"14426:6:74","valueSize":1},{"declaration":23447,"isOffset":false,"isSlot":false,"src":"14441:6:74","valueSize":1},{"declaration":23463,"isOffset":false,"isSlot":false,"src":"14400:8:74","valueSize":1}],"id":23465,"nodeType":"InlineAssembly","src":"14377:82:74"},{"expression":{"id":23466,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23463,"src":"14476:8:74","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":23451,"id":23467,"nodeType":"Return","src":"14469:15:74"}]},"id":23469,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"14189:9:74","nodeType":"FunctionDefinition","parameters":{"id":23448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23445,"mutability":"mutable","name":"_bytes","nameLocation":"14212:6:74","nodeType":"VariableDeclaration","scope":23469,"src":"14199:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23444,"name":"bytes","nodeType":"ElementaryTypeName","src":"14199:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23447,"mutability":"mutable","name":"_start","nameLocation":"14228:6:74","nodeType":"VariableDeclaration","scope":23469,"src":"14220:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23446,"name":"uint256","nodeType":"ElementaryTypeName","src":"14220:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14198:37:74"},"returnParameters":{"id":23451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23450,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23469,"src":"14259:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":23449,"name":"uint128","nodeType":"ElementaryTypeName","src":"14259:7:74","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"14258:9:74"},"scope":23573,"src":"14180:311:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23494,"nodeType":"Block","src":"14585:223:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23479,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23471,"src":"14603:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14610:6:74","memberName":"length","nodeType":"MemberAccess","src":"14603:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23481,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23473,"src":"14620:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":23482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14629:2:74","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14620:11:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14603:28:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f55696e743235365f6f75744f66426f756e6473","id":23485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14633:23:74","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":23478,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14595:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14595:62:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23487,"nodeType":"ExpressionStatement","src":"14595:62:74"},{"assignments":[23489],"declarations":[{"constant":false,"id":23489,"mutability":"mutable","name":"tempUint","nameLocation":"14675:8:74","nodeType":"VariableDeclaration","scope":23494,"src":"14667:16:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23488,"name":"uint256","nodeType":"ElementaryTypeName","src":"14667:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":23490,"nodeType":"VariableDeclarationStatement","src":"14667:16:74"},{"AST":{"nativeSrc":"14703:73:74","nodeType":"YulBlock","src":"14703:73:74","statements":[{"nativeSrc":"14717:49:74","nodeType":"YulAssignment","src":"14717:49:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"14743:6:74","nodeType":"YulIdentifier","src":"14743:6:74"},{"kind":"number","nativeSrc":"14751:4:74","nodeType":"YulLiteral","src":"14751:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14739:3:74","nodeType":"YulIdentifier","src":"14739:3:74"},"nativeSrc":"14739:17:74","nodeType":"YulFunctionCall","src":"14739:17:74"},{"name":"_start","nativeSrc":"14758:6:74","nodeType":"YulIdentifier","src":"14758:6:74"}],"functionName":{"name":"add","nativeSrc":"14735:3:74","nodeType":"YulIdentifier","src":"14735:3:74"},"nativeSrc":"14735:30:74","nodeType":"YulFunctionCall","src":"14735:30:74"}],"functionName":{"name":"mload","nativeSrc":"14729:5:74","nodeType":"YulIdentifier","src":"14729:5:74"},"nativeSrc":"14729:37:74","nodeType":"YulFunctionCall","src":"14729:37:74"},"variableNames":[{"name":"tempUint","nativeSrc":"14717:8:74","nodeType":"YulIdentifier","src":"14717:8:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23471,"isOffset":false,"isSlot":false,"src":"14743:6:74","valueSize":1},{"declaration":23473,"isOffset":false,"isSlot":false,"src":"14758:6:74","valueSize":1},{"declaration":23489,"isOffset":false,"isSlot":false,"src":"14717:8:74","valueSize":1}],"id":23491,"nodeType":"InlineAssembly","src":"14694:82:74"},{"expression":{"id":23492,"name":"tempUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23489,"src":"14793:8:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":23477,"id":23493,"nodeType":"Return","src":"14786:15:74"}]},"id":23495,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"14506:9:74","nodeType":"FunctionDefinition","parameters":{"id":23474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23471,"mutability":"mutable","name":"_bytes","nameLocation":"14529:6:74","nodeType":"VariableDeclaration","scope":23495,"src":"14516:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23470,"name":"bytes","nodeType":"ElementaryTypeName","src":"14516:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23473,"mutability":"mutable","name":"_start","nameLocation":"14545:6:74","nodeType":"VariableDeclaration","scope":23495,"src":"14537:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23472,"name":"uint256","nodeType":"ElementaryTypeName","src":"14537:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14515:37:74"},"returnParameters":{"id":23477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23495,"src":"14576:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23475,"name":"uint256","nodeType":"ElementaryTypeName","src":"14576:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14575:9:74"},"scope":23573,"src":"14497:311:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23520,"nodeType":"Block","src":"14902:232:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":23505,"name":"_bytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23497,"src":"14920:6:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":23506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14927:6:74","memberName":"length","nodeType":"MemberAccess","src":"14920:13:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":23509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23507,"name":"_start","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23499,"src":"14937:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3332","id":23508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14946:2:74","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"14937:11:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14920:28:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"746f427974657333325f6f75744f66426f756e6473","id":23511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14950:23:74","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":23504,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14912:7:74","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":23512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14912:62:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":23513,"nodeType":"ExpressionStatement","src":"14912:62:74"},{"assignments":[23515],"declarations":[{"constant":false,"id":23515,"mutability":"mutable","name":"tempBytes32","nameLocation":"14992:11:74","nodeType":"VariableDeclaration","scope":23520,"src":"14984:19:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14984:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":23516,"nodeType":"VariableDeclarationStatement","src":"14984:19:74"},{"AST":{"nativeSrc":"15023:76:74","nodeType":"YulBlock","src":"15023:76:74","statements":[{"nativeSrc":"15037:52:74","nodeType":"YulAssignment","src":"15037:52:74","value":{"arguments":[{"arguments":[{"arguments":[{"name":"_bytes","nativeSrc":"15066:6:74","nodeType":"YulIdentifier","src":"15066:6:74"},{"kind":"number","nativeSrc":"15074:4:74","nodeType":"YulLiteral","src":"15074:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15062:3:74","nodeType":"YulIdentifier","src":"15062:3:74"},"nativeSrc":"15062:17:74","nodeType":"YulFunctionCall","src":"15062:17:74"},{"name":"_start","nativeSrc":"15081:6:74","nodeType":"YulIdentifier","src":"15081:6:74"}],"functionName":{"name":"add","nativeSrc":"15058:3:74","nodeType":"YulIdentifier","src":"15058:3:74"},"nativeSrc":"15058:30:74","nodeType":"YulFunctionCall","src":"15058:30:74"}],"functionName":{"name":"mload","nativeSrc":"15052:5:74","nodeType":"YulIdentifier","src":"15052:5:74"},"nativeSrc":"15052:37:74","nodeType":"YulFunctionCall","src":"15052:37:74"},"variableNames":[{"name":"tempBytes32","nativeSrc":"15037:11:74","nodeType":"YulIdentifier","src":"15037:11:74"}]}]},"evmVersion":"cancun","externalReferences":[{"declaration":23497,"isOffset":false,"isSlot":false,"src":"15066:6:74","valueSize":1},{"declaration":23499,"isOffset":false,"isSlot":false,"src":"15081:6:74","valueSize":1},{"declaration":23515,"isOffset":false,"isSlot":false,"src":"15037:11:74","valueSize":1}],"id":23517,"nodeType":"InlineAssembly","src":"15014:85:74"},{"expression":{"id":23518,"name":"tempBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23515,"src":"15116:11:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":23503,"id":23519,"nodeType":"Return","src":"15109:18:74"}]},"id":23521,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"14823:9:74","nodeType":"FunctionDefinition","parameters":{"id":23500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23497,"mutability":"mutable","name":"_bytes","nameLocation":"14846:6:74","nodeType":"VariableDeclaration","scope":23521,"src":"14833:19:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23496,"name":"bytes","nodeType":"ElementaryTypeName","src":"14833:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23499,"mutability":"mutable","name":"_start","nameLocation":"14862:6:74","nodeType":"VariableDeclaration","scope":23521,"src":"14854:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23498,"name":"uint256","nodeType":"ElementaryTypeName","src":"14854:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14832:37:74"},"returnParameters":{"id":23503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23521,"src":"14893:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":23501,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14893:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14892:9:74"},"scope":23573,"src":"14814:320:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23537,"nodeType":"Block","src":"15233:1323:74","statements":[{"assignments":[23531],"declarations":[{"constant":false,"id":23531,"mutability":"mutable","name":"success","nameLocation":"15248:7:74","nodeType":"VariableDeclaration","scope":23537,"src":"15243:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23530,"name":"bool","nodeType":"ElementaryTypeName","src":"15243:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":23533,"initialValue":{"hexValue":"74727565","id":23532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15258:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"15243:19:74"},{"AST":{"nativeSrc":"15282:1243:74","nodeType":"YulBlock","src":"15282:1243:74","statements":[{"nativeSrc":"15296:30:74","nodeType":"YulVariableDeclaration","src":"15296:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15316:9:74","nodeType":"YulIdentifier","src":"15316:9:74"}],"functionName":{"name":"mload","nativeSrc":"15310:5:74","nodeType":"YulIdentifier","src":"15310:5:74"},"nativeSrc":"15310:16:74","nodeType":"YulFunctionCall","src":"15310:16:74"},"variables":[{"name":"length","nativeSrc":"15300:6:74","nodeType":"YulTypedName","src":"15300:6:74","type":""}]},{"cases":[{"body":{"nativeSrc":"15459:961:74","nodeType":"YulBlock","src":"15459:961:74","statements":[{"nativeSrc":"15688:11:74","nodeType":"YulVariableDeclaration","src":"15688:11:74","value":{"kind":"number","nativeSrc":"15698:1:74","nodeType":"YulLiteral","src":"15698:1:74","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"15692:2:74","nodeType":"YulTypedName","src":"15692:2:74","type":""}]},{"nativeSrc":"15717:30:74","nodeType":"YulVariableDeclaration","src":"15717:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"15731:9:74","nodeType":"YulIdentifier","src":"15731:9:74"},{"kind":"number","nativeSrc":"15742:4:74","nodeType":"YulLiteral","src":"15742:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15727:3:74","nodeType":"YulIdentifier","src":"15727:3:74"},"nativeSrc":"15727:20:74","nodeType":"YulFunctionCall","src":"15727:20:74"},"variables":[{"name":"mc","nativeSrc":"15721:2:74","nodeType":"YulTypedName","src":"15721:2:74","type":""}]},{"nativeSrc":"15764:26:74","nodeType":"YulVariableDeclaration","src":"15764:26:74","value":{"arguments":[{"name":"mc","nativeSrc":"15779:2:74","nodeType":"YulIdentifier","src":"15779:2:74"},{"name":"length","nativeSrc":"15783:6:74","nodeType":"YulIdentifier","src":"15783:6:74"}],"functionName":{"name":"add","nativeSrc":"15775:3:74","nodeType":"YulIdentifier","src":"15775:3:74"},"nativeSrc":"15775:15:74","nodeType":"YulFunctionCall","src":"15775:15:74"},"variables":[{"name":"end","nativeSrc":"15768:3:74","nodeType":"YulTypedName","src":"15768:3:74","type":""}]},{"body":{"nativeSrc":"16122:284:74","nodeType":"YulBlock","src":"16122:284:74","statements":[{"body":{"nativeSrc":"16258:130:74","nodeType":"YulBlock","src":"16258:130:74","statements":[{"nativeSrc":"16322:12:74","nodeType":"YulAssignment","src":"16322:12:74","value":{"kind":"number","nativeSrc":"16333:1:74","nodeType":"YulLiteral","src":"16333:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16322:7:74","nodeType":"YulIdentifier","src":"16322:7:74"}]},{"nativeSrc":"16359:7:74","nodeType":"YulAssignment","src":"16359:7:74","value":{"kind":"number","nativeSrc":"16365:1:74","nodeType":"YulLiteral","src":"16365:1:74","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"16359:2:74","nodeType":"YulIdentifier","src":"16359:2:74"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16241:2:74","nodeType":"YulIdentifier","src":"16241:2:74"}],"functionName":{"name":"mload","nativeSrc":"16235:5:74","nodeType":"YulIdentifier","src":"16235:5:74"},"nativeSrc":"16235:9:74","nodeType":"YulFunctionCall","src":"16235:9:74"},{"arguments":[{"name":"cc","nativeSrc":"16252:2:74","nodeType":"YulIdentifier","src":"16252:2:74"}],"functionName":{"name":"mload","nativeSrc":"16246:5:74","nodeType":"YulIdentifier","src":"16246:5:74"},"nativeSrc":"16246:9:74","nodeType":"YulFunctionCall","src":"16246:9:74"}],"functionName":{"name":"eq","nativeSrc":"16232:2:74","nodeType":"YulIdentifier","src":"16232:2:74"},"nativeSrc":"16232:24:74","nodeType":"YulFunctionCall","src":"16232:24:74"}],"functionName":{"name":"iszero","nativeSrc":"16225:6:74","nodeType":"YulIdentifier","src":"16225:6:74"},"nativeSrc":"16225:32:74","nodeType":"YulFunctionCall","src":"16225:32:74"},"nativeSrc":"16222:166:74","nodeType":"YulIf","src":"16222:166:74"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"16004:2:74","nodeType":"YulIdentifier","src":"16004:2:74"},{"name":"end","nativeSrc":"16008:3:74","nodeType":"YulIdentifier","src":"16008:3:74"}],"functionName":{"name":"lt","nativeSrc":"16001:2:74","nodeType":"YulIdentifier","src":"16001:2:74"},"nativeSrc":"16001:11:74","nodeType":"YulFunctionCall","src":"16001:11:74"},{"name":"cb","nativeSrc":"16014:2:74","nodeType":"YulIdentifier","src":"16014:2:74"}],"functionName":{"name":"add","nativeSrc":"15997:3:74","nodeType":"YulIdentifier","src":"15997:3:74"},"nativeSrc":"15997:20:74","nodeType":"YulFunctionCall","src":"15997:20:74"},{"kind":"number","nativeSrc":"16019:1:74","nodeType":"YulLiteral","src":"16019:1:74","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"15994:2:74","nodeType":"YulIdentifier","src":"15994:2:74"},"nativeSrc":"15994:27:74","nodeType":"YulFunctionCall","src":"15994:27:74"},"nativeSrc":"15808:598:74","nodeType":"YulForLoop","post":{"nativeSrc":"16022:99:74","nodeType":"YulBlock","src":"16022:99:74","statements":[{"nativeSrc":"16044:19:74","nodeType":"YulAssignment","src":"16044:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"16054:2:74","nodeType":"YulIdentifier","src":"16054:2:74"},{"kind":"number","nativeSrc":"16058:4:74","nodeType":"YulLiteral","src":"16058:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16050:3:74","nodeType":"YulIdentifier","src":"16050:3:74"},"nativeSrc":"16050:13:74","nodeType":"YulFunctionCall","src":"16050:13:74"},"variableNames":[{"name":"mc","nativeSrc":"16044:2:74","nodeType":"YulIdentifier","src":"16044:2:74"}]},{"nativeSrc":"16084:19:74","nodeType":"YulAssignment","src":"16084:19:74","value":{"arguments":[{"name":"cc","nativeSrc":"16094:2:74","nodeType":"YulIdentifier","src":"16094:2:74"},{"kind":"number","nativeSrc":"16098:4:74","nodeType":"YulLiteral","src":"16098:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16090:3:74","nodeType":"YulIdentifier","src":"16090:3:74"},"nativeSrc":"16090:13:74","nodeType":"YulFunctionCall","src":"16090:13:74"},"variableNames":[{"name":"cc","nativeSrc":"16084:2:74","nodeType":"YulIdentifier","src":"16084:2:74"}]}]},"pre":{"nativeSrc":"15812:181:74","nodeType":"YulBlock","src":"15812:181:74","statements":[{"nativeSrc":"15834:31:74","nodeType":"YulVariableDeclaration","src":"15834:31:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"15848:10:74","nodeType":"YulIdentifier","src":"15848:10:74"},{"kind":"number","nativeSrc":"15860:4:74","nodeType":"YulLiteral","src":"15860:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15844:3:74","nodeType":"YulIdentifier","src":"15844:3:74"},"nativeSrc":"15844:21:74","nodeType":"YulFunctionCall","src":"15844:21:74"},"variables":[{"name":"cc","nativeSrc":"15838:2:74","nodeType":"YulTypedName","src":"15838:2:74","type":""}]}]},"src":"15808:598:74"}]},"nativeSrc":"15452:968:74","nodeType":"YulCase","src":"15452:968:74","value":{"kind":"number","nativeSrc":"15457:1:74","nodeType":"YulLiteral","src":"15457:1:74","type":"","value":"1"}},{"body":{"nativeSrc":"16441:74:74","nodeType":"YulBlock","src":"16441:74:74","statements":[{"nativeSrc":"16489:12:74","nodeType":"YulAssignment","src":"16489:12:74","value":{"kind":"number","nativeSrc":"16500:1:74","nodeType":"YulLiteral","src":"16500:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"16489:7:74","nodeType":"YulIdentifier","src":"16489:7:74"}]}]},"nativeSrc":"16433:82:74","nodeType":"YulCase","src":"16433:82:74","value":"default"}],"expression":{"arguments":[{"name":"length","nativeSrc":"15413:6:74","nodeType":"YulIdentifier","src":"15413:6:74"},{"arguments":[{"name":"_postBytes","nativeSrc":"15427:10:74","nodeType":"YulIdentifier","src":"15427:10:74"}],"functionName":{"name":"mload","nativeSrc":"15421:5:74","nodeType":"YulIdentifier","src":"15421:5:74"},"nativeSrc":"15421:17:74","nodeType":"YulFunctionCall","src":"15421:17:74"}],"functionName":{"name":"eq","nativeSrc":"15410:2:74","nodeType":"YulIdentifier","src":"15410:2:74"},"nativeSrc":"15410:29:74","nodeType":"YulFunctionCall","src":"15410:29:74"},"nativeSrc":"15403:1112:74","nodeType":"YulSwitch","src":"15403:1112:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23525,"isOffset":false,"isSlot":false,"src":"15427:10:74","valueSize":1},{"declaration":23525,"isOffset":false,"isSlot":false,"src":"15848:10:74","valueSize":1},{"declaration":23523,"isOffset":false,"isSlot":false,"src":"15316:9:74","valueSize":1},{"declaration":23523,"isOffset":false,"isSlot":false,"src":"15731:9:74","valueSize":1},{"declaration":23531,"isOffset":false,"isSlot":false,"src":"16322:7:74","valueSize":1},{"declaration":23531,"isOffset":false,"isSlot":false,"src":"16489:7:74","valueSize":1}],"id":23534,"nodeType":"InlineAssembly","src":"15273:1252:74"},{"expression":{"id":23535,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23531,"src":"16542:7:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":23529,"id":23536,"nodeType":"Return","src":"16535:14:74"}]},"id":23538,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"15149:5:74","nodeType":"FunctionDefinition","parameters":{"id":23526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23523,"mutability":"mutable","name":"_preBytes","nameLocation":"15168:9:74","nodeType":"VariableDeclaration","scope":23538,"src":"15155:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23522,"name":"bytes","nodeType":"ElementaryTypeName","src":"15155:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23525,"mutability":"mutable","name":"_postBytes","nameLocation":"15192:10:74","nodeType":"VariableDeclaration","scope":23538,"src":"15179:23:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23524,"name":"bytes","nodeType":"ElementaryTypeName","src":"15179:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15154:49:74"},"returnParameters":{"id":23529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23528,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23538,"src":"15227:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23527,"name":"bool","nodeType":"ElementaryTypeName","src":"15227:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15226:6:74"},"scope":23573,"src":"15140:1416:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23554,"nodeType":"Block","src":"16666:2293:74","statements":[{"assignments":[23548],"declarations":[{"constant":false,"id":23548,"mutability":"mutable","name":"success","nameLocation":"16681:7:74","nodeType":"VariableDeclaration","scope":23554,"src":"16676:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23547,"name":"bool","nodeType":"ElementaryTypeName","src":"16676:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":23550,"initialValue":{"hexValue":"74727565","id":23549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16691:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"16676:19:74"},{"AST":{"nativeSrc":"16715:2213:74","nodeType":"YulBlock","src":"16715:2213:74","statements":[{"nativeSrc":"16729:30:74","nodeType":"YulVariableDeclaration","src":"16729:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"16749:9:74","nodeType":"YulIdentifier","src":"16749:9:74"}],"functionName":{"name":"mload","nativeSrc":"16743:5:74","nodeType":"YulIdentifier","src":"16743:5:74"},"nativeSrc":"16743:16:74","nodeType":"YulFunctionCall","src":"16743:16:74"},"variables":[{"name":"length","nativeSrc":"16733:6:74","nodeType":"YulTypedName","src":"16733:6:74","type":""}]},{"cases":[{"body":{"nativeSrc":"16892:1931:74","nodeType":"YulBlock","src":"16892:1931:74","statements":[{"nativeSrc":"17121:11:74","nodeType":"YulVariableDeclaration","src":"17121:11:74","value":{"kind":"number","nativeSrc":"17131:1:74","nodeType":"YulLiteral","src":"17131:1:74","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"17125:2:74","nodeType":"YulTypedName","src":"17125:2:74","type":""}]},{"nativeSrc":"17150:42:74","nodeType":"YulVariableDeclaration","src":"17150:42:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"17174:9:74","nodeType":"YulIdentifier","src":"17174:9:74"},{"name":"length","nativeSrc":"17185:6:74","nodeType":"YulIdentifier","src":"17185:6:74"}],"functionName":{"name":"add","nativeSrc":"17170:3:74","nodeType":"YulIdentifier","src":"17170:3:74"},"nativeSrc":"17170:22:74","nodeType":"YulFunctionCall","src":"17170:22:74"},"variables":[{"name":"endMinusWord","nativeSrc":"17154:12:74","nodeType":"YulTypedName","src":"17154:12:74","type":""}]},{"nativeSrc":"17209:30:74","nodeType":"YulVariableDeclaration","src":"17209:30:74","value":{"arguments":[{"name":"_preBytes","nativeSrc":"17223:9:74","nodeType":"YulIdentifier","src":"17223:9:74"},{"kind":"number","nativeSrc":"17234:4:74","nodeType":"YulLiteral","src":"17234:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17219:3:74","nodeType":"YulIdentifier","src":"17219:3:74"},"nativeSrc":"17219:20:74","nodeType":"YulFunctionCall","src":"17219:20:74"},"variables":[{"name":"mc","nativeSrc":"17213:2:74","nodeType":"YulTypedName","src":"17213:2:74","type":""}]},{"nativeSrc":"17256:31:74","nodeType":"YulVariableDeclaration","src":"17256:31:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"17270:10:74","nodeType":"YulIdentifier","src":"17270:10:74"},{"kind":"number","nativeSrc":"17282:4:74","nodeType":"YulLiteral","src":"17282:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17266:3:74","nodeType":"YulIdentifier","src":"17266:3:74"},"nativeSrc":"17266:21:74","nodeType":"YulFunctionCall","src":"17266:21:74"},"variables":[{"name":"cc","nativeSrc":"17260:2:74","nodeType":"YulTypedName","src":"17260:2:74","type":""}]},{"body":{"nativeSrc":"17580:284:74","nodeType":"YulBlock","src":"17580:284:74","statements":[{"body":{"nativeSrc":"17716:130:74","nodeType":"YulBlock","src":"17716:130:74","statements":[{"nativeSrc":"17780:12:74","nodeType":"YulAssignment","src":"17780:12:74","value":{"kind":"number","nativeSrc":"17791:1:74","nodeType":"YulLiteral","src":"17791:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"17780:7:74","nodeType":"YulIdentifier","src":"17780:7:74"}]},{"nativeSrc":"17817:7:74","nodeType":"YulAssignment","src":"17817:7:74","value":{"kind":"number","nativeSrc":"17823:1:74","nodeType":"YulLiteral","src":"17823:1:74","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"17817:2:74","nodeType":"YulIdentifier","src":"17817:2:74"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"17699:2:74","nodeType":"YulIdentifier","src":"17699:2:74"}],"functionName":{"name":"mload","nativeSrc":"17693:5:74","nodeType":"YulIdentifier","src":"17693:5:74"},"nativeSrc":"17693:9:74","nodeType":"YulFunctionCall","src":"17693:9:74"},{"arguments":[{"name":"cc","nativeSrc":"17710:2:74","nodeType":"YulIdentifier","src":"17710:2:74"}],"functionName":{"name":"mload","nativeSrc":"17704:5:74","nodeType":"YulIdentifier","src":"17704:5:74"},"nativeSrc":"17704:9:74","nodeType":"YulFunctionCall","src":"17704:9:74"}],"functionName":{"name":"eq","nativeSrc":"17690:2:74","nodeType":"YulIdentifier","src":"17690:2:74"},"nativeSrc":"17690:24:74","nodeType":"YulFunctionCall","src":"17690:24:74"}],"functionName":{"name":"iszero","nativeSrc":"17683:6:74","nodeType":"YulIdentifier","src":"17683:6:74"},"nativeSrc":"17683:32:74","nodeType":"YulFunctionCall","src":"17683:32:74"},"nativeSrc":"17680:166:74","nodeType":"YulIf","src":"17680:166:74"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"17453:2:74","nodeType":"YulIdentifier","src":"17453:2:74"},{"name":"endMinusWord","nativeSrc":"17457:12:74","nodeType":"YulIdentifier","src":"17457:12:74"}],"functionName":{"name":"lt","nativeSrc":"17450:2:74","nodeType":"YulIdentifier","src":"17450:2:74"},"nativeSrc":"17450:20:74","nodeType":"YulFunctionCall","src":"17450:20:74"},{"name":"cb","nativeSrc":"17472:2:74","nodeType":"YulIdentifier","src":"17472:2:74"}],"functionName":{"name":"add","nativeSrc":"17446:3:74","nodeType":"YulIdentifier","src":"17446:3:74"},"nativeSrc":"17446:29:74","nodeType":"YulFunctionCall","src":"17446:29:74"},{"kind":"number","nativeSrc":"17477:1:74","nodeType":"YulLiteral","src":"17477:1:74","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"17443:2:74","nodeType":"YulIdentifier","src":"17443:2:74"},"nativeSrc":"17443:36:74","nodeType":"YulFunctionCall","src":"17443:36:74"},"nativeSrc":"17305:559:74","nodeType":"YulForLoop","post":{"nativeSrc":"17480:99:74","nodeType":"YulBlock","src":"17480:99:74","statements":[{"nativeSrc":"17502:19:74","nodeType":"YulAssignment","src":"17502:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"17512:2:74","nodeType":"YulIdentifier","src":"17512:2:74"},{"kind":"number","nativeSrc":"17516:4:74","nodeType":"YulLiteral","src":"17516:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17508:3:74","nodeType":"YulIdentifier","src":"17508:3:74"},"nativeSrc":"17508:13:74","nodeType":"YulFunctionCall","src":"17508:13:74"},"variableNames":[{"name":"mc","nativeSrc":"17502:2:74","nodeType":"YulIdentifier","src":"17502:2:74"}]},{"nativeSrc":"17542:19:74","nodeType":"YulAssignment","src":"17542:19:74","value":{"arguments":[{"name":"cc","nativeSrc":"17552:2:74","nodeType":"YulIdentifier","src":"17552:2:74"},{"kind":"number","nativeSrc":"17556:4:74","nodeType":"YulLiteral","src":"17556:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17548:3:74","nodeType":"YulIdentifier","src":"17548:3:74"},"nativeSrc":"17548:13:74","nodeType":"YulFunctionCall","src":"17548:13:74"},"variableNames":[{"name":"cc","nativeSrc":"17542:2:74","nodeType":"YulIdentifier","src":"17542:2:74"}]}]},"pre":{"nativeSrc":"17309:133:74","nodeType":"YulBlock","src":"17309:133:74","statements":[]},"src":"17305:559:74"},{"body":{"nativeSrc":"17986:823:74","nodeType":"YulBlock","src":"17986:823:74","statements":[{"nativeSrc":"18119:37:74","nodeType":"YulVariableDeclaration","src":"18119:37:74","value":{"arguments":[{"name":"length","nativeSrc":"18143:6:74","nodeType":"YulIdentifier","src":"18143:6:74"},{"kind":"number","nativeSrc":"18151:4:74","nodeType":"YulLiteral","src":"18151:4:74","type":"","value":"0x1f"}],"functionName":{"name":"and","nativeSrc":"18139:3:74","nodeType":"YulIdentifier","src":"18139:3:74"},"nativeSrc":"18139:17:74","nodeType":"YulFunctionCall","src":"18139:17:74"},"variables":[{"name":"numTailBytes","nativeSrc":"18123:12:74","nodeType":"YulTypedName","src":"18123:12:74","type":""}]},{"nativeSrc":"18177:22:74","nodeType":"YulVariableDeclaration","src":"18177:22:74","value":{"arguments":[{"name":"mc","nativeSrc":"18196:2:74","nodeType":"YulIdentifier","src":"18196:2:74"}],"functionName":{"name":"mload","nativeSrc":"18190:5:74","nodeType":"YulIdentifier","src":"18190:5:74"},"nativeSrc":"18190:9:74","nodeType":"YulFunctionCall","src":"18190:9:74"},"variables":[{"name":"mcRem","nativeSrc":"18181:5:74","nodeType":"YulTypedName","src":"18181:5:74","type":""}]},{"nativeSrc":"18220:22:74","nodeType":"YulVariableDeclaration","src":"18220:22:74","value":{"arguments":[{"name":"cc","nativeSrc":"18239:2:74","nodeType":"YulIdentifier","src":"18239:2:74"}],"functionName":{"name":"mload","nativeSrc":"18233:5:74","nodeType":"YulIdentifier","src":"18233:5:74"},"nativeSrc":"18233:9:74","nodeType":"YulFunctionCall","src":"18233:9:74"},"variables":[{"name":"ccRem","nativeSrc":"18224:5:74","nodeType":"YulTypedName","src":"18224:5:74","type":""}]},{"body":{"nativeSrc":"18551:240:74","nodeType":"YulBlock","src":"18551:240:74","statements":[{"body":{"nativeSrc":"18623:146:74","nodeType":"YulBlock","src":"18623:146:74","statements":[{"nativeSrc":"18695:12:74","nodeType":"YulAssignment","src":"18695:12:74","value":{"kind":"number","nativeSrc":"18706:1:74","nodeType":"YulLiteral","src":"18706:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"18695:7:74","nodeType":"YulIdentifier","src":"18695:7:74"}]},{"nativeSrc":"18736:7:74","nodeType":"YulAssignment","src":"18736:7:74","value":{"kind":"number","nativeSrc":"18742:1:74","nodeType":"YulLiteral","src":"18742:1:74","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"18736:2:74","nodeType":"YulIdentifier","src":"18736:2:74"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"i","nativeSrc":"18595:1:74","nodeType":"YulIdentifier","src":"18595:1:74"},{"name":"mcRem","nativeSrc":"18598:5:74","nodeType":"YulIdentifier","src":"18598:5:74"}],"functionName":{"name":"byte","nativeSrc":"18590:4:74","nodeType":"YulIdentifier","src":"18590:4:74"},"nativeSrc":"18590:14:74","nodeType":"YulFunctionCall","src":"18590:14:74"},{"arguments":[{"name":"i","nativeSrc":"18611:1:74","nodeType":"YulIdentifier","src":"18611:1:74"},{"name":"ccRem","nativeSrc":"18614:5:74","nodeType":"YulIdentifier","src":"18614:5:74"}],"functionName":{"name":"byte","nativeSrc":"18606:4:74","nodeType":"YulIdentifier","src":"18606:4:74"},"nativeSrc":"18606:14:74","nodeType":"YulFunctionCall","src":"18606:14:74"}],"functionName":{"name":"eq","nativeSrc":"18587:2:74","nodeType":"YulIdentifier","src":"18587:2:74"},"nativeSrc":"18587:34:74","nodeType":"YulFunctionCall","src":"18587:34:74"}],"functionName":{"name":"iszero","nativeSrc":"18580:6:74","nodeType":"YulIdentifier","src":"18580:6:74"},"nativeSrc":"18580:42:74","nodeType":"YulFunctionCall","src":"18580:42:74"},"nativeSrc":"18577:192:74","nodeType":"YulIf","src":"18577:192:74"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"i","nativeSrc":"18462:1:74","nodeType":"YulIdentifier","src":"18462:1:74"},{"name":"numTailBytes","nativeSrc":"18465:12:74","nodeType":"YulIdentifier","src":"18465:12:74"}],"functionName":{"name":"lt","nativeSrc":"18459:2:74","nodeType":"YulIdentifier","src":"18459:2:74"},"nativeSrc":"18459:19:74","nodeType":"YulFunctionCall","src":"18459:19:74"},{"name":"cb","nativeSrc":"18480:2:74","nodeType":"YulIdentifier","src":"18480:2:74"}],"functionName":{"name":"add","nativeSrc":"18455:3:74","nodeType":"YulIdentifier","src":"18455:3:74"},"nativeSrc":"18455:28:74","nodeType":"YulFunctionCall","src":"18455:28:74"},{"kind":"number","nativeSrc":"18485:1:74","nodeType":"YulLiteral","src":"18485:1:74","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"18452:2:74","nodeType":"YulIdentifier","src":"18452:2:74"},"nativeSrc":"18452:35:74","nodeType":"YulFunctionCall","src":"18452:35:74"},"nativeSrc":"18263:528:74","nodeType":"YulForLoop","post":{"nativeSrc":"18488:62:74","nodeType":"YulBlock","src":"18488:62:74","statements":[{"nativeSrc":"18514:14:74","nodeType":"YulAssignment","src":"18514:14:74","value":{"arguments":[{"name":"i","nativeSrc":"18523:1:74","nodeType":"YulIdentifier","src":"18523:1:74"},{"kind":"number","nativeSrc":"18526:1:74","nodeType":"YulLiteral","src":"18526:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18519:3:74","nodeType":"YulIdentifier","src":"18519:3:74"},"nativeSrc":"18519:9:74","nodeType":"YulFunctionCall","src":"18519:9:74"},"variableNames":[{"name":"i","nativeSrc":"18514:1:74","nodeType":"YulIdentifier","src":"18514:1:74"}]}]},"pre":{"nativeSrc":"18267:184:74","nodeType":"YulBlock","src":"18267:184:74","statements":[{"nativeSrc":"18293:10:74","nodeType":"YulVariableDeclaration","src":"18293:10:74","value":{"kind":"number","nativeSrc":"18302:1:74","nodeType":"YulLiteral","src":"18302:1:74","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"18297:1:74","nodeType":"YulTypedName","src":"18297:1:74","type":""}]}]},"src":"18263:528:74"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"17974:7:74","nodeType":"YulIdentifier","src":"17974:7:74"},{"kind":"number","nativeSrc":"17983:1:74","nodeType":"YulLiteral","src":"17983:1:74","type":"","value":"0"}],"functionName":{"name":"gt","nativeSrc":"17971:2:74","nodeType":"YulIdentifier","src":"17971:2:74"},"nativeSrc":"17971:14:74","nodeType":"YulFunctionCall","src":"17971:14:74"},"nativeSrc":"17968:841:74","nodeType":"YulIf","src":"17968:841:74"}]},"nativeSrc":"16885:1938:74","nodeType":"YulCase","src":"16885:1938:74","value":{"kind":"number","nativeSrc":"16890:1:74","nodeType":"YulLiteral","src":"16890:1:74","type":"","value":"1"}},{"body":{"nativeSrc":"18844:74:74","nodeType":"YulBlock","src":"18844:74:74","statements":[{"nativeSrc":"18892:12:74","nodeType":"YulAssignment","src":"18892:12:74","value":{"kind":"number","nativeSrc":"18903:1:74","nodeType":"YulLiteral","src":"18903:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"18892:7:74","nodeType":"YulIdentifier","src":"18892:7:74"}]}]},"nativeSrc":"18836:82:74","nodeType":"YulCase","src":"18836:82:74","value":"default"}],"expression":{"arguments":[{"name":"length","nativeSrc":"16846:6:74","nodeType":"YulIdentifier","src":"16846:6:74"},{"arguments":[{"name":"_postBytes","nativeSrc":"16860:10:74","nodeType":"YulIdentifier","src":"16860:10:74"}],"functionName":{"name":"mload","nativeSrc":"16854:5:74","nodeType":"YulIdentifier","src":"16854:5:74"},"nativeSrc":"16854:17:74","nodeType":"YulFunctionCall","src":"16854:17:74"}],"functionName":{"name":"eq","nativeSrc":"16843:2:74","nodeType":"YulIdentifier","src":"16843:2:74"},"nativeSrc":"16843:29:74","nodeType":"YulFunctionCall","src":"16843:29:74"},"nativeSrc":"16836:2082:74","nodeType":"YulSwitch","src":"16836:2082:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23542,"isOffset":false,"isSlot":false,"src":"16860:10:74","valueSize":1},{"declaration":23542,"isOffset":false,"isSlot":false,"src":"17270:10:74","valueSize":1},{"declaration":23540,"isOffset":false,"isSlot":false,"src":"16749:9:74","valueSize":1},{"declaration":23540,"isOffset":false,"isSlot":false,"src":"17174:9:74","valueSize":1},{"declaration":23540,"isOffset":false,"isSlot":false,"src":"17223:9:74","valueSize":1},{"declaration":23548,"isOffset":false,"isSlot":false,"src":"17780:7:74","valueSize":1},{"declaration":23548,"isOffset":false,"isSlot":false,"src":"17974:7:74","valueSize":1},{"declaration":23548,"isOffset":false,"isSlot":false,"src":"18695:7:74","valueSize":1},{"declaration":23548,"isOffset":false,"isSlot":false,"src":"18892:7:74","valueSize":1}],"id":23551,"nodeType":"InlineAssembly","src":"16706:2222:74"},{"expression":{"id":23552,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23548,"src":"18945:7:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":23546,"id":23553,"nodeType":"Return","src":"18938:14:74"}]},"id":23555,"implemented":true,"kind":"function","modifiers":[],"name":"equal_nonAligned","nameLocation":"16571:16:74","nodeType":"FunctionDefinition","parameters":{"id":23543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23540,"mutability":"mutable","name":"_preBytes","nameLocation":"16601:9:74","nodeType":"VariableDeclaration","scope":23555,"src":"16588:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23539,"name":"bytes","nodeType":"ElementaryTypeName","src":"16588:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23542,"mutability":"mutable","name":"_postBytes","nameLocation":"16625:10:74","nodeType":"VariableDeclaration","scope":23555,"src":"16612:23:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23541,"name":"bytes","nodeType":"ElementaryTypeName","src":"16612:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16587:49:74"},"returnParameters":{"id":23546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23545,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23555,"src":"16660:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23544,"name":"bool","nodeType":"ElementaryTypeName","src":"16660:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16659:6:74"},"scope":23573,"src":"16562:2397:74","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":23571,"nodeType":"Block","src":"19116:2559:74","statements":[{"assignments":[23565],"declarations":[{"constant":false,"id":23565,"mutability":"mutable","name":"success","nameLocation":"19131:7:74","nodeType":"VariableDeclaration","scope":23571,"src":"19126:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23564,"name":"bool","nodeType":"ElementaryTypeName","src":"19126:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":23567,"initialValue":{"hexValue":"74727565","id":23566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19141:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"nodeType":"VariableDeclarationStatement","src":"19126:19:74"},{"AST":{"nativeSrc":"19165:2479:74","nodeType":"YulBlock","src":"19165:2479:74","statements":[{"nativeSrc":"19224:34:74","nodeType":"YulVariableDeclaration","src":"19224:34:74","value":{"arguments":[{"name":"_preBytes.slot","nativeSrc":"19243:14:74","nodeType":"YulIdentifier","src":"19243:14:74"}],"functionName":{"name":"sload","nativeSrc":"19237:5:74","nodeType":"YulIdentifier","src":"19237:5:74"},"nativeSrc":"19237:21:74","nodeType":"YulFunctionCall","src":"19237:21:74"},"variables":[{"name":"fslot","nativeSrc":"19228:5:74","nodeType":"YulTypedName","src":"19228:5:74","type":""}]},{"nativeSrc":"19349:76:74","nodeType":"YulVariableDeclaration","src":"19349:76:74","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"19372:5:74","nodeType":"YulIdentifier","src":"19372:5:74"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19387:5:74","nodeType":"YulLiteral","src":"19387:5:74","type":"","value":"0x100"},{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"19405:5:74","nodeType":"YulIdentifier","src":"19405:5:74"},{"kind":"number","nativeSrc":"19412:1:74","nodeType":"YulLiteral","src":"19412:1:74","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"19401:3:74","nodeType":"YulIdentifier","src":"19401:3:74"},"nativeSrc":"19401:13:74","nodeType":"YulFunctionCall","src":"19401:13:74"}],"functionName":{"name":"iszero","nativeSrc":"19394:6:74","nodeType":"YulIdentifier","src":"19394:6:74"},"nativeSrc":"19394:21:74","nodeType":"YulFunctionCall","src":"19394:21:74"}],"functionName":{"name":"mul","nativeSrc":"19383:3:74","nodeType":"YulIdentifier","src":"19383:3:74"},"nativeSrc":"19383:33:74","nodeType":"YulFunctionCall","src":"19383:33:74"},{"kind":"number","nativeSrc":"19418:1:74","nodeType":"YulLiteral","src":"19418:1:74","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19379:3:74","nodeType":"YulIdentifier","src":"19379:3:74"},"nativeSrc":"19379:41:74","nodeType":"YulFunctionCall","src":"19379:41:74"}],"functionName":{"name":"and","nativeSrc":"19368:3:74","nodeType":"YulIdentifier","src":"19368:3:74"},"nativeSrc":"19368:53:74","nodeType":"YulFunctionCall","src":"19368:53:74"},{"kind":"number","nativeSrc":"19423:1:74","nodeType":"YulLiteral","src":"19423:1:74","type":"","value":"2"}],"functionName":{"name":"div","nativeSrc":"19364:3:74","nodeType":"YulIdentifier","src":"19364:3:74"},"nativeSrc":"19364:61:74","nodeType":"YulFunctionCall","src":"19364:61:74"},"variables":[{"name":"slength","nativeSrc":"19353:7:74","nodeType":"YulTypedName","src":"19353:7:74","type":""}]},{"nativeSrc":"19438:32:74","nodeType":"YulVariableDeclaration","src":"19438:32:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"19459:10:74","nodeType":"YulIdentifier","src":"19459:10:74"}],"functionName":{"name":"mload","nativeSrc":"19453:5:74","nodeType":"YulIdentifier","src":"19453:5:74"},"nativeSrc":"19453:17:74","nodeType":"YulFunctionCall","src":"19453:17:74"},"variables":[{"name":"mlength","nativeSrc":"19442:7:74","nodeType":"YulTypedName","src":"19442:7:74","type":""}]},{"cases":[{"body":{"nativeSrc":"19594:1945:74","nodeType":"YulBlock","src":"19594:1945:74","statements":[{"body":{"nativeSrc":"19905:1620:74","nodeType":"YulBlock","src":"19905:1620:74","statements":[{"cases":[{"body":{"nativeSrc":"19977:340:74","nodeType":"YulBlock","src":"19977:340:74","statements":[{"nativeSrc":"20070:38:74","nodeType":"YulAssignment","src":"20070:38:74","value":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"20087:5:74","nodeType":"YulIdentifier","src":"20087:5:74"},{"kind":"number","nativeSrc":"20094:5:74","nodeType":"YulLiteral","src":"20094:5:74","type":"","value":"0x100"}],"functionName":{"name":"div","nativeSrc":"20083:3:74","nodeType":"YulIdentifier","src":"20083:3:74"},"nativeSrc":"20083:17:74","nodeType":"YulFunctionCall","src":"20083:17:74"},{"kind":"number","nativeSrc":"20102:5:74","nodeType":"YulLiteral","src":"20102:5:74","type":"","value":"0x100"}],"functionName":{"name":"mul","nativeSrc":"20079:3:74","nodeType":"YulIdentifier","src":"20079:3:74"},"nativeSrc":"20079:29:74","nodeType":"YulFunctionCall","src":"20079:29:74"},"variableNames":[{"name":"fslot","nativeSrc":"20070:5:74","nodeType":"YulIdentifier","src":"20070:5:74"}]},{"body":{"nativeSrc":"20185:110:74","nodeType":"YulBlock","src":"20185:110:74","statements":[{"nativeSrc":"20257:12:74","nodeType":"YulAssignment","src":"20257:12:74","value":{"kind":"number","nativeSrc":"20268:1:74","nodeType":"YulLiteral","src":"20268:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"20257:7:74","nodeType":"YulIdentifier","src":"20257:7:74"}]}]},"condition":{"arguments":[{"arguments":[{"name":"fslot","nativeSrc":"20147:5:74","nodeType":"YulIdentifier","src":"20147:5:74"},{"arguments":[{"arguments":[{"name":"_postBytes","nativeSrc":"20164:10:74","nodeType":"YulIdentifier","src":"20164:10:74"},{"kind":"number","nativeSrc":"20176:4:74","nodeType":"YulLiteral","src":"20176:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20160:3:74","nodeType":"YulIdentifier","src":"20160:3:74"},"nativeSrc":"20160:21:74","nodeType":"YulFunctionCall","src":"20160:21:74"}],"functionName":{"name":"mload","nativeSrc":"20154:5:74","nodeType":"YulIdentifier","src":"20154:5:74"},"nativeSrc":"20154:28:74","nodeType":"YulFunctionCall","src":"20154:28:74"}],"functionName":{"name":"eq","nativeSrc":"20144:2:74","nodeType":"YulIdentifier","src":"20144:2:74"},"nativeSrc":"20144:39:74","nodeType":"YulFunctionCall","src":"20144:39:74"}],"functionName":{"name":"iszero","nativeSrc":"20137:6:74","nodeType":"YulIdentifier","src":"20137:6:74"},"nativeSrc":"20137:47:74","nodeType":"YulFunctionCall","src":"20137:47:74"},"nativeSrc":"20134:161:74","nodeType":"YulIf","src":"20134:161:74"}]},"nativeSrc":"19970:347:74","nodeType":"YulCase","src":"19970:347:74","value":{"kind":"number","nativeSrc":"19975:1:74","nodeType":"YulLiteral","src":"19975:1:74","type":"","value":"1"}},{"body":{"nativeSrc":"20346:1161:74","nodeType":"YulBlock","src":"20346:1161:74","statements":[{"nativeSrc":"20615:11:74","nodeType":"YulVariableDeclaration","src":"20615:11:74","value":{"kind":"number","nativeSrc":"20625:1:74","nodeType":"YulLiteral","src":"20625:1:74","type":"","value":"1"},"variables":[{"name":"cb","nativeSrc":"20619:2:74","nodeType":"YulTypedName","src":"20619:2:74","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20739:3:74","nodeType":"YulLiteral","src":"20739:3:74","type":"","value":"0x0"},{"name":"_preBytes.slot","nativeSrc":"20744:14:74","nodeType":"YulIdentifier","src":"20744:14:74"}],"functionName":{"name":"mstore","nativeSrc":"20732:6:74","nodeType":"YulIdentifier","src":"20732:6:74"},"nativeSrc":"20732:27:74","nodeType":"YulFunctionCall","src":"20732:27:74"},"nativeSrc":"20732:27:74","nodeType":"YulExpressionStatement","src":"20732:27:74"},{"nativeSrc":"20784:30:74","nodeType":"YulVariableDeclaration","src":"20784:30:74","value":{"arguments":[{"kind":"number","nativeSrc":"20804:3:74","nodeType":"YulLiteral","src":"20804:3:74","type":"","value":"0x0"},{"kind":"number","nativeSrc":"20809:4:74","nodeType":"YulLiteral","src":"20809:4:74","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"20794:9:74","nodeType":"YulIdentifier","src":"20794:9:74"},"nativeSrc":"20794:20:74","nodeType":"YulFunctionCall","src":"20794:20:74"},"variables":[{"name":"sc","nativeSrc":"20788:2:74","nodeType":"YulTypedName","src":"20788:2:74","type":""}]},{"nativeSrc":"20840:31:74","nodeType":"YulVariableDeclaration","src":"20840:31:74","value":{"arguments":[{"name":"_postBytes","nativeSrc":"20854:10:74","nodeType":"YulIdentifier","src":"20854:10:74"},{"kind":"number","nativeSrc":"20866:4:74","nodeType":"YulLiteral","src":"20866:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20850:3:74","nodeType":"YulIdentifier","src":"20850:3:74"},"nativeSrc":"20850:21:74","nodeType":"YulFunctionCall","src":"20850:21:74"},"variables":[{"name":"mc","nativeSrc":"20844:2:74","nodeType":"YulTypedName","src":"20844:2:74","type":""}]},{"nativeSrc":"20896:27:74","nodeType":"YulVariableDeclaration","src":"20896:27:74","value":{"arguments":[{"name":"mc","nativeSrc":"20911:2:74","nodeType":"YulIdentifier","src":"20911:2:74"},{"name":"mlength","nativeSrc":"20915:7:74","nodeType":"YulIdentifier","src":"20915:7:74"}],"functionName":{"name":"add","nativeSrc":"20907:3:74","nodeType":"YulIdentifier","src":"20907:3:74"},"nativeSrc":"20907:16:74","nodeType":"YulFunctionCall","src":"20907:16:74"},"variables":[{"name":"end","nativeSrc":"20900:3:74","nodeType":"YulTypedName","src":"20900:3:74","type":""}]},{"body":{"nativeSrc":"21231:254:74","nodeType":"YulBlock","src":"21231:254:74","statements":[{"body":{"nativeSrc":"21297:162:74","nodeType":"YulBlock","src":"21297:162:74","statements":[{"nativeSrc":"21377:12:74","nodeType":"YulAssignment","src":"21377:12:74","value":{"kind":"number","nativeSrc":"21388:1:74","nodeType":"YulLiteral","src":"21388:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"21377:7:74","nodeType":"YulIdentifier","src":"21377:7:74"}]},{"nativeSrc":"21422:7:74","nodeType":"YulAssignment","src":"21422:7:74","value":{"kind":"number","nativeSrc":"21428:1:74","nodeType":"YulLiteral","src":"21428:1:74","type":"","value":"0"},"variableNames":[{"name":"cb","nativeSrc":"21422:2:74","nodeType":"YulIdentifier","src":"21422:2:74"}]}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"sc","nativeSrc":"21280:2:74","nodeType":"YulIdentifier","src":"21280:2:74"}],"functionName":{"name":"sload","nativeSrc":"21274:5:74","nodeType":"YulIdentifier","src":"21274:5:74"},"nativeSrc":"21274:9:74","nodeType":"YulFunctionCall","src":"21274:9:74"},{"arguments":[{"name":"mc","nativeSrc":"21291:2:74","nodeType":"YulIdentifier","src":"21291:2:74"}],"functionName":{"name":"mload","nativeSrc":"21285:5:74","nodeType":"YulIdentifier","src":"21285:5:74"},"nativeSrc":"21285:9:74","nodeType":"YulFunctionCall","src":"21285:9:74"}],"functionName":{"name":"eq","nativeSrc":"21271:2:74","nodeType":"YulIdentifier","src":"21271:2:74"},"nativeSrc":"21271:24:74","nodeType":"YulFunctionCall","src":"21271:24:74"}],"functionName":{"name":"iszero","nativeSrc":"21264:6:74","nodeType":"YulIdentifier","src":"21264:6:74"},"nativeSrc":"21264:32:74","nodeType":"YulFunctionCall","src":"21264:32:74"},"nativeSrc":"21261:198:74","nodeType":"YulIf","src":"21261:198:74"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"mc","nativeSrc":"21092:2:74","nodeType":"YulIdentifier","src":"21092:2:74"},{"name":"end","nativeSrc":"21096:3:74","nodeType":"YulIdentifier","src":"21096:3:74"}],"functionName":{"name":"lt","nativeSrc":"21089:2:74","nodeType":"YulIdentifier","src":"21089:2:74"},"nativeSrc":"21089:11:74","nodeType":"YulFunctionCall","src":"21089:11:74"},{"name":"cb","nativeSrc":"21102:2:74","nodeType":"YulIdentifier","src":"21102:2:74"}],"functionName":{"name":"add","nativeSrc":"21085:3:74","nodeType":"YulIdentifier","src":"21085:3:74"},"nativeSrc":"21085:20:74","nodeType":"YulFunctionCall","src":"21085:20:74"},{"kind":"number","nativeSrc":"21107:1:74","nodeType":"YulLiteral","src":"21107:1:74","type":"","value":"2"}],"functionName":{"name":"eq","nativeSrc":"21082:2:74","nodeType":"YulIdentifier","src":"21082:2:74"},"nativeSrc":"21082:27:74","nodeType":"YulFunctionCall","src":"21082:27:74"},"nativeSrc":"21075:410:74","nodeType":"YulForLoop","post":{"nativeSrc":"21110:120:74","nodeType":"YulBlock","src":"21110:120:74","statements":[{"nativeSrc":"21140:16:74","nodeType":"YulAssignment","src":"21140:16:74","value":{"arguments":[{"name":"sc","nativeSrc":"21150:2:74","nodeType":"YulIdentifier","src":"21150:2:74"},{"kind":"number","nativeSrc":"21154:1:74","nodeType":"YulLiteral","src":"21154:1:74","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"21146:3:74","nodeType":"YulIdentifier","src":"21146:3:74"},"nativeSrc":"21146:10:74","nodeType":"YulFunctionCall","src":"21146:10:74"},"variableNames":[{"name":"sc","nativeSrc":"21140:2:74","nodeType":"YulIdentifier","src":"21140:2:74"}]},{"nativeSrc":"21185:19:74","nodeType":"YulAssignment","src":"21185:19:74","value":{"arguments":[{"name":"mc","nativeSrc":"21195:2:74","nodeType":"YulIdentifier","src":"21195:2:74"},{"kind":"number","nativeSrc":"21199:4:74","nodeType":"YulLiteral","src":"21199:4:74","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21191:3:74","nodeType":"YulIdentifier","src":"21191:3:74"},"nativeSrc":"21191:13:74","nodeType":"YulFunctionCall","src":"21191:13:74"},"variableNames":[{"name":"mc","nativeSrc":"21185:2:74","nodeType":"YulIdentifier","src":"21185:2:74"}]}]},"pre":{"nativeSrc":"21079:2:74","nodeType":"YulBlock","src":"21079:2:74","statements":[]},"src":"21075:410:74"}]},"nativeSrc":"20338:1169:74","nodeType":"YulCase","src":"20338:1169:74","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"19937:7:74","nodeType":"YulIdentifier","src":"19937:7:74"},{"kind":"number","nativeSrc":"19946:2:74","nodeType":"YulLiteral","src":"19946:2:74","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"19934:2:74","nodeType":"YulIdentifier","src":"19934:2:74"},"nativeSrc":"19934:15:74","nodeType":"YulFunctionCall","src":"19934:15:74"},"nativeSrc":"19927:1580:74","nodeType":"YulSwitch","src":"19927:1580:74"}]},"condition":{"arguments":[{"arguments":[{"name":"slength","nativeSrc":"19895:7:74","nodeType":"YulIdentifier","src":"19895:7:74"}],"functionName":{"name":"iszero","nativeSrc":"19888:6:74","nodeType":"YulIdentifier","src":"19888:6:74"},"nativeSrc":"19888:15:74","nodeType":"YulFunctionCall","src":"19888:15:74"}],"functionName":{"name":"iszero","nativeSrc":"19881:6:74","nodeType":"YulIdentifier","src":"19881:6:74"},"nativeSrc":"19881:23:74","nodeType":"YulFunctionCall","src":"19881:23:74"},"nativeSrc":"19878:1647:74","nodeType":"YulIf","src":"19878:1647:74"}]},"nativeSrc":"19587:1952:74","nodeType":"YulCase","src":"19587:1952:74","value":{"kind":"number","nativeSrc":"19592:1:74","nodeType":"YulLiteral","src":"19592:1:74","type":"","value":"1"}},{"body":{"nativeSrc":"21560:74:74","nodeType":"YulBlock","src":"21560:74:74","statements":[{"nativeSrc":"21608:12:74","nodeType":"YulAssignment","src":"21608:12:74","value":{"kind":"number","nativeSrc":"21619:1:74","nodeType":"YulLiteral","src":"21619:1:74","type":"","value":"0"},"variableNames":[{"name":"success","nativeSrc":"21608:7:74","nodeType":"YulIdentifier","src":"21608:7:74"}]}]},"nativeSrc":"21552:82:74","nodeType":"YulCase","src":"21552:82:74","value":"default"}],"expression":{"arguments":[{"name":"slength","nativeSrc":"19557:7:74","nodeType":"YulIdentifier","src":"19557:7:74"},{"name":"mlength","nativeSrc":"19566:7:74","nodeType":"YulIdentifier","src":"19566:7:74"}],"functionName":{"name":"eq","nativeSrc":"19554:2:74","nodeType":"YulIdentifier","src":"19554:2:74"},"nativeSrc":"19554:20:74","nodeType":"YulFunctionCall","src":"19554:20:74"},"nativeSrc":"19547:2087:74","nodeType":"YulSwitch","src":"19547:2087:74"}]},"evmVersion":"cancun","externalReferences":[{"declaration":23559,"isOffset":false,"isSlot":false,"src":"19459:10:74","valueSize":1},{"declaration":23559,"isOffset":false,"isSlot":false,"src":"20164:10:74","valueSize":1},{"declaration":23559,"isOffset":false,"isSlot":false,"src":"20854:10:74","valueSize":1},{"declaration":23557,"isOffset":false,"isSlot":true,"src":"19243:14:74","suffix":"slot","valueSize":1},{"declaration":23557,"isOffset":false,"isSlot":true,"src":"20744:14:74","suffix":"slot","valueSize":1},{"declaration":23565,"isOffset":false,"isSlot":false,"src":"20257:7:74","valueSize":1},{"declaration":23565,"isOffset":false,"isSlot":false,"src":"21377:7:74","valueSize":1},{"declaration":23565,"isOffset":false,"isSlot":false,"src":"21608:7:74","valueSize":1}],"id":23568,"nodeType":"InlineAssembly","src":"19156:2488:74"},{"expression":{"id":23569,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23565,"src":"21661:7:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":23563,"id":23570,"nodeType":"Return","src":"21654:14:74"}]},"id":23572,"implemented":true,"kind":"function","modifiers":[],"name":"equalStorage","nameLocation":"18974:12:74","nodeType":"FunctionDefinition","parameters":{"id":23560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23557,"mutability":"mutable","name":"_preBytes","nameLocation":"19010:9:74","nodeType":"VariableDeclaration","scope":23572,"src":"18996:23:74","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":23556,"name":"bytes","nodeType":"ElementaryTypeName","src":"18996:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":23559,"mutability":"mutable","name":"_postBytes","nameLocation":"19042:10:74","nodeType":"VariableDeclaration","scope":23572,"src":"19029:23:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":23558,"name":"bytes","nodeType":"ElementaryTypeName","src":"19029:5:74","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18986:72:74"},"returnParameters":{"id":23563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":23562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":23572,"src":"19106:4:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":23561,"name":"bool","nodeType":"ElementaryTypeName","src":"19106:4:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19105:6:74"},"scope":23573,"src":"18965:2710:74","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":23574,"src":"370:21307:74","usedErrors":[],"usedEvents":[]}],"src":"336:21342:74"},"id":74}},"contracts":{"@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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f1ba7bdd38b48223009590152ff14a395382833f0ce27d3aedfcf0e5dd3df6db64736f6c634300081c0033","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 CALL 0xBA PUSH28 0xDD38B48223009590152FF14A395382833F0CE27D3AEDFCF0E5DD3DF6 0xDB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"839:4055:0:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;839:4055:0;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220f1ba7bdd38b48223009590152ff14a395382833f0ce27d3aedfcf0e5dd3df6db64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL 0xBA PUSH28 0xDD38B48223009590152FF14A395382833F0CE27D3AEDFCF0E5DD3DF6 0xDB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"839:4055:0:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"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":"611c7d610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611662565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611662565b61012b565b6100b16100ac3660046116d1565b610190565b005b5f60016100c3602088018861171f565b60028111156100d4576100d461170b565b036100ed576100e686868686866102d6565b9050610122565b60026100fc602088018861171f565b600281111561010d5761010d61170b565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b602088018861171f565b600281111561014c5761014c61170b565b0361015e576100e686868686866106c6565b600261016d602088018861171f565b600281111561017e5761017e61170b565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c3602083018361171f565b60028111156101d4576101d461170b565b0361024c575f6101e7604083018361173d565b8101906101f49190611787565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b602083018361171f565b600281111561026c5761026c61170b565b036102bd576102ba610281604083018361173d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e5604088018861173d565b8101906102f29190611787565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e91906117f9565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b8152600401610419919061188d565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610459919061189c565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d091906117f9565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a61173d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e891906117f9565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118c7565b995061063181856118da565b935050508080610640906118ed565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b891906117f9565b509998505050505050505050565b5f806106d5604088018861173d565b8101906106e29190611787565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e91906117f9565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b8152600401610809919061188d565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610849919061189c565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf919061189c565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a61173d565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a591906117f9565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119a6565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a27919061189c565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a99919061189c565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118da565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118da565b610b7591906118da565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb08360026119fc565b600b8110610bc057610bc0611a13565b60200201516001600160a01b03161480610c0f575081515f90610be48360026119fc565b610bef9060016118da565b600b8110610bff57610bff611a13565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a27565b600101610b96565b5080515f90610c47846002611a8b565b60ff16600b8110610c5a57610c5a611a13565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a27565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a13565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a27565b610cee82611400565b610cf890856118da565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118da565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e6119fc565b91906114d4565b610d859190611abb565b9695505050505050565b5f610d9861159c565b610da2855f611026565b91505f610dba610db36014836118da565b879061108a565b90505f6001610dca6014836118da565b610dd491906118da565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118da565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff841660146119fc565b610e469060026119fc565b610e516001876118da565b610e0891906118da565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118da565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611ada565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f52919061189c565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119a6565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd5919061189c565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118c7565b8461101c8861145d565b610d74908b6119fc565b5f6110328260146118da565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118da565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee61159c565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e576111606111446014836119fc565b61114f6001876118da565b61115991906118da565b8690611026565b825182600b811061117357611173611a13565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a491906119fc565b6111af9060016118da565b6111b990846118da565b92505f5b8260ff1681101561135c576111f26111d66001836119fc565b6111e19060056119fc565b6111eb90866118da565b869061108a565b60ff168260200151826005811061120b5761120b611a13565b60200201515261123f61121f6001836119fc565b61122a9060056119fc565b61123490866118da565b6111eb9060016118da565b60ff168260200151826005811061125857611258611a13565b6020020151600160200201526112926112726001836119fc565b61127d9060056119fc565b61128790866118da565b6111eb9060026118da565b60ff16826020015182600581106112ab576112ab611a13565b6020020151604001526112e26112c26001836119fc565b6112cd9060056119fc565b6112d790866118da565b6111eb9060036118da565b60ff16826020015182600581106112fb576112fb611a13565b6020020151606001526113326113126001836119fc565b61131d9060056119fc565b61132790866118da565b6111eb9060046118da565b60ff168260200151826005811061134b5761134b611a13565b6020020151608001526001016111bd565b5061136b600160ff84166119fc565b6113769060056119fc565b61138090846118da565b92505f5b8260ff168110156113d8576113a761139d6014836119fc565b61115990866118da565b826040015182600581106113bd576113bd611a13565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611a8b565b6113f7906001611b0c565b60ff1692915050565b5f61140f601460ff84166119fc565b600161141c846005611a8b565b60ff1661142991906119fc565b6014611434856113e0565b61143e91906119fc565b6114499060016118da565b61145391906118da565b610fed91906118da565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b25565b6114c9906012611b45565b610fed90600a611c39565b5f838302815f1985870982811083820303915050805f03611508578382816114fe576114fe611aa7565b0492505050611584565b80841161151f5761151f600385150260111861158b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b634e487b715f52806020526024601cfd5b60405180606001604052806115af6115ce565b81526020016115bc6115ed565b81526020016115c961161a565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61160461161a565b8152602001906001900390816115fc5790505090565b6040518060a001604052806005906020820280368337509192915050565b5f60608284031215611648575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a08688031215611676575f5ffd5b853567ffffffffffffffff81111561168c575f5ffd5b61169888828901611638565b95505060208601356116a98161164e565b935060408601356116b98161164e565b94979396509394606081013594506080013592915050565b5f602082840312156116e1575f5ffd5b813567ffffffffffffffff8111156116f7575f5ffd5b61170384828501611638565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561172f575f5ffd5b813560038110611584575f5ffd5b5f5f8335601e19843603018112611752575f5ffd5b83018035915067ffffffffffffffff82111561176c575f5ffd5b602001915036819003821315611780575f5ffd5b9250929050565b5f6040828403128015611798575f5ffd5b506040805190810167ffffffffffffffff811182821017156117c857634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117dd575f5ffd5b815260208301356117ed8161164e565b60208201529392505050565b5f60208284031215611809575f5ffd5b81518015158114611584575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161188860e08401826001600160a01b03169052565b505050565b6101008101610fed8284611818565b5f602082840312156118ac575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118b3565b80820180821115610fed57610fed6118b3565b5f600182016118fe576118fe6118b3565b5060010190565b805f5b600b811015610d265781516001600160a01b0316845260209384019390910190600101611908565b805f5b6005811015610d265781515f85815b6005811015611961578351825260209384019390910190600101611942565b50505060a094909401935060209190910190600101611933565b805f5b6005811015610d265781516001600160a01b031684526020938401939091019060010161197e565b61058081016119b58289611905565b6119c3610160830188611930565b85610480830152846104a08301526119df6104c083018561197b565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118b3565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a5a5782516001600160a01b0316825260209283019290910190600101611a32565b5050506020830151611a70610160840182611930565b506040830151611a8461048084018261197b565b5092915050565b60ff8181168382160290811690818114611a8457611a846118b3565b634e487b7160e01b5f52601260045260245ffd5b5f82611ad557634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611ae98287611905565b611af7610160830186611930565b836104808301526101226104a083018461197b565b60ff8181168382160190811115610fed57610fed6118b3565b5f60208284031215611b35575f5ffd5b815160ff81168114611584575f5ffd5b60ff8281168282160390811115610fed57610fed6118b3565b6001815b6001841115610ecd57808504811115611b7d57611b7d6118b3565b6001841615611b8b57908102905b60019390931c928002611b62565b5f82611ba757506001610fed565b81611bb357505f610fed565b8160018114611bc95760028114611bd357611bef565b6001915050610fed565b60ff841115611be457611be46118b3565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c12575081810a610fed565b611c1e5f198484611b5e565b805f1904821115611c3157611c316118b3565b029392505050565b5f610fea60ff841683611b9956fea26469706673582212209a329249c5826f8244f65d4b850d49bd2f3bc6681c75a12b2c0c4808e6e1e40564736f6c634300081c0033","opcodes":"PUSH2 0x1C7D 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 0x1662 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 0x1662 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16D1 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x170B JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1787 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x170B JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x173D 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 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x1787 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 0x17F9 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 0x188D 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 0x189C 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 0x17F9 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 0x173D 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 0x17F9 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 0x18C7 JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18DA JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x18ED 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 0x17F9 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 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x1787 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 0x17F9 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 0x188D 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 0x189C 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 0x189C 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 0x173D 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 0x17F9 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 0x19A6 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 0x189C 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 0x189C 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 0x18DA 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 0x18DA JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18DA 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 0x19FC JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A13 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 0x1A27 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1A8B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A13 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 0x1A27 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 0x1A13 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 0x1A27 JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18DA 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 0x18DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x19FC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1ABB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x159C JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18DA JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18DA 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 0x18DA 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 0x19FC JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18DA 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 0x18DA 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 0x1ADA 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 0x189C 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 0x19A6 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 0x189C 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 0x18C7 JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x19FC JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18DA 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 0x18DA 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 0x159C 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 0x19FC JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18DA JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18DA JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18DA 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 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18DA JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A13 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 0x1A8B JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B0C JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x19FC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1A8B JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x19FC JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18DA 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 0x1B25 JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B45 JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C39 JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x1508 JUMPI DUP4 DUP3 DUP2 PUSH2 0x14FE JUMPI PUSH2 0x14FE PUSH2 0x1AA7 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x1584 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x151F JUMPI PUSH2 0x151F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x158B 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST 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 0x15AF PUSH2 0x15CE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15BC PUSH2 0x15ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15C9 PUSH2 0x161A 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 0x1604 PUSH2 0x161A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x15FC 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 0x1648 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 0x1676 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1698 DUP9 DUP3 DUP10 ADD PUSH2 0x1638 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16A9 DUP2 PUSH2 0x164E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16B9 DUP2 PUSH2 0x164E 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 0x16E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1703 DUP5 DUP3 DUP6 ADD PUSH2 0x1638 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 0x172F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1752 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x176C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1798 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17C8 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 0x17DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x17ED DUP2 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1809 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1584 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 0x1888 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 0x1818 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18AC 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 0x18B3 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x18FE JUMPI PUSH2 0x18FE PUSH2 0x18B3 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 0x1908 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 0x1961 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1942 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1933 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 0x197E JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19B5 DUP3 DUP10 PUSH2 0x1905 JUMP JUMPDEST PUSH2 0x19C3 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1930 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19DF PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x197B 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 0x18B3 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 0x1A5A 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 0x1A32 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A70 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1930 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A84 PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x197B 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 0x1A84 JUMPI PUSH2 0x1A84 PUSH2 0x18B3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AD5 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 0x1AE9 DUP3 DUP8 PUSH2 0x1905 JUMP JUMPDEST PUSH2 0x1AF7 PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1930 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x197B JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B35 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1B8B JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B62 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BA7 JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BB3 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BC9 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BD3 JUMPI PUSH2 0x1BEF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BE4 JUMPI PUSH2 0x1BE4 PUSH2 0x18B3 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 0x1C12 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C1E PUSH0 NOT DUP5 DUP5 PUSH2 0x1B5E JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C31 JUMPI PUSH2 0x1C31 PUSH2 0x18B3 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1B99 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 ORIGIN SWAP3 BLOBHASH 0xC5 DUP3 PUSH16 0x8244F65D4B850D49BD2F3BC6681C75A1 0x2B 0x2C 0xC BASEFEE ADDMOD 0xE6 0xE1 0xE4 SDIV PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"522:9839:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;522:9839:1;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_calcMaxAmount_914":{"entryPoint":3372,"id":914,"parameterSlots":5,"returnSlots":1},"@_calcMinAmount_877":{"entryPoint":4083,"id":877,"parameterSlots":5,"returnSlots":1},"@_exactInputCurve_1235":{"entryPoint":2312,"id":1235,"parameterSlots":5,"returnSlots":1},"@_exactInputUniswap_1026":{"entryPoint":1734,"id":1026,"parameterSlots":5,"returnSlots":1},"@_exactOutputCurve_1389":{"entryPoint":1294,"id":1389,"parameterSlots":5,"returnSlots":1},"@_exactOutputUniswap_1134":{"entryPoint":726,"id":1134,"parameterSlots":5,"returnSlots":1},"@_exchangeCurve_1282":{"entryPoint":3797,"id":1282,"parameterSlots":3,"returnSlots":2},"@_routeLen_486":{"entryPoint":5088,"id":486,"parameterSlots":1,"returnSlots":1},"@_toWadFactor_744":{"entryPoint":5213,"id":744,"parameterSlots":1,"returnSlots":1},"@exactInput_794":{"entryPoint":299,"id":794,"parameterSlots":5,"returnSlots":1},"@exactOutput_844":{"entryPoint":179,"id":844,"parameterSlots":5,"returnSlots":1},"@findRoute_588":{"entryPoint":3471,"id":588,"parameterSlots":3,"returnSlots":2},"@min_9938":{"entryPoint":4063,"id":9938,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":5332,"id":10139,"parameterSlots":3,"returnSlots":1},"@panic_9542":{"entryPoint":5515,"id":9542,"parameterSlots":1,"returnSlots":0},"@readRoute_443":{"entryPoint":4325,"id":443,"parameterSlots":2,"returnSlots":2},"@routeSize_471":{"entryPoint":5120,"id":471,"parameterSlots":1,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toAddress_23313":{"entryPoint":4134,"id":23313,"parameterSlots":2,"returnSlots":1},"@toUint8_23339":{"entryPoint":4234,"id":23339,"parameterSlots":2,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@validate_227":{"entryPoint":2798,"id":227,"parameterSlots":1,"returnSlots":0},"@validate_724":{"entryPoint":400,"id":724,"parameterSlots":1,"returnSlots":0},"abi_decode_struct_SwapConfig_calldata":{"entryPoint":5688,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":6137,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_enum$_SwapProtocol_$616":{"entryPoint":5919,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptr":{"entryPoint":5841,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptrt_addresst_addresst_uint256t_uint256":{"entryPoint":5730,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_struct$_UniswapCustomParams_$630_memory_ptr":{"entryPoint":6023,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":6300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":6949,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address":{"entryPoint":6405,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_address_to_array_address_fromStack":{"entryPoint":6523,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_array_array_uint256":{"entryPoint":6448,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_struct_ExactOutputSingleParams":{"entryPoint":6168,"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":6874,"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":6566,"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_$47_memory_ptr__to_t_struct$_CurveRoute_$47_memory_ptr__fromStack_reversed":{"entryPoint":6695,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ExactInputSingleParams_$13386_memory_ptr__to_t_struct$_ExactInputSingleParams_$13386_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ExactOutputSingleParams_$13432_memory_ptr__to_t_struct$_ExactOutputSingleParams_$13432_memory_ptr__fromStack_reversed":{"entryPoint":6285,"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":5949,"id":null,"parameterSlots":2,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":6362,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":6924,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":6843,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7006,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7225,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7065,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":6652,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint8":{"entryPoint":6795,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":6343,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":6981,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":6381,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":6323,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":6823,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5899,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":6675,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":5710,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:15432:75","nodeType":"YulBlock","src":"0:15432:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"87:85:75","nodeType":"YulBlock","src":"87:85:75","statements":[{"body":{"nativeSrc":"126:16:75","nodeType":"YulBlock","src":"126:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"135:1:75","nodeType":"YulLiteral","src":"135:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"138:1:75","nodeType":"YulLiteral","src":"138:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"128:6:75","nodeType":"YulIdentifier","src":"128:6:75"},"nativeSrc":"128:12:75","nodeType":"YulFunctionCall","src":"128:12:75"},"nativeSrc":"128:12:75","nodeType":"YulExpressionStatement","src":"128:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"108:3:75","nodeType":"YulIdentifier","src":"108:3:75"},{"name":"offset","nativeSrc":"113:6:75","nodeType":"YulIdentifier","src":"113:6:75"}],"functionName":{"name":"sub","nativeSrc":"104:3:75","nodeType":"YulIdentifier","src":"104:3:75"},"nativeSrc":"104:16:75","nodeType":"YulFunctionCall","src":"104:16:75"},{"kind":"number","nativeSrc":"122:2:75","nodeType":"YulLiteral","src":"122:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"100:3:75","nodeType":"YulIdentifier","src":"100:3:75"},"nativeSrc":"100:25:75","nodeType":"YulFunctionCall","src":"100:25:75"},"nativeSrc":"97:45:75","nodeType":"YulIf","src":"97:45:75"},{"nativeSrc":"151:15:75","nodeType":"YulAssignment","src":"151:15:75","value":{"name":"offset","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"variableNames":[{"name":"value","nativeSrc":"151:5:75","nodeType":"YulIdentifier","src":"151:5:75"}]}]},"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"14:158:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"61:6:75","nodeType":"YulTypedName","src":"61:6:75","type":""},{"name":"end","nativeSrc":"69:3:75","nodeType":"YulTypedName","src":"69:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"77:5:75","nodeType":"YulTypedName","src":"77:5:75","type":""}],"src":"14:158:75"},{"body":{"nativeSrc":"222:86:75","nodeType":"YulBlock","src":"222:86:75","statements":[{"body":{"nativeSrc":"286:16:75","nodeType":"YulBlock","src":"286:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"295:1:75","nodeType":"YulLiteral","src":"295:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"298:1:75","nodeType":"YulLiteral","src":"298:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"288:6:75","nodeType":"YulIdentifier","src":"288:6:75"},"nativeSrc":"288:12:75","nodeType":"YulFunctionCall","src":"288:12:75"},"nativeSrc":"288:12:75","nodeType":"YulExpressionStatement","src":"288:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"245:5:75","nodeType":"YulIdentifier","src":"245:5:75"},{"arguments":[{"name":"value","nativeSrc":"256:5:75","nodeType":"YulIdentifier","src":"256:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"271:3:75","nodeType":"YulLiteral","src":"271:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"276:1:75","nodeType":"YulLiteral","src":"276:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"267:3:75","nodeType":"YulIdentifier","src":"267:3:75"},"nativeSrc":"267:11:75","nodeType":"YulFunctionCall","src":"267:11:75"},{"kind":"number","nativeSrc":"280:1:75","nodeType":"YulLiteral","src":"280:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"263:3:75","nodeType":"YulIdentifier","src":"263:3:75"},"nativeSrc":"263:19:75","nodeType":"YulFunctionCall","src":"263:19:75"}],"functionName":{"name":"and","nativeSrc":"252:3:75","nodeType":"YulIdentifier","src":"252:3:75"},"nativeSrc":"252:31:75","nodeType":"YulFunctionCall","src":"252:31:75"}],"functionName":{"name":"eq","nativeSrc":"242:2:75","nodeType":"YulIdentifier","src":"242:2:75"},"nativeSrc":"242:42:75","nodeType":"YulFunctionCall","src":"242:42:75"}],"functionName":{"name":"iszero","nativeSrc":"235:6:75","nodeType":"YulIdentifier","src":"235:6:75"},"nativeSrc":"235:50:75","nodeType":"YulFunctionCall","src":"235:50:75"},"nativeSrc":"232:70:75","nodeType":"YulIf","src":"232:70:75"}]},"name":"validator_revert_address","nativeSrc":"177:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"211:5:75","nodeType":"YulTypedName","src":"211:5:75","type":""}],"src":"177:131:75"},{"body":{"nativeSrc":"480:712:75","nodeType":"YulBlock","src":"480:712:75","statements":[{"body":{"nativeSrc":"527:16:75","nodeType":"YulBlock","src":"527:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"536:1:75","nodeType":"YulLiteral","src":"536:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"539:1:75","nodeType":"YulLiteral","src":"539:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"529:6:75","nodeType":"YulIdentifier","src":"529:6:75"},"nativeSrc":"529:12:75","nodeType":"YulFunctionCall","src":"529:12:75"},"nativeSrc":"529:12:75","nodeType":"YulExpressionStatement","src":"529:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"501:7:75","nodeType":"YulIdentifier","src":"501:7:75"},{"name":"headStart","nativeSrc":"510:9:75","nodeType":"YulIdentifier","src":"510:9:75"}],"functionName":{"name":"sub","nativeSrc":"497:3:75","nodeType":"YulIdentifier","src":"497:3:75"},"nativeSrc":"497:23:75","nodeType":"YulFunctionCall","src":"497:23:75"},{"kind":"number","nativeSrc":"522:3:75","nodeType":"YulLiteral","src":"522:3:75","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"493:3:75","nodeType":"YulIdentifier","src":"493:3:75"},"nativeSrc":"493:33:75","nodeType":"YulFunctionCall","src":"493:33:75"},"nativeSrc":"490:53:75","nodeType":"YulIf","src":"490:53:75"},{"nativeSrc":"552:37:75","nodeType":"YulVariableDeclaration","src":"552:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"579:9:75","nodeType":"YulIdentifier","src":"579:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"566:12:75","nodeType":"YulIdentifier","src":"566:12:75"},"nativeSrc":"566:23:75","nodeType":"YulFunctionCall","src":"566:23:75"},"variables":[{"name":"offset","nativeSrc":"556:6:75","nodeType":"YulTypedName","src":"556:6:75","type":""}]},{"body":{"nativeSrc":"632:16:75","nodeType":"YulBlock","src":"632:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"641:1:75","nodeType":"YulLiteral","src":"641:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"644:1:75","nodeType":"YulLiteral","src":"644:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"634:6:75","nodeType":"YulIdentifier","src":"634:6:75"},"nativeSrc":"634:12:75","nodeType":"YulFunctionCall","src":"634:12:75"},"nativeSrc":"634:12:75","nodeType":"YulExpressionStatement","src":"634:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"604:6:75","nodeType":"YulIdentifier","src":"604:6:75"},{"kind":"number","nativeSrc":"612:18:75","nodeType":"YulLiteral","src":"612:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"601:2:75","nodeType":"YulIdentifier","src":"601:2:75"},"nativeSrc":"601:30:75","nodeType":"YulFunctionCall","src":"601:30:75"},"nativeSrc":"598:50:75","nodeType":"YulIf","src":"598:50:75"},{"nativeSrc":"657:80:75","nodeType":"YulAssignment","src":"657:80:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"709:9:75","nodeType":"YulIdentifier","src":"709:9:75"},{"name":"offset","nativeSrc":"720:6:75","nodeType":"YulIdentifier","src":"720:6:75"}],"functionName":{"name":"add","nativeSrc":"705:3:75","nodeType":"YulIdentifier","src":"705:3:75"},"nativeSrc":"705:22:75","nodeType":"YulFunctionCall","src":"705:22:75"},{"name":"dataEnd","nativeSrc":"729:7:75","nodeType":"YulIdentifier","src":"729:7:75"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"667:37:75","nodeType":"YulIdentifier","src":"667:37:75"},"nativeSrc":"667:70:75","nodeType":"YulFunctionCall","src":"667:70:75"},"variableNames":[{"name":"value0","nativeSrc":"657:6:75","nodeType":"YulIdentifier","src":"657:6:75"}]},{"nativeSrc":"746:45:75","nodeType":"YulVariableDeclaration","src":"746:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"776:9:75","nodeType":"YulIdentifier","src":"776:9:75"},{"kind":"number","nativeSrc":"787:2:75","nodeType":"YulLiteral","src":"787:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"772:3:75","nodeType":"YulIdentifier","src":"772:3:75"},"nativeSrc":"772:18:75","nodeType":"YulFunctionCall","src":"772:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"759:12:75","nodeType":"YulIdentifier","src":"759:12:75"},"nativeSrc":"759:32:75","nodeType":"YulFunctionCall","src":"759:32:75"},"variables":[{"name":"value","nativeSrc":"750:5:75","nodeType":"YulTypedName","src":"750:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"825:5:75","nodeType":"YulIdentifier","src":"825:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"800:24:75","nodeType":"YulIdentifier","src":"800:24:75"},"nativeSrc":"800:31:75","nodeType":"YulFunctionCall","src":"800:31:75"},"nativeSrc":"800:31:75","nodeType":"YulExpressionStatement","src":"800:31:75"},{"nativeSrc":"840:15:75","nodeType":"YulAssignment","src":"840:15:75","value":{"name":"value","nativeSrc":"850:5:75","nodeType":"YulIdentifier","src":"850:5:75"},"variableNames":[{"name":"value1","nativeSrc":"840:6:75","nodeType":"YulIdentifier","src":"840:6:75"}]},{"nativeSrc":"864:47:75","nodeType":"YulVariableDeclaration","src":"864:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"896:9:75","nodeType":"YulIdentifier","src":"896:9:75"},{"kind":"number","nativeSrc":"907:2:75","nodeType":"YulLiteral","src":"907:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"892:3:75","nodeType":"YulIdentifier","src":"892:3:75"},"nativeSrc":"892:18:75","nodeType":"YulFunctionCall","src":"892:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"879:12:75","nodeType":"YulIdentifier","src":"879:12:75"},"nativeSrc":"879:32:75","nodeType":"YulFunctionCall","src":"879:32:75"},"variables":[{"name":"value_1","nativeSrc":"868:7:75","nodeType":"YulTypedName","src":"868:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"945:7:75","nodeType":"YulIdentifier","src":"945:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"920:24:75","nodeType":"YulIdentifier","src":"920:24:75"},"nativeSrc":"920:33:75","nodeType":"YulFunctionCall","src":"920:33:75"},"nativeSrc":"920:33:75","nodeType":"YulExpressionStatement","src":"920:33:75"},{"nativeSrc":"962:17:75","nodeType":"YulAssignment","src":"962:17:75","value":{"name":"value_1","nativeSrc":"972:7:75","nodeType":"YulIdentifier","src":"972:7:75"},"variableNames":[{"name":"value2","nativeSrc":"962:6:75","nodeType":"YulIdentifier","src":"962:6:75"}]},{"nativeSrc":"988:16:75","nodeType":"YulVariableDeclaration","src":"988:16:75","value":{"kind":"number","nativeSrc":"1003:1:75","nodeType":"YulLiteral","src":"1003:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"992:7:75","nodeType":"YulTypedName","src":"992:7:75","type":""}]},{"nativeSrc":"1013:43:75","nodeType":"YulAssignment","src":"1013:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1041:9:75","nodeType":"YulIdentifier","src":"1041:9:75"},{"kind":"number","nativeSrc":"1052:2:75","nodeType":"YulLiteral","src":"1052:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1037:3:75","nodeType":"YulIdentifier","src":"1037:3:75"},"nativeSrc":"1037:18:75","nodeType":"YulFunctionCall","src":"1037:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1024:12:75","nodeType":"YulIdentifier","src":"1024:12:75"},"nativeSrc":"1024:32:75","nodeType":"YulFunctionCall","src":"1024:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"1013:7:75","nodeType":"YulIdentifier","src":"1013:7:75"}]},{"nativeSrc":"1065:17:75","nodeType":"YulAssignment","src":"1065:17:75","value":{"name":"value_2","nativeSrc":"1075:7:75","nodeType":"YulIdentifier","src":"1075:7:75"},"variableNames":[{"name":"value3","nativeSrc":"1065:6:75","nodeType":"YulIdentifier","src":"1065:6:75"}]},{"nativeSrc":"1091:16:75","nodeType":"YulVariableDeclaration","src":"1091:16:75","value":{"kind":"number","nativeSrc":"1106:1:75","nodeType":"YulLiteral","src":"1106:1:75","type":"","value":"0"},"variables":[{"name":"value_3","nativeSrc":"1095:7:75","nodeType":"YulTypedName","src":"1095:7:75","type":""}]},{"nativeSrc":"1116:44:75","nodeType":"YulAssignment","src":"1116:44:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1144:9:75","nodeType":"YulIdentifier","src":"1144:9:75"},{"kind":"number","nativeSrc":"1155:3:75","nodeType":"YulLiteral","src":"1155:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1140:3:75","nodeType":"YulIdentifier","src":"1140:3:75"},"nativeSrc":"1140:19:75","nodeType":"YulFunctionCall","src":"1140:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"1127:12:75","nodeType":"YulIdentifier","src":"1127:12:75"},"nativeSrc":"1127:33:75","nodeType":"YulFunctionCall","src":"1127:33:75"},"variableNames":[{"name":"value_3","nativeSrc":"1116:7:75","nodeType":"YulIdentifier","src":"1116:7:75"}]},{"nativeSrc":"1169:17:75","nodeType":"YulAssignment","src":"1169:17:75","value":{"name":"value_3","nativeSrc":"1179:7:75","nodeType":"YulIdentifier","src":"1179:7:75"},"variableNames":[{"name":"value4","nativeSrc":"1169:6:75","nodeType":"YulIdentifier","src":"1169:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptrt_addresst_addresst_uint256t_uint256","nativeSrc":"313:879:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"414:9:75","nodeType":"YulTypedName","src":"414:9:75","type":""},{"name":"dataEnd","nativeSrc":"425:7:75","nodeType":"YulTypedName","src":"425:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"437:6:75","nodeType":"YulTypedName","src":"437:6:75","type":""},{"name":"value1","nativeSrc":"445:6:75","nodeType":"YulTypedName","src":"445:6:75","type":""},{"name":"value2","nativeSrc":"453:6:75","nodeType":"YulTypedName","src":"453:6:75","type":""},{"name":"value3","nativeSrc":"461:6:75","nodeType":"YulTypedName","src":"461:6:75","type":""},{"name":"value4","nativeSrc":"469:6:75","nodeType":"YulTypedName","src":"469:6:75","type":""}],"src":"313:879:75"},{"body":{"nativeSrc":"1306:76:75","nodeType":"YulBlock","src":"1306:76:75","statements":[{"nativeSrc":"1316:26:75","nodeType":"YulAssignment","src":"1316:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1328:9:75","nodeType":"YulIdentifier","src":"1328:9:75"},{"kind":"number","nativeSrc":"1339:2:75","nodeType":"YulLiteral","src":"1339:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1324:3:75","nodeType":"YulIdentifier","src":"1324:3:75"},"nativeSrc":"1324:18:75","nodeType":"YulFunctionCall","src":"1324:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1316:4:75","nodeType":"YulIdentifier","src":"1316:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1358:9:75","nodeType":"YulIdentifier","src":"1358:9:75"},{"name":"value0","nativeSrc":"1369:6:75","nodeType":"YulIdentifier","src":"1369:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1351:6:75","nodeType":"YulIdentifier","src":"1351:6:75"},"nativeSrc":"1351:25:75","nodeType":"YulFunctionCall","src":"1351:25:75"},"nativeSrc":"1351:25:75","nodeType":"YulExpressionStatement","src":"1351:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nativeSrc":"1197:185:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1275:9:75","nodeType":"YulTypedName","src":"1275:9:75","type":""},{"name":"value0","nativeSrc":"1286:6:75","nodeType":"YulTypedName","src":"1286:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1297:4:75","nodeType":"YulTypedName","src":"1297:4:75","type":""}],"src":"1197:185:75"},{"body":{"nativeSrc":"1486:262:75","nodeType":"YulBlock","src":"1486:262:75","statements":[{"body":{"nativeSrc":"1532:16:75","nodeType":"YulBlock","src":"1532:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1541:1:75","nodeType":"YulLiteral","src":"1541:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1544:1:75","nodeType":"YulLiteral","src":"1544:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1534:6:75","nodeType":"YulIdentifier","src":"1534:6:75"},"nativeSrc":"1534:12:75","nodeType":"YulFunctionCall","src":"1534:12:75"},"nativeSrc":"1534:12:75","nodeType":"YulExpressionStatement","src":"1534:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1507:7:75","nodeType":"YulIdentifier","src":"1507:7:75"},{"name":"headStart","nativeSrc":"1516:9:75","nodeType":"YulIdentifier","src":"1516:9:75"}],"functionName":{"name":"sub","nativeSrc":"1503:3:75","nodeType":"YulIdentifier","src":"1503:3:75"},"nativeSrc":"1503:23:75","nodeType":"YulFunctionCall","src":"1503:23:75"},{"kind":"number","nativeSrc":"1528:2:75","nodeType":"YulLiteral","src":"1528:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1499:3:75","nodeType":"YulIdentifier","src":"1499:3:75"},"nativeSrc":"1499:32:75","nodeType":"YulFunctionCall","src":"1499:32:75"},"nativeSrc":"1496:52:75","nodeType":"YulIf","src":"1496:52:75"},{"nativeSrc":"1557:37:75","nodeType":"YulVariableDeclaration","src":"1557:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1584:9:75","nodeType":"YulIdentifier","src":"1584:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1571:12:75","nodeType":"YulIdentifier","src":"1571:12:75"},"nativeSrc":"1571:23:75","nodeType":"YulFunctionCall","src":"1571:23:75"},"variables":[{"name":"offset","nativeSrc":"1561:6:75","nodeType":"YulTypedName","src":"1561:6:75","type":""}]},{"body":{"nativeSrc":"1637:16:75","nodeType":"YulBlock","src":"1637:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1646:1:75","nodeType":"YulLiteral","src":"1646:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1649:1:75","nodeType":"YulLiteral","src":"1649:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1639:6:75","nodeType":"YulIdentifier","src":"1639:6:75"},"nativeSrc":"1639:12:75","nodeType":"YulFunctionCall","src":"1639:12:75"},"nativeSrc":"1639:12:75","nodeType":"YulExpressionStatement","src":"1639:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1609:6:75","nodeType":"YulIdentifier","src":"1609:6:75"},{"kind":"number","nativeSrc":"1617:18:75","nodeType":"YulLiteral","src":"1617:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1606:2:75","nodeType":"YulIdentifier","src":"1606:2:75"},"nativeSrc":"1606:30:75","nodeType":"YulFunctionCall","src":"1606:30:75"},"nativeSrc":"1603:50:75","nodeType":"YulIf","src":"1603:50:75"},{"nativeSrc":"1662:80:75","nodeType":"YulAssignment","src":"1662:80:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1714:9:75","nodeType":"YulIdentifier","src":"1714:9:75"},{"name":"offset","nativeSrc":"1725:6:75","nodeType":"YulIdentifier","src":"1725:6:75"}],"functionName":{"name":"add","nativeSrc":"1710:3:75","nodeType":"YulIdentifier","src":"1710:3:75"},"nativeSrc":"1710:22:75","nodeType":"YulFunctionCall","src":"1710:22:75"},{"name":"dataEnd","nativeSrc":"1734:7:75","nodeType":"YulIdentifier","src":"1734:7:75"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"1672:37:75","nodeType":"YulIdentifier","src":"1672:37:75"},"nativeSrc":"1672:70:75","nodeType":"YulFunctionCall","src":"1672:70:75"},"variableNames":[{"name":"value0","nativeSrc":"1662:6:75","nodeType":"YulIdentifier","src":"1662:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptr","nativeSrc":"1387:361:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1452:9:75","nodeType":"YulTypedName","src":"1452:9:75","type":""},{"name":"dataEnd","nativeSrc":"1463:7:75","nodeType":"YulTypedName","src":"1463:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1475:6:75","nodeType":"YulTypedName","src":"1475:6:75","type":""}],"src":"1387:361:75"},{"body":{"nativeSrc":"1785:95:75","nodeType":"YulBlock","src":"1785:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1802:1:75","nodeType":"YulLiteral","src":"1802:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1809:3:75","nodeType":"YulLiteral","src":"1809:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"1814:10:75","nodeType":"YulLiteral","src":"1814:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1805:3:75","nodeType":"YulIdentifier","src":"1805:3:75"},"nativeSrc":"1805:20:75","nodeType":"YulFunctionCall","src":"1805:20:75"}],"functionName":{"name":"mstore","nativeSrc":"1795:6:75","nodeType":"YulIdentifier","src":"1795:6:75"},"nativeSrc":"1795:31:75","nodeType":"YulFunctionCall","src":"1795:31:75"},"nativeSrc":"1795:31:75","nodeType":"YulExpressionStatement","src":"1795:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1842:1:75","nodeType":"YulLiteral","src":"1842:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"1845:4:75","nodeType":"YulLiteral","src":"1845:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"1835:6:75","nodeType":"YulIdentifier","src":"1835:6:75"},"nativeSrc":"1835:15:75","nodeType":"YulFunctionCall","src":"1835:15:75"},"nativeSrc":"1835:15:75","nodeType":"YulExpressionStatement","src":"1835:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1866:1:75","nodeType":"YulLiteral","src":"1866:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1869:4:75","nodeType":"YulLiteral","src":"1869:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1859:6:75","nodeType":"YulIdentifier","src":"1859:6:75"},"nativeSrc":"1859:15:75","nodeType":"YulFunctionCall","src":"1859:15:75"},"nativeSrc":"1859:15:75","nodeType":"YulExpressionStatement","src":"1859:15:75"}]},"name":"panic_error_0x21","nativeSrc":"1753:127:75","nodeType":"YulFunctionDefinition","src":"1753:127:75"},{"body":{"nativeSrc":"1971:186:75","nodeType":"YulBlock","src":"1971:186:75","statements":[{"body":{"nativeSrc":"2017:16:75","nodeType":"YulBlock","src":"2017:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2026:1:75","nodeType":"YulLiteral","src":"2026:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2029:1:75","nodeType":"YulLiteral","src":"2029:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2019:6:75","nodeType":"YulIdentifier","src":"2019:6:75"},"nativeSrc":"2019:12:75","nodeType":"YulFunctionCall","src":"2019:12:75"},"nativeSrc":"2019:12:75","nodeType":"YulExpressionStatement","src":"2019:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1992:7:75","nodeType":"YulIdentifier","src":"1992:7:75"},{"name":"headStart","nativeSrc":"2001:9:75","nodeType":"YulIdentifier","src":"2001:9:75"}],"functionName":{"name":"sub","nativeSrc":"1988:3:75","nodeType":"YulIdentifier","src":"1988:3:75"},"nativeSrc":"1988:23:75","nodeType":"YulFunctionCall","src":"1988:23:75"},{"kind":"number","nativeSrc":"2013:2:75","nodeType":"YulLiteral","src":"2013:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1984:3:75","nodeType":"YulIdentifier","src":"1984:3:75"},"nativeSrc":"1984:32:75","nodeType":"YulFunctionCall","src":"1984:32:75"},"nativeSrc":"1981:52:75","nodeType":"YulIf","src":"1981:52:75"},{"nativeSrc":"2042:36:75","nodeType":"YulVariableDeclaration","src":"2042:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2068:9:75","nodeType":"YulIdentifier","src":"2068:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2055:12:75","nodeType":"YulIdentifier","src":"2055:12:75"},"nativeSrc":"2055:23:75","nodeType":"YulFunctionCall","src":"2055:23:75"},"variables":[{"name":"value","nativeSrc":"2046:5:75","nodeType":"YulTypedName","src":"2046:5:75","type":""}]},{"body":{"nativeSrc":"2111:16:75","nodeType":"YulBlock","src":"2111:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2120:1:75","nodeType":"YulLiteral","src":"2120:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2123:1:75","nodeType":"YulLiteral","src":"2123:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2113:6:75","nodeType":"YulIdentifier","src":"2113:6:75"},"nativeSrc":"2113:12:75","nodeType":"YulFunctionCall","src":"2113:12:75"},"nativeSrc":"2113:12:75","nodeType":"YulExpressionStatement","src":"2113:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2100:5:75","nodeType":"YulIdentifier","src":"2100:5:75"},{"kind":"number","nativeSrc":"2107:1:75","nodeType":"YulLiteral","src":"2107:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"2097:2:75","nodeType":"YulIdentifier","src":"2097:2:75"},"nativeSrc":"2097:12:75","nodeType":"YulFunctionCall","src":"2097:12:75"}],"functionName":{"name":"iszero","nativeSrc":"2090:6:75","nodeType":"YulIdentifier","src":"2090:6:75"},"nativeSrc":"2090:20:75","nodeType":"YulFunctionCall","src":"2090:20:75"},"nativeSrc":"2087:40:75","nodeType":"YulIf","src":"2087:40:75"},{"nativeSrc":"2136:15:75","nodeType":"YulAssignment","src":"2136:15:75","value":{"name":"value","nativeSrc":"2146:5:75","nodeType":"YulIdentifier","src":"2146:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2136:6:75","nodeType":"YulIdentifier","src":"2136:6:75"}]}]},"name":"abi_decode_tuple_t_enum$_SwapProtocol_$616","nativeSrc":"1885:272:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1937:9:75","nodeType":"YulTypedName","src":"1937:9:75","type":""},{"name":"dataEnd","nativeSrc":"1948:7:75","nodeType":"YulTypedName","src":"1948:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1960:6:75","nodeType":"YulTypedName","src":"1960:6:75","type":""}],"src":"1885:272:75"},{"body":{"nativeSrc":"2256:427:75","nodeType":"YulBlock","src":"2256:427:75","statements":[{"nativeSrc":"2266:51:75","nodeType":"YulVariableDeclaration","src":"2266:51:75","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"2305:11:75","nodeType":"YulIdentifier","src":"2305:11:75"}],"functionName":{"name":"calldataload","nativeSrc":"2292:12:75","nodeType":"YulIdentifier","src":"2292:12:75"},"nativeSrc":"2292:25:75","nodeType":"YulFunctionCall","src":"2292:25:75"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"2270:18:75","nodeType":"YulTypedName","src":"2270:18:75","type":""}]},{"body":{"nativeSrc":"2406:16:75","nodeType":"YulBlock","src":"2406:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2415:1:75","nodeType":"YulLiteral","src":"2415:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2418:1:75","nodeType":"YulLiteral","src":"2418:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2408:6:75","nodeType":"YulIdentifier","src":"2408:6:75"},"nativeSrc":"2408:12:75","nodeType":"YulFunctionCall","src":"2408:12:75"},"nativeSrc":"2408:12:75","nodeType":"YulExpressionStatement","src":"2408:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"2340:18:75","nodeType":"YulIdentifier","src":"2340:18:75"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"2368:12:75","nodeType":"YulIdentifier","src":"2368:12:75"},"nativeSrc":"2368:14:75","nodeType":"YulFunctionCall","src":"2368:14:75"},{"name":"base_ref","nativeSrc":"2384:8:75","nodeType":"YulIdentifier","src":"2384:8:75"}],"functionName":{"name":"sub","nativeSrc":"2364:3:75","nodeType":"YulIdentifier","src":"2364:3:75"},"nativeSrc":"2364:29:75","nodeType":"YulFunctionCall","src":"2364:29:75"},{"arguments":[{"kind":"number","nativeSrc":"2399:2:75","nodeType":"YulLiteral","src":"2399:2:75","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"2395:3:75","nodeType":"YulIdentifier","src":"2395:3:75"},"nativeSrc":"2395:7:75","nodeType":"YulFunctionCall","src":"2395:7:75"}],"functionName":{"name":"add","nativeSrc":"2360:3:75","nodeType":"YulIdentifier","src":"2360:3:75"},"nativeSrc":"2360:43:75","nodeType":"YulFunctionCall","src":"2360:43:75"}],"functionName":{"name":"slt","nativeSrc":"2336:3:75","nodeType":"YulIdentifier","src":"2336:3:75"},"nativeSrc":"2336:68:75","nodeType":"YulFunctionCall","src":"2336:68:75"}],"functionName":{"name":"iszero","nativeSrc":"2329:6:75","nodeType":"YulIdentifier","src":"2329:6:75"},"nativeSrc":"2329:76:75","nodeType":"YulFunctionCall","src":"2329:76:75"},"nativeSrc":"2326:96:75","nodeType":"YulIf","src":"2326:96:75"},{"nativeSrc":"2431:47:75","nodeType":"YulVariableDeclaration","src":"2431:47:75","value":{"arguments":[{"name":"base_ref","nativeSrc":"2449:8:75","nodeType":"YulIdentifier","src":"2449:8:75"},{"name":"rel_offset_of_tail","nativeSrc":"2459:18:75","nodeType":"YulIdentifier","src":"2459:18:75"}],"functionName":{"name":"add","nativeSrc":"2445:3:75","nodeType":"YulIdentifier","src":"2445:3:75"},"nativeSrc":"2445:33:75","nodeType":"YulFunctionCall","src":"2445:33:75"},"variables":[{"name":"addr_1","nativeSrc":"2435:6:75","nodeType":"YulTypedName","src":"2435:6:75","type":""}]},{"nativeSrc":"2487:30:75","nodeType":"YulAssignment","src":"2487:30:75","value":{"arguments":[{"name":"addr_1","nativeSrc":"2510:6:75","nodeType":"YulIdentifier","src":"2510:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"2497:12:75","nodeType":"YulIdentifier","src":"2497:12:75"},"nativeSrc":"2497:20:75","nodeType":"YulFunctionCall","src":"2497:20:75"},"variableNames":[{"name":"length","nativeSrc":"2487:6:75","nodeType":"YulIdentifier","src":"2487:6:75"}]},{"body":{"nativeSrc":"2560:16:75","nodeType":"YulBlock","src":"2560:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2569:1:75","nodeType":"YulLiteral","src":"2569:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2572:1:75","nodeType":"YulLiteral","src":"2572:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2562:6:75","nodeType":"YulIdentifier","src":"2562:6:75"},"nativeSrc":"2562:12:75","nodeType":"YulFunctionCall","src":"2562:12:75"},"nativeSrc":"2562:12:75","nodeType":"YulExpressionStatement","src":"2562:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2532:6:75","nodeType":"YulIdentifier","src":"2532:6:75"},{"kind":"number","nativeSrc":"2540:18:75","nodeType":"YulLiteral","src":"2540:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2529:2:75","nodeType":"YulIdentifier","src":"2529:2:75"},"nativeSrc":"2529:30:75","nodeType":"YulFunctionCall","src":"2529:30:75"},"nativeSrc":"2526:50:75","nodeType":"YulIf","src":"2526:50:75"},{"nativeSrc":"2585:25:75","nodeType":"YulAssignment","src":"2585:25:75","value":{"arguments":[{"name":"addr_1","nativeSrc":"2597:6:75","nodeType":"YulIdentifier","src":"2597:6:75"},{"kind":"number","nativeSrc":"2605:4:75","nodeType":"YulLiteral","src":"2605:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2593:3:75","nodeType":"YulIdentifier","src":"2593:3:75"},"nativeSrc":"2593:17:75","nodeType":"YulFunctionCall","src":"2593:17:75"},"variableNames":[{"name":"addr","nativeSrc":"2585:4:75","nodeType":"YulIdentifier","src":"2585:4:75"}]},{"body":{"nativeSrc":"2661:16:75","nodeType":"YulBlock","src":"2661:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2670:1:75","nodeType":"YulLiteral","src":"2670:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2673:1:75","nodeType":"YulLiteral","src":"2673:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2663:6:75","nodeType":"YulIdentifier","src":"2663:6:75"},"nativeSrc":"2663:12:75","nodeType":"YulFunctionCall","src":"2663:12:75"},"nativeSrc":"2663:12:75","nodeType":"YulExpressionStatement","src":"2663:12:75"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"2626:4:75","nodeType":"YulIdentifier","src":"2626:4:75"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"2636:12:75","nodeType":"YulIdentifier","src":"2636:12:75"},"nativeSrc":"2636:14:75","nodeType":"YulFunctionCall","src":"2636:14:75"},{"name":"length","nativeSrc":"2652:6:75","nodeType":"YulIdentifier","src":"2652:6:75"}],"functionName":{"name":"sub","nativeSrc":"2632:3:75","nodeType":"YulIdentifier","src":"2632:3:75"},"nativeSrc":"2632:27:75","nodeType":"YulFunctionCall","src":"2632:27:75"}],"functionName":{"name":"sgt","nativeSrc":"2622:3:75","nodeType":"YulIdentifier","src":"2622:3:75"},"nativeSrc":"2622:38:75","nodeType":"YulFunctionCall","src":"2622:38:75"},"nativeSrc":"2619:58:75","nodeType":"YulIf","src":"2619:58:75"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"2162:521:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"2213:8:75","nodeType":"YulTypedName","src":"2213:8:75","type":""},{"name":"ptr_to_tail","nativeSrc":"2223:11:75","nodeType":"YulTypedName","src":"2223:11:75","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"2239:4:75","nodeType":"YulTypedName","src":"2239:4:75","type":""},{"name":"length","nativeSrc":"2245:6:75","nodeType":"YulTypedName","src":"2245:6:75","type":""}],"src":"2162:521:75"},{"body":{"nativeSrc":"2794:711:75","nodeType":"YulBlock","src":"2794:711:75","statements":[{"nativeSrc":"2804:42:75","nodeType":"YulVariableDeclaration","src":"2804:42:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2822:7:75","nodeType":"YulIdentifier","src":"2822:7:75"},{"name":"headStart","nativeSrc":"2831:9:75","nodeType":"YulIdentifier","src":"2831:9:75"}],"functionName":{"name":"sub","nativeSrc":"2818:3:75","nodeType":"YulIdentifier","src":"2818:3:75"},"nativeSrc":"2818:23:75","nodeType":"YulFunctionCall","src":"2818:23:75"},{"kind":"number","nativeSrc":"2843:2:75","nodeType":"YulLiteral","src":"2843:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2814:3:75","nodeType":"YulIdentifier","src":"2814:3:75"},"nativeSrc":"2814:32:75","nodeType":"YulFunctionCall","src":"2814:32:75"},"variables":[{"name":"_1","nativeSrc":"2808:2:75","nodeType":"YulTypedName","src":"2808:2:75","type":""}]},{"body":{"nativeSrc":"2861:16:75","nodeType":"YulBlock","src":"2861:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2870:1:75","nodeType":"YulLiteral","src":"2870:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2873:1:75","nodeType":"YulLiteral","src":"2873:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2863:6:75","nodeType":"YulIdentifier","src":"2863:6:75"},"nativeSrc":"2863:12:75","nodeType":"YulFunctionCall","src":"2863:12:75"},"nativeSrc":"2863:12:75","nodeType":"YulExpressionStatement","src":"2863:12:75"}]},"condition":{"name":"_1","nativeSrc":"2858:2:75","nodeType":"YulIdentifier","src":"2858:2:75"},"nativeSrc":"2855:22:75","nodeType":"YulIf","src":"2855:22:75"},{"nativeSrc":"2886:7:75","nodeType":"YulAssignment","src":"2886:7:75","value":{"kind":"number","nativeSrc":"2892:1:75","nodeType":"YulLiteral","src":"2892:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"2886:2:75","nodeType":"YulIdentifier","src":"2886:2:75"}]},{"nativeSrc":"2902:23:75","nodeType":"YulVariableDeclaration","src":"2902:23:75","value":{"arguments":[{"kind":"number","nativeSrc":"2922:2:75","nodeType":"YulLiteral","src":"2922:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2916:5:75","nodeType":"YulIdentifier","src":"2916:5:75"},"nativeSrc":"2916:9:75","nodeType":"YulFunctionCall","src":"2916:9:75"},"variables":[{"name":"memPtr","nativeSrc":"2906:6:75","nodeType":"YulTypedName","src":"2906:6:75","type":""}]},{"nativeSrc":"2934:33:75","nodeType":"YulVariableDeclaration","src":"2934:33:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"2956:6:75","nodeType":"YulIdentifier","src":"2956:6:75"},{"kind":"number","nativeSrc":"2964:2:75","nodeType":"YulLiteral","src":"2964:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2952:3:75","nodeType":"YulIdentifier","src":"2952:3:75"},"nativeSrc":"2952:15:75","nodeType":"YulFunctionCall","src":"2952:15:75"},"variables":[{"name":"newFreePtr","nativeSrc":"2938:10:75","nodeType":"YulTypedName","src":"2938:10:75","type":""}]},{"body":{"nativeSrc":"3050:111:75","nodeType":"YulBlock","src":"3050:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3071:1:75","nodeType":"YulLiteral","src":"3071:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3078:3:75","nodeType":"YulLiteral","src":"3078:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3083:10:75","nodeType":"YulLiteral","src":"3083:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3074:3:75","nodeType":"YulIdentifier","src":"3074:3:75"},"nativeSrc":"3074:20:75","nodeType":"YulFunctionCall","src":"3074:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3064:6:75","nodeType":"YulIdentifier","src":"3064:6:75"},"nativeSrc":"3064:31:75","nodeType":"YulFunctionCall","src":"3064:31:75"},"nativeSrc":"3064:31:75","nodeType":"YulExpressionStatement","src":"3064:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3115:1:75","nodeType":"YulLiteral","src":"3115:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3118:4:75","nodeType":"YulLiteral","src":"3118:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3108:6:75","nodeType":"YulIdentifier","src":"3108:6:75"},"nativeSrc":"3108:15:75","nodeType":"YulFunctionCall","src":"3108:15:75"},"nativeSrc":"3108:15:75","nodeType":"YulExpressionStatement","src":"3108:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3143:1:75","nodeType":"YulLiteral","src":"3143:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3146:4:75","nodeType":"YulLiteral","src":"3146:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3136:6:75","nodeType":"YulIdentifier","src":"3136:6:75"},"nativeSrc":"3136:15:75","nodeType":"YulFunctionCall","src":"3136:15:75"},"nativeSrc":"3136:15:75","nodeType":"YulExpressionStatement","src":"3136:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"2985:10:75","nodeType":"YulIdentifier","src":"2985:10:75"},{"kind":"number","nativeSrc":"2997:18:75","nodeType":"YulLiteral","src":"2997:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2982:2:75","nodeType":"YulIdentifier","src":"2982:2:75"},"nativeSrc":"2982:34:75","nodeType":"YulFunctionCall","src":"2982:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3021:10:75","nodeType":"YulIdentifier","src":"3021:10:75"},{"name":"memPtr","nativeSrc":"3033:6:75","nodeType":"YulIdentifier","src":"3033:6:75"}],"functionName":{"name":"lt","nativeSrc":"3018:2:75","nodeType":"YulIdentifier","src":"3018:2:75"},"nativeSrc":"3018:22:75","nodeType":"YulFunctionCall","src":"3018:22:75"}],"functionName":{"name":"or","nativeSrc":"2979:2:75","nodeType":"YulIdentifier","src":"2979:2:75"},"nativeSrc":"2979:62:75","nodeType":"YulFunctionCall","src":"2979:62:75"},"nativeSrc":"2976:185:75","nodeType":"YulIf","src":"2976:185:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3177:2:75","nodeType":"YulLiteral","src":"3177:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3181:10:75","nodeType":"YulIdentifier","src":"3181:10:75"}],"functionName":{"name":"mstore","nativeSrc":"3170:6:75","nodeType":"YulIdentifier","src":"3170:6:75"},"nativeSrc":"3170:22:75","nodeType":"YulFunctionCall","src":"3170:22:75"},"nativeSrc":"3170:22:75","nodeType":"YulExpressionStatement","src":"3170:22:75"},{"nativeSrc":"3201:36:75","nodeType":"YulVariableDeclaration","src":"3201:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3227:9:75","nodeType":"YulIdentifier","src":"3227:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3214:12:75","nodeType":"YulIdentifier","src":"3214:12:75"},"nativeSrc":"3214:23:75","nodeType":"YulFunctionCall","src":"3214:23:75"},"variables":[{"name":"value","nativeSrc":"3205:5:75","nodeType":"YulTypedName","src":"3205:5:75","type":""}]},{"body":{"nativeSrc":"3289:16:75","nodeType":"YulBlock","src":"3289:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3298:1:75","nodeType":"YulLiteral","src":"3298:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3301:1:75","nodeType":"YulLiteral","src":"3301:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3291:6:75","nodeType":"YulIdentifier","src":"3291:6:75"},"nativeSrc":"3291:12:75","nodeType":"YulFunctionCall","src":"3291:12:75"},"nativeSrc":"3291:12:75","nodeType":"YulExpressionStatement","src":"3291:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3259:5:75","nodeType":"YulIdentifier","src":"3259:5:75"},{"arguments":[{"name":"value","nativeSrc":"3270:5:75","nodeType":"YulIdentifier","src":"3270:5:75"},{"kind":"number","nativeSrc":"3277:8:75","nodeType":"YulLiteral","src":"3277:8:75","type":"","value":"0xffffff"}],"functionName":{"name":"and","nativeSrc":"3266:3:75","nodeType":"YulIdentifier","src":"3266:3:75"},"nativeSrc":"3266:20:75","nodeType":"YulFunctionCall","src":"3266:20:75"}],"functionName":{"name":"eq","nativeSrc":"3256:2:75","nodeType":"YulIdentifier","src":"3256:2:75"},"nativeSrc":"3256:31:75","nodeType":"YulFunctionCall","src":"3256:31:75"}],"functionName":{"name":"iszero","nativeSrc":"3249:6:75","nodeType":"YulIdentifier","src":"3249:6:75"},"nativeSrc":"3249:39:75","nodeType":"YulFunctionCall","src":"3249:39:75"},"nativeSrc":"3246:59:75","nodeType":"YulIf","src":"3246:59:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"3321:6:75","nodeType":"YulIdentifier","src":"3321:6:75"},{"name":"value","nativeSrc":"3329:5:75","nodeType":"YulIdentifier","src":"3329:5:75"}],"functionName":{"name":"mstore","nativeSrc":"3314:6:75","nodeType":"YulIdentifier","src":"3314:6:75"},"nativeSrc":"3314:21:75","nodeType":"YulFunctionCall","src":"3314:21:75"},"nativeSrc":"3314:21:75","nodeType":"YulExpressionStatement","src":"3314:21:75"},{"nativeSrc":"3344:47:75","nodeType":"YulVariableDeclaration","src":"3344:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3376:9:75","nodeType":"YulIdentifier","src":"3376:9:75"},{"kind":"number","nativeSrc":"3387:2:75","nodeType":"YulLiteral","src":"3387:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3372:3:75","nodeType":"YulIdentifier","src":"3372:3:75"},"nativeSrc":"3372:18:75","nodeType":"YulFunctionCall","src":"3372:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3359:12:75","nodeType":"YulIdentifier","src":"3359:12:75"},"nativeSrc":"3359:32:75","nodeType":"YulFunctionCall","src":"3359:32:75"},"variables":[{"name":"value_1","nativeSrc":"3348:7:75","nodeType":"YulTypedName","src":"3348:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"3425:7:75","nodeType":"YulIdentifier","src":"3425:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3400:24:75","nodeType":"YulIdentifier","src":"3400:24:75"},"nativeSrc":"3400:33:75","nodeType":"YulFunctionCall","src":"3400:33:75"},"nativeSrc":"3400:33:75","nodeType":"YulExpressionStatement","src":"3400:33:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"3453:6:75","nodeType":"YulIdentifier","src":"3453:6:75"},{"kind":"number","nativeSrc":"3461:2:75","nodeType":"YulLiteral","src":"3461:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3449:3:75","nodeType":"YulIdentifier","src":"3449:3:75"},"nativeSrc":"3449:15:75","nodeType":"YulFunctionCall","src":"3449:15:75"},{"name":"value_1","nativeSrc":"3466:7:75","nodeType":"YulIdentifier","src":"3466:7:75"}],"functionName":{"name":"mstore","nativeSrc":"3442:6:75","nodeType":"YulIdentifier","src":"3442:6:75"},"nativeSrc":"3442:32:75","nodeType":"YulFunctionCall","src":"3442:32:75"},"nativeSrc":"3442:32:75","nodeType":"YulExpressionStatement","src":"3442:32:75"},{"nativeSrc":"3483:16:75","nodeType":"YulAssignment","src":"3483:16:75","value":{"name":"memPtr","nativeSrc":"3493:6:75","nodeType":"YulIdentifier","src":"3493:6:75"},"variableNames":[{"name":"value0","nativeSrc":"3483:6:75","nodeType":"YulIdentifier","src":"3483:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_UniswapCustomParams_$630_memory_ptr","nativeSrc":"2688:817:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2760:9:75","nodeType":"YulTypedName","src":"2760:9:75","type":""},{"name":"dataEnd","nativeSrc":"2771:7:75","nodeType":"YulTypedName","src":"2771:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2783:6:75","nodeType":"YulTypedName","src":"2783:6:75","type":""}],"src":"2688:817:75"},{"body":{"nativeSrc":"3554:60:75","nodeType":"YulBlock","src":"3554:60:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"3571:3:75","nodeType":"YulIdentifier","src":"3571:3:75"},{"arguments":[{"name":"value","nativeSrc":"3580:5:75","nodeType":"YulIdentifier","src":"3580:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3595:3:75","nodeType":"YulLiteral","src":"3595:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3600:1:75","nodeType":"YulLiteral","src":"3600:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3591:3:75","nodeType":"YulIdentifier","src":"3591:3:75"},"nativeSrc":"3591:11:75","nodeType":"YulFunctionCall","src":"3591:11:75"},{"kind":"number","nativeSrc":"3604:1:75","nodeType":"YulLiteral","src":"3604:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3587:3:75","nodeType":"YulIdentifier","src":"3587:3:75"},"nativeSrc":"3587:19:75","nodeType":"YulFunctionCall","src":"3587:19:75"}],"functionName":{"name":"and","nativeSrc":"3576:3:75","nodeType":"YulIdentifier","src":"3576:3:75"},"nativeSrc":"3576:31:75","nodeType":"YulFunctionCall","src":"3576:31:75"}],"functionName":{"name":"mstore","nativeSrc":"3564:6:75","nodeType":"YulIdentifier","src":"3564:6:75"},"nativeSrc":"3564:44:75","nodeType":"YulFunctionCall","src":"3564:44:75"},"nativeSrc":"3564:44:75","nodeType":"YulExpressionStatement","src":"3564:44:75"}]},"name":"abi_encode_address","nativeSrc":"3510:104:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3538:5:75","nodeType":"YulTypedName","src":"3538:5:75","type":""},{"name":"pos","nativeSrc":"3545:3:75","nodeType":"YulTypedName","src":"3545:3:75","type":""}],"src":"3510:104:75"},{"body":{"nativeSrc":"3748:145:75","nodeType":"YulBlock","src":"3748:145:75","statements":[{"nativeSrc":"3758:26:75","nodeType":"YulAssignment","src":"3758:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3770:9:75","nodeType":"YulIdentifier","src":"3770:9:75"},{"kind":"number","nativeSrc":"3781:2:75","nodeType":"YulLiteral","src":"3781:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3766:3:75","nodeType":"YulIdentifier","src":"3766:3:75"},"nativeSrc":"3766:18:75","nodeType":"YulFunctionCall","src":"3766:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3758:4:75","nodeType":"YulIdentifier","src":"3758:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3800:9:75","nodeType":"YulIdentifier","src":"3800:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3815:6:75","nodeType":"YulIdentifier","src":"3815:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3831:3:75","nodeType":"YulLiteral","src":"3831:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3836:1:75","nodeType":"YulLiteral","src":"3836:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3827:3:75","nodeType":"YulIdentifier","src":"3827:3:75"},"nativeSrc":"3827:11:75","nodeType":"YulFunctionCall","src":"3827:11:75"},{"kind":"number","nativeSrc":"3840:1:75","nodeType":"YulLiteral","src":"3840:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3823:3:75","nodeType":"YulIdentifier","src":"3823:3:75"},"nativeSrc":"3823:19:75","nodeType":"YulFunctionCall","src":"3823:19:75"}],"functionName":{"name":"and","nativeSrc":"3811:3:75","nodeType":"YulIdentifier","src":"3811:3:75"},"nativeSrc":"3811:32:75","nodeType":"YulFunctionCall","src":"3811:32:75"}],"functionName":{"name":"mstore","nativeSrc":"3793:6:75","nodeType":"YulIdentifier","src":"3793:6:75"},"nativeSrc":"3793:51:75","nodeType":"YulFunctionCall","src":"3793:51:75"},"nativeSrc":"3793:51:75","nodeType":"YulExpressionStatement","src":"3793:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3864:9:75","nodeType":"YulIdentifier","src":"3864:9:75"},{"kind":"number","nativeSrc":"3875:2:75","nodeType":"YulLiteral","src":"3875:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3860:3:75","nodeType":"YulIdentifier","src":"3860:3:75"},"nativeSrc":"3860:18:75","nodeType":"YulFunctionCall","src":"3860:18:75"},{"name":"value1","nativeSrc":"3880:6:75","nodeType":"YulIdentifier","src":"3880:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3853:6:75","nodeType":"YulIdentifier","src":"3853:6:75"},"nativeSrc":"3853:34:75","nodeType":"YulFunctionCall","src":"3853:34:75"},"nativeSrc":"3853:34:75","nodeType":"YulExpressionStatement","src":"3853:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"3619:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3709:9:75","nodeType":"YulTypedName","src":"3709:9:75","type":""},{"name":"value1","nativeSrc":"3720:6:75","nodeType":"YulTypedName","src":"3720:6:75","type":""},{"name":"value0","nativeSrc":"3728:6:75","nodeType":"YulTypedName","src":"3728:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3739:4:75","nodeType":"YulTypedName","src":"3739:4:75","type":""}],"src":"3619:274:75"},{"body":{"nativeSrc":"3976:199:75","nodeType":"YulBlock","src":"3976:199:75","statements":[{"body":{"nativeSrc":"4022:16:75","nodeType":"YulBlock","src":"4022:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4031:1:75","nodeType":"YulLiteral","src":"4031:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4034:1:75","nodeType":"YulLiteral","src":"4034:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4024:6:75","nodeType":"YulIdentifier","src":"4024:6:75"},"nativeSrc":"4024:12:75","nodeType":"YulFunctionCall","src":"4024:12:75"},"nativeSrc":"4024:12:75","nodeType":"YulExpressionStatement","src":"4024:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3997:7:75","nodeType":"YulIdentifier","src":"3997:7:75"},{"name":"headStart","nativeSrc":"4006:9:75","nodeType":"YulIdentifier","src":"4006:9:75"}],"functionName":{"name":"sub","nativeSrc":"3993:3:75","nodeType":"YulIdentifier","src":"3993:3:75"},"nativeSrc":"3993:23:75","nodeType":"YulFunctionCall","src":"3993:23:75"},{"kind":"number","nativeSrc":"4018:2:75","nodeType":"YulLiteral","src":"4018:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3989:3:75","nodeType":"YulIdentifier","src":"3989:3:75"},"nativeSrc":"3989:32:75","nodeType":"YulFunctionCall","src":"3989:32:75"},"nativeSrc":"3986:52:75","nodeType":"YulIf","src":"3986:52:75"},{"nativeSrc":"4047:29:75","nodeType":"YulVariableDeclaration","src":"4047:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4066:9:75","nodeType":"YulIdentifier","src":"4066:9:75"}],"functionName":{"name":"mload","nativeSrc":"4060:5:75","nodeType":"YulIdentifier","src":"4060:5:75"},"nativeSrc":"4060:16:75","nodeType":"YulFunctionCall","src":"4060:16:75"},"variables":[{"name":"value","nativeSrc":"4051:5:75","nodeType":"YulTypedName","src":"4051:5:75","type":""}]},{"body":{"nativeSrc":"4129:16:75","nodeType":"YulBlock","src":"4129:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4138:1:75","nodeType":"YulLiteral","src":"4138:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4141:1:75","nodeType":"YulLiteral","src":"4141:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4131:6:75","nodeType":"YulIdentifier","src":"4131:6:75"},"nativeSrc":"4131:12:75","nodeType":"YulFunctionCall","src":"4131:12:75"},"nativeSrc":"4131:12:75","nodeType":"YulExpressionStatement","src":"4131:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4098:5:75","nodeType":"YulIdentifier","src":"4098:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4119:5:75","nodeType":"YulIdentifier","src":"4119:5:75"}],"functionName":{"name":"iszero","nativeSrc":"4112:6:75","nodeType":"YulIdentifier","src":"4112:6:75"},"nativeSrc":"4112:13:75","nodeType":"YulFunctionCall","src":"4112:13:75"}],"functionName":{"name":"iszero","nativeSrc":"4105:6:75","nodeType":"YulIdentifier","src":"4105:6:75"},"nativeSrc":"4105:21:75","nodeType":"YulFunctionCall","src":"4105:21:75"}],"functionName":{"name":"eq","nativeSrc":"4095:2:75","nodeType":"YulIdentifier","src":"4095:2:75"},"nativeSrc":"4095:32:75","nodeType":"YulFunctionCall","src":"4095:32:75"}],"functionName":{"name":"iszero","nativeSrc":"4088:6:75","nodeType":"YulIdentifier","src":"4088:6:75"},"nativeSrc":"4088:40:75","nodeType":"YulFunctionCall","src":"4088:40:75"},"nativeSrc":"4085:60:75","nodeType":"YulIf","src":"4085:60:75"},{"nativeSrc":"4154:15:75","nodeType":"YulAssignment","src":"4154:15:75","value":{"name":"value","nativeSrc":"4164:5:75","nodeType":"YulIdentifier","src":"4164:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4154:6:75","nodeType":"YulIdentifier","src":"4154:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"3898:277:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3942:9:75","nodeType":"YulTypedName","src":"3942:9:75","type":""},{"name":"dataEnd","nativeSrc":"3953:7:75","nodeType":"YulTypedName","src":"3953:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3965:6:75","nodeType":"YulTypedName","src":"3965:6:75","type":""}],"src":"3898:277:75"},{"body":{"nativeSrc":"4247:610:75","nodeType":"YulBlock","src":"4247:610:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4264:3:75","nodeType":"YulIdentifier","src":"4264:3:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4279:5:75","nodeType":"YulIdentifier","src":"4279:5:75"}],"functionName":{"name":"mload","nativeSrc":"4273:5:75","nodeType":"YulIdentifier","src":"4273:5:75"},"nativeSrc":"4273:12:75","nodeType":"YulFunctionCall","src":"4273:12:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4295:3:75","nodeType":"YulLiteral","src":"4295:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4300:1:75","nodeType":"YulLiteral","src":"4300:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4291:3:75","nodeType":"YulIdentifier","src":"4291:3:75"},"nativeSrc":"4291:11:75","nodeType":"YulFunctionCall","src":"4291:11:75"},{"kind":"number","nativeSrc":"4304:1:75","nodeType":"YulLiteral","src":"4304:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4287:3:75","nodeType":"YulIdentifier","src":"4287:3:75"},"nativeSrc":"4287:19:75","nodeType":"YulFunctionCall","src":"4287:19:75"}],"functionName":{"name":"and","nativeSrc":"4269:3:75","nodeType":"YulIdentifier","src":"4269:3:75"},"nativeSrc":"4269:38:75","nodeType":"YulFunctionCall","src":"4269:38:75"}],"functionName":{"name":"mstore","nativeSrc":"4257:6:75","nodeType":"YulIdentifier","src":"4257:6:75"},"nativeSrc":"4257:51:75","nodeType":"YulFunctionCall","src":"4257:51:75"},"nativeSrc":"4257:51:75","nodeType":"YulExpressionStatement","src":"4257:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4328:3:75","nodeType":"YulIdentifier","src":"4328:3:75"},{"kind":"number","nativeSrc":"4333:4:75","nodeType":"YulLiteral","src":"4333:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4324:3:75","nodeType":"YulIdentifier","src":"4324:3:75"},"nativeSrc":"4324:14:75","nodeType":"YulFunctionCall","src":"4324:14:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4354:5:75","nodeType":"YulIdentifier","src":"4354:5:75"},{"kind":"number","nativeSrc":"4361:4:75","nodeType":"YulLiteral","src":"4361:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4350:3:75","nodeType":"YulIdentifier","src":"4350:3:75"},"nativeSrc":"4350:16:75","nodeType":"YulFunctionCall","src":"4350:16:75"}],"functionName":{"name":"mload","nativeSrc":"4344:5:75","nodeType":"YulIdentifier","src":"4344:5:75"},"nativeSrc":"4344:23:75","nodeType":"YulFunctionCall","src":"4344:23:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4377:3:75","nodeType":"YulLiteral","src":"4377:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4382:1:75","nodeType":"YulLiteral","src":"4382:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4373:3:75","nodeType":"YulIdentifier","src":"4373:3:75"},"nativeSrc":"4373:11:75","nodeType":"YulFunctionCall","src":"4373:11:75"},{"kind":"number","nativeSrc":"4386:1:75","nodeType":"YulLiteral","src":"4386:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4369:3:75","nodeType":"YulIdentifier","src":"4369:3:75"},"nativeSrc":"4369:19:75","nodeType":"YulFunctionCall","src":"4369:19:75"}],"functionName":{"name":"and","nativeSrc":"4340:3:75","nodeType":"YulIdentifier","src":"4340:3:75"},"nativeSrc":"4340:49:75","nodeType":"YulFunctionCall","src":"4340:49:75"}],"functionName":{"name":"mstore","nativeSrc":"4317:6:75","nodeType":"YulIdentifier","src":"4317:6:75"},"nativeSrc":"4317:73:75","nodeType":"YulFunctionCall","src":"4317:73:75"},"nativeSrc":"4317:73:75","nodeType":"YulExpressionStatement","src":"4317:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4410:3:75","nodeType":"YulIdentifier","src":"4410:3:75"},{"kind":"number","nativeSrc":"4415:4:75","nodeType":"YulLiteral","src":"4415:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4406:3:75","nodeType":"YulIdentifier","src":"4406:3:75"},"nativeSrc":"4406:14:75","nodeType":"YulFunctionCall","src":"4406:14:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4436:5:75","nodeType":"YulIdentifier","src":"4436:5:75"},{"kind":"number","nativeSrc":"4443:4:75","nodeType":"YulLiteral","src":"4443:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4432:3:75","nodeType":"YulIdentifier","src":"4432:3:75"},"nativeSrc":"4432:16:75","nodeType":"YulFunctionCall","src":"4432:16:75"}],"functionName":{"name":"mload","nativeSrc":"4426:5:75","nodeType":"YulIdentifier","src":"4426:5:75"},"nativeSrc":"4426:23:75","nodeType":"YulFunctionCall","src":"4426:23:75"},{"kind":"number","nativeSrc":"4451:8:75","nodeType":"YulLiteral","src":"4451:8:75","type":"","value":"0xffffff"}],"functionName":{"name":"and","nativeSrc":"4422:3:75","nodeType":"YulIdentifier","src":"4422:3:75"},"nativeSrc":"4422:38:75","nodeType":"YulFunctionCall","src":"4422:38:75"}],"functionName":{"name":"mstore","nativeSrc":"4399:6:75","nodeType":"YulIdentifier","src":"4399:6:75"},"nativeSrc":"4399:62:75","nodeType":"YulFunctionCall","src":"4399:62:75"},"nativeSrc":"4399:62:75","nodeType":"YulExpressionStatement","src":"4399:62:75"},{"nativeSrc":"4470:43:75","nodeType":"YulVariableDeclaration","src":"4470:43:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4500:5:75","nodeType":"YulIdentifier","src":"4500:5:75"},{"kind":"number","nativeSrc":"4507:4:75","nodeType":"YulLiteral","src":"4507:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4496:3:75","nodeType":"YulIdentifier","src":"4496:3:75"},"nativeSrc":"4496:16:75","nodeType":"YulFunctionCall","src":"4496:16:75"}],"functionName":{"name":"mload","nativeSrc":"4490:5:75","nodeType":"YulIdentifier","src":"4490:5:75"},"nativeSrc":"4490:23:75","nodeType":"YulFunctionCall","src":"4490:23:75"},"variables":[{"name":"memberValue0","nativeSrc":"4474:12:75","nodeType":"YulTypedName","src":"4474:12:75","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"4541:12:75","nodeType":"YulIdentifier","src":"4541:12:75"},{"arguments":[{"name":"pos","nativeSrc":"4559:3:75","nodeType":"YulIdentifier","src":"4559:3:75"},{"kind":"number","nativeSrc":"4564:4:75","nodeType":"YulLiteral","src":"4564:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4555:3:75","nodeType":"YulIdentifier","src":"4555:3:75"},"nativeSrc":"4555:14:75","nodeType":"YulFunctionCall","src":"4555:14:75"}],"functionName":{"name":"abi_encode_address","nativeSrc":"4522:18:75","nodeType":"YulIdentifier","src":"4522:18:75"},"nativeSrc":"4522:48:75","nodeType":"YulFunctionCall","src":"4522:48:75"},"nativeSrc":"4522:48:75","nodeType":"YulExpressionStatement","src":"4522:48:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4590:3:75","nodeType":"YulIdentifier","src":"4590:3:75"},{"kind":"number","nativeSrc":"4595:4:75","nodeType":"YulLiteral","src":"4595:4:75","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"4586:3:75","nodeType":"YulIdentifier","src":"4586:3:75"},"nativeSrc":"4586:14:75","nodeType":"YulFunctionCall","src":"4586:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4612:5:75","nodeType":"YulIdentifier","src":"4612:5:75"},{"kind":"number","nativeSrc":"4619:4:75","nodeType":"YulLiteral","src":"4619:4:75","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"4608:3:75","nodeType":"YulIdentifier","src":"4608:3:75"},"nativeSrc":"4608:16:75","nodeType":"YulFunctionCall","src":"4608:16:75"}],"functionName":{"name":"mload","nativeSrc":"4602:5:75","nodeType":"YulIdentifier","src":"4602:5:75"},"nativeSrc":"4602:23:75","nodeType":"YulFunctionCall","src":"4602:23:75"}],"functionName":{"name":"mstore","nativeSrc":"4579:6:75","nodeType":"YulIdentifier","src":"4579:6:75"},"nativeSrc":"4579:47:75","nodeType":"YulFunctionCall","src":"4579:47:75"},"nativeSrc":"4579:47:75","nodeType":"YulExpressionStatement","src":"4579:47:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4646:3:75","nodeType":"YulIdentifier","src":"4646:3:75"},{"kind":"number","nativeSrc":"4651:4:75","nodeType":"YulLiteral","src":"4651:4:75","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"4642:3:75","nodeType":"YulIdentifier","src":"4642:3:75"},"nativeSrc":"4642:14:75","nodeType":"YulFunctionCall","src":"4642:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4668:5:75","nodeType":"YulIdentifier","src":"4668:5:75"},{"kind":"number","nativeSrc":"4675:4:75","nodeType":"YulLiteral","src":"4675:4:75","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"4664:3:75","nodeType":"YulIdentifier","src":"4664:3:75"},"nativeSrc":"4664:16:75","nodeType":"YulFunctionCall","src":"4664:16:75"}],"functionName":{"name":"mload","nativeSrc":"4658:5:75","nodeType":"YulIdentifier","src":"4658:5:75"},"nativeSrc":"4658:23:75","nodeType":"YulFunctionCall","src":"4658:23:75"}],"functionName":{"name":"mstore","nativeSrc":"4635:6:75","nodeType":"YulIdentifier","src":"4635:6:75"},"nativeSrc":"4635:47:75","nodeType":"YulFunctionCall","src":"4635:47:75"},"nativeSrc":"4635:47:75","nodeType":"YulExpressionStatement","src":"4635:47:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4702:3:75","nodeType":"YulIdentifier","src":"4702:3:75"},{"kind":"number","nativeSrc":"4707:4:75","nodeType":"YulLiteral","src":"4707:4:75","type":"","value":"0xc0"}],"functionName":{"name":"add","nativeSrc":"4698:3:75","nodeType":"YulIdentifier","src":"4698:3:75"},"nativeSrc":"4698:14:75","nodeType":"YulFunctionCall","src":"4698:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4724:5:75","nodeType":"YulIdentifier","src":"4724:5:75"},{"kind":"number","nativeSrc":"4731:4:75","nodeType":"YulLiteral","src":"4731:4:75","type":"","value":"0xc0"}],"functionName":{"name":"add","nativeSrc":"4720:3:75","nodeType":"YulIdentifier","src":"4720:3:75"},"nativeSrc":"4720:16:75","nodeType":"YulFunctionCall","src":"4720:16:75"}],"functionName":{"name":"mload","nativeSrc":"4714:5:75","nodeType":"YulIdentifier","src":"4714:5:75"},"nativeSrc":"4714:23:75","nodeType":"YulFunctionCall","src":"4714:23:75"}],"functionName":{"name":"mstore","nativeSrc":"4691:6:75","nodeType":"YulIdentifier","src":"4691:6:75"},"nativeSrc":"4691:47:75","nodeType":"YulFunctionCall","src":"4691:47:75"},"nativeSrc":"4691:47:75","nodeType":"YulExpressionStatement","src":"4691:47:75"},{"nativeSrc":"4747:45:75","nodeType":"YulVariableDeclaration","src":"4747:45:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4779:5:75","nodeType":"YulIdentifier","src":"4779:5:75"},{"kind":"number","nativeSrc":"4786:4:75","nodeType":"YulLiteral","src":"4786:4:75","type":"","value":"0xe0"}],"functionName":{"name":"add","nativeSrc":"4775:3:75","nodeType":"YulIdentifier","src":"4775:3:75"},"nativeSrc":"4775:16:75","nodeType":"YulFunctionCall","src":"4775:16:75"}],"functionName":{"name":"mload","nativeSrc":"4769:5:75","nodeType":"YulIdentifier","src":"4769:5:75"},"nativeSrc":"4769:23:75","nodeType":"YulFunctionCall","src":"4769:23:75"},"variables":[{"name":"memberValue0_1","nativeSrc":"4751:14:75","nodeType":"YulTypedName","src":"4751:14:75","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nativeSrc":"4820:14:75","nodeType":"YulIdentifier","src":"4820:14:75"},{"arguments":[{"name":"pos","nativeSrc":"4840:3:75","nodeType":"YulIdentifier","src":"4840:3:75"},{"kind":"number","nativeSrc":"4845:4:75","nodeType":"YulLiteral","src":"4845:4:75","type":"","value":"0xe0"}],"functionName":{"name":"add","nativeSrc":"4836:3:75","nodeType":"YulIdentifier","src":"4836:3:75"},"nativeSrc":"4836:14:75","nodeType":"YulFunctionCall","src":"4836:14:75"}],"functionName":{"name":"abi_encode_address","nativeSrc":"4801:18:75","nodeType":"YulIdentifier","src":"4801:18:75"},"nativeSrc":"4801:50:75","nodeType":"YulFunctionCall","src":"4801:50:75"},"nativeSrc":"4801:50:75","nodeType":"YulExpressionStatement","src":"4801:50:75"}]},"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"4180:677:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4231:5:75","nodeType":"YulTypedName","src":"4231:5:75","type":""},{"name":"pos","nativeSrc":"4238:3:75","nodeType":"YulTypedName","src":"4238:3:75","type":""}],"src":"4180:677:75"},{"body":{"nativeSrc":"5047:112:75","nodeType":"YulBlock","src":"5047:112:75","statements":[{"nativeSrc":"5057:27:75","nodeType":"YulAssignment","src":"5057:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5069:9:75","nodeType":"YulIdentifier","src":"5069:9:75"},{"kind":"number","nativeSrc":"5080:3:75","nodeType":"YulLiteral","src":"5080:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"5065:3:75","nodeType":"YulIdentifier","src":"5065:3:75"},"nativeSrc":"5065:19:75","nodeType":"YulFunctionCall","src":"5065:19:75"},"variableNames":[{"name":"tail","nativeSrc":"5057:4:75","nodeType":"YulIdentifier","src":"5057:4:75"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"5135:6:75","nodeType":"YulIdentifier","src":"5135:6:75"},{"name":"headStart","nativeSrc":"5143:9:75","nodeType":"YulIdentifier","src":"5143:9:75"}],"functionName":{"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"5093:41:75","nodeType":"YulIdentifier","src":"5093:41:75"},"nativeSrc":"5093:60:75","nodeType":"YulFunctionCall","src":"5093:60:75"},"nativeSrc":"5093:60:75","nodeType":"YulExpressionStatement","src":"5093:60:75"}]},"name":"abi_encode_tuple_t_struct$_ExactOutputSingleParams_$13432_memory_ptr__to_t_struct$_ExactOutputSingleParams_$13432_memory_ptr__fromStack_reversed","nativeSrc":"4862:297:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5016:9:75","nodeType":"YulTypedName","src":"5016:9:75","type":""},{"name":"value0","nativeSrc":"5027:6:75","nodeType":"YulTypedName","src":"5027:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5038:4:75","nodeType":"YulTypedName","src":"5038:4:75","type":""}],"src":"4862:297:75"},{"body":{"nativeSrc":"5245:103:75","nodeType":"YulBlock","src":"5245:103:75","statements":[{"body":{"nativeSrc":"5291:16:75","nodeType":"YulBlock","src":"5291:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5300:1:75","nodeType":"YulLiteral","src":"5300:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5303:1:75","nodeType":"YulLiteral","src":"5303:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5293:6:75","nodeType":"YulIdentifier","src":"5293:6:75"},"nativeSrc":"5293:12:75","nodeType":"YulFunctionCall","src":"5293:12:75"},"nativeSrc":"5293:12:75","nodeType":"YulExpressionStatement","src":"5293:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5266:7:75","nodeType":"YulIdentifier","src":"5266:7:75"},{"name":"headStart","nativeSrc":"5275:9:75","nodeType":"YulIdentifier","src":"5275:9:75"}],"functionName":{"name":"sub","nativeSrc":"5262:3:75","nodeType":"YulIdentifier","src":"5262:3:75"},"nativeSrc":"5262:23:75","nodeType":"YulFunctionCall","src":"5262:23:75"},{"kind":"number","nativeSrc":"5287:2:75","nodeType":"YulLiteral","src":"5287:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5258:3:75","nodeType":"YulIdentifier","src":"5258:3:75"},"nativeSrc":"5258:32:75","nodeType":"YulFunctionCall","src":"5258:32:75"},"nativeSrc":"5255:52:75","nodeType":"YulIf","src":"5255:52:75"},{"nativeSrc":"5316:26:75","nodeType":"YulAssignment","src":"5316:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5332:9:75","nodeType":"YulIdentifier","src":"5332:9:75"}],"functionName":{"name":"mload","nativeSrc":"5326:5:75","nodeType":"YulIdentifier","src":"5326:5:75"},"nativeSrc":"5326:16:75","nodeType":"YulFunctionCall","src":"5326:16:75"},"variableNames":[{"name":"value0","nativeSrc":"5316:6:75","nodeType":"YulIdentifier","src":"5316:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5164:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5211:9:75","nodeType":"YulTypedName","src":"5211:9:75","type":""},{"name":"dataEnd","nativeSrc":"5222:7:75","nodeType":"YulTypedName","src":"5222:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5234:6:75","nodeType":"YulTypedName","src":"5234:6:75","type":""}],"src":"5164:184:75"},{"body":{"nativeSrc":"5490:145:75","nodeType":"YulBlock","src":"5490:145:75","statements":[{"nativeSrc":"5500:26:75","nodeType":"YulAssignment","src":"5500:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5512:9:75","nodeType":"YulIdentifier","src":"5512:9:75"},{"kind":"number","nativeSrc":"5523:2:75","nodeType":"YulLiteral","src":"5523:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5508:3:75","nodeType":"YulIdentifier","src":"5508:3:75"},"nativeSrc":"5508:18:75","nodeType":"YulFunctionCall","src":"5508:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5500:4:75","nodeType":"YulIdentifier","src":"5500:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5542:9:75","nodeType":"YulIdentifier","src":"5542:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5557:6:75","nodeType":"YulIdentifier","src":"5557:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5573:3:75","nodeType":"YulLiteral","src":"5573:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5578:1:75","nodeType":"YulLiteral","src":"5578:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5569:3:75","nodeType":"YulIdentifier","src":"5569:3:75"},"nativeSrc":"5569:11:75","nodeType":"YulFunctionCall","src":"5569:11:75"},{"kind":"number","nativeSrc":"5582:1:75","nodeType":"YulLiteral","src":"5582:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5565:3:75","nodeType":"YulIdentifier","src":"5565:3:75"},"nativeSrc":"5565:19:75","nodeType":"YulFunctionCall","src":"5565:19:75"}],"functionName":{"name":"and","nativeSrc":"5553:3:75","nodeType":"YulIdentifier","src":"5553:3:75"},"nativeSrc":"5553:32:75","nodeType":"YulFunctionCall","src":"5553:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5535:6:75","nodeType":"YulIdentifier","src":"5535:6:75"},"nativeSrc":"5535:51:75","nodeType":"YulFunctionCall","src":"5535:51:75"},"nativeSrc":"5535:51:75","nodeType":"YulExpressionStatement","src":"5535:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5606:9:75","nodeType":"YulIdentifier","src":"5606:9:75"},{"kind":"number","nativeSrc":"5617:2:75","nodeType":"YulLiteral","src":"5617:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5602:3:75","nodeType":"YulIdentifier","src":"5602:3:75"},"nativeSrc":"5602:18:75","nodeType":"YulFunctionCall","src":"5602:18:75"},{"name":"value1","nativeSrc":"5622:6:75","nodeType":"YulIdentifier","src":"5622:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5595:6:75","nodeType":"YulIdentifier","src":"5595:6:75"},"nativeSrc":"5595:34:75","nodeType":"YulFunctionCall","src":"5595:34:75"},"nativeSrc":"5595:34:75","nodeType":"YulExpressionStatement","src":"5595:34:75"}]},"name":"abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"5353:282:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5451:9:75","nodeType":"YulTypedName","src":"5451:9:75","type":""},{"name":"value1","nativeSrc":"5462:6:75","nodeType":"YulTypedName","src":"5462:6:75","type":""},{"name":"value0","nativeSrc":"5470:6:75","nodeType":"YulTypedName","src":"5470:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5481:4:75","nodeType":"YulTypedName","src":"5481:4:75","type":""}],"src":"5353:282:75"},{"body":{"nativeSrc":"5769:119:75","nodeType":"YulBlock","src":"5769:119:75","statements":[{"nativeSrc":"5779:26:75","nodeType":"YulAssignment","src":"5779:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5791:9:75","nodeType":"YulIdentifier","src":"5791:9:75"},{"kind":"number","nativeSrc":"5802:2:75","nodeType":"YulLiteral","src":"5802:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5787:3:75","nodeType":"YulIdentifier","src":"5787:3:75"},"nativeSrc":"5787:18:75","nodeType":"YulFunctionCall","src":"5787:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5779:4:75","nodeType":"YulIdentifier","src":"5779:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5821:9:75","nodeType":"YulIdentifier","src":"5821:9:75"},{"name":"value0","nativeSrc":"5832:6:75","nodeType":"YulIdentifier","src":"5832:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5814:6:75","nodeType":"YulIdentifier","src":"5814:6:75"},"nativeSrc":"5814:25:75","nodeType":"YulFunctionCall","src":"5814:25:75"},"nativeSrc":"5814:25:75","nodeType":"YulExpressionStatement","src":"5814:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5859:9:75","nodeType":"YulIdentifier","src":"5859:9:75"},{"kind":"number","nativeSrc":"5870:2:75","nodeType":"YulLiteral","src":"5870:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5855:3:75","nodeType":"YulIdentifier","src":"5855:3:75"},"nativeSrc":"5855:18:75","nodeType":"YulFunctionCall","src":"5855:18:75"},{"name":"value1","nativeSrc":"5875:6:75","nodeType":"YulIdentifier","src":"5875:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5848:6:75","nodeType":"YulIdentifier","src":"5848:6:75"},"nativeSrc":"5848:34:75","nodeType":"YulFunctionCall","src":"5848:34:75"},"nativeSrc":"5848:34:75","nodeType":"YulExpressionStatement","src":"5848:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"5640:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5730:9:75","nodeType":"YulTypedName","src":"5730:9:75","type":""},{"name":"value1","nativeSrc":"5741:6:75","nodeType":"YulTypedName","src":"5741:6:75","type":""},{"name":"value0","nativeSrc":"5749:6:75","nodeType":"YulTypedName","src":"5749:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5760:4:75","nodeType":"YulTypedName","src":"5760:4:75","type":""}],"src":"5640:248:75"},{"body":{"nativeSrc":"5925:95:75","nodeType":"YulBlock","src":"5925:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5942:1:75","nodeType":"YulLiteral","src":"5942:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5949:3:75","nodeType":"YulLiteral","src":"5949:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"5954:10:75","nodeType":"YulLiteral","src":"5954:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5945:3:75","nodeType":"YulIdentifier","src":"5945:3:75"},"nativeSrc":"5945:20:75","nodeType":"YulFunctionCall","src":"5945:20:75"}],"functionName":{"name":"mstore","nativeSrc":"5935:6:75","nodeType":"YulIdentifier","src":"5935:6:75"},"nativeSrc":"5935:31:75","nodeType":"YulFunctionCall","src":"5935:31:75"},"nativeSrc":"5935:31:75","nodeType":"YulExpressionStatement","src":"5935:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5982:1:75","nodeType":"YulLiteral","src":"5982:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"5985:4:75","nodeType":"YulLiteral","src":"5985:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"5975:6:75","nodeType":"YulIdentifier","src":"5975:6:75"},"nativeSrc":"5975:15:75","nodeType":"YulFunctionCall","src":"5975:15:75"},"nativeSrc":"5975:15:75","nodeType":"YulExpressionStatement","src":"5975:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6006:1:75","nodeType":"YulLiteral","src":"6006:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6009:4:75","nodeType":"YulLiteral","src":"6009:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5999:6:75","nodeType":"YulIdentifier","src":"5999:6:75"},"nativeSrc":"5999:15:75","nodeType":"YulFunctionCall","src":"5999:15:75"},"nativeSrc":"5999:15:75","nodeType":"YulExpressionStatement","src":"5999:15:75"}]},"name":"panic_error_0x11","nativeSrc":"5893:127:75","nodeType":"YulFunctionDefinition","src":"5893:127:75"},{"body":{"nativeSrc":"6074:79:75","nodeType":"YulBlock","src":"6074:79:75","statements":[{"nativeSrc":"6084:17:75","nodeType":"YulAssignment","src":"6084:17:75","value":{"arguments":[{"name":"x","nativeSrc":"6096:1:75","nodeType":"YulIdentifier","src":"6096:1:75"},{"name":"y","nativeSrc":"6099:1:75","nodeType":"YulIdentifier","src":"6099:1:75"}],"functionName":{"name":"sub","nativeSrc":"6092:3:75","nodeType":"YulIdentifier","src":"6092:3:75"},"nativeSrc":"6092:9:75","nodeType":"YulFunctionCall","src":"6092:9:75"},"variableNames":[{"name":"diff","nativeSrc":"6084:4:75","nodeType":"YulIdentifier","src":"6084:4:75"}]},{"body":{"nativeSrc":"6125:22:75","nodeType":"YulBlock","src":"6125:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6127:16:75","nodeType":"YulIdentifier","src":"6127:16:75"},"nativeSrc":"6127:18:75","nodeType":"YulFunctionCall","src":"6127:18:75"},"nativeSrc":"6127:18:75","nodeType":"YulExpressionStatement","src":"6127:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"6116:4:75","nodeType":"YulIdentifier","src":"6116:4:75"},{"name":"x","nativeSrc":"6122:1:75","nodeType":"YulIdentifier","src":"6122:1:75"}],"functionName":{"name":"gt","nativeSrc":"6113:2:75","nodeType":"YulIdentifier","src":"6113:2:75"},"nativeSrc":"6113:11:75","nodeType":"YulFunctionCall","src":"6113:11:75"},"nativeSrc":"6110:37:75","nodeType":"YulIf","src":"6110:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"6025:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6056:1:75","nodeType":"YulTypedName","src":"6056:1:75","type":""},{"name":"y","nativeSrc":"6059:1:75","nodeType":"YulTypedName","src":"6059:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"6065:4:75","nodeType":"YulTypedName","src":"6065:4:75","type":""}],"src":"6025:128:75"},{"body":{"nativeSrc":"6206:77:75","nodeType":"YulBlock","src":"6206:77:75","statements":[{"nativeSrc":"6216:16:75","nodeType":"YulAssignment","src":"6216:16:75","value":{"arguments":[{"name":"x","nativeSrc":"6227:1:75","nodeType":"YulIdentifier","src":"6227:1:75"},{"name":"y","nativeSrc":"6230:1:75","nodeType":"YulIdentifier","src":"6230:1:75"}],"functionName":{"name":"add","nativeSrc":"6223:3:75","nodeType":"YulIdentifier","src":"6223:3:75"},"nativeSrc":"6223:9:75","nodeType":"YulFunctionCall","src":"6223:9:75"},"variableNames":[{"name":"sum","nativeSrc":"6216:3:75","nodeType":"YulIdentifier","src":"6216:3:75"}]},{"body":{"nativeSrc":"6255:22:75","nodeType":"YulBlock","src":"6255:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6257:16:75","nodeType":"YulIdentifier","src":"6257:16:75"},"nativeSrc":"6257:18:75","nodeType":"YulFunctionCall","src":"6257:18:75"},"nativeSrc":"6257:18:75","nodeType":"YulExpressionStatement","src":"6257:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"6247:1:75","nodeType":"YulIdentifier","src":"6247:1:75"},{"name":"sum","nativeSrc":"6250:3:75","nodeType":"YulIdentifier","src":"6250:3:75"}],"functionName":{"name":"gt","nativeSrc":"6244:2:75","nodeType":"YulIdentifier","src":"6244:2:75"},"nativeSrc":"6244:10:75","nodeType":"YulFunctionCall","src":"6244:10:75"},"nativeSrc":"6241:36:75","nodeType":"YulIf","src":"6241:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"6158:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6189:1:75","nodeType":"YulTypedName","src":"6189:1:75","type":""},{"name":"y","nativeSrc":"6192:1:75","nodeType":"YulTypedName","src":"6192:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"6198:3:75","nodeType":"YulTypedName","src":"6198:3:75","type":""}],"src":"6158:125:75"},{"body":{"nativeSrc":"6335:88:75","nodeType":"YulBlock","src":"6335:88:75","statements":[{"body":{"nativeSrc":"6366:22:75","nodeType":"YulBlock","src":"6366:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6368:16:75","nodeType":"YulIdentifier","src":"6368:16:75"},"nativeSrc":"6368:18:75","nodeType":"YulFunctionCall","src":"6368:18:75"},"nativeSrc":"6368:18:75","nodeType":"YulExpressionStatement","src":"6368:18:75"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"6351:5:75","nodeType":"YulIdentifier","src":"6351:5:75"},{"arguments":[{"kind":"number","nativeSrc":"6362:1:75","nodeType":"YulLiteral","src":"6362:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6358:3:75","nodeType":"YulIdentifier","src":"6358:3:75"},"nativeSrc":"6358:6:75","nodeType":"YulFunctionCall","src":"6358:6:75"}],"functionName":{"name":"eq","nativeSrc":"6348:2:75","nodeType":"YulIdentifier","src":"6348:2:75"},"nativeSrc":"6348:17:75","nodeType":"YulFunctionCall","src":"6348:17:75"},"nativeSrc":"6345:43:75","nodeType":"YulIf","src":"6345:43:75"},{"nativeSrc":"6397:20:75","nodeType":"YulAssignment","src":"6397:20:75","value":{"arguments":[{"name":"value","nativeSrc":"6408:5:75","nodeType":"YulIdentifier","src":"6408:5:75"},{"kind":"number","nativeSrc":"6415:1:75","nodeType":"YulLiteral","src":"6415:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6404:3:75","nodeType":"YulIdentifier","src":"6404:3:75"},"nativeSrc":"6404:13:75","nodeType":"YulFunctionCall","src":"6404:13:75"},"variableNames":[{"name":"ret","nativeSrc":"6397:3:75","nodeType":"YulIdentifier","src":"6397:3:75"}]}]},"name":"increment_t_uint256","nativeSrc":"6288:135:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6317:5:75","nodeType":"YulTypedName","src":"6317:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"6327:3:75","nodeType":"YulTypedName","src":"6327:3:75","type":""}],"src":"6288:135:75"},{"body":{"nativeSrc":"6611:112:75","nodeType":"YulBlock","src":"6611:112:75","statements":[{"nativeSrc":"6621:27:75","nodeType":"YulAssignment","src":"6621:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6633:9:75","nodeType":"YulIdentifier","src":"6633:9:75"},{"kind":"number","nativeSrc":"6644:3:75","nodeType":"YulLiteral","src":"6644:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6629:3:75","nodeType":"YulIdentifier","src":"6629:3:75"},"nativeSrc":"6629:19:75","nodeType":"YulFunctionCall","src":"6629:19:75"},"variableNames":[{"name":"tail","nativeSrc":"6621:4:75","nodeType":"YulIdentifier","src":"6621:4:75"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"6699:6:75","nodeType":"YulIdentifier","src":"6699:6:75"},{"name":"headStart","nativeSrc":"6707:9:75","nodeType":"YulIdentifier","src":"6707:9:75"}],"functionName":{"name":"abi_encode_struct_ExactOutputSingleParams","nativeSrc":"6657:41:75","nodeType":"YulIdentifier","src":"6657:41:75"},"nativeSrc":"6657:60:75","nodeType":"YulFunctionCall","src":"6657:60:75"},"nativeSrc":"6657:60:75","nodeType":"YulExpressionStatement","src":"6657:60:75"}]},"name":"abi_encode_tuple_t_struct$_ExactInputSingleParams_$13386_memory_ptr__to_t_struct$_ExactInputSingleParams_$13386_memory_ptr__fromStack_reversed","nativeSrc":"6428:295:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6580:9:75","nodeType":"YulTypedName","src":"6580:9:75","type":""},{"name":"value0","nativeSrc":"6591:6:75","nodeType":"YulTypedName","src":"6591:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6602:4:75","nodeType":"YulTypedName","src":"6602:4:75","type":""}],"src":"6428:295:75"},{"body":{"nativeSrc":"6857:171:75","nodeType":"YulBlock","src":"6857:171:75","statements":[{"nativeSrc":"6867:26:75","nodeType":"YulAssignment","src":"6867:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6879:9:75","nodeType":"YulIdentifier","src":"6879:9:75"},{"kind":"number","nativeSrc":"6890:2:75","nodeType":"YulLiteral","src":"6890:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6875:3:75","nodeType":"YulIdentifier","src":"6875:3:75"},"nativeSrc":"6875:18:75","nodeType":"YulFunctionCall","src":"6875:18:75"},"variableNames":[{"name":"tail","nativeSrc":"6867:4:75","nodeType":"YulIdentifier","src":"6867:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6909:9:75","nodeType":"YulIdentifier","src":"6909:9:75"},{"arguments":[{"name":"value0","nativeSrc":"6924:6:75","nodeType":"YulIdentifier","src":"6924:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6940:3:75","nodeType":"YulLiteral","src":"6940:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"6945:1:75","nodeType":"YulLiteral","src":"6945:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6936:3:75","nodeType":"YulIdentifier","src":"6936:3:75"},"nativeSrc":"6936:11:75","nodeType":"YulFunctionCall","src":"6936:11:75"},{"kind":"number","nativeSrc":"6949:1:75","nodeType":"YulLiteral","src":"6949:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6932:3:75","nodeType":"YulIdentifier","src":"6932:3:75"},"nativeSrc":"6932:19:75","nodeType":"YulFunctionCall","src":"6932:19:75"}],"functionName":{"name":"and","nativeSrc":"6920:3:75","nodeType":"YulIdentifier","src":"6920:3:75"},"nativeSrc":"6920:32:75","nodeType":"YulFunctionCall","src":"6920:32:75"}],"functionName":{"name":"mstore","nativeSrc":"6902:6:75","nodeType":"YulIdentifier","src":"6902:6:75"},"nativeSrc":"6902:51:75","nodeType":"YulFunctionCall","src":"6902:51:75"},"nativeSrc":"6902:51:75","nodeType":"YulExpressionStatement","src":"6902:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6973:9:75","nodeType":"YulIdentifier","src":"6973:9:75"},{"kind":"number","nativeSrc":"6984:2:75","nodeType":"YulLiteral","src":"6984:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6969:3:75","nodeType":"YulIdentifier","src":"6969:3:75"},"nativeSrc":"6969:18:75","nodeType":"YulFunctionCall","src":"6969:18:75"},{"arguments":[{"name":"value1","nativeSrc":"6993:6:75","nodeType":"YulIdentifier","src":"6993:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7009:3:75","nodeType":"YulLiteral","src":"7009:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7014:1:75","nodeType":"YulLiteral","src":"7014:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7005:3:75","nodeType":"YulIdentifier","src":"7005:3:75"},"nativeSrc":"7005:11:75","nodeType":"YulFunctionCall","src":"7005:11:75"},{"kind":"number","nativeSrc":"7018:1:75","nodeType":"YulLiteral","src":"7018:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7001:3:75","nodeType":"YulIdentifier","src":"7001:3:75"},"nativeSrc":"7001:19:75","nodeType":"YulFunctionCall","src":"7001:19:75"}],"functionName":{"name":"and","nativeSrc":"6989:3:75","nodeType":"YulIdentifier","src":"6989:3:75"},"nativeSrc":"6989:32:75","nodeType":"YulFunctionCall","src":"6989:32:75"}],"functionName":{"name":"mstore","nativeSrc":"6962:6:75","nodeType":"YulIdentifier","src":"6962:6:75"},"nativeSrc":"6962:60:75","nodeType":"YulFunctionCall","src":"6962:60:75"},"nativeSrc":"6962:60:75","nodeType":"YulExpressionStatement","src":"6962:60:75"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"6728:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6818:9:75","nodeType":"YulTypedName","src":"6818:9:75","type":""},{"name":"value1","nativeSrc":"6829:6:75","nodeType":"YulTypedName","src":"6829:6:75","type":""},{"name":"value0","nativeSrc":"6837:6:75","nodeType":"YulTypedName","src":"6837:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6848:4:75","nodeType":"YulTypedName","src":"6848:4:75","type":""}],"src":"6728:300:75"},{"body":{"nativeSrc":"7083:279:75","nodeType":"YulBlock","src":"7083:279:75","statements":[{"nativeSrc":"7093:10:75","nodeType":"YulAssignment","src":"7093:10:75","value":{"name":"pos","nativeSrc":"7100:3:75","nodeType":"YulIdentifier","src":"7100:3:75"},"variableNames":[{"name":"pos","nativeSrc":"7093:3:75","nodeType":"YulIdentifier","src":"7093:3:75"}]},{"nativeSrc":"7112:19:75","nodeType":"YulVariableDeclaration","src":"7112:19:75","value":{"name":"value","nativeSrc":"7126:5:75","nodeType":"YulIdentifier","src":"7126:5:75"},"variables":[{"name":"srcPtr","nativeSrc":"7116:6:75","nodeType":"YulTypedName","src":"7116:6:75","type":""}]},{"nativeSrc":"7140:10:75","nodeType":"YulVariableDeclaration","src":"7140:10:75","value":{"kind":"number","nativeSrc":"7149:1:75","nodeType":"YulLiteral","src":"7149:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7144:1:75","nodeType":"YulTypedName","src":"7144:1:75","type":""}]},{"body":{"nativeSrc":"7206:150:75","nodeType":"YulBlock","src":"7206:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7227:3:75","nodeType":"YulIdentifier","src":"7227:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"7242:6:75","nodeType":"YulIdentifier","src":"7242:6:75"}],"functionName":{"name":"mload","nativeSrc":"7236:5:75","nodeType":"YulIdentifier","src":"7236:5:75"},"nativeSrc":"7236:13:75","nodeType":"YulFunctionCall","src":"7236:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7259:3:75","nodeType":"YulLiteral","src":"7259:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7264:1:75","nodeType":"YulLiteral","src":"7264:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7255:3:75","nodeType":"YulIdentifier","src":"7255:3:75"},"nativeSrc":"7255:11:75","nodeType":"YulFunctionCall","src":"7255:11:75"},{"kind":"number","nativeSrc":"7268:1:75","nodeType":"YulLiteral","src":"7268:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7251:3:75","nodeType":"YulIdentifier","src":"7251:3:75"},"nativeSrc":"7251:19:75","nodeType":"YulFunctionCall","src":"7251:19:75"}],"functionName":{"name":"and","nativeSrc":"7232:3:75","nodeType":"YulIdentifier","src":"7232:3:75"},"nativeSrc":"7232:39:75","nodeType":"YulFunctionCall","src":"7232:39:75"}],"functionName":{"name":"mstore","nativeSrc":"7220:6:75","nodeType":"YulIdentifier","src":"7220:6:75"},"nativeSrc":"7220:52:75","nodeType":"YulFunctionCall","src":"7220:52:75"},"nativeSrc":"7220:52:75","nodeType":"YulExpressionStatement","src":"7220:52:75"},{"nativeSrc":"7285:21:75","nodeType":"YulAssignment","src":"7285:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"7296:3:75","nodeType":"YulIdentifier","src":"7296:3:75"},{"kind":"number","nativeSrc":"7301:4:75","nodeType":"YulLiteral","src":"7301:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7292:3:75","nodeType":"YulIdentifier","src":"7292:3:75"},"nativeSrc":"7292:14:75","nodeType":"YulFunctionCall","src":"7292:14:75"},"variableNames":[{"name":"pos","nativeSrc":"7285:3:75","nodeType":"YulIdentifier","src":"7285:3:75"}]},{"nativeSrc":"7319:27:75","nodeType":"YulAssignment","src":"7319:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7333:6:75","nodeType":"YulIdentifier","src":"7333:6:75"},{"kind":"number","nativeSrc":"7341:4:75","nodeType":"YulLiteral","src":"7341:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7329:3:75","nodeType":"YulIdentifier","src":"7329:3:75"},"nativeSrc":"7329:17:75","nodeType":"YulFunctionCall","src":"7329:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"7319:6:75","nodeType":"YulIdentifier","src":"7319:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7170:1:75","nodeType":"YulIdentifier","src":"7170:1:75"},{"kind":"number","nativeSrc":"7173:4:75","nodeType":"YulLiteral","src":"7173:4:75","type":"","value":"0x0b"}],"functionName":{"name":"lt","nativeSrc":"7167:2:75","nodeType":"YulIdentifier","src":"7167:2:75"},"nativeSrc":"7167:11:75","nodeType":"YulFunctionCall","src":"7167:11:75"},"nativeSrc":"7159:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"7179:18:75","nodeType":"YulBlock","src":"7179:18:75","statements":[{"nativeSrc":"7181:14:75","nodeType":"YulAssignment","src":"7181:14:75","value":{"arguments":[{"name":"i","nativeSrc":"7190:1:75","nodeType":"YulIdentifier","src":"7190:1:75"},{"kind":"number","nativeSrc":"7193:1:75","nodeType":"YulLiteral","src":"7193:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7186:3:75","nodeType":"YulIdentifier","src":"7186:3:75"},"nativeSrc":"7186:9:75","nodeType":"YulFunctionCall","src":"7186:9:75"},"variableNames":[{"name":"i","nativeSrc":"7181:1:75","nodeType":"YulIdentifier","src":"7181:1:75"}]}]},"pre":{"nativeSrc":"7163:3:75","nodeType":"YulBlock","src":"7163:3:75","statements":[]},"src":"7159:197:75"}]},"name":"abi_encode_array_address","nativeSrc":"7033:329:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7067:5:75","nodeType":"YulTypedName","src":"7067:5:75","type":""},{"name":"pos","nativeSrc":"7074:3:75","nodeType":"YulTypedName","src":"7074:3:75","type":""}],"src":"7033:329:75"},{"body":{"nativeSrc":"7423:651:75","nodeType":"YulBlock","src":"7423:651:75","statements":[{"nativeSrc":"7433:10:75","nodeType":"YulAssignment","src":"7433:10:75","value":{"name":"pos","nativeSrc":"7440:3:75","nodeType":"YulIdentifier","src":"7440:3:75"},"variableNames":[{"name":"pos","nativeSrc":"7433:3:75","nodeType":"YulIdentifier","src":"7433:3:75"}]},{"nativeSrc":"7452:19:75","nodeType":"YulVariableDeclaration","src":"7452:19:75","value":{"name":"value","nativeSrc":"7466:5:75","nodeType":"YulIdentifier","src":"7466:5:75"},"variables":[{"name":"srcPtr","nativeSrc":"7456:6:75","nodeType":"YulTypedName","src":"7456:6:75","type":""}]},{"nativeSrc":"7480:10:75","nodeType":"YulVariableDeclaration","src":"7480:10:75","value":{"kind":"number","nativeSrc":"7489:1:75","nodeType":"YulLiteral","src":"7489:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7484:1:75","nodeType":"YulTypedName","src":"7484:1:75","type":""}]},{"body":{"nativeSrc":"7546:522:75","nodeType":"YulBlock","src":"7546:522:75","statements":[{"nativeSrc":"7560:23:75","nodeType":"YulVariableDeclaration","src":"7560:23:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7576:6:75","nodeType":"YulIdentifier","src":"7576:6:75"}],"functionName":{"name":"mload","nativeSrc":"7570:5:75","nodeType":"YulIdentifier","src":"7570:5:75"},"nativeSrc":"7570:13:75","nodeType":"YulFunctionCall","src":"7570:13:75"},"variables":[{"name":"_1","nativeSrc":"7564:2:75","nodeType":"YulTypedName","src":"7564:2:75","type":""}]},{"nativeSrc":"7596:19:75","nodeType":"YulVariableDeclaration","src":"7596:19:75","value":{"kind":"number","nativeSrc":"7614:1:75","nodeType":"YulLiteral","src":"7614:1:75","type":"","value":"0"},"variables":[{"name":"updatedPos","nativeSrc":"7600:10:75","nodeType":"YulTypedName","src":"7600:10:75","type":""}]},{"nativeSrc":"7628:16:75","nodeType":"YulVariableDeclaration","src":"7628:16:75","value":{"name":"pos","nativeSrc":"7641:3:75","nodeType":"YulIdentifier","src":"7641:3:75"},"variables":[{"name":"pos_1","nativeSrc":"7632:5:75","nodeType":"YulTypedName","src":"7632:5:75","type":""}]},{"nativeSrc":"7657:12:75","nodeType":"YulAssignment","src":"7657:12:75","value":{"name":"pos","nativeSrc":"7666:3:75","nodeType":"YulIdentifier","src":"7666:3:75"},"variableNames":[{"name":"pos_1","nativeSrc":"7657:5:75","nodeType":"YulIdentifier","src":"7657:5:75"}]},{"nativeSrc":"7682:18:75","nodeType":"YulVariableDeclaration","src":"7682:18:75","value":{"name":"_1","nativeSrc":"7698:2:75","nodeType":"YulIdentifier","src":"7698:2:75"},"variables":[{"name":"srcPtr_1","nativeSrc":"7686:8:75","nodeType":"YulTypedName","src":"7686:8:75","type":""}]},{"nativeSrc":"7713:12:75","nodeType":"YulVariableDeclaration","src":"7713:12:75","value":{"kind":"number","nativeSrc":"7724:1:75","nodeType":"YulLiteral","src":"7724:1:75","type":"","value":"0"},"variables":[{"name":"i_1","nativeSrc":"7717:3:75","nodeType":"YulTypedName","src":"7717:3:75","type":""}]},{"body":{"nativeSrc":"7795:152:75","nodeType":"YulBlock","src":"7795:152:75","statements":[{"expression":{"arguments":[{"name":"pos_1","nativeSrc":"7820:5:75","nodeType":"YulIdentifier","src":"7820:5:75"},{"arguments":[{"name":"srcPtr_1","nativeSrc":"7833:8:75","nodeType":"YulIdentifier","src":"7833:8:75"}],"functionName":{"name":"mload","nativeSrc":"7827:5:75","nodeType":"YulIdentifier","src":"7827:5:75"},"nativeSrc":"7827:15:75","nodeType":"YulFunctionCall","src":"7827:15:75"}],"functionName":{"name":"mstore","nativeSrc":"7813:6:75","nodeType":"YulIdentifier","src":"7813:6:75"},"nativeSrc":"7813:30:75","nodeType":"YulFunctionCall","src":"7813:30:75"},"nativeSrc":"7813:30:75","nodeType":"YulExpressionStatement","src":"7813:30:75"},{"nativeSrc":"7860:25:75","nodeType":"YulAssignment","src":"7860:25:75","value":{"arguments":[{"name":"pos_1","nativeSrc":"7873:5:75","nodeType":"YulIdentifier","src":"7873:5:75"},{"kind":"number","nativeSrc":"7880:4:75","nodeType":"YulLiteral","src":"7880:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7869:3:75","nodeType":"YulIdentifier","src":"7869:3:75"},"nativeSrc":"7869:16:75","nodeType":"YulFunctionCall","src":"7869:16:75"},"variableNames":[{"name":"pos_1","nativeSrc":"7860:5:75","nodeType":"YulIdentifier","src":"7860:5:75"}]},{"nativeSrc":"7902:31:75","nodeType":"YulAssignment","src":"7902:31:75","value":{"arguments":[{"name":"srcPtr_1","nativeSrc":"7918:8:75","nodeType":"YulIdentifier","src":"7918:8:75"},{"kind":"number","nativeSrc":"7928:4:75","nodeType":"YulLiteral","src":"7928:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7914:3:75","nodeType":"YulIdentifier","src":"7914:3:75"},"nativeSrc":"7914:19:75","nodeType":"YulFunctionCall","src":"7914:19:75"},"variableNames":[{"name":"srcPtr_1","nativeSrc":"7902:8:75","nodeType":"YulIdentifier","src":"7902:8:75"}]}]},"condition":{"arguments":[{"name":"i_1","nativeSrc":"7749:3:75","nodeType":"YulIdentifier","src":"7749:3:75"},{"kind":"number","nativeSrc":"7754:4:75","nodeType":"YulLiteral","src":"7754:4:75","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"7746:2:75","nodeType":"YulIdentifier","src":"7746:2:75"},"nativeSrc":"7746:13:75","nodeType":"YulFunctionCall","src":"7746:13:75"},"nativeSrc":"7738:209:75","nodeType":"YulForLoop","post":{"nativeSrc":"7760:22:75","nodeType":"YulBlock","src":"7760:22:75","statements":[{"nativeSrc":"7762:18:75","nodeType":"YulAssignment","src":"7762:18:75","value":{"arguments":[{"name":"i_1","nativeSrc":"7773:3:75","nodeType":"YulIdentifier","src":"7773:3:75"},{"kind":"number","nativeSrc":"7778:1:75","nodeType":"YulLiteral","src":"7778:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7769:3:75","nodeType":"YulIdentifier","src":"7769:3:75"},"nativeSrc":"7769:11:75","nodeType":"YulFunctionCall","src":"7769:11:75"},"variableNames":[{"name":"i_1","nativeSrc":"7762:3:75","nodeType":"YulIdentifier","src":"7762:3:75"}]}]},"pre":{"nativeSrc":"7742:3:75","nodeType":"YulBlock","src":"7742:3:75","statements":[]},"src":"7738:209:75"},{"nativeSrc":"7960:28:75","nodeType":"YulAssignment","src":"7960:28:75","value":{"arguments":[{"name":"pos","nativeSrc":"7978:3:75","nodeType":"YulIdentifier","src":"7978:3:75"},{"kind":"number","nativeSrc":"7983:4:75","nodeType":"YulLiteral","src":"7983:4:75","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"7974:3:75","nodeType":"YulIdentifier","src":"7974:3:75"},"nativeSrc":"7974:14:75","nodeType":"YulFunctionCall","src":"7974:14:75"},"variableNames":[{"name":"updatedPos","nativeSrc":"7960:10:75","nodeType":"YulIdentifier","src":"7960:10:75"}]},{"nativeSrc":"8001:17:75","nodeType":"YulAssignment","src":"8001:17:75","value":{"name":"updatedPos","nativeSrc":"8008:10:75","nodeType":"YulIdentifier","src":"8008:10:75"},"variableNames":[{"name":"pos","nativeSrc":"8001:3:75","nodeType":"YulIdentifier","src":"8001:3:75"}]},{"nativeSrc":"8031:27:75","nodeType":"YulAssignment","src":"8031:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"8045:6:75","nodeType":"YulIdentifier","src":"8045:6:75"},{"kind":"number","nativeSrc":"8053:4:75","nodeType":"YulLiteral","src":"8053:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8041:3:75","nodeType":"YulIdentifier","src":"8041:3:75"},"nativeSrc":"8041:17:75","nodeType":"YulFunctionCall","src":"8041:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"8031:6:75","nodeType":"YulIdentifier","src":"8031:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7510:1:75","nodeType":"YulIdentifier","src":"7510:1:75"},{"kind":"number","nativeSrc":"7513:4:75","nodeType":"YulLiteral","src":"7513:4:75","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"7507:2:75","nodeType":"YulIdentifier","src":"7507:2:75"},"nativeSrc":"7507:11:75","nodeType":"YulFunctionCall","src":"7507:11:75"},"nativeSrc":"7499:569:75","nodeType":"YulForLoop","post":{"nativeSrc":"7519:18:75","nodeType":"YulBlock","src":"7519:18:75","statements":[{"nativeSrc":"7521:14:75","nodeType":"YulAssignment","src":"7521:14:75","value":{"arguments":[{"name":"i","nativeSrc":"7530:1:75","nodeType":"YulIdentifier","src":"7530:1:75"},{"kind":"number","nativeSrc":"7533:1:75","nodeType":"YulLiteral","src":"7533:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7526:3:75","nodeType":"YulIdentifier","src":"7526:3:75"},"nativeSrc":"7526:9:75","nodeType":"YulFunctionCall","src":"7526:9:75"},"variableNames":[{"name":"i","nativeSrc":"7521:1:75","nodeType":"YulIdentifier","src":"7521:1:75"}]}]},"pre":{"nativeSrc":"7503:3:75","nodeType":"YulBlock","src":"7503:3:75","statements":[]},"src":"7499:569:75"}]},"name":"abi_encode_array_array_uint256","nativeSrc":"7367:707:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7407:5:75","nodeType":"YulTypedName","src":"7407:5:75","type":""},{"name":"pos","nativeSrc":"7414:3:75","nodeType":"YulTypedName","src":"7414:3:75","type":""}],"src":"7367:707:75"},{"body":{"nativeSrc":"8156:279:75","nodeType":"YulBlock","src":"8156:279:75","statements":[{"nativeSrc":"8166:10:75","nodeType":"YulAssignment","src":"8166:10:75","value":{"name":"pos","nativeSrc":"8173:3:75","nodeType":"YulIdentifier","src":"8173:3:75"},"variableNames":[{"name":"pos","nativeSrc":"8166:3:75","nodeType":"YulIdentifier","src":"8166:3:75"}]},{"nativeSrc":"8185:19:75","nodeType":"YulVariableDeclaration","src":"8185:19:75","value":{"name":"value","nativeSrc":"8199:5:75","nodeType":"YulIdentifier","src":"8199:5:75"},"variables":[{"name":"srcPtr","nativeSrc":"8189:6:75","nodeType":"YulTypedName","src":"8189:6:75","type":""}]},{"nativeSrc":"8213:10:75","nodeType":"YulVariableDeclaration","src":"8213:10:75","value":{"kind":"number","nativeSrc":"8222:1:75","nodeType":"YulLiteral","src":"8222:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8217:1:75","nodeType":"YulTypedName","src":"8217:1:75","type":""}]},{"body":{"nativeSrc":"8279:150:75","nodeType":"YulBlock","src":"8279:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"8300:3:75","nodeType":"YulIdentifier","src":"8300:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"8315:6:75","nodeType":"YulIdentifier","src":"8315:6:75"}],"functionName":{"name":"mload","nativeSrc":"8309:5:75","nodeType":"YulIdentifier","src":"8309:5:75"},"nativeSrc":"8309:13:75","nodeType":"YulFunctionCall","src":"8309:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8332:3:75","nodeType":"YulLiteral","src":"8332:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"8337:1:75","nodeType":"YulLiteral","src":"8337:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8328:3:75","nodeType":"YulIdentifier","src":"8328:3:75"},"nativeSrc":"8328:11:75","nodeType":"YulFunctionCall","src":"8328:11:75"},{"kind":"number","nativeSrc":"8341:1:75","nodeType":"YulLiteral","src":"8341:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8324:3:75","nodeType":"YulIdentifier","src":"8324:3:75"},"nativeSrc":"8324:19:75","nodeType":"YulFunctionCall","src":"8324:19:75"}],"functionName":{"name":"and","nativeSrc":"8305:3:75","nodeType":"YulIdentifier","src":"8305:3:75"},"nativeSrc":"8305:39:75","nodeType":"YulFunctionCall","src":"8305:39:75"}],"functionName":{"name":"mstore","nativeSrc":"8293:6:75","nodeType":"YulIdentifier","src":"8293:6:75"},"nativeSrc":"8293:52:75","nodeType":"YulFunctionCall","src":"8293:52:75"},"nativeSrc":"8293:52:75","nodeType":"YulExpressionStatement","src":"8293:52:75"},{"nativeSrc":"8358:21:75","nodeType":"YulAssignment","src":"8358:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"8369:3:75","nodeType":"YulIdentifier","src":"8369:3:75"},{"kind":"number","nativeSrc":"8374:4:75","nodeType":"YulLiteral","src":"8374:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8365:3:75","nodeType":"YulIdentifier","src":"8365:3:75"},"nativeSrc":"8365:14:75","nodeType":"YulFunctionCall","src":"8365:14:75"},"variableNames":[{"name":"pos","nativeSrc":"8358:3:75","nodeType":"YulIdentifier","src":"8358:3:75"}]},{"nativeSrc":"8392:27:75","nodeType":"YulAssignment","src":"8392:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"8406:6:75","nodeType":"YulIdentifier","src":"8406:6:75"},{"kind":"number","nativeSrc":"8414:4:75","nodeType":"YulLiteral","src":"8414:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8402:3:75","nodeType":"YulIdentifier","src":"8402:3:75"},"nativeSrc":"8402:17:75","nodeType":"YulFunctionCall","src":"8402:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"8392:6:75","nodeType":"YulIdentifier","src":"8392:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8243:1:75","nodeType":"YulIdentifier","src":"8243:1:75"},{"kind":"number","nativeSrc":"8246:4:75","nodeType":"YulLiteral","src":"8246:4:75","type":"","value":"0x05"}],"functionName":{"name":"lt","nativeSrc":"8240:2:75","nodeType":"YulIdentifier","src":"8240:2:75"},"nativeSrc":"8240:11:75","nodeType":"YulFunctionCall","src":"8240:11:75"},"nativeSrc":"8232:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"8252:18:75","nodeType":"YulBlock","src":"8252:18:75","statements":[{"nativeSrc":"8254:14:75","nodeType":"YulAssignment","src":"8254:14:75","value":{"arguments":[{"name":"i","nativeSrc":"8263:1:75","nodeType":"YulIdentifier","src":"8263:1:75"},{"kind":"number","nativeSrc":"8266:1:75","nodeType":"YulLiteral","src":"8266:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8259:3:75","nodeType":"YulIdentifier","src":"8259:3:75"},"nativeSrc":"8259:9:75","nodeType":"YulFunctionCall","src":"8259:9:75"},"variableNames":[{"name":"i","nativeSrc":"8254:1:75","nodeType":"YulIdentifier","src":"8254:1:75"}]}]},"pre":{"nativeSrc":"8236:3:75","nodeType":"YulBlock","src":"8236:3:75","statements":[]},"src":"8232:197:75"}]},"name":"abi_encode_array_address_to_array_address_fromStack","nativeSrc":"8079:356:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"8140:5:75","nodeType":"YulTypedName","src":"8140:5:75","type":""},{"name":"pos","nativeSrc":"8147:3:75","nodeType":"YulTypedName","src":"8147:3:75","type":""}],"src":"8079:356:75"},{"body":{"nativeSrc":"8867:415:75","nodeType":"YulBlock","src":"8867:415:75","statements":[{"nativeSrc":"8877:28:75","nodeType":"YulAssignment","src":"8877:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8889:9:75","nodeType":"YulIdentifier","src":"8889:9:75"},{"kind":"number","nativeSrc":"8900:4:75","nodeType":"YulLiteral","src":"8900:4:75","type":"","value":"1408"}],"functionName":{"name":"add","nativeSrc":"8885:3:75","nodeType":"YulIdentifier","src":"8885:3:75"},"nativeSrc":"8885:20:75","nodeType":"YulFunctionCall","src":"8885:20:75"},"variableNames":[{"name":"tail","nativeSrc":"8877:4:75","nodeType":"YulIdentifier","src":"8877:4:75"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8939:6:75","nodeType":"YulIdentifier","src":"8939:6:75"},{"name":"headStart","nativeSrc":"8947:9:75","nodeType":"YulIdentifier","src":"8947:9:75"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"8914:24:75","nodeType":"YulIdentifier","src":"8914:24:75"},"nativeSrc":"8914:43:75","nodeType":"YulFunctionCall","src":"8914:43:75"},"nativeSrc":"8914:43:75","nodeType":"YulExpressionStatement","src":"8914:43:75"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"8997:6:75","nodeType":"YulIdentifier","src":"8997:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"9009:9:75","nodeType":"YulIdentifier","src":"9009:9:75"},{"kind":"number","nativeSrc":"9020:3:75","nodeType":"YulLiteral","src":"9020:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"9005:3:75","nodeType":"YulIdentifier","src":"9005:3:75"},"nativeSrc":"9005:19:75","nodeType":"YulFunctionCall","src":"9005:19:75"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"8966:30:75","nodeType":"YulIdentifier","src":"8966:30:75"},"nativeSrc":"8966:59:75","nodeType":"YulFunctionCall","src":"8966:59:75"},"nativeSrc":"8966:59:75","nodeType":"YulExpressionStatement","src":"8966:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9045:9:75","nodeType":"YulIdentifier","src":"9045:9:75"},{"kind":"number","nativeSrc":"9056:4:75","nodeType":"YulLiteral","src":"9056:4:75","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"9041:3:75","nodeType":"YulIdentifier","src":"9041:3:75"},"nativeSrc":"9041:20:75","nodeType":"YulFunctionCall","src":"9041:20:75"},{"name":"value2","nativeSrc":"9063:6:75","nodeType":"YulIdentifier","src":"9063:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9034:6:75","nodeType":"YulIdentifier","src":"9034:6:75"},"nativeSrc":"9034:36:75","nodeType":"YulFunctionCall","src":"9034:36:75"},"nativeSrc":"9034:36:75","nodeType":"YulExpressionStatement","src":"9034:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9090:9:75","nodeType":"YulIdentifier","src":"9090:9:75"},{"kind":"number","nativeSrc":"9101:4:75","nodeType":"YulLiteral","src":"9101:4:75","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"9086:3:75","nodeType":"YulIdentifier","src":"9086:3:75"},"nativeSrc":"9086:20:75","nodeType":"YulFunctionCall","src":"9086:20:75"},{"name":"value3","nativeSrc":"9108:6:75","nodeType":"YulIdentifier","src":"9108:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9079:6:75","nodeType":"YulIdentifier","src":"9079:6:75"},"nativeSrc":"9079:36:75","nodeType":"YulFunctionCall","src":"9079:36:75"},"nativeSrc":"9079:36:75","nodeType":"YulExpressionStatement","src":"9079:36:75"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"9176:6:75","nodeType":"YulIdentifier","src":"9176:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"9188:9:75","nodeType":"YulIdentifier","src":"9188:9:75"},{"kind":"number","nativeSrc":"9199:4:75","nodeType":"YulLiteral","src":"9199:4:75","type":"","value":"1216"}],"functionName":{"name":"add","nativeSrc":"9184:3:75","nodeType":"YulIdentifier","src":"9184:3:75"},"nativeSrc":"9184:20:75","nodeType":"YulFunctionCall","src":"9184:20:75"}],"functionName":{"name":"abi_encode_array_address_to_array_address_fromStack","nativeSrc":"9124:51:75","nodeType":"YulIdentifier","src":"9124:51:75"},"nativeSrc":"9124:81:75","nodeType":"YulFunctionCall","src":"9124:81:75"},"nativeSrc":"9124:81:75","nodeType":"YulExpressionStatement","src":"9124:81:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9225:9:75","nodeType":"YulIdentifier","src":"9225:9:75"},{"kind":"number","nativeSrc":"9236:4:75","nodeType":"YulLiteral","src":"9236:4:75","type":"","value":"1376"}],"functionName":{"name":"add","nativeSrc":"9221:3:75","nodeType":"YulIdentifier","src":"9221:3:75"},"nativeSrc":"9221:20:75","nodeType":"YulFunctionCall","src":"9221:20:75"},{"arguments":[{"name":"value5","nativeSrc":"9247:6:75","nodeType":"YulIdentifier","src":"9247:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9263:3:75","nodeType":"YulLiteral","src":"9263:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"9268:1:75","nodeType":"YulLiteral","src":"9268:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9259:3:75","nodeType":"YulIdentifier","src":"9259:3:75"},"nativeSrc":"9259:11:75","nodeType":"YulFunctionCall","src":"9259:11:75"},{"kind":"number","nativeSrc":"9272:1:75","nodeType":"YulLiteral","src":"9272:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9255:3:75","nodeType":"YulIdentifier","src":"9255:3:75"},"nativeSrc":"9255:19:75","nodeType":"YulFunctionCall","src":"9255:19:75"}],"functionName":{"name":"and","nativeSrc":"9243:3:75","nodeType":"YulIdentifier","src":"9243:3:75"},"nativeSrc":"9243:32:75","nodeType":"YulFunctionCall","src":"9243:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9214:6:75","nodeType":"YulIdentifier","src":"9214:6:75"},"nativeSrc":"9214:62:75","nodeType":"YulFunctionCall","src":"9214:62:75"},"nativeSrc":"9214:62:75","nodeType":"YulExpressionStatement","src":"9214:62:75"}]},"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":"8440:842:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8796:9:75","nodeType":"YulTypedName","src":"8796:9:75","type":""},{"name":"value5","nativeSrc":"8807:6:75","nodeType":"YulTypedName","src":"8807:6:75","type":""},{"name":"value4","nativeSrc":"8815:6:75","nodeType":"YulTypedName","src":"8815:6:75","type":""},{"name":"value3","nativeSrc":"8823:6:75","nodeType":"YulTypedName","src":"8823:6:75","type":""},{"name":"value2","nativeSrc":"8831:6:75","nodeType":"YulTypedName","src":"8831:6:75","type":""},{"name":"value1","nativeSrc":"8839:6:75","nodeType":"YulTypedName","src":"8839:6:75","type":""},{"name":"value0","nativeSrc":"8847:6:75","nodeType":"YulTypedName","src":"8847:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8858:4:75","nodeType":"YulTypedName","src":"8858:4:75","type":""}],"src":"8440:842:75"},{"body":{"nativeSrc":"9339:116:75","nodeType":"YulBlock","src":"9339:116:75","statements":[{"nativeSrc":"9349:20:75","nodeType":"YulAssignment","src":"9349:20:75","value":{"arguments":[{"name":"x","nativeSrc":"9364:1:75","nodeType":"YulIdentifier","src":"9364:1:75"},{"name":"y","nativeSrc":"9367:1:75","nodeType":"YulIdentifier","src":"9367:1:75"}],"functionName":{"name":"mul","nativeSrc":"9360:3:75","nodeType":"YulIdentifier","src":"9360:3:75"},"nativeSrc":"9360:9:75","nodeType":"YulFunctionCall","src":"9360:9:75"},"variableNames":[{"name":"product","nativeSrc":"9349:7:75","nodeType":"YulIdentifier","src":"9349:7:75"}]},{"body":{"nativeSrc":"9427:22:75","nodeType":"YulBlock","src":"9427:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9429:16:75","nodeType":"YulIdentifier","src":"9429:16:75"},"nativeSrc":"9429:18:75","nodeType":"YulFunctionCall","src":"9429:18:75"},"nativeSrc":"9429:18:75","nodeType":"YulExpressionStatement","src":"9429:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9398:1:75","nodeType":"YulIdentifier","src":"9398:1:75"}],"functionName":{"name":"iszero","nativeSrc":"9391:6:75","nodeType":"YulIdentifier","src":"9391:6:75"},"nativeSrc":"9391:9:75","nodeType":"YulFunctionCall","src":"9391:9:75"},{"arguments":[{"name":"y","nativeSrc":"9405:1:75","nodeType":"YulIdentifier","src":"9405:1:75"},{"arguments":[{"name":"product","nativeSrc":"9412:7:75","nodeType":"YulIdentifier","src":"9412:7:75"},{"name":"x","nativeSrc":"9421:1:75","nodeType":"YulIdentifier","src":"9421:1:75"}],"functionName":{"name":"div","nativeSrc":"9408:3:75","nodeType":"YulIdentifier","src":"9408:3:75"},"nativeSrc":"9408:15:75","nodeType":"YulFunctionCall","src":"9408:15:75"}],"functionName":{"name":"eq","nativeSrc":"9402:2:75","nodeType":"YulIdentifier","src":"9402:2:75"},"nativeSrc":"9402:22:75","nodeType":"YulFunctionCall","src":"9402:22:75"}],"functionName":{"name":"or","nativeSrc":"9388:2:75","nodeType":"YulIdentifier","src":"9388:2:75"},"nativeSrc":"9388:37:75","nodeType":"YulFunctionCall","src":"9388:37:75"}],"functionName":{"name":"iszero","nativeSrc":"9381:6:75","nodeType":"YulIdentifier","src":"9381:6:75"},"nativeSrc":"9381:45:75","nodeType":"YulFunctionCall","src":"9381:45:75"},"nativeSrc":"9378:71:75","nodeType":"YulIf","src":"9378:71:75"}]},"name":"checked_mul_t_uint256","nativeSrc":"9287:168:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9318:1:75","nodeType":"YulTypedName","src":"9318:1:75","type":""},{"name":"y","nativeSrc":"9321:1:75","nodeType":"YulTypedName","src":"9321:1:75","type":""}],"returnVariables":[{"name":"product","nativeSrc":"9327:7:75","nodeType":"YulTypedName","src":"9327:7:75","type":""}],"src":"9287:168:75"},{"body":{"nativeSrc":"9492:95:75","nodeType":"YulBlock","src":"9492:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9509:1:75","nodeType":"YulLiteral","src":"9509:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9516:3:75","nodeType":"YulLiteral","src":"9516:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"9521:10:75","nodeType":"YulLiteral","src":"9521:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9512:3:75","nodeType":"YulIdentifier","src":"9512:3:75"},"nativeSrc":"9512:20:75","nodeType":"YulFunctionCall","src":"9512:20:75"}],"functionName":{"name":"mstore","nativeSrc":"9502:6:75","nodeType":"YulIdentifier","src":"9502:6:75"},"nativeSrc":"9502:31:75","nodeType":"YulFunctionCall","src":"9502:31:75"},"nativeSrc":"9502:31:75","nodeType":"YulExpressionStatement","src":"9502:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9549:1:75","nodeType":"YulLiteral","src":"9549:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"9552:4:75","nodeType":"YulLiteral","src":"9552:4:75","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"9542:6:75","nodeType":"YulIdentifier","src":"9542:6:75"},"nativeSrc":"9542:15:75","nodeType":"YulFunctionCall","src":"9542:15:75"},"nativeSrc":"9542:15:75","nodeType":"YulExpressionStatement","src":"9542:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9573:1:75","nodeType":"YulLiteral","src":"9573:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9576:4:75","nodeType":"YulLiteral","src":"9576:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9566:6:75","nodeType":"YulIdentifier","src":"9566:6:75"},"nativeSrc":"9566:15:75","nodeType":"YulFunctionCall","src":"9566:15:75"},"nativeSrc":"9566:15:75","nodeType":"YulExpressionStatement","src":"9566:15:75"}]},"name":"panic_error_0x32","nativeSrc":"9460:127:75","nodeType":"YulFunctionDefinition","src":"9460:127:75"},{"body":{"nativeSrc":"9745:665:75","nodeType":"YulBlock","src":"9745:665:75","statements":[{"nativeSrc":"9755:28:75","nodeType":"YulAssignment","src":"9755:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9767:9:75","nodeType":"YulIdentifier","src":"9767:9:75"},{"kind":"number","nativeSrc":"9778:4:75","nodeType":"YulLiteral","src":"9778:4:75","type":"","value":"1312"}],"functionName":{"name":"add","nativeSrc":"9763:3:75","nodeType":"YulIdentifier","src":"9763:3:75"},"nativeSrc":"9763:20:75","nodeType":"YulFunctionCall","src":"9763:20:75"},"variableNames":[{"name":"tail","nativeSrc":"9755:4:75","nodeType":"YulIdentifier","src":"9755:4:75"}]},{"nativeSrc":"9792:23:75","nodeType":"YulVariableDeclaration","src":"9792:23:75","value":{"arguments":[{"name":"value0","nativeSrc":"9808:6:75","nodeType":"YulIdentifier","src":"9808:6:75"}],"functionName":{"name":"mload","nativeSrc":"9802:5:75","nodeType":"YulIdentifier","src":"9802:5:75"},"nativeSrc":"9802:13:75","nodeType":"YulFunctionCall","src":"9802:13:75"},"variables":[{"name":"_1","nativeSrc":"9796:2:75","nodeType":"YulTypedName","src":"9796:2:75","type":""}]},{"nativeSrc":"9824:20:75","nodeType":"YulVariableDeclaration","src":"9824:20:75","value":{"name":"headStart","nativeSrc":"9835:9:75","nodeType":"YulIdentifier","src":"9835:9:75"},"variables":[{"name":"pos","nativeSrc":"9828:3:75","nodeType":"YulTypedName","src":"9828:3:75","type":""}]},{"nativeSrc":"9853:16:75","nodeType":"YulAssignment","src":"9853:16:75","value":{"name":"headStart","nativeSrc":"9860:9:75","nodeType":"YulIdentifier","src":"9860:9:75"},"variableNames":[{"name":"pos","nativeSrc":"9853:3:75","nodeType":"YulIdentifier","src":"9853:3:75"}]},{"nativeSrc":"9878:16:75","nodeType":"YulVariableDeclaration","src":"9878:16:75","value":{"name":"_1","nativeSrc":"9892:2:75","nodeType":"YulIdentifier","src":"9892:2:75"},"variables":[{"name":"srcPtr","nativeSrc":"9882:6:75","nodeType":"YulTypedName","src":"9882:6:75","type":""}]},{"nativeSrc":"9903:10:75","nodeType":"YulVariableDeclaration","src":"9903:10:75","value":{"kind":"number","nativeSrc":"9912:1:75","nodeType":"YulLiteral","src":"9912:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9907:1:75","nodeType":"YulTypedName","src":"9907:1:75","type":""}]},{"body":{"nativeSrc":"9969:150:75","nodeType":"YulBlock","src":"9969:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9990:3:75","nodeType":"YulIdentifier","src":"9990:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"10005:6:75","nodeType":"YulIdentifier","src":"10005:6:75"}],"functionName":{"name":"mload","nativeSrc":"9999:5:75","nodeType":"YulIdentifier","src":"9999:5:75"},"nativeSrc":"9999:13:75","nodeType":"YulFunctionCall","src":"9999:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10022:3:75","nodeType":"YulLiteral","src":"10022:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"10027:1:75","nodeType":"YulLiteral","src":"10027:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10018:3:75","nodeType":"YulIdentifier","src":"10018:3:75"},"nativeSrc":"10018:11:75","nodeType":"YulFunctionCall","src":"10018:11:75"},{"kind":"number","nativeSrc":"10031:1:75","nodeType":"YulLiteral","src":"10031:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10014:3:75","nodeType":"YulIdentifier","src":"10014:3:75"},"nativeSrc":"10014:19:75","nodeType":"YulFunctionCall","src":"10014:19:75"}],"functionName":{"name":"and","nativeSrc":"9995:3:75","nodeType":"YulIdentifier","src":"9995:3:75"},"nativeSrc":"9995:39:75","nodeType":"YulFunctionCall","src":"9995:39:75"}],"functionName":{"name":"mstore","nativeSrc":"9983:6:75","nodeType":"YulIdentifier","src":"9983:6:75"},"nativeSrc":"9983:52:75","nodeType":"YulFunctionCall","src":"9983:52:75"},"nativeSrc":"9983:52:75","nodeType":"YulExpressionStatement","src":"9983:52:75"},{"nativeSrc":"10048:21:75","nodeType":"YulAssignment","src":"10048:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"10059:3:75","nodeType":"YulIdentifier","src":"10059:3:75"},{"kind":"number","nativeSrc":"10064:4:75","nodeType":"YulLiteral","src":"10064:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10055:3:75","nodeType":"YulIdentifier","src":"10055:3:75"},"nativeSrc":"10055:14:75","nodeType":"YulFunctionCall","src":"10055:14:75"},"variableNames":[{"name":"pos","nativeSrc":"10048:3:75","nodeType":"YulIdentifier","src":"10048:3:75"}]},{"nativeSrc":"10082:27:75","nodeType":"YulAssignment","src":"10082:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"10096:6:75","nodeType":"YulIdentifier","src":"10096:6:75"},{"kind":"number","nativeSrc":"10104:4:75","nodeType":"YulLiteral","src":"10104:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10092:3:75","nodeType":"YulIdentifier","src":"10092:3:75"},"nativeSrc":"10092:17:75","nodeType":"YulFunctionCall","src":"10092:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"10082:6:75","nodeType":"YulIdentifier","src":"10082:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9933:1:75","nodeType":"YulIdentifier","src":"9933:1:75"},{"kind":"number","nativeSrc":"9936:4:75","nodeType":"YulLiteral","src":"9936:4:75","type":"","value":"0x0b"}],"functionName":{"name":"lt","nativeSrc":"9930:2:75","nodeType":"YulIdentifier","src":"9930:2:75"},"nativeSrc":"9930:11:75","nodeType":"YulFunctionCall","src":"9930:11:75"},"nativeSrc":"9922:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"9942:18:75","nodeType":"YulBlock","src":"9942:18:75","statements":[{"nativeSrc":"9944:14:75","nodeType":"YulAssignment","src":"9944:14:75","value":{"arguments":[{"name":"i","nativeSrc":"9953:1:75","nodeType":"YulIdentifier","src":"9953:1:75"},{"kind":"number","nativeSrc":"9956:1:75","nodeType":"YulLiteral","src":"9956:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9949:3:75","nodeType":"YulIdentifier","src":"9949:3:75"},"nativeSrc":"9949:9:75","nodeType":"YulFunctionCall","src":"9949:9:75"},"variableNames":[{"name":"i","nativeSrc":"9944:1:75","nodeType":"YulIdentifier","src":"9944:1:75"}]}]},"pre":{"nativeSrc":"9926:3:75","nodeType":"YulBlock","src":"9926:3:75","statements":[]},"src":"9922:197:75"},{"nativeSrc":"10128:44:75","nodeType":"YulVariableDeclaration","src":"10128:44:75","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10158:6:75","nodeType":"YulIdentifier","src":"10158:6:75"},{"kind":"number","nativeSrc":"10166:4:75","nodeType":"YulLiteral","src":"10166:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10154:3:75","nodeType":"YulIdentifier","src":"10154:3:75"},"nativeSrc":"10154:17:75","nodeType":"YulFunctionCall","src":"10154:17:75"}],"functionName":{"name":"mload","nativeSrc":"10148:5:75","nodeType":"YulIdentifier","src":"10148:5:75"},"nativeSrc":"10148:24:75","nodeType":"YulFunctionCall","src":"10148:24:75"},"variables":[{"name":"memberValue0","nativeSrc":"10132:12:75","nodeType":"YulTypedName","src":"10132:12:75","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"10212:12:75","nodeType":"YulIdentifier","src":"10212:12:75"},{"arguments":[{"name":"headStart","nativeSrc":"10230:9:75","nodeType":"YulIdentifier","src":"10230:9:75"},{"kind":"number","nativeSrc":"10241:6:75","nodeType":"YulLiteral","src":"10241:6:75","type":"","value":"0x0160"}],"functionName":{"name":"add","nativeSrc":"10226:3:75","nodeType":"YulIdentifier","src":"10226:3:75"},"nativeSrc":"10226:22:75","nodeType":"YulFunctionCall","src":"10226:22:75"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"10181:30:75","nodeType":"YulIdentifier","src":"10181:30:75"},"nativeSrc":"10181:68:75","nodeType":"YulFunctionCall","src":"10181:68:75"},"nativeSrc":"10181:68:75","nodeType":"YulExpressionStatement","src":"10181:68:75"},{"nativeSrc":"10258:46:75","nodeType":"YulVariableDeclaration","src":"10258:46:75","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10290:6:75","nodeType":"YulIdentifier","src":"10290:6:75"},{"kind":"number","nativeSrc":"10298:4:75","nodeType":"YulLiteral","src":"10298:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10286:3:75","nodeType":"YulIdentifier","src":"10286:3:75"},"nativeSrc":"10286:17:75","nodeType":"YulFunctionCall","src":"10286:17:75"}],"functionName":{"name":"mload","nativeSrc":"10280:5:75","nodeType":"YulIdentifier","src":"10280:5:75"},"nativeSrc":"10280:24:75","nodeType":"YulFunctionCall","src":"10280:24:75"},"variables":[{"name":"memberValue0_1","nativeSrc":"10262:14:75","nodeType":"YulTypedName","src":"10262:14:75","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_1","nativeSrc":"10365:14:75","nodeType":"YulIdentifier","src":"10365:14:75"},{"arguments":[{"name":"headStart","nativeSrc":"10385:9:75","nodeType":"YulIdentifier","src":"10385:9:75"},{"kind":"number","nativeSrc":"10396:6:75","nodeType":"YulLiteral","src":"10396:6:75","type":"","value":"0x0480"}],"functionName":{"name":"add","nativeSrc":"10381:3:75","nodeType":"YulIdentifier","src":"10381:3:75"},"nativeSrc":"10381:22:75","nodeType":"YulFunctionCall","src":"10381:22:75"}],"functionName":{"name":"abi_encode_array_address_to_array_address_fromStack","nativeSrc":"10313:51:75","nodeType":"YulIdentifier","src":"10313:51:75"},"nativeSrc":"10313:91:75","nodeType":"YulFunctionCall","src":"10313:91:75"},"nativeSrc":"10313:91:75","nodeType":"YulExpressionStatement","src":"10313:91:75"}]},"name":"abi_encode_tuple_t_struct$_CurveRoute_$47_memory_ptr__to_t_struct$_CurveRoute_$47_memory_ptr__fromStack_reversed","nativeSrc":"9592:818:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9714:9:75","nodeType":"YulTypedName","src":"9714:9:75","type":""},{"name":"value0","nativeSrc":"9725:6:75","nodeType":"YulTypedName","src":"9725:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9736:4:75","nodeType":"YulTypedName","src":"9736:4:75","type":""}],"src":"9592:818:75"},{"body":{"nativeSrc":"10465:175:75","nodeType":"YulBlock","src":"10465:175:75","statements":[{"nativeSrc":"10475:50:75","nodeType":"YulVariableDeclaration","src":"10475:50:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"10502:1:75","nodeType":"YulIdentifier","src":"10502:1:75"},{"kind":"number","nativeSrc":"10505:4:75","nodeType":"YulLiteral","src":"10505:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10498:3:75","nodeType":"YulIdentifier","src":"10498:3:75"},"nativeSrc":"10498:12:75","nodeType":"YulFunctionCall","src":"10498:12:75"},{"arguments":[{"name":"y","nativeSrc":"10516:1:75","nodeType":"YulIdentifier","src":"10516:1:75"},{"kind":"number","nativeSrc":"10519:4:75","nodeType":"YulLiteral","src":"10519:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10512:3:75","nodeType":"YulIdentifier","src":"10512:3:75"},"nativeSrc":"10512:12:75","nodeType":"YulFunctionCall","src":"10512:12:75"}],"functionName":{"name":"mul","nativeSrc":"10494:3:75","nodeType":"YulIdentifier","src":"10494:3:75"},"nativeSrc":"10494:31:75","nodeType":"YulFunctionCall","src":"10494:31:75"},"variables":[{"name":"product_raw","nativeSrc":"10479:11:75","nodeType":"YulTypedName","src":"10479:11:75","type":""}]},{"nativeSrc":"10534:33:75","nodeType":"YulAssignment","src":"10534:33:75","value":{"arguments":[{"name":"product_raw","nativeSrc":"10549:11:75","nodeType":"YulIdentifier","src":"10549:11:75"},{"kind":"number","nativeSrc":"10562:4:75","nodeType":"YulLiteral","src":"10562:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10545:3:75","nodeType":"YulIdentifier","src":"10545:3:75"},"nativeSrc":"10545:22:75","nodeType":"YulFunctionCall","src":"10545:22:75"},"variableNames":[{"name":"product","nativeSrc":"10534:7:75","nodeType":"YulIdentifier","src":"10534:7:75"}]},{"body":{"nativeSrc":"10612:22:75","nodeType":"YulBlock","src":"10612:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10614:16:75","nodeType":"YulIdentifier","src":"10614:16:75"},"nativeSrc":"10614:18:75","nodeType":"YulFunctionCall","src":"10614:18:75"},"nativeSrc":"10614:18:75","nodeType":"YulExpressionStatement","src":"10614:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"product","nativeSrc":"10589:7:75","nodeType":"YulIdentifier","src":"10589:7:75"},{"name":"product_raw","nativeSrc":"10598:11:75","nodeType":"YulIdentifier","src":"10598:11:75"}],"functionName":{"name":"eq","nativeSrc":"10586:2:75","nodeType":"YulIdentifier","src":"10586:2:75"},"nativeSrc":"10586:24:75","nodeType":"YulFunctionCall","src":"10586:24:75"}],"functionName":{"name":"iszero","nativeSrc":"10579:6:75","nodeType":"YulIdentifier","src":"10579:6:75"},"nativeSrc":"10579:32:75","nodeType":"YulFunctionCall","src":"10579:32:75"},"nativeSrc":"10576:58:75","nodeType":"YulIf","src":"10576:58:75"}]},"name":"checked_mul_t_uint8","nativeSrc":"10415:225:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10444:1:75","nodeType":"YulTypedName","src":"10444:1:75","type":""},{"name":"y","nativeSrc":"10447:1:75","nodeType":"YulTypedName","src":"10447:1:75","type":""}],"returnVariables":[{"name":"product","nativeSrc":"10453:7:75","nodeType":"YulTypedName","src":"10453:7:75","type":""}],"src":"10415:225:75"},{"body":{"nativeSrc":"10677:95:75","nodeType":"YulBlock","src":"10677:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10694:1:75","nodeType":"YulLiteral","src":"10694:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10701:3:75","nodeType":"YulLiteral","src":"10701:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10706:10:75","nodeType":"YulLiteral","src":"10706:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10697:3:75","nodeType":"YulIdentifier","src":"10697:3:75"},"nativeSrc":"10697:20:75","nodeType":"YulFunctionCall","src":"10697:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10687:6:75","nodeType":"YulIdentifier","src":"10687:6:75"},"nativeSrc":"10687:31:75","nodeType":"YulFunctionCall","src":"10687:31:75"},"nativeSrc":"10687:31:75","nodeType":"YulExpressionStatement","src":"10687:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10734:1:75","nodeType":"YulLiteral","src":"10734:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10737:4:75","nodeType":"YulLiteral","src":"10737:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10727:6:75","nodeType":"YulIdentifier","src":"10727:6:75"},"nativeSrc":"10727:15:75","nodeType":"YulFunctionCall","src":"10727:15:75"},"nativeSrc":"10727:15:75","nodeType":"YulExpressionStatement","src":"10727:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10758:1:75","nodeType":"YulLiteral","src":"10758:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10761:4:75","nodeType":"YulLiteral","src":"10761:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10751:6:75","nodeType":"YulIdentifier","src":"10751:6:75"},"nativeSrc":"10751:15:75","nodeType":"YulFunctionCall","src":"10751:15:75"},"nativeSrc":"10751:15:75","nodeType":"YulExpressionStatement","src":"10751:15:75"}]},"name":"panic_error_0x12","nativeSrc":"10645:127:75","nodeType":"YulFunctionDefinition","src":"10645:127:75"},{"body":{"nativeSrc":"10823:171:75","nodeType":"YulBlock","src":"10823:171:75","statements":[{"body":{"nativeSrc":"10854:111:75","nodeType":"YulBlock","src":"10854:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10875:1:75","nodeType":"YulLiteral","src":"10875:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10882:3:75","nodeType":"YulLiteral","src":"10882:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10887:10:75","nodeType":"YulLiteral","src":"10887:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10878:3:75","nodeType":"YulIdentifier","src":"10878:3:75"},"nativeSrc":"10878:20:75","nodeType":"YulFunctionCall","src":"10878:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10868:6:75","nodeType":"YulIdentifier","src":"10868:6:75"},"nativeSrc":"10868:31:75","nodeType":"YulFunctionCall","src":"10868:31:75"},"nativeSrc":"10868:31:75","nodeType":"YulExpressionStatement","src":"10868:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10919:1:75","nodeType":"YulLiteral","src":"10919:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10922:4:75","nodeType":"YulLiteral","src":"10922:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10912:6:75","nodeType":"YulIdentifier","src":"10912:6:75"},"nativeSrc":"10912:15:75","nodeType":"YulFunctionCall","src":"10912:15:75"},"nativeSrc":"10912:15:75","nodeType":"YulExpressionStatement","src":"10912:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10947:1:75","nodeType":"YulLiteral","src":"10947:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10950:4:75","nodeType":"YulLiteral","src":"10950:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10940:6:75","nodeType":"YulIdentifier","src":"10940:6:75"},"nativeSrc":"10940:15:75","nodeType":"YulFunctionCall","src":"10940:15:75"},"nativeSrc":"10940:15:75","nodeType":"YulExpressionStatement","src":"10940:15:75"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"10843:1:75","nodeType":"YulIdentifier","src":"10843:1:75"}],"functionName":{"name":"iszero","nativeSrc":"10836:6:75","nodeType":"YulIdentifier","src":"10836:6:75"},"nativeSrc":"10836:9:75","nodeType":"YulFunctionCall","src":"10836:9:75"},"nativeSrc":"10833:132:75","nodeType":"YulIf","src":"10833:132:75"},{"nativeSrc":"10974:14:75","nodeType":"YulAssignment","src":"10974:14:75","value":{"arguments":[{"name":"x","nativeSrc":"10983:1:75","nodeType":"YulIdentifier","src":"10983:1:75"},{"name":"y","nativeSrc":"10986:1:75","nodeType":"YulIdentifier","src":"10986:1:75"}],"functionName":{"name":"div","nativeSrc":"10979:3:75","nodeType":"YulIdentifier","src":"10979:3:75"},"nativeSrc":"10979:9:75","nodeType":"YulFunctionCall","src":"10979:9:75"},"variableNames":[{"name":"r","nativeSrc":"10974:1:75","nodeType":"YulIdentifier","src":"10974:1:75"}]}]},"name":"checked_div_t_uint256","nativeSrc":"10777:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10808:1:75","nodeType":"YulTypedName","src":"10808:1:75","type":""},{"name":"y","nativeSrc":"10811:1:75","nodeType":"YulTypedName","src":"10811:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"10817:1:75","nodeType":"YulTypedName","src":"10817:1:75","type":""}],"src":"10777:217:75"},{"body":{"nativeSrc":"11370:299:75","nodeType":"YulBlock","src":"11370:299:75","statements":[{"nativeSrc":"11380:28:75","nodeType":"YulAssignment","src":"11380:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11392:9:75","nodeType":"YulIdentifier","src":"11392:9:75"},{"kind":"number","nativeSrc":"11403:4:75","nodeType":"YulLiteral","src":"11403:4:75","type":"","value":"1344"}],"functionName":{"name":"add","nativeSrc":"11388:3:75","nodeType":"YulIdentifier","src":"11388:3:75"},"nativeSrc":"11388:20:75","nodeType":"YulFunctionCall","src":"11388:20:75"},"variableNames":[{"name":"tail","nativeSrc":"11380:4:75","nodeType":"YulIdentifier","src":"11380:4:75"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"11442:6:75","nodeType":"YulIdentifier","src":"11442:6:75"},{"name":"headStart","nativeSrc":"11450:9:75","nodeType":"YulIdentifier","src":"11450:9:75"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"11417:24:75","nodeType":"YulIdentifier","src":"11417:24:75"},"nativeSrc":"11417:43:75","nodeType":"YulFunctionCall","src":"11417:43:75"},"nativeSrc":"11417:43:75","nodeType":"YulExpressionStatement","src":"11417:43:75"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"11500:6:75","nodeType":"YulIdentifier","src":"11500:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"11512:9:75","nodeType":"YulIdentifier","src":"11512:9:75"},{"kind":"number","nativeSrc":"11523:3:75","nodeType":"YulLiteral","src":"11523:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"11508:3:75","nodeType":"YulIdentifier","src":"11508:3:75"},"nativeSrc":"11508:19:75","nodeType":"YulFunctionCall","src":"11508:19:75"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"11469:30:75","nodeType":"YulIdentifier","src":"11469:30:75"},"nativeSrc":"11469:59:75","nodeType":"YulFunctionCall","src":"11469:59:75"},"nativeSrc":"11469:59:75","nodeType":"YulExpressionStatement","src":"11469:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11548:9:75","nodeType":"YulIdentifier","src":"11548:9:75"},{"kind":"number","nativeSrc":"11559:4:75","nodeType":"YulLiteral","src":"11559:4:75","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"11544:3:75","nodeType":"YulIdentifier","src":"11544:3:75"},"nativeSrc":"11544:20:75","nodeType":"YulFunctionCall","src":"11544:20:75"},{"name":"value2","nativeSrc":"11566:6:75","nodeType":"YulIdentifier","src":"11566:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11537:6:75","nodeType":"YulIdentifier","src":"11537:6:75"},"nativeSrc":"11537:36:75","nodeType":"YulFunctionCall","src":"11537:36:75"},"nativeSrc":"11537:36:75","nodeType":"YulExpressionStatement","src":"11537:36:75"},{"expression":{"arguments":[{"name":"value3","nativeSrc":"11634:6:75","nodeType":"YulIdentifier","src":"11634:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"11646:9:75","nodeType":"YulIdentifier","src":"11646:9:75"},{"kind":"number","nativeSrc":"11657:4:75","nodeType":"YulLiteral","src":"11657:4:75","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"11642:3:75","nodeType":"YulIdentifier","src":"11642:3:75"},"nativeSrc":"11642:20:75","nodeType":"YulFunctionCall","src":"11642:20:75"}],"functionName":{"name":"abi_encode_array_address_to_array_address_fromStack","nativeSrc":"11582:51:75","nodeType":"YulIdentifier","src":"11582:51:75"},"nativeSrc":"11582:81:75","nodeType":"YulFunctionCall","src":"11582:81:75"},"nativeSrc":"11582:81:75","nodeType":"YulExpressionStatement","src":"11582:81:75"}]},"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":"10999:670:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11315:9:75","nodeType":"YulTypedName","src":"11315:9:75","type":""},{"name":"value3","nativeSrc":"11326:6:75","nodeType":"YulTypedName","src":"11326:6:75","type":""},{"name":"value2","nativeSrc":"11334:6:75","nodeType":"YulTypedName","src":"11334:6:75","type":""},{"name":"value1","nativeSrc":"11342:6:75","nodeType":"YulTypedName","src":"11342:6:75","type":""},{"name":"value0","nativeSrc":"11350:6:75","nodeType":"YulTypedName","src":"11350:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11361:4:75","nodeType":"YulTypedName","src":"11361:4:75","type":""}],"src":"10999:670:75"},{"body":{"nativeSrc":"12109:415:75","nodeType":"YulBlock","src":"12109:415:75","statements":[{"nativeSrc":"12119:28:75","nodeType":"YulAssignment","src":"12119:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12131:9:75","nodeType":"YulIdentifier","src":"12131:9:75"},{"kind":"number","nativeSrc":"12142:4:75","nodeType":"YulLiteral","src":"12142:4:75","type":"","value":"1408"}],"functionName":{"name":"add","nativeSrc":"12127:3:75","nodeType":"YulIdentifier","src":"12127:3:75"},"nativeSrc":"12127:20:75","nodeType":"YulFunctionCall","src":"12127:20:75"},"variableNames":[{"name":"tail","nativeSrc":"12119:4:75","nodeType":"YulIdentifier","src":"12119:4:75"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"12181:6:75","nodeType":"YulIdentifier","src":"12181:6:75"},{"name":"headStart","nativeSrc":"12189:9:75","nodeType":"YulIdentifier","src":"12189:9:75"}],"functionName":{"name":"abi_encode_array_address","nativeSrc":"12156:24:75","nodeType":"YulIdentifier","src":"12156:24:75"},"nativeSrc":"12156:43:75","nodeType":"YulFunctionCall","src":"12156:43:75"},"nativeSrc":"12156:43:75","nodeType":"YulExpressionStatement","src":"12156:43:75"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"12239:6:75","nodeType":"YulIdentifier","src":"12239:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"12251:9:75","nodeType":"YulIdentifier","src":"12251:9:75"},{"kind":"number","nativeSrc":"12262:3:75","nodeType":"YulLiteral","src":"12262:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"12247:3:75","nodeType":"YulIdentifier","src":"12247:3:75"},"nativeSrc":"12247:19:75","nodeType":"YulFunctionCall","src":"12247:19:75"}],"functionName":{"name":"abi_encode_array_array_uint256","nativeSrc":"12208:30:75","nodeType":"YulIdentifier","src":"12208:30:75"},"nativeSrc":"12208:59:75","nodeType":"YulFunctionCall","src":"12208:59:75"},"nativeSrc":"12208:59:75","nodeType":"YulExpressionStatement","src":"12208:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12287:9:75","nodeType":"YulIdentifier","src":"12287:9:75"},{"kind":"number","nativeSrc":"12298:4:75","nodeType":"YulLiteral","src":"12298:4:75","type":"","value":"1152"}],"functionName":{"name":"add","nativeSrc":"12283:3:75","nodeType":"YulIdentifier","src":"12283:3:75"},"nativeSrc":"12283:20:75","nodeType":"YulFunctionCall","src":"12283:20:75"},{"name":"value2","nativeSrc":"12305:6:75","nodeType":"YulIdentifier","src":"12305:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12276:6:75","nodeType":"YulIdentifier","src":"12276:6:75"},"nativeSrc":"12276:36:75","nodeType":"YulFunctionCall","src":"12276:36:75"},"nativeSrc":"12276:36:75","nodeType":"YulExpressionStatement","src":"12276:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12332:9:75","nodeType":"YulIdentifier","src":"12332:9:75"},{"kind":"number","nativeSrc":"12343:4:75","nodeType":"YulLiteral","src":"12343:4:75","type":"","value":"1184"}],"functionName":{"name":"add","nativeSrc":"12328:3:75","nodeType":"YulIdentifier","src":"12328:3:75"},"nativeSrc":"12328:20:75","nodeType":"YulFunctionCall","src":"12328:20:75"},{"name":"value3","nativeSrc":"12350:6:75","nodeType":"YulIdentifier","src":"12350:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12321:6:75","nodeType":"YulIdentifier","src":"12321:6:75"},"nativeSrc":"12321:36:75","nodeType":"YulFunctionCall","src":"12321:36:75"},"nativeSrc":"12321:36:75","nodeType":"YulExpressionStatement","src":"12321:36:75"},{"expression":{"arguments":[{"name":"value4","nativeSrc":"12418:6:75","nodeType":"YulIdentifier","src":"12418:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"12430:9:75","nodeType":"YulIdentifier","src":"12430:9:75"},{"kind":"number","nativeSrc":"12441:4:75","nodeType":"YulLiteral","src":"12441:4:75","type":"","value":"1216"}],"functionName":{"name":"add","nativeSrc":"12426:3:75","nodeType":"YulIdentifier","src":"12426:3:75"},"nativeSrc":"12426:20:75","nodeType":"YulFunctionCall","src":"12426:20:75"}],"functionName":{"name":"abi_encode_array_address_to_array_address_fromStack","nativeSrc":"12366:51:75","nodeType":"YulIdentifier","src":"12366:51:75"},"nativeSrc":"12366:81:75","nodeType":"YulFunctionCall","src":"12366:81:75"},"nativeSrc":"12366:81:75","nodeType":"YulExpressionStatement","src":"12366:81:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12467:9:75","nodeType":"YulIdentifier","src":"12467:9:75"},{"kind":"number","nativeSrc":"12478:4:75","nodeType":"YulLiteral","src":"12478:4:75","type":"","value":"1376"}],"functionName":{"name":"add","nativeSrc":"12463:3:75","nodeType":"YulIdentifier","src":"12463:3:75"},"nativeSrc":"12463:20:75","nodeType":"YulFunctionCall","src":"12463:20:75"},{"arguments":[{"name":"value5","nativeSrc":"12489:6:75","nodeType":"YulIdentifier","src":"12489:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12505:3:75","nodeType":"YulLiteral","src":"12505:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12510:1:75","nodeType":"YulLiteral","src":"12510:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12501:3:75","nodeType":"YulIdentifier","src":"12501:3:75"},"nativeSrc":"12501:11:75","nodeType":"YulFunctionCall","src":"12501:11:75"},{"kind":"number","nativeSrc":"12514:1:75","nodeType":"YulLiteral","src":"12514:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12497:3:75","nodeType":"YulIdentifier","src":"12497:3:75"},"nativeSrc":"12497:19:75","nodeType":"YulFunctionCall","src":"12497:19:75"}],"functionName":{"name":"and","nativeSrc":"12485:3:75","nodeType":"YulIdentifier","src":"12485:3:75"},"nativeSrc":"12485:32:75","nodeType":"YulFunctionCall","src":"12485:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12456:6:75","nodeType":"YulIdentifier","src":"12456:6:75"},"nativeSrc":"12456:62:75","nodeType":"YulFunctionCall","src":"12456:62:75"},"nativeSrc":"12456:62:75","nodeType":"YulExpressionStatement","src":"12456:62:75"}]},"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":"11674:850:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12038:9:75","nodeType":"YulTypedName","src":"12038:9:75","type":""},{"name":"value5","nativeSrc":"12049:6:75","nodeType":"YulTypedName","src":"12049:6:75","type":""},{"name":"value4","nativeSrc":"12057:6:75","nodeType":"YulTypedName","src":"12057:6:75","type":""},{"name":"value3","nativeSrc":"12065:6:75","nodeType":"YulTypedName","src":"12065:6:75","type":""},{"name":"value2","nativeSrc":"12073:6:75","nodeType":"YulTypedName","src":"12073:6:75","type":""},{"name":"value1","nativeSrc":"12081:6:75","nodeType":"YulTypedName","src":"12081:6:75","type":""},{"name":"value0","nativeSrc":"12089:6:75","nodeType":"YulTypedName","src":"12089:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12100:4:75","nodeType":"YulTypedName","src":"12100:4:75","type":""}],"src":"11674:850:75"},{"body":{"nativeSrc":"12703:171:75","nodeType":"YulBlock","src":"12703:171:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12720:9:75","nodeType":"YulIdentifier","src":"12720:9:75"},{"kind":"number","nativeSrc":"12731:2:75","nodeType":"YulLiteral","src":"12731:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"12713:6:75","nodeType":"YulIdentifier","src":"12713:6:75"},"nativeSrc":"12713:21:75","nodeType":"YulFunctionCall","src":"12713:21:75"},"nativeSrc":"12713:21:75","nodeType":"YulExpressionStatement","src":"12713:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12754:9:75","nodeType":"YulIdentifier","src":"12754:9:75"},{"kind":"number","nativeSrc":"12765:2:75","nodeType":"YulLiteral","src":"12765:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12750:3:75","nodeType":"YulIdentifier","src":"12750:3:75"},"nativeSrc":"12750:18:75","nodeType":"YulFunctionCall","src":"12750:18:75"},{"kind":"number","nativeSrc":"12770:2:75","nodeType":"YulLiteral","src":"12770:2:75","type":"","value":"21"}],"functionName":{"name":"mstore","nativeSrc":"12743:6:75","nodeType":"YulIdentifier","src":"12743:6:75"},"nativeSrc":"12743:30:75","nodeType":"YulFunctionCall","src":"12743:30:75"},"nativeSrc":"12743:30:75","nodeType":"YulExpressionStatement","src":"12743:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12793:9:75","nodeType":"YulIdentifier","src":"12793:9:75"},{"kind":"number","nativeSrc":"12804:2:75","nodeType":"YulLiteral","src":"12804:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12789:3:75","nodeType":"YulIdentifier","src":"12789:3:75"},"nativeSrc":"12789:18:75","nodeType":"YulFunctionCall","src":"12789:18:75"},{"hexValue":"746f416464726573735f6f75744f66426f756e6473","kind":"string","nativeSrc":"12809:23:75","nodeType":"YulLiteral","src":"12809:23:75","type":"","value":"toAddress_outOfBounds"}],"functionName":{"name":"mstore","nativeSrc":"12782:6:75","nodeType":"YulIdentifier","src":"12782:6:75"},"nativeSrc":"12782:51:75","nodeType":"YulFunctionCall","src":"12782:51:75"},"nativeSrc":"12782:51:75","nodeType":"YulExpressionStatement","src":"12782:51:75"},{"nativeSrc":"12842:26:75","nodeType":"YulAssignment","src":"12842:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12854:9:75","nodeType":"YulIdentifier","src":"12854:9:75"},{"kind":"number","nativeSrc":"12865:2:75","nodeType":"YulLiteral","src":"12865:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12850:3:75","nodeType":"YulIdentifier","src":"12850:3:75"},"nativeSrc":"12850:18:75","nodeType":"YulFunctionCall","src":"12850:18:75"},"variableNames":[{"name":"tail","nativeSrc":"12842:4:75","nodeType":"YulIdentifier","src":"12842:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_9f688071e1df0f70b63e3651005878331be1fe9591d6cfb3187cb52a13439e5d__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12529:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12680:9:75","nodeType":"YulTypedName","src":"12680:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12694:4:75","nodeType":"YulTypedName","src":"12694:4:75","type":""}],"src":"12529:345:75"},{"body":{"nativeSrc":"13053:169:75","nodeType":"YulBlock","src":"13053:169:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13070:9:75","nodeType":"YulIdentifier","src":"13070:9:75"},{"kind":"number","nativeSrc":"13081:2:75","nodeType":"YulLiteral","src":"13081:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13063:6:75","nodeType":"YulIdentifier","src":"13063:6:75"},"nativeSrc":"13063:21:75","nodeType":"YulFunctionCall","src":"13063:21:75"},"nativeSrc":"13063:21:75","nodeType":"YulExpressionStatement","src":"13063:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13104:9:75","nodeType":"YulIdentifier","src":"13104:9:75"},{"kind":"number","nativeSrc":"13115:2:75","nodeType":"YulLiteral","src":"13115:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13100:3:75","nodeType":"YulIdentifier","src":"13100:3:75"},"nativeSrc":"13100:18:75","nodeType":"YulFunctionCall","src":"13100:18:75"},{"kind":"number","nativeSrc":"13120:2:75","nodeType":"YulLiteral","src":"13120:2:75","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"13093:6:75","nodeType":"YulIdentifier","src":"13093:6:75"},"nativeSrc":"13093:30:75","nodeType":"YulFunctionCall","src":"13093:30:75"},"nativeSrc":"13093:30:75","nodeType":"YulExpressionStatement","src":"13093:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13143:9:75","nodeType":"YulIdentifier","src":"13143:9:75"},{"kind":"number","nativeSrc":"13154:2:75","nodeType":"YulLiteral","src":"13154:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13139:3:75","nodeType":"YulIdentifier","src":"13139:3:75"},"nativeSrc":"13139:18:75","nodeType":"YulFunctionCall","src":"13139:18:75"},{"hexValue":"746f55696e74385f6f75744f66426f756e6473","kind":"string","nativeSrc":"13159:21:75","nodeType":"YulLiteral","src":"13159:21:75","type":"","value":"toUint8_outOfBounds"}],"functionName":{"name":"mstore","nativeSrc":"13132:6:75","nodeType":"YulIdentifier","src":"13132:6:75"},"nativeSrc":"13132:49:75","nodeType":"YulFunctionCall","src":"13132:49:75"},"nativeSrc":"13132:49:75","nodeType":"YulExpressionStatement","src":"13132:49:75"},{"nativeSrc":"13190:26:75","nodeType":"YulAssignment","src":"13190:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13202:9:75","nodeType":"YulIdentifier","src":"13202:9:75"},{"kind":"number","nativeSrc":"13213:2:75","nodeType":"YulLiteral","src":"13213:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13198:3:75","nodeType":"YulIdentifier","src":"13198:3:75"},"nativeSrc":"13198:18:75","nodeType":"YulFunctionCall","src":"13198:18:75"},"variableNames":[{"name":"tail","nativeSrc":"13190:4:75","nodeType":"YulIdentifier","src":"13190:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_ce6d7be00009dd45cc670fb6c2ceee25786f142bcb64e7f1ee73012b26bb6ca1__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12879:343:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13030:9:75","nodeType":"YulTypedName","src":"13030:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13044:4:75","nodeType":"YulTypedName","src":"13044:4:75","type":""}],"src":"12879:343:75"},{"body":{"nativeSrc":"13324:87:75","nodeType":"YulBlock","src":"13324:87:75","statements":[{"nativeSrc":"13334:26:75","nodeType":"YulAssignment","src":"13334:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13346:9:75","nodeType":"YulIdentifier","src":"13346:9:75"},{"kind":"number","nativeSrc":"13357:2:75","nodeType":"YulLiteral","src":"13357:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13342:3:75","nodeType":"YulIdentifier","src":"13342:3:75"},"nativeSrc":"13342:18:75","nodeType":"YulFunctionCall","src":"13342:18:75"},"variableNames":[{"name":"tail","nativeSrc":"13334:4:75","nodeType":"YulIdentifier","src":"13334:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13376:9:75","nodeType":"YulIdentifier","src":"13376:9:75"},{"arguments":[{"name":"value0","nativeSrc":"13391:6:75","nodeType":"YulIdentifier","src":"13391:6:75"},{"kind":"number","nativeSrc":"13399:4:75","nodeType":"YulLiteral","src":"13399:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13387:3:75","nodeType":"YulIdentifier","src":"13387:3:75"},"nativeSrc":"13387:17:75","nodeType":"YulFunctionCall","src":"13387:17:75"}],"functionName":{"name":"mstore","nativeSrc":"13369:6:75","nodeType":"YulIdentifier","src":"13369:6:75"},"nativeSrc":"13369:36:75","nodeType":"YulFunctionCall","src":"13369:36:75"},"nativeSrc":"13369:36:75","nodeType":"YulExpressionStatement","src":"13369:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"13227:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13293:9:75","nodeType":"YulTypedName","src":"13293:9:75","type":""},{"name":"value0","nativeSrc":"13304:6:75","nodeType":"YulTypedName","src":"13304:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13315:4:75","nodeType":"YulTypedName","src":"13315:4:75","type":""}],"src":"13227:184:75"},{"body":{"nativeSrc":"13462:102:75","nodeType":"YulBlock","src":"13462:102:75","statements":[{"nativeSrc":"13472:38:75","nodeType":"YulAssignment","src":"13472:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13487:1:75","nodeType":"YulIdentifier","src":"13487:1:75"},{"kind":"number","nativeSrc":"13490:4:75","nodeType":"YulLiteral","src":"13490:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13483:3:75","nodeType":"YulIdentifier","src":"13483:3:75"},"nativeSrc":"13483:12:75","nodeType":"YulFunctionCall","src":"13483:12:75"},{"arguments":[{"name":"y","nativeSrc":"13501:1:75","nodeType":"YulIdentifier","src":"13501:1:75"},{"kind":"number","nativeSrc":"13504:4:75","nodeType":"YulLiteral","src":"13504:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13497:3:75","nodeType":"YulIdentifier","src":"13497:3:75"},"nativeSrc":"13497:12:75","nodeType":"YulFunctionCall","src":"13497:12:75"}],"functionName":{"name":"add","nativeSrc":"13479:3:75","nodeType":"YulIdentifier","src":"13479:3:75"},"nativeSrc":"13479:31:75","nodeType":"YulFunctionCall","src":"13479:31:75"},"variableNames":[{"name":"sum","nativeSrc":"13472:3:75","nodeType":"YulIdentifier","src":"13472:3:75"}]},{"body":{"nativeSrc":"13536:22:75","nodeType":"YulBlock","src":"13536:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13538:16:75","nodeType":"YulIdentifier","src":"13538:16:75"},"nativeSrc":"13538:18:75","nodeType":"YulFunctionCall","src":"13538:18:75"},"nativeSrc":"13538:18:75","nodeType":"YulExpressionStatement","src":"13538:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"13525:3:75","nodeType":"YulIdentifier","src":"13525:3:75"},{"kind":"number","nativeSrc":"13530:4:75","nodeType":"YulLiteral","src":"13530:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"13522:2:75","nodeType":"YulIdentifier","src":"13522:2:75"},"nativeSrc":"13522:13:75","nodeType":"YulFunctionCall","src":"13522:13:75"},"nativeSrc":"13519:39:75","nodeType":"YulIf","src":"13519:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"13416:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13445:1:75","nodeType":"YulTypedName","src":"13445:1:75","type":""},{"name":"y","nativeSrc":"13448:1:75","nodeType":"YulTypedName","src":"13448:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"13454:3:75","nodeType":"YulTypedName","src":"13454:3:75","type":""}],"src":"13416:148:75"},{"body":{"nativeSrc":"13648:194:75","nodeType":"YulBlock","src":"13648:194:75","statements":[{"body":{"nativeSrc":"13694:16:75","nodeType":"YulBlock","src":"13694:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13703:1:75","nodeType":"YulLiteral","src":"13703:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13706:1:75","nodeType":"YulLiteral","src":"13706:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13696:6:75","nodeType":"YulIdentifier","src":"13696:6:75"},"nativeSrc":"13696:12:75","nodeType":"YulFunctionCall","src":"13696:12:75"},"nativeSrc":"13696:12:75","nodeType":"YulExpressionStatement","src":"13696:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13669:7:75","nodeType":"YulIdentifier","src":"13669:7:75"},{"name":"headStart","nativeSrc":"13678:9:75","nodeType":"YulIdentifier","src":"13678:9:75"}],"functionName":{"name":"sub","nativeSrc":"13665:3:75","nodeType":"YulIdentifier","src":"13665:3:75"},"nativeSrc":"13665:23:75","nodeType":"YulFunctionCall","src":"13665:23:75"},{"kind":"number","nativeSrc":"13690:2:75","nodeType":"YulLiteral","src":"13690:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13661:3:75","nodeType":"YulIdentifier","src":"13661:3:75"},"nativeSrc":"13661:32:75","nodeType":"YulFunctionCall","src":"13661:32:75"},"nativeSrc":"13658:52:75","nodeType":"YulIf","src":"13658:52:75"},{"nativeSrc":"13719:29:75","nodeType":"YulVariableDeclaration","src":"13719:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13738:9:75","nodeType":"YulIdentifier","src":"13738:9:75"}],"functionName":{"name":"mload","nativeSrc":"13732:5:75","nodeType":"YulIdentifier","src":"13732:5:75"},"nativeSrc":"13732:16:75","nodeType":"YulFunctionCall","src":"13732:16:75"},"variables":[{"name":"value","nativeSrc":"13723:5:75","nodeType":"YulTypedName","src":"13723:5:75","type":""}]},{"body":{"nativeSrc":"13796:16:75","nodeType":"YulBlock","src":"13796:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13805:1:75","nodeType":"YulLiteral","src":"13805:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13808:1:75","nodeType":"YulLiteral","src":"13808:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13798:6:75","nodeType":"YulIdentifier","src":"13798:6:75"},"nativeSrc":"13798:12:75","nodeType":"YulFunctionCall","src":"13798:12:75"},"nativeSrc":"13798:12:75","nodeType":"YulExpressionStatement","src":"13798:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13770:5:75","nodeType":"YulIdentifier","src":"13770:5:75"},{"arguments":[{"name":"value","nativeSrc":"13781:5:75","nodeType":"YulIdentifier","src":"13781:5:75"},{"kind":"number","nativeSrc":"13788:4:75","nodeType":"YulLiteral","src":"13788:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13777:3:75","nodeType":"YulIdentifier","src":"13777:3:75"},"nativeSrc":"13777:16:75","nodeType":"YulFunctionCall","src":"13777:16:75"}],"functionName":{"name":"eq","nativeSrc":"13767:2:75","nodeType":"YulIdentifier","src":"13767:2:75"},"nativeSrc":"13767:27:75","nodeType":"YulFunctionCall","src":"13767:27:75"}],"functionName":{"name":"iszero","nativeSrc":"13760:6:75","nodeType":"YulIdentifier","src":"13760:6:75"},"nativeSrc":"13760:35:75","nodeType":"YulFunctionCall","src":"13760:35:75"},"nativeSrc":"13757:55:75","nodeType":"YulIf","src":"13757:55:75"},{"nativeSrc":"13821:15:75","nodeType":"YulAssignment","src":"13821:15:75","value":{"name":"value","nativeSrc":"13831:5:75","nodeType":"YulIdentifier","src":"13831:5:75"},"variableNames":[{"name":"value0","nativeSrc":"13821:6:75","nodeType":"YulIdentifier","src":"13821:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"13569:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13614:9:75","nodeType":"YulTypedName","src":"13614:9:75","type":""},{"name":"dataEnd","nativeSrc":"13625:7:75","nodeType":"YulTypedName","src":"13625:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13637:6:75","nodeType":"YulTypedName","src":"13637:6:75","type":""}],"src":"13569:273:75"},{"body":{"nativeSrc":"13894:104:75","nodeType":"YulBlock","src":"13894:104:75","statements":[{"nativeSrc":"13904:39:75","nodeType":"YulAssignment","src":"13904:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"13920:1:75","nodeType":"YulIdentifier","src":"13920:1:75"},{"kind":"number","nativeSrc":"13923:4:75","nodeType":"YulLiteral","src":"13923:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13916:3:75","nodeType":"YulIdentifier","src":"13916:3:75"},"nativeSrc":"13916:12:75","nodeType":"YulFunctionCall","src":"13916:12:75"},{"arguments":[{"name":"y","nativeSrc":"13934:1:75","nodeType":"YulIdentifier","src":"13934:1:75"},{"kind":"number","nativeSrc":"13937:4:75","nodeType":"YulLiteral","src":"13937:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13930:3:75","nodeType":"YulIdentifier","src":"13930:3:75"},"nativeSrc":"13930:12:75","nodeType":"YulFunctionCall","src":"13930:12:75"}],"functionName":{"name":"sub","nativeSrc":"13912:3:75","nodeType":"YulIdentifier","src":"13912:3:75"},"nativeSrc":"13912:31:75","nodeType":"YulFunctionCall","src":"13912:31:75"},"variableNames":[{"name":"diff","nativeSrc":"13904:4:75","nodeType":"YulIdentifier","src":"13904:4:75"}]},{"body":{"nativeSrc":"13970:22:75","nodeType":"YulBlock","src":"13970:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13972:16:75","nodeType":"YulIdentifier","src":"13972:16:75"},"nativeSrc":"13972:18:75","nodeType":"YulFunctionCall","src":"13972:18:75"},"nativeSrc":"13972:18:75","nodeType":"YulExpressionStatement","src":"13972:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"13958:4:75","nodeType":"YulIdentifier","src":"13958:4:75"},{"kind":"number","nativeSrc":"13964:4:75","nodeType":"YulLiteral","src":"13964:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"13955:2:75","nodeType":"YulIdentifier","src":"13955:2:75"},"nativeSrc":"13955:14:75","nodeType":"YulFunctionCall","src":"13955:14:75"},"nativeSrc":"13952:40:75","nodeType":"YulIf","src":"13952:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"13847:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"13876:1:75","nodeType":"YulTypedName","src":"13876:1:75","type":""},{"name":"y","nativeSrc":"13879:1:75","nodeType":"YulTypedName","src":"13879:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"13885:4:75","nodeType":"YulTypedName","src":"13885:4:75","type":""}],"src":"13847:151:75"},{"body":{"nativeSrc":"14072:306:75","nodeType":"YulBlock","src":"14072:306:75","statements":[{"nativeSrc":"14082:10:75","nodeType":"YulAssignment","src":"14082:10:75","value":{"kind":"number","nativeSrc":"14091:1:75","nodeType":"YulLiteral","src":"14091:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14082:5:75","nodeType":"YulIdentifier","src":"14082:5:75"}]},{"nativeSrc":"14101:13:75","nodeType":"YulAssignment","src":"14101:13:75","value":{"name":"_base","nativeSrc":"14109:5:75","nodeType":"YulIdentifier","src":"14109:5:75"},"variableNames":[{"name":"base","nativeSrc":"14101:4:75","nodeType":"YulIdentifier","src":"14101:4:75"}]},{"body":{"nativeSrc":"14159:213:75","nodeType":"YulBlock","src":"14159:213:75","statements":[{"body":{"nativeSrc":"14201:22:75","nodeType":"YulBlock","src":"14201:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14203:16:75","nodeType":"YulIdentifier","src":"14203:16:75"},"nativeSrc":"14203:18:75","nodeType":"YulFunctionCall","src":"14203:18:75"},"nativeSrc":"14203:18:75","nodeType":"YulExpressionStatement","src":"14203:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"14179:4:75","nodeType":"YulIdentifier","src":"14179:4:75"},{"arguments":[{"name":"max","nativeSrc":"14189:3:75","nodeType":"YulIdentifier","src":"14189:3:75"},{"name":"base","nativeSrc":"14194:4:75","nodeType":"YulIdentifier","src":"14194:4:75"}],"functionName":{"name":"div","nativeSrc":"14185:3:75","nodeType":"YulIdentifier","src":"14185:3:75"},"nativeSrc":"14185:14:75","nodeType":"YulFunctionCall","src":"14185:14:75"}],"functionName":{"name":"gt","nativeSrc":"14176:2:75","nodeType":"YulIdentifier","src":"14176:2:75"},"nativeSrc":"14176:24:75","nodeType":"YulFunctionCall","src":"14176:24:75"},"nativeSrc":"14173:50:75","nodeType":"YulIf","src":"14173:50:75"},{"body":{"nativeSrc":"14256:29:75","nodeType":"YulBlock","src":"14256:29:75","statements":[{"nativeSrc":"14258:25:75","nodeType":"YulAssignment","src":"14258:25:75","value":{"arguments":[{"name":"power","nativeSrc":"14271:5:75","nodeType":"YulIdentifier","src":"14271:5:75"},{"name":"base","nativeSrc":"14278:4:75","nodeType":"YulIdentifier","src":"14278:4:75"}],"functionName":{"name":"mul","nativeSrc":"14267:3:75","nodeType":"YulIdentifier","src":"14267:3:75"},"nativeSrc":"14267:16:75","nodeType":"YulFunctionCall","src":"14267:16:75"},"variableNames":[{"name":"power","nativeSrc":"14258:5:75","nodeType":"YulIdentifier","src":"14258:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14243:8:75","nodeType":"YulIdentifier","src":"14243:8:75"},{"kind":"number","nativeSrc":"14253:1:75","nodeType":"YulLiteral","src":"14253:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14239:3:75","nodeType":"YulIdentifier","src":"14239:3:75"},"nativeSrc":"14239:16:75","nodeType":"YulFunctionCall","src":"14239:16:75"},"nativeSrc":"14236:49:75","nodeType":"YulIf","src":"14236:49:75"},{"nativeSrc":"14298:23:75","nodeType":"YulAssignment","src":"14298:23:75","value":{"arguments":[{"name":"base","nativeSrc":"14310:4:75","nodeType":"YulIdentifier","src":"14310:4:75"},{"name":"base","nativeSrc":"14316:4:75","nodeType":"YulIdentifier","src":"14316:4:75"}],"functionName":{"name":"mul","nativeSrc":"14306:3:75","nodeType":"YulIdentifier","src":"14306:3:75"},"nativeSrc":"14306:15:75","nodeType":"YulFunctionCall","src":"14306:15:75"},"variableNames":[{"name":"base","nativeSrc":"14298:4:75","nodeType":"YulIdentifier","src":"14298:4:75"}]},{"nativeSrc":"14334:28:75","nodeType":"YulAssignment","src":"14334:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"14350:1:75","nodeType":"YulLiteral","src":"14350:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"14353:8:75","nodeType":"YulIdentifier","src":"14353:8:75"}],"functionName":{"name":"shr","nativeSrc":"14346:3:75","nodeType":"YulIdentifier","src":"14346:3:75"},"nativeSrc":"14346:16:75","nodeType":"YulFunctionCall","src":"14346:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"14334:8:75","nodeType":"YulIdentifier","src":"14334:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14134:8:75","nodeType":"YulIdentifier","src":"14134:8:75"},{"kind":"number","nativeSrc":"14144:1:75","nodeType":"YulLiteral","src":"14144:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"14131:2:75","nodeType":"YulIdentifier","src":"14131:2:75"},"nativeSrc":"14131:15:75","nodeType":"YulFunctionCall","src":"14131:15:75"},"nativeSrc":"14123:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"14147:3:75","nodeType":"YulBlock","src":"14147:3:75","statements":[]},"pre":{"nativeSrc":"14127:3:75","nodeType":"YulBlock","src":"14127:3:75","statements":[]},"src":"14123:249:75"}]},"name":"checked_exp_helper","nativeSrc":"14003:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"14031:5:75","nodeType":"YulTypedName","src":"14031:5:75","type":""},{"name":"exponent","nativeSrc":"14038:8:75","nodeType":"YulTypedName","src":"14038:8:75","type":""},{"name":"max","nativeSrc":"14048:3:75","nodeType":"YulTypedName","src":"14048:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"14056:5:75","nodeType":"YulTypedName","src":"14056:5:75","type":""},{"name":"base","nativeSrc":"14063:4:75","nodeType":"YulTypedName","src":"14063:4:75","type":""}],"src":"14003:375:75"},{"body":{"nativeSrc":"14442:843:75","nodeType":"YulBlock","src":"14442:843:75","statements":[{"body":{"nativeSrc":"14480:52:75","nodeType":"YulBlock","src":"14480:52:75","statements":[{"nativeSrc":"14494:10:75","nodeType":"YulAssignment","src":"14494:10:75","value":{"kind":"number","nativeSrc":"14503:1:75","nodeType":"YulLiteral","src":"14503:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14494:5:75","nodeType":"YulIdentifier","src":"14494:5:75"}]},{"nativeSrc":"14517:5:75","nodeType":"YulLeave","src":"14517:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14462:8:75","nodeType":"YulIdentifier","src":"14462:8:75"}],"functionName":{"name":"iszero","nativeSrc":"14455:6:75","nodeType":"YulIdentifier","src":"14455:6:75"},"nativeSrc":"14455:16:75","nodeType":"YulFunctionCall","src":"14455:16:75"},"nativeSrc":"14452:80:75","nodeType":"YulIf","src":"14452:80:75"},{"body":{"nativeSrc":"14565:52:75","nodeType":"YulBlock","src":"14565:52:75","statements":[{"nativeSrc":"14579:10:75","nodeType":"YulAssignment","src":"14579:10:75","value":{"kind":"number","nativeSrc":"14588:1:75","nodeType":"YulLiteral","src":"14588:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"14579:5:75","nodeType":"YulIdentifier","src":"14579:5:75"}]},{"nativeSrc":"14602:5:75","nodeType":"YulLeave","src":"14602:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"14551:4:75","nodeType":"YulIdentifier","src":"14551:4:75"}],"functionName":{"name":"iszero","nativeSrc":"14544:6:75","nodeType":"YulIdentifier","src":"14544:6:75"},"nativeSrc":"14544:12:75","nodeType":"YulFunctionCall","src":"14544:12:75"},"nativeSrc":"14541:76:75","nodeType":"YulIf","src":"14541:76:75"},{"cases":[{"body":{"nativeSrc":"14653:52:75","nodeType":"YulBlock","src":"14653:52:75","statements":[{"nativeSrc":"14667:10:75","nodeType":"YulAssignment","src":"14667:10:75","value":{"kind":"number","nativeSrc":"14676:1:75","nodeType":"YulLiteral","src":"14676:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"14667:5:75","nodeType":"YulIdentifier","src":"14667:5:75"}]},{"nativeSrc":"14690:5:75","nodeType":"YulLeave","src":"14690:5:75"}]},"nativeSrc":"14646:59:75","nodeType":"YulCase","src":"14646:59:75","value":{"kind":"number","nativeSrc":"14651:1:75","nodeType":"YulLiteral","src":"14651:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"14721:167:75","nodeType":"YulBlock","src":"14721:167:75","statements":[{"body":{"nativeSrc":"14756:22:75","nodeType":"YulBlock","src":"14756:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14758:16:75","nodeType":"YulIdentifier","src":"14758:16:75"},"nativeSrc":"14758:18:75","nodeType":"YulFunctionCall","src":"14758:18:75"},"nativeSrc":"14758:18:75","nodeType":"YulExpressionStatement","src":"14758:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"14741:8:75","nodeType":"YulIdentifier","src":"14741:8:75"},{"kind":"number","nativeSrc":"14751:3:75","nodeType":"YulLiteral","src":"14751:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"14738:2:75","nodeType":"YulIdentifier","src":"14738:2:75"},"nativeSrc":"14738:17:75","nodeType":"YulFunctionCall","src":"14738:17:75"},"nativeSrc":"14735:43:75","nodeType":"YulIf","src":"14735:43:75"},{"nativeSrc":"14791:25:75","nodeType":"YulAssignment","src":"14791:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"14804:8:75","nodeType":"YulIdentifier","src":"14804:8:75"},{"kind":"number","nativeSrc":"14814:1:75","nodeType":"YulLiteral","src":"14814:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14800:3:75","nodeType":"YulIdentifier","src":"14800:3:75"},"nativeSrc":"14800:16:75","nodeType":"YulFunctionCall","src":"14800:16:75"},"variableNames":[{"name":"power","nativeSrc":"14791:5:75","nodeType":"YulIdentifier","src":"14791:5:75"}]},{"nativeSrc":"14829:11:75","nodeType":"YulVariableDeclaration","src":"14829:11:75","value":{"kind":"number","nativeSrc":"14839:1:75","nodeType":"YulLiteral","src":"14839:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"14833:2:75","nodeType":"YulTypedName","src":"14833:2:75","type":""}]},{"nativeSrc":"14853:7:75","nodeType":"YulAssignment","src":"14853:7:75","value":{"kind":"number","nativeSrc":"14859:1:75","nodeType":"YulLiteral","src":"14859:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"14853:2:75","nodeType":"YulIdentifier","src":"14853:2:75"}]},{"nativeSrc":"14873:5:75","nodeType":"YulLeave","src":"14873:5:75"}]},"nativeSrc":"14714:174:75","nodeType":"YulCase","src":"14714:174:75","value":{"kind":"number","nativeSrc":"14719:1:75","nodeType":"YulLiteral","src":"14719:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"14633:4:75","nodeType":"YulIdentifier","src":"14633:4:75"},"nativeSrc":"14626:262:75","nodeType":"YulSwitch","src":"14626:262:75"},{"body":{"nativeSrc":"14986:114:75","nodeType":"YulBlock","src":"14986:114:75","statements":[{"nativeSrc":"15000:28:75","nodeType":"YulAssignment","src":"15000:28:75","value":{"arguments":[{"name":"base","nativeSrc":"15013:4:75","nodeType":"YulIdentifier","src":"15013:4:75"},{"name":"exponent","nativeSrc":"15019:8:75","nodeType":"YulIdentifier","src":"15019:8:75"}],"functionName":{"name":"exp","nativeSrc":"15009:3:75","nodeType":"YulIdentifier","src":"15009:3:75"},"nativeSrc":"15009:19:75","nodeType":"YulFunctionCall","src":"15009:19:75"},"variableNames":[{"name":"power","nativeSrc":"15000:5:75","nodeType":"YulIdentifier","src":"15000:5:75"}]},{"nativeSrc":"15041:11:75","nodeType":"YulVariableDeclaration","src":"15041:11:75","value":{"kind":"number","nativeSrc":"15051:1:75","nodeType":"YulLiteral","src":"15051:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"15045:2:75","nodeType":"YulTypedName","src":"15045:2:75","type":""}]},{"nativeSrc":"15065:7:75","nodeType":"YulAssignment","src":"15065:7:75","value":{"kind":"number","nativeSrc":"15071:1:75","nodeType":"YulLiteral","src":"15071:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"15065:2:75","nodeType":"YulIdentifier","src":"15065:2:75"}]},{"nativeSrc":"15085:5:75","nodeType":"YulLeave","src":"15085:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"14910:4:75","nodeType":"YulIdentifier","src":"14910:4:75"},{"kind":"number","nativeSrc":"14916:2:75","nodeType":"YulLiteral","src":"14916:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"14907:2:75","nodeType":"YulIdentifier","src":"14907:2:75"},"nativeSrc":"14907:12:75","nodeType":"YulFunctionCall","src":"14907:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"14924:8:75","nodeType":"YulIdentifier","src":"14924:8:75"},{"kind":"number","nativeSrc":"14934:2:75","nodeType":"YulLiteral","src":"14934:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"14921:2:75","nodeType":"YulIdentifier","src":"14921:2:75"},"nativeSrc":"14921:16:75","nodeType":"YulFunctionCall","src":"14921:16:75"}],"functionName":{"name":"and","nativeSrc":"14903:3:75","nodeType":"YulIdentifier","src":"14903:3:75"},"nativeSrc":"14903:35:75","nodeType":"YulFunctionCall","src":"14903:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"14947:4:75","nodeType":"YulIdentifier","src":"14947:4:75"},{"kind":"number","nativeSrc":"14953:3:75","nodeType":"YulLiteral","src":"14953:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"14944:2:75","nodeType":"YulIdentifier","src":"14944:2:75"},"nativeSrc":"14944:13:75","nodeType":"YulFunctionCall","src":"14944:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"14962:8:75","nodeType":"YulIdentifier","src":"14962:8:75"},{"kind":"number","nativeSrc":"14972:2:75","nodeType":"YulLiteral","src":"14972:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14959:2:75","nodeType":"YulIdentifier","src":"14959:2:75"},"nativeSrc":"14959:16:75","nodeType":"YulFunctionCall","src":"14959:16:75"}],"functionName":{"name":"and","nativeSrc":"14940:3:75","nodeType":"YulIdentifier","src":"14940:3:75"},"nativeSrc":"14940:36:75","nodeType":"YulFunctionCall","src":"14940:36:75"}],"functionName":{"name":"or","nativeSrc":"14900:2:75","nodeType":"YulIdentifier","src":"14900:2:75"},"nativeSrc":"14900:77:75","nodeType":"YulFunctionCall","src":"14900:77:75"},"nativeSrc":"14897:203:75","nodeType":"YulIf","src":"14897:203:75"},{"nativeSrc":"15109:65:75","nodeType":"YulVariableDeclaration","src":"15109:65:75","value":{"arguments":[{"name":"base","nativeSrc":"15151:4:75","nodeType":"YulIdentifier","src":"15151:4:75"},{"name":"exponent","nativeSrc":"15157:8:75","nodeType":"YulIdentifier","src":"15157:8:75"},{"arguments":[{"kind":"number","nativeSrc":"15171:1:75","nodeType":"YulLiteral","src":"15171:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15167:3:75","nodeType":"YulIdentifier","src":"15167:3:75"},"nativeSrc":"15167:6:75","nodeType":"YulFunctionCall","src":"15167:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"15132:18:75","nodeType":"YulIdentifier","src":"15132:18:75"},"nativeSrc":"15132:42:75","nodeType":"YulFunctionCall","src":"15132:42:75"},"variables":[{"name":"power_1","nativeSrc":"15113:7:75","nodeType":"YulTypedName","src":"15113:7:75","type":""},{"name":"base_1","nativeSrc":"15122:6:75","nodeType":"YulTypedName","src":"15122:6:75","type":""}]},{"body":{"nativeSrc":"15219:22:75","nodeType":"YulBlock","src":"15219:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15221:16:75","nodeType":"YulIdentifier","src":"15221:16:75"},"nativeSrc":"15221:18:75","nodeType":"YulFunctionCall","src":"15221:18:75"},"nativeSrc":"15221:18:75","nodeType":"YulExpressionStatement","src":"15221:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"15189:7:75","nodeType":"YulIdentifier","src":"15189:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15206:1:75","nodeType":"YulLiteral","src":"15206:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15202:3:75","nodeType":"YulIdentifier","src":"15202:3:75"},"nativeSrc":"15202:6:75","nodeType":"YulFunctionCall","src":"15202:6:75"},{"name":"base_1","nativeSrc":"15210:6:75","nodeType":"YulIdentifier","src":"15210:6:75"}],"functionName":{"name":"div","nativeSrc":"15198:3:75","nodeType":"YulIdentifier","src":"15198:3:75"},"nativeSrc":"15198:19:75","nodeType":"YulFunctionCall","src":"15198:19:75"}],"functionName":{"name":"gt","nativeSrc":"15186:2:75","nodeType":"YulIdentifier","src":"15186:2:75"},"nativeSrc":"15186:32:75","nodeType":"YulFunctionCall","src":"15186:32:75"},"nativeSrc":"15183:58:75","nodeType":"YulIf","src":"15183:58:75"},{"nativeSrc":"15250:29:75","nodeType":"YulAssignment","src":"15250:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"15263:7:75","nodeType":"YulIdentifier","src":"15263:7:75"},{"name":"base_1","nativeSrc":"15272:6:75","nodeType":"YulIdentifier","src":"15272:6:75"}],"functionName":{"name":"mul","nativeSrc":"15259:3:75","nodeType":"YulIdentifier","src":"15259:3:75"},"nativeSrc":"15259:20:75","nodeType":"YulFunctionCall","src":"15259:20:75"},"variableNames":[{"name":"power","nativeSrc":"15250:5:75","nodeType":"YulIdentifier","src":"15250:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"14383:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"14413:4:75","nodeType":"YulTypedName","src":"14413:4:75","type":""},{"name":"exponent","nativeSrc":"14419:8:75","nodeType":"YulTypedName","src":"14419:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"14432:5:75","nodeType":"YulTypedName","src":"14432:5:75","type":""}],"src":"14383:902:75"},{"body":{"nativeSrc":"15358:72:75","nodeType":"YulBlock","src":"15358:72:75","statements":[{"nativeSrc":"15368:56:75","nodeType":"YulAssignment","src":"15368:56:75","value":{"arguments":[{"name":"base","nativeSrc":"15398:4:75","nodeType":"YulIdentifier","src":"15398:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"15408:8:75","nodeType":"YulIdentifier","src":"15408:8:75"},{"kind":"number","nativeSrc":"15418:4:75","nodeType":"YulLiteral","src":"15418:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15404:3:75","nodeType":"YulIdentifier","src":"15404:3:75"},"nativeSrc":"15404:19:75","nodeType":"YulFunctionCall","src":"15404:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"15377:20:75","nodeType":"YulIdentifier","src":"15377:20:75"},"nativeSrc":"15377:47:75","nodeType":"YulFunctionCall","src":"15377:47:75"},"variableNames":[{"name":"power","nativeSrc":"15368:5:75","nodeType":"YulIdentifier","src":"15368:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"15290:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"15329:4:75","nodeType":"YulTypedName","src":"15329:4:75","type":""},{"name":"exponent","nativeSrc":"15335:8:75","nodeType":"YulTypedName","src":"15335:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"15348:5:75","nodeType":"YulTypedName","src":"15348:5:75","type":""}],"src":"15290:140:75"}]},"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_$624_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_$624_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_$616(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_$630_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_$13432_memory_ptr__to_t_struct$_ExactOutputSingleParams_$13432_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_$13386_memory_ptr__to_t_struct$_ExactInputSingleParams_$13386_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_to_array_address_fromStack(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_to_array_address_fromStack(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_$47_memory_ptr__to_t_struct$_CurveRoute_$47_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_to_array_address_fromStack(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_to_array_address_fromStack(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_to_array_address_fromStack(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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361061004a575f3560e01c8063581e517d1461004e578063775669151461007f578063b2fca32c1461009e575b5f5ffd5b818015610059575f5ffd5b5061006d610068366004611662565b6100b3565b60405190815260200160405180910390f35b81801561008a575f5ffd5b5061006d610099366004611662565b61012b565b6100b16100ac3660046116d1565b610190565b005b5f60016100c3602088018861171f565b60028111156100d4576100d461170b565b036100ed576100e686868686866102d6565b9050610122565b60026100fc602088018861171f565b600281111561010d5761010d61170b565b0361011f576100e6868686868661050e565b505f5b95945050505050565b5f600161013b602088018861171f565b600281111561014c5761014c61170b565b0361015e576100e686868686866106c6565b600261016d602088018861171f565b600281111561017e5761017e61170b565b0361011f576100e68686868686610908565b80602001355f036101b457604051633b3a5b4760e21b815260040160405180910390fd5b60016101c3602083018361171f565b60028111156101d4576101d461170b565b0361024c575f6101e7604083018361173d565b8101906101f49190611787565b60208101519091506001600160a01b03166102225760405163e35d3f9360e01b815260040160405180910390fd5b805162ffffff165f036102485760405163c087296d60e01b815260040160405180910390fd5b5050565b600261025b602083018361171f565b600281111561026c5761026c61170b565b036102bd576102ba610281604083018361173d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610aee92505050565b50565b6040516301fc71f560e21b815260040160405180910390fd5b5f806102e5604088018861173d565b8101906102f29190611787565b90505f610306858960200135898988610d2c565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291925088169063095ea7b3906044016020604051808303815f875af115801561035a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037e91906117f9565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663db3e2198836040518263ffffffff1660e01b8152600401610419919061188d565b6020604051808303815f875af1158015610435573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610459919061189c565b602085015160405163095ea7b360e01b81526001600160a01b0391821660048201525f60248201529192508a169063095ea7b3906044016020604051808303815f875af11580156104ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d091906117f9565b508281111561050157604051634641f9e160e01b815260048101829052602481018490526044015b60405180910390fd5b9998505050505050505050565b5f808061055e61052160408a018a61173d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508b92508a9150610d8f9050565b915091505f610574868a602001358a8a89610d2c565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018390529192509089169063095ea7b3906044016020604051808303815f875af11580156105c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e891906117f9565b505f805b87158015906105fb5750600281105b15610648575f5f61060d87878c610ed5565b9150915061061b8a83610fdf565b610625908b6118c7565b995061063181856118da565b935050508080610640906118ed565b9150506105ec565b5060405163095ea7b360e01b81526001600160a01b0385811660048301525f60248301528a169063095ea7b3906044016020604051808303815f875af1158015610694573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b891906117f9565b509998505050505050505050565b5f806106d5604088018861173d565b8101906106e29190611787565b90505f6106f6858960200135898988610ff3565b602083015160405163095ea7b360e01b81526001600160a01b0391821660048201526024810188905291925088169063095ea7b3906044016020604051808303815f875af115801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e91906117f9565b505f604051806101000160405280896001600160a01b03168152602001886001600160a01b03168152602001845f015162ffffff168152602001306001600160a01b031681526020014281526020018781526020018381526020015f6001600160a01b031681525090505f83602001516001600160a01b031663414bf389836040518263ffffffff1660e01b8152600401610809919061188d565b6020604051808303815f875af1158015610825573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610849919061189c565b6020850151604051636eb1769f60e11b81523060048201526001600160a01b0391821660248201529192508a169063dd62ed3e90604401602060405180830381865afa15801561089b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf919061189c565b156108dd57604051630511d53d60e41b815260040160405180910390fd5b8281101561050157604051634209aa3160e11b815260048101829052602481018490526044016104f8565b5f808061091b61052160408a018a61173d565b915091505f610931868a602001358a8a89610ff3565b60405163095ea7b360e01b81526001600160a01b038581166004830152602482018990529192509089169063095ea7b3906044016020604051808303815f875af1158015610981573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109a591906117f9565b5081516020830151604080850151905163c872a3c560e01b81526001600160a01b0387169363c872a3c5936109e793919290918c9188919030906004016119a6565b6020604051808303815f875af1158015610a03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a27919061189c565b604051636eb1769f60e11b81523060048201526001600160a01b0385811660248301529195509089169063dd62ed3e90604401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a99919061189c565b15610ab757604051630511d53d60e41b815260040160405180910390fd5b80841015610ae257604051634209aa3160e11b815260048101859052602481018290526044016104f8565b50505095945050505050565b5f610af98282611026565b90506001600160a01b038116610b225760405163e368363760e01b815260040160405180910390fd5b5f610b38610b316014836118da565b849061108a565b90508060ff165f03610b5d576040516301ec987f60e31b815260040160405180910390fd5b5f6001610b6b6014836118da565b610b7591906118da565b90505f5b8260ff16811015610d04575f5f610b9087856110e5565b915091505f5b8260ff16811015610c375781515f90610bb08360026119fc565b600b8110610bc057610bc0611a13565b60200201516001600160a01b03161480610c0f575081515f90610be48360026119fc565b610bef9060016118da565b600b8110610bff57610bff611a13565b60200201516001600160a01b0316145b15610c2f5781604051635875b11160e01b81526004016104f89190611a27565b600101610b96565b5080515f90610c47846002611a8b565b60ff16600b8110610c5a57610c5a611a13565b60200201516001600160a01b031603610c885780604051635875b11160e01b81526004016104f89190611a27565b60058260ff1614158015610cc5575080515f90610ca4846113e0565b600b8110610cb457610cb4611a13565b60200201516001600160a01b031614155b15610ce55780604051635875b11160e01b81526004016104f89190611a27565b610cee82611400565b610cf890856118da565b93505050600101610b79565b5080845114610d265760405163251f56a160e21b815260040160405180910390fd5b50505050565b5f610d368461145d565b610d7b610d4b87670de0b6b3a76400006118da565b670de0b6b3a7640000610d7486670de0b6b3a7640000610d6a8a61145d565b610d74908e6119fc565b91906114d4565b610d859190611abb565b9695505050505050565b5f610d9861159c565b610da2855f611026565b91505f610dba610db36014836118da565b879061108a565b90505f6001610dca6014836118da565b610dd491906118da565b90505f5b8260ff16811015610ea0575f610dee898461108a565b90506001600160a01b038816610e0f610e086001866118da565b8b90611026565b6001600160a01b0316148015610e6657506001600160a01b038716610e5b610e3b60ff841660146119fc565b610e469060026119fc565b610e516001876118da565b610e0891906118da565b6001600160a01b0316145b15610e8257610e7589846110e5565b9550610ecd945050505050565b610e8b81611400565b610e9590846118da565b925050600101610dd8565b50604051638c9aec7b60e01b81526001600160a01b038088166004830152861660248201526044016104f8565b935093915050565b81516020830151604080850151905163c07b535360e01b81525f9384936001600160a01b0389169363c07b535393610f139392918991600401611ada565b602060405180830381865afa158015610f2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f52919061189c565b84516020860151604080880151905163c872a3c560e01b81529394506001600160a01b0389169363c872a3c593610f95939092909187915f9130906004016119a6565b6020604051808303815f875af1158015610fb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd5919061189c565b9150935093915050565b5f8282188284100282185b90505b92915050565b5f610ffd8361145d565b610d7b61101287670de0b6b3a76400006118c7565b8461101c8861145d565b610d74908b6119fc565b5f6110328260146118da565b8351101561107a5760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016104f8565b500160200151600160601b900490565b5f6110968260016118da565b835110156110dc5760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016104f8565b50016001015190565b5f6110ee61159c565b6110f8848461108a565b915060058260ff16111561112457604051635b030b5960e11b815260ff831660048201526024016104f8565b5f5b61112f836113e0565b81101561118e576111606111446014836119fc565b61114f6001876118da565b61115991906118da565b8690611026565b825182600b811061117357611173611a13565b6001600160a01b039092166020929092020152600101611126565b50601461119a836113e0565b6111a491906119fc565b6111af9060016118da565b6111b990846118da565b92505f5b8260ff1681101561135c576111f26111d66001836119fc565b6111e19060056119fc565b6111eb90866118da565b869061108a565b60ff168260200151826005811061120b5761120b611a13565b60200201515261123f61121f6001836119fc565b61122a9060056119fc565b61123490866118da565b6111eb9060016118da565b60ff168260200151826005811061125857611258611a13565b6020020151600160200201526112926112726001836119fc565b61127d9060056119fc565b61128790866118da565b6111eb9060026118da565b60ff16826020015182600581106112ab576112ab611a13565b6020020151604001526112e26112c26001836119fc565b6112cd9060056119fc565b6112d790866118da565b6111eb9060036118da565b60ff16826020015182600581106112fb576112fb611a13565b6020020151606001526113326113126001836119fc565b61131d9060056119fc565b61132790866118da565b6111eb9060046118da565b60ff168260200151826005811061134b5761134b611a13565b6020020151608001526001016111bd565b5061136b600160ff84166119fc565b6113769060056119fc565b61138090846118da565b92505f5b8260ff168110156113d8576113a761139d6014836119fc565b61115990866118da565b826040015182600581106113bd576113bd611a13565b6001600160a01b039092166020929092020152600101611384565b509250929050565b5f6113ec826002611a8b565b6113f7906001611b0c565b60ff1692915050565b5f61140f601460ff84166119fc565b600161141c846005611a8b565b60ff1661142991906119fc565b6014611434856113e0565b61143e91906119fc565b6114499060016118da565b61145391906118da565b610fed91906118da565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190611b25565b6114c9906012611b45565b610fed90600a611c39565b5f838302815f1985870982811083820303915050805f03611508578382816114fe576114fe611aa7565b0492505050611584565b80841161151f5761151f600385150260111861158b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b634e487b715f52806020526024601cfd5b60405180606001604052806115af6115ce565b81526020016115bc6115ed565b81526020016115c961161a565b905290565b604051806101600160405280600b906020820280368337509192915050565b6040518060a001604052806005905b61160461161a565b8152602001906001900390816115fc5790505090565b6040518060a001604052806005906020820280368337509192915050565b5f60608284031215611648575f5ffd5b50919050565b6001600160a01b03811681146102ba575f5ffd5b5f5f5f5f5f60a08688031215611676575f5ffd5b853567ffffffffffffffff81111561168c575f5ffd5b61169888828901611638565b95505060208601356116a98161164e565b935060408601356116b98161164e565b94979396509394606081013594506080013592915050565b5f602082840312156116e1575f5ffd5b813567ffffffffffffffff8111156116f7575f5ffd5b61170384828501611638565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561172f575f5ffd5b813560038110611584575f5ffd5b5f5f8335601e19843603018112611752575f5ffd5b83018035915067ffffffffffffffff82111561176c575f5ffd5b602001915036819003821315611780575f5ffd5b9250929050565b5f6040828403128015611798575f5ffd5b506040805190810167ffffffffffffffff811182821017156117c857634e487b7160e01b5f52604160045260245ffd5b604052823562ffffff811681146117dd575f5ffd5b815260208301356117ed8161164e565b60208201529392505050565b5f60208284031215611809575f5ffd5b81518015158114611584575f5ffd5b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015191821690840152506080810151608083015260a081015160a083015260c081015160c083015260e081015161188860e08401826001600160a01b03169052565b505050565b6101008101610fed8284611818565b5f602082840312156118ac575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610fed57610fed6118b3565b80820180821115610fed57610fed6118b3565b5f600182016118fe576118fe6118b3565b5060010190565b805f5b600b811015610d265781516001600160a01b0316845260209384019390910190600101611908565b805f5b6005811015610d265781515f85815b6005811015611961578351825260209384019390910190600101611942565b50505060a094909401935060209190910190600101611933565b805f5b6005811015610d265781516001600160a01b031684526020938401939091019060010161197e565b61058081016119b58289611905565b6119c3610160830188611930565b85610480830152846104a08301526119df6104c083018561197b565b6001600160a01b0392909216610560919091015295945050505050565b8082028115828204841417610fed57610fed6118b3565b634e487b7160e01b5f52603260045260245ffd5b8151610520820190825f5b600b811015611a5a5782516001600160a01b0316825260209283019290910190600101611a32565b5050506020830151611a70610160840182611930565b506040830151611a8461048084018261197b565b5092915050565b60ff8181168382160290811690818114611a8457611a846118b3565b634e487b7160e01b5f52601260045260245ffd5b5f82611ad557634e487b7160e01b5f52601260045260245ffd5b500490565b6105408101611ae98287611905565b611af7610160830186611930565b836104808301526101226104a083018461197b565b60ff8181168382160190811115610fed57610fed6118b3565b5f60208284031215611b35575f5ffd5b815160ff81168114611584575f5ffd5b60ff8281168282160390811115610fed57610fed6118b3565b6001815b6001841115610ecd57808504811115611b7d57611b7d6118b3565b6001841615611b8b57908102905b60019390931c928002611b62565b5f82611ba757506001610fed565b81611bb357505f610fed565b8160018114611bc95760028114611bd357611bef565b6001915050610fed565b60ff841115611be457611be46118b3565b50506001821b610fed565b5060208310610133831016604e8410600b8410161715611c12575081810a610fed565b611c1e5f198484611b5e565b805f1904821115611c3157611c316118b3565b029392505050565b5f610fea60ff841683611b9956fea26469706673582212209a329249c5826f8244f65d4b850d49bd2f3bc6681c75a12b2c0c4808e6e1e40564736f6c634300081c0033","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 0x1662 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 0x1662 JUMP JUMPDEST PUSH2 0x12B JUMP JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x16D1 JUMP JUMPDEST PUSH2 0x190 JUMP JUMPDEST STOP JUMPDEST PUSH0 PUSH1 0x1 PUSH2 0xC3 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x10D JUMPI PUSH2 0x10D PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x14C JUMPI PUSH2 0x14C PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x17E JUMPI PUSH2 0x17E PUSH2 0x170B 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1D4 JUMPI PUSH2 0x1D4 PUSH2 0x170B JUMP JUMPDEST SUB PUSH2 0x24C JUMPI PUSH0 PUSH2 0x1E7 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1F4 SWAP2 SWAP1 PUSH2 0x1787 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 0x171F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26C JUMPI PUSH2 0x26C PUSH2 0x170B JUMP JUMPDEST SUB PUSH2 0x2BD JUMPI PUSH2 0x2BA PUSH2 0x281 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x173D 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 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x2F2 SWAP2 SWAP1 PUSH2 0x1787 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 0x17F9 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 0x188D 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 0x189C 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 0x17F9 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 0x173D 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 0x17F9 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 0x18C7 JUMP JUMPDEST SWAP10 POP PUSH2 0x631 DUP2 DUP6 PUSH2 0x18DA JUMP JUMPDEST SWAP4 POP POP POP DUP1 DUP1 PUSH2 0x640 SWAP1 PUSH2 0x18ED 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 0x17F9 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 0x173D JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x6E2 SWAP2 SWAP1 PUSH2 0x1787 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 0x17F9 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 0x188D 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 0x189C 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 0x189C 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 0x173D 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 0x17F9 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 0x19A6 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 0x189C 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 0x189C 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 0x18DA 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 0x18DA JUMP JUMPDEST PUSH2 0xB75 SWAP2 SWAP1 PUSH2 0x18DA 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 0x19FC JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBC0 JUMPI PUSH2 0xBC0 PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0xBEF SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xB DUP2 LT PUSH2 0xBFF JUMPI PUSH2 0xBFF PUSH2 0x1A13 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 0x1A27 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB96 JUMP JUMPDEST POP DUP1 MLOAD PUSH0 SWAP1 PUSH2 0xC47 DUP5 PUSH1 0x2 PUSH2 0x1A8B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0xB DUP2 LT PUSH2 0xC5A JUMPI PUSH2 0xC5A PUSH2 0x1A13 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 0x1A27 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 0x1A13 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 0x1A27 JUMP JUMPDEST PUSH2 0xCEE DUP3 PUSH2 0x1400 JUMP JUMPDEST PUSH2 0xCF8 SWAP1 DUP6 PUSH2 0x18DA 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 0x18DA JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xD74 DUP7 PUSH8 0xDE0B6B3A7640000 PUSH2 0xD6A DUP11 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP15 PUSH2 0x19FC JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x14D4 JUMP JUMPDEST PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1ABB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD98 PUSH2 0x159C JUMP JUMPDEST PUSH2 0xDA2 DUP6 PUSH0 PUSH2 0x1026 JUMP JUMPDEST SWAP2 POP PUSH0 PUSH2 0xDBA PUSH2 0xDB3 PUSH1 0x14 DUP4 PUSH2 0x18DA JUMP JUMPDEST DUP8 SWAP1 PUSH2 0x108A JUMP JUMPDEST SWAP1 POP PUSH0 PUSH1 0x1 PUSH2 0xDCA PUSH1 0x14 DUP4 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xDD4 SWAP2 SWAP1 PUSH2 0x18DA 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 0x18DA 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 0x19FC JUMP JUMPDEST PUSH2 0xE46 SWAP1 PUSH1 0x2 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0xE51 PUSH1 0x1 DUP8 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xE08 SWAP2 SWAP1 PUSH2 0x18DA 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 0x18DA 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 0x1ADA 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 0x189C 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 0x19A6 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 0x189C 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 0x18C7 JUMP JUMPDEST DUP5 PUSH2 0x101C DUP9 PUSH2 0x145D JUMP JUMPDEST PUSH2 0xD74 SWAP1 DUP12 PUSH2 0x19FC JUMP JUMPDEST PUSH0 PUSH2 0x1032 DUP3 PUSH1 0x14 PUSH2 0x18DA 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 0x18DA 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 0x159C 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 0x19FC JUMP JUMPDEST PUSH2 0x114F PUSH1 0x1 DUP8 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x18DA JUMP JUMPDEST DUP7 SWAP1 PUSH2 0x1026 JUMP JUMPDEST DUP3 MLOAD DUP3 PUSH1 0xB DUP2 LT PUSH2 0x1173 JUMPI PUSH2 0x1173 PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0x11AF SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11B9 SWAP1 DUP5 PUSH2 0x18DA JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x135C JUMPI PUSH2 0x11F2 PUSH2 0x11D6 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x11E1 SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x11EB SWAP1 DUP7 PUSH2 0x18DA 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 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD MSTORE PUSH2 0x123F PUSH2 0x121F PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x122A SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1234 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x1258 JUMPI PUSH2 0x1258 PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x1 PUSH1 0x20 MUL ADD MSTORE PUSH2 0x1292 PUSH2 0x1272 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x127D SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1287 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x2 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12AB JUMPI PUSH2 0x12AB PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 ADD MSTORE PUSH2 0x12E2 PUSH2 0x12C2 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x12CD SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x12D7 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x3 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x12FB JUMPI PUSH2 0x12FB PUSH2 0x1A13 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x60 ADD MSTORE PUSH2 0x1332 PUSH2 0x1312 PUSH1 0x1 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x131D SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1327 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x11EB SWAP1 PUSH1 0x4 PUSH2 0x18DA JUMP JUMPDEST PUSH1 0xFF AND DUP3 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x134B JUMPI PUSH2 0x134B PUSH2 0x1A13 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 0x19FC JUMP JUMPDEST PUSH2 0x1376 SWAP1 PUSH1 0x5 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1380 SWAP1 DUP5 PUSH2 0x18DA JUMP JUMPDEST SWAP3 POP PUSH0 JUMPDEST DUP3 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x13D8 JUMPI PUSH2 0x13A7 PUSH2 0x139D PUSH1 0x14 DUP4 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1159 SWAP1 DUP7 PUSH2 0x18DA JUMP JUMPDEST DUP3 PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x5 DUP2 LT PUSH2 0x13BD JUMPI PUSH2 0x13BD PUSH2 0x1A13 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 0x1A8B JUMP JUMPDEST PUSH2 0x13F7 SWAP1 PUSH1 0x1 PUSH2 0x1B0C JUMP JUMPDEST PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x140F PUSH1 0x14 PUSH1 0xFF DUP5 AND PUSH2 0x19FC JUMP JUMPDEST PUSH1 0x1 PUSH2 0x141C DUP5 PUSH1 0x5 PUSH2 0x1A8B JUMP JUMPDEST PUSH1 0xFF AND PUSH2 0x1429 SWAP2 SWAP1 PUSH2 0x19FC JUMP JUMPDEST PUSH1 0x14 PUSH2 0x1434 DUP6 PUSH2 0x13E0 JUMP JUMPDEST PUSH2 0x143E SWAP2 SWAP1 PUSH2 0x19FC JUMP JUMPDEST PUSH2 0x1449 SWAP1 PUSH1 0x1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0x1453 SWAP2 SWAP1 PUSH2 0x18DA JUMP JUMPDEST PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x18DA 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 0x1B25 JUMP JUMPDEST PUSH2 0x14C9 SWAP1 PUSH1 0x12 PUSH2 0x1B45 JUMP JUMPDEST PUSH2 0xFED SWAP1 PUSH1 0xA PUSH2 0x1C39 JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x1508 JUMPI DUP4 DUP3 DUP2 PUSH2 0x14FE JUMPI PUSH2 0x14FE PUSH2 0x1AA7 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x1584 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x151F JUMPI PUSH2 0x151F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x158B 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST 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 0x15AF PUSH2 0x15CE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15BC PUSH2 0x15ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15C9 PUSH2 0x161A 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 0x1604 PUSH2 0x161A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x15FC 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 0x1648 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 0x1676 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x168C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1698 DUP9 DUP3 DUP10 ADD PUSH2 0x1638 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x16A9 DUP2 PUSH2 0x164E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x16B9 DUP2 PUSH2 0x164E 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 0x16E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1703 DUP5 DUP3 DUP6 ADD PUSH2 0x1638 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 0x172F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x1584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x1752 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x176C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1798 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x17C8 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 0x17DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x17ED DUP2 PUSH2 0x164E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1809 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1584 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 0x1888 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 0x1818 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18AC 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 0x18B3 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x18FE JUMPI PUSH2 0x18FE PUSH2 0x18B3 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 0x1908 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 0x1961 JUMPI DUP4 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1942 JUMP JUMPDEST POP POP POP PUSH1 0xA0 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP PUSH1 0x20 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1933 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 0x197E JUMP JUMPDEST PUSH2 0x580 DUP2 ADD PUSH2 0x19B5 DUP3 DUP10 PUSH2 0x1905 JUMP JUMPDEST PUSH2 0x19C3 PUSH2 0x160 DUP4 ADD DUP9 PUSH2 0x1930 JUMP JUMPDEST DUP6 PUSH2 0x480 DUP4 ADD MSTORE DUP5 PUSH2 0x4A0 DUP4 ADD MSTORE PUSH2 0x19DF PUSH2 0x4C0 DUP4 ADD DUP6 PUSH2 0x197B 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 0x18B3 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 0x1A5A 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 0x1A32 JUMP JUMPDEST POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1A70 PUSH2 0x160 DUP5 ADD DUP3 PUSH2 0x1930 JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x1A84 PUSH2 0x480 DUP5 ADD DUP3 PUSH2 0x197B 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 0x1A84 JUMPI PUSH2 0x1A84 PUSH2 0x18B3 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1AD5 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 0x1AE9 DUP3 DUP8 PUSH2 0x1905 JUMP JUMPDEST PUSH2 0x1AF7 PUSH2 0x160 DUP4 ADD DUP7 PUSH2 0x1930 JUMP JUMPDEST DUP4 PUSH2 0x480 DUP4 ADD MSTORE PUSH2 0x122 PUSH2 0x4A0 DUP4 ADD DUP5 PUSH2 0x197B JUMP JUMPDEST PUSH1 0xFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B35 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xFED JUMPI PUSH2 0xFED PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xECD JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1B7D JUMPI PUSH2 0x1B7D PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1B8B JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1B62 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1BA7 JUMPI POP PUSH1 0x1 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH2 0x1BB3 JUMPI POP PUSH0 PUSH2 0xFED JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1BC9 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1BD3 JUMPI PUSH2 0x1BEF JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xFED JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1BE4 JUMPI PUSH2 0x1BE4 PUSH2 0x18B3 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 0x1C12 JUMPI POP DUP2 DUP2 EXP PUSH2 0xFED JUMP JUMPDEST PUSH2 0x1C1E PUSH0 NOT DUP5 DUP5 PUSH2 0x1B5E JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1C31 JUMPI PUSH2 0x1C31 PUSH2 0x18B3 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xFEA PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1B99 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 ORIGIN SWAP3 BLOBHASH 0xC5 DUP3 PUSH16 0x8244F65D4B850D49BD2F3BC6681C75A1 0x2B 0x2C 0xC BASEFEE ADDMOD 0xE6 0xE1 0xE4 SDIV PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"522:9839:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4594:474;;;;;;;;;;-1:-1:-1;4594:474:1;;;;;:::i;:::-;;:::i;:::-;;;1351:25:75;;;1339:2;1324:18;4594:474:1;;;;;;;3071:471;;;;;;;;;;-1:-1:-1;3071:471:1;;;;;:::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:1;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:1;;;;;;;;;;;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:1;1667:72;;1712:27;;-1:-1:-1;;;1712:27:1;;;;;;;;;;;1667:72;1751:10;;:15;;:10;:15;1747:56;;1775:28;;-1:-1:-1;;;1775:28:1;;;;;;;;;;;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:1;;-1:-1:-1;;;1877:45:1:i;:::-;1371:593;:::o;1816:143::-;1942:17;;-1:-1:-1;;;1942:17:1;;;;;;;;;;;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:1;;-1:-1:-1;;;;;3811:32:75;;;7229:70:1;;;3793:51:75;-1:-1:-1;;3860:18:75;;;3853:34;7128:94:1;;-1:-1:-1;7229:31:1;;;;;3766:18:75;;7229:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7305:49;7357:380;;;;;;;;7410:7;-1:-1:-1;;;;;7357:380:1;;;;;7435:8;-1:-1:-1;;;;;7357:380:1;;;;;7456:2;:10;;;7357:380;;;;;;7493:4;-1:-1:-1;;;;;7357:380:1;;;;;7516:15;7357:380;;;;7550:6;7357:380;;;;7581:11;7357:380;;;;7619:1;-1:-1:-1;;;;;7357:380:1;;;;7305:432;;7743:20;7766:2;:9;;;-1:-1:-1;;;;;7766:27:1;;7794:6;7766:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7848:9;;;;7808:54;;-1:-1:-1;;;7808:54:1;;-1:-1:-1;;;;;3811:32:75;;;7808:54:1;;;3793:51:75;7860:1:1;3860:18:75;;;3853:34;7743:58:1;;-1:-1:-1;7808:31:1;;;;;3766:18:75;;7808:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7907:11;7892:12;:26;7888:89;;;7927:50;;-1:-1:-1;;;7927:50:1;;;;;5814:25:75;;;5855:18;;;5848:34;;;5787:18;;7927:50:1;;;;;;;;7888:89;7990:12;6847:1160;-1:-1:-1;;;;;;;;;6847:1160:1:o;9384:975::-;9551:7;;;9627:89;9656:23;;;;:10;:23;:::i;:::-;9627:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9687:7:1;;-1:-1:-1;9702:8:1;;-1:-1:-1;9627:21:1;;-1:-1:-1;9627:89:1: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:1;;-1:-1:-1;;;;;3811:32:75;;;9822:61:1;;;3793:51:75;3860:18;;;3853:34;;;9722:94:1;;-1:-1:-1;9822:31:1;;;;;;3766:18:75;;9822:61:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9889:24:1;;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:1;10248:14;10228:34;;:::i;:::-;;;10086:183;;10081:3;;;;;:::i;:::-;;;;10032:237;;;-1:-1:-1;10274:51:1;;-1:-1:-1;;;10274:51:1;;-1:-1:-1;;;;;3811:32:75;;;10274:51:1;;;3793::75;10323:1:1;3860:18:75;;;3853:34;10274:31:1;;;;;3766:18:75;;10274:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10338:16:1;9384:975;-1:-1:-1;;;;;;;;;9384:975:1: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:1;;-1:-1:-1;;;;;3811:32:75;;;6028:59:1;;;3793:51:75;3860:18;;;3853:34;;;5926:95:1;;-1:-1:-1;6028:31:1;;;;;3766:18:75;;6028:59:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6093:48;6144:380;;;;;;;;6196:7;-1:-1:-1;;;;;6144:380:1;;;;;6221:8;-1:-1:-1;;;;;6144:380:1;;;;;6242:2;:10;;;6144:380;;;;;;6279:4;-1:-1:-1;;;;;6144:380:1;;;;;6302:15;6144:380;;;;6335:6;6144:380;;;;6367:12;6144:380;;;;6406:1;-1:-1:-1;;;;;6144:380:1;;;;6093:431;;6531:16;6550:2;:9;;;-1:-1:-1;;;;;6550:26:1;;6577:6;6550:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6651:9;;;;6594:68;;-1:-1:-1;;;6594:68:1;;6636:4;6594:68;;;6902:51:75;-1:-1:-1;;;;;6989:32:75;;;6969:18;;;6962:60;6531:53:1;;-1:-1:-1;6594:33:1;;;;;6875:18:75;;6594:68:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;6590:115;;6676:29;;-1:-1:-1;;;6676:29:1;;;;;;;;;;;6590:115;6746:12;6735:8;:23;6731:86;;;6767:50;;-1:-1:-1;;;6767:50:1;;;;;5814:25:75;;;5855:18;;;5848:34;;;5787:18;;6767:50:1;5640:248:75;8011:874:1;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:1;;-1:-1:-1;;;;;3811:32:75;;;8459:56:1;;;3793:51:75;3860:18;;;3853:34;;;8357:95:1;;-1:-1:-1;8459:31:1;;;;;;3766:18:75;;8459:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8548:11:1;;8561:16;;;;8601:11;;;;;8532:96;;-1:-1:-1;;;8532:96:1;;-1:-1:-1;;;;;8532:15:1;;;;;:96;;8548:11;;8561:16;;8579:6;;8587:12;;8601:11;8622:4;;8532:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8639:65;;-1:-1:-1;;;8639:65:1;;8681:4;8639:65;;;6902:51:75;-1:-1:-1;;;;;6989:32:75;;;6969:18;;;6962:60;8521:107:1;;-1:-1:-1;8639:33:1;;;;;;6875:18:75;;8639:65:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:70;8635:112;;8718:29;;-1:-1:-1;;;8718:29:1;;;;;;;;;;;8635:112;8788:12;8777:8;:23;8773:86;;;8809:50;;-1:-1:-1;;;8809:50:1;;;;;5814:25:75;;;5855:18;;;5848:34;;;5787:18;;8809:50:1;5640:248:75;8773:86:1;8865:15;;;8011:874;;;;;;;:::o;1751:929:0:-;1815:19;1850:36;:11;1815:19;1850:21;:36::i;:::-;1815:72;-1:-1:-1;;;;;;1897:29:0;;1893:65;;1935:23;;-1:-1:-1;;;1935:23:0;;;;;;;;;;;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:0;;;;;;;;;;;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:0;;:72;;;-1:-1:-1;2316:11:0;;2350:1;;2328:5;:1;2332;2328:5;:::i;:::-;:9;;2336:1;2328:9;:::i;:::-;2316:22;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2316:36:0;;2280:72;2276:104;;;2374:5;2361:19;;-1:-1:-1;;;2361:19:0;;;;;;;;:::i;2276:104::-;2261:3;;2233:156;;;-1:-1:-1;2400:11:0;;2435:1;;2412:10;:6;2421:1;2412:10;:::i;:::-;2400:23;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2400:37:0;;2396:69;;2459:5;2446:19;;-1:-1:-1;;;2446:19:0;;;;;;;;:::i;2396:69::-;1020:1;2477:6;:19;;;;:67;;;;-1:-1:-1;2500:11:0;;2542:1;;2512:17;2522:6;2512:9;:17::i;:::-;2500:30;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2500:44:0;;;2477:67;2473:99;;;2566:5;2553:19;;-1:-1:-1;;;2553:19:0;;;;;;;;:::i;2473:99::-;2590:17;2600:6;2590:9;:17::i;:::-;2580:27;;;;:::i;:::-;;-1:-1:-1;;;2140:3:0;;2111:503;;;;2645:6;2623:11;:18;:28;2619:56;;2660:15;;-1:-1:-1;;;2660:15:0;;;;;;;;;;;2619:56;1809:871;;;1751:929;:::o;5351:292:1:-;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:1:o;4113:779:0:-;4232:19;4253:23;;:::i;:::-;4306:36;:11;1067:1;4306:21;:36::i;:::-;4284:59;-1:-1:-1;4349:13:0;4365:36;1116:28;932:2;4349:13;1116:28;:::i;:::-;4365:11;;:19;:36::i;:::-;4349:52;-1:-1:-1;4407:14:0;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:0;;:42;4575:19;977:1;4575:6;:19;:::i;:::-;4553:11;;:21;:42::i;:::-;-1:-1:-1;;;;;4553:53:0;;:147;;;;-1:-1:-1;;;;;;4618:82:0;;: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:0;;4553:147;4540:262;;;4731:30;4741:11;4754:6;4731:9;:30::i;:::-;4719:42;-1:-1:-1;4771:22:0;;-1:-1:-1;;;;;4771:22:0;4540:262;4819:17;4829:6;4819:9;:17::i;:::-;4809:27;;;;:::i;:::-;;-1:-1:-1;;4477:3:0;;4448:395;;;-1:-1:-1;4855:32:0;;-1:-1:-1;;;4855:32:0;;-1:-1:-1;;;;;6920:32:75;;;4855::0;;;6902:51:75;6989:32;;6969:18;;;6962:60;6875:18;;4855:32:0;6728:300:75;4113:779:0;;;;;;;:::o;8889:491:1:-;9100:11;;9113:16;;;;9139:11;;;;;9086:65;;-1:-1:-1;;;9086:65:1;;9021:16;;;;-1:-1:-1;;;;;9086:13:1;;;;;:65;;9100:11;9113:16;9131:6;;9086:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9191:11;;9210:16;;;;9337:11;;;;;9168:207;;-1:-1:-1;;;9168:207:1;;9069:82;;-1:-1:-1;;;;;;9168:15:1;;;;;:207;;9191:11;;9210:16;;9069:82;;9191:11;;9364:4;;9168:207;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9157:218;;8889:491;;;;;;:::o;3371:111:42:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;3448:27;;3371:111;;;;;:::o;5072:275:1:-;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;12267:354:74:-;12346:7;12390:11;:6;12399:2;12390:11;:::i;:::-;12373:6;:13;:28;;12365:62;;;;-1:-1:-1;;;12365:62:74;;12731:2:75;12365:62:74;;;12713:21:75;12770:2;12750:18;;;12743:30;-1:-1:-1;;;12789:18:75;;;12782:51;12850:18;;12365:62:74;12529:345:75;12365:62:74;-1:-1:-1;12515:30:74;12531:4;12515:30;12509:37;-1:-1:-1;;;12505:71:74;;;12267:354::o;12627:302::-;12704:5;12746:10;:6;12755:1;12746:10;:::i;:::-;12729:6;:13;:27;;12721:60;;;;-1:-1:-1;;;12721:60:74;;13081:2:75;12721:60:74;;;13063:21:75;13120:2;13100:18;;;13093:30;-1:-1:-1;;;13139:18:75;;;13132:49;13198:18;;12721:60:74;12879:343:75;12721:60:74;-1:-1:-1;12857:29:74;12873:3;12857:29;12851:36;;12627:302::o;2684:1065:0:-;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:0;;13399:4:75;13387:17;;2898:20:0;;;13369:36:75;13342:18;;2898:20:0;13227:184:75;2867:51:0;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:0;;;: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:0;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:0;;;: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:0: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:1:-;2028:7;2078:5;-1:-1:-1;;;;;2063:30:1;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2058:37;;:2;:37;:::i;:::-;2051:45;;:2;:45;:::i;4996:4226:42:-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;;:::o;1776:194:38:-;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:75:-;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:75;14:158;-1:-1:-1;14:158:75:o;177:131::-;-1:-1:-1;;;;;252:31:75;;242:42;;232:70;;298:1;295;288:12;313:879;437:6;445;453;461;469;522:3;510:9;501:7;497:23;493:33;490:53;;;539:1;536;529:12;490:53;579:9;566:23;612:18;604:6;601:30;598:50;;;644:1;641;634:12;598:50;667:70;729:7;720:6;709:9;705:22;667:70;:::i;:::-;657:80;;;787:2;776:9;772:18;759:32;800:31;825:5;800:31;:::i;:::-;850:5;-1:-1:-1;907:2:75;892:18;;879:32;920:33;879:32;920:33;:::i;:::-;313:879;;;;-1:-1:-1;972:7:75;;1052:2;1037:18;;1024:32;;-1:-1:-1;1155:3:75;1140:19;1127:33;;313:879;-1:-1:-1;;313:879:75:o;1387:361::-;1475:6;1528:2;1516:9;1507:7;1503:23;1499:32;1496:52;;;1544:1;1541;1534:12;1496:52;1584:9;1571:23;1617:18;1609:6;1606:30;1603:50;;;1649:1;1646;1639:12;1603:50;1672:70;1734:7;1725:6;1714:9;1710:22;1672:70;:::i;:::-;1662:80;1387:361;-1:-1:-1;;;;1387:361:75:o;1753:127::-;1814:10;1809:3;1805:20;1802:1;1795:31;1845:4;1842:1;1835:15;1869:4;1866:1;1859:15;1885:272;1960:6;2013:2;2001:9;1992:7;1988:23;1984:32;1981:52;;;2029:1;2026;2019:12;1981:52;2068:9;2055:23;2107:1;2100:5;2097:12;2087:40;;2123:1;2120;2113:12;2162:521;2239:4;2245:6;2305:11;2292:25;2399:2;2395:7;2384:8;2368:14;2364:29;2360:43;2340:18;2336:68;2326:96;;2418:1;2415;2408:12;2326:96;2445:33;;2497:20;;;-1:-1:-1;2540:18:75;2529:30;;2526:50;;;2572:1;2569;2562:12;2526:50;2605:4;2593:17;;-1:-1:-1;2636:14:75;2632:27;;;2622:38;;2619:58;;;2673:1;2670;2663:12;2619:58;2162:521;;;;;:::o;2688:817::-;2783:6;2843:2;2831:9;2822:7;2818:23;2814:32;2858:2;2855:22;;;2873:1;2870;2863:12;2855:22;-1:-1:-1;2922:2:75;2916:9;;;2952:15;;2997:18;2982:34;;3018:22;;;2979:62;2976:185;;;3083:10;3078:3;3074:20;3071:1;3064:31;3118:4;3115:1;3108:15;3146:4;3143:1;3136:15;2976:185;3177:2;3170:22;3214:23;;3277:8;3266:20;;3256:31;;3246:59;;3301:1;3298;3291:12;3246:59;3314:21;;3387:2;3372:18;;3359:32;3400:33;3359:32;3400:33;:::i;:::-;3461:2;3449:15;;3442:32;3453:6;2688:817;-1:-1:-1;;;2688:817:75:o;3898:277::-;3965:6;4018:2;4006:9;3997:7;3993:23;3989:32;3986:52;;;4034:1;4031;4024:12;3986:52;4066:9;4060:16;4119:5;4112:13;4105:21;4098:5;4095:32;4085:60;;4141:1;4138;4131:12;4180:677;4273:12;;-1:-1:-1;;;;;4269:38:75;;;4257:51;;4361:4;4350:16;;;4344:23;4340:49;;4324:14;;;4317:73;4443:4;4432:16;;;4426:23;4451:8;4422:38;4406:14;;;4399:62;4507:4;4496:16;;;4490:23;3576:31;;;4555:14;;;3564:44;4522:48;4619:4;4612:5;4608:16;4602:23;4595:4;4590:3;4586:14;4579:47;4675:4;4668:5;4664:16;4658:23;4651:4;4646:3;4642:14;4635:47;4731:4;4724:5;4720:16;4714:23;4707:4;4702:3;4698:14;4691:47;4786:4;4779:5;4775:16;4769:23;4801:50;4845:4;4840:3;4836:14;4820;-1:-1:-1;;;;;3576:31:75;3564:44;;3510:104;4801:50;;4180:677;;:::o;4862:297::-;5080:3;5065:19;;5093:60;5069:9;5135:6;5093:60;:::i;5164:184::-;5234:6;5287:2;5275:9;5266:7;5262:23;5258:32;5255:52;;;5303:1;5300;5293:12;5255:52;-1:-1:-1;5326:16:75;;5164:184;-1:-1:-1;5164:184:75:o;5893:127::-;5954:10;5949:3;5945:20;5942:1;5935:31;5985:4;5982:1;5975:15;6009:4;6006:1;5999:15;6025:128;6092:9;;;6113:11;;;6110:37;;;6127:18;;:::i;6158:125::-;6223:9;;;6244:10;;;6241:36;;;6257:18;;:::i;6288:135::-;6327:3;6348:17;;;6345:43;;6368:18;;:::i;:::-;-1:-1:-1;6415:1:75;6404:13;;6288:135::o;7033:329::-;7126:5;7149:1;7159:197;7173:4;7170:1;7167:11;7159:197;;;7236:13;;-1:-1:-1;;;;;7232:39:75;7220:52;;7301:4;7292:14;;;;7329:17;;;;7268:1;7186:9;7159:197;;7367:707;7466:5;7489:1;7499:569;7513:4;7510:1;7507:11;7499:569;;;7570:13;;7614:1;7641:3;7614:1;7738:209;7754:4;7749:3;7746:13;7738:209;;;7827:15;;7813:30;;7880:4;7914:19;;;;7869:16;;;;7778:1;7769:11;7738:209;;;-1:-1:-1;;;7983:4:75;7974:14;;;;;-1:-1:-1;8053:4:75;8041:17;;;;;7533:1;7526:9;7499:569;;8079:356;8199:5;8222:1;8232:197;8246:4;8243:1;8240:11;8232:197;;;8309:13;;-1:-1:-1;;;;;8305:39:75;8293:52;;8374:4;8365:14;;;;8402:17;;;;8341:1;8259:9;8232:197;;8440:842;8900:4;8885:20;;8914:43;8889:9;8939:6;8914:43;:::i;:::-;8966:59;9020:3;9009:9;9005:19;8997:6;8966:59;:::i;:::-;9063:6;9056:4;9045:9;9041:20;9034:36;9108:6;9101:4;9090:9;9086:20;9079:36;9124:81;9199:4;9188:9;9184:20;9176:6;9124:81;:::i;:::-;-1:-1:-1;;;;;9243:32:75;;;;9236:4;9221:20;;;;9214:62;8440:842;;-1:-1:-1;;;;;8440:842:75:o;9287:168::-;9360:9;;;9391;;9408:15;;;9402:22;;9388:37;9378:71;;9429:18;;:::i;9460:127::-;9521:10;9516:3;9512:20;9509:1;9502:31;9552:4;9549:1;9542:15;9576:4;9573:1;9566:15;9592:818;9802:13;;9778:4;9763:20;;;9767:9;9736:4;9922:197;9936:4;9933:1;9930:11;9922:197;;;9999:13;;-1:-1:-1;;;;;9995:39:75;9983:52;;10064:4;10092:17;;;;10055:14;;;;10031:1;9949:9;9922:197;;;9926:3;;;10166:4;10158:6;10154:17;10148:24;10181:68;10241:6;10230:9;10226:22;10212:12;10181:68;:::i;:::-;;10298:4;10290:6;10286:17;10280:24;10313:91;10396:6;10385:9;10381:22;10365:14;10313:91;:::i;:::-;;9592:818;;;;:::o;10415:225::-;10519:4;10498:12;;;10512;;;10494:31;10545:22;;;;10586:24;;;10576:58;;10614:18;;:::i;10645:127::-;10706:10;10701:3;10697:20;10694:1;10687:31;10737:4;10734:1;10727:15;10761:4;10758:1;10751:15;10777:217;10817:1;10843;10833:132;;10887:10;10882:3;10878:20;10875:1;10868:31;10922:4;10919:1;10912:15;10950:4;10947:1;10940:15;10833:132;-1:-1:-1;10979:9:75;;10777:217::o;10999:670::-;11403:4;11388:20;;11417:43;11392:9;11442:6;11417:43;:::i;:::-;11469:59;11523:3;11512:9;11508:19;11500:6;11469:59;:::i;:::-;11566:6;11559:4;11548:9;11544:20;11537:36;11582:81;11657:4;11646:9;11642:20;11634:6;11582:81;:::i;13416:148::-;13504:4;13483:12;;;13497;;;13479:31;;13522:13;;13519:39;;;13538:18;;:::i;13569:273::-;13637:6;13690:2;13678:9;13669:7;13665:23;13661:32;13658:52;;;13706:1;13703;13696:12;13658:52;13738:9;13732:16;13788:4;13781:5;13777:16;13770:5;13767:27;13757:55;;13808:1;13805;13798:12;13847:151;13937:4;13930:12;;;13916;;;13912:31;;13955:14;;13952:40;;;13972:18;;:::i;14003:375::-;14091:1;14109:5;14123:249;14144:1;14134:8;14131:15;14123:249;;;14194:4;14189:3;14185:14;14179:4;14176:24;14173:50;;;14203:18;;:::i;:::-;14253:1;14243:8;14239:16;14236:49;;;14267:16;;;;14236:49;14350:1;14346:16;;;;;14306:15;;14123:249;;14383:902;14432:5;14462:8;14452:80;;-1:-1:-1;14503:1:75;14517:5;;14452:80;14551:4;14541:76;;-1:-1:-1;14588:1:75;14602:5;;14541:76;14633:4;14651:1;14646:59;;;;14719:1;14714:174;;;;14626:262;;14646:59;14676:1;14667:10;;14690:5;;;14714:174;14751:3;14741:8;14738:17;14735:43;;;14758:18;;:::i;:::-;-1:-1:-1;;14814:1:75;14800:16;;14873:5;;14626:262;;14972:2;14962:8;14959:16;14953:3;14947:4;14944:13;14940:36;14934:2;14924:8;14921:16;14916:2;14910:4;14907:12;14903:35;14900:77;14897:203;;;-1:-1:-1;15009:19:75;;;15085:5;;14897:203;15132:42;-1:-1:-1;;15157:8:75;15151:4;15132:42;:::i;:::-;15210:6;15206:1;15202:6;15198:19;15189:7;15186:32;15183:58;;;15221:18;;:::i;:::-;15259:20;;14383:902;-1:-1:-1;;;14383:902:75:o;15290:140::-;15348:5;15377:47;15418:4;15408:8;15404:19;15398:4;15377: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.28+commit.7893614a\"},\"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\":\"cancun\",\"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\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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":{"@_1766":{"entryPoint":null,"id":1766,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":86,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:306:75","nodeType":"YulBlock","src":"0:306:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"95:209:75","nodeType":"YulBlock","src":"95:209:75","statements":[{"body":{"nativeSrc":"141:16:75","nodeType":"YulBlock","src":"141:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:75","nodeType":"YulLiteral","src":"150:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:75","nodeType":"YulLiteral","src":"153:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:75","nodeType":"YulIdentifier","src":"143:6:75"},"nativeSrc":"143:12:75","nodeType":"YulFunctionCall","src":"143:12:75"},"nativeSrc":"143:12:75","nodeType":"YulExpressionStatement","src":"143:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:75","nodeType":"YulIdentifier","src":"116:7:75"},{"name":"headStart","nativeSrc":"125:9:75","nodeType":"YulIdentifier","src":"125:9:75"}],"functionName":{"name":"sub","nativeSrc":"112:3:75","nodeType":"YulIdentifier","src":"112:3:75"},"nativeSrc":"112:23:75","nodeType":"YulFunctionCall","src":"112:23:75"},{"kind":"number","nativeSrc":"137:2:75","nodeType":"YulLiteral","src":"137:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:75","nodeType":"YulIdentifier","src":"108:3:75"},"nativeSrc":"108:32:75","nodeType":"YulFunctionCall","src":"108:32:75"},"nativeSrc":"105:52:75","nodeType":"YulIf","src":"105:52:75"},{"nativeSrc":"166:29:75","nodeType":"YulVariableDeclaration","src":"166:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:75","nodeType":"YulIdentifier","src":"185:9:75"}],"functionName":{"name":"mload","nativeSrc":"179:5:75","nodeType":"YulIdentifier","src":"179:5:75"},"nativeSrc":"179:16:75","nodeType":"YulFunctionCall","src":"179:16:75"},"variables":[{"name":"value","nativeSrc":"170:5:75","nodeType":"YulTypedName","src":"170:5:75","type":""}]},{"body":{"nativeSrc":"258:16:75","nodeType":"YulBlock","src":"258:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:75","nodeType":"YulLiteral","src":"267:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:75","nodeType":"YulLiteral","src":"270:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:75","nodeType":"YulIdentifier","src":"260:6:75"},"nativeSrc":"260:12:75","nodeType":"YulFunctionCall","src":"260:12:75"},"nativeSrc":"260:12:75","nodeType":"YulExpressionStatement","src":"260:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:75","nodeType":"YulIdentifier","src":"217:5:75"},{"arguments":[{"name":"value","nativeSrc":"228:5:75","nodeType":"YulIdentifier","src":"228:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:75","nodeType":"YulLiteral","src":"243:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:75","nodeType":"YulLiteral","src":"248:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:75","nodeType":"YulIdentifier","src":"239:3:75"},"nativeSrc":"239:11:75","nodeType":"YulFunctionCall","src":"239:11:75"},{"kind":"number","nativeSrc":"252:1:75","nodeType":"YulLiteral","src":"252:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:75","nodeType":"YulIdentifier","src":"235:3:75"},"nativeSrc":"235:19:75","nodeType":"YulFunctionCall","src":"235:19:75"}],"functionName":{"name":"and","nativeSrc":"224:3:75","nodeType":"YulIdentifier","src":"224:3:75"},"nativeSrc":"224:31:75","nodeType":"YulFunctionCall","src":"224:31:75"}],"functionName":{"name":"eq","nativeSrc":"214:2:75","nodeType":"YulIdentifier","src":"214:2:75"},"nativeSrc":"214:42:75","nodeType":"YulFunctionCall","src":"214:42:75"}],"functionName":{"name":"iszero","nativeSrc":"207:6:75","nodeType":"YulIdentifier","src":"207:6:75"},"nativeSrc":"207:50:75","nodeType":"YulFunctionCall","src":"207:50:75"},"nativeSrc":"204:70:75","nodeType":"YulIf","src":"204:70:75"},{"nativeSrc":"283:15:75","nodeType":"YulAssignment","src":"283:15:75","value":{"name":"value","nativeSrc":"293:5:75","nodeType":"YulIdentifier","src":"293:5:75"},"variableNames":[{"name":"value0","nativeSrc":"283:6:75","nodeType":"YulIdentifier","src":"283:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:75","nodeType":"YulTypedName","src":"61:9:75","type":""},{"name":"dataEnd","nativeSrc":"72:7:75","nodeType":"YulTypedName","src":"72:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:75","nodeType":"YulTypedName","src":"84:6:75","type":""}],"src":"14:290:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6080604052348015600e575f5ffd5b50604051610cd2380380610cd2833981016040819052602b916056565b6001600160a01b038116605157604051636b35b1b760e01b815260040160405180910390fd5b506081565b5f602082840312156065575f5ffd5b81516001600160a01b0381168114607a575f5ffd5b9392505050565b610c448061008e5f395ff3fe60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b6100856100803660046108f8565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461092e565b6102ef565b005b6100856100c6366004610978565b6103a9565b6100856100d93660046108f8565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109b2565b61061b565b348015610108575f5ffd5b506100b66101173660046109da565b61067a565b5f8061012e6080840160608501610a56565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610a56565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610a56565b610693565b61022d9060a0880135610a83565b9190610710565b905061024961021a6040850160208601610a56565b6102539082610aae565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610a56565b6001600160a01b03169291906107c7565b6102e96102c86080850160608601610a56565b836102d96040870160208801610a56565b6001600160a01b03169190610834565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610a56565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610a56565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610acd565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610a56565b61022d9060a0890135610a83565b905061059a61021a6020860186610a56565b6105a49082610aae565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610a56565b6106146105ff6080860160608701610a56565b60a08601356102d96040880160208901610a56565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b0383163383610834565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610ae4565b6106ff906012610b04565b61070a90600a610c00565b92915050565b5f838302815f1985870982811083820303915050805f036107445783828161073a5761073a610a9a565b04925050506107c0565b80841161075b5761075b600385150260111861086a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261082e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061087b565b50505050565b6040516001600160a01b0383811660248301526044820183905261086591859182169063a9059cbb906064016107fc565b505050565b634e487b715f52806020526024601cfd5b5f5f60205f8451602086015f885af18061089a576040513d5f823e3d81fd5b50505f513d915081156108b15780600114156108be565b6001600160a01b0384163b155b1561082e57604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610909575f5ffd5b6107c083836108e7565b80356001600160a01b0381168114610929575f5ffd5b919050565b5f5f5f60608486031215610940575f5ffd5b61094984610913565b925061095760208501610913565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f60208284031215610988575f5ffd5b813567ffffffffffffffff81111561099e575f5ffd5b6109aa84828501610968565b949350505050565b5f5f604083850312156109c3575f5ffd5b6109cc83610913565b946020939093013593505050565b5f5f5f5f606085870312156109ed575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a11575f5ffd5b8501601f81018713610a21575f5ffd5b803567ffffffffffffffff811115610a37575f5ffd5b876020828401011115610a48575f5ffd5b949793965060200194505050565b5f60208284031215610a66575f5ffd5b6107c082610913565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610a6f565b634e487b7160e01b5f52601260045260245ffd5b5f82610ac857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610add575f5ffd5b5051919050565b5f60208284031215610af4575f5ffd5b815160ff811681146107c0575f5ffd5b60ff828116828216039081111561070a5761070a610a6f565b6001815b6001841115610b5857808504811115610b3c57610b3c610a6f565b6001841615610b4a57908102905b60019390931c928002610b21565b935093915050565b5f82610b6e5750600161070a565b81610b7a57505f61070a565b8160018114610b905760028114610b9a57610bb6565b600191505061070a565b60ff841115610bab57610bab610a6f565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610bd9575081810a61070a565b610be55f198484610b1d565b805f1904821115610bf857610bf8610a6f565b029392505050565b5f6107c060ff841683610b6056fea26469706673582212208a42d9f7c4b4239178105b96d61773c43d2c2b00dc8ad4541aa879138710d7f364736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xCD2 CODESIZE SUB DUP1 PUSH2 0xCD2 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 0xC44 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 0x8F8 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 0x92E JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F8 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 0x9B2 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 0x9DA JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xA56 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 0xA56 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 0xA56 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 0xA56 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAAE 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 0xA56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA56 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x834 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 0xA56 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 0xA56 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 0xACD 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 0xA56 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 0xA56 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 0xA56 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xA83 JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAAE 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 0xA56 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xA56 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 0x834 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 0xAE4 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x744 JUMPI DUP4 DUP3 DUP2 PUSH2 0x73A JUMPI PUSH2 0x73A PUSH2 0xA9A JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7C0 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x75B JUMPI PUSH2 0x75B PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x86A 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x82E SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x87B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x865 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x89A JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x8B1 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x82E 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 PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x909 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C0 DUP4 DUP4 PUSH2 0x8E7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x929 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x940 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x949 DUP5 PUSH2 0x913 JUMP JUMPDEST SWAP3 POP PUSH2 0x957 PUSH1 0x20 DUP6 ADD PUSH2 0x913 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 0x988 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x99E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9AA DUP5 DUP3 DUP6 ADD PUSH2 0x968 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9CC DUP4 PUSH2 0x913 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 0x9ED 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 0xA11 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA37 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA48 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 0xA66 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C0 DUP3 PUSH2 0x913 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 0xA6F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xAC8 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 0xADD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xB58 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB3C JUMPI PUSH2 0xB3C PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB4A JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB21 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xB6E JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xB7A JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xB90 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xB9A JUMPI PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBAB JUMPI PUSH2 0xBAB PUSH2 0xA6F 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 0xBD9 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xBE5 PUSH0 NOT DUP5 DUP5 PUSH2 0xB1D JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xBF8 JUMPI PUSH2 0xBF8 PUSH2 0xA6F JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7C0 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xB60 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 TIMESTAMP 0xD9 0xF7 0xC4 0xB4 0x23 SWAP2 PUSH25 0x105B96D61773C43D2C2B00DC8AD4541AA879138710D7F36473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"661:3653:4:-:0;;;1079:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1120:19:4;;1112:49;;;;-1:-1:-1;;;1112:49:4;;;;;;;;;;;;1079:87;661:3653;;14:290:75;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:75;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:75:o;:::-;661:3653:4;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_callOptionalReturn_9051":{"entryPoint":2171,"id":9051,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_1786":{"entryPoint":1683,"id":1786,"parameterSlots":1,"returnSlots":1},"@exactInputSingle_1894":{"entryPoint":284,"id":1894,"parameterSlots":1,"returnSlots":1},"@exactInput_2135":{"entryPoint":937,"id":2135,"parameterSlots":1,"returnSlots":1},"@exactOutputSingle_2027":{"entryPoint":963,"id":2027,"parameterSlots":1,"returnSlots":1},"@exactOutput_2122":{"entryPoint":null,"id":2122,"parameterSlots":1,"returnSlots":1},"@mulDiv_10139":{"entryPoint":1808,"id":10139,"parameterSlots":3,"returnSlots":1},"@panic_9542":{"entryPoint":2154,"id":9542,"parameterSlots":1,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":1991,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":2100,"id":8729,"parameterSlots":3,"returnSlots":0},"@setCurrentPrice_2109":{"entryPoint":751,"id":2109,"parameterSlots":3,"returnSlots":0},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@uniswapV3SwapCallback_2149":{"entryPoint":1658,"id":2149,"parameterSlots":4,"returnSlots":0},"@withdraw_2063":{"entryPoint":1563,"id":2063,"parameterSlots":2,"returnSlots":0},"abi_decode_address":{"entryPoint":2323,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_struct_ExactInputParams_calldata":{"entryPoint":2408,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ExactInputSingleParams_calldata":{"entryPoint":2279,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2646,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2350,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2482,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr":{"entryPoint":2522,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_ExactInputParams_$13406_calldata_ptr":{"entryPoint":2424,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactInputSingleParams_$13386_calldata_ptr":{"entryPoint":2296,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactOutputParams_$13452_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$13432_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2765,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":2788,"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_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":2734,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":2845,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":3072,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":2912,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":2691,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":2820,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":2671,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":2714,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:7557:75","nodeType":"YulBlock","src":"0:7557:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"99:86:75","nodeType":"YulBlock","src":"99:86:75","statements":[{"body":{"nativeSrc":"139:16:75","nodeType":"YulBlock","src":"139:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:75","nodeType":"YulLiteral","src":"148:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:75","nodeType":"YulLiteral","src":"151:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:75","nodeType":"YulIdentifier","src":"141:6:75"},"nativeSrc":"141:12:75","nodeType":"YulFunctionCall","src":"141:12:75"},"nativeSrc":"141:12:75","nodeType":"YulExpressionStatement","src":"141:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"120:3:75","nodeType":"YulIdentifier","src":"120:3:75"},{"name":"offset","nativeSrc":"125:6:75","nodeType":"YulIdentifier","src":"125:6:75"}],"functionName":{"name":"sub","nativeSrc":"116:3:75","nodeType":"YulIdentifier","src":"116:3:75"},"nativeSrc":"116:16:75","nodeType":"YulFunctionCall","src":"116:16:75"},{"kind":"number","nativeSrc":"134:3:75","nodeType":"YulLiteral","src":"134:3:75","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"112:3:75","nodeType":"YulIdentifier","src":"112:3:75"},"nativeSrc":"112:26:75","nodeType":"YulFunctionCall","src":"112:26:75"},"nativeSrc":"109:46:75","nodeType":"YulIf","src":"109:46:75"},{"nativeSrc":"164:15:75","nodeType":"YulAssignment","src":"164:15:75","value":{"name":"offset","nativeSrc":"173:6:75","nodeType":"YulIdentifier","src":"173:6:75"},"variableNames":[{"name":"value","nativeSrc":"164:5:75","nodeType":"YulIdentifier","src":"164:5:75"}]}]},"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"14:171:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"73:6:75","nodeType":"YulTypedName","src":"73:6:75","type":""},{"name":"end","nativeSrc":"81:3:75","nodeType":"YulTypedName","src":"81:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"89:5:75","nodeType":"YulTypedName","src":"89:5:75","type":""}],"src":"14:171:75"},{"body":{"nativeSrc":"303:157:75","nodeType":"YulBlock","src":"303:157:75","statements":[{"body":{"nativeSrc":"350:16:75","nodeType":"YulBlock","src":"350:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"359:1:75","nodeType":"YulLiteral","src":"359:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"362:1:75","nodeType":"YulLiteral","src":"362:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"352:6:75","nodeType":"YulIdentifier","src":"352:6:75"},"nativeSrc":"352:12:75","nodeType":"YulFunctionCall","src":"352:12:75"},"nativeSrc":"352:12:75","nodeType":"YulExpressionStatement","src":"352:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"324:7:75","nodeType":"YulIdentifier","src":"324:7:75"},{"name":"headStart","nativeSrc":"333:9:75","nodeType":"YulIdentifier","src":"333:9:75"}],"functionName":{"name":"sub","nativeSrc":"320:3:75","nodeType":"YulIdentifier","src":"320:3:75"},"nativeSrc":"320:23:75","nodeType":"YulFunctionCall","src":"320:23:75"},{"kind":"number","nativeSrc":"345:3:75","nodeType":"YulLiteral","src":"345:3:75","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"316:3:75","nodeType":"YulIdentifier","src":"316:3:75"},"nativeSrc":"316:33:75","nodeType":"YulFunctionCall","src":"316:33:75"},"nativeSrc":"313:53:75","nodeType":"YulIf","src":"313:53:75"},{"nativeSrc":"375:79:75","nodeType":"YulAssignment","src":"375:79:75","value":{"arguments":[{"name":"headStart","nativeSrc":"435:9:75","nodeType":"YulIdentifier","src":"435:9:75"},{"name":"dataEnd","nativeSrc":"446:7:75","nodeType":"YulIdentifier","src":"446:7:75"}],"functionName":{"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"385:49:75","nodeType":"YulIdentifier","src":"385:49:75"},"nativeSrc":"385:69:75","nodeType":"YulFunctionCall","src":"385:69:75"},"variableNames":[{"name":"value0","nativeSrc":"375:6:75","nodeType":"YulIdentifier","src":"375:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputSingleParams_$13386_calldata_ptr","nativeSrc":"190:270:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"269:9:75","nodeType":"YulTypedName","src":"269:9:75","type":""},{"name":"dataEnd","nativeSrc":"280:7:75","nodeType":"YulTypedName","src":"280:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"292:6:75","nodeType":"YulTypedName","src":"292:6:75","type":""}],"src":"190:270:75"},{"body":{"nativeSrc":"566:76:75","nodeType":"YulBlock","src":"566:76:75","statements":[{"nativeSrc":"576:26:75","nodeType":"YulAssignment","src":"576:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"588:9:75","nodeType":"YulIdentifier","src":"588:9:75"},{"kind":"number","nativeSrc":"599:2:75","nodeType":"YulLiteral","src":"599:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"584:3:75","nodeType":"YulIdentifier","src":"584:3:75"},"nativeSrc":"584:18:75","nodeType":"YulFunctionCall","src":"584:18:75"},"variableNames":[{"name":"tail","nativeSrc":"576:4:75","nodeType":"YulIdentifier","src":"576:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"618:9:75","nodeType":"YulIdentifier","src":"618:9:75"},{"name":"value0","nativeSrc":"629:6:75","nodeType":"YulIdentifier","src":"629:6:75"}],"functionName":{"name":"mstore","nativeSrc":"611:6:75","nodeType":"YulIdentifier","src":"611:6:75"},"nativeSrc":"611:25:75","nodeType":"YulFunctionCall","src":"611:25:75"},"nativeSrc":"611:25:75","nodeType":"YulExpressionStatement","src":"611:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"465:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"535:9:75","nodeType":"YulTypedName","src":"535:9:75","type":""},{"name":"value0","nativeSrc":"546:6:75","nodeType":"YulTypedName","src":"546:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"557:4:75","nodeType":"YulTypedName","src":"557:4:75","type":""}],"src":"465:177:75"},{"body":{"nativeSrc":"696:124:75","nodeType":"YulBlock","src":"696:124:75","statements":[{"nativeSrc":"706:29:75","nodeType":"YulAssignment","src":"706:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"728:6:75","nodeType":"YulIdentifier","src":"728:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"715:12:75","nodeType":"YulIdentifier","src":"715:12:75"},"nativeSrc":"715:20:75","nodeType":"YulFunctionCall","src":"715:20:75"},"variableNames":[{"name":"value","nativeSrc":"706:5:75","nodeType":"YulIdentifier","src":"706:5:75"}]},{"body":{"nativeSrc":"798:16:75","nodeType":"YulBlock","src":"798:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"807:1:75","nodeType":"YulLiteral","src":"807:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"810:1:75","nodeType":"YulLiteral","src":"810:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"800:6:75","nodeType":"YulIdentifier","src":"800:6:75"},"nativeSrc":"800:12:75","nodeType":"YulFunctionCall","src":"800:12:75"},"nativeSrc":"800:12:75","nodeType":"YulExpressionStatement","src":"800:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"757:5:75","nodeType":"YulIdentifier","src":"757:5:75"},{"arguments":[{"name":"value","nativeSrc":"768:5:75","nodeType":"YulIdentifier","src":"768:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"783:3:75","nodeType":"YulLiteral","src":"783:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"788:1:75","nodeType":"YulLiteral","src":"788:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"779:3:75","nodeType":"YulIdentifier","src":"779:3:75"},"nativeSrc":"779:11:75","nodeType":"YulFunctionCall","src":"779:11:75"},{"kind":"number","nativeSrc":"792:1:75","nodeType":"YulLiteral","src":"792:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"775:3:75","nodeType":"YulIdentifier","src":"775:3:75"},"nativeSrc":"775:19:75","nodeType":"YulFunctionCall","src":"775:19:75"}],"functionName":{"name":"and","nativeSrc":"764:3:75","nodeType":"YulIdentifier","src":"764:3:75"},"nativeSrc":"764:31:75","nodeType":"YulFunctionCall","src":"764:31:75"}],"functionName":{"name":"eq","nativeSrc":"754:2:75","nodeType":"YulIdentifier","src":"754:2:75"},"nativeSrc":"754:42:75","nodeType":"YulFunctionCall","src":"754:42:75"}],"functionName":{"name":"iszero","nativeSrc":"747:6:75","nodeType":"YulIdentifier","src":"747:6:75"},"nativeSrc":"747:50:75","nodeType":"YulFunctionCall","src":"747:50:75"},"nativeSrc":"744:70:75","nodeType":"YulIf","src":"744:70:75"}]},"name":"abi_decode_address","nativeSrc":"647:173:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"675:6:75","nodeType":"YulTypedName","src":"675:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"686:5:75","nodeType":"YulTypedName","src":"686:5:75","type":""}],"src":"647:173:75"},{"body":{"nativeSrc":"929:270:75","nodeType":"YulBlock","src":"929:270:75","statements":[{"body":{"nativeSrc":"975:16:75","nodeType":"YulBlock","src":"975:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"984:1:75","nodeType":"YulLiteral","src":"984:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"987:1:75","nodeType":"YulLiteral","src":"987:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"977:6:75","nodeType":"YulIdentifier","src":"977:6:75"},"nativeSrc":"977:12:75","nodeType":"YulFunctionCall","src":"977:12:75"},"nativeSrc":"977:12:75","nodeType":"YulExpressionStatement","src":"977:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"950:7:75","nodeType":"YulIdentifier","src":"950:7:75"},{"name":"headStart","nativeSrc":"959:9:75","nodeType":"YulIdentifier","src":"959:9:75"}],"functionName":{"name":"sub","nativeSrc":"946:3:75","nodeType":"YulIdentifier","src":"946:3:75"},"nativeSrc":"946:23:75","nodeType":"YulFunctionCall","src":"946:23:75"},{"kind":"number","nativeSrc":"971:2:75","nodeType":"YulLiteral","src":"971:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"942:3:75","nodeType":"YulIdentifier","src":"942:3:75"},"nativeSrc":"942:32:75","nodeType":"YulFunctionCall","src":"942:32:75"},"nativeSrc":"939:52:75","nodeType":"YulIf","src":"939:52:75"},{"nativeSrc":"1000:39:75","nodeType":"YulAssignment","src":"1000:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1029:9:75","nodeType":"YulIdentifier","src":"1029:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1010:18:75","nodeType":"YulIdentifier","src":"1010:18:75"},"nativeSrc":"1010:29:75","nodeType":"YulFunctionCall","src":"1010:29:75"},"variableNames":[{"name":"value0","nativeSrc":"1000:6:75","nodeType":"YulIdentifier","src":"1000:6:75"}]},{"nativeSrc":"1048:48:75","nodeType":"YulAssignment","src":"1048:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1081:9:75","nodeType":"YulIdentifier","src":"1081:9:75"},{"kind":"number","nativeSrc":"1092:2:75","nodeType":"YulLiteral","src":"1092:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1077:3:75","nodeType":"YulIdentifier","src":"1077:3:75"},"nativeSrc":"1077:18:75","nodeType":"YulFunctionCall","src":"1077:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1058:18:75","nodeType":"YulIdentifier","src":"1058:18:75"},"nativeSrc":"1058:38:75","nodeType":"YulFunctionCall","src":"1058:38:75"},"variableNames":[{"name":"value1","nativeSrc":"1048:6:75","nodeType":"YulIdentifier","src":"1048:6:75"}]},{"nativeSrc":"1105:14:75","nodeType":"YulVariableDeclaration","src":"1105:14:75","value":{"kind":"number","nativeSrc":"1118:1:75","nodeType":"YulLiteral","src":"1118:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1109:5:75","nodeType":"YulTypedName","src":"1109:5:75","type":""}]},{"nativeSrc":"1128:41:75","nodeType":"YulAssignment","src":"1128:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1154:9:75","nodeType":"YulIdentifier","src":"1154:9:75"},{"kind":"number","nativeSrc":"1165:2:75","nodeType":"YulLiteral","src":"1165:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1150:3:75","nodeType":"YulIdentifier","src":"1150:3:75"},"nativeSrc":"1150:18:75","nodeType":"YulFunctionCall","src":"1150:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1137:12:75","nodeType":"YulIdentifier","src":"1137:12:75"},"nativeSrc":"1137:32:75","nodeType":"YulFunctionCall","src":"1137:32:75"},"variableNames":[{"name":"value","nativeSrc":"1128:5:75","nodeType":"YulIdentifier","src":"1128:5:75"}]},{"nativeSrc":"1178:15:75","nodeType":"YulAssignment","src":"1178:15:75","value":{"name":"value","nativeSrc":"1188:5:75","nodeType":"YulIdentifier","src":"1188:5:75"},"variableNames":[{"name":"value2","nativeSrc":"1178:6:75","nodeType":"YulIdentifier","src":"1178:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"825:374:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"879:9:75","nodeType":"YulTypedName","src":"879:9:75","type":""},{"name":"dataEnd","nativeSrc":"890:7:75","nodeType":"YulTypedName","src":"890:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"902:6:75","nodeType":"YulTypedName","src":"902:6:75","type":""},{"name":"value1","nativeSrc":"910:6:75","nodeType":"YulTypedName","src":"910:6:75","type":""},{"name":"value2","nativeSrc":"918:6:75","nodeType":"YulTypedName","src":"918:6:75","type":""}],"src":"825:374:75"},{"body":{"nativeSrc":"1283:86:75","nodeType":"YulBlock","src":"1283:86:75","statements":[{"body":{"nativeSrc":"1323:16:75","nodeType":"YulBlock","src":"1323:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1332:1:75","nodeType":"YulLiteral","src":"1332:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1335:1:75","nodeType":"YulLiteral","src":"1335:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1325:6:75","nodeType":"YulIdentifier","src":"1325:6:75"},"nativeSrc":"1325:12:75","nodeType":"YulFunctionCall","src":"1325:12:75"},"nativeSrc":"1325:12:75","nodeType":"YulExpressionStatement","src":"1325:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1304:3:75","nodeType":"YulIdentifier","src":"1304:3:75"},{"name":"offset","nativeSrc":"1309:6:75","nodeType":"YulIdentifier","src":"1309:6:75"}],"functionName":{"name":"sub","nativeSrc":"1300:3:75","nodeType":"YulIdentifier","src":"1300:3:75"},"nativeSrc":"1300:16:75","nodeType":"YulFunctionCall","src":"1300:16:75"},{"kind":"number","nativeSrc":"1318:3:75","nodeType":"YulLiteral","src":"1318:3:75","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"1296:3:75","nodeType":"YulIdentifier","src":"1296:3:75"},"nativeSrc":"1296:26:75","nodeType":"YulFunctionCall","src":"1296:26:75"},"nativeSrc":"1293:46:75","nodeType":"YulIf","src":"1293:46:75"},{"nativeSrc":"1348:15:75","nodeType":"YulAssignment","src":"1348:15:75","value":{"name":"offset","nativeSrc":"1357:6:75","nodeType":"YulIdentifier","src":"1357:6:75"},"variableNames":[{"name":"value","nativeSrc":"1348:5:75","nodeType":"YulIdentifier","src":"1348:5:75"}]}]},"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"1204:165:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1257:6:75","nodeType":"YulTypedName","src":"1257:6:75","type":""},{"name":"end","nativeSrc":"1265:3:75","nodeType":"YulTypedName","src":"1265:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1273:5:75","nodeType":"YulTypedName","src":"1273:5:75","type":""}],"src":"1204:165:75"},{"body":{"nativeSrc":"1481:268:75","nodeType":"YulBlock","src":"1481:268:75","statements":[{"body":{"nativeSrc":"1527:16:75","nodeType":"YulBlock","src":"1527:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1536:1:75","nodeType":"YulLiteral","src":"1536:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1539:1:75","nodeType":"YulLiteral","src":"1539:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1529:6:75","nodeType":"YulIdentifier","src":"1529:6:75"},"nativeSrc":"1529:12:75","nodeType":"YulFunctionCall","src":"1529:12:75"},"nativeSrc":"1529:12:75","nodeType":"YulExpressionStatement","src":"1529:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1502:7:75","nodeType":"YulIdentifier","src":"1502:7:75"},{"name":"headStart","nativeSrc":"1511:9:75","nodeType":"YulIdentifier","src":"1511:9:75"}],"functionName":{"name":"sub","nativeSrc":"1498:3:75","nodeType":"YulIdentifier","src":"1498:3:75"},"nativeSrc":"1498:23:75","nodeType":"YulFunctionCall","src":"1498:23:75"},{"kind":"number","nativeSrc":"1523:2:75","nodeType":"YulLiteral","src":"1523:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1494:3:75","nodeType":"YulIdentifier","src":"1494:3:75"},"nativeSrc":"1494:32:75","nodeType":"YulFunctionCall","src":"1494:32:75"},"nativeSrc":"1491:52:75","nodeType":"YulIf","src":"1491:52:75"},{"nativeSrc":"1552:37:75","nodeType":"YulVariableDeclaration","src":"1552:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1579:9:75","nodeType":"YulIdentifier","src":"1579:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1566:12:75","nodeType":"YulIdentifier","src":"1566:12:75"},"nativeSrc":"1566:23:75","nodeType":"YulFunctionCall","src":"1566:23:75"},"variables":[{"name":"offset","nativeSrc":"1556:6:75","nodeType":"YulTypedName","src":"1556:6:75","type":""}]},{"body":{"nativeSrc":"1632:16:75","nodeType":"YulBlock","src":"1632:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1641:1:75","nodeType":"YulLiteral","src":"1641:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1644:1:75","nodeType":"YulLiteral","src":"1644:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1634:6:75","nodeType":"YulIdentifier","src":"1634:6:75"},"nativeSrc":"1634:12:75","nodeType":"YulFunctionCall","src":"1634:12:75"},"nativeSrc":"1634:12:75","nodeType":"YulExpressionStatement","src":"1634:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1604:6:75","nodeType":"YulIdentifier","src":"1604:6:75"},{"kind":"number","nativeSrc":"1612:18:75","nodeType":"YulLiteral","src":"1612:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1601:2:75","nodeType":"YulIdentifier","src":"1601:2:75"},"nativeSrc":"1601:30:75","nodeType":"YulFunctionCall","src":"1601:30:75"},"nativeSrc":"1598:50:75","nodeType":"YulIf","src":"1598:50:75"},{"nativeSrc":"1657:86:75","nodeType":"YulAssignment","src":"1657:86:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1715:9:75","nodeType":"YulIdentifier","src":"1715:9:75"},{"name":"offset","nativeSrc":"1726:6:75","nodeType":"YulIdentifier","src":"1726:6:75"}],"functionName":{"name":"add","nativeSrc":"1711:3:75","nodeType":"YulIdentifier","src":"1711:3:75"},"nativeSrc":"1711:22:75","nodeType":"YulFunctionCall","src":"1711:22:75"},{"name":"dataEnd","nativeSrc":"1735:7:75","nodeType":"YulIdentifier","src":"1735:7:75"}],"functionName":{"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"1667:43:75","nodeType":"YulIdentifier","src":"1667:43:75"},"nativeSrc":"1667:76:75","nodeType":"YulFunctionCall","src":"1667:76:75"},"variableNames":[{"name":"value0","nativeSrc":"1657:6:75","nodeType":"YulIdentifier","src":"1657:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ExactInputParams_$13406_calldata_ptr","nativeSrc":"1374:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1447:9:75","nodeType":"YulTypedName","src":"1447:9:75","type":""},{"name":"dataEnd","nativeSrc":"1458:7:75","nodeType":"YulTypedName","src":"1458:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1470:6:75","nodeType":"YulTypedName","src":"1470:6:75","type":""}],"src":"1374:375:75"},{"body":{"nativeSrc":"1868:157:75","nodeType":"YulBlock","src":"1868:157:75","statements":[{"body":{"nativeSrc":"1915:16:75","nodeType":"YulBlock","src":"1915:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1924:1:75","nodeType":"YulLiteral","src":"1924:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1927:1:75","nodeType":"YulLiteral","src":"1927:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1917:6:75","nodeType":"YulIdentifier","src":"1917:6:75"},"nativeSrc":"1917:12:75","nodeType":"YulFunctionCall","src":"1917:12:75"},"nativeSrc":"1917:12:75","nodeType":"YulExpressionStatement","src":"1917:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1889:7:75","nodeType":"YulIdentifier","src":"1889:7:75"},{"name":"headStart","nativeSrc":"1898:9:75","nodeType":"YulIdentifier","src":"1898:9:75"}],"functionName":{"name":"sub","nativeSrc":"1885:3:75","nodeType":"YulIdentifier","src":"1885:3:75"},"nativeSrc":"1885:23:75","nodeType":"YulFunctionCall","src":"1885:23:75"},{"kind":"number","nativeSrc":"1910:3:75","nodeType":"YulLiteral","src":"1910:3:75","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"1881:3:75","nodeType":"YulIdentifier","src":"1881:3:75"},"nativeSrc":"1881:33:75","nodeType":"YulFunctionCall","src":"1881:33:75"},"nativeSrc":"1878:53:75","nodeType":"YulIf","src":"1878:53:75"},{"nativeSrc":"1940:79:75","nodeType":"YulAssignment","src":"1940:79:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2000:9:75","nodeType":"YulIdentifier","src":"2000:9:75"},{"name":"dataEnd","nativeSrc":"2011:7:75","nodeType":"YulIdentifier","src":"2011:7:75"}],"functionName":{"name":"abi_decode_struct_ExactInputSingleParams_calldata","nativeSrc":"1950:49:75","nodeType":"YulIdentifier","src":"1950:49:75"},"nativeSrc":"1950:69:75","nodeType":"YulFunctionCall","src":"1950:69:75"},"variableNames":[{"name":"value0","nativeSrc":"1940:6:75","nodeType":"YulIdentifier","src":"1940:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputSingleParams_$13432_calldata_ptr","nativeSrc":"1754:271:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1834:9:75","nodeType":"YulTypedName","src":"1834:9:75","type":""},{"name":"dataEnd","nativeSrc":"1845:7:75","nodeType":"YulTypedName","src":"1845:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1857:6:75","nodeType":"YulTypedName","src":"1857:6:75","type":""}],"src":"1754:271:75"},{"body":{"nativeSrc":"2138:268:75","nodeType":"YulBlock","src":"2138:268:75","statements":[{"body":{"nativeSrc":"2184:16:75","nodeType":"YulBlock","src":"2184:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2193:1:75","nodeType":"YulLiteral","src":"2193:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2196:1:75","nodeType":"YulLiteral","src":"2196:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2186:6:75","nodeType":"YulIdentifier","src":"2186:6:75"},"nativeSrc":"2186:12:75","nodeType":"YulFunctionCall","src":"2186:12:75"},"nativeSrc":"2186:12:75","nodeType":"YulExpressionStatement","src":"2186:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2159:7:75","nodeType":"YulIdentifier","src":"2159:7:75"},{"name":"headStart","nativeSrc":"2168:9:75","nodeType":"YulIdentifier","src":"2168:9:75"}],"functionName":{"name":"sub","nativeSrc":"2155:3:75","nodeType":"YulIdentifier","src":"2155:3:75"},"nativeSrc":"2155:23:75","nodeType":"YulFunctionCall","src":"2155:23:75"},{"kind":"number","nativeSrc":"2180:2:75","nodeType":"YulLiteral","src":"2180:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2151:3:75","nodeType":"YulIdentifier","src":"2151:3:75"},"nativeSrc":"2151:32:75","nodeType":"YulFunctionCall","src":"2151:32:75"},"nativeSrc":"2148:52:75","nodeType":"YulIf","src":"2148:52:75"},{"nativeSrc":"2209:37:75","nodeType":"YulVariableDeclaration","src":"2209:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2236:9:75","nodeType":"YulIdentifier","src":"2236:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2223:12:75","nodeType":"YulIdentifier","src":"2223:12:75"},"nativeSrc":"2223:23:75","nodeType":"YulFunctionCall","src":"2223:23:75"},"variables":[{"name":"offset","nativeSrc":"2213:6:75","nodeType":"YulTypedName","src":"2213:6:75","type":""}]},{"body":{"nativeSrc":"2289:16:75","nodeType":"YulBlock","src":"2289:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2298:1:75","nodeType":"YulLiteral","src":"2298:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2301:1:75","nodeType":"YulLiteral","src":"2301:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2291:6:75","nodeType":"YulIdentifier","src":"2291:6:75"},"nativeSrc":"2291:12:75","nodeType":"YulFunctionCall","src":"2291:12:75"},"nativeSrc":"2291:12:75","nodeType":"YulExpressionStatement","src":"2291:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2261:6:75","nodeType":"YulIdentifier","src":"2261:6:75"},{"kind":"number","nativeSrc":"2269:18:75","nodeType":"YulLiteral","src":"2269:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2258:2:75","nodeType":"YulIdentifier","src":"2258:2:75"},"nativeSrc":"2258:30:75","nodeType":"YulFunctionCall","src":"2258:30:75"},"nativeSrc":"2255:50:75","nodeType":"YulIf","src":"2255:50:75"},{"nativeSrc":"2314:86:75","nodeType":"YulAssignment","src":"2314:86:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2372:9:75","nodeType":"YulIdentifier","src":"2372:9:75"},{"name":"offset","nativeSrc":"2383:6:75","nodeType":"YulIdentifier","src":"2383:6:75"}],"functionName":{"name":"add","nativeSrc":"2368:3:75","nodeType":"YulIdentifier","src":"2368:3:75"},"nativeSrc":"2368:22:75","nodeType":"YulFunctionCall","src":"2368:22:75"},{"name":"dataEnd","nativeSrc":"2392:7:75","nodeType":"YulIdentifier","src":"2392:7:75"}],"functionName":{"name":"abi_decode_struct_ExactInputParams_calldata","nativeSrc":"2324:43:75","nodeType":"YulIdentifier","src":"2324:43:75"},"nativeSrc":"2324:76:75","nodeType":"YulFunctionCall","src":"2324:76:75"},"variableNames":[{"name":"value0","nativeSrc":"2314:6:75","nodeType":"YulIdentifier","src":"2314:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ExactOutputParams_$13452_calldata_ptr","nativeSrc":"2030:376:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2104:9:75","nodeType":"YulTypedName","src":"2104:9:75","type":""},{"name":"dataEnd","nativeSrc":"2115:7:75","nodeType":"YulTypedName","src":"2115:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2127:6:75","nodeType":"YulTypedName","src":"2127:6:75","type":""}],"src":"2030:376:75"},{"body":{"nativeSrc":"2498:213:75","nodeType":"YulBlock","src":"2498:213:75","statements":[{"body":{"nativeSrc":"2544:16:75","nodeType":"YulBlock","src":"2544:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2553:1:75","nodeType":"YulLiteral","src":"2553:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2556:1:75","nodeType":"YulLiteral","src":"2556:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2546:6:75","nodeType":"YulIdentifier","src":"2546:6:75"},"nativeSrc":"2546:12:75","nodeType":"YulFunctionCall","src":"2546:12:75"},"nativeSrc":"2546:12:75","nodeType":"YulExpressionStatement","src":"2546:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2519:7:75","nodeType":"YulIdentifier","src":"2519:7:75"},{"name":"headStart","nativeSrc":"2528:9:75","nodeType":"YulIdentifier","src":"2528:9:75"}],"functionName":{"name":"sub","nativeSrc":"2515:3:75","nodeType":"YulIdentifier","src":"2515:3:75"},"nativeSrc":"2515:23:75","nodeType":"YulFunctionCall","src":"2515:23:75"},{"kind":"number","nativeSrc":"2540:2:75","nodeType":"YulLiteral","src":"2540:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2511:3:75","nodeType":"YulIdentifier","src":"2511:3:75"},"nativeSrc":"2511:32:75","nodeType":"YulFunctionCall","src":"2511:32:75"},"nativeSrc":"2508:52:75","nodeType":"YulIf","src":"2508:52:75"},{"nativeSrc":"2569:39:75","nodeType":"YulAssignment","src":"2569:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2598:9:75","nodeType":"YulIdentifier","src":"2598:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2579:18:75","nodeType":"YulIdentifier","src":"2579:18:75"},"nativeSrc":"2579:29:75","nodeType":"YulFunctionCall","src":"2579:29:75"},"variableNames":[{"name":"value0","nativeSrc":"2569:6:75","nodeType":"YulIdentifier","src":"2569:6:75"}]},{"nativeSrc":"2617:14:75","nodeType":"YulVariableDeclaration","src":"2617:14:75","value":{"kind":"number","nativeSrc":"2630:1:75","nodeType":"YulLiteral","src":"2630:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2621:5:75","nodeType":"YulTypedName","src":"2621:5:75","type":""}]},{"nativeSrc":"2640:41:75","nodeType":"YulAssignment","src":"2640:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2666:9:75","nodeType":"YulIdentifier","src":"2666:9:75"},{"kind":"number","nativeSrc":"2677:2:75","nodeType":"YulLiteral","src":"2677:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2662:3:75","nodeType":"YulIdentifier","src":"2662:3:75"},"nativeSrc":"2662:18:75","nodeType":"YulFunctionCall","src":"2662:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2649:12:75","nodeType":"YulIdentifier","src":"2649:12:75"},"nativeSrc":"2649:32:75","nodeType":"YulFunctionCall","src":"2649:32:75"},"variableNames":[{"name":"value","nativeSrc":"2640:5:75","nodeType":"YulIdentifier","src":"2640:5:75"}]},{"nativeSrc":"2690:15:75","nodeType":"YulAssignment","src":"2690:15:75","value":{"name":"value","nativeSrc":"2700:5:75","nodeType":"YulIdentifier","src":"2700:5:75"},"variableNames":[{"name":"value1","nativeSrc":"2690:6:75","nodeType":"YulIdentifier","src":"2690:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"2411:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2456:9:75","nodeType":"YulTypedName","src":"2456:9:75","type":""},{"name":"dataEnd","nativeSrc":"2467:7:75","nodeType":"YulTypedName","src":"2467:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2479:6:75","nodeType":"YulTypedName","src":"2479:6:75","type":""},{"name":"value1","nativeSrc":"2487:6:75","nodeType":"YulTypedName","src":"2487:6:75","type":""}],"src":"2411:300:75"},{"body":{"nativeSrc":"2837:697:75","nodeType":"YulBlock","src":"2837:697:75","statements":[{"body":{"nativeSrc":"2883:16:75","nodeType":"YulBlock","src":"2883:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2892:1:75","nodeType":"YulLiteral","src":"2892:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2895:1:75","nodeType":"YulLiteral","src":"2895:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2885:6:75","nodeType":"YulIdentifier","src":"2885:6:75"},"nativeSrc":"2885:12:75","nodeType":"YulFunctionCall","src":"2885:12:75"},"nativeSrc":"2885:12:75","nodeType":"YulExpressionStatement","src":"2885:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2858:7:75","nodeType":"YulIdentifier","src":"2858:7:75"},{"name":"headStart","nativeSrc":"2867:9:75","nodeType":"YulIdentifier","src":"2867:9:75"}],"functionName":{"name":"sub","nativeSrc":"2854:3:75","nodeType":"YulIdentifier","src":"2854:3:75"},"nativeSrc":"2854:23:75","nodeType":"YulFunctionCall","src":"2854:23:75"},{"kind":"number","nativeSrc":"2879:2:75","nodeType":"YulLiteral","src":"2879:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2850:3:75","nodeType":"YulIdentifier","src":"2850:3:75"},"nativeSrc":"2850:32:75","nodeType":"YulFunctionCall","src":"2850:32:75"},"nativeSrc":"2847:52:75","nodeType":"YulIf","src":"2847:52:75"},{"nativeSrc":"2908:14:75","nodeType":"YulVariableDeclaration","src":"2908:14:75","value":{"kind":"number","nativeSrc":"2921:1:75","nodeType":"YulLiteral","src":"2921:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2912:5:75","nodeType":"YulTypedName","src":"2912:5:75","type":""}]},{"nativeSrc":"2931:32:75","nodeType":"YulAssignment","src":"2931:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2953:9:75","nodeType":"YulIdentifier","src":"2953:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2940:12:75","nodeType":"YulIdentifier","src":"2940:12:75"},"nativeSrc":"2940:23:75","nodeType":"YulFunctionCall","src":"2940:23:75"},"variableNames":[{"name":"value","nativeSrc":"2931:5:75","nodeType":"YulIdentifier","src":"2931:5:75"}]},{"nativeSrc":"2972:15:75","nodeType":"YulAssignment","src":"2972:15:75","value":{"name":"value","nativeSrc":"2982:5:75","nodeType":"YulIdentifier","src":"2982:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2972:6:75","nodeType":"YulIdentifier","src":"2972:6:75"}]},{"nativeSrc":"2996:16:75","nodeType":"YulVariableDeclaration","src":"2996:16:75","value":{"kind":"number","nativeSrc":"3011:1:75","nodeType":"YulLiteral","src":"3011:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3000:7:75","nodeType":"YulTypedName","src":"3000:7:75","type":""}]},{"nativeSrc":"3021:43:75","nodeType":"YulAssignment","src":"3021:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3049:9:75","nodeType":"YulIdentifier","src":"3049:9:75"},{"kind":"number","nativeSrc":"3060:2:75","nodeType":"YulLiteral","src":"3060:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3045:3:75","nodeType":"YulIdentifier","src":"3045:3:75"},"nativeSrc":"3045:18:75","nodeType":"YulFunctionCall","src":"3045:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3032:12:75","nodeType":"YulIdentifier","src":"3032:12:75"},"nativeSrc":"3032:32:75","nodeType":"YulFunctionCall","src":"3032:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"3021:7:75","nodeType":"YulIdentifier","src":"3021:7:75"}]},{"nativeSrc":"3073:17:75","nodeType":"YulAssignment","src":"3073:17:75","value":{"name":"value_1","nativeSrc":"3083:7:75","nodeType":"YulIdentifier","src":"3083:7:75"},"variableNames":[{"name":"value1","nativeSrc":"3073:6:75","nodeType":"YulIdentifier","src":"3073:6:75"}]},{"nativeSrc":"3099:46:75","nodeType":"YulVariableDeclaration","src":"3099:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3130:9:75","nodeType":"YulIdentifier","src":"3130:9:75"},{"kind":"number","nativeSrc":"3141:2:75","nodeType":"YulLiteral","src":"3141:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3126:3:75","nodeType":"YulIdentifier","src":"3126:3:75"},"nativeSrc":"3126:18:75","nodeType":"YulFunctionCall","src":"3126:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3113:12:75","nodeType":"YulIdentifier","src":"3113:12:75"},"nativeSrc":"3113:32:75","nodeType":"YulFunctionCall","src":"3113:32:75"},"variables":[{"name":"offset","nativeSrc":"3103:6:75","nodeType":"YulTypedName","src":"3103:6:75","type":""}]},{"body":{"nativeSrc":"3188:16:75","nodeType":"YulBlock","src":"3188:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3197:1:75","nodeType":"YulLiteral","src":"3197:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3200:1:75","nodeType":"YulLiteral","src":"3200:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3190:6:75","nodeType":"YulIdentifier","src":"3190:6:75"},"nativeSrc":"3190:12:75","nodeType":"YulFunctionCall","src":"3190:12:75"},"nativeSrc":"3190:12:75","nodeType":"YulExpressionStatement","src":"3190:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3160:6:75","nodeType":"YulIdentifier","src":"3160:6:75"},{"kind":"number","nativeSrc":"3168:18:75","nodeType":"YulLiteral","src":"3168:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3157:2:75","nodeType":"YulIdentifier","src":"3157:2:75"},"nativeSrc":"3157:30:75","nodeType":"YulFunctionCall","src":"3157:30:75"},"nativeSrc":"3154:50:75","nodeType":"YulIf","src":"3154:50:75"},{"nativeSrc":"3213:32:75","nodeType":"YulVariableDeclaration","src":"3213:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3227:9:75","nodeType":"YulIdentifier","src":"3227:9:75"},{"name":"offset","nativeSrc":"3238:6:75","nodeType":"YulIdentifier","src":"3238:6:75"}],"functionName":{"name":"add","nativeSrc":"3223:3:75","nodeType":"YulIdentifier","src":"3223:3:75"},"nativeSrc":"3223:22:75","nodeType":"YulFunctionCall","src":"3223:22:75"},"variables":[{"name":"_1","nativeSrc":"3217:2:75","nodeType":"YulTypedName","src":"3217:2:75","type":""}]},{"body":{"nativeSrc":"3293:16:75","nodeType":"YulBlock","src":"3293:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3302:1:75","nodeType":"YulLiteral","src":"3302:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3305:1:75","nodeType":"YulLiteral","src":"3305:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3295:6:75","nodeType":"YulIdentifier","src":"3295:6:75"},"nativeSrc":"3295:12:75","nodeType":"YulFunctionCall","src":"3295:12:75"},"nativeSrc":"3295:12:75","nodeType":"YulExpressionStatement","src":"3295:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3272:2:75","nodeType":"YulIdentifier","src":"3272:2:75"},{"kind":"number","nativeSrc":"3276:4:75","nodeType":"YulLiteral","src":"3276:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3268:3:75","nodeType":"YulIdentifier","src":"3268:3:75"},"nativeSrc":"3268:13:75","nodeType":"YulFunctionCall","src":"3268:13:75"},{"name":"dataEnd","nativeSrc":"3283:7:75","nodeType":"YulIdentifier","src":"3283:7:75"}],"functionName":{"name":"slt","nativeSrc":"3264:3:75","nodeType":"YulIdentifier","src":"3264:3:75"},"nativeSrc":"3264:27:75","nodeType":"YulFunctionCall","src":"3264:27:75"}],"functionName":{"name":"iszero","nativeSrc":"3257:6:75","nodeType":"YulIdentifier","src":"3257:6:75"},"nativeSrc":"3257:35:75","nodeType":"YulFunctionCall","src":"3257:35:75"},"nativeSrc":"3254:55:75","nodeType":"YulIf","src":"3254:55:75"},{"nativeSrc":"3318:30:75","nodeType":"YulVariableDeclaration","src":"3318:30:75","value":{"arguments":[{"name":"_1","nativeSrc":"3345:2:75","nodeType":"YulIdentifier","src":"3345:2:75"}],"functionName":{"name":"calldataload","nativeSrc":"3332:12:75","nodeType":"YulIdentifier","src":"3332:12:75"},"nativeSrc":"3332:16:75","nodeType":"YulFunctionCall","src":"3332:16:75"},"variables":[{"name":"length","nativeSrc":"3322:6:75","nodeType":"YulTypedName","src":"3322:6:75","type":""}]},{"body":{"nativeSrc":"3391:16:75","nodeType":"YulBlock","src":"3391:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3400:1:75","nodeType":"YulLiteral","src":"3400:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3403:1:75","nodeType":"YulLiteral","src":"3403:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3393:6:75","nodeType":"YulIdentifier","src":"3393:6:75"},"nativeSrc":"3393:12:75","nodeType":"YulFunctionCall","src":"3393:12:75"},"nativeSrc":"3393:12:75","nodeType":"YulExpressionStatement","src":"3393:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3363:6:75","nodeType":"YulIdentifier","src":"3363:6:75"},{"kind":"number","nativeSrc":"3371:18:75","nodeType":"YulLiteral","src":"3371:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3360:2:75","nodeType":"YulIdentifier","src":"3360:2:75"},"nativeSrc":"3360:30:75","nodeType":"YulFunctionCall","src":"3360:30:75"},"nativeSrc":"3357:50:75","nodeType":"YulIf","src":"3357:50:75"},{"body":{"nativeSrc":"3457:16:75","nodeType":"YulBlock","src":"3457:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3466:1:75","nodeType":"YulLiteral","src":"3466:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3469:1:75","nodeType":"YulLiteral","src":"3469:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3459:6:75","nodeType":"YulIdentifier","src":"3459:6:75"},"nativeSrc":"3459:12:75","nodeType":"YulFunctionCall","src":"3459:12:75"},"nativeSrc":"3459:12:75","nodeType":"YulExpressionStatement","src":"3459:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3430:2:75","nodeType":"YulIdentifier","src":"3430:2:75"},{"name":"length","nativeSrc":"3434:6:75","nodeType":"YulIdentifier","src":"3434:6:75"}],"functionName":{"name":"add","nativeSrc":"3426:3:75","nodeType":"YulIdentifier","src":"3426:3:75"},"nativeSrc":"3426:15:75","nodeType":"YulFunctionCall","src":"3426:15:75"},{"kind":"number","nativeSrc":"3443:2:75","nodeType":"YulLiteral","src":"3443:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3422:3:75","nodeType":"YulIdentifier","src":"3422:3:75"},"nativeSrc":"3422:24:75","nodeType":"YulFunctionCall","src":"3422:24:75"},{"name":"dataEnd","nativeSrc":"3448:7:75","nodeType":"YulIdentifier","src":"3448:7:75"}],"functionName":{"name":"gt","nativeSrc":"3419:2:75","nodeType":"YulIdentifier","src":"3419:2:75"},"nativeSrc":"3419:37:75","nodeType":"YulFunctionCall","src":"3419:37:75"},"nativeSrc":"3416:57:75","nodeType":"YulIf","src":"3416:57:75"},{"nativeSrc":"3482:21:75","nodeType":"YulAssignment","src":"3482:21:75","value":{"arguments":[{"name":"_1","nativeSrc":"3496:2:75","nodeType":"YulIdentifier","src":"3496:2:75"},{"kind":"number","nativeSrc":"3500:2:75","nodeType":"YulLiteral","src":"3500:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3492:3:75","nodeType":"YulIdentifier","src":"3492:3:75"},"nativeSrc":"3492:11:75","nodeType":"YulFunctionCall","src":"3492:11:75"},"variableNames":[{"name":"value2","nativeSrc":"3482:6:75","nodeType":"YulIdentifier","src":"3482:6:75"}]},{"nativeSrc":"3512:16:75","nodeType":"YulAssignment","src":"3512:16:75","value":{"name":"length","nativeSrc":"3522:6:75","nodeType":"YulIdentifier","src":"3522:6:75"},"variableNames":[{"name":"value3","nativeSrc":"3512:6:75","nodeType":"YulIdentifier","src":"3512:6:75"}]}]},"name":"abi_decode_tuple_t_int256t_int256t_bytes_calldata_ptr","nativeSrc":"2716:818:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2779:9:75","nodeType":"YulTypedName","src":"2779:9:75","type":""},{"name":"dataEnd","nativeSrc":"2790:7:75","nodeType":"YulTypedName","src":"2790:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2802:6:75","nodeType":"YulTypedName","src":"2802:6:75","type":""},{"name":"value1","nativeSrc":"2810:6:75","nodeType":"YulTypedName","src":"2810:6:75","type":""},{"name":"value2","nativeSrc":"2818:6:75","nodeType":"YulTypedName","src":"2818:6:75","type":""},{"name":"value3","nativeSrc":"2826:6:75","nodeType":"YulTypedName","src":"2826:6:75","type":""}],"src":"2716:818:75"},{"body":{"nativeSrc":"3609:116:75","nodeType":"YulBlock","src":"3609:116:75","statements":[{"body":{"nativeSrc":"3655:16:75","nodeType":"YulBlock","src":"3655:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3664:1:75","nodeType":"YulLiteral","src":"3664:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3667:1:75","nodeType":"YulLiteral","src":"3667:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3657:6:75","nodeType":"YulIdentifier","src":"3657:6:75"},"nativeSrc":"3657:12:75","nodeType":"YulFunctionCall","src":"3657:12:75"},"nativeSrc":"3657:12:75","nodeType":"YulExpressionStatement","src":"3657:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3630:7:75","nodeType":"YulIdentifier","src":"3630:7:75"},{"name":"headStart","nativeSrc":"3639:9:75","nodeType":"YulIdentifier","src":"3639:9:75"}],"functionName":{"name":"sub","nativeSrc":"3626:3:75","nodeType":"YulIdentifier","src":"3626:3:75"},"nativeSrc":"3626:23:75","nodeType":"YulFunctionCall","src":"3626:23:75"},{"kind":"number","nativeSrc":"3651:2:75","nodeType":"YulLiteral","src":"3651:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3622:3:75","nodeType":"YulIdentifier","src":"3622:3:75"},"nativeSrc":"3622:32:75","nodeType":"YulFunctionCall","src":"3622:32:75"},"nativeSrc":"3619:52:75","nodeType":"YulIf","src":"3619:52:75"},{"nativeSrc":"3680:39:75","nodeType":"YulAssignment","src":"3680:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3709:9:75","nodeType":"YulIdentifier","src":"3709:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3690:18:75","nodeType":"YulIdentifier","src":"3690:18:75"},"nativeSrc":"3690:29:75","nodeType":"YulFunctionCall","src":"3690:29:75"},"variableNames":[{"name":"value0","nativeSrc":"3680:6:75","nodeType":"YulIdentifier","src":"3680:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3539:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3575:9:75","nodeType":"YulTypedName","src":"3575:9:75","type":""},{"name":"dataEnd","nativeSrc":"3586:7:75","nodeType":"YulTypedName","src":"3586:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3598:6:75","nodeType":"YulTypedName","src":"3598:6:75","type":""}],"src":"3539:186:75"},{"body":{"nativeSrc":"3762:95:75","nodeType":"YulBlock","src":"3762:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3779:1:75","nodeType":"YulLiteral","src":"3779:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3786:3:75","nodeType":"YulLiteral","src":"3786:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3791:10:75","nodeType":"YulLiteral","src":"3791:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3782:3:75","nodeType":"YulIdentifier","src":"3782:3:75"},"nativeSrc":"3782:20:75","nodeType":"YulFunctionCall","src":"3782:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3772:6:75","nodeType":"YulIdentifier","src":"3772:6:75"},"nativeSrc":"3772:31:75","nodeType":"YulFunctionCall","src":"3772:31:75"},"nativeSrc":"3772:31:75","nodeType":"YulExpressionStatement","src":"3772:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3819:1:75","nodeType":"YulLiteral","src":"3819:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3822:4:75","nodeType":"YulLiteral","src":"3822:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"3812:6:75","nodeType":"YulIdentifier","src":"3812:6:75"},"nativeSrc":"3812:15:75","nodeType":"YulFunctionCall","src":"3812:15:75"},"nativeSrc":"3812:15:75","nodeType":"YulExpressionStatement","src":"3812:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3843:1:75","nodeType":"YulLiteral","src":"3843:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3846:4:75","nodeType":"YulLiteral","src":"3846:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3836:6:75","nodeType":"YulIdentifier","src":"3836:6:75"},"nativeSrc":"3836:15:75","nodeType":"YulFunctionCall","src":"3836:15:75"},"nativeSrc":"3836:15:75","nodeType":"YulExpressionStatement","src":"3836:15:75"}]},"name":"panic_error_0x11","nativeSrc":"3730:127:75","nodeType":"YulFunctionDefinition","src":"3730:127:75"},{"body":{"nativeSrc":"3914:116:75","nodeType":"YulBlock","src":"3914:116:75","statements":[{"nativeSrc":"3924:20:75","nodeType":"YulAssignment","src":"3924:20:75","value":{"arguments":[{"name":"x","nativeSrc":"3939:1:75","nodeType":"YulIdentifier","src":"3939:1:75"},{"name":"y","nativeSrc":"3942:1:75","nodeType":"YulIdentifier","src":"3942:1:75"}],"functionName":{"name":"mul","nativeSrc":"3935:3:75","nodeType":"YulIdentifier","src":"3935:3:75"},"nativeSrc":"3935:9:75","nodeType":"YulFunctionCall","src":"3935:9:75"},"variableNames":[{"name":"product","nativeSrc":"3924:7:75","nodeType":"YulIdentifier","src":"3924:7:75"}]},{"body":{"nativeSrc":"4002:22:75","nodeType":"YulBlock","src":"4002:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"4004:16:75","nodeType":"YulIdentifier","src":"4004:16:75"},"nativeSrc":"4004:18:75","nodeType":"YulFunctionCall","src":"4004:18:75"},"nativeSrc":"4004:18:75","nodeType":"YulExpressionStatement","src":"4004:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"3973:1:75","nodeType":"YulIdentifier","src":"3973:1:75"}],"functionName":{"name":"iszero","nativeSrc":"3966:6:75","nodeType":"YulIdentifier","src":"3966:6:75"},"nativeSrc":"3966:9:75","nodeType":"YulFunctionCall","src":"3966:9:75"},{"arguments":[{"name":"y","nativeSrc":"3980:1:75","nodeType":"YulIdentifier","src":"3980:1:75"},{"arguments":[{"name":"product","nativeSrc":"3987:7:75","nodeType":"YulIdentifier","src":"3987:7:75"},{"name":"x","nativeSrc":"3996:1:75","nodeType":"YulIdentifier","src":"3996:1:75"}],"functionName":{"name":"div","nativeSrc":"3983:3:75","nodeType":"YulIdentifier","src":"3983:3:75"},"nativeSrc":"3983:15:75","nodeType":"YulFunctionCall","src":"3983:15:75"}],"functionName":{"name":"eq","nativeSrc":"3977:2:75","nodeType":"YulIdentifier","src":"3977:2:75"},"nativeSrc":"3977:22:75","nodeType":"YulFunctionCall","src":"3977:22:75"}],"functionName":{"name":"or","nativeSrc":"3963:2:75","nodeType":"YulIdentifier","src":"3963:2:75"},"nativeSrc":"3963:37:75","nodeType":"YulFunctionCall","src":"3963:37:75"}],"functionName":{"name":"iszero","nativeSrc":"3956:6:75","nodeType":"YulIdentifier","src":"3956:6:75"},"nativeSrc":"3956:45:75","nodeType":"YulFunctionCall","src":"3956:45:75"},"nativeSrc":"3953:71:75","nodeType":"YulIf","src":"3953:71:75"}]},"name":"checked_mul_t_uint256","nativeSrc":"3862:168:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"3893:1:75","nodeType":"YulTypedName","src":"3893:1:75","type":""},{"name":"y","nativeSrc":"3896:1:75","nodeType":"YulTypedName","src":"3896:1:75","type":""}],"returnVariables":[{"name":"product","nativeSrc":"3902:7:75","nodeType":"YulTypedName","src":"3902:7:75","type":""}],"src":"3862:168:75"},{"body":{"nativeSrc":"4067:95:75","nodeType":"YulBlock","src":"4067:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4084:1:75","nodeType":"YulLiteral","src":"4084:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4091:3:75","nodeType":"YulLiteral","src":"4091:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4096:10:75","nodeType":"YulLiteral","src":"4096:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4087:3:75","nodeType":"YulIdentifier","src":"4087:3:75"},"nativeSrc":"4087:20:75","nodeType":"YulFunctionCall","src":"4087:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4077:6:75","nodeType":"YulIdentifier","src":"4077:6:75"},"nativeSrc":"4077:31:75","nodeType":"YulFunctionCall","src":"4077:31:75"},"nativeSrc":"4077:31:75","nodeType":"YulExpressionStatement","src":"4077:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4124:1:75","nodeType":"YulLiteral","src":"4124:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4127:4:75","nodeType":"YulLiteral","src":"4127:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"4117:6:75","nodeType":"YulIdentifier","src":"4117:6:75"},"nativeSrc":"4117:15:75","nodeType":"YulFunctionCall","src":"4117:15:75"},"nativeSrc":"4117:15:75","nodeType":"YulExpressionStatement","src":"4117:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4148:1:75","nodeType":"YulLiteral","src":"4148:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4151:4:75","nodeType":"YulLiteral","src":"4151:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4141:6:75","nodeType":"YulIdentifier","src":"4141:6:75"},"nativeSrc":"4141:15:75","nodeType":"YulFunctionCall","src":"4141:15:75"},"nativeSrc":"4141:15:75","nodeType":"YulExpressionStatement","src":"4141:15:75"}]},"name":"panic_error_0x12","nativeSrc":"4035:127:75","nodeType":"YulFunctionDefinition","src":"4035:127:75"},{"body":{"nativeSrc":"4213:171:75","nodeType":"YulBlock","src":"4213:171:75","statements":[{"body":{"nativeSrc":"4244:111:75","nodeType":"YulBlock","src":"4244:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4265:1:75","nodeType":"YulLiteral","src":"4265:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4272:3:75","nodeType":"YulLiteral","src":"4272:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4277:10:75","nodeType":"YulLiteral","src":"4277:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4268:3:75","nodeType":"YulIdentifier","src":"4268:3:75"},"nativeSrc":"4268:20:75","nodeType":"YulFunctionCall","src":"4268:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4258:6:75","nodeType":"YulIdentifier","src":"4258:6:75"},"nativeSrc":"4258:31:75","nodeType":"YulFunctionCall","src":"4258:31:75"},"nativeSrc":"4258:31:75","nodeType":"YulExpressionStatement","src":"4258:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4309:1:75","nodeType":"YulLiteral","src":"4309:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4312:4:75","nodeType":"YulLiteral","src":"4312:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"4302:6:75","nodeType":"YulIdentifier","src":"4302:6:75"},"nativeSrc":"4302:15:75","nodeType":"YulFunctionCall","src":"4302:15:75"},"nativeSrc":"4302:15:75","nodeType":"YulExpressionStatement","src":"4302:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4337:1:75","nodeType":"YulLiteral","src":"4337:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4340:4:75","nodeType":"YulLiteral","src":"4340:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4330:6:75","nodeType":"YulIdentifier","src":"4330:6:75"},"nativeSrc":"4330:15:75","nodeType":"YulFunctionCall","src":"4330:15:75"},"nativeSrc":"4330:15:75","nodeType":"YulExpressionStatement","src":"4330:15:75"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"4233:1:75","nodeType":"YulIdentifier","src":"4233:1:75"}],"functionName":{"name":"iszero","nativeSrc":"4226:6:75","nodeType":"YulIdentifier","src":"4226:6:75"},"nativeSrc":"4226:9:75","nodeType":"YulFunctionCall","src":"4226:9:75"},"nativeSrc":"4223:132:75","nodeType":"YulIf","src":"4223:132:75"},{"nativeSrc":"4364:14:75","nodeType":"YulAssignment","src":"4364:14:75","value":{"arguments":[{"name":"x","nativeSrc":"4373:1:75","nodeType":"YulIdentifier","src":"4373:1:75"},{"name":"y","nativeSrc":"4376:1:75","nodeType":"YulIdentifier","src":"4376:1:75"}],"functionName":{"name":"div","nativeSrc":"4369:3:75","nodeType":"YulIdentifier","src":"4369:3:75"},"nativeSrc":"4369:9:75","nodeType":"YulFunctionCall","src":"4369:9:75"},"variableNames":[{"name":"r","nativeSrc":"4364:1:75","nodeType":"YulIdentifier","src":"4364:1:75"}]}]},"name":"checked_div_t_uint256","nativeSrc":"4167:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4198:1:75","nodeType":"YulTypedName","src":"4198:1:75","type":""},{"name":"y","nativeSrc":"4201:1:75","nodeType":"YulTypedName","src":"4201:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"4207:1:75","nodeType":"YulTypedName","src":"4207:1:75","type":""}],"src":"4167:217:75"},{"body":{"nativeSrc":"4518:119:75","nodeType":"YulBlock","src":"4518:119:75","statements":[{"nativeSrc":"4528:26:75","nodeType":"YulAssignment","src":"4528:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4540:9:75","nodeType":"YulIdentifier","src":"4540:9:75"},{"kind":"number","nativeSrc":"4551:2:75","nodeType":"YulLiteral","src":"4551:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4536:3:75","nodeType":"YulIdentifier","src":"4536:3:75"},"nativeSrc":"4536:18:75","nodeType":"YulFunctionCall","src":"4536:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4528:4:75","nodeType":"YulIdentifier","src":"4528:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4570:9:75","nodeType":"YulIdentifier","src":"4570:9:75"},{"name":"value0","nativeSrc":"4581:6:75","nodeType":"YulIdentifier","src":"4581:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4563:6:75","nodeType":"YulIdentifier","src":"4563:6:75"},"nativeSrc":"4563:25:75","nodeType":"YulFunctionCall","src":"4563:25:75"},"nativeSrc":"4563:25:75","nodeType":"YulExpressionStatement","src":"4563:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4608:9:75","nodeType":"YulIdentifier","src":"4608:9:75"},{"kind":"number","nativeSrc":"4619:2:75","nodeType":"YulLiteral","src":"4619:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4604:3:75","nodeType":"YulIdentifier","src":"4604:3:75"},"nativeSrc":"4604:18:75","nodeType":"YulFunctionCall","src":"4604:18:75"},{"name":"value1","nativeSrc":"4624:6:75","nodeType":"YulIdentifier","src":"4624:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4597:6:75","nodeType":"YulIdentifier","src":"4597:6:75"},"nativeSrc":"4597:34:75","nodeType":"YulFunctionCall","src":"4597:34:75"},"nativeSrc":"4597:34:75","nodeType":"YulExpressionStatement","src":"4597:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"4389:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4479:9:75","nodeType":"YulTypedName","src":"4479:9:75","type":""},{"name":"value1","nativeSrc":"4490:6:75","nodeType":"YulTypedName","src":"4490:6:75","type":""},{"name":"value0","nativeSrc":"4498:6:75","nodeType":"YulTypedName","src":"4498:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4509:4:75","nodeType":"YulTypedName","src":"4509:4:75","type":""}],"src":"4389:248:75"},{"body":{"nativeSrc":"4799:214:75","nodeType":"YulBlock","src":"4799:214:75","statements":[{"nativeSrc":"4809:26:75","nodeType":"YulAssignment","src":"4809:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4821:9:75","nodeType":"YulIdentifier","src":"4821:9:75"},{"kind":"number","nativeSrc":"4832:2:75","nodeType":"YulLiteral","src":"4832:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4817:3:75","nodeType":"YulIdentifier","src":"4817:3:75"},"nativeSrc":"4817:18:75","nodeType":"YulFunctionCall","src":"4817:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4809:4:75","nodeType":"YulIdentifier","src":"4809:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4851:9:75","nodeType":"YulIdentifier","src":"4851:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4866:6:75","nodeType":"YulIdentifier","src":"4866:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4882:3:75","nodeType":"YulLiteral","src":"4882:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4887:1:75","nodeType":"YulLiteral","src":"4887:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4878:3:75","nodeType":"YulIdentifier","src":"4878:3:75"},"nativeSrc":"4878:11:75","nodeType":"YulFunctionCall","src":"4878:11:75"},{"kind":"number","nativeSrc":"4891:1:75","nodeType":"YulLiteral","src":"4891:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4874:3:75","nodeType":"YulIdentifier","src":"4874:3:75"},"nativeSrc":"4874:19:75","nodeType":"YulFunctionCall","src":"4874:19:75"}],"functionName":{"name":"and","nativeSrc":"4862:3:75","nodeType":"YulIdentifier","src":"4862:3:75"},"nativeSrc":"4862:32:75","nodeType":"YulFunctionCall","src":"4862:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4844:6:75","nodeType":"YulIdentifier","src":"4844:6:75"},"nativeSrc":"4844:51:75","nodeType":"YulFunctionCall","src":"4844:51:75"},"nativeSrc":"4844:51:75","nodeType":"YulExpressionStatement","src":"4844:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4915:9:75","nodeType":"YulIdentifier","src":"4915:9:75"},{"kind":"number","nativeSrc":"4926:2:75","nodeType":"YulLiteral","src":"4926:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4911:3:75","nodeType":"YulIdentifier","src":"4911:3:75"},"nativeSrc":"4911:18:75","nodeType":"YulFunctionCall","src":"4911:18:75"},{"arguments":[{"name":"value1","nativeSrc":"4935:6:75","nodeType":"YulIdentifier","src":"4935:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4951:3:75","nodeType":"YulLiteral","src":"4951:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4956:1:75","nodeType":"YulLiteral","src":"4956:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4947:3:75","nodeType":"YulIdentifier","src":"4947:3:75"},"nativeSrc":"4947:11:75","nodeType":"YulFunctionCall","src":"4947:11:75"},{"kind":"number","nativeSrc":"4960:1:75","nodeType":"YulLiteral","src":"4960:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4943:3:75","nodeType":"YulIdentifier","src":"4943:3:75"},"nativeSrc":"4943:19:75","nodeType":"YulFunctionCall","src":"4943:19:75"}],"functionName":{"name":"and","nativeSrc":"4931:3:75","nodeType":"YulIdentifier","src":"4931:3:75"},"nativeSrc":"4931:32:75","nodeType":"YulFunctionCall","src":"4931:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4904:6:75","nodeType":"YulIdentifier","src":"4904:6:75"},"nativeSrc":"4904:60:75","nodeType":"YulFunctionCall","src":"4904:60:75"},"nativeSrc":"4904:60:75","nodeType":"YulExpressionStatement","src":"4904:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4984:9:75","nodeType":"YulIdentifier","src":"4984:9:75"},{"kind":"number","nativeSrc":"4995:2:75","nodeType":"YulLiteral","src":"4995:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4980:3:75","nodeType":"YulIdentifier","src":"4980:3:75"},"nativeSrc":"4980:18:75","nodeType":"YulFunctionCall","src":"4980:18:75"},{"name":"value2","nativeSrc":"5000:6:75","nodeType":"YulIdentifier","src":"5000:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4973:6:75","nodeType":"YulIdentifier","src":"4973:6:75"},"nativeSrc":"4973:34:75","nodeType":"YulFunctionCall","src":"4973:34:75"},"nativeSrc":"4973:34:75","nodeType":"YulExpressionStatement","src":"4973:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"4642:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4752:9:75","nodeType":"YulTypedName","src":"4752:9:75","type":""},{"name":"value2","nativeSrc":"4763:6:75","nodeType":"YulTypedName","src":"4763:6:75","type":""},{"name":"value1","nativeSrc":"4771:6:75","nodeType":"YulTypedName","src":"4771:6:75","type":""},{"name":"value0","nativeSrc":"4779:6:75","nodeType":"YulTypedName","src":"4779:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4790:4:75","nodeType":"YulTypedName","src":"4790:4:75","type":""}],"src":"4642:371:75"},{"body":{"nativeSrc":"5119:102:75","nodeType":"YulBlock","src":"5119:102:75","statements":[{"nativeSrc":"5129:26:75","nodeType":"YulAssignment","src":"5129:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5141:9:75","nodeType":"YulIdentifier","src":"5141:9:75"},{"kind":"number","nativeSrc":"5152:2:75","nodeType":"YulLiteral","src":"5152:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5137:3:75","nodeType":"YulIdentifier","src":"5137:3:75"},"nativeSrc":"5137:18:75","nodeType":"YulFunctionCall","src":"5137:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5129:4:75","nodeType":"YulIdentifier","src":"5129:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5171:9:75","nodeType":"YulIdentifier","src":"5171:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5186:6:75","nodeType":"YulIdentifier","src":"5186:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5202:3:75","nodeType":"YulLiteral","src":"5202:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5207:1:75","nodeType":"YulLiteral","src":"5207:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5198:3:75","nodeType":"YulIdentifier","src":"5198:3:75"},"nativeSrc":"5198:11:75","nodeType":"YulFunctionCall","src":"5198:11:75"},{"kind":"number","nativeSrc":"5211:1:75","nodeType":"YulLiteral","src":"5211:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5194:3:75","nodeType":"YulIdentifier","src":"5194:3:75"},"nativeSrc":"5194:19:75","nodeType":"YulFunctionCall","src":"5194:19:75"}],"functionName":{"name":"and","nativeSrc":"5182:3:75","nodeType":"YulIdentifier","src":"5182:3:75"},"nativeSrc":"5182:32:75","nodeType":"YulFunctionCall","src":"5182:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5164:6:75","nodeType":"YulIdentifier","src":"5164:6:75"},"nativeSrc":"5164:51:75","nodeType":"YulFunctionCall","src":"5164:51:75"},"nativeSrc":"5164:51:75","nodeType":"YulExpressionStatement","src":"5164:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"5018:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5088:9:75","nodeType":"YulTypedName","src":"5088:9:75","type":""},{"name":"value0","nativeSrc":"5099:6:75","nodeType":"YulTypedName","src":"5099:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5110:4:75","nodeType":"YulTypedName","src":"5110:4:75","type":""}],"src":"5018:203:75"},{"body":{"nativeSrc":"5307:103:75","nodeType":"YulBlock","src":"5307:103:75","statements":[{"body":{"nativeSrc":"5353:16:75","nodeType":"YulBlock","src":"5353:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5362:1:75","nodeType":"YulLiteral","src":"5362:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5365:1:75","nodeType":"YulLiteral","src":"5365:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5355:6:75","nodeType":"YulIdentifier","src":"5355:6:75"},"nativeSrc":"5355:12:75","nodeType":"YulFunctionCall","src":"5355:12:75"},"nativeSrc":"5355:12:75","nodeType":"YulExpressionStatement","src":"5355:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5328:7:75","nodeType":"YulIdentifier","src":"5328:7:75"},{"name":"headStart","nativeSrc":"5337:9:75","nodeType":"YulIdentifier","src":"5337:9:75"}],"functionName":{"name":"sub","nativeSrc":"5324:3:75","nodeType":"YulIdentifier","src":"5324:3:75"},"nativeSrc":"5324:23:75","nodeType":"YulFunctionCall","src":"5324:23:75"},{"kind":"number","nativeSrc":"5349:2:75","nodeType":"YulLiteral","src":"5349:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5320:3:75","nodeType":"YulIdentifier","src":"5320:3:75"},"nativeSrc":"5320:32:75","nodeType":"YulFunctionCall","src":"5320:32:75"},"nativeSrc":"5317:52:75","nodeType":"YulIf","src":"5317:52:75"},{"nativeSrc":"5378:26:75","nodeType":"YulAssignment","src":"5378:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5394:9:75","nodeType":"YulIdentifier","src":"5394:9:75"}],"functionName":{"name":"mload","nativeSrc":"5388:5:75","nodeType":"YulIdentifier","src":"5388:5:75"},"nativeSrc":"5388:16:75","nodeType":"YulFunctionCall","src":"5388:16:75"},"variableNames":[{"name":"value0","nativeSrc":"5378:6:75","nodeType":"YulIdentifier","src":"5378:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5226:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5273:9:75","nodeType":"YulTypedName","src":"5273:9:75","type":""},{"name":"dataEnd","nativeSrc":"5284:7:75","nodeType":"YulTypedName","src":"5284:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5296:6:75","nodeType":"YulTypedName","src":"5296:6:75","type":""}],"src":"5226:184:75"},{"body":{"nativeSrc":"5494:194:75","nodeType":"YulBlock","src":"5494:194:75","statements":[{"body":{"nativeSrc":"5540:16:75","nodeType":"YulBlock","src":"5540:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5549:1:75","nodeType":"YulLiteral","src":"5549:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5552:1:75","nodeType":"YulLiteral","src":"5552:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5542:6:75","nodeType":"YulIdentifier","src":"5542:6:75"},"nativeSrc":"5542:12:75","nodeType":"YulFunctionCall","src":"5542:12:75"},"nativeSrc":"5542:12:75","nodeType":"YulExpressionStatement","src":"5542:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5515:7:75","nodeType":"YulIdentifier","src":"5515:7:75"},{"name":"headStart","nativeSrc":"5524:9:75","nodeType":"YulIdentifier","src":"5524:9:75"}],"functionName":{"name":"sub","nativeSrc":"5511:3:75","nodeType":"YulIdentifier","src":"5511:3:75"},"nativeSrc":"5511:23:75","nodeType":"YulFunctionCall","src":"5511:23:75"},{"kind":"number","nativeSrc":"5536:2:75","nodeType":"YulLiteral","src":"5536:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5507:3:75","nodeType":"YulIdentifier","src":"5507:3:75"},"nativeSrc":"5507:32:75","nodeType":"YulFunctionCall","src":"5507:32:75"},"nativeSrc":"5504:52:75","nodeType":"YulIf","src":"5504:52:75"},{"nativeSrc":"5565:29:75","nodeType":"YulVariableDeclaration","src":"5565:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5584:9:75","nodeType":"YulIdentifier","src":"5584:9:75"}],"functionName":{"name":"mload","nativeSrc":"5578:5:75","nodeType":"YulIdentifier","src":"5578:5:75"},"nativeSrc":"5578:16:75","nodeType":"YulFunctionCall","src":"5578:16:75"},"variables":[{"name":"value","nativeSrc":"5569:5:75","nodeType":"YulTypedName","src":"5569:5:75","type":""}]},{"body":{"nativeSrc":"5642:16:75","nodeType":"YulBlock","src":"5642:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5651:1:75","nodeType":"YulLiteral","src":"5651:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5654:1:75","nodeType":"YulLiteral","src":"5654:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5644:6:75","nodeType":"YulIdentifier","src":"5644:6:75"},"nativeSrc":"5644:12:75","nodeType":"YulFunctionCall","src":"5644:12:75"},"nativeSrc":"5644:12:75","nodeType":"YulExpressionStatement","src":"5644:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5616:5:75","nodeType":"YulIdentifier","src":"5616:5:75"},{"arguments":[{"name":"value","nativeSrc":"5627:5:75","nodeType":"YulIdentifier","src":"5627:5:75"},{"kind":"number","nativeSrc":"5634:4:75","nodeType":"YulLiteral","src":"5634:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5623:3:75","nodeType":"YulIdentifier","src":"5623:3:75"},"nativeSrc":"5623:16:75","nodeType":"YulFunctionCall","src":"5623:16:75"}],"functionName":{"name":"eq","nativeSrc":"5613:2:75","nodeType":"YulIdentifier","src":"5613:2:75"},"nativeSrc":"5613:27:75","nodeType":"YulFunctionCall","src":"5613:27:75"}],"functionName":{"name":"iszero","nativeSrc":"5606:6:75","nodeType":"YulIdentifier","src":"5606:6:75"},"nativeSrc":"5606:35:75","nodeType":"YulFunctionCall","src":"5606:35:75"},"nativeSrc":"5603:55:75","nodeType":"YulIf","src":"5603:55:75"},{"nativeSrc":"5667:15:75","nodeType":"YulAssignment","src":"5667:15:75","value":{"name":"value","nativeSrc":"5677:5:75","nodeType":"YulIdentifier","src":"5677:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5667:6:75","nodeType":"YulIdentifier","src":"5667:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"5415:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5460:9:75","nodeType":"YulTypedName","src":"5460:9:75","type":""},{"name":"dataEnd","nativeSrc":"5471:7:75","nodeType":"YulTypedName","src":"5471:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5483:6:75","nodeType":"YulTypedName","src":"5483:6:75","type":""}],"src":"5415:273:75"},{"body":{"nativeSrc":"5740:104:75","nodeType":"YulBlock","src":"5740:104:75","statements":[{"nativeSrc":"5750:39:75","nodeType":"YulAssignment","src":"5750:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"5766:1:75","nodeType":"YulIdentifier","src":"5766:1:75"},{"kind":"number","nativeSrc":"5769:4:75","nodeType":"YulLiteral","src":"5769:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5762:3:75","nodeType":"YulIdentifier","src":"5762:3:75"},"nativeSrc":"5762:12:75","nodeType":"YulFunctionCall","src":"5762:12:75"},{"arguments":[{"name":"y","nativeSrc":"5780:1:75","nodeType":"YulIdentifier","src":"5780:1:75"},{"kind":"number","nativeSrc":"5783:4:75","nodeType":"YulLiteral","src":"5783:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5776:3:75","nodeType":"YulIdentifier","src":"5776:3:75"},"nativeSrc":"5776:12:75","nodeType":"YulFunctionCall","src":"5776:12:75"}],"functionName":{"name":"sub","nativeSrc":"5758:3:75","nodeType":"YulIdentifier","src":"5758:3:75"},"nativeSrc":"5758:31:75","nodeType":"YulFunctionCall","src":"5758:31:75"},"variableNames":[{"name":"diff","nativeSrc":"5750:4:75","nodeType":"YulIdentifier","src":"5750:4:75"}]},{"body":{"nativeSrc":"5816:22:75","nodeType":"YulBlock","src":"5816:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"5818:16:75","nodeType":"YulIdentifier","src":"5818:16:75"},"nativeSrc":"5818:18:75","nodeType":"YulFunctionCall","src":"5818:18:75"},"nativeSrc":"5818:18:75","nodeType":"YulExpressionStatement","src":"5818:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"5804:4:75","nodeType":"YulIdentifier","src":"5804:4:75"},{"kind":"number","nativeSrc":"5810:4:75","nodeType":"YulLiteral","src":"5810:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"5801:2:75","nodeType":"YulIdentifier","src":"5801:2:75"},"nativeSrc":"5801:14:75","nodeType":"YulFunctionCall","src":"5801:14:75"},"nativeSrc":"5798:40:75","nodeType":"YulIf","src":"5798:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"5693:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"5722:1:75","nodeType":"YulTypedName","src":"5722:1:75","type":""},{"name":"y","nativeSrc":"5725:1:75","nodeType":"YulTypedName","src":"5725:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"5731:4:75","nodeType":"YulTypedName","src":"5731:4:75","type":""}],"src":"5693:151:75"},{"body":{"nativeSrc":"5918:306:75","nodeType":"YulBlock","src":"5918:306:75","statements":[{"nativeSrc":"5928:10:75","nodeType":"YulAssignment","src":"5928:10:75","value":{"kind":"number","nativeSrc":"5937:1:75","nodeType":"YulLiteral","src":"5937:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"5928:5:75","nodeType":"YulIdentifier","src":"5928:5:75"}]},{"nativeSrc":"5947:13:75","nodeType":"YulAssignment","src":"5947:13:75","value":{"name":"_base","nativeSrc":"5955:5:75","nodeType":"YulIdentifier","src":"5955:5:75"},"variableNames":[{"name":"base","nativeSrc":"5947:4:75","nodeType":"YulIdentifier","src":"5947:4:75"}]},{"body":{"nativeSrc":"6005:213:75","nodeType":"YulBlock","src":"6005:213:75","statements":[{"body":{"nativeSrc":"6047:22:75","nodeType":"YulBlock","src":"6047:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6049:16:75","nodeType":"YulIdentifier","src":"6049:16:75"},"nativeSrc":"6049:18:75","nodeType":"YulFunctionCall","src":"6049:18:75"},"nativeSrc":"6049:18:75","nodeType":"YulExpressionStatement","src":"6049:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6025:4:75","nodeType":"YulIdentifier","src":"6025:4:75"},{"arguments":[{"name":"max","nativeSrc":"6035:3:75","nodeType":"YulIdentifier","src":"6035:3:75"},{"name":"base","nativeSrc":"6040:4:75","nodeType":"YulIdentifier","src":"6040:4:75"}],"functionName":{"name":"div","nativeSrc":"6031:3:75","nodeType":"YulIdentifier","src":"6031:3:75"},"nativeSrc":"6031:14:75","nodeType":"YulFunctionCall","src":"6031:14:75"}],"functionName":{"name":"gt","nativeSrc":"6022:2:75","nodeType":"YulIdentifier","src":"6022:2:75"},"nativeSrc":"6022:24:75","nodeType":"YulFunctionCall","src":"6022:24:75"},"nativeSrc":"6019:50:75","nodeType":"YulIf","src":"6019:50:75"},{"body":{"nativeSrc":"6102:29:75","nodeType":"YulBlock","src":"6102:29:75","statements":[{"nativeSrc":"6104:25:75","nodeType":"YulAssignment","src":"6104:25:75","value":{"arguments":[{"name":"power","nativeSrc":"6117:5:75","nodeType":"YulIdentifier","src":"6117:5:75"},{"name":"base","nativeSrc":"6124:4:75","nodeType":"YulIdentifier","src":"6124:4:75"}],"functionName":{"name":"mul","nativeSrc":"6113:3:75","nodeType":"YulIdentifier","src":"6113:3:75"},"nativeSrc":"6113:16:75","nodeType":"YulFunctionCall","src":"6113:16:75"},"variableNames":[{"name":"power","nativeSrc":"6104:5:75","nodeType":"YulIdentifier","src":"6104:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6089:8:75","nodeType":"YulIdentifier","src":"6089:8:75"},{"kind":"number","nativeSrc":"6099:1:75","nodeType":"YulLiteral","src":"6099:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"6085:3:75","nodeType":"YulIdentifier","src":"6085:3:75"},"nativeSrc":"6085:16:75","nodeType":"YulFunctionCall","src":"6085:16:75"},"nativeSrc":"6082:49:75","nodeType":"YulIf","src":"6082:49:75"},{"nativeSrc":"6144:23:75","nodeType":"YulAssignment","src":"6144:23:75","value":{"arguments":[{"name":"base","nativeSrc":"6156:4:75","nodeType":"YulIdentifier","src":"6156:4:75"},{"name":"base","nativeSrc":"6162:4:75","nodeType":"YulIdentifier","src":"6162:4:75"}],"functionName":{"name":"mul","nativeSrc":"6152:3:75","nodeType":"YulIdentifier","src":"6152:3:75"},"nativeSrc":"6152:15:75","nodeType":"YulFunctionCall","src":"6152:15:75"},"variableNames":[{"name":"base","nativeSrc":"6144:4:75","nodeType":"YulIdentifier","src":"6144:4:75"}]},{"nativeSrc":"6180:28:75","nodeType":"YulAssignment","src":"6180:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"6196:1:75","nodeType":"YulLiteral","src":"6196:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"6199:8:75","nodeType":"YulIdentifier","src":"6199:8:75"}],"functionName":{"name":"shr","nativeSrc":"6192:3:75","nodeType":"YulIdentifier","src":"6192:3:75"},"nativeSrc":"6192:16:75","nodeType":"YulFunctionCall","src":"6192:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"6180:8:75","nodeType":"YulIdentifier","src":"6180:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"5980:8:75","nodeType":"YulIdentifier","src":"5980:8:75"},{"kind":"number","nativeSrc":"5990:1:75","nodeType":"YulLiteral","src":"5990:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"5977:2:75","nodeType":"YulIdentifier","src":"5977:2:75"},"nativeSrc":"5977:15:75","nodeType":"YulFunctionCall","src":"5977:15:75"},"nativeSrc":"5969:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"5993:3:75","nodeType":"YulBlock","src":"5993:3:75","statements":[]},"pre":{"nativeSrc":"5973:3:75","nodeType":"YulBlock","src":"5973:3:75","statements":[]},"src":"5969:249:75"}]},"name":"checked_exp_helper","nativeSrc":"5849:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"5877:5:75","nodeType":"YulTypedName","src":"5877:5:75","type":""},{"name":"exponent","nativeSrc":"5884:8:75","nodeType":"YulTypedName","src":"5884:8:75","type":""},{"name":"max","nativeSrc":"5894:3:75","nodeType":"YulTypedName","src":"5894:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"5902:5:75","nodeType":"YulTypedName","src":"5902:5:75","type":""},{"name":"base","nativeSrc":"5909:4:75","nodeType":"YulTypedName","src":"5909:4:75","type":""}],"src":"5849:375:75"},{"body":{"nativeSrc":"6288:843:75","nodeType":"YulBlock","src":"6288:843:75","statements":[{"body":{"nativeSrc":"6326:52:75","nodeType":"YulBlock","src":"6326:52:75","statements":[{"nativeSrc":"6340:10:75","nodeType":"YulAssignment","src":"6340:10:75","value":{"kind":"number","nativeSrc":"6349:1:75","nodeType":"YulLiteral","src":"6349:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6340:5:75","nodeType":"YulIdentifier","src":"6340:5:75"}]},{"nativeSrc":"6363:5:75","nodeType":"YulLeave","src":"6363:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6308:8:75","nodeType":"YulIdentifier","src":"6308:8:75"}],"functionName":{"name":"iszero","nativeSrc":"6301:6:75","nodeType":"YulIdentifier","src":"6301:6:75"},"nativeSrc":"6301:16:75","nodeType":"YulFunctionCall","src":"6301:16:75"},"nativeSrc":"6298:80:75","nodeType":"YulIf","src":"6298:80:75"},{"body":{"nativeSrc":"6411:52:75","nodeType":"YulBlock","src":"6411:52:75","statements":[{"nativeSrc":"6425:10:75","nodeType":"YulAssignment","src":"6425:10:75","value":{"kind":"number","nativeSrc":"6434:1:75","nodeType":"YulLiteral","src":"6434:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"6425:5:75","nodeType":"YulIdentifier","src":"6425:5:75"}]},{"nativeSrc":"6448:5:75","nodeType":"YulLeave","src":"6448:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"6397:4:75","nodeType":"YulIdentifier","src":"6397:4:75"}],"functionName":{"name":"iszero","nativeSrc":"6390:6:75","nodeType":"YulIdentifier","src":"6390:6:75"},"nativeSrc":"6390:12:75","nodeType":"YulFunctionCall","src":"6390:12:75"},"nativeSrc":"6387:76:75","nodeType":"YulIf","src":"6387:76:75"},{"cases":[{"body":{"nativeSrc":"6499:52:75","nodeType":"YulBlock","src":"6499:52:75","statements":[{"nativeSrc":"6513:10:75","nodeType":"YulAssignment","src":"6513:10:75","value":{"kind":"number","nativeSrc":"6522:1:75","nodeType":"YulLiteral","src":"6522:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"6513:5:75","nodeType":"YulIdentifier","src":"6513:5:75"}]},{"nativeSrc":"6536:5:75","nodeType":"YulLeave","src":"6536:5:75"}]},"nativeSrc":"6492:59:75","nodeType":"YulCase","src":"6492:59:75","value":{"kind":"number","nativeSrc":"6497:1:75","nodeType":"YulLiteral","src":"6497:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"6567:167:75","nodeType":"YulBlock","src":"6567:167:75","statements":[{"body":{"nativeSrc":"6602:22:75","nodeType":"YulBlock","src":"6602:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6604:16:75","nodeType":"YulIdentifier","src":"6604:16:75"},"nativeSrc":"6604:18:75","nodeType":"YulFunctionCall","src":"6604:18:75"},"nativeSrc":"6604:18:75","nodeType":"YulExpressionStatement","src":"6604:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"6587:8:75","nodeType":"YulIdentifier","src":"6587:8:75"},{"kind":"number","nativeSrc":"6597:3:75","nodeType":"YulLiteral","src":"6597:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"6584:2:75","nodeType":"YulIdentifier","src":"6584:2:75"},"nativeSrc":"6584:17:75","nodeType":"YulFunctionCall","src":"6584:17:75"},"nativeSrc":"6581:43:75","nodeType":"YulIf","src":"6581:43:75"},{"nativeSrc":"6637:25:75","nodeType":"YulAssignment","src":"6637:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"6650:8:75","nodeType":"YulIdentifier","src":"6650:8:75"},{"kind":"number","nativeSrc":"6660:1:75","nodeType":"YulLiteral","src":"6660:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6646:3:75","nodeType":"YulIdentifier","src":"6646:3:75"},"nativeSrc":"6646:16:75","nodeType":"YulFunctionCall","src":"6646:16:75"},"variableNames":[{"name":"power","nativeSrc":"6637:5:75","nodeType":"YulIdentifier","src":"6637:5:75"}]},{"nativeSrc":"6675:11:75","nodeType":"YulVariableDeclaration","src":"6675:11:75","value":{"kind":"number","nativeSrc":"6685:1:75","nodeType":"YulLiteral","src":"6685:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"6679:2:75","nodeType":"YulTypedName","src":"6679:2:75","type":""}]},{"nativeSrc":"6699:7:75","nodeType":"YulAssignment","src":"6699:7:75","value":{"kind":"number","nativeSrc":"6705:1:75","nodeType":"YulLiteral","src":"6705:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"6699:2:75","nodeType":"YulIdentifier","src":"6699:2:75"}]},{"nativeSrc":"6719:5:75","nodeType":"YulLeave","src":"6719:5:75"}]},"nativeSrc":"6560:174:75","nodeType":"YulCase","src":"6560:174:75","value":{"kind":"number","nativeSrc":"6565:1:75","nodeType":"YulLiteral","src":"6565:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"6479:4:75","nodeType":"YulIdentifier","src":"6479:4:75"},"nativeSrc":"6472:262:75","nodeType":"YulSwitch","src":"6472:262:75"},{"body":{"nativeSrc":"6832:114:75","nodeType":"YulBlock","src":"6832:114:75","statements":[{"nativeSrc":"6846:28:75","nodeType":"YulAssignment","src":"6846:28:75","value":{"arguments":[{"name":"base","nativeSrc":"6859:4:75","nodeType":"YulIdentifier","src":"6859:4:75"},{"name":"exponent","nativeSrc":"6865:8:75","nodeType":"YulIdentifier","src":"6865:8:75"}],"functionName":{"name":"exp","nativeSrc":"6855:3:75","nodeType":"YulIdentifier","src":"6855:3:75"},"nativeSrc":"6855:19:75","nodeType":"YulFunctionCall","src":"6855:19:75"},"variableNames":[{"name":"power","nativeSrc":"6846:5:75","nodeType":"YulIdentifier","src":"6846:5:75"}]},{"nativeSrc":"6887:11:75","nodeType":"YulVariableDeclaration","src":"6887:11:75","value":{"kind":"number","nativeSrc":"6897:1:75","nodeType":"YulLiteral","src":"6897:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"6891:2:75","nodeType":"YulTypedName","src":"6891:2:75","type":""}]},{"nativeSrc":"6911:7:75","nodeType":"YulAssignment","src":"6911:7:75","value":{"kind":"number","nativeSrc":"6917:1:75","nodeType":"YulLiteral","src":"6917:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"6911:2:75","nodeType":"YulIdentifier","src":"6911:2:75"}]},{"nativeSrc":"6931:5:75","nodeType":"YulLeave","src":"6931:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"6756:4:75","nodeType":"YulIdentifier","src":"6756:4:75"},{"kind":"number","nativeSrc":"6762:2:75","nodeType":"YulLiteral","src":"6762:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"6753:2:75","nodeType":"YulIdentifier","src":"6753:2:75"},"nativeSrc":"6753:12:75","nodeType":"YulFunctionCall","src":"6753:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"6770:8:75","nodeType":"YulIdentifier","src":"6770:8:75"},{"kind":"number","nativeSrc":"6780:2:75","nodeType":"YulLiteral","src":"6780:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"6767:2:75","nodeType":"YulIdentifier","src":"6767:2:75"},"nativeSrc":"6767:16:75","nodeType":"YulFunctionCall","src":"6767:16:75"}],"functionName":{"name":"and","nativeSrc":"6749:3:75","nodeType":"YulIdentifier","src":"6749:3:75"},"nativeSrc":"6749:35:75","nodeType":"YulFunctionCall","src":"6749:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"6793:4:75","nodeType":"YulIdentifier","src":"6793:4:75"},{"kind":"number","nativeSrc":"6799:3:75","nodeType":"YulLiteral","src":"6799:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"6790:2:75","nodeType":"YulIdentifier","src":"6790:2:75"},"nativeSrc":"6790:13:75","nodeType":"YulFunctionCall","src":"6790:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"6808:8:75","nodeType":"YulIdentifier","src":"6808:8:75"},{"kind":"number","nativeSrc":"6818:2:75","nodeType":"YulLiteral","src":"6818:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"6805:2:75","nodeType":"YulIdentifier","src":"6805:2:75"},"nativeSrc":"6805:16:75","nodeType":"YulFunctionCall","src":"6805:16:75"}],"functionName":{"name":"and","nativeSrc":"6786:3:75","nodeType":"YulIdentifier","src":"6786:3:75"},"nativeSrc":"6786:36:75","nodeType":"YulFunctionCall","src":"6786:36:75"}],"functionName":{"name":"or","nativeSrc":"6746:2:75","nodeType":"YulIdentifier","src":"6746:2:75"},"nativeSrc":"6746:77:75","nodeType":"YulFunctionCall","src":"6746:77:75"},"nativeSrc":"6743:203:75","nodeType":"YulIf","src":"6743:203:75"},{"nativeSrc":"6955:65:75","nodeType":"YulVariableDeclaration","src":"6955:65:75","value":{"arguments":[{"name":"base","nativeSrc":"6997:4:75","nodeType":"YulIdentifier","src":"6997:4:75"},{"name":"exponent","nativeSrc":"7003:8:75","nodeType":"YulIdentifier","src":"7003:8:75"},{"arguments":[{"kind":"number","nativeSrc":"7017:1:75","nodeType":"YulLiteral","src":"7017:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7013:3:75","nodeType":"YulIdentifier","src":"7013:3:75"},"nativeSrc":"7013:6:75","nodeType":"YulFunctionCall","src":"7013:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"6978:18:75","nodeType":"YulIdentifier","src":"6978:18:75"},"nativeSrc":"6978:42:75","nodeType":"YulFunctionCall","src":"6978:42:75"},"variables":[{"name":"power_1","nativeSrc":"6959:7:75","nodeType":"YulTypedName","src":"6959:7:75","type":""},{"name":"base_1","nativeSrc":"6968:6:75","nodeType":"YulTypedName","src":"6968:6:75","type":""}]},{"body":{"nativeSrc":"7065:22:75","nodeType":"YulBlock","src":"7065:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7067:16:75","nodeType":"YulIdentifier","src":"7067:16:75"},"nativeSrc":"7067:18:75","nodeType":"YulFunctionCall","src":"7067:18:75"},"nativeSrc":"7067:18:75","nodeType":"YulExpressionStatement","src":"7067:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"7035:7:75","nodeType":"YulIdentifier","src":"7035:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7052:1:75","nodeType":"YulLiteral","src":"7052:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7048:3:75","nodeType":"YulIdentifier","src":"7048:3:75"},"nativeSrc":"7048:6:75","nodeType":"YulFunctionCall","src":"7048:6:75"},{"name":"base_1","nativeSrc":"7056:6:75","nodeType":"YulIdentifier","src":"7056:6:75"}],"functionName":{"name":"div","nativeSrc":"7044:3:75","nodeType":"YulIdentifier","src":"7044:3:75"},"nativeSrc":"7044:19:75","nodeType":"YulFunctionCall","src":"7044:19:75"}],"functionName":{"name":"gt","nativeSrc":"7032:2:75","nodeType":"YulIdentifier","src":"7032:2:75"},"nativeSrc":"7032:32:75","nodeType":"YulFunctionCall","src":"7032:32:75"},"nativeSrc":"7029:58:75","nodeType":"YulIf","src":"7029:58:75"},{"nativeSrc":"7096:29:75","nodeType":"YulAssignment","src":"7096:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"7109:7:75","nodeType":"YulIdentifier","src":"7109:7:75"},{"name":"base_1","nativeSrc":"7118:6:75","nodeType":"YulIdentifier","src":"7118:6:75"}],"functionName":{"name":"mul","nativeSrc":"7105:3:75","nodeType":"YulIdentifier","src":"7105:3:75"},"nativeSrc":"7105:20:75","nodeType":"YulFunctionCall","src":"7105:20:75"},"variableNames":[{"name":"power","nativeSrc":"7096:5:75","nodeType":"YulIdentifier","src":"7096:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"6229:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"6259:4:75","nodeType":"YulTypedName","src":"6259:4:75","type":""},{"name":"exponent","nativeSrc":"6265:8:75","nodeType":"YulTypedName","src":"6265:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"6278:5:75","nodeType":"YulTypedName","src":"6278:5:75","type":""}],"src":"6229:902:75"},{"body":{"nativeSrc":"7204:72:75","nodeType":"YulBlock","src":"7204:72:75","statements":[{"nativeSrc":"7214:56:75","nodeType":"YulAssignment","src":"7214:56:75","value":{"arguments":[{"name":"base","nativeSrc":"7244:4:75","nodeType":"YulIdentifier","src":"7244:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"7254:8:75","nodeType":"YulIdentifier","src":"7254:8:75"},{"kind":"number","nativeSrc":"7264:4:75","nodeType":"YulLiteral","src":"7264:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"7250:3:75","nodeType":"YulIdentifier","src":"7250:3:75"},"nativeSrc":"7250:19:75","nodeType":"YulFunctionCall","src":"7250:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"7223:20:75","nodeType":"YulIdentifier","src":"7223:20:75"},"nativeSrc":"7223:47:75","nodeType":"YulFunctionCall","src":"7223:47:75"},"variableNames":[{"name":"power","nativeSrc":"7214:5:75","nodeType":"YulIdentifier","src":"7214:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"7136:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"7175:4:75","nodeType":"YulTypedName","src":"7175:4:75","type":""},{"name":"exponent","nativeSrc":"7181:8:75","nodeType":"YulTypedName","src":"7181:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7194:5:75","nodeType":"YulTypedName","src":"7194:5:75","type":""}],"src":"7136:140:75"},{"body":{"nativeSrc":"7410:145:75","nodeType":"YulBlock","src":"7410:145:75","statements":[{"nativeSrc":"7420:26:75","nodeType":"YulAssignment","src":"7420:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7432:9:75","nodeType":"YulIdentifier","src":"7432:9:75"},{"kind":"number","nativeSrc":"7443:2:75","nodeType":"YulLiteral","src":"7443:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7428:3:75","nodeType":"YulIdentifier","src":"7428:3:75"},"nativeSrc":"7428:18:75","nodeType":"YulFunctionCall","src":"7428:18:75"},"variableNames":[{"name":"tail","nativeSrc":"7420:4:75","nodeType":"YulIdentifier","src":"7420:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7462:9:75","nodeType":"YulIdentifier","src":"7462:9:75"},{"arguments":[{"name":"value0","nativeSrc":"7477:6:75","nodeType":"YulIdentifier","src":"7477:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7493:3:75","nodeType":"YulLiteral","src":"7493:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7498:1:75","nodeType":"YulLiteral","src":"7498:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7489:3:75","nodeType":"YulIdentifier","src":"7489:3:75"},"nativeSrc":"7489:11:75","nodeType":"YulFunctionCall","src":"7489:11:75"},{"kind":"number","nativeSrc":"7502:1:75","nodeType":"YulLiteral","src":"7502:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7485:3:75","nodeType":"YulIdentifier","src":"7485:3:75"},"nativeSrc":"7485:19:75","nodeType":"YulFunctionCall","src":"7485:19:75"}],"functionName":{"name":"and","nativeSrc":"7473:3:75","nodeType":"YulIdentifier","src":"7473:3:75"},"nativeSrc":"7473:32:75","nodeType":"YulFunctionCall","src":"7473:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7455:6:75","nodeType":"YulIdentifier","src":"7455:6:75"},"nativeSrc":"7455:51:75","nodeType":"YulFunctionCall","src":"7455:51:75"},"nativeSrc":"7455:51:75","nodeType":"YulExpressionStatement","src":"7455:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7526:9:75","nodeType":"YulIdentifier","src":"7526:9:75"},{"kind":"number","nativeSrc":"7537:2:75","nodeType":"YulLiteral","src":"7537:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7522:3:75","nodeType":"YulIdentifier","src":"7522:3:75"},"nativeSrc":"7522:18:75","nodeType":"YulFunctionCall","src":"7522:18:75"},{"name":"value1","nativeSrc":"7542:6:75","nodeType":"YulIdentifier","src":"7542:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7515:6:75","nodeType":"YulIdentifier","src":"7515:6:75"},"nativeSrc":"7515:34:75","nodeType":"YulFunctionCall","src":"7515:34:75"},"nativeSrc":"7515:34:75","nodeType":"YulExpressionStatement","src":"7515:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"7281:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7371:9:75","nodeType":"YulTypedName","src":"7371:9:75","type":""},{"name":"value1","nativeSrc":"7382:6:75","nodeType":"YulTypedName","src":"7382:6:75","type":""},{"name":"value0","nativeSrc":"7390:6:75","nodeType":"YulTypedName","src":"7390:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7401:4:75","nodeType":"YulTypedName","src":"7401:4:75","type":""}],"src":"7281:274:75"}]},"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_$13386_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_$13406_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_$13432_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_$13452_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    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}","id":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061006e575f3560e01c8063db3e21981161004c578063db3e2198146100cb578063f28c0498146100b8578063f3fef3a3146100de578063fa461e33146100fd575f5ffd5b8063414bf389146100725780634562e01514610097578063c04b8d59146100b8575b5f5ffd5b6100856100803660046108f8565b61011c565b60405190815260200160405180910390f35b3480156100a2575f5ffd5b506100b66100b136600461092e565b6102ef565b005b6100856100c6366004610978565b6103a9565b6100856100d93660046108f8565b6103c3565b3480156100e9575f5ffd5b506100b66100f83660046109b2565b61061b565b348015610108575f5ffd5b506100b66101173660046109da565b61067a565b5f8061012e6080840160608501610a56565b6001600160a01b0316036101545760405162e18e7f60e71b815260040160405180910390fd5b428260800135101561017c576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116101a05760405163d11b25af60e01b815260040160405180910390fd5b5f610234670de0b6b3a764000082806101bc6020880188610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f205f8660200160208101906101ef9190610a56565b6001600160a01b031681526020808201929092526040015f20549061021f9061021a90880188610a56565b610693565b61022d9060a0880135610a83565b9190610710565b905061024961021a6040850160208601610a56565b6102539082610aae565b91508160c08401358082101561028a5760405163296ba6e160e01b8152600481019290925260248201526044015b60405180910390fd5b506102b59050333060a08601356102a46020880188610a56565b6001600160a01b03169291906107c7565b6102e96102c86080850160608601610a56565b836102d96040870160208801610a56565b6001600160a01b03169190610834565b50919050565b6001600160a01b0383166103165760405163165a825360e21b815260040160405180910390fd5b6001600160a01b03821661033d5760405163165a825360e21b815260040160405180910390fd5b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905581519283528201929092529081018290527fb71c154260e8508e211e2ace194becba2c6d7e727c3ed292fe4787458969cd109060600160405180910390a1505050565b5f60405163d623472560e01b815260040160405180910390fd5b5f806103d56080840160608501610a56565b6001600160a01b0316036103fb5760405162e18e7f60e71b815260040160405180910390fd5b4282608001351015610423576040516001623859e760e21b0319815260040160405180910390fd5b5f8260a00135116104475760405163d11b25af60e01b815260040160405180910390fd5b5f6104586040840160208501610a56565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561049c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c09190610acd565b90508060a0840135808210156104f257604051634787a10360e11b815260048101929092526024820152604401610281565b505f905061058881806105086020880188610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f205f86602001602081019061053b9190610a56565b6001600160a01b03166001600160a01b031681526020019081526020015f2054670de0b6b3a764000061057a87602001602081019061021a9190610a56565b61022d9060a0890135610a83565b905061059a61021a6020860186610a56565b6105a49082610aae565b92508260c0850135808211156105d657604051639a06025d60e01b815260048101929092526024820152604401610281565b506105ec90503330856102a46020890189610a56565b6106146105ff6080860160608701610a56565b60a08601356102d96040880160208901610a56565b5050919050565b6001600160a01b0382166106425760405163165a825360e21b815260040160405180910390fd5b5f81116106625760405163165a825360e21b815260040160405180910390fd5b6106766001600160a01b0383163383610834565b5050565b60405163d623472560e01b815260040160405180910390fd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f49190610ae4565b6106ff906012610b04565b61070a90600a610c00565b92915050565b5f838302815f1985870982811083820303915050805f036107445783828161073a5761073a610a9a565b04925050506107c0565b80841161075b5761075b600385150260111861086a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6040516001600160a01b03848116602483015283811660448301526064820183905261082e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061087b565b50505050565b6040516001600160a01b0383811660248301526044820183905261086591859182169063a9059cbb906064016107fc565b505050565b634e487b715f52806020526024601cfd5b5f5f60205f8451602086015f885af18061089a576040513d5f823e3d81fd5b50505f513d915081156108b15780600114156108be565b6001600160a01b0384163b155b1561082e57604051635274afe760e01b81526001600160a01b0385166004820152602401610281565b5f61010082840312156102e9575f5ffd5b5f6101008284031215610909575f5ffd5b6107c083836108e7565b80356001600160a01b0381168114610929575f5ffd5b919050565b5f5f5f60608486031215610940575f5ffd5b61094984610913565b925061095760208501610913565b929592945050506040919091013590565b5f60a082840312156102e9575f5ffd5b5f60208284031215610988575f5ffd5b813567ffffffffffffffff81111561099e575f5ffd5b6109aa84828501610968565b949350505050565b5f5f604083850312156109c3575f5ffd5b6109cc83610913565b946020939093013593505050565b5f5f5f5f606085870312156109ed575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115610a11575f5ffd5b8501601f81018713610a21575f5ffd5b803567ffffffffffffffff811115610a37575f5ffd5b876020828401011115610a48575f5ffd5b949793965060200194505050565b5f60208284031215610a66575f5ffd5b6107c082610913565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761070a5761070a610a6f565b634e487b7160e01b5f52601260045260245ffd5b5f82610ac857634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610add575f5ffd5b5051919050565b5f60208284031215610af4575f5ffd5b815160ff811681146107c0575f5ffd5b60ff828116828216039081111561070a5761070a610a6f565b6001815b6001841115610b5857808504811115610b3c57610b3c610a6f565b6001841615610b4a57908102905b60019390931c928002610b21565b935093915050565b5f82610b6e5750600161070a565b81610b7a57505f61070a565b8160018114610b905760028114610b9a57610bb6565b600191505061070a565b60ff841115610bab57610bab610a6f565b50506001821b61070a565b5060208310610133831016604e8410600b8410161715610bd9575081810a61070a565b610be55f198484610b1d565b805f1904821115610bf857610bf8610a6f565b029392505050565b5f6107c060ff841683610b6056fea26469706673582212208a42d9f7c4b4239178105b96d61773c43d2c2b00dc8ad4541aa879138710d7f364736f6c634300081c0033","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 0x8F8 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 0x92E JUMP JUMPDEST PUSH2 0x2EF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x85 PUSH2 0xC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x978 JUMP JUMPDEST PUSH2 0x3A9 JUMP JUMPDEST PUSH2 0x85 PUSH2 0xD9 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F8 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 0x9B2 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 0x9DA JUMP JUMPDEST PUSH2 0x67A JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x12E PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0xA56 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 0xA56 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 0xA56 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 0xA56 JUMP JUMPDEST PUSH2 0x693 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0xA83 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x710 JUMP JUMPDEST SWAP1 POP PUSH2 0x249 PUSH2 0x21A PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x253 SWAP1 DUP3 PUSH2 0xAAE 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 0xA56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x7C7 JUMP JUMPDEST PUSH2 0x2E9 PUSH2 0x2C8 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA56 JUMP JUMPDEST DUP4 PUSH2 0x2D9 PUSH1 0x40 DUP8 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x834 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 0xA56 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 0xA56 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 0xACD 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 0xA56 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 0xA56 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 0xA56 JUMP JUMPDEST PUSH2 0x22D SWAP1 PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH2 0xA83 JUMP JUMPDEST SWAP1 POP PUSH2 0x59A PUSH2 0x21A PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0xA56 JUMP JUMPDEST PUSH2 0x5A4 SWAP1 DUP3 PUSH2 0xAAE 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 0xA56 JUMP JUMPDEST PUSH2 0x614 PUSH2 0x5FF PUSH1 0x80 DUP7 ADD PUSH1 0x60 DUP8 ADD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD CALLDATALOAD PUSH2 0x2D9 PUSH1 0x40 DUP9 ADD PUSH1 0x20 DUP10 ADD PUSH2 0xA56 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 0x834 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 0xAE4 JUMP JUMPDEST PUSH2 0x6FF SWAP1 PUSH1 0x12 PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x70A SWAP1 PUSH1 0xA PUSH2 0xC00 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x744 JUMPI DUP4 DUP3 DUP2 PUSH2 0x73A JUMPI PUSH2 0x73A PUSH2 0xA9A JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x7C0 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x75B JUMPI PUSH2 0x75B PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x86A 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x82E SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x87B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x865 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x7FC JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x89A JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x8B1 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x8BE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x82E 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 PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH2 0x100 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x909 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C0 DUP4 DUP4 PUSH2 0x8E7 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x929 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x940 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x949 DUP5 PUSH2 0x913 JUMP JUMPDEST SWAP3 POP PUSH2 0x957 PUSH1 0x20 DUP6 ADD PUSH2 0x913 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 0x988 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x99E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9AA DUP5 DUP3 DUP6 ADD PUSH2 0x968 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x9CC DUP4 PUSH2 0x913 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 0x9ED 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 0xA11 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0xA21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA37 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0xA48 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 0xA66 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x7C0 DUP3 PUSH2 0x913 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 0xA6F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0xAC8 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 0xADD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x7C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x70A JUMPI PUSH2 0x70A PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0xB58 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0xB3C JUMPI PUSH2 0xB3C PUSH2 0xA6F JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0xB4A JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0xB21 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0xB6E JUMPI POP PUSH1 0x1 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH2 0xB7A JUMPI POP PUSH0 PUSH2 0x70A JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0xB90 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0xB9A JUMPI PUSH2 0xBB6 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x70A JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0xBAB JUMPI PUSH2 0xBAB PUSH2 0xA6F 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 0xBD9 JUMPI POP DUP2 DUP2 EXP PUSH2 0x70A JUMP JUMPDEST PUSH2 0xBE5 PUSH0 NOT DUP5 DUP5 PUSH2 0xB1D JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0xBF8 JUMPI PUSH2 0xBF8 PUSH2 0xA6F JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x7C0 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0xB60 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 TIMESTAMP 0xD9 0xF7 0xC4 0xB4 0x23 SWAP2 PUSH25 0x105B96D61773C43D2C2B00DC8AD4541AA879138710D7F36473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"661:3653:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:822;;;;;;:::i;:::-;;:::i;:::-;;;611:25:75;;;599:2;584:18;1349:822:4;;;;;;;3427:296;;;;;;;;;;-1:-1:-1;3427:296:4;;;;;:::i;:::-;;:::i;:::-;;4023:116;;;;;;:::i;:::-;;:::i;2216:979::-;;;;;;:::i;:::-;;:::i;3199:224::-;;;;;;;;;;-1:-1:-1;3199:224:4;;;;;:::i;:::-;;:::i;4201:111::-;;;;;;;;;;-1:-1:-1;4201:111:4;;;;;:::i;:::-;;:::i;1349:822::-;1441:17;;1474:16;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1474:30:4;;1466:64;;;;-1:-1:-1;;;1466:64:4;;;;;;;;;;;;1563:15;1544:6;:15;;;:34;;1536:64;;;;-1:-1:-1;;;;;;1536:64:4;;;;;;;;;;;;1632:1;1614:6;:15;;;:19;1606:50;;;;-1:-1:-1;;;1606:50:4;;;;;;;;;;;;1663:22;1688:120;837:4;1663:22;;1770:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;1762:23:4;-1:-1:-1;;;;;1762:23:4;;;;;;;;;;;;:40;1786:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1762:40:4;;;;;;;;;;;;;-1:-1:-1;1762:40:4;;;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:4;1856:15;;;;;;;;:::i;1843:29::-;1826:46;;:14;:46;:::i;:::-;1814:58;-1:-1:-1;1814:58:4;1899:23;;;;1886:36;;;;1878:111;;;;-1:-1:-1;;;1878:111:4;;;;;4563:25:75;;;;4604:18;;;4597:34;4536:18;;1878:111:4;;;;;;;;;-1:-1:-1;1996:91:4;;-1:-1:-1;2044:10:4;2064:4;2071:15;;;;2011:14;;;;2071:6;2011:14;:::i;:::-;-1:-1:-1;;;;;1996:47:4;;:91;;:47;:91::i;:::-;2093:73;2138:16;;;;;;;;:::i;:::-;2156:9;2108:15;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2093:44:4;;:73;:44;:73::i;:::-;1460:711;1349:822;;;:::o;3427:296::-;-1:-1:-1;;;;;3526:21:4;;3518:51;;;;-1:-1:-1;;;3518:51:4;;;;;;;;;;;;-1:-1:-1;;;;;3583:22:4;;3575:52;;;;-1:-1:-1;;;3575:52:4;;;;;;;;;;;;-1:-1:-1;;;;;3633:16:4;;;:7;:16;;;;;;;;;;;:26;;;;;;;;;;;;;:35;;;3679:39;;4844:51:75;;;4911:18;;4904:60;;;;4980:18;;;4973:34;;;3679:39:4;;4832:2:75;4817:18;3679:39:4;;;;;;;3427:296;;;:::o;4023:116::-;4096:7;4118:16;;-1:-1:-1;;;4118:16:4;;;;;;;;;;;2216:979;2310:16;;2342;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2342:30:4;;2334:64;;;;-1:-1:-1;;;2334:64:4;;;;;;;;;;;;2431:15;2412:6;:15;;;:34;;2404:64;;;;-1:-1:-1;;;;;;2404:64:4;;;;;;;;;;;;2501:1;2482:6;:16;;;:20;2474:51;;;;-1:-1:-1;;;2474:51:4;;;;;;;;;;;;2531:15;2564;;;;;;;;:::i;:::-;2549:56;;-1:-1:-1;;;2549:56:4;;2599:4;2549:56;;;5164:51:75;-1:-1:-1;;;;;2549:41:4;;;;;;;5137:18:75;;2549:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2531:74;-1:-1:-1;2531:74:4;2630:16;;;;2619:27;;;;2611:81;;;;-1:-1:-1;;;2611:81:4;;;;;4563:25:75;;;;4604:18;;;4597:34;4536:18;;2611:81:4;4389:248:75;2611:81:4;-1:-1:-1;2699:19:4;;-1:-1:-1;2721:122:4;2699:19;;2794:14;;;;:6;:14;:::i;:::-;-1:-1:-1;;;;;2786:23:4;-1:-1:-1;;;;;2786:23:4;;;;;;;;;;;;:40;2810:6;:15;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2786:40:4;-1:-1:-1;;;;;2786:40:4;;;;;;;;;;;;;837:4;2741:29;2754:6;:15;;;;;;;;;;:::i;2741:29::-;2722:48;;:16;;;;:48;:::i;2721:122::-;2699:144;-1:-1:-1;2874:28:4;2887:14;;;;:6;:14;:::i;2874:28::-;2860:42;;:11;:42;:::i;:::-;2849:53;-1:-1:-1;2849:53:4;2928:22;;;;2916:34;;;;2908:105;;;;-1:-1:-1;;;2908:105:4;;;;;4563:25:75;;;;4604:18;;;4597:34;4536:18;;2908:105:4;4389:248:75;2908:105:4;-1:-1:-1;3020:84:4;;-1:-1:-1;3068:10:4;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:4;;3263:49;;;;-1:-1:-1;;;3263:49:4;;;;;;;;;;;;3335:1;3326:6;:10;3318:40;;;;-1:-1:-1;;;3318:40:4;;;;;;;;;;;;3364:54;-1:-1:-1;;;;;3364:34:4;;3399:10;3411:6;3364:34;:54::i;:::-;3199:224;;:::o;4201:111::-;4291:16;;-1:-1:-1;;;4291:16:4;;;;;;;;;;;1170:134;1230:7;1280:5;-1:-1:-1;;;;;1265:30:4;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1260:37;;:2;:37;:::i;:::-;1253:45;;:2;:45;:::i;:::-;1245:54;1170:134;-1:-1:-1;;1170:134:4:o;4996:4226:42:-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;;:::o;1670:188:33:-;1797:53;;-1:-1:-1;;;;;4862:32:75;;;1797:53:33;;;4844:51:75;4931:32;;;4911:18;;;4904:60;4980:18;;;4973:34;;;1770:81:33;;1790:5;;1812:18;;;;;4817::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;:::-;1670:188;;;;:::o;1271:160::-;1380:43;;-1:-1:-1;;;;;7473:32:75;;;1380:43:33;;;7455:51:75;7522:18;;;7515:34;;;1353:71:33;;1373:5;;1395:14;;;;;7428:18:75;;1380:43:33;7281:274:75;1353:71:33;1271:160;;;:::o;1776:194:38:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;5182:32:75;;8401:40:33;;;5164:51:75;5137:18;;8401:40:33;5018:203:75;14:171;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:75;;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:75;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:75: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:75: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:75;3045:18;;3032:32;;-1:-1:-1;3141:2:75;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:75;;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:75;3492:11;;-1:-1:-1;;;2716:818:75: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:75;;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:75;;5226:184;-1:-1:-1;5226:184:75: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:75;6363:5;;6298:80;6397:4;6387:76;;-1:-1:-1;6434:1:75;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:75;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:75;;;6931:5;;6743:203;6978:42;-1:-1:-1;;7003:8:75;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:75: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.28+commit.7893614a\"},\"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\":\"cancun\",\"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\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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":1749,"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"},{"internalType":"address","name":"admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","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"},{"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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":[{"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":{"@_2205":{"entryPoint":null,"id":2205,"parameterSlots":5,"returnSlots":0},"@_8115":{"entryPoint":null,"id":8115,"parameterSlots":2,"returnSlots":0},"@_grantRole_4770":{"entryPoint":175,"id":4770,"parameterSlots":2,"returnSlots":1},"@_mint_8418":{"entryPoint":114,"id":8418,"parameterSlots":2,"returnSlots":0},"@_msgSender_9364":{"entryPoint":null,"id":9364,"parameterSlots":0,"returnSlots":1},"@_update_8385":{"entryPoint":348,"id":8385,"parameterSlots":3,"returnSlots":0},"@hasRole_4594":{"entryPoint":null,"id":4594,"parameterSlots":2,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":662,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint8t_address_fromMemory":{"entryPoint":799,"id":null,"parameterSlots":2,"returnSlots":5},"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":1282,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1020,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1096,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":964,"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":642,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:5318:75","nodeType":"YulBlock","src":"0:5318:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"46:95:75","nodeType":"YulBlock","src":"46:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:75","nodeType":"YulLiteral","src":"63:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:75","nodeType":"YulLiteral","src":"70:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:75","nodeType":"YulLiteral","src":"75:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:75","nodeType":"YulIdentifier","src":"66:3:75"},"nativeSrc":"66:20:75","nodeType":"YulFunctionCall","src":"66:20:75"}],"functionName":{"name":"mstore","nativeSrc":"56:6:75","nodeType":"YulIdentifier","src":"56:6:75"},"nativeSrc":"56:31:75","nodeType":"YulFunctionCall","src":"56:31:75"},"nativeSrc":"56:31:75","nodeType":"YulExpressionStatement","src":"56:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:75","nodeType":"YulLiteral","src":"103:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:75","nodeType":"YulLiteral","src":"106:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:75","nodeType":"YulIdentifier","src":"96:6:75"},"nativeSrc":"96:15:75","nodeType":"YulFunctionCall","src":"96:15:75"},"nativeSrc":"96:15:75","nodeType":"YulExpressionStatement","src":"96:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:75","nodeType":"YulLiteral","src":"127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:75","nodeType":"YulLiteral","src":"130:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:75","nodeType":"YulIdentifier","src":"120:6:75"},"nativeSrc":"120:15:75","nodeType":"YulFunctionCall","src":"120:15:75"},"nativeSrc":"120:15:75","nodeType":"YulExpressionStatement","src":"120:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14:127:75","nodeType":"YulFunctionDefinition","src":"14:127:75"},{"body":{"nativeSrc":"210:659:75","nodeType":"YulBlock","src":"210:659:75","statements":[{"body":{"nativeSrc":"259:16:75","nodeType":"YulBlock","src":"259:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:75","nodeType":"YulLiteral","src":"268:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:75","nodeType":"YulLiteral","src":"271:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:75","nodeType":"YulIdentifier","src":"261:6:75"},"nativeSrc":"261:12:75","nodeType":"YulFunctionCall","src":"261:12:75"},"nativeSrc":"261:12:75","nodeType":"YulExpressionStatement","src":"261:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:75","nodeType":"YulIdentifier","src":"238:6:75"},{"kind":"number","nativeSrc":"246:4:75","nodeType":"YulLiteral","src":"246:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:75","nodeType":"YulIdentifier","src":"234:3:75"},"nativeSrc":"234:17:75","nodeType":"YulFunctionCall","src":"234:17:75"},{"name":"end","nativeSrc":"253:3:75","nodeType":"YulIdentifier","src":"253:3:75"}],"functionName":{"name":"slt","nativeSrc":"230:3:75","nodeType":"YulIdentifier","src":"230:3:75"},"nativeSrc":"230:27:75","nodeType":"YulFunctionCall","src":"230:27:75"}],"functionName":{"name":"iszero","nativeSrc":"223:6:75","nodeType":"YulIdentifier","src":"223:6:75"},"nativeSrc":"223:35:75","nodeType":"YulFunctionCall","src":"223:35:75"},"nativeSrc":"220:55:75","nodeType":"YulIf","src":"220:55:75"},{"nativeSrc":"284:27:75","nodeType":"YulVariableDeclaration","src":"284:27:75","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:75","nodeType":"YulIdentifier","src":"304:6:75"}],"functionName":{"name":"mload","nativeSrc":"298:5:75","nodeType":"YulIdentifier","src":"298:5:75"},"nativeSrc":"298:13:75","nodeType":"YulFunctionCall","src":"298:13:75"},"variables":[{"name":"length","nativeSrc":"288:6:75","nodeType":"YulTypedName","src":"288:6:75","type":""}]},{"body":{"nativeSrc":"354:22:75","nodeType":"YulBlock","src":"354:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:75","nodeType":"YulIdentifier","src":"356:16:75"},"nativeSrc":"356:18:75","nodeType":"YulFunctionCall","src":"356:18:75"},"nativeSrc":"356:18:75","nodeType":"YulExpressionStatement","src":"356:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:75","nodeType":"YulIdentifier","src":"326:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:75","nodeType":"YulLiteral","src":"342:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:75","nodeType":"YulLiteral","src":"346:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:75","nodeType":"YulIdentifier","src":"338:3:75"},"nativeSrc":"338:10:75","nodeType":"YulFunctionCall","src":"338:10:75"},{"kind":"number","nativeSrc":"350:1:75","nodeType":"YulLiteral","src":"350:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:75","nodeType":"YulIdentifier","src":"334:3:75"},"nativeSrc":"334:18:75","nodeType":"YulFunctionCall","src":"334:18:75"}],"functionName":{"name":"gt","nativeSrc":"323:2:75","nodeType":"YulIdentifier","src":"323:2:75"},"nativeSrc":"323:30:75","nodeType":"YulFunctionCall","src":"323:30:75"},"nativeSrc":"320:56:75","nodeType":"YulIf","src":"320:56:75"},{"nativeSrc":"385:23:75","nodeType":"YulVariableDeclaration","src":"385:23:75","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:75","nodeType":"YulLiteral","src":"405:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:75","nodeType":"YulIdentifier","src":"399:5:75"},"nativeSrc":"399:9:75","nodeType":"YulFunctionCall","src":"399:9:75"},"variables":[{"name":"memPtr","nativeSrc":"389:6:75","nodeType":"YulTypedName","src":"389:6:75","type":""}]},{"nativeSrc":"417:85:75","nodeType":"YulVariableDeclaration","src":"417:85:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:75","nodeType":"YulIdentifier","src":"439:6:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:75","nodeType":"YulIdentifier","src":"463:6:75"},{"kind":"number","nativeSrc":"471:4:75","nodeType":"YulLiteral","src":"471:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:75","nodeType":"YulIdentifier","src":"459:3:75"},"nativeSrc":"459:17:75","nodeType":"YulFunctionCall","src":"459:17:75"},{"arguments":[{"kind":"number","nativeSrc":"482:2:75","nodeType":"YulLiteral","src":"482:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:75","nodeType":"YulIdentifier","src":"478:3:75"},"nativeSrc":"478:7:75","nodeType":"YulFunctionCall","src":"478:7:75"}],"functionName":{"name":"and","nativeSrc":"455:3:75","nodeType":"YulIdentifier","src":"455:3:75"},"nativeSrc":"455:31:75","nodeType":"YulFunctionCall","src":"455:31:75"},{"kind":"number","nativeSrc":"488:2:75","nodeType":"YulLiteral","src":"488:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:75","nodeType":"YulIdentifier","src":"451:3:75"},"nativeSrc":"451:40:75","nodeType":"YulFunctionCall","src":"451:40:75"},{"arguments":[{"kind":"number","nativeSrc":"497:2:75","nodeType":"YulLiteral","src":"497:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:75","nodeType":"YulIdentifier","src":"493:3:75"},"nativeSrc":"493:7:75","nodeType":"YulFunctionCall","src":"493:7:75"}],"functionName":{"name":"and","nativeSrc":"447:3:75","nodeType":"YulIdentifier","src":"447:3:75"},"nativeSrc":"447:54:75","nodeType":"YulFunctionCall","src":"447:54:75"}],"functionName":{"name":"add","nativeSrc":"435:3:75","nodeType":"YulIdentifier","src":"435:3:75"},"nativeSrc":"435:67:75","nodeType":"YulFunctionCall","src":"435:67:75"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:75","nodeType":"YulTypedName","src":"421:10:75","type":""}]},{"body":{"nativeSrc":"577:22:75","nodeType":"YulBlock","src":"577:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:75","nodeType":"YulIdentifier","src":"579:16:75"},"nativeSrc":"579:18:75","nodeType":"YulFunctionCall","src":"579:18:75"},"nativeSrc":"579:18:75","nodeType":"YulExpressionStatement","src":"579:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:75","nodeType":"YulIdentifier","src":"520:10:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:75","nodeType":"YulLiteral","src":"540:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:75","nodeType":"YulLiteral","src":"544:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:75","nodeType":"YulIdentifier","src":"536:3:75"},"nativeSrc":"536:10:75","nodeType":"YulFunctionCall","src":"536:10:75"},{"kind":"number","nativeSrc":"548:1:75","nodeType":"YulLiteral","src":"548:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:75","nodeType":"YulIdentifier","src":"532:3:75"},"nativeSrc":"532:18:75","nodeType":"YulFunctionCall","src":"532:18:75"}],"functionName":{"name":"gt","nativeSrc":"517:2:75","nodeType":"YulIdentifier","src":"517:2:75"},"nativeSrc":"517:34:75","nodeType":"YulFunctionCall","src":"517:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:75","nodeType":"YulIdentifier","src":"556:10:75"},{"name":"memPtr","nativeSrc":"568:6:75","nodeType":"YulIdentifier","src":"568:6:75"}],"functionName":{"name":"lt","nativeSrc":"553:2:75","nodeType":"YulIdentifier","src":"553:2:75"},"nativeSrc":"553:22:75","nodeType":"YulFunctionCall","src":"553:22:75"}],"functionName":{"name":"or","nativeSrc":"514:2:75","nodeType":"YulIdentifier","src":"514:2:75"},"nativeSrc":"514:62:75","nodeType":"YulFunctionCall","src":"514:62:75"},"nativeSrc":"511:88:75","nodeType":"YulIf","src":"511:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:75","nodeType":"YulLiteral","src":"615:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:75","nodeType":"YulIdentifier","src":"619:10:75"}],"functionName":{"name":"mstore","nativeSrc":"608:6:75","nodeType":"YulIdentifier","src":"608:6:75"},"nativeSrc":"608:22:75","nodeType":"YulFunctionCall","src":"608:22:75"},"nativeSrc":"608:22:75","nodeType":"YulExpressionStatement","src":"608:22:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:75","nodeType":"YulIdentifier","src":"646:6:75"},{"name":"length","nativeSrc":"654:6:75","nodeType":"YulIdentifier","src":"654:6:75"}],"functionName":{"name":"mstore","nativeSrc":"639:6:75","nodeType":"YulIdentifier","src":"639:6:75"},"nativeSrc":"639:22:75","nodeType":"YulFunctionCall","src":"639:22:75"},"nativeSrc":"639:22:75","nodeType":"YulExpressionStatement","src":"639:22:75"},{"body":{"nativeSrc":"713:16:75","nodeType":"YulBlock","src":"713:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:75","nodeType":"YulLiteral","src":"722:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:75","nodeType":"YulLiteral","src":"725:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:75","nodeType":"YulIdentifier","src":"715:6:75"},"nativeSrc":"715:12:75","nodeType":"YulFunctionCall","src":"715:12:75"},"nativeSrc":"715:12:75","nodeType":"YulExpressionStatement","src":"715:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:75","nodeType":"YulIdentifier","src":"684:6:75"},{"name":"length","nativeSrc":"692:6:75","nodeType":"YulIdentifier","src":"692:6:75"}],"functionName":{"name":"add","nativeSrc":"680:3:75","nodeType":"YulIdentifier","src":"680:3:75"},"nativeSrc":"680:19:75","nodeType":"YulFunctionCall","src":"680:19:75"},{"kind":"number","nativeSrc":"701:4:75","nodeType":"YulLiteral","src":"701:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:75","nodeType":"YulIdentifier","src":"676:3:75"},"nativeSrc":"676:30:75","nodeType":"YulFunctionCall","src":"676:30:75"},{"name":"end","nativeSrc":"708:3:75","nodeType":"YulIdentifier","src":"708:3:75"}],"functionName":{"name":"gt","nativeSrc":"673:2:75","nodeType":"YulIdentifier","src":"673:2:75"},"nativeSrc":"673:39:75","nodeType":"YulFunctionCall","src":"673:39:75"},"nativeSrc":"670:59:75","nodeType":"YulIf","src":"670:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"748:6:75","nodeType":"YulIdentifier","src":"748:6:75"},{"kind":"number","nativeSrc":"756:4:75","nodeType":"YulLiteral","src":"756:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"744:3:75","nodeType":"YulIdentifier","src":"744:3:75"},"nativeSrc":"744:17:75","nodeType":"YulFunctionCall","src":"744:17:75"},{"arguments":[{"name":"offset","nativeSrc":"767:6:75","nodeType":"YulIdentifier","src":"767:6:75"},{"kind":"number","nativeSrc":"775:4:75","nodeType":"YulLiteral","src":"775:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"763:3:75","nodeType":"YulIdentifier","src":"763:3:75"},"nativeSrc":"763:17:75","nodeType":"YulFunctionCall","src":"763:17:75"},{"name":"length","nativeSrc":"782:6:75","nodeType":"YulIdentifier","src":"782:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"738:5:75","nodeType":"YulIdentifier","src":"738:5:75"},"nativeSrc":"738:51:75","nodeType":"YulFunctionCall","src":"738:51:75"},"nativeSrc":"738:51:75","nodeType":"YulExpressionStatement","src":"738:51:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"813:6:75","nodeType":"YulIdentifier","src":"813:6:75"},{"name":"length","nativeSrc":"821:6:75","nodeType":"YulIdentifier","src":"821:6:75"}],"functionName":{"name":"add","nativeSrc":"809:3:75","nodeType":"YulIdentifier","src":"809:3:75"},"nativeSrc":"809:19:75","nodeType":"YulFunctionCall","src":"809:19:75"},{"kind":"number","nativeSrc":"830:4:75","nodeType":"YulLiteral","src":"830:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"805:3:75","nodeType":"YulIdentifier","src":"805:3:75"},"nativeSrc":"805:30:75","nodeType":"YulFunctionCall","src":"805:30:75"},{"kind":"number","nativeSrc":"837:1:75","nodeType":"YulLiteral","src":"837:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"798:6:75","nodeType":"YulIdentifier","src":"798:6:75"},"nativeSrc":"798:41:75","nodeType":"YulFunctionCall","src":"798:41:75"},"nativeSrc":"798:41:75","nodeType":"YulExpressionStatement","src":"798:41:75"},{"nativeSrc":"848:15:75","nodeType":"YulAssignment","src":"848:15:75","value":{"name":"memPtr","nativeSrc":"857:6:75","nodeType":"YulIdentifier","src":"857:6:75"},"variableNames":[{"name":"array","nativeSrc":"848:5:75","nodeType":"YulIdentifier","src":"848:5:75"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:723:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:75","nodeType":"YulTypedName","src":"184:6:75","type":""},{"name":"end","nativeSrc":"192:3:75","nodeType":"YulTypedName","src":"192:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:75","nodeType":"YulTypedName","src":"200:5:75","type":""}],"src":"146:723:75"},{"body":{"nativeSrc":"1041:799:75","nodeType":"YulBlock","src":"1041:799:75","statements":[{"body":{"nativeSrc":"1088:16:75","nodeType":"YulBlock","src":"1088:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1097:1:75","nodeType":"YulLiteral","src":"1097:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1100:1:75","nodeType":"YulLiteral","src":"1100:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1090:6:75","nodeType":"YulIdentifier","src":"1090:6:75"},"nativeSrc":"1090:12:75","nodeType":"YulFunctionCall","src":"1090:12:75"},"nativeSrc":"1090:12:75","nodeType":"YulExpressionStatement","src":"1090:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1062:7:75","nodeType":"YulIdentifier","src":"1062:7:75"},{"name":"headStart","nativeSrc":"1071:9:75","nodeType":"YulIdentifier","src":"1071:9:75"}],"functionName":{"name":"sub","nativeSrc":"1058:3:75","nodeType":"YulIdentifier","src":"1058:3:75"},"nativeSrc":"1058:23:75","nodeType":"YulFunctionCall","src":"1058:23:75"},{"kind":"number","nativeSrc":"1083:3:75","nodeType":"YulLiteral","src":"1083:3:75","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"1054:3:75","nodeType":"YulIdentifier","src":"1054:3:75"},"nativeSrc":"1054:33:75","nodeType":"YulFunctionCall","src":"1054:33:75"},"nativeSrc":"1051:53:75","nodeType":"YulIf","src":"1051:53:75"},{"nativeSrc":"1113:30:75","nodeType":"YulVariableDeclaration","src":"1113:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1133:9:75","nodeType":"YulIdentifier","src":"1133:9:75"}],"functionName":{"name":"mload","nativeSrc":"1127:5:75","nodeType":"YulIdentifier","src":"1127:5:75"},"nativeSrc":"1127:16:75","nodeType":"YulFunctionCall","src":"1127:16:75"},"variables":[{"name":"offset","nativeSrc":"1117:6:75","nodeType":"YulTypedName","src":"1117:6:75","type":""}]},{"body":{"nativeSrc":"1186:16:75","nodeType":"YulBlock","src":"1186:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1195:1:75","nodeType":"YulLiteral","src":"1195:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1198:1:75","nodeType":"YulLiteral","src":"1198:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1188:6:75","nodeType":"YulIdentifier","src":"1188:6:75"},"nativeSrc":"1188:12:75","nodeType":"YulFunctionCall","src":"1188:12:75"},"nativeSrc":"1188:12:75","nodeType":"YulExpressionStatement","src":"1188:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1158:6:75","nodeType":"YulIdentifier","src":"1158:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1174:2:75","nodeType":"YulLiteral","src":"1174:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"1178:1:75","nodeType":"YulLiteral","src":"1178:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1170:3:75","nodeType":"YulIdentifier","src":"1170:3:75"},"nativeSrc":"1170:10:75","nodeType":"YulFunctionCall","src":"1170:10:75"},{"kind":"number","nativeSrc":"1182:1:75","nodeType":"YulLiteral","src":"1182:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1166:3:75","nodeType":"YulIdentifier","src":"1166:3:75"},"nativeSrc":"1166:18:75","nodeType":"YulFunctionCall","src":"1166:18:75"}],"functionName":{"name":"gt","nativeSrc":"1155:2:75","nodeType":"YulIdentifier","src":"1155:2:75"},"nativeSrc":"1155:30:75","nodeType":"YulFunctionCall","src":"1155:30:75"},"nativeSrc":"1152:50:75","nodeType":"YulIf","src":"1152:50:75"},{"nativeSrc":"1211:71:75","nodeType":"YulAssignment","src":"1211:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1254:9:75","nodeType":"YulIdentifier","src":"1254:9:75"},{"name":"offset","nativeSrc":"1265:6:75","nodeType":"YulIdentifier","src":"1265:6:75"}],"functionName":{"name":"add","nativeSrc":"1250:3:75","nodeType":"YulIdentifier","src":"1250:3:75"},"nativeSrc":"1250:22:75","nodeType":"YulFunctionCall","src":"1250:22:75"},{"name":"dataEnd","nativeSrc":"1274:7:75","nodeType":"YulIdentifier","src":"1274:7:75"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1221:28:75","nodeType":"YulIdentifier","src":"1221:28:75"},"nativeSrc":"1221:61:75","nodeType":"YulFunctionCall","src":"1221:61:75"},"variableNames":[{"name":"value0","nativeSrc":"1211:6:75","nodeType":"YulIdentifier","src":"1211:6:75"}]},{"nativeSrc":"1291:41:75","nodeType":"YulVariableDeclaration","src":"1291:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1317:9:75","nodeType":"YulIdentifier","src":"1317:9:75"},{"kind":"number","nativeSrc":"1328:2:75","nodeType":"YulLiteral","src":"1328:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1313:3:75","nodeType":"YulIdentifier","src":"1313:3:75"},"nativeSrc":"1313:18:75","nodeType":"YulFunctionCall","src":"1313:18:75"}],"functionName":{"name":"mload","nativeSrc":"1307:5:75","nodeType":"YulIdentifier","src":"1307:5:75"},"nativeSrc":"1307:25:75","nodeType":"YulFunctionCall","src":"1307:25:75"},"variables":[{"name":"offset_1","nativeSrc":"1295:8:75","nodeType":"YulTypedName","src":"1295:8:75","type":""}]},{"body":{"nativeSrc":"1377:16:75","nodeType":"YulBlock","src":"1377:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1386:1:75","nodeType":"YulLiteral","src":"1386:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1389:1:75","nodeType":"YulLiteral","src":"1389:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1379:6:75","nodeType":"YulIdentifier","src":"1379:6:75"},"nativeSrc":"1379:12:75","nodeType":"YulFunctionCall","src":"1379:12:75"},"nativeSrc":"1379:12:75","nodeType":"YulExpressionStatement","src":"1379:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1347:8:75","nodeType":"YulIdentifier","src":"1347:8:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1365:2:75","nodeType":"YulLiteral","src":"1365:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"1369:1:75","nodeType":"YulLiteral","src":"1369:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1361:3:75","nodeType":"YulIdentifier","src":"1361:3:75"},"nativeSrc":"1361:10:75","nodeType":"YulFunctionCall","src":"1361:10:75"},{"kind":"number","nativeSrc":"1373:1:75","nodeType":"YulLiteral","src":"1373:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1357:3:75","nodeType":"YulIdentifier","src":"1357:3:75"},"nativeSrc":"1357:18:75","nodeType":"YulFunctionCall","src":"1357:18:75"}],"functionName":{"name":"gt","nativeSrc":"1344:2:75","nodeType":"YulIdentifier","src":"1344:2:75"},"nativeSrc":"1344:32:75","nodeType":"YulFunctionCall","src":"1344:32:75"},"nativeSrc":"1341:52:75","nodeType":"YulIf","src":"1341:52:75"},{"nativeSrc":"1402:73:75","nodeType":"YulAssignment","src":"1402:73:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1445:9:75","nodeType":"YulIdentifier","src":"1445:9:75"},{"name":"offset_1","nativeSrc":"1456:8:75","nodeType":"YulIdentifier","src":"1456:8:75"}],"functionName":{"name":"add","nativeSrc":"1441:3:75","nodeType":"YulIdentifier","src":"1441:3:75"},"nativeSrc":"1441:24:75","nodeType":"YulFunctionCall","src":"1441:24:75"},{"name":"dataEnd","nativeSrc":"1467:7:75","nodeType":"YulIdentifier","src":"1467:7:75"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1412:28:75","nodeType":"YulIdentifier","src":"1412:28:75"},"nativeSrc":"1412:63:75","nodeType":"YulFunctionCall","src":"1412:63:75"},"variableNames":[{"name":"value1","nativeSrc":"1402:6:75","nodeType":"YulIdentifier","src":"1402:6:75"}]},{"nativeSrc":"1484:35:75","nodeType":"YulAssignment","src":"1484:35:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1504:9:75","nodeType":"YulIdentifier","src":"1504:9:75"},{"kind":"number","nativeSrc":"1515:2:75","nodeType":"YulLiteral","src":"1515:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1500:3:75","nodeType":"YulIdentifier","src":"1500:3:75"},"nativeSrc":"1500:18:75","nodeType":"YulFunctionCall","src":"1500:18:75"}],"functionName":{"name":"mload","nativeSrc":"1494:5:75","nodeType":"YulIdentifier","src":"1494:5:75"},"nativeSrc":"1494:25:75","nodeType":"YulFunctionCall","src":"1494:25:75"},"variableNames":[{"name":"value2","nativeSrc":"1484:6:75","nodeType":"YulIdentifier","src":"1484:6:75"}]},{"nativeSrc":"1528:38:75","nodeType":"YulVariableDeclaration","src":"1528:38:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1551:9:75","nodeType":"YulIdentifier","src":"1551:9:75"},{"kind":"number","nativeSrc":"1562:2:75","nodeType":"YulLiteral","src":"1562:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1547:3:75","nodeType":"YulIdentifier","src":"1547:3:75"},"nativeSrc":"1547:18:75","nodeType":"YulFunctionCall","src":"1547:18:75"}],"functionName":{"name":"mload","nativeSrc":"1541:5:75","nodeType":"YulIdentifier","src":"1541:5:75"},"nativeSrc":"1541:25:75","nodeType":"YulFunctionCall","src":"1541:25:75"},"variables":[{"name":"value","nativeSrc":"1532:5:75","nodeType":"YulTypedName","src":"1532:5:75","type":""}]},{"body":{"nativeSrc":"1614:16:75","nodeType":"YulBlock","src":"1614:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1623:1:75","nodeType":"YulLiteral","src":"1623:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1626:1:75","nodeType":"YulLiteral","src":"1626:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1616:6:75","nodeType":"YulIdentifier","src":"1616:6:75"},"nativeSrc":"1616:12:75","nodeType":"YulFunctionCall","src":"1616:12:75"},"nativeSrc":"1616:12:75","nodeType":"YulExpressionStatement","src":"1616:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1588:5:75","nodeType":"YulIdentifier","src":"1588:5:75"},{"arguments":[{"name":"value","nativeSrc":"1599:5:75","nodeType":"YulIdentifier","src":"1599:5:75"},{"kind":"number","nativeSrc":"1606:4:75","nodeType":"YulLiteral","src":"1606:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1595:3:75","nodeType":"YulIdentifier","src":"1595:3:75"},"nativeSrc":"1595:16:75","nodeType":"YulFunctionCall","src":"1595:16:75"}],"functionName":{"name":"eq","nativeSrc":"1585:2:75","nodeType":"YulIdentifier","src":"1585:2:75"},"nativeSrc":"1585:27:75","nodeType":"YulFunctionCall","src":"1585:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1578:6:75","nodeType":"YulIdentifier","src":"1578:6:75"},"nativeSrc":"1578:35:75","nodeType":"YulFunctionCall","src":"1578:35:75"},"nativeSrc":"1575:55:75","nodeType":"YulIf","src":"1575:55:75"},{"nativeSrc":"1639:15:75","nodeType":"YulAssignment","src":"1639:15:75","value":{"name":"value","nativeSrc":"1649:5:75","nodeType":"YulIdentifier","src":"1649:5:75"},"variableNames":[{"name":"value3","nativeSrc":"1639:6:75","nodeType":"YulIdentifier","src":"1639:6:75"}]},{"nativeSrc":"1663:16:75","nodeType":"YulVariableDeclaration","src":"1663:16:75","value":{"kind":"number","nativeSrc":"1678:1:75","nodeType":"YulLiteral","src":"1678:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1667:7:75","nodeType":"YulTypedName","src":"1667:7:75","type":""}]},{"nativeSrc":"1688:37:75","nodeType":"YulAssignment","src":"1688:37:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1709:9:75","nodeType":"YulIdentifier","src":"1709:9:75"},{"kind":"number","nativeSrc":"1720:3:75","nodeType":"YulLiteral","src":"1720:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1705:3:75","nodeType":"YulIdentifier","src":"1705:3:75"},"nativeSrc":"1705:19:75","nodeType":"YulFunctionCall","src":"1705:19:75"}],"functionName":{"name":"mload","nativeSrc":"1699:5:75","nodeType":"YulIdentifier","src":"1699:5:75"},"nativeSrc":"1699:26:75","nodeType":"YulFunctionCall","src":"1699:26:75"},"variableNames":[{"name":"value_1","nativeSrc":"1688:7:75","nodeType":"YulIdentifier","src":"1688:7:75"}]},{"body":{"nativeSrc":"1792:16:75","nodeType":"YulBlock","src":"1792:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1801:1:75","nodeType":"YulLiteral","src":"1801:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1804:1:75","nodeType":"YulLiteral","src":"1804:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1794:6:75","nodeType":"YulIdentifier","src":"1794:6:75"},"nativeSrc":"1794:12:75","nodeType":"YulFunctionCall","src":"1794:12:75"},"nativeSrc":"1794:12:75","nodeType":"YulExpressionStatement","src":"1794:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"1747:7:75","nodeType":"YulIdentifier","src":"1747:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"1760:7:75","nodeType":"YulIdentifier","src":"1760:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1777:3:75","nodeType":"YulLiteral","src":"1777:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1782:1:75","nodeType":"YulLiteral","src":"1782:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1773:3:75","nodeType":"YulIdentifier","src":"1773:3:75"},"nativeSrc":"1773:11:75","nodeType":"YulFunctionCall","src":"1773:11:75"},{"kind":"number","nativeSrc":"1786:1:75","nodeType":"YulLiteral","src":"1786:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1769:3:75","nodeType":"YulIdentifier","src":"1769:3:75"},"nativeSrc":"1769:19:75","nodeType":"YulFunctionCall","src":"1769:19:75"}],"functionName":{"name":"and","nativeSrc":"1756:3:75","nodeType":"YulIdentifier","src":"1756:3:75"},"nativeSrc":"1756:33:75","nodeType":"YulFunctionCall","src":"1756:33:75"}],"functionName":{"name":"eq","nativeSrc":"1744:2:75","nodeType":"YulIdentifier","src":"1744:2:75"},"nativeSrc":"1744:46:75","nodeType":"YulFunctionCall","src":"1744:46:75"}],"functionName":{"name":"iszero","nativeSrc":"1737:6:75","nodeType":"YulIdentifier","src":"1737:6:75"},"nativeSrc":"1737:54:75","nodeType":"YulFunctionCall","src":"1737:54:75"},"nativeSrc":"1734:74:75","nodeType":"YulIf","src":"1734:74:75"},{"nativeSrc":"1817:17:75","nodeType":"YulAssignment","src":"1817:17:75","value":{"name":"value_1","nativeSrc":"1827:7:75","nodeType":"YulIdentifier","src":"1827:7:75"},"variableNames":[{"name":"value4","nativeSrc":"1817:6:75","nodeType":"YulIdentifier","src":"1817:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256t_uint8t_address_fromMemory","nativeSrc":"874:966:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"975:9:75","nodeType":"YulTypedName","src":"975:9:75","type":""},{"name":"dataEnd","nativeSrc":"986:7:75","nodeType":"YulTypedName","src":"986:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"998:6:75","nodeType":"YulTypedName","src":"998:6:75","type":""},{"name":"value1","nativeSrc":"1006:6:75","nodeType":"YulTypedName","src":"1006:6:75","type":""},{"name":"value2","nativeSrc":"1014:6:75","nodeType":"YulTypedName","src":"1014:6:75","type":""},{"name":"value3","nativeSrc":"1022:6:75","nodeType":"YulTypedName","src":"1022:6:75","type":""},{"name":"value4","nativeSrc":"1030:6:75","nodeType":"YulTypedName","src":"1030:6:75","type":""}],"src":"874:966:75"},{"body":{"nativeSrc":"1900:325:75","nodeType":"YulBlock","src":"1900:325:75","statements":[{"nativeSrc":"1910:22:75","nodeType":"YulAssignment","src":"1910:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"1924:1:75","nodeType":"YulLiteral","src":"1924:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"1927:4:75","nodeType":"YulIdentifier","src":"1927:4:75"}],"functionName":{"name":"shr","nativeSrc":"1920:3:75","nodeType":"YulIdentifier","src":"1920:3:75"},"nativeSrc":"1920:12:75","nodeType":"YulFunctionCall","src":"1920:12:75"},"variableNames":[{"name":"length","nativeSrc":"1910:6:75","nodeType":"YulIdentifier","src":"1910:6:75"}]},{"nativeSrc":"1941:38:75","nodeType":"YulVariableDeclaration","src":"1941:38:75","value":{"arguments":[{"name":"data","nativeSrc":"1971:4:75","nodeType":"YulIdentifier","src":"1971:4:75"},{"kind":"number","nativeSrc":"1977:1:75","nodeType":"YulLiteral","src":"1977:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"1967:3:75","nodeType":"YulIdentifier","src":"1967:3:75"},"nativeSrc":"1967:12:75","nodeType":"YulFunctionCall","src":"1967:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"1945:18:75","nodeType":"YulTypedName","src":"1945:18:75","type":""}]},{"body":{"nativeSrc":"2018:31:75","nodeType":"YulBlock","src":"2018:31:75","statements":[{"nativeSrc":"2020:27:75","nodeType":"YulAssignment","src":"2020:27:75","value":{"arguments":[{"name":"length","nativeSrc":"2034:6:75","nodeType":"YulIdentifier","src":"2034:6:75"},{"kind":"number","nativeSrc":"2042:4:75","nodeType":"YulLiteral","src":"2042:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"2030:3:75","nodeType":"YulIdentifier","src":"2030:3:75"},"nativeSrc":"2030:17:75","nodeType":"YulFunctionCall","src":"2030:17:75"},"variableNames":[{"name":"length","nativeSrc":"2020:6:75","nodeType":"YulIdentifier","src":"2020:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"1998:18:75","nodeType":"YulIdentifier","src":"1998:18:75"}],"functionName":{"name":"iszero","nativeSrc":"1991:6:75","nodeType":"YulIdentifier","src":"1991:6:75"},"nativeSrc":"1991:26:75","nodeType":"YulFunctionCall","src":"1991:26:75"},"nativeSrc":"1988:61:75","nodeType":"YulIf","src":"1988:61:75"},{"body":{"nativeSrc":"2108:111:75","nodeType":"YulBlock","src":"2108:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2129:1:75","nodeType":"YulLiteral","src":"2129:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2136:3:75","nodeType":"YulLiteral","src":"2136:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"2141:10:75","nodeType":"YulLiteral","src":"2141:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2132:3:75","nodeType":"YulIdentifier","src":"2132:3:75"},"nativeSrc":"2132:20:75","nodeType":"YulFunctionCall","src":"2132:20:75"}],"functionName":{"name":"mstore","nativeSrc":"2122:6:75","nodeType":"YulIdentifier","src":"2122:6:75"},"nativeSrc":"2122:31:75","nodeType":"YulFunctionCall","src":"2122:31:75"},"nativeSrc":"2122:31:75","nodeType":"YulExpressionStatement","src":"2122:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2173:1:75","nodeType":"YulLiteral","src":"2173:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"2176:4:75","nodeType":"YulLiteral","src":"2176:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"2166:6:75","nodeType":"YulIdentifier","src":"2166:6:75"},"nativeSrc":"2166:15:75","nodeType":"YulFunctionCall","src":"2166:15:75"},"nativeSrc":"2166:15:75","nodeType":"YulExpressionStatement","src":"2166:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2201:1:75","nodeType":"YulLiteral","src":"2201:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2204:4:75","nodeType":"YulLiteral","src":"2204:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2194:6:75","nodeType":"YulIdentifier","src":"2194:6:75"},"nativeSrc":"2194:15:75","nodeType":"YulFunctionCall","src":"2194:15:75"},"nativeSrc":"2194:15:75","nodeType":"YulExpressionStatement","src":"2194:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"2064:18:75","nodeType":"YulIdentifier","src":"2064:18:75"},{"arguments":[{"name":"length","nativeSrc":"2087:6:75","nodeType":"YulIdentifier","src":"2087:6:75"},{"kind":"number","nativeSrc":"2095:2:75","nodeType":"YulLiteral","src":"2095:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"2084:2:75","nodeType":"YulIdentifier","src":"2084:2:75"},"nativeSrc":"2084:14:75","nodeType":"YulFunctionCall","src":"2084:14:75"}],"functionName":{"name":"eq","nativeSrc":"2061:2:75","nodeType":"YulIdentifier","src":"2061:2:75"},"nativeSrc":"2061:38:75","nodeType":"YulFunctionCall","src":"2061:38:75"},"nativeSrc":"2058:161:75","nodeType":"YulIf","src":"2058:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"1845:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1880:4:75","nodeType":"YulTypedName","src":"1880:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"1889:6:75","nodeType":"YulTypedName","src":"1889:6:75","type":""}],"src":"1845:380:75"},{"body":{"nativeSrc":"2286:65:75","nodeType":"YulBlock","src":"2286:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2303:1:75","nodeType":"YulLiteral","src":"2303:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"2306:3:75","nodeType":"YulIdentifier","src":"2306:3:75"}],"functionName":{"name":"mstore","nativeSrc":"2296:6:75","nodeType":"YulIdentifier","src":"2296:6:75"},"nativeSrc":"2296:14:75","nodeType":"YulFunctionCall","src":"2296:14:75"},"nativeSrc":"2296:14:75","nodeType":"YulExpressionStatement","src":"2296:14:75"},{"nativeSrc":"2319:26:75","nodeType":"YulAssignment","src":"2319:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"2337:1:75","nodeType":"YulLiteral","src":"2337:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2340:4:75","nodeType":"YulLiteral","src":"2340:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2327:9:75","nodeType":"YulIdentifier","src":"2327:9:75"},"nativeSrc":"2327:18:75","nodeType":"YulFunctionCall","src":"2327:18:75"},"variableNames":[{"name":"data","nativeSrc":"2319:4:75","nodeType":"YulIdentifier","src":"2319:4:75"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"2230:121:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"2269:3:75","nodeType":"YulTypedName","src":"2269:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"2277:4:75","nodeType":"YulTypedName","src":"2277:4:75","type":""}],"src":"2230:121:75"},{"body":{"nativeSrc":"2437:437:75","nodeType":"YulBlock","src":"2437:437:75","statements":[{"body":{"nativeSrc":"2470:398:75","nodeType":"YulBlock","src":"2470:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2491:1:75","nodeType":"YulLiteral","src":"2491:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"2494:5:75","nodeType":"YulIdentifier","src":"2494:5:75"}],"functionName":{"name":"mstore","nativeSrc":"2484:6:75","nodeType":"YulIdentifier","src":"2484:6:75"},"nativeSrc":"2484:16:75","nodeType":"YulFunctionCall","src":"2484:16:75"},"nativeSrc":"2484:16:75","nodeType":"YulExpressionStatement","src":"2484:16:75"},{"nativeSrc":"2513:30:75","nodeType":"YulVariableDeclaration","src":"2513:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"2535:1:75","nodeType":"YulLiteral","src":"2535:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2538:4:75","nodeType":"YulLiteral","src":"2538:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"2525:9:75","nodeType":"YulIdentifier","src":"2525:9:75"},"nativeSrc":"2525:18:75","nodeType":"YulFunctionCall","src":"2525:18:75"},"variables":[{"name":"data","nativeSrc":"2517:4:75","nodeType":"YulTypedName","src":"2517:4:75","type":""}]},{"nativeSrc":"2556:57:75","nodeType":"YulVariableDeclaration","src":"2556:57:75","value":{"arguments":[{"name":"data","nativeSrc":"2579:4:75","nodeType":"YulIdentifier","src":"2579:4:75"},{"arguments":[{"kind":"number","nativeSrc":"2589:1:75","nodeType":"YulLiteral","src":"2589:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"2596:10:75","nodeType":"YulIdentifier","src":"2596:10:75"},{"kind":"number","nativeSrc":"2608:2:75","nodeType":"YulLiteral","src":"2608:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2592:3:75","nodeType":"YulIdentifier","src":"2592:3:75"},"nativeSrc":"2592:19:75","nodeType":"YulFunctionCall","src":"2592:19:75"}],"functionName":{"name":"shr","nativeSrc":"2585:3:75","nodeType":"YulIdentifier","src":"2585:3:75"},"nativeSrc":"2585:27:75","nodeType":"YulFunctionCall","src":"2585:27:75"}],"functionName":{"name":"add","nativeSrc":"2575:3:75","nodeType":"YulIdentifier","src":"2575:3:75"},"nativeSrc":"2575:38:75","nodeType":"YulFunctionCall","src":"2575:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"2560:11:75","nodeType":"YulTypedName","src":"2560:11:75","type":""}]},{"body":{"nativeSrc":"2650:23:75","nodeType":"YulBlock","src":"2650:23:75","statements":[{"nativeSrc":"2652:19:75","nodeType":"YulAssignment","src":"2652:19:75","value":{"name":"data","nativeSrc":"2667:4:75","nodeType":"YulIdentifier","src":"2667:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"2652:11:75","nodeType":"YulIdentifier","src":"2652:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"2632:10:75","nodeType":"YulIdentifier","src":"2632:10:75"},{"kind":"number","nativeSrc":"2644:4:75","nodeType":"YulLiteral","src":"2644:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"2629:2:75","nodeType":"YulIdentifier","src":"2629:2:75"},"nativeSrc":"2629:20:75","nodeType":"YulFunctionCall","src":"2629:20:75"},"nativeSrc":"2626:47:75","nodeType":"YulIf","src":"2626:47:75"},{"nativeSrc":"2686:41:75","nodeType":"YulVariableDeclaration","src":"2686:41:75","value":{"arguments":[{"name":"data","nativeSrc":"2700:4:75","nodeType":"YulIdentifier","src":"2700:4:75"},{"arguments":[{"kind":"number","nativeSrc":"2710:1:75","nodeType":"YulLiteral","src":"2710:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"2717:3:75","nodeType":"YulIdentifier","src":"2717:3:75"},{"kind":"number","nativeSrc":"2722:2:75","nodeType":"YulLiteral","src":"2722:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2713:3:75","nodeType":"YulIdentifier","src":"2713:3:75"},"nativeSrc":"2713:12:75","nodeType":"YulFunctionCall","src":"2713:12:75"}],"functionName":{"name":"shr","nativeSrc":"2706:3:75","nodeType":"YulIdentifier","src":"2706:3:75"},"nativeSrc":"2706:20:75","nodeType":"YulFunctionCall","src":"2706:20:75"}],"functionName":{"name":"add","nativeSrc":"2696:3:75","nodeType":"YulIdentifier","src":"2696:3:75"},"nativeSrc":"2696:31:75","nodeType":"YulFunctionCall","src":"2696:31:75"},"variables":[{"name":"_1","nativeSrc":"2690:2:75","nodeType":"YulTypedName","src":"2690:2:75","type":""}]},{"nativeSrc":"2740:24:75","nodeType":"YulVariableDeclaration","src":"2740:24:75","value":{"name":"deleteStart","nativeSrc":"2753:11:75","nodeType":"YulIdentifier","src":"2753:11:75"},"variables":[{"name":"start","nativeSrc":"2744:5:75","nodeType":"YulTypedName","src":"2744:5:75","type":""}]},{"body":{"nativeSrc":"2838:20:75","nodeType":"YulBlock","src":"2838:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"2847:5:75","nodeType":"YulIdentifier","src":"2847:5:75"},{"kind":"number","nativeSrc":"2854:1:75","nodeType":"YulLiteral","src":"2854:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"2840:6:75","nodeType":"YulIdentifier","src":"2840:6:75"},"nativeSrc":"2840:16:75","nodeType":"YulFunctionCall","src":"2840:16:75"},"nativeSrc":"2840:16:75","nodeType":"YulExpressionStatement","src":"2840:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"2788:5:75","nodeType":"YulIdentifier","src":"2788:5:75"},{"name":"_1","nativeSrc":"2795:2:75","nodeType":"YulIdentifier","src":"2795:2:75"}],"functionName":{"name":"lt","nativeSrc":"2785:2:75","nodeType":"YulIdentifier","src":"2785:2:75"},"nativeSrc":"2785:13:75","nodeType":"YulFunctionCall","src":"2785:13:75"},"nativeSrc":"2777:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"2799:26:75","nodeType":"YulBlock","src":"2799:26:75","statements":[{"nativeSrc":"2801:22:75","nodeType":"YulAssignment","src":"2801:22:75","value":{"arguments":[{"name":"start","nativeSrc":"2814:5:75","nodeType":"YulIdentifier","src":"2814:5:75"},{"kind":"number","nativeSrc":"2821:1:75","nodeType":"YulLiteral","src":"2821:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2810:3:75","nodeType":"YulIdentifier","src":"2810:3:75"},"nativeSrc":"2810:13:75","nodeType":"YulFunctionCall","src":"2810:13:75"},"variableNames":[{"name":"start","nativeSrc":"2801:5:75","nodeType":"YulIdentifier","src":"2801:5:75"}]}]},"pre":{"nativeSrc":"2781:3:75","nodeType":"YulBlock","src":"2781:3:75","statements":[]},"src":"2777:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"2453:3:75","nodeType":"YulIdentifier","src":"2453:3:75"},{"kind":"number","nativeSrc":"2458:2:75","nodeType":"YulLiteral","src":"2458:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2450:2:75","nodeType":"YulIdentifier","src":"2450:2:75"},"nativeSrc":"2450:11:75","nodeType":"YulFunctionCall","src":"2450:11:75"},"nativeSrc":"2447:421:75","nodeType":"YulIf","src":"2447:421:75"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"2356:518:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"2409:5:75","nodeType":"YulTypedName","src":"2409:5:75","type":""},{"name":"len","nativeSrc":"2416:3:75","nodeType":"YulTypedName","src":"2416:3:75","type":""},{"name":"startIndex","nativeSrc":"2421:10:75","nodeType":"YulTypedName","src":"2421:10:75","type":""}],"src":"2356:518:75"},{"body":{"nativeSrc":"2964:81:75","nodeType":"YulBlock","src":"2964:81:75","statements":[{"nativeSrc":"2974:65:75","nodeType":"YulAssignment","src":"2974:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"2989:4:75","nodeType":"YulIdentifier","src":"2989:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3007:1:75","nodeType":"YulLiteral","src":"3007:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"3010:3:75","nodeType":"YulIdentifier","src":"3010:3:75"}],"functionName":{"name":"shl","nativeSrc":"3003:3:75","nodeType":"YulIdentifier","src":"3003:3:75"},"nativeSrc":"3003:11:75","nodeType":"YulFunctionCall","src":"3003:11:75"},{"arguments":[{"kind":"number","nativeSrc":"3020:1:75","nodeType":"YulLiteral","src":"3020:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3016:3:75","nodeType":"YulIdentifier","src":"3016:3:75"},"nativeSrc":"3016:6:75","nodeType":"YulFunctionCall","src":"3016:6:75"}],"functionName":{"name":"shr","nativeSrc":"2999:3:75","nodeType":"YulIdentifier","src":"2999:3:75"},"nativeSrc":"2999:24:75","nodeType":"YulFunctionCall","src":"2999:24:75"}],"functionName":{"name":"not","nativeSrc":"2995:3:75","nodeType":"YulIdentifier","src":"2995:3:75"},"nativeSrc":"2995:29:75","nodeType":"YulFunctionCall","src":"2995:29:75"}],"functionName":{"name":"and","nativeSrc":"2985:3:75","nodeType":"YulIdentifier","src":"2985:3:75"},"nativeSrc":"2985:40:75","nodeType":"YulFunctionCall","src":"2985:40:75"},{"arguments":[{"kind":"number","nativeSrc":"3031:1:75","nodeType":"YulLiteral","src":"3031:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"3034:3:75","nodeType":"YulIdentifier","src":"3034:3:75"}],"functionName":{"name":"shl","nativeSrc":"3027:3:75","nodeType":"YulIdentifier","src":"3027:3:75"},"nativeSrc":"3027:11:75","nodeType":"YulFunctionCall","src":"3027:11:75"}],"functionName":{"name":"or","nativeSrc":"2982:2:75","nodeType":"YulIdentifier","src":"2982:2:75"},"nativeSrc":"2982:57:75","nodeType":"YulFunctionCall","src":"2982:57:75"},"variableNames":[{"name":"used","nativeSrc":"2974:4:75","nodeType":"YulIdentifier","src":"2974:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2879:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"2941:4:75","nodeType":"YulTypedName","src":"2941:4:75","type":""},{"name":"len","nativeSrc":"2947:3:75","nodeType":"YulTypedName","src":"2947:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"2955:4:75","nodeType":"YulTypedName","src":"2955:4:75","type":""}],"src":"2879:166:75"},{"body":{"nativeSrc":"3146:1203:75","nodeType":"YulBlock","src":"3146:1203:75","statements":[{"nativeSrc":"3156:24:75","nodeType":"YulVariableDeclaration","src":"3156:24:75","value":{"arguments":[{"name":"src","nativeSrc":"3176:3:75","nodeType":"YulIdentifier","src":"3176:3:75"}],"functionName":{"name":"mload","nativeSrc":"3170:5:75","nodeType":"YulIdentifier","src":"3170:5:75"},"nativeSrc":"3170:10:75","nodeType":"YulFunctionCall","src":"3170:10:75"},"variables":[{"name":"newLen","nativeSrc":"3160:6:75","nodeType":"YulTypedName","src":"3160:6:75","type":""}]},{"body":{"nativeSrc":"3223:22:75","nodeType":"YulBlock","src":"3223:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3225:16:75","nodeType":"YulIdentifier","src":"3225:16:75"},"nativeSrc":"3225:18:75","nodeType":"YulFunctionCall","src":"3225:18:75"},"nativeSrc":"3225:18:75","nodeType":"YulExpressionStatement","src":"3225:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"3195:6:75","nodeType":"YulIdentifier","src":"3195:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3211:2:75","nodeType":"YulLiteral","src":"3211:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"3215:1:75","nodeType":"YulLiteral","src":"3215:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3207:3:75","nodeType":"YulIdentifier","src":"3207:3:75"},"nativeSrc":"3207:10:75","nodeType":"YulFunctionCall","src":"3207:10:75"},{"kind":"number","nativeSrc":"3219:1:75","nodeType":"YulLiteral","src":"3219:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3203:3:75","nodeType":"YulIdentifier","src":"3203:3:75"},"nativeSrc":"3203:18:75","nodeType":"YulFunctionCall","src":"3203:18:75"}],"functionName":{"name":"gt","nativeSrc":"3192:2:75","nodeType":"YulIdentifier","src":"3192:2:75"},"nativeSrc":"3192:30:75","nodeType":"YulFunctionCall","src":"3192:30:75"},"nativeSrc":"3189:56:75","nodeType":"YulIf","src":"3189:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"3298:4:75","nodeType":"YulIdentifier","src":"3298:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3336:4:75","nodeType":"YulIdentifier","src":"3336:4:75"}],"functionName":{"name":"sload","nativeSrc":"3330:5:75","nodeType":"YulIdentifier","src":"3330:5:75"},"nativeSrc":"3330:11:75","nodeType":"YulFunctionCall","src":"3330:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"3304:25:75","nodeType":"YulIdentifier","src":"3304:25:75"},"nativeSrc":"3304:38:75","nodeType":"YulFunctionCall","src":"3304:38:75"},{"name":"newLen","nativeSrc":"3344:6:75","nodeType":"YulIdentifier","src":"3344:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"3254:43:75","nodeType":"YulIdentifier","src":"3254:43:75"},"nativeSrc":"3254:97:75","nodeType":"YulFunctionCall","src":"3254:97:75"},"nativeSrc":"3254:97:75","nodeType":"YulExpressionStatement","src":"3254:97:75"},{"nativeSrc":"3360:18:75","nodeType":"YulVariableDeclaration","src":"3360:18:75","value":{"kind":"number","nativeSrc":"3377:1:75","nodeType":"YulLiteral","src":"3377:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"3364:9:75","nodeType":"YulTypedName","src":"3364:9:75","type":""}]},{"nativeSrc":"3387:17:75","nodeType":"YulAssignment","src":"3387:17:75","value":{"kind":"number","nativeSrc":"3400:4:75","nodeType":"YulLiteral","src":"3400:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"3387:9:75","nodeType":"YulIdentifier","src":"3387:9:75"}]},{"cases":[{"body":{"nativeSrc":"3450:642:75","nodeType":"YulBlock","src":"3450:642:75","statements":[{"nativeSrc":"3464:35:75","nodeType":"YulVariableDeclaration","src":"3464:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"3483:6:75","nodeType":"YulIdentifier","src":"3483:6:75"},{"arguments":[{"kind":"number","nativeSrc":"3495:2:75","nodeType":"YulLiteral","src":"3495:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3491:3:75","nodeType":"YulIdentifier","src":"3491:3:75"},"nativeSrc":"3491:7:75","nodeType":"YulFunctionCall","src":"3491:7:75"}],"functionName":{"name":"and","nativeSrc":"3479:3:75","nodeType":"YulIdentifier","src":"3479:3:75"},"nativeSrc":"3479:20:75","nodeType":"YulFunctionCall","src":"3479:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"3468:7:75","nodeType":"YulTypedName","src":"3468:7:75","type":""}]},{"nativeSrc":"3512:49:75","nodeType":"YulVariableDeclaration","src":"3512:49:75","value":{"arguments":[{"name":"slot","nativeSrc":"3556:4:75","nodeType":"YulIdentifier","src":"3556:4:75"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"3526:29:75","nodeType":"YulIdentifier","src":"3526:29:75"},"nativeSrc":"3526:35:75","nodeType":"YulFunctionCall","src":"3526:35:75"},"variables":[{"name":"dstPtr","nativeSrc":"3516:6:75","nodeType":"YulTypedName","src":"3516:6:75","type":""}]},{"nativeSrc":"3574:10:75","nodeType":"YulVariableDeclaration","src":"3574:10:75","value":{"kind":"number","nativeSrc":"3583:1:75","nodeType":"YulLiteral","src":"3583:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3578:1:75","nodeType":"YulTypedName","src":"3578:1:75","type":""}]},{"body":{"nativeSrc":"3654:165:75","nodeType":"YulBlock","src":"3654:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3679:6:75","nodeType":"YulIdentifier","src":"3679:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3697:3:75","nodeType":"YulIdentifier","src":"3697:3:75"},{"name":"srcOffset","nativeSrc":"3702:9:75","nodeType":"YulIdentifier","src":"3702:9:75"}],"functionName":{"name":"add","nativeSrc":"3693:3:75","nodeType":"YulIdentifier","src":"3693:3:75"},"nativeSrc":"3693:19:75","nodeType":"YulFunctionCall","src":"3693:19:75"}],"functionName":{"name":"mload","nativeSrc":"3687:5:75","nodeType":"YulIdentifier","src":"3687:5:75"},"nativeSrc":"3687:26:75","nodeType":"YulFunctionCall","src":"3687:26:75"}],"functionName":{"name":"sstore","nativeSrc":"3672:6:75","nodeType":"YulIdentifier","src":"3672:6:75"},"nativeSrc":"3672:42:75","nodeType":"YulFunctionCall","src":"3672:42:75"},"nativeSrc":"3672:42:75","nodeType":"YulExpressionStatement","src":"3672:42:75"},{"nativeSrc":"3731:24:75","nodeType":"YulAssignment","src":"3731:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"3745:6:75","nodeType":"YulIdentifier","src":"3745:6:75"},{"kind":"number","nativeSrc":"3753:1:75","nodeType":"YulLiteral","src":"3753:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"3741:3:75","nodeType":"YulIdentifier","src":"3741:3:75"},"nativeSrc":"3741:14:75","nodeType":"YulFunctionCall","src":"3741:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"3731:6:75","nodeType":"YulIdentifier","src":"3731:6:75"}]},{"nativeSrc":"3772:33:75","nodeType":"YulAssignment","src":"3772:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"3789:9:75","nodeType":"YulIdentifier","src":"3789:9:75"},{"kind":"number","nativeSrc":"3800:4:75","nodeType":"YulLiteral","src":"3800:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3785:3:75","nodeType":"YulIdentifier","src":"3785:3:75"},"nativeSrc":"3785:20:75","nodeType":"YulFunctionCall","src":"3785:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"3772:9:75","nodeType":"YulIdentifier","src":"3772:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3608:1:75","nodeType":"YulIdentifier","src":"3608:1:75"},{"name":"loopEnd","nativeSrc":"3611:7:75","nodeType":"YulIdentifier","src":"3611:7:75"}],"functionName":{"name":"lt","nativeSrc":"3605:2:75","nodeType":"YulIdentifier","src":"3605:2:75"},"nativeSrc":"3605:14:75","nodeType":"YulFunctionCall","src":"3605:14:75"},"nativeSrc":"3597:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"3620:21:75","nodeType":"YulBlock","src":"3620:21:75","statements":[{"nativeSrc":"3622:17:75","nodeType":"YulAssignment","src":"3622:17:75","value":{"arguments":[{"name":"i","nativeSrc":"3631:1:75","nodeType":"YulIdentifier","src":"3631:1:75"},{"kind":"number","nativeSrc":"3634:4:75","nodeType":"YulLiteral","src":"3634:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3627:3:75","nodeType":"YulIdentifier","src":"3627:3:75"},"nativeSrc":"3627:12:75","nodeType":"YulFunctionCall","src":"3627:12:75"},"variableNames":[{"name":"i","nativeSrc":"3622:1:75","nodeType":"YulIdentifier","src":"3622:1:75"}]}]},"pre":{"nativeSrc":"3601:3:75","nodeType":"YulBlock","src":"3601:3:75","statements":[]},"src":"3597:222:75"},{"body":{"nativeSrc":"3867:166:75","nodeType":"YulBlock","src":"3867:166:75","statements":[{"nativeSrc":"3885:43:75","nodeType":"YulVariableDeclaration","src":"3885:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3912:3:75","nodeType":"YulIdentifier","src":"3912:3:75"},{"name":"srcOffset","nativeSrc":"3917:9:75","nodeType":"YulIdentifier","src":"3917:9:75"}],"functionName":{"name":"add","nativeSrc":"3908:3:75","nodeType":"YulIdentifier","src":"3908:3:75"},"nativeSrc":"3908:19:75","nodeType":"YulFunctionCall","src":"3908:19:75"}],"functionName":{"name":"mload","nativeSrc":"3902:5:75","nodeType":"YulIdentifier","src":"3902:5:75"},"nativeSrc":"3902:26:75","nodeType":"YulFunctionCall","src":"3902:26:75"},"variables":[{"name":"lastValue","nativeSrc":"3889:9:75","nodeType":"YulTypedName","src":"3889:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"3952:6:75","nodeType":"YulIdentifier","src":"3952:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"3964:9:75","nodeType":"YulIdentifier","src":"3964:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3991:1:75","nodeType":"YulLiteral","src":"3991:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"3994:6:75","nodeType":"YulIdentifier","src":"3994:6:75"}],"functionName":{"name":"shl","nativeSrc":"3987:3:75","nodeType":"YulIdentifier","src":"3987:3:75"},"nativeSrc":"3987:14:75","nodeType":"YulFunctionCall","src":"3987:14:75"},{"kind":"number","nativeSrc":"4003:3:75","nodeType":"YulLiteral","src":"4003:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"3983:3:75","nodeType":"YulIdentifier","src":"3983:3:75"},"nativeSrc":"3983:24:75","nodeType":"YulFunctionCall","src":"3983:24:75"},{"arguments":[{"kind":"number","nativeSrc":"4013:1:75","nodeType":"YulLiteral","src":"4013:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4009:3:75","nodeType":"YulIdentifier","src":"4009:3:75"},"nativeSrc":"4009:6:75","nodeType":"YulFunctionCall","src":"4009:6:75"}],"functionName":{"name":"shr","nativeSrc":"3979:3:75","nodeType":"YulIdentifier","src":"3979:3:75"},"nativeSrc":"3979:37:75","nodeType":"YulFunctionCall","src":"3979:37:75"}],"functionName":{"name":"not","nativeSrc":"3975:3:75","nodeType":"YulIdentifier","src":"3975:3:75"},"nativeSrc":"3975:42:75","nodeType":"YulFunctionCall","src":"3975:42:75"}],"functionName":{"name":"and","nativeSrc":"3960:3:75","nodeType":"YulIdentifier","src":"3960:3:75"},"nativeSrc":"3960:58:75","nodeType":"YulFunctionCall","src":"3960:58:75"}],"functionName":{"name":"sstore","nativeSrc":"3945:6:75","nodeType":"YulIdentifier","src":"3945:6:75"},"nativeSrc":"3945:74:75","nodeType":"YulFunctionCall","src":"3945:74:75"},"nativeSrc":"3945:74:75","nodeType":"YulExpressionStatement","src":"3945:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"3838:7:75","nodeType":"YulIdentifier","src":"3838:7:75"},{"name":"newLen","nativeSrc":"3847:6:75","nodeType":"YulIdentifier","src":"3847:6:75"}],"functionName":{"name":"lt","nativeSrc":"3835:2:75","nodeType":"YulIdentifier","src":"3835:2:75"},"nativeSrc":"3835:19:75","nodeType":"YulFunctionCall","src":"3835:19:75"},"nativeSrc":"3832:201:75","nodeType":"YulIf","src":"3832:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4053:4:75","nodeType":"YulIdentifier","src":"4053:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4067:1:75","nodeType":"YulLiteral","src":"4067:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"4070:6:75","nodeType":"YulIdentifier","src":"4070:6:75"}],"functionName":{"name":"shl","nativeSrc":"4063:3:75","nodeType":"YulIdentifier","src":"4063:3:75"},"nativeSrc":"4063:14:75","nodeType":"YulFunctionCall","src":"4063:14:75"},{"kind":"number","nativeSrc":"4079:1:75","nodeType":"YulLiteral","src":"4079:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4059:3:75","nodeType":"YulIdentifier","src":"4059:3:75"},"nativeSrc":"4059:22:75","nodeType":"YulFunctionCall","src":"4059:22:75"}],"functionName":{"name":"sstore","nativeSrc":"4046:6:75","nodeType":"YulIdentifier","src":"4046:6:75"},"nativeSrc":"4046:36:75","nodeType":"YulFunctionCall","src":"4046:36:75"},"nativeSrc":"4046:36:75","nodeType":"YulExpressionStatement","src":"4046:36:75"}]},"nativeSrc":"3443:649:75","nodeType":"YulCase","src":"3443:649:75","value":{"kind":"number","nativeSrc":"3448:1:75","nodeType":"YulLiteral","src":"3448:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"4109:234:75","nodeType":"YulBlock","src":"4109:234:75","statements":[{"nativeSrc":"4123:14:75","nodeType":"YulVariableDeclaration","src":"4123:14:75","value":{"kind":"number","nativeSrc":"4136:1:75","nodeType":"YulLiteral","src":"4136:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4127:5:75","nodeType":"YulTypedName","src":"4127:5:75","type":""}]},{"body":{"nativeSrc":"4172:67:75","nodeType":"YulBlock","src":"4172:67:75","statements":[{"nativeSrc":"4190:35:75","nodeType":"YulAssignment","src":"4190:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4209:3:75","nodeType":"YulIdentifier","src":"4209:3:75"},{"name":"srcOffset","nativeSrc":"4214:9:75","nodeType":"YulIdentifier","src":"4214:9:75"}],"functionName":{"name":"add","nativeSrc":"4205:3:75","nodeType":"YulIdentifier","src":"4205:3:75"},"nativeSrc":"4205:19:75","nodeType":"YulFunctionCall","src":"4205:19:75"}],"functionName":{"name":"mload","nativeSrc":"4199:5:75","nodeType":"YulIdentifier","src":"4199:5:75"},"nativeSrc":"4199:26:75","nodeType":"YulFunctionCall","src":"4199:26:75"},"variableNames":[{"name":"value","nativeSrc":"4190:5:75","nodeType":"YulIdentifier","src":"4190:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"4153:6:75","nodeType":"YulIdentifier","src":"4153:6:75"},"nativeSrc":"4150:89:75","nodeType":"YulIf","src":"4150:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"4259:4:75","nodeType":"YulIdentifier","src":"4259:4:75"},{"arguments":[{"name":"value","nativeSrc":"4318:5:75","nodeType":"YulIdentifier","src":"4318:5:75"},{"name":"newLen","nativeSrc":"4325:6:75","nodeType":"YulIdentifier","src":"4325:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4265:52:75","nodeType":"YulIdentifier","src":"4265:52:75"},"nativeSrc":"4265:67:75","nodeType":"YulFunctionCall","src":"4265:67:75"}],"functionName":{"name":"sstore","nativeSrc":"4252:6:75","nodeType":"YulIdentifier","src":"4252:6:75"},"nativeSrc":"4252:81:75","nodeType":"YulFunctionCall","src":"4252:81:75"},"nativeSrc":"4252:81:75","nodeType":"YulExpressionStatement","src":"4252:81:75"}]},"nativeSrc":"4101:242:75","nodeType":"YulCase","src":"4101:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"3423:6:75","nodeType":"YulIdentifier","src":"3423:6:75"},{"kind":"number","nativeSrc":"3431:2:75","nodeType":"YulLiteral","src":"3431:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"3420:2:75","nodeType":"YulIdentifier","src":"3420:2:75"},"nativeSrc":"3420:14:75","nodeType":"YulFunctionCall","src":"3420:14:75"},"nativeSrc":"3413:930:75","nodeType":"YulSwitch","src":"3413:930:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"3050:1299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"3131:4:75","nodeType":"YulTypedName","src":"3131:4:75","type":""},{"name":"src","nativeSrc":"3137:3:75","nodeType":"YulTypedName","src":"3137:3:75","type":""}],"src":"3050:1299:75"},{"body":{"nativeSrc":"4455:102:75","nodeType":"YulBlock","src":"4455:102:75","statements":[{"nativeSrc":"4465:26:75","nodeType":"YulAssignment","src":"4465:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4477:9:75","nodeType":"YulIdentifier","src":"4477:9:75"},{"kind":"number","nativeSrc":"4488:2:75","nodeType":"YulLiteral","src":"4488:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4473:3:75","nodeType":"YulIdentifier","src":"4473:3:75"},"nativeSrc":"4473:18:75","nodeType":"YulFunctionCall","src":"4473:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4465:4:75","nodeType":"YulIdentifier","src":"4465:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4507:9:75","nodeType":"YulIdentifier","src":"4507:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4522:6:75","nodeType":"YulIdentifier","src":"4522:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4538:3:75","nodeType":"YulLiteral","src":"4538:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4543:1:75","nodeType":"YulLiteral","src":"4543:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4534:3:75","nodeType":"YulIdentifier","src":"4534:3:75"},"nativeSrc":"4534:11:75","nodeType":"YulFunctionCall","src":"4534:11:75"},{"kind":"number","nativeSrc":"4547:1:75","nodeType":"YulLiteral","src":"4547:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4530:3:75","nodeType":"YulIdentifier","src":"4530:3:75"},"nativeSrc":"4530:19:75","nodeType":"YulFunctionCall","src":"4530:19:75"}],"functionName":{"name":"and","nativeSrc":"4518:3:75","nodeType":"YulIdentifier","src":"4518:3:75"},"nativeSrc":"4518:32:75","nodeType":"YulFunctionCall","src":"4518:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4500:6:75","nodeType":"YulIdentifier","src":"4500:6:75"},"nativeSrc":"4500:51:75","nodeType":"YulFunctionCall","src":"4500:51:75"},"nativeSrc":"4500:51:75","nodeType":"YulExpressionStatement","src":"4500:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4354:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4424:9:75","nodeType":"YulTypedName","src":"4424:9:75","type":""},{"name":"value0","nativeSrc":"4435:6:75","nodeType":"YulTypedName","src":"4435:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4446:4:75","nodeType":"YulTypedName","src":"4446:4:75","type":""}],"src":"4354:203:75"},{"body":{"nativeSrc":"4610:174:75","nodeType":"YulBlock","src":"4610:174:75","statements":[{"nativeSrc":"4620:16:75","nodeType":"YulAssignment","src":"4620:16:75","value":{"arguments":[{"name":"x","nativeSrc":"4631:1:75","nodeType":"YulIdentifier","src":"4631:1:75"},{"name":"y","nativeSrc":"4634:1:75","nodeType":"YulIdentifier","src":"4634:1:75"}],"functionName":{"name":"add","nativeSrc":"4627:3:75","nodeType":"YulIdentifier","src":"4627:3:75"},"nativeSrc":"4627:9:75","nodeType":"YulFunctionCall","src":"4627:9:75"},"variableNames":[{"name":"sum","nativeSrc":"4620:3:75","nodeType":"YulIdentifier","src":"4620:3:75"}]},{"body":{"nativeSrc":"4667:111:75","nodeType":"YulBlock","src":"4667:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4688:1:75","nodeType":"YulLiteral","src":"4688:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4695:3:75","nodeType":"YulLiteral","src":"4695:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4700:10:75","nodeType":"YulLiteral","src":"4700:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4691:3:75","nodeType":"YulIdentifier","src":"4691:3:75"},"nativeSrc":"4691:20:75","nodeType":"YulFunctionCall","src":"4691:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4681:6:75","nodeType":"YulIdentifier","src":"4681:6:75"},"nativeSrc":"4681:31:75","nodeType":"YulFunctionCall","src":"4681:31:75"},"nativeSrc":"4681:31:75","nodeType":"YulExpressionStatement","src":"4681:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4732:1:75","nodeType":"YulLiteral","src":"4732:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4735:4:75","nodeType":"YulLiteral","src":"4735:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4725:6:75","nodeType":"YulIdentifier","src":"4725:6:75"},"nativeSrc":"4725:15:75","nodeType":"YulFunctionCall","src":"4725:15:75"},"nativeSrc":"4725:15:75","nodeType":"YulExpressionStatement","src":"4725:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4760:1:75","nodeType":"YulLiteral","src":"4760:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4763:4:75","nodeType":"YulLiteral","src":"4763:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4753:6:75","nodeType":"YulIdentifier","src":"4753:6:75"},"nativeSrc":"4753:15:75","nodeType":"YulFunctionCall","src":"4753:15:75"},"nativeSrc":"4753:15:75","nodeType":"YulExpressionStatement","src":"4753:15:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"4651:1:75","nodeType":"YulIdentifier","src":"4651:1:75"},{"name":"sum","nativeSrc":"4654:3:75","nodeType":"YulIdentifier","src":"4654:3:75"}],"functionName":{"name":"gt","nativeSrc":"4648:2:75","nodeType":"YulIdentifier","src":"4648:2:75"},"nativeSrc":"4648:10:75","nodeType":"YulFunctionCall","src":"4648:10:75"},"nativeSrc":"4645:133:75","nodeType":"YulIf","src":"4645:133:75"}]},"name":"checked_add_t_uint256","nativeSrc":"4562:222:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4593:1:75","nodeType":"YulTypedName","src":"4593:1:75","type":""},{"name":"y","nativeSrc":"4596:1:75","nodeType":"YulTypedName","src":"4596:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"4602:3:75","nodeType":"YulTypedName","src":"4602:3:75","type":""}],"src":"4562:222:75"},{"body":{"nativeSrc":"4946:188:75","nodeType":"YulBlock","src":"4946:188:75","statements":[{"nativeSrc":"4956:26:75","nodeType":"YulAssignment","src":"4956:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4968:9:75","nodeType":"YulIdentifier","src":"4968:9:75"},{"kind":"number","nativeSrc":"4979:2:75","nodeType":"YulLiteral","src":"4979:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4964:3:75","nodeType":"YulIdentifier","src":"4964:3:75"},"nativeSrc":"4964:18:75","nodeType":"YulFunctionCall","src":"4964:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4956:4:75","nodeType":"YulIdentifier","src":"4956:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4998:9:75","nodeType":"YulIdentifier","src":"4998:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5013:6:75","nodeType":"YulIdentifier","src":"5013:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5029:3:75","nodeType":"YulLiteral","src":"5029:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5034:1:75","nodeType":"YulLiteral","src":"5034:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5025:3:75","nodeType":"YulIdentifier","src":"5025:3:75"},"nativeSrc":"5025:11:75","nodeType":"YulFunctionCall","src":"5025:11:75"},{"kind":"number","nativeSrc":"5038:1:75","nodeType":"YulLiteral","src":"5038:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5021:3:75","nodeType":"YulIdentifier","src":"5021:3:75"},"nativeSrc":"5021:19:75","nodeType":"YulFunctionCall","src":"5021:19:75"}],"functionName":{"name":"and","nativeSrc":"5009:3:75","nodeType":"YulIdentifier","src":"5009:3:75"},"nativeSrc":"5009:32:75","nodeType":"YulFunctionCall","src":"5009:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4991:6:75","nodeType":"YulIdentifier","src":"4991:6:75"},"nativeSrc":"4991:51:75","nodeType":"YulFunctionCall","src":"4991:51:75"},"nativeSrc":"4991:51:75","nodeType":"YulExpressionStatement","src":"4991:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5062:9:75","nodeType":"YulIdentifier","src":"5062:9:75"},{"kind":"number","nativeSrc":"5073:2:75","nodeType":"YulLiteral","src":"5073:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5058:3:75","nodeType":"YulIdentifier","src":"5058:3:75"},"nativeSrc":"5058:18:75","nodeType":"YulFunctionCall","src":"5058:18:75"},{"name":"value1","nativeSrc":"5078:6:75","nodeType":"YulIdentifier","src":"5078:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5051:6:75","nodeType":"YulIdentifier","src":"5051:6:75"},"nativeSrc":"5051:34:75","nodeType":"YulFunctionCall","src":"5051:34:75"},"nativeSrc":"5051:34:75","nodeType":"YulExpressionStatement","src":"5051:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5105:9:75","nodeType":"YulIdentifier","src":"5105:9:75"},{"kind":"number","nativeSrc":"5116:2:75","nodeType":"YulLiteral","src":"5116:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5101:3:75","nodeType":"YulIdentifier","src":"5101:3:75"},"nativeSrc":"5101:18:75","nodeType":"YulFunctionCall","src":"5101:18:75"},{"name":"value2","nativeSrc":"5121:6:75","nodeType":"YulIdentifier","src":"5121:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5094:6:75","nodeType":"YulIdentifier","src":"5094:6:75"},"nativeSrc":"5094:34:75","nodeType":"YulFunctionCall","src":"5094:34:75"},"nativeSrc":"5094:34:75","nodeType":"YulExpressionStatement","src":"5094:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"4789:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4899:9:75","nodeType":"YulTypedName","src":"4899:9:75","type":""},{"name":"value2","nativeSrc":"4910:6:75","nodeType":"YulTypedName","src":"4910:6:75","type":""},{"name":"value1","nativeSrc":"4918:6:75","nodeType":"YulTypedName","src":"4918:6:75","type":""},{"name":"value0","nativeSrc":"4926:6:75","nodeType":"YulTypedName","src":"4926:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4937:4:75","nodeType":"YulTypedName","src":"4937:4:75","type":""}],"src":"4789:345:75"},{"body":{"nativeSrc":"5240:76:75","nodeType":"YulBlock","src":"5240:76:75","statements":[{"nativeSrc":"5250:26:75","nodeType":"YulAssignment","src":"5250:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5262:9:75","nodeType":"YulIdentifier","src":"5262:9:75"},{"kind":"number","nativeSrc":"5273:2:75","nodeType":"YulLiteral","src":"5273:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5258:3:75","nodeType":"YulIdentifier","src":"5258:3:75"},"nativeSrc":"5258:18:75","nodeType":"YulFunctionCall","src":"5258:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5250:4:75","nodeType":"YulIdentifier","src":"5250:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5292:9:75","nodeType":"YulIdentifier","src":"5292:9:75"},{"name":"value0","nativeSrc":"5303:6:75","nodeType":"YulIdentifier","src":"5303:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5285:6:75","nodeType":"YulIdentifier","src":"5285:6:75"},"nativeSrc":"5285:25:75","nodeType":"YulFunctionCall","src":"5285:25:75"},"nativeSrc":"5285:25:75","nodeType":"YulExpressionStatement","src":"5285:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"5139:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5209:9:75","nodeType":"YulTypedName","src":"5209:9:75","type":""},{"name":"value0","nativeSrc":"5220:6:75","nodeType":"YulTypedName","src":"5220:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5231:4:75","nodeType":"YulTypedName","src":"5231:4:75","type":""}],"src":"5139:177:75"}]},"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_uint8t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { 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        let value_1 := 0\n        value_1 := mload(add(headStart, 128))\n        if iszero(eq(value_1, and(value_1, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value4 := 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    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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561000f575f5ffd5b5060405161111d38038061111d83398101604081905261002e9161031f565b8484600361003c8382610448565b5060046100498282610448565b50505060ff821660805261005d3384610072565b6100675f826100af565b505050505050610521565b6001600160a01b0382166100a05760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100ab5f838361015c565b5050565b5f8281526005602090815260408083206001600160a01b038516845290915281205460ff16610153575f8381526005602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561010b3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610156565b505f5b92915050565b6001600160a01b038316610186578060025f82825461017b9190610502565b909155506101f69050565b6001600160a01b0383165f90815260208190526040902054818110156101d85760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610097565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661021257600280548290039055610230565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161027591815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126102a5575f5ffd5b81516001600160401b038111156102be576102be610282565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102ec576102ec610282565b604052818152838201602001851015610303575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f5f60a08688031215610333575f5ffd5b85516001600160401b03811115610348575f5ffd5b61035488828901610296565b602088015190965090506001600160401b03811115610371575f5ffd5b61037d88828901610296565b94505060408601519250606086015160ff8116811461039a575f5ffd5b60808701519092506001600160a01b03811681146103b6575f5ffd5b809150509295509295909350565b600181811c908216806103d857607f821691505b6020821081036103f657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561044357805f5260205f20601f840160051c810160208510156104215750805b601f840160051c820191505b81811015610440575f815560010161042d565b50505b505050565b81516001600160401b0381111561046157610461610282565b6104758161046f84546103c4565b846103fc565b6020601f8211600181146104a7575f83156104905750848201515b5f19600385901b1c1916600184901b178455610440565b5f84815260208120601f198516915b828110156104d657878501518255602094850194600190920191016104b6565b50848210156104f357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561015657634e487b7160e01b5f52601160045260245ffd5b608051610be46105395f395f6102050152610be45ff3fe608060405234801561000f575f5ffd5b5060043610610127575f3560e01c806340c10f19116100a9578063a217fddf1161006e578063a217fddf146102ab578063a9059cbb146102b2578063d5391393146102c5578063d547741f146102ec578063dd62ed3e146102ff575f5ffd5b806340c10f191461024257806370a082311461025557806391d148541461027d57806395d89b41146102905780639dc29fac14610298575f5ffd5b8063248a9ca3116100ef578063248a9ca3146101a0578063282c51f3146101c25780632f2ff15d146101e9578063313ce567146101fe57806336568abe1461022f575f5ffd5b806301ffc9a71461012b57806306fdde0314610153578063095ea7b31461016857806318160ddd1461017b57806323b872dd1461018d575b5f5ffd5b61013e6101393660046109f5565b610337565b60405190151581526020015b60405180910390f35b61015b61036d565b60405161014a9190610a23565b61013e610176366004610a73565b6103fd565b6002545b60405190815260200161014a565b61013e61019b366004610a9b565b610414565b61017f6101ae366004610ad5565b5f9081526005602052604090206001015490565b61017f7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6101fc6101f7366004610aec565b610437565b005b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014a565b6101fc61023d366004610aec565b610461565b6101fc610250366004610a73565b610499565b61017f610263366004610b16565b6001600160a01b03165f9081526020819052604090205490565b61013e61028b366004610aec565b6104cd565b61015b6104f7565b6101fc6102a6366004610a73565b610506565b61017f5f81565b61013e6102c0366004610a73565b61053a565b61017f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101fc6102fa366004610aec565b610547565b61017f61030d366004610b2f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f6001600160e01b03198216637965db0b60e01b148061036757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461037c90610b57565b80601f01602080910402602001604051908101604052809291908181526020018280546103a890610b57565b80156103f35780601f106103ca576101008083540402835291602001916103f3565b820191905f5260205f20905b8154815290600101906020018083116103d657829003601f168201915b5050505050905090565b5f3361040a81858561056b565b5060019392505050565b5f33610421858285610578565b61042c8585856105f2565b506001949350505050565b5f828152600560205260409020600101546104518161064f565b61045b838361065c565b50505050565b6001600160a01b038116331461048a5760405163334bd91960e11b815260040160405180910390fd5b61049482826106ed565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66104c38161064f565b6104948383610758565b5f9182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461037c90610b57565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486105308161064f565b6104948383610790565b5f3361040a8185856105f2565b5f828152600560205260409020600101546105618161064f565b61045b83836106ed565b61049483838360016107c4565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461045b57818110156105e457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61045b84848484035f6107c4565b6001600160a01b03831661061b57604051634b637e8f60e11b81525f60048201526024016105db565b6001600160a01b0382166106445760405163ec442f0560e01b81525f60048201526024016105db565b610494838383610896565b61065981336109bc565b50565b5f61066783836104cd565b6106e6575f8381526005602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561069e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610367565b505f610367565b5f6106f883836104cd565b156106e6575f8381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610367565b6001600160a01b0382166107815760405163ec442f0560e01b81525f60048201526024016105db565b61078c5f8383610896565b5050565b6001600160a01b0382166107b957604051634b637e8f60e11b81525f60048201526024016105db565b61078c825f83610896565b6001600160a01b0384166107ed5760405163e602df0560e01b81525f60048201526024016105db565b6001600160a01b03831661081657604051634a1406b160e11b81525f60048201526024016105db565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561045b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088891815260200190565b60405180910390a350505050565b6001600160a01b0383166108c0578060025f8282546108b59190610b8f565b909155506109309050565b6001600160a01b0383165f90815260208190526040902054818110156109125760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105db565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661094c5760028054829003905561096a565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109af91815260200190565b60405180910390a3505050565b6109c682826104cd565b61078c5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016105db565b5f60208284031215610a05575f5ffd5b81356001600160e01b031981168114610a1c575f5ffd5b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610a6e575f5ffd5b919050565b5f5f60408385031215610a84575f5ffd5b610a8d83610a58565b946020939093013593505050565b5f5f5f60608486031215610aad575f5ffd5b610ab684610a58565b9250610ac460208501610a58565b929592945050506040919091013590565b5f60208284031215610ae5575f5ffd5b5035919050565b5f5f60408385031215610afd575f5ffd5b82359150610b0d60208401610a58565b90509250929050565b5f60208284031215610b26575f5ffd5b610a1c82610a58565b5f5f60408385031215610b40575f5ffd5b610b4983610a58565b9150610b0d60208401610a58565b600181811c90821680610b6b57607f821691505b602082108103610b8957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561036757634e487b7160e01b5f52601160045260245ffdfea26469706673582212201dd660bcb98f8ad3bf2beaec867f7d443ca2fd449e180af82d679e0e8ae68b4464736f6c634300081c0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x111D CODESIZE SUB DUP1 PUSH2 0x111D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2E SWAP2 PUSH2 0x31F JUMP JUMPDEST DUP5 DUP5 PUSH1 0x3 PUSH2 0x3C DUP4 DUP3 PUSH2 0x448 JUMP JUMPDEST POP PUSH1 0x4 PUSH2 0x49 DUP3 DUP3 PUSH2 0x448 JUMP JUMPDEST POP POP POP PUSH1 0xFF DUP3 AND PUSH1 0x80 MSTORE PUSH2 0x5D CALLER DUP5 PUSH2 0x72 JUMP JUMPDEST PUSH2 0x67 PUSH0 DUP3 PUSH2 0xAF JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x521 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA0 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 0xAB PUSH0 DUP4 DUP4 PUSH2 0x15C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x5 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 SLOAD PUSH1 0xFF AND PUSH2 0x153 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x5 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 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x10B CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x156 JUMP JUMPDEST POP PUSH0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x186 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x17B SWAP2 SWAP1 PUSH2 0x502 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1F6 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 0x1D8 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 0x97 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 0x212 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x230 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 0x275 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 0x2A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BE JUMPI PUSH2 0x2BE PUSH2 0x282 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 0x2EC JUMPI PUSH2 0x2EC PUSH2 0x282 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x303 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 PUSH0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x333 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x348 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x354 DUP9 DUP3 DUP10 ADD PUSH2 0x296 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 SWAP7 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x371 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x37D DUP9 DUP3 DUP10 ADD PUSH2 0x296 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD MLOAD SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x39A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x80 DUP8 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x3D8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x3F6 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 0x443 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x421 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x440 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x42D JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x461 JUMPI PUSH2 0x461 PUSH2 0x282 JUMP JUMPDEST PUSH2 0x475 DUP2 PUSH2 0x46F DUP5 SLOAD PUSH2 0x3C4 JUMP JUMPDEST DUP5 PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4A7 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x490 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 0x440 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D6 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x4B6 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4F3 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 0x156 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH2 0xBE4 PUSH2 0x539 PUSH0 CODECOPY PUSH0 PUSH2 0x205 ADD MSTORE PUSH2 0xBE4 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x127 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA9 JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x298 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0xEF JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x282C51F3 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x22F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x18D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x176 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST PUSH2 0x13E PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0xA9B JUMP JUMPDEST PUSH2 0x414 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x1AE CALLDATASIZE PUSH1 0x4 PUSH2 0xAD5 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x17F PUSH32 0x3C11D16CBAFFD01DF69CE1C404F6340EE057498F5F00246190EA54220576A848 DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x437 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x461 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0xB16 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 0x13E PUSH2 0x28B CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x15B PUSH2 0x4F7 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x2A6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x506 JUMP JUMPDEST PUSH2 0x17F PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x2C0 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x53A JUMP JUMPDEST PUSH2 0x17F PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x547 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x30D CALLDATASIZE PUSH1 0x4 PUSH2 0xB2F 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 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x367 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x37C SWAP1 PUSH2 0xB57 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 0x3A8 SWAP1 PUSH2 0xB57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3CA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3F3 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 0x3D6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x40A DUP2 DUP6 DUP6 PUSH2 0x56B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x421 DUP6 DUP3 DUP6 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x42C DUP6 DUP6 DUP6 PUSH2 0x5F2 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x451 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x45B DUP4 DUP4 PUSH2 0x65C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x494 DUP3 DUP3 PUSH2 0x6ED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x4C3 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x758 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x37C SWAP1 PUSH2 0xB57 JUMP JUMPDEST PUSH32 0x3C11D16CBAFFD01DF69CE1C404F6340EE057498F5F00246190EA54220576A848 PUSH2 0x530 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x790 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x40A DUP2 DUP6 DUP6 PUSH2 0x5F2 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x561 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x45B DUP4 DUP4 PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x7C4 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 EQ PUSH2 0x45B JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x5E4 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 0x45B DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x61B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x644 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x896 JUMP JUMPDEST PUSH2 0x659 DUP2 CALLER PUSH2 0x9BC JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x667 DUP4 DUP4 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x6E6 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x5 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 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x69E CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x367 JUMP JUMPDEST POP PUSH0 PUSH2 0x367 JUMP JUMPDEST PUSH0 PUSH2 0x6F8 DUP4 DUP4 PUSH2 0x4CD JUMP JUMPDEST ISZERO PUSH2 0x6E6 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x781 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x78C PUSH0 DUP4 DUP4 PUSH2 0x896 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x78C DUP3 PUSH0 DUP4 PUSH2 0x896 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB 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 0x45B 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 0x888 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 0x8C0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x8B5 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x930 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 0x912 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 0x5DB 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 0x94C JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x96A 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 0x9AF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9C6 DUP3 DUP3 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x78C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA05 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 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 0xA6E JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA84 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA8D DUP4 PUSH2 0xA58 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 0xAAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAB6 DUP5 PUSH2 0xA58 JUMP JUMPDEST SWAP3 POP PUSH2 0xAC4 PUSH1 0x20 DUP6 ADD PUSH2 0xA58 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 0xAE5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xB0D PUSH1 0x20 DUP5 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA1C DUP3 PUSH2 0xA58 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB49 DUP4 PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP PUSH2 0xB0D PUSH1 0x20 DUP5 ADD PUSH2 0xA58 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB6B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB89 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 0x367 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xD6 PUSH1 0xBC 0xB9 DUP16 DUP11 0xD3 0xBF 0x2B 0xEA 0xEC DUP7 PUSH32 0x7D443CA2FD449E180AF82D679E0E8AE68B4464736F6C634300081C0033000000 ","sourceMap":"213:964:5:-:0;;;435:270;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;576:5;583:7;1667:5:30;:13;576:5:5;1667::30;:13;:::i;:::-;-1:-1:-1;1690:7:30;:17;1700:7;1690;:17;:::i;:::-;-1:-1:-1;;;598:21:5::1;::::0;::::1;;::::0;625:32:::1;631:10;643:13:::0;625:5:::1;:32::i;:::-;663:37;2232:4:13;694:5:5::0;663:10:::1;:37::i;:::-;;435:270:::0;;;;;213:964;;7458:208:30;-1:-1:-1;;;;;7528:21:30;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:30;;7601:1;7572:32;;;4500:51:75;4473:18;;7572:32:30;;;;;;;;7524:91;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;:::-;7458:208;;:::o;6179:316:13:-;6256:4;2954:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2954:29:13;;;;;;;;;;;;6272:217;;6315:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6315:29:13;;;;;;;;;:36;;-1:-1:-1;;6315:36:13;6347:4;6315:36;;;6397:12;735:10:35;;656:96;6397:12:13;-1:-1:-1;;;;;6370:40:13;6388:7;-1:-1:-1;;;;;6370:40:13;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:13;6424:11;;6272:217;-1:-1:-1;6473:5:13;6272:217;6179:316;;;;:::o;6008:1107:30:-;-1:-1:-1;;;;;6097:18:30;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:30;;-1:-1:-1;6093:540:30;;-1:-1:-1;;;;;6307:15:30;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:30;;-1:-1:-1;;;;;5009:32:75;;6386:50:30;;;4991:51:75;5058:18;;;5051:34;;;5101:18;;;5094:34;;;4964:18;;6386:50:30;4789:345:75;6336:115:30;-1:-1:-1;;;;;6571:15:30;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:30;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:30;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:30;7092:4;-1:-1:-1;;;;;7083:25:30;;7102:5;7083:25;;;;5285::75;;5273:2;5258:18;;5139:177;7083:25:30;;;;;;;;6008:1107;;;:::o;14:127:75:-;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:75;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:75;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:75;;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:75;;;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:75:o;874:966::-;998:6;1006;1014;1022;1030;1083:3;1071:9;1062:7;1058:23;1054:33;1051:53;;;1100:1;1097;1090:12;1051:53;1127:16;;-1:-1:-1;;;;;1155:30:75;;1152:50;;;1198:1;1195;1188:12;1152:50;1221:61;1274:7;1265:6;1254:9;1250:22;1221:61;:::i;:::-;1328:2;1313:18;;1307:25;1211:71;;-1:-1:-1;1307:25:75;-1:-1:-1;;;;;;1344:32:75;;1341:52;;;1389:1;1386;1379:12;1341:52;1412:63;1467:7;1456:8;1445:9;1441:24;1412:63;:::i;:::-;1402:73;;;1515:2;1504:9;1500:18;1494:25;1484:35;;1562:2;1551:9;1547:18;1541:25;1606:4;1599:5;1595:16;1588:5;1585:27;1575:55;;1626:1;1623;1616:12;1575:55;1720:3;1705:19;;1699:26;1649:5;;-1:-1:-1;;;;;;1756:33:75;;1744:46;;1734:74;;1804:1;1801;1794:12;1734:74;1827:7;1817:17;;;874:966;;;;;;;;:::o;1845:380::-;1924:1;1920:12;;;;1967;;;1988:61;;2042:4;2034:6;2030:17;2020:27;;1988:61;2095:2;2087:6;2084:14;2064:18;2061:38;2058:161;;2141:10;2136:3;2132:20;2129:1;2122:31;2176:4;2173:1;2166:15;2204:4;2201:1;2194:15;2058:161;;1845:380;;;:::o;2356:518::-;2458:2;2453:3;2450:11;2447:421;;;2494:5;2491:1;2484:16;2538:4;2535:1;2525:18;2608:2;2596:10;2592:19;2589:1;2585:27;2579:4;2575:38;2644:4;2632:10;2629:20;2626:47;;;-1:-1:-1;2667:4:75;2626:47;2722:2;2717:3;2713:12;2710:1;2706:20;2700:4;2696:31;2686:41;;2777:81;2795:2;2788:5;2785:13;2777:81;;;2854:1;2840:16;;2821:1;2810:13;2777:81;;;2781:3;;2447:421;2356:518;;;:::o;3050:1299::-;3170:10;;-1:-1:-1;;;;;3192:30:75;;3189:56;;;3225:18;;:::i;:::-;3254:97;3344:6;3304:38;3336:4;3330:11;3304:38;:::i;:::-;3298:4;3254:97;:::i;:::-;3400:4;3431:2;3420:14;;3448:1;3443:649;;;;4136:1;4153:6;4150:89;;;-1:-1:-1;4205:19:75;;;4199:26;4150:89;-1:-1:-1;;3007:1:75;3003:11;;;2999:24;2995:29;2985:40;3031:1;3027:11;;;2982:57;4252:81;;3413:930;;3443:649;2303:1;2296:14;;;2340:4;2327:18;;-1:-1:-1;;3479:20:75;;;3597:222;3611:7;3608:1;3605:14;3597:222;;;3693:19;;;3687:26;3672:42;;3800:4;3785:20;;;;3753:1;3741:14;;;;3627:12;3597:222;;;3601:3;3847:6;3838:7;3835:19;3832:201;;;3908:19;;;3902:26;-1:-1:-1;;3991:1:75;3987:14;;;4003:3;3983:24;3979:37;3975:42;3960:58;3945:74;;3832:201;-1:-1:-1;;;;4079:1:75;4063:14;;;4059:22;4046:36;;-1:-1:-1;3050:1299:75:o;4562:222::-;4627:9;;;4648:10;;;4645:133;;;4700:10;4695:3;4691:20;4688:1;4681:31;4735:4;4732:1;4725:15;4763:4;4760:1;4753:15;5139:177;213:964:5;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@BURNER_ROLE_2170":{"entryPoint":null,"id":2170,"parameterSlots":0,"returnSlots":0},"@DEFAULT_ADMIN_ROLE_4543":{"entryPoint":null,"id":4543,"parameterSlots":0,"returnSlots":0},"@MINTER_ROLE_2165":{"entryPoint":null,"id":2165,"parameterSlots":0,"returnSlots":0},"@_approve_8469":{"entryPoint":1387,"id":8469,"parameterSlots":3,"returnSlots":0},"@_approve_8529":{"entryPoint":1988,"id":8529,"parameterSlots":4,"returnSlots":0},"@_burn_8451":{"entryPoint":1936,"id":8451,"parameterSlots":2,"returnSlots":0},"@_checkRole_4607":{"entryPoint":1615,"id":4607,"parameterSlots":1,"returnSlots":0},"@_checkRole_4628":{"entryPoint":2492,"id":4628,"parameterSlots":2,"returnSlots":0},"@_grantRole_4770":{"entryPoint":1628,"id":4770,"parameterSlots":2,"returnSlots":1},"@_mint_8418":{"entryPoint":1880,"id":8418,"parameterSlots":2,"returnSlots":0},"@_msgSender_9364":{"entryPoint":null,"id":9364,"parameterSlots":0,"returnSlots":1},"@_revokeRole_4808":{"entryPoint":1773,"id":4808,"parameterSlots":2,"returnSlots":1},"@_spendAllowance_8577":{"entryPoint":1400,"id":8577,"parameterSlots":3,"returnSlots":0},"@_transfer_8308":{"entryPoint":1522,"id":8308,"parameterSlots":3,"returnSlots":0},"@_update_8385":{"entryPoint":2198,"id":8385,"parameterSlots":3,"returnSlots":0},"@allowance_8205":{"entryPoint":null,"id":8205,"parameterSlots":2,"returnSlots":1},"@approve_8229":{"entryPoint":1021,"id":8229,"parameterSlots":2,"returnSlots":1},"@balanceOf_8164":{"entryPoint":null,"id":8164,"parameterSlots":1,"returnSlots":1},"@burn_2246":{"entryPoint":1286,"id":2246,"parameterSlots":2,"returnSlots":0},"@decimals_2214":{"entryPoint":null,"id":2214,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_4642":{"entryPoint":null,"id":4642,"parameterSlots":1,"returnSlots":1},"@grantRole_4661":{"entryPoint":1079,"id":4661,"parameterSlots":2,"returnSlots":0},"@hasRole_4594":{"entryPoint":1229,"id":4594,"parameterSlots":2,"returnSlots":1},"@mint_2230":{"entryPoint":1177,"id":2230,"parameterSlots":2,"returnSlots":0},"@name_8124":{"entryPoint":877,"id":8124,"parameterSlots":0,"returnSlots":1},"@renounceRole_4703":{"entryPoint":1121,"id":4703,"parameterSlots":2,"returnSlots":0},"@revokeRole_4680":{"entryPoint":1351,"id":4680,"parameterSlots":2,"returnSlots":0},"@supportsInterface_4576":{"entryPoint":823,"id":4576,"parameterSlots":1,"returnSlots":1},"@supportsInterface_9690":{"entryPoint":null,"id":9690,"parameterSlots":1,"returnSlots":1},"@symbol_8133":{"entryPoint":1271,"id":8133,"parameterSlots":0,"returnSlots":1},"@totalSupply_8151":{"entryPoint":null,"id":8151,"parameterSlots":0,"returnSlots":1},"@transferFrom_8261":{"entryPoint":1044,"id":8261,"parameterSlots":3,"returnSlots":1},"@transfer_8188":{"entryPoint":1338,"id":8188,"parameterSlots":2,"returnSlots":1},"abi_decode_address":{"entryPoint":2648,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2838,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":2863,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":2715,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":2675,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":2773,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2796,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":2549,"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_bytes32__to_t_address_t_bytes32__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_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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2595,"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":2959,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2903,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:4773:75","nodeType":"YulBlock","src":"0:4773:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"83:217:75","nodeType":"YulBlock","src":"83:217:75","statements":[{"body":{"nativeSrc":"129:16:75","nodeType":"YulBlock","src":"129:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"138:1:75","nodeType":"YulLiteral","src":"138:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"141:1:75","nodeType":"YulLiteral","src":"141:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"131:6:75","nodeType":"YulIdentifier","src":"131:6:75"},"nativeSrc":"131:12:75","nodeType":"YulFunctionCall","src":"131:12:75"},"nativeSrc":"131:12:75","nodeType":"YulExpressionStatement","src":"131:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"104:7:75","nodeType":"YulIdentifier","src":"104:7:75"},{"name":"headStart","nativeSrc":"113:9:75","nodeType":"YulIdentifier","src":"113:9:75"}],"functionName":{"name":"sub","nativeSrc":"100:3:75","nodeType":"YulIdentifier","src":"100:3:75"},"nativeSrc":"100:23:75","nodeType":"YulFunctionCall","src":"100:23:75"},{"kind":"number","nativeSrc":"125:2:75","nodeType":"YulLiteral","src":"125:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"96:3:75","nodeType":"YulIdentifier","src":"96:3:75"},"nativeSrc":"96:32:75","nodeType":"YulFunctionCall","src":"96:32:75"},"nativeSrc":"93:52:75","nodeType":"YulIf","src":"93:52:75"},{"nativeSrc":"154:36:75","nodeType":"YulVariableDeclaration","src":"154:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"180:9:75","nodeType":"YulIdentifier","src":"180:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"167:12:75","nodeType":"YulIdentifier","src":"167:12:75"},"nativeSrc":"167:23:75","nodeType":"YulFunctionCall","src":"167:23:75"},"variables":[{"name":"value","nativeSrc":"158:5:75","nodeType":"YulTypedName","src":"158:5:75","type":""}]},{"body":{"nativeSrc":"254:16:75","nodeType":"YulBlock","src":"254:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:75","nodeType":"YulLiteral","src":"263:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"266:1:75","nodeType":"YulLiteral","src":"266:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"256:6:75","nodeType":"YulIdentifier","src":"256:6:75"},"nativeSrc":"256:12:75","nodeType":"YulFunctionCall","src":"256:12:75"},"nativeSrc":"256:12:75","nodeType":"YulExpressionStatement","src":"256:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"212:5:75","nodeType":"YulIdentifier","src":"212:5:75"},{"arguments":[{"name":"value","nativeSrc":"223:5:75","nodeType":"YulIdentifier","src":"223:5:75"},{"arguments":[{"kind":"number","nativeSrc":"234:3:75","nodeType":"YulLiteral","src":"234:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"239:10:75","nodeType":"YulLiteral","src":"239:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"230:3:75","nodeType":"YulIdentifier","src":"230:3:75"},"nativeSrc":"230:20:75","nodeType":"YulFunctionCall","src":"230:20:75"}],"functionName":{"name":"and","nativeSrc":"219:3:75","nodeType":"YulIdentifier","src":"219:3:75"},"nativeSrc":"219:32:75","nodeType":"YulFunctionCall","src":"219:32:75"}],"functionName":{"name":"eq","nativeSrc":"209:2:75","nodeType":"YulIdentifier","src":"209:2:75"},"nativeSrc":"209:43:75","nodeType":"YulFunctionCall","src":"209:43:75"}],"functionName":{"name":"iszero","nativeSrc":"202:6:75","nodeType":"YulIdentifier","src":"202:6:75"},"nativeSrc":"202:51:75","nodeType":"YulFunctionCall","src":"202:51:75"},"nativeSrc":"199:71:75","nodeType":"YulIf","src":"199:71:75"},{"nativeSrc":"279:15:75","nodeType":"YulAssignment","src":"279:15:75","value":{"name":"value","nativeSrc":"289:5:75","nodeType":"YulIdentifier","src":"289:5:75"},"variableNames":[{"name":"value0","nativeSrc":"279:6:75","nodeType":"YulIdentifier","src":"279:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"14:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"49:9:75","nodeType":"YulTypedName","src":"49:9:75","type":""},{"name":"dataEnd","nativeSrc":"60:7:75","nodeType":"YulTypedName","src":"60:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"72:6:75","nodeType":"YulTypedName","src":"72:6:75","type":""}],"src":"14:286:75"},{"body":{"nativeSrc":"400:92:75","nodeType":"YulBlock","src":"400:92:75","statements":[{"nativeSrc":"410:26:75","nodeType":"YulAssignment","src":"410:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"422:9:75","nodeType":"YulIdentifier","src":"422:9:75"},{"kind":"number","nativeSrc":"433:2:75","nodeType":"YulLiteral","src":"433:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"418:3:75","nodeType":"YulIdentifier","src":"418:3:75"},"nativeSrc":"418:18:75","nodeType":"YulFunctionCall","src":"418:18:75"},"variableNames":[{"name":"tail","nativeSrc":"410:4:75","nodeType":"YulIdentifier","src":"410:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"452:9:75","nodeType":"YulIdentifier","src":"452:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"477:6:75","nodeType":"YulIdentifier","src":"477:6:75"}],"functionName":{"name":"iszero","nativeSrc":"470:6:75","nodeType":"YulIdentifier","src":"470:6:75"},"nativeSrc":"470:14:75","nodeType":"YulFunctionCall","src":"470:14:75"}],"functionName":{"name":"iszero","nativeSrc":"463:6:75","nodeType":"YulIdentifier","src":"463:6:75"},"nativeSrc":"463:22:75","nodeType":"YulFunctionCall","src":"463:22:75"}],"functionName":{"name":"mstore","nativeSrc":"445:6:75","nodeType":"YulIdentifier","src":"445:6:75"},"nativeSrc":"445:41:75","nodeType":"YulFunctionCall","src":"445:41:75"},"nativeSrc":"445:41:75","nodeType":"YulExpressionStatement","src":"445:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"305:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"369:9:75","nodeType":"YulTypedName","src":"369:9:75","type":""},{"name":"value0","nativeSrc":"380:6:75","nodeType":"YulTypedName","src":"380:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"391:4:75","nodeType":"YulTypedName","src":"391:4:75","type":""}],"src":"305:187:75"},{"body":{"nativeSrc":"618:297:75","nodeType":"YulBlock","src":"618:297:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"635:9:75","nodeType":"YulIdentifier","src":"635:9:75"},{"kind":"number","nativeSrc":"646:2:75","nodeType":"YulLiteral","src":"646:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"628:6:75","nodeType":"YulIdentifier","src":"628:6:75"},"nativeSrc":"628:21:75","nodeType":"YulFunctionCall","src":"628:21:75"},"nativeSrc":"628:21:75","nodeType":"YulExpressionStatement","src":"628:21:75"},{"nativeSrc":"658:27:75","nodeType":"YulVariableDeclaration","src":"658:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"678:6:75","nodeType":"YulIdentifier","src":"678:6:75"}],"functionName":{"name":"mload","nativeSrc":"672:5:75","nodeType":"YulIdentifier","src":"672:5:75"},"nativeSrc":"672:13:75","nodeType":"YulFunctionCall","src":"672:13:75"},"variables":[{"name":"length","nativeSrc":"662:6:75","nodeType":"YulTypedName","src":"662:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"705:9:75","nodeType":"YulIdentifier","src":"705:9:75"},{"kind":"number","nativeSrc":"716:2:75","nodeType":"YulLiteral","src":"716:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"701:3:75","nodeType":"YulIdentifier","src":"701:3:75"},"nativeSrc":"701:18:75","nodeType":"YulFunctionCall","src":"701:18:75"},{"name":"length","nativeSrc":"721:6:75","nodeType":"YulIdentifier","src":"721:6:75"}],"functionName":{"name":"mstore","nativeSrc":"694:6:75","nodeType":"YulIdentifier","src":"694:6:75"},"nativeSrc":"694:34:75","nodeType":"YulFunctionCall","src":"694:34:75"},"nativeSrc":"694:34:75","nodeType":"YulExpressionStatement","src":"694:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"747:9:75","nodeType":"YulIdentifier","src":"747:9:75"},{"kind":"number","nativeSrc":"758:2:75","nodeType":"YulLiteral","src":"758:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"743:3:75","nodeType":"YulIdentifier","src":"743:3:75"},"nativeSrc":"743:18:75","nodeType":"YulFunctionCall","src":"743:18:75"},{"arguments":[{"name":"value0","nativeSrc":"767:6:75","nodeType":"YulIdentifier","src":"767:6:75"},{"kind":"number","nativeSrc":"775:2:75","nodeType":"YulLiteral","src":"775:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"763:3:75","nodeType":"YulIdentifier","src":"763:3:75"},"nativeSrc":"763:15:75","nodeType":"YulFunctionCall","src":"763:15:75"},{"name":"length","nativeSrc":"780:6:75","nodeType":"YulIdentifier","src":"780:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"737:5:75","nodeType":"YulIdentifier","src":"737:5:75"},"nativeSrc":"737:50:75","nodeType":"YulFunctionCall","src":"737:50:75"},"nativeSrc":"737:50:75","nodeType":"YulExpressionStatement","src":"737:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"811:9:75","nodeType":"YulIdentifier","src":"811:9:75"},{"name":"length","nativeSrc":"822:6:75","nodeType":"YulIdentifier","src":"822:6:75"}],"functionName":{"name":"add","nativeSrc":"807:3:75","nodeType":"YulIdentifier","src":"807:3:75"},"nativeSrc":"807:22:75","nodeType":"YulFunctionCall","src":"807:22:75"},{"kind":"number","nativeSrc":"831:2:75","nodeType":"YulLiteral","src":"831:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"803:3:75","nodeType":"YulIdentifier","src":"803:3:75"},"nativeSrc":"803:31:75","nodeType":"YulFunctionCall","src":"803:31:75"},{"kind":"number","nativeSrc":"836:1:75","nodeType":"YulLiteral","src":"836:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"796:6:75","nodeType":"YulIdentifier","src":"796:6:75"},"nativeSrc":"796:42:75","nodeType":"YulFunctionCall","src":"796:42:75"},"nativeSrc":"796:42:75","nodeType":"YulExpressionStatement","src":"796:42:75"},{"nativeSrc":"847:62:75","nodeType":"YulAssignment","src":"847:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"863:9:75","nodeType":"YulIdentifier","src":"863:9:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"882:6:75","nodeType":"YulIdentifier","src":"882:6:75"},{"kind":"number","nativeSrc":"890:2:75","nodeType":"YulLiteral","src":"890:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"878:3:75","nodeType":"YulIdentifier","src":"878:3:75"},"nativeSrc":"878:15:75","nodeType":"YulFunctionCall","src":"878:15:75"},{"arguments":[{"kind":"number","nativeSrc":"899:2:75","nodeType":"YulLiteral","src":"899:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"895:3:75","nodeType":"YulIdentifier","src":"895:3:75"},"nativeSrc":"895:7:75","nodeType":"YulFunctionCall","src":"895:7:75"}],"functionName":{"name":"and","nativeSrc":"874:3:75","nodeType":"YulIdentifier","src":"874:3:75"},"nativeSrc":"874:29:75","nodeType":"YulFunctionCall","src":"874:29:75"}],"functionName":{"name":"add","nativeSrc":"859:3:75","nodeType":"YulIdentifier","src":"859:3:75"},"nativeSrc":"859:45:75","nodeType":"YulFunctionCall","src":"859:45:75"},{"kind":"number","nativeSrc":"906:2:75","nodeType":"YulLiteral","src":"906:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"855:3:75","nodeType":"YulIdentifier","src":"855:3:75"},"nativeSrc":"855:54:75","nodeType":"YulFunctionCall","src":"855:54:75"},"variableNames":[{"name":"tail","nativeSrc":"847:4:75","nodeType":"YulIdentifier","src":"847:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"497:418:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"587:9:75","nodeType":"YulTypedName","src":"587:9:75","type":""},{"name":"value0","nativeSrc":"598:6:75","nodeType":"YulTypedName","src":"598:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"609:4:75","nodeType":"YulTypedName","src":"609:4:75","type":""}],"src":"497:418:75"},{"body":{"nativeSrc":"969:124:75","nodeType":"YulBlock","src":"969:124:75","statements":[{"nativeSrc":"979:29:75","nodeType":"YulAssignment","src":"979:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"1001:6:75","nodeType":"YulIdentifier","src":"1001:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"988:12:75","nodeType":"YulIdentifier","src":"988:12:75"},"nativeSrc":"988:20:75","nodeType":"YulFunctionCall","src":"988:20:75"},"variableNames":[{"name":"value","nativeSrc":"979:5:75","nodeType":"YulIdentifier","src":"979:5:75"}]},{"body":{"nativeSrc":"1071:16:75","nodeType":"YulBlock","src":"1071:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1080:1:75","nodeType":"YulLiteral","src":"1080:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1083:1:75","nodeType":"YulLiteral","src":"1083:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1073:6:75","nodeType":"YulIdentifier","src":"1073:6:75"},"nativeSrc":"1073:12:75","nodeType":"YulFunctionCall","src":"1073:12:75"},"nativeSrc":"1073:12:75","nodeType":"YulExpressionStatement","src":"1073:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1030:5:75","nodeType":"YulIdentifier","src":"1030:5:75"},{"arguments":[{"name":"value","nativeSrc":"1041:5:75","nodeType":"YulIdentifier","src":"1041:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1056:3:75","nodeType":"YulLiteral","src":"1056:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1061:1:75","nodeType":"YulLiteral","src":"1061:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1052:3:75","nodeType":"YulIdentifier","src":"1052:3:75"},"nativeSrc":"1052:11:75","nodeType":"YulFunctionCall","src":"1052:11:75"},{"kind":"number","nativeSrc":"1065:1:75","nodeType":"YulLiteral","src":"1065:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1048:3:75","nodeType":"YulIdentifier","src":"1048:3:75"},"nativeSrc":"1048:19:75","nodeType":"YulFunctionCall","src":"1048:19:75"}],"functionName":{"name":"and","nativeSrc":"1037:3:75","nodeType":"YulIdentifier","src":"1037:3:75"},"nativeSrc":"1037:31:75","nodeType":"YulFunctionCall","src":"1037:31:75"}],"functionName":{"name":"eq","nativeSrc":"1027:2:75","nodeType":"YulIdentifier","src":"1027:2:75"},"nativeSrc":"1027:42:75","nodeType":"YulFunctionCall","src":"1027:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1020:6:75","nodeType":"YulIdentifier","src":"1020:6:75"},"nativeSrc":"1020:50:75","nodeType":"YulFunctionCall","src":"1020:50:75"},"nativeSrc":"1017:70:75","nodeType":"YulIf","src":"1017:70:75"}]},"name":"abi_decode_address","nativeSrc":"920:173:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"948:6:75","nodeType":"YulTypedName","src":"948:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"959:5:75","nodeType":"YulTypedName","src":"959:5:75","type":""}],"src":"920:173:75"},{"body":{"nativeSrc":"1185:213:75","nodeType":"YulBlock","src":"1185:213:75","statements":[{"body":{"nativeSrc":"1231:16:75","nodeType":"YulBlock","src":"1231:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1240:1:75","nodeType":"YulLiteral","src":"1240:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1243:1:75","nodeType":"YulLiteral","src":"1243:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1233:6:75","nodeType":"YulIdentifier","src":"1233:6:75"},"nativeSrc":"1233:12:75","nodeType":"YulFunctionCall","src":"1233:12:75"},"nativeSrc":"1233:12:75","nodeType":"YulExpressionStatement","src":"1233:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1206:7:75","nodeType":"YulIdentifier","src":"1206:7:75"},{"name":"headStart","nativeSrc":"1215:9:75","nodeType":"YulIdentifier","src":"1215:9:75"}],"functionName":{"name":"sub","nativeSrc":"1202:3:75","nodeType":"YulIdentifier","src":"1202:3:75"},"nativeSrc":"1202:23:75","nodeType":"YulFunctionCall","src":"1202:23:75"},{"kind":"number","nativeSrc":"1227:2:75","nodeType":"YulLiteral","src":"1227:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1198:3:75","nodeType":"YulIdentifier","src":"1198:3:75"},"nativeSrc":"1198:32:75","nodeType":"YulFunctionCall","src":"1198:32:75"},"nativeSrc":"1195:52:75","nodeType":"YulIf","src":"1195:52:75"},{"nativeSrc":"1256:39:75","nodeType":"YulAssignment","src":"1256:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1285:9:75","nodeType":"YulIdentifier","src":"1285:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1266:18:75","nodeType":"YulIdentifier","src":"1266:18:75"},"nativeSrc":"1266:29:75","nodeType":"YulFunctionCall","src":"1266:29:75"},"variableNames":[{"name":"value0","nativeSrc":"1256:6:75","nodeType":"YulIdentifier","src":"1256:6:75"}]},{"nativeSrc":"1304:14:75","nodeType":"YulVariableDeclaration","src":"1304:14:75","value":{"kind":"number","nativeSrc":"1317:1:75","nodeType":"YulLiteral","src":"1317:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1308:5:75","nodeType":"YulTypedName","src":"1308:5:75","type":""}]},{"nativeSrc":"1327:41:75","nodeType":"YulAssignment","src":"1327:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1353:9:75","nodeType":"YulIdentifier","src":"1353:9:75"},{"kind":"number","nativeSrc":"1364:2:75","nodeType":"YulLiteral","src":"1364:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1349:3:75","nodeType":"YulIdentifier","src":"1349:3:75"},"nativeSrc":"1349:18:75","nodeType":"YulFunctionCall","src":"1349:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1336:12:75","nodeType":"YulIdentifier","src":"1336:12:75"},"nativeSrc":"1336:32:75","nodeType":"YulFunctionCall","src":"1336:32:75"},"variableNames":[{"name":"value","nativeSrc":"1327:5:75","nodeType":"YulIdentifier","src":"1327:5:75"}]},{"nativeSrc":"1377:15:75","nodeType":"YulAssignment","src":"1377:15:75","value":{"name":"value","nativeSrc":"1387:5:75","nodeType":"YulIdentifier","src":"1387:5:75"},"variableNames":[{"name":"value1","nativeSrc":"1377:6:75","nodeType":"YulIdentifier","src":"1377:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1098:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1143:9:75","nodeType":"YulTypedName","src":"1143:9:75","type":""},{"name":"dataEnd","nativeSrc":"1154:7:75","nodeType":"YulTypedName","src":"1154:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1166:6:75","nodeType":"YulTypedName","src":"1166:6:75","type":""},{"name":"value1","nativeSrc":"1174:6:75","nodeType":"YulTypedName","src":"1174:6:75","type":""}],"src":"1098:300:75"},{"body":{"nativeSrc":"1504:76:75","nodeType":"YulBlock","src":"1504:76:75","statements":[{"nativeSrc":"1514:26:75","nodeType":"YulAssignment","src":"1514:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1526:9:75","nodeType":"YulIdentifier","src":"1526:9:75"},{"kind":"number","nativeSrc":"1537:2:75","nodeType":"YulLiteral","src":"1537:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1522:3:75","nodeType":"YulIdentifier","src":"1522:3:75"},"nativeSrc":"1522:18:75","nodeType":"YulFunctionCall","src":"1522:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1514:4:75","nodeType":"YulIdentifier","src":"1514:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1556:9:75","nodeType":"YulIdentifier","src":"1556:9:75"},{"name":"value0","nativeSrc":"1567:6:75","nodeType":"YulIdentifier","src":"1567:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1549:6:75","nodeType":"YulIdentifier","src":"1549:6:75"},"nativeSrc":"1549:25:75","nodeType":"YulFunctionCall","src":"1549:25:75"},"nativeSrc":"1549:25:75","nodeType":"YulExpressionStatement","src":"1549:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"1403:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1473:9:75","nodeType":"YulTypedName","src":"1473:9:75","type":""},{"name":"value0","nativeSrc":"1484:6:75","nodeType":"YulTypedName","src":"1484:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1495:4:75","nodeType":"YulTypedName","src":"1495:4:75","type":""}],"src":"1403:177:75"},{"body":{"nativeSrc":"1689:270:75","nodeType":"YulBlock","src":"1689:270:75","statements":[{"body":{"nativeSrc":"1735:16:75","nodeType":"YulBlock","src":"1735:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1744:1:75","nodeType":"YulLiteral","src":"1744:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1747:1:75","nodeType":"YulLiteral","src":"1747:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1737:6:75","nodeType":"YulIdentifier","src":"1737:6:75"},"nativeSrc":"1737:12:75","nodeType":"YulFunctionCall","src":"1737:12:75"},"nativeSrc":"1737:12:75","nodeType":"YulExpressionStatement","src":"1737:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1710:7:75","nodeType":"YulIdentifier","src":"1710:7:75"},{"name":"headStart","nativeSrc":"1719:9:75","nodeType":"YulIdentifier","src":"1719:9:75"}],"functionName":{"name":"sub","nativeSrc":"1706:3:75","nodeType":"YulIdentifier","src":"1706:3:75"},"nativeSrc":"1706:23:75","nodeType":"YulFunctionCall","src":"1706:23:75"},{"kind":"number","nativeSrc":"1731:2:75","nodeType":"YulLiteral","src":"1731:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1702:3:75","nodeType":"YulIdentifier","src":"1702:3:75"},"nativeSrc":"1702:32:75","nodeType":"YulFunctionCall","src":"1702:32:75"},"nativeSrc":"1699:52:75","nodeType":"YulIf","src":"1699:52:75"},{"nativeSrc":"1760:39:75","nodeType":"YulAssignment","src":"1760:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1789:9:75","nodeType":"YulIdentifier","src":"1789:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1770:18:75","nodeType":"YulIdentifier","src":"1770:18:75"},"nativeSrc":"1770:29:75","nodeType":"YulFunctionCall","src":"1770:29:75"},"variableNames":[{"name":"value0","nativeSrc":"1760:6:75","nodeType":"YulIdentifier","src":"1760:6:75"}]},{"nativeSrc":"1808:48:75","nodeType":"YulAssignment","src":"1808:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1841:9:75","nodeType":"YulIdentifier","src":"1841:9:75"},{"kind":"number","nativeSrc":"1852:2:75","nodeType":"YulLiteral","src":"1852:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1837:3:75","nodeType":"YulIdentifier","src":"1837:3:75"},"nativeSrc":"1837:18:75","nodeType":"YulFunctionCall","src":"1837:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1818:18:75","nodeType":"YulIdentifier","src":"1818:18:75"},"nativeSrc":"1818:38:75","nodeType":"YulFunctionCall","src":"1818:38:75"},"variableNames":[{"name":"value1","nativeSrc":"1808:6:75","nodeType":"YulIdentifier","src":"1808:6:75"}]},{"nativeSrc":"1865:14:75","nodeType":"YulVariableDeclaration","src":"1865:14:75","value":{"kind":"number","nativeSrc":"1878:1:75","nodeType":"YulLiteral","src":"1878:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1869:5:75","nodeType":"YulTypedName","src":"1869:5:75","type":""}]},{"nativeSrc":"1888:41:75","nodeType":"YulAssignment","src":"1888:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1914:9:75","nodeType":"YulIdentifier","src":"1914:9:75"},{"kind":"number","nativeSrc":"1925:2:75","nodeType":"YulLiteral","src":"1925:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1910:3:75","nodeType":"YulIdentifier","src":"1910:3:75"},"nativeSrc":"1910:18:75","nodeType":"YulFunctionCall","src":"1910:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1897:12:75","nodeType":"YulIdentifier","src":"1897:12:75"},"nativeSrc":"1897:32:75","nodeType":"YulFunctionCall","src":"1897:32:75"},"variableNames":[{"name":"value","nativeSrc":"1888:5:75","nodeType":"YulIdentifier","src":"1888:5:75"}]},{"nativeSrc":"1938:15:75","nodeType":"YulAssignment","src":"1938:15:75","value":{"name":"value","nativeSrc":"1948:5:75","nodeType":"YulIdentifier","src":"1948:5:75"},"variableNames":[{"name":"value2","nativeSrc":"1938:6:75","nodeType":"YulIdentifier","src":"1938:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1585:374:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1639:9:75","nodeType":"YulTypedName","src":"1639:9:75","type":""},{"name":"dataEnd","nativeSrc":"1650:7:75","nodeType":"YulTypedName","src":"1650:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1662:6:75","nodeType":"YulTypedName","src":"1662:6:75","type":""},{"name":"value1","nativeSrc":"1670:6:75","nodeType":"YulTypedName","src":"1670:6:75","type":""},{"name":"value2","nativeSrc":"1678:6:75","nodeType":"YulTypedName","src":"1678:6:75","type":""}],"src":"1585:374:75"},{"body":{"nativeSrc":"2034:156:75","nodeType":"YulBlock","src":"2034:156:75","statements":[{"body":{"nativeSrc":"2080:16:75","nodeType":"YulBlock","src":"2080:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2089:1:75","nodeType":"YulLiteral","src":"2089:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2092:1:75","nodeType":"YulLiteral","src":"2092:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2082:6:75","nodeType":"YulIdentifier","src":"2082:6:75"},"nativeSrc":"2082:12:75","nodeType":"YulFunctionCall","src":"2082:12:75"},"nativeSrc":"2082:12:75","nodeType":"YulExpressionStatement","src":"2082:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2055:7:75","nodeType":"YulIdentifier","src":"2055:7:75"},{"name":"headStart","nativeSrc":"2064:9:75","nodeType":"YulIdentifier","src":"2064:9:75"}],"functionName":{"name":"sub","nativeSrc":"2051:3:75","nodeType":"YulIdentifier","src":"2051:3:75"},"nativeSrc":"2051:23:75","nodeType":"YulFunctionCall","src":"2051:23:75"},{"kind":"number","nativeSrc":"2076:2:75","nodeType":"YulLiteral","src":"2076:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2047:3:75","nodeType":"YulIdentifier","src":"2047:3:75"},"nativeSrc":"2047:32:75","nodeType":"YulFunctionCall","src":"2047:32:75"},"nativeSrc":"2044:52:75","nodeType":"YulIf","src":"2044:52:75"},{"nativeSrc":"2105:14:75","nodeType":"YulVariableDeclaration","src":"2105:14:75","value":{"kind":"number","nativeSrc":"2118:1:75","nodeType":"YulLiteral","src":"2118:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2109:5:75","nodeType":"YulTypedName","src":"2109:5:75","type":""}]},{"nativeSrc":"2128:32:75","nodeType":"YulAssignment","src":"2128:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2150:9:75","nodeType":"YulIdentifier","src":"2150:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2137:12:75","nodeType":"YulIdentifier","src":"2137:12:75"},"nativeSrc":"2137:23:75","nodeType":"YulFunctionCall","src":"2137:23:75"},"variableNames":[{"name":"value","nativeSrc":"2128:5:75","nodeType":"YulIdentifier","src":"2128:5:75"}]},{"nativeSrc":"2169:15:75","nodeType":"YulAssignment","src":"2169:15:75","value":{"name":"value","nativeSrc":"2179:5:75","nodeType":"YulIdentifier","src":"2179:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2169:6:75","nodeType":"YulIdentifier","src":"2169:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"1964:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2000:9:75","nodeType":"YulTypedName","src":"2000:9:75","type":""},{"name":"dataEnd","nativeSrc":"2011:7:75","nodeType":"YulTypedName","src":"2011:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2023:6:75","nodeType":"YulTypedName","src":"2023:6:75","type":""}],"src":"1964:226:75"},{"body":{"nativeSrc":"2296:76:75","nodeType":"YulBlock","src":"2296:76:75","statements":[{"nativeSrc":"2306:26:75","nodeType":"YulAssignment","src":"2306:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2318:9:75","nodeType":"YulIdentifier","src":"2318:9:75"},{"kind":"number","nativeSrc":"2329:2:75","nodeType":"YulLiteral","src":"2329:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2314:3:75","nodeType":"YulIdentifier","src":"2314:3:75"},"nativeSrc":"2314:18:75","nodeType":"YulFunctionCall","src":"2314:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2306:4:75","nodeType":"YulIdentifier","src":"2306:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2348:9:75","nodeType":"YulIdentifier","src":"2348:9:75"},{"name":"value0","nativeSrc":"2359:6:75","nodeType":"YulIdentifier","src":"2359:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2341:6:75","nodeType":"YulIdentifier","src":"2341:6:75"},"nativeSrc":"2341:25:75","nodeType":"YulFunctionCall","src":"2341:25:75"},"nativeSrc":"2341:25:75","nodeType":"YulExpressionStatement","src":"2341:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2195:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2265:9:75","nodeType":"YulTypedName","src":"2265:9:75","type":""},{"name":"value0","nativeSrc":"2276:6:75","nodeType":"YulTypedName","src":"2276:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2287:4:75","nodeType":"YulTypedName","src":"2287:4:75","type":""}],"src":"2195:177:75"},{"body":{"nativeSrc":"2464:213:75","nodeType":"YulBlock","src":"2464:213:75","statements":[{"body":{"nativeSrc":"2510:16:75","nodeType":"YulBlock","src":"2510:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2519:1:75","nodeType":"YulLiteral","src":"2519:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2522:1:75","nodeType":"YulLiteral","src":"2522:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2512:6:75","nodeType":"YulIdentifier","src":"2512:6:75"},"nativeSrc":"2512:12:75","nodeType":"YulFunctionCall","src":"2512:12:75"},"nativeSrc":"2512:12:75","nodeType":"YulExpressionStatement","src":"2512:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2485:7:75","nodeType":"YulIdentifier","src":"2485:7:75"},{"name":"headStart","nativeSrc":"2494:9:75","nodeType":"YulIdentifier","src":"2494:9:75"}],"functionName":{"name":"sub","nativeSrc":"2481:3:75","nodeType":"YulIdentifier","src":"2481:3:75"},"nativeSrc":"2481:23:75","nodeType":"YulFunctionCall","src":"2481:23:75"},{"kind":"number","nativeSrc":"2506:2:75","nodeType":"YulLiteral","src":"2506:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2477:3:75","nodeType":"YulIdentifier","src":"2477:3:75"},"nativeSrc":"2477:32:75","nodeType":"YulFunctionCall","src":"2477:32:75"},"nativeSrc":"2474:52:75","nodeType":"YulIf","src":"2474:52:75"},{"nativeSrc":"2535:14:75","nodeType":"YulVariableDeclaration","src":"2535:14:75","value":{"kind":"number","nativeSrc":"2548:1:75","nodeType":"YulLiteral","src":"2548:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2539:5:75","nodeType":"YulTypedName","src":"2539:5:75","type":""}]},{"nativeSrc":"2558:32:75","nodeType":"YulAssignment","src":"2558:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2580:9:75","nodeType":"YulIdentifier","src":"2580:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2567:12:75","nodeType":"YulIdentifier","src":"2567:12:75"},"nativeSrc":"2567:23:75","nodeType":"YulFunctionCall","src":"2567:23:75"},"variableNames":[{"name":"value","nativeSrc":"2558:5:75","nodeType":"YulIdentifier","src":"2558:5:75"}]},{"nativeSrc":"2599:15:75","nodeType":"YulAssignment","src":"2599:15:75","value":{"name":"value","nativeSrc":"2609:5:75","nodeType":"YulIdentifier","src":"2609:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2599:6:75","nodeType":"YulIdentifier","src":"2599:6:75"}]},{"nativeSrc":"2623:48:75","nodeType":"YulAssignment","src":"2623:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2656:9:75","nodeType":"YulIdentifier","src":"2656:9:75"},{"kind":"number","nativeSrc":"2667:2:75","nodeType":"YulLiteral","src":"2667:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2652:3:75","nodeType":"YulIdentifier","src":"2652:3:75"},"nativeSrc":"2652:18:75","nodeType":"YulFunctionCall","src":"2652:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2633:18:75","nodeType":"YulIdentifier","src":"2633:18:75"},"nativeSrc":"2633:38:75","nodeType":"YulFunctionCall","src":"2633:38:75"},"variableNames":[{"name":"value1","nativeSrc":"2623:6:75","nodeType":"YulIdentifier","src":"2623:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"2377:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2422:9:75","nodeType":"YulTypedName","src":"2422:9:75","type":""},{"name":"dataEnd","nativeSrc":"2433:7:75","nodeType":"YulTypedName","src":"2433:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2445:6:75","nodeType":"YulTypedName","src":"2445:6:75","type":""},{"name":"value1","nativeSrc":"2453:6:75","nodeType":"YulTypedName","src":"2453:6:75","type":""}],"src":"2377:300:75"},{"body":{"nativeSrc":"2779:87:75","nodeType":"YulBlock","src":"2779:87:75","statements":[{"nativeSrc":"2789:26:75","nodeType":"YulAssignment","src":"2789:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2801:9:75","nodeType":"YulIdentifier","src":"2801:9:75"},{"kind":"number","nativeSrc":"2812:2:75","nodeType":"YulLiteral","src":"2812:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2797:3:75","nodeType":"YulIdentifier","src":"2797:3:75"},"nativeSrc":"2797:18:75","nodeType":"YulFunctionCall","src":"2797:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2789:4:75","nodeType":"YulIdentifier","src":"2789:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2831:9:75","nodeType":"YulIdentifier","src":"2831:9:75"},{"arguments":[{"name":"value0","nativeSrc":"2846:6:75","nodeType":"YulIdentifier","src":"2846:6:75"},{"kind":"number","nativeSrc":"2854:4:75","nodeType":"YulLiteral","src":"2854:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2842:3:75","nodeType":"YulIdentifier","src":"2842:3:75"},"nativeSrc":"2842:17:75","nodeType":"YulFunctionCall","src":"2842:17:75"}],"functionName":{"name":"mstore","nativeSrc":"2824:6:75","nodeType":"YulIdentifier","src":"2824:6:75"},"nativeSrc":"2824:36:75","nodeType":"YulFunctionCall","src":"2824:36:75"},"nativeSrc":"2824:36:75","nodeType":"YulExpressionStatement","src":"2824:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2682:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2748:9:75","nodeType":"YulTypedName","src":"2748:9:75","type":""},{"name":"value0","nativeSrc":"2759:6:75","nodeType":"YulTypedName","src":"2759:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2770:4:75","nodeType":"YulTypedName","src":"2770:4:75","type":""}],"src":"2682:184:75"},{"body":{"nativeSrc":"2941:116:75","nodeType":"YulBlock","src":"2941:116:75","statements":[{"body":{"nativeSrc":"2987:16:75","nodeType":"YulBlock","src":"2987:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2996:1:75","nodeType":"YulLiteral","src":"2996:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2999:1:75","nodeType":"YulLiteral","src":"2999:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2989:6:75","nodeType":"YulIdentifier","src":"2989:6:75"},"nativeSrc":"2989:12:75","nodeType":"YulFunctionCall","src":"2989:12:75"},"nativeSrc":"2989:12:75","nodeType":"YulExpressionStatement","src":"2989:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2962:7:75","nodeType":"YulIdentifier","src":"2962:7:75"},{"name":"headStart","nativeSrc":"2971:9:75","nodeType":"YulIdentifier","src":"2971:9:75"}],"functionName":{"name":"sub","nativeSrc":"2958:3:75","nodeType":"YulIdentifier","src":"2958:3:75"},"nativeSrc":"2958:23:75","nodeType":"YulFunctionCall","src":"2958:23:75"},{"kind":"number","nativeSrc":"2983:2:75","nodeType":"YulLiteral","src":"2983:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2954:3:75","nodeType":"YulIdentifier","src":"2954:3:75"},"nativeSrc":"2954:32:75","nodeType":"YulFunctionCall","src":"2954:32:75"},"nativeSrc":"2951:52:75","nodeType":"YulIf","src":"2951:52:75"},{"nativeSrc":"3012:39:75","nodeType":"YulAssignment","src":"3012:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3041:9:75","nodeType":"YulIdentifier","src":"3041:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3022:18:75","nodeType":"YulIdentifier","src":"3022:18:75"},"nativeSrc":"3022:29:75","nodeType":"YulFunctionCall","src":"3022:29:75"},"variableNames":[{"name":"value0","nativeSrc":"3012:6:75","nodeType":"YulIdentifier","src":"3012:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2871:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2907:9:75","nodeType":"YulTypedName","src":"2907:9:75","type":""},{"name":"dataEnd","nativeSrc":"2918:7:75","nodeType":"YulTypedName","src":"2918:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2930:6:75","nodeType":"YulTypedName","src":"2930:6:75","type":""}],"src":"2871:186:75"},{"body":{"nativeSrc":"3149:173:75","nodeType":"YulBlock","src":"3149:173:75","statements":[{"body":{"nativeSrc":"3195:16:75","nodeType":"YulBlock","src":"3195:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3204:1:75","nodeType":"YulLiteral","src":"3204:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3207:1:75","nodeType":"YulLiteral","src":"3207:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3197:6:75","nodeType":"YulIdentifier","src":"3197:6:75"},"nativeSrc":"3197:12:75","nodeType":"YulFunctionCall","src":"3197:12:75"},"nativeSrc":"3197:12:75","nodeType":"YulExpressionStatement","src":"3197:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3170:7:75","nodeType":"YulIdentifier","src":"3170:7:75"},{"name":"headStart","nativeSrc":"3179:9:75","nodeType":"YulIdentifier","src":"3179:9:75"}],"functionName":{"name":"sub","nativeSrc":"3166:3:75","nodeType":"YulIdentifier","src":"3166:3:75"},"nativeSrc":"3166:23:75","nodeType":"YulFunctionCall","src":"3166:23:75"},{"kind":"number","nativeSrc":"3191:2:75","nodeType":"YulLiteral","src":"3191:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3162:3:75","nodeType":"YulIdentifier","src":"3162:3:75"},"nativeSrc":"3162:32:75","nodeType":"YulFunctionCall","src":"3162:32:75"},"nativeSrc":"3159:52:75","nodeType":"YulIf","src":"3159:52:75"},{"nativeSrc":"3220:39:75","nodeType":"YulAssignment","src":"3220:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3249:9:75","nodeType":"YulIdentifier","src":"3249:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3230:18:75","nodeType":"YulIdentifier","src":"3230:18:75"},"nativeSrc":"3230:29:75","nodeType":"YulFunctionCall","src":"3230:29:75"},"variableNames":[{"name":"value0","nativeSrc":"3220:6:75","nodeType":"YulIdentifier","src":"3220:6:75"}]},{"nativeSrc":"3268:48:75","nodeType":"YulAssignment","src":"3268:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3301:9:75","nodeType":"YulIdentifier","src":"3301:9:75"},{"kind":"number","nativeSrc":"3312:2:75","nodeType":"YulLiteral","src":"3312:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3297:3:75","nodeType":"YulIdentifier","src":"3297:3:75"},"nativeSrc":"3297:18:75","nodeType":"YulFunctionCall","src":"3297:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3278:18:75","nodeType":"YulIdentifier","src":"3278:18:75"},"nativeSrc":"3278:38:75","nodeType":"YulFunctionCall","src":"3278:38:75"},"variableNames":[{"name":"value1","nativeSrc":"3268:6:75","nodeType":"YulIdentifier","src":"3268:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"3062:260:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3107:9:75","nodeType":"YulTypedName","src":"3107:9:75","type":""},{"name":"dataEnd","nativeSrc":"3118:7:75","nodeType":"YulTypedName","src":"3118:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3130:6:75","nodeType":"YulTypedName","src":"3130:6:75","type":""},{"name":"value1","nativeSrc":"3138:6:75","nodeType":"YulTypedName","src":"3138:6:75","type":""}],"src":"3062:260:75"},{"body":{"nativeSrc":"3382:325:75","nodeType":"YulBlock","src":"3382:325:75","statements":[{"nativeSrc":"3392:22:75","nodeType":"YulAssignment","src":"3392:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"3406:1:75","nodeType":"YulLiteral","src":"3406:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"3409:4:75","nodeType":"YulIdentifier","src":"3409:4:75"}],"functionName":{"name":"shr","nativeSrc":"3402:3:75","nodeType":"YulIdentifier","src":"3402:3:75"},"nativeSrc":"3402:12:75","nodeType":"YulFunctionCall","src":"3402:12:75"},"variableNames":[{"name":"length","nativeSrc":"3392:6:75","nodeType":"YulIdentifier","src":"3392:6:75"}]},{"nativeSrc":"3423:38:75","nodeType":"YulVariableDeclaration","src":"3423:38:75","value":{"arguments":[{"name":"data","nativeSrc":"3453:4:75","nodeType":"YulIdentifier","src":"3453:4:75"},{"kind":"number","nativeSrc":"3459:1:75","nodeType":"YulLiteral","src":"3459:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"3449:3:75","nodeType":"YulIdentifier","src":"3449:3:75"},"nativeSrc":"3449:12:75","nodeType":"YulFunctionCall","src":"3449:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"3427:18:75","nodeType":"YulTypedName","src":"3427:18:75","type":""}]},{"body":{"nativeSrc":"3500:31:75","nodeType":"YulBlock","src":"3500:31:75","statements":[{"nativeSrc":"3502:27:75","nodeType":"YulAssignment","src":"3502:27:75","value":{"arguments":[{"name":"length","nativeSrc":"3516:6:75","nodeType":"YulIdentifier","src":"3516:6:75"},{"kind":"number","nativeSrc":"3524:4:75","nodeType":"YulLiteral","src":"3524:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"3512:3:75","nodeType":"YulIdentifier","src":"3512:3:75"},"nativeSrc":"3512:17:75","nodeType":"YulFunctionCall","src":"3512:17:75"},"variableNames":[{"name":"length","nativeSrc":"3502:6:75","nodeType":"YulIdentifier","src":"3502:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3480:18:75","nodeType":"YulIdentifier","src":"3480:18:75"}],"functionName":{"name":"iszero","nativeSrc":"3473:6:75","nodeType":"YulIdentifier","src":"3473:6:75"},"nativeSrc":"3473:26:75","nodeType":"YulFunctionCall","src":"3473:26:75"},"nativeSrc":"3470:61:75","nodeType":"YulIf","src":"3470:61:75"},{"body":{"nativeSrc":"3590:111:75","nodeType":"YulBlock","src":"3590:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3611:1:75","nodeType":"YulLiteral","src":"3611:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3618:3:75","nodeType":"YulLiteral","src":"3618:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3623:10:75","nodeType":"YulLiteral","src":"3623:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3614:3:75","nodeType":"YulIdentifier","src":"3614:3:75"},"nativeSrc":"3614:20:75","nodeType":"YulFunctionCall","src":"3614:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3604:6:75","nodeType":"YulIdentifier","src":"3604:6:75"},"nativeSrc":"3604:31:75","nodeType":"YulFunctionCall","src":"3604:31:75"},"nativeSrc":"3604:31:75","nodeType":"YulExpressionStatement","src":"3604:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3655:1:75","nodeType":"YulLiteral","src":"3655:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3658:4:75","nodeType":"YulLiteral","src":"3658:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"3648:6:75","nodeType":"YulIdentifier","src":"3648:6:75"},"nativeSrc":"3648:15:75","nodeType":"YulFunctionCall","src":"3648:15:75"},"nativeSrc":"3648:15:75","nodeType":"YulExpressionStatement","src":"3648:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3683:1:75","nodeType":"YulLiteral","src":"3683:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3686:4:75","nodeType":"YulLiteral","src":"3686:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3676:6:75","nodeType":"YulIdentifier","src":"3676:6:75"},"nativeSrc":"3676:15:75","nodeType":"YulFunctionCall","src":"3676:15:75"},"nativeSrc":"3676:15:75","nodeType":"YulExpressionStatement","src":"3676:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3546:18:75","nodeType":"YulIdentifier","src":"3546:18:75"},{"arguments":[{"name":"length","nativeSrc":"3569:6:75","nodeType":"YulIdentifier","src":"3569:6:75"},{"kind":"number","nativeSrc":"3577:2:75","nodeType":"YulLiteral","src":"3577:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3566:2:75","nodeType":"YulIdentifier","src":"3566:2:75"},"nativeSrc":"3566:14:75","nodeType":"YulFunctionCall","src":"3566:14:75"}],"functionName":{"name":"eq","nativeSrc":"3543:2:75","nodeType":"YulIdentifier","src":"3543:2:75"},"nativeSrc":"3543:38:75","nodeType":"YulFunctionCall","src":"3543:38:75"},"nativeSrc":"3540:161:75","nodeType":"YulIf","src":"3540:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"3327:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3362:4:75","nodeType":"YulTypedName","src":"3362:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"3371:6:75","nodeType":"YulTypedName","src":"3371:6:75","type":""}],"src":"3327:380:75"},{"body":{"nativeSrc":"3869:188:75","nodeType":"YulBlock","src":"3869:188:75","statements":[{"nativeSrc":"3879:26:75","nodeType":"YulAssignment","src":"3879:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3891:9:75","nodeType":"YulIdentifier","src":"3891:9:75"},{"kind":"number","nativeSrc":"3902:2:75","nodeType":"YulLiteral","src":"3902:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3887:3:75","nodeType":"YulIdentifier","src":"3887:3:75"},"nativeSrc":"3887:18:75","nodeType":"YulFunctionCall","src":"3887:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3879:4:75","nodeType":"YulIdentifier","src":"3879:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3921:9:75","nodeType":"YulIdentifier","src":"3921:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3936:6:75","nodeType":"YulIdentifier","src":"3936:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3952:3:75","nodeType":"YulLiteral","src":"3952:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3957:1:75","nodeType":"YulLiteral","src":"3957:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3948:3:75","nodeType":"YulIdentifier","src":"3948:3:75"},"nativeSrc":"3948:11:75","nodeType":"YulFunctionCall","src":"3948:11:75"},{"kind":"number","nativeSrc":"3961:1:75","nodeType":"YulLiteral","src":"3961:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3944:3:75","nodeType":"YulIdentifier","src":"3944:3:75"},"nativeSrc":"3944:19:75","nodeType":"YulFunctionCall","src":"3944:19:75"}],"functionName":{"name":"and","nativeSrc":"3932:3:75","nodeType":"YulIdentifier","src":"3932:3:75"},"nativeSrc":"3932:32:75","nodeType":"YulFunctionCall","src":"3932:32:75"}],"functionName":{"name":"mstore","nativeSrc":"3914:6:75","nodeType":"YulIdentifier","src":"3914:6:75"},"nativeSrc":"3914:51:75","nodeType":"YulFunctionCall","src":"3914:51:75"},"nativeSrc":"3914:51:75","nodeType":"YulExpressionStatement","src":"3914:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3985:9:75","nodeType":"YulIdentifier","src":"3985:9:75"},{"kind":"number","nativeSrc":"3996:2:75","nodeType":"YulLiteral","src":"3996:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3981:3:75","nodeType":"YulIdentifier","src":"3981:3:75"},"nativeSrc":"3981:18:75","nodeType":"YulFunctionCall","src":"3981:18:75"},{"name":"value1","nativeSrc":"4001:6:75","nodeType":"YulIdentifier","src":"4001:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3974:6:75","nodeType":"YulIdentifier","src":"3974:6:75"},"nativeSrc":"3974:34:75","nodeType":"YulFunctionCall","src":"3974:34:75"},"nativeSrc":"3974:34:75","nodeType":"YulExpressionStatement","src":"3974:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4028:9:75","nodeType":"YulIdentifier","src":"4028:9:75"},{"kind":"number","nativeSrc":"4039:2:75","nodeType":"YulLiteral","src":"4039:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4024:3:75","nodeType":"YulIdentifier","src":"4024:3:75"},"nativeSrc":"4024:18:75","nodeType":"YulFunctionCall","src":"4024:18:75"},{"name":"value2","nativeSrc":"4044:6:75","nodeType":"YulIdentifier","src":"4044:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4017:6:75","nodeType":"YulIdentifier","src":"4017:6:75"},"nativeSrc":"4017:34:75","nodeType":"YulFunctionCall","src":"4017:34:75"},"nativeSrc":"4017:34:75","nodeType":"YulExpressionStatement","src":"4017:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"3712:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3822:9:75","nodeType":"YulTypedName","src":"3822:9:75","type":""},{"name":"value2","nativeSrc":"3833:6:75","nodeType":"YulTypedName","src":"3833:6:75","type":""},{"name":"value1","nativeSrc":"3841:6:75","nodeType":"YulTypedName","src":"3841:6:75","type":""},{"name":"value0","nativeSrc":"3849:6:75","nodeType":"YulTypedName","src":"3849:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3860:4:75","nodeType":"YulTypedName","src":"3860:4:75","type":""}],"src":"3712:345:75"},{"body":{"nativeSrc":"4163:102:75","nodeType":"YulBlock","src":"4163:102:75","statements":[{"nativeSrc":"4173:26:75","nodeType":"YulAssignment","src":"4173:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4185:9:75","nodeType":"YulIdentifier","src":"4185:9:75"},{"kind":"number","nativeSrc":"4196:2:75","nodeType":"YulLiteral","src":"4196:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4181:3:75","nodeType":"YulIdentifier","src":"4181:3:75"},"nativeSrc":"4181:18:75","nodeType":"YulFunctionCall","src":"4181:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4173:4:75","nodeType":"YulIdentifier","src":"4173:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4215:9:75","nodeType":"YulIdentifier","src":"4215:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4230:6:75","nodeType":"YulIdentifier","src":"4230:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4246:3:75","nodeType":"YulLiteral","src":"4246:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4251:1:75","nodeType":"YulLiteral","src":"4251:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4242:3:75","nodeType":"YulIdentifier","src":"4242:3:75"},"nativeSrc":"4242:11:75","nodeType":"YulFunctionCall","src":"4242:11:75"},{"kind":"number","nativeSrc":"4255:1:75","nodeType":"YulLiteral","src":"4255:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4238:3:75","nodeType":"YulIdentifier","src":"4238:3:75"},"nativeSrc":"4238:19:75","nodeType":"YulFunctionCall","src":"4238:19:75"}],"functionName":{"name":"and","nativeSrc":"4226:3:75","nodeType":"YulIdentifier","src":"4226:3:75"},"nativeSrc":"4226:32:75","nodeType":"YulFunctionCall","src":"4226:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4208:6:75","nodeType":"YulIdentifier","src":"4208:6:75"},"nativeSrc":"4208:51:75","nodeType":"YulFunctionCall","src":"4208:51:75"},"nativeSrc":"4208:51:75","nodeType":"YulExpressionStatement","src":"4208:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4062:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4132:9:75","nodeType":"YulTypedName","src":"4132:9:75","type":""},{"name":"value0","nativeSrc":"4143:6:75","nodeType":"YulTypedName","src":"4143:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4154:4:75","nodeType":"YulTypedName","src":"4154:4:75","type":""}],"src":"4062:203:75"},{"body":{"nativeSrc":"4318:174:75","nodeType":"YulBlock","src":"4318:174:75","statements":[{"nativeSrc":"4328:16:75","nodeType":"YulAssignment","src":"4328:16:75","value":{"arguments":[{"name":"x","nativeSrc":"4339:1:75","nodeType":"YulIdentifier","src":"4339:1:75"},{"name":"y","nativeSrc":"4342:1:75","nodeType":"YulIdentifier","src":"4342:1:75"}],"functionName":{"name":"add","nativeSrc":"4335:3:75","nodeType":"YulIdentifier","src":"4335:3:75"},"nativeSrc":"4335:9:75","nodeType":"YulFunctionCall","src":"4335:9:75"},"variableNames":[{"name":"sum","nativeSrc":"4328:3:75","nodeType":"YulIdentifier","src":"4328:3:75"}]},{"body":{"nativeSrc":"4375:111:75","nodeType":"YulBlock","src":"4375:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4396:1:75","nodeType":"YulLiteral","src":"4396:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4403:3:75","nodeType":"YulLiteral","src":"4403:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4408:10:75","nodeType":"YulLiteral","src":"4408:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4399:3:75","nodeType":"YulIdentifier","src":"4399:3:75"},"nativeSrc":"4399:20:75","nodeType":"YulFunctionCall","src":"4399:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4389:6:75","nodeType":"YulIdentifier","src":"4389:6:75"},"nativeSrc":"4389:31:75","nodeType":"YulFunctionCall","src":"4389:31:75"},"nativeSrc":"4389:31:75","nodeType":"YulExpressionStatement","src":"4389:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4440:1:75","nodeType":"YulLiteral","src":"4440:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4443:4:75","nodeType":"YulLiteral","src":"4443:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"4433:6:75","nodeType":"YulIdentifier","src":"4433:6:75"},"nativeSrc":"4433:15:75","nodeType":"YulFunctionCall","src":"4433:15:75"},"nativeSrc":"4433:15:75","nodeType":"YulExpressionStatement","src":"4433:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4468:1:75","nodeType":"YulLiteral","src":"4468:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4471:4:75","nodeType":"YulLiteral","src":"4471:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4461:6:75","nodeType":"YulIdentifier","src":"4461:6:75"},"nativeSrc":"4461:15:75","nodeType":"YulFunctionCall","src":"4461:15:75"},"nativeSrc":"4461:15:75","nodeType":"YulExpressionStatement","src":"4461:15:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"4359:1:75","nodeType":"YulIdentifier","src":"4359:1:75"},{"name":"sum","nativeSrc":"4362:3:75","nodeType":"YulIdentifier","src":"4362:3:75"}],"functionName":{"name":"gt","nativeSrc":"4356:2:75","nodeType":"YulIdentifier","src":"4356:2:75"},"nativeSrc":"4356:10:75","nodeType":"YulFunctionCall","src":"4356:10:75"},"nativeSrc":"4353:133:75","nodeType":"YulIf","src":"4353:133:75"}]},"name":"checked_add_t_uint256","nativeSrc":"4270:222:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"4301:1:75","nodeType":"YulTypedName","src":"4301:1:75","type":""},{"name":"y","nativeSrc":"4304:1:75","nodeType":"YulTypedName","src":"4304:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"4310:3:75","nodeType":"YulTypedName","src":"4310:3:75","type":""}],"src":"4270:222:75"},{"body":{"nativeSrc":"4626:145:75","nodeType":"YulBlock","src":"4626:145:75","statements":[{"nativeSrc":"4636:26:75","nodeType":"YulAssignment","src":"4636:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4648:9:75","nodeType":"YulIdentifier","src":"4648:9:75"},{"kind":"number","nativeSrc":"4659:2:75","nodeType":"YulLiteral","src":"4659:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4644:3:75","nodeType":"YulIdentifier","src":"4644:3:75"},"nativeSrc":"4644:18:75","nodeType":"YulFunctionCall","src":"4644:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4636:4:75","nodeType":"YulIdentifier","src":"4636:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4678:9:75","nodeType":"YulIdentifier","src":"4678:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4693:6:75","nodeType":"YulIdentifier","src":"4693:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4709:3:75","nodeType":"YulLiteral","src":"4709:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4714:1:75","nodeType":"YulLiteral","src":"4714:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4705:3:75","nodeType":"YulIdentifier","src":"4705:3:75"},"nativeSrc":"4705:11:75","nodeType":"YulFunctionCall","src":"4705:11:75"},{"kind":"number","nativeSrc":"4718:1:75","nodeType":"YulLiteral","src":"4718:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4701:3:75","nodeType":"YulIdentifier","src":"4701:3:75"},"nativeSrc":"4701:19:75","nodeType":"YulFunctionCall","src":"4701:19:75"}],"functionName":{"name":"and","nativeSrc":"4689:3:75","nodeType":"YulIdentifier","src":"4689:3:75"},"nativeSrc":"4689:32:75","nodeType":"YulFunctionCall","src":"4689:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4671:6:75","nodeType":"YulIdentifier","src":"4671:6:75"},"nativeSrc":"4671:51:75","nodeType":"YulFunctionCall","src":"4671:51:75"},"nativeSrc":"4671:51:75","nodeType":"YulExpressionStatement","src":"4671:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4742:9:75","nodeType":"YulIdentifier","src":"4742:9:75"},{"kind":"number","nativeSrc":"4753:2:75","nodeType":"YulLiteral","src":"4753:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4738:3:75","nodeType":"YulIdentifier","src":"4738:3:75"},"nativeSrc":"4738:18:75","nodeType":"YulFunctionCall","src":"4738:18:75"},{"name":"value1","nativeSrc":"4758:6:75","nodeType":"YulIdentifier","src":"4758:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4731:6:75","nodeType":"YulIdentifier","src":"4731:6:75"},"nativeSrc":"4731:34:75","nodeType":"YulFunctionCall","src":"4731:34:75"},"nativeSrc":"4731:34:75","nodeType":"YulExpressionStatement","src":"4731:34:75"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"4497:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4587:9:75","nodeType":"YulTypedName","src":"4587:9:75","type":""},{"name":"value1","nativeSrc":"4598:6:75","nodeType":"YulTypedName","src":"4598:6:75","type":""},{"name":"value0","nativeSrc":"4606:6:75","nodeType":"YulTypedName","src":"4606:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4617:4:75","nodeType":"YulTypedName","src":"4617:4:75","type":""}],"src":"4497:274:75"}]},"contents":"{\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        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := 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_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_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_decode_tuple_t_bytes32(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_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_bytes32t_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_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    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__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}","id":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2172":[{"length":32,"start":517}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b5060043610610127575f3560e01c806340c10f19116100a9578063a217fddf1161006e578063a217fddf146102ab578063a9059cbb146102b2578063d5391393146102c5578063d547741f146102ec578063dd62ed3e146102ff575f5ffd5b806340c10f191461024257806370a082311461025557806391d148541461027d57806395d89b41146102905780639dc29fac14610298575f5ffd5b8063248a9ca3116100ef578063248a9ca3146101a0578063282c51f3146101c25780632f2ff15d146101e9578063313ce567146101fe57806336568abe1461022f575f5ffd5b806301ffc9a71461012b57806306fdde0314610153578063095ea7b31461016857806318160ddd1461017b57806323b872dd1461018d575b5f5ffd5b61013e6101393660046109f5565b610337565b60405190151581526020015b60405180910390f35b61015b61036d565b60405161014a9190610a23565b61013e610176366004610a73565b6103fd565b6002545b60405190815260200161014a565b61013e61019b366004610a9b565b610414565b61017f6101ae366004610ad5565b5f9081526005602052604090206001015490565b61017f7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6101fc6101f7366004610aec565b610437565b005b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161014a565b6101fc61023d366004610aec565b610461565b6101fc610250366004610a73565b610499565b61017f610263366004610b16565b6001600160a01b03165f9081526020819052604090205490565b61013e61028b366004610aec565b6104cd565b61015b6104f7565b6101fc6102a6366004610a73565b610506565b61017f5f81565b61013e6102c0366004610a73565b61053a565b61017f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101fc6102fa366004610aec565b610547565b61017f61030d366004610b2f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b5f6001600160e01b03198216637965db0b60e01b148061036757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461037c90610b57565b80601f01602080910402602001604051908101604052809291908181526020018280546103a890610b57565b80156103f35780601f106103ca576101008083540402835291602001916103f3565b820191905f5260205f20905b8154815290600101906020018083116103d657829003601f168201915b5050505050905090565b5f3361040a81858561056b565b5060019392505050565b5f33610421858285610578565b61042c8585856105f2565b506001949350505050565b5f828152600560205260409020600101546104518161064f565b61045b838361065c565b50505050565b6001600160a01b038116331461048a5760405163334bd91960e11b815260040160405180910390fd5b61049482826106ed565b505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66104c38161064f565b6104948383610758565b5f9182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461037c90610b57565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486105308161064f565b6104948383610790565b5f3361040a8185856105f2565b5f828152600560205260409020600101546105618161064f565b61045b83836106ed565b61049483838360016107c4565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461045b57818110156105e457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064015b60405180910390fd5b61045b84848484035f6107c4565b6001600160a01b03831661061b57604051634b637e8f60e11b81525f60048201526024016105db565b6001600160a01b0382166106445760405163ec442f0560e01b81525f60048201526024016105db565b610494838383610896565b61065981336109bc565b50565b5f61066783836104cd565b6106e6575f8381526005602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561069e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610367565b505f610367565b5f6106f883836104cd565b156106e6575f8381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610367565b6001600160a01b0382166107815760405163ec442f0560e01b81525f60048201526024016105db565b61078c5f8383610896565b5050565b6001600160a01b0382166107b957604051634b637e8f60e11b81525f60048201526024016105db565b61078c825f83610896565b6001600160a01b0384166107ed5760405163e602df0560e01b81525f60048201526024016105db565b6001600160a01b03831661081657604051634a1406b160e11b81525f60048201526024016105db565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561045b57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161088891815260200190565b60405180910390a350505050565b6001600160a01b0383166108c0578060025f8282546108b59190610b8f565b909155506109309050565b6001600160a01b0383165f90815260208190526040902054818110156109125760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016105db565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661094c5760028054829003905561096a565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109af91815260200190565b60405180910390a3505050565b6109c682826104cd565b61078c5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016105db565b5f60208284031215610a05575f5ffd5b81356001600160e01b031981168114610a1c575f5ffd5b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610a6e575f5ffd5b919050565b5f5f60408385031215610a84575f5ffd5b610a8d83610a58565b946020939093013593505050565b5f5f5f60608486031215610aad575f5ffd5b610ab684610a58565b9250610ac460208501610a58565b929592945050506040919091013590565b5f60208284031215610ae5575f5ffd5b5035919050565b5f5f60408385031215610afd575f5ffd5b82359150610b0d60208401610a58565b90509250929050565b5f60208284031215610b26575f5ffd5b610a1c82610a58565b5f5f60408385031215610b40575f5ffd5b610b4983610a58565b9150610b0d60208401610a58565b600181811c90821680610b6b57607f821691505b602082108103610b8957634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561036757634e487b7160e01b5f52601160045260245ffdfea26469706673582212201dd660bcb98f8ad3bf2beaec867f7d443ca2fd449e180af82d679e0e8ae68b4464736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x127 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0xA9 JUMPI DUP1 PUSH4 0xA217FDDF GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x2AB JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xD5391393 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x2EC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x298 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0xEF JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x282C51F3 EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1FE JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x22F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x18D JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13E PUSH2 0x139 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x36D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x176 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x3FD JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST PUSH2 0x13E PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0xA9B JUMP JUMPDEST PUSH2 0x414 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x1AE CALLDATASIZE PUSH1 0x4 PUSH2 0xAD5 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x17F PUSH32 0x3C11D16CBAFFD01DF69CE1C404F6340EE057498F5F00246190EA54220576A848 DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x437 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF PUSH32 0x0 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14A JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x23D CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x461 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x499 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0xB16 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 0x13E PUSH2 0x28B CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x15B PUSH2 0x4F7 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x2A6 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x506 JUMP JUMPDEST PUSH2 0x17F PUSH0 DUP2 JUMP JUMPDEST PUSH2 0x13E PUSH2 0x2C0 CALLDATASIZE PUSH1 0x4 PUSH2 0xA73 JUMP JUMPDEST PUSH2 0x53A JUMP JUMPDEST PUSH2 0x17F PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0xAEC JUMP JUMPDEST PUSH2 0x547 JUMP JUMPDEST PUSH2 0x17F PUSH2 0x30D CALLDATASIZE PUSH1 0x4 PUSH2 0xB2F 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 PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x367 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x37C SWAP1 PUSH2 0xB57 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 0x3A8 SWAP1 PUSH2 0xB57 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3F3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3CA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3F3 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 0x3D6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x40A DUP2 DUP6 DUP6 PUSH2 0x56B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x421 DUP6 DUP3 DUP6 PUSH2 0x578 JUMP JUMPDEST PUSH2 0x42C DUP6 DUP6 DUP6 PUSH2 0x5F2 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x451 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x45B DUP4 DUP4 PUSH2 0x65C JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x48A JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x494 DUP3 DUP3 PUSH2 0x6ED JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x9F2DF0FED2C77648DE5860A4CC508CD0818C85B8B8A1AB4CEEEF8D981C8956A6 PUSH2 0x4C3 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x758 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x37C SWAP1 PUSH2 0xB57 JUMP JUMPDEST PUSH32 0x3C11D16CBAFFD01DF69CE1C404F6340EE057498F5F00246190EA54220576A848 PUSH2 0x530 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 PUSH2 0x790 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x40A DUP2 DUP6 DUP6 PUSH2 0x5F2 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x561 DUP2 PUSH2 0x64F JUMP JUMPDEST PUSH2 0x45B DUP4 DUP4 PUSH2 0x6ED JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x7C4 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 EQ PUSH2 0x45B JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x5E4 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 0x45B DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x7C4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x61B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x644 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x494 DUP4 DUP4 DUP4 PUSH2 0x896 JUMP JUMPDEST PUSH2 0x659 DUP2 CALLER PUSH2 0x9BC JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH2 0x667 DUP4 DUP4 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x6E6 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x5 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 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x69E CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x367 JUMP JUMPDEST POP PUSH0 PUSH2 0x367 JUMP JUMPDEST PUSH0 PUSH2 0x6F8 DUP4 DUP4 PUSH2 0x4CD JUMP JUMPDEST ISZERO PUSH2 0x6E6 JUMPI PUSH0 DUP4 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP7 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP PUSH1 0x1 PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x781 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x78C PUSH0 DUP4 DUP4 PUSH2 0x896 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH2 0x78C DUP3 PUSH0 DUP4 PUSH2 0x896 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x7ED JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x5DB 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 0x45B 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 0x888 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 0x8C0 JUMPI DUP1 PUSH1 0x2 PUSH0 DUP3 DUP3 SLOAD PUSH2 0x8B5 SWAP2 SWAP1 PUSH2 0xB8F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x930 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 0x912 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 0x5DB 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 0x94C JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x96A 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 0x9AF SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9C6 DUP3 DUP3 PUSH2 0x4CD JUMP JUMPDEST PUSH2 0x78C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x5DB JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA05 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP4 SWAP3 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 0xA6E JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA84 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA8D DUP4 PUSH2 0xA58 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 0xAAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAB6 DUP5 PUSH2 0xA58 JUMP JUMPDEST SWAP3 POP PUSH2 0xAC4 PUSH1 0x20 DUP6 ADD PUSH2 0xA58 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 0xAE5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAFD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xB0D PUSH1 0x20 DUP5 ADD PUSH2 0xA58 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xA1C DUP3 PUSH2 0xA58 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xB49 DUP4 PUSH2 0xA58 JUMP JUMPDEST SWAP2 POP PUSH2 0xB0D PUSH1 0x20 DUP5 ADD PUSH2 0xA58 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB6B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0xB89 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 0x367 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xD6 PUSH1 0xBC 0xB9 DUP16 DUP11 0xD3 0xBF 0x2B 0xEA 0xEC DUP7 PUSH32 0x7D443CA2FD449E180AF82D679E0E8AE68B4464736F6C634300081C0033000000 ","sourceMap":"213:964:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2565:202:13;;;;;;:::i;:::-;;:::i;:::-;;;470:14:75;;463:22;445:41;;433:2;418:18;2565:202:13;;;;;;;;1779:89:30;;;:::i;:::-;;;;;;;:::i;3998:186::-;;;;;;:::i;:::-;;:::i;2849:97::-;2927:12;;2849:97;;;1549:25:75;;;1537:2;1522:18;2849:97:30;1403:177:75;4776:244:30;;;;;;:::i;:::-;;:::i;3810:120:13:-;;;;;;:::i;:::-;3875:7;3901:12;;;:6;:12;;;;;:22;;;;3810:120;329:62:5;;367:24;329:62;;4226:136:13;;;;;;:::i;:::-;;:::i;:::-;;709:92:5;;;2854:4:75;787:9:5;2842:17:75;2824:36;;2812:2;2797:18;709:92:5;2682:184:75;5328:245:13;;;;;;:::i;:::-;;:::i;805:183:5:-;;;;;;:::i;:::-;;:::i;3004:116:30:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:18:30;3069:7;3095:18;;;;;;;;;;;;3004:116;2854:136:13;;;;;;:::i;:::-;;:::i;1981:93:30:-;;;:::i;992:183:5:-;;;;;;:::i;:::-;;:::i;2187:49:13:-;;2232:4;2187:49;;3315:178:30;;;;;;:::i;:::-;;:::i;263:62:5:-;;301:24;263:62;;4642:138:13;;;;;;:::i;:::-;;:::i;3551:140:30:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3657:18:30;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140;2565:202:13;2650:4;-1:-1:-1;;;;;;2673:47:13;;-1:-1:-1;;;2673:47:13;;:87;;-1:-1:-1;;;;;;;;;;862:40:40;;;2724:36:13;2666:94;2565:202;-1:-1:-1;;2565:202:13:o;1779:89:30:-;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:35;4125:31:30;735:10:35;4141:7:30;4150:5;4125:8;:31::i;:::-;-1:-1:-1;4173:4:30;;3998:186;-1:-1:-1;;;3998:186:30:o;4776:244::-;4863:4;735:10:35;4919:37:30;4935:4;735:10:35;4950:5:30;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:30;;4776:244;-1:-1:-1;;;;4776:244:30:o;4226:136:13:-;3875:7;3901:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4330:25:::1;4341:4;4347:7;4330:10;:25::i;:::-;;4226:136:::0;;;:::o;5328:245::-;-1:-1:-1;;;;;5421:34:13;;735:10:35;5421:34:13;5417:102;;5478:30;;-1:-1:-1;;;5478:30:13;;;;;;;;;;;5417:102;5529:37;5541:4;5547:18;5529:11;:37::i;:::-;;5328:245;;:::o;805:183:5:-;301:24;2464:16:13;2475:4;2464:10;:16::i;:::-;959:24:5::1;965:9;976:6;959:5;:24::i;2854:136:13:-:0;2931:4;2954:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;2954:29:13;;;;;;;;;;;;;;;2854:136::o;1981:93:30:-;2028:13;2060:7;2053:14;;;;;:::i;992:183:5:-;367:24;2464:16:13;2475:4;2464:10;:16::i;:::-;1146:24:5::1;1152:9;1163:6;1146:5;:24::i;3315:178:30:-:0;3384:4;735:10:35;3438:27:30;735:10:35;3455:2:30;3459:5;3438:9;:27::i;4642:138:13:-;3875:7;3901:12;;;:6;:12;;;;;:22;;;2464:16;2475:4;2464:10;:16::i;:::-;4747:26:::1;4759:4;4765:7;4747:11;:26::i;8726:128:30:-:0;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;10415:477::-;-1:-1:-1;;;;;3657:18:30;;;10514:24;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10580:37:30;;10576:310;;10656:5;10637:16;:24;10633:130;;;10688:60;;-1:-1:-1;;;10688:60:30;;-1:-1:-1;;;;;3932:32:75;;10688:60:30;;;3914:51:75;3981:18;;;3974:34;;;4024:18;;;4017:34;;;3887:18;;10688:60:30;;;;;;;;10633:130;10804:57;10813:5;10820:7;10848:5;10829:16;:24;10855:5;10804:8;:57::i;5393:300::-;-1:-1:-1;;;;;5476:18:30;;5472:86;;5517:30;;-1:-1:-1;;;5517:30:30;;5544:1;5517:30;;;4208:51:75;4181:18;;5517:30:30;4062:203:75;5472:86:30;-1:-1:-1;;;;;5571:16:30;;5567:86;;5610:32;;-1:-1:-1;;;5610:32:30;;5639:1;5610:32;;;4208:51:75;4181:18;;5610:32:30;4062:203:75;5567:86:30;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;3199:103:13:-;3265:30;3276:4;735:10:35;3265::13;:30::i;:::-;3199:103;:::o;6179:316::-;6256:4;6277:22;6285:4;6291:7;6277;:22::i;:::-;6272:217;;6315:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6315:29:13;;;;;;;;;:36;;-1:-1:-1;;6315:36:13;6347:4;6315:36;;;6397:12;735:10:35;;656:96;6397:12:13;-1:-1:-1;;;;;6370:40:13;6388:7;-1:-1:-1;;;;;6370:40:13;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:13;6424:11;;6272:217;-1:-1:-1;6473:5:13;6466:12;;6730:317;6808:4;6828:22;6836:4;6842:7;6828;:22::i;:::-;6824:217;;;6898:5;6866:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6866:29:13;;;;;;;;;;:37;;-1:-1:-1;;6866:37:13;;;6922:40;735:10:35;;6866:12:13;;6922:40;;6898:5;6922:40;-1:-1:-1;6983:4:13;6976:11;;7458:208:30;-1:-1:-1;;;;;7528:21:30;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:30;;7601:1;7572:32;;;4208:51:75;4181:18;;7572:32:30;4062:203:75;7524:91:30;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;:::-;7458:208;;:::o;7984:206::-;-1:-1:-1;;;;;8054:21:30;;8050:89;;8098:30;;-1:-1:-1;;;8098:30:30;;8125:1;8098:30;;;4208:51:75;4181:18;;8098:30:30;4062:203:75;8050:89:30;8148:35;8156:7;8173:1;8177:5;8148:7;:35::i;9701:432::-;-1:-1:-1;;;;;9813:19:30;;9809:89;;9855:32;;-1:-1:-1;;;9855:32:30;;9884:1;9855:32;;;4208:51:75;4181:18;;9855:32:30;4062:203:75;9809:89:30;-1:-1:-1;;;;;9911:21:30;;9907:90;;9955:31;;-1:-1:-1;;;9955:31:30;;9983:1;9955:31;;;4208:51:75;4181:18;;9955:31:30;4062:203:75;9907:90:30;-1:-1:-1;;;;;10006:18:30;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;-1:-1:-1;;;;;10085:31:30;10094:5;-1:-1:-1;;;;;10085:31:30;;10110:5;10085:31;;;;1549:25:75;;1537:2;1522:18;;1403:177;10085:31:30;;;;;;;;9701:432;;;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:30;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:30;;-1:-1:-1;6093:540:30;;-1:-1:-1;;;;;6307:15:30;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:30;;-1:-1:-1;;;;;3932:32:75;;6386:50:30;;;3914:51:75;3981:18;;;3974:34;;;4024:18;;;4017:34;;;3887:18;;6386:50:30;3712:345:75;6336:115:30;-1:-1:-1;;;;;6571:15:30;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:30;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:30;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:30;7092:4;-1:-1:-1;;;;;7083:25:30;;7102:5;7083:25;;;;1549::75;;1537:2;1522:18;;1403:177;7083:25:30;;;;;;;;6008:1107;;;:::o;3432:197:13:-;3520:22;3528:4;3534:7;3520;:22::i;:::-;3515:108;;3565:47;;-1:-1:-1;;;3565:47:13;;-1:-1:-1;;;;;4689:32:75;;3565:47:13;;;4671:51:75;4738:18;;;4731:34;;;4644:18;;3565:47:13;4497:274:75;14:286;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:75;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:75:o;497:418::-;646:2;635:9;628:21;609:4;678:6;672:13;721:6;716:2;705:9;701:18;694:34;780:6;775:2;767:6;763:15;758:2;747:9;743:18;737:50;836:1;831:2;822:6;811:9;807:22;803:31;796:42;906:2;899;895:7;890:2;882:6;878:15;874:29;863:9;859:45;855:54;847:62;;;497:418;;;;:::o;920:173::-;988:20;;-1:-1:-1;;;;;1037:31:75;;1027:42;;1017:70;;1083:1;1080;1073:12;1017:70;920:173;;;:::o;1098:300::-;1166:6;1174;1227:2;1215:9;1206:7;1202:23;1198:32;1195:52;;;1243:1;1240;1233:12;1195:52;1266:29;1285:9;1266:29;:::i;:::-;1256:39;1364:2;1349:18;;;;1336:32;;-1:-1:-1;;;1098:300:75:o;1585:374::-;1662:6;1670;1678;1731:2;1719:9;1710:7;1706:23;1702:32;1699:52;;;1747:1;1744;1737:12;1699:52;1770:29;1789:9;1770:29;:::i;:::-;1760:39;;1818:38;1852:2;1841:9;1837:18;1818:38;:::i;:::-;1585:374;;1808:48;;-1:-1:-1;;;1925:2:75;1910:18;;;;1897:32;;1585:374::o;1964:226::-;2023:6;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;-1:-1:-1;2137:23:75;;1964:226;-1:-1:-1;1964:226:75:o;2377:300::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2567:23;;;-1:-1:-1;2633:38:75;2667:2;2652:18;;2633:38;:::i;:::-;2623:48;;2377:300;;;;;:::o;2871:186::-;2930:6;2983:2;2971:9;2962:7;2958:23;2954:32;2951:52;;;2999:1;2996;2989:12;2951:52;3022:29;3041:9;3022:29;:::i;3062:260::-;3130:6;3138;3191:2;3179:9;3170:7;3166:23;3162:32;3159:52;;;3207:1;3204;3197:12;3159:52;3230:29;3249:9;3230:29;:::i;:::-;3220:39;;3278:38;3312:2;3301:9;3297:18;3278:38;:::i;3327:380::-;3406:1;3402:12;;;;3449;;;3470:61;;3524:4;3516:6;3512:17;3502:27;;3470:61;3577:2;3569:6;3566:14;3546:18;3543:38;3540:161;;3623:10;3618:3;3614:20;3611:1;3604:31;3658:4;3655:1;3648:15;3686:4;3683:1;3676:15;3540:161;;3327:380;;;:::o;4270:222::-;4335:9;;;4356:10;;;4353:133;;;4408:10;4403:3;4399:20;4396:1;4389:31;4443:4;4440:1;4433:15;4471:4;4468:1;4461:15"},"methodIdentifiers":{"BURNER_ROLE()":"282c51f3","DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","name()":"06fdde03","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\":[],\"name\":\"BURNER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the 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}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensuro/utils/contracts/TestCurrency.sol\":{\"keccak256\":\"0x896e72fd6b8b3e3996a01dac23d24d6f127531eb779aa30f4d94f37dc4a44165\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4f3236e39041de8f04ae4b5cee689b839a2f97f676c49d090e6d73b904ecac5a\",\"dweb:/ipfs/QmWtZDBDjRogsPmbDxnQnreRwtDC7FPZ2VExZWdxmFhrT9\"]},\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8086,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8092,"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":8094,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8096,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8098,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"},{"astId":4540,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"_roles","offset":0,"slot":"5","type":"t_mapping(t_bytes32,t_struct(RoleData)4535_storage)"}],"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_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_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_mapping(t_bytes32,t_struct(RoleData)4535_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)4535_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(RoleData)4535_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":4532,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":4534,"contract":"@ensuro/utils/contracts/TestCurrency.sol:TestCurrency","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}}},"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol":{"AccessControlUpgradeable":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/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.28+commit.7893614a\"},\"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-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/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":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"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.28+commit.7893614a\"},\"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\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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\":{\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"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-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@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.28+commit.7893614a\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the 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\":\"See {IERC20-totalSupply}.\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"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.28+commit.7893614a\"},\"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: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]. ====\",\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"redeem(uint256,address,address)\":{\"details\":\"See {IERC4626-redeem}. \"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":\"ERC4626Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol":{"ERC165Upgradeable":{"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"},{"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.28+commit.7893614a\"},\"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\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"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\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/access/AccessControl.sol":{"AccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":{"DEFAULT_ADMIN_ROLE()":"a217fddf","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":4540,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"_roles","offset":0,"slot":"0","type":"t_mapping(t_bytes32,t_struct(RoleData)4535_storage)"}],"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_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_bytes32,t_struct(RoleData)4535_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessControl.RoleData)","numberOfBytes":"32","value":"t_struct(RoleData)4535_storage"},"t_struct(RoleData)4535_storage":{"encoding":"inplace","label":"struct AccessControl.RoleData","members":[{"astId":4532,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"hasRole","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":4534,"contract":"@openzeppelin/contracts/access/AccessControl.sol:AccessControl","label":"adminRole","offset":0,"slot":"1","type":"t_bytes32"}],"numberOfBytes":"64"}}}}},"@openzeppelin/contracts/access/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]}},\"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":{"@_5020":{"entryPoint":null,"id":5020,"parameterSlots":1,"returnSlots":0},"@_getFullAt_13164":{"entryPoint":1016,"id":13164,"parameterSlots":2,"returnSlots":3},"@_grantRole_5524":{"entryPoint":111,"id":5524,"parameterSlots":4,"returnSlots":1},"@getFull_13184":{"entryPoint":983,"id":13184,"parameterSlots":1,"returnSlots":3},"@get_13202":{"entryPoint":937,"id":13202,"parameterSlots":1,"returnSlots":1},"@max_9919":{"entryPoint":967,"id":9919,"parameterSlots":2,"returnSlots":1},"@pack_13347":{"entryPoint":null,"id":13347,"parameterSlots":3,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@timestamp_13096":{"entryPoint":693,"id":13096,"parameterSlots":0,"returnSlots":1},"@toDelay_13126":{"entryPoint":708,"id":13126,"parameterSlots":1,"returnSlots":1},"@toUint48_12064":{"entryPoint":883,"id":12064,"parameterSlots":1,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@unpack_13309":{"entryPoint":null,"id":13309,"parameterSlots":1,"returnSlots":3},"@withUpdate_13258":{"entryPoint":717,"id":13258,"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:75","nodeType":"YulBlock","src":"0:1849:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"95:209:75","nodeType":"YulBlock","src":"95:209:75","statements":[{"body":{"nativeSrc":"141:16:75","nodeType":"YulBlock","src":"141:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:75","nodeType":"YulLiteral","src":"150:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:75","nodeType":"YulLiteral","src":"153:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:75","nodeType":"YulIdentifier","src":"143:6:75"},"nativeSrc":"143:12:75","nodeType":"YulFunctionCall","src":"143:12:75"},"nativeSrc":"143:12:75","nodeType":"YulExpressionStatement","src":"143:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:75","nodeType":"YulIdentifier","src":"116:7:75"},{"name":"headStart","nativeSrc":"125:9:75","nodeType":"YulIdentifier","src":"125:9:75"}],"functionName":{"name":"sub","nativeSrc":"112:3:75","nodeType":"YulIdentifier","src":"112:3:75"},"nativeSrc":"112:23:75","nodeType":"YulFunctionCall","src":"112:23:75"},{"kind":"number","nativeSrc":"137:2:75","nodeType":"YulLiteral","src":"137:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:75","nodeType":"YulIdentifier","src":"108:3:75"},"nativeSrc":"108:32:75","nodeType":"YulFunctionCall","src":"108:32:75"},"nativeSrc":"105:52:75","nodeType":"YulIf","src":"105:52:75"},{"nativeSrc":"166:29:75","nodeType":"YulVariableDeclaration","src":"166:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:75","nodeType":"YulIdentifier","src":"185:9:75"}],"functionName":{"name":"mload","nativeSrc":"179:5:75","nodeType":"YulIdentifier","src":"179:5:75"},"nativeSrc":"179:16:75","nodeType":"YulFunctionCall","src":"179:16:75"},"variables":[{"name":"value","nativeSrc":"170:5:75","nodeType":"YulTypedName","src":"170:5:75","type":""}]},{"body":{"nativeSrc":"258:16:75","nodeType":"YulBlock","src":"258:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:75","nodeType":"YulLiteral","src":"267:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:75","nodeType":"YulLiteral","src":"270:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:75","nodeType":"YulIdentifier","src":"260:6:75"},"nativeSrc":"260:12:75","nodeType":"YulFunctionCall","src":"260:12:75"},"nativeSrc":"260:12:75","nodeType":"YulExpressionStatement","src":"260:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:75","nodeType":"YulIdentifier","src":"217:5:75"},{"arguments":[{"name":"value","nativeSrc":"228:5:75","nodeType":"YulIdentifier","src":"228:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:75","nodeType":"YulLiteral","src":"243:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:75","nodeType":"YulLiteral","src":"248:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:75","nodeType":"YulIdentifier","src":"239:3:75"},"nativeSrc":"239:11:75","nodeType":"YulFunctionCall","src":"239:11:75"},{"kind":"number","nativeSrc":"252:1:75","nodeType":"YulLiteral","src":"252:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:75","nodeType":"YulIdentifier","src":"235:3:75"},"nativeSrc":"235:19:75","nodeType":"YulFunctionCall","src":"235:19:75"}],"functionName":{"name":"and","nativeSrc":"224:3:75","nodeType":"YulIdentifier","src":"224:3:75"},"nativeSrc":"224:31:75","nodeType":"YulFunctionCall","src":"224:31:75"}],"functionName":{"name":"eq","nativeSrc":"214:2:75","nodeType":"YulIdentifier","src":"214:2:75"},"nativeSrc":"214:42:75","nodeType":"YulFunctionCall","src":"214:42:75"}],"functionName":{"name":"iszero","nativeSrc":"207:6:75","nodeType":"YulIdentifier","src":"207:6:75"},"nativeSrc":"207:50:75","nodeType":"YulFunctionCall","src":"207:50:75"},"nativeSrc":"204:70:75","nodeType":"YulIf","src":"204:70:75"},{"nativeSrc":"283:15:75","nodeType":"YulAssignment","src":"283:15:75","value":{"name":"value","nativeSrc":"293:5:75","nodeType":"YulIdentifier","src":"293:5:75"},"variableNames":[{"name":"value0","nativeSrc":"283:6:75","nodeType":"YulIdentifier","src":"283:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:75","nodeType":"YulTypedName","src":"61:9:75","type":""},{"name":"dataEnd","nativeSrc":"72:7:75","nodeType":"YulTypedName","src":"72:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:75","nodeType":"YulTypedName","src":"84:6:75","type":""}],"src":"14:290:75"},{"body":{"nativeSrc":"410:102:75","nodeType":"YulBlock","src":"410:102:75","statements":[{"nativeSrc":"420:26:75","nodeType":"YulAssignment","src":"420:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"432:9:75","nodeType":"YulIdentifier","src":"432:9:75"},{"kind":"number","nativeSrc":"443:2:75","nodeType":"YulLiteral","src":"443:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"428:3:75","nodeType":"YulIdentifier","src":"428:3:75"},"nativeSrc":"428:18:75","nodeType":"YulFunctionCall","src":"428:18:75"},"variableNames":[{"name":"tail","nativeSrc":"420:4:75","nodeType":"YulIdentifier","src":"420:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"462:9:75","nodeType":"YulIdentifier","src":"462:9:75"},{"arguments":[{"name":"value0","nativeSrc":"477:6:75","nodeType":"YulIdentifier","src":"477:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"493:3:75","nodeType":"YulLiteral","src":"493:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"498:1:75","nodeType":"YulLiteral","src":"498:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"489:3:75","nodeType":"YulIdentifier","src":"489:3:75"},"nativeSrc":"489:11:75","nodeType":"YulFunctionCall","src":"489:11:75"},{"kind":"number","nativeSrc":"502:1:75","nodeType":"YulLiteral","src":"502:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"485:3:75","nodeType":"YulIdentifier","src":"485:3:75"},"nativeSrc":"485:19:75","nodeType":"YulFunctionCall","src":"485:19:75"}],"functionName":{"name":"and","nativeSrc":"473:3:75","nodeType":"YulIdentifier","src":"473:3:75"},"nativeSrc":"473:32:75","nodeType":"YulFunctionCall","src":"473:32:75"}],"functionName":{"name":"mstore","nativeSrc":"455:6:75","nodeType":"YulIdentifier","src":"455:6:75"},"nativeSrc":"455:51:75","nodeType":"YulFunctionCall","src":"455:51:75"},"nativeSrc":"455:51:75","nodeType":"YulExpressionStatement","src":"455:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"309:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"379:9:75","nodeType":"YulTypedName","src":"379:9:75","type":""},{"name":"value0","nativeSrc":"390:6:75","nodeType":"YulTypedName","src":"390:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"401:4:75","nodeType":"YulTypedName","src":"401:4:75","type":""}],"src":"309:203:75"},{"body":{"nativeSrc":"616:101:75","nodeType":"YulBlock","src":"616:101:75","statements":[{"nativeSrc":"626:26:75","nodeType":"YulAssignment","src":"626:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"638:9:75","nodeType":"YulIdentifier","src":"638:9:75"},{"kind":"number","nativeSrc":"649:2:75","nodeType":"YulLiteral","src":"649:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"634:3:75","nodeType":"YulIdentifier","src":"634:3:75"},"nativeSrc":"634:18:75","nodeType":"YulFunctionCall","src":"634:18:75"},"variableNames":[{"name":"tail","nativeSrc":"626:4:75","nodeType":"YulIdentifier","src":"626:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"668:9:75","nodeType":"YulIdentifier","src":"668:9:75"},{"arguments":[{"name":"value0","nativeSrc":"683:6:75","nodeType":"YulIdentifier","src":"683:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"699:2:75","nodeType":"YulLiteral","src":"699:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"703:1:75","nodeType":"YulLiteral","src":"703:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"695:3:75","nodeType":"YulIdentifier","src":"695:3:75"},"nativeSrc":"695:10:75","nodeType":"YulFunctionCall","src":"695:10:75"},{"kind":"number","nativeSrc":"707:1:75","nodeType":"YulLiteral","src":"707:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"691:3:75","nodeType":"YulIdentifier","src":"691:3:75"},"nativeSrc":"691:18:75","nodeType":"YulFunctionCall","src":"691:18:75"}],"functionName":{"name":"and","nativeSrc":"679:3:75","nodeType":"YulIdentifier","src":"679:3:75"},"nativeSrc":"679:31:75","nodeType":"YulFunctionCall","src":"679:31:75"}],"functionName":{"name":"mstore","nativeSrc":"661:6:75","nodeType":"YulIdentifier","src":"661:6:75"},"nativeSrc":"661:50:75","nodeType":"YulFunctionCall","src":"661:50:75"},"nativeSrc":"661:50:75","nodeType":"YulExpressionStatement","src":"661:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"517:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"585:9:75","nodeType":"YulTypedName","src":"585:9:75","type":""},{"name":"value0","nativeSrc":"596:6:75","nodeType":"YulTypedName","src":"596:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"607:4:75","nodeType":"YulTypedName","src":"607:4:75","type":""}],"src":"517:200:75"},{"body":{"nativeSrc":"754:95:75","nodeType":"YulBlock","src":"754:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"771:1:75","nodeType":"YulLiteral","src":"771:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"778:3:75","nodeType":"YulLiteral","src":"778:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"783:10:75","nodeType":"YulLiteral","src":"783:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"774:3:75","nodeType":"YulIdentifier","src":"774:3:75"},"nativeSrc":"774:20:75","nodeType":"YulFunctionCall","src":"774:20:75"}],"functionName":{"name":"mstore","nativeSrc":"764:6:75","nodeType":"YulIdentifier","src":"764:6:75"},"nativeSrc":"764:31:75","nodeType":"YulFunctionCall","src":"764:31:75"},"nativeSrc":"764:31:75","nodeType":"YulExpressionStatement","src":"764:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"811:1:75","nodeType":"YulLiteral","src":"811:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"814:4:75","nodeType":"YulLiteral","src":"814:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"804:6:75","nodeType":"YulIdentifier","src":"804:6:75"},"nativeSrc":"804:15:75","nodeType":"YulFunctionCall","src":"804:15:75"},"nativeSrc":"804:15:75","nodeType":"YulExpressionStatement","src":"804:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"835:1:75","nodeType":"YulLiteral","src":"835:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"838:4:75","nodeType":"YulLiteral","src":"838:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"828:6:75","nodeType":"YulIdentifier","src":"828:6:75"},"nativeSrc":"828:15:75","nodeType":"YulFunctionCall","src":"828:15:75"},"nativeSrc":"828:15:75","nodeType":"YulExpressionStatement","src":"828:15:75"}]},"name":"panic_error_0x11","nativeSrc":"722:127:75","nodeType":"YulFunctionDefinition","src":"722:127:75"},{"body":{"nativeSrc":"901:132:75","nodeType":"YulBlock","src":"901:132:75","statements":[{"nativeSrc":"911:58:75","nodeType":"YulAssignment","src":"911:58:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"926:1:75","nodeType":"YulIdentifier","src":"926:1:75"},{"kind":"number","nativeSrc":"929:14:75","nodeType":"YulLiteral","src":"929:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"922:3:75","nodeType":"YulIdentifier","src":"922:3:75"},"nativeSrc":"922:22:75","nodeType":"YulFunctionCall","src":"922:22:75"},{"arguments":[{"name":"y","nativeSrc":"950:1:75","nodeType":"YulIdentifier","src":"950:1:75"},{"kind":"number","nativeSrc":"953:14:75","nodeType":"YulLiteral","src":"953:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"946:3:75","nodeType":"YulIdentifier","src":"946:3:75"},"nativeSrc":"946:22:75","nodeType":"YulFunctionCall","src":"946:22:75"}],"functionName":{"name":"add","nativeSrc":"918:3:75","nodeType":"YulIdentifier","src":"918:3:75"},"nativeSrc":"918:51:75","nodeType":"YulFunctionCall","src":"918:51:75"},"variableNames":[{"name":"sum","nativeSrc":"911:3:75","nodeType":"YulIdentifier","src":"911:3:75"}]},{"body":{"nativeSrc":"1005:22:75","nodeType":"YulBlock","src":"1005:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"1007:16:75","nodeType":"YulIdentifier","src":"1007:16:75"},"nativeSrc":"1007:18:75","nodeType":"YulFunctionCall","src":"1007:18:75"},"nativeSrc":"1007:18:75","nodeType":"YulExpressionStatement","src":"1007:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"984:3:75","nodeType":"YulIdentifier","src":"984:3:75"},{"kind":"number","nativeSrc":"989:14:75","nodeType":"YulLiteral","src":"989:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"981:2:75","nodeType":"YulIdentifier","src":"981:2:75"},"nativeSrc":"981:23:75","nodeType":"YulFunctionCall","src":"981:23:75"},"nativeSrc":"978:49:75","nodeType":"YulIf","src":"978:49:75"}]},"name":"checked_add_t_uint48","nativeSrc":"854:179:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"884:1:75","nodeType":"YulTypedName","src":"884:1:75","type":""},{"name":"y","nativeSrc":"887:1:75","nodeType":"YulTypedName","src":"887:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"893:3:75","nodeType":"YulTypedName","src":"893:3:75","type":""}],"src":"854:179:75"},{"body":{"nativeSrc":"1185:216:75","nodeType":"YulBlock","src":"1185:216:75","statements":[{"nativeSrc":"1195:26:75","nodeType":"YulAssignment","src":"1195:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1207:9:75","nodeType":"YulIdentifier","src":"1207:9:75"},{"kind":"number","nativeSrc":"1218:2:75","nodeType":"YulLiteral","src":"1218:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1203:3:75","nodeType":"YulIdentifier","src":"1203:3:75"},"nativeSrc":"1203:18:75","nodeType":"YulFunctionCall","src":"1203:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1195:4:75","nodeType":"YulIdentifier","src":"1195:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1237:9:75","nodeType":"YulIdentifier","src":"1237:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1252:6:75","nodeType":"YulIdentifier","src":"1252:6:75"},{"kind":"number","nativeSrc":"1260:10:75","nodeType":"YulLiteral","src":"1260:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1248:3:75","nodeType":"YulIdentifier","src":"1248:3:75"},"nativeSrc":"1248:23:75","nodeType":"YulFunctionCall","src":"1248:23:75"}],"functionName":{"name":"mstore","nativeSrc":"1230:6:75","nodeType":"YulIdentifier","src":"1230:6:75"},"nativeSrc":"1230:42:75","nodeType":"YulFunctionCall","src":"1230:42:75"},"nativeSrc":"1230:42:75","nodeType":"YulExpressionStatement","src":"1230:42:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1292:9:75","nodeType":"YulIdentifier","src":"1292:9:75"},{"kind":"number","nativeSrc":"1303:2:75","nodeType":"YulLiteral","src":"1303:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1288:3:75","nodeType":"YulIdentifier","src":"1288:3:75"},"nativeSrc":"1288:18:75","nodeType":"YulFunctionCall","src":"1288:18:75"},{"arguments":[{"name":"value1","nativeSrc":"1312:6:75","nodeType":"YulIdentifier","src":"1312:6:75"},{"kind":"number","nativeSrc":"1320:14:75","nodeType":"YulLiteral","src":"1320:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1308:3:75","nodeType":"YulIdentifier","src":"1308:3:75"},"nativeSrc":"1308:27:75","nodeType":"YulFunctionCall","src":"1308:27:75"}],"functionName":{"name":"mstore","nativeSrc":"1281:6:75","nodeType":"YulIdentifier","src":"1281:6:75"},"nativeSrc":"1281:55:75","nodeType":"YulFunctionCall","src":"1281:55:75"},"nativeSrc":"1281:55:75","nodeType":"YulExpressionStatement","src":"1281:55:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1356:9:75","nodeType":"YulIdentifier","src":"1356:9:75"},{"kind":"number","nativeSrc":"1367:2:75","nodeType":"YulLiteral","src":"1367:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1352:3:75","nodeType":"YulIdentifier","src":"1352:3:75"},"nativeSrc":"1352:18:75","nodeType":"YulFunctionCall","src":"1352:18:75"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"1386:6:75","nodeType":"YulIdentifier","src":"1386:6:75"}],"functionName":{"name":"iszero","nativeSrc":"1379:6:75","nodeType":"YulIdentifier","src":"1379:6:75"},"nativeSrc":"1379:14:75","nodeType":"YulFunctionCall","src":"1379:14:75"}],"functionName":{"name":"iszero","nativeSrc":"1372:6:75","nodeType":"YulIdentifier","src":"1372:6:75"},"nativeSrc":"1372:22:75","nodeType":"YulFunctionCall","src":"1372:22:75"}],"functionName":{"name":"mstore","nativeSrc":"1345:6:75","nodeType":"YulIdentifier","src":"1345:6:75"},"nativeSrc":"1345:50:75","nodeType":"YulFunctionCall","src":"1345:50:75"},"nativeSrc":"1345:50:75","nodeType":"YulExpressionStatement","src":"1345:50:75"}]},"name":"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed","nativeSrc":"1038:363:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1138:9:75","nodeType":"YulTypedName","src":"1138:9:75","type":""},{"name":"value2","nativeSrc":"1149:6:75","nodeType":"YulTypedName","src":"1149:6:75","type":""},{"name":"value1","nativeSrc":"1157:6:75","nodeType":"YulTypedName","src":"1157:6:75","type":""},{"name":"value0","nativeSrc":"1165:6:75","nodeType":"YulTypedName","src":"1165:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1176:4:75","nodeType":"YulTypedName","src":"1176:4:75","type":""}],"src":"1038:363:75"},{"body":{"nativeSrc":"1454:122:75","nodeType":"YulBlock","src":"1454:122:75","statements":[{"nativeSrc":"1464:51:75","nodeType":"YulAssignment","src":"1464:51:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"1480:1:75","nodeType":"YulIdentifier","src":"1480:1:75"},{"kind":"number","nativeSrc":"1483:10:75","nodeType":"YulLiteral","src":"1483:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1476:3:75","nodeType":"YulIdentifier","src":"1476:3:75"},"nativeSrc":"1476:18:75","nodeType":"YulFunctionCall","src":"1476:18:75"},{"arguments":[{"name":"y","nativeSrc":"1500:1:75","nodeType":"YulIdentifier","src":"1500:1:75"},{"kind":"number","nativeSrc":"1503:10:75","nodeType":"YulLiteral","src":"1503:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1496:3:75","nodeType":"YulIdentifier","src":"1496:3:75"},"nativeSrc":"1496:18:75","nodeType":"YulFunctionCall","src":"1496:18:75"}],"functionName":{"name":"sub","nativeSrc":"1472:3:75","nodeType":"YulIdentifier","src":"1472:3:75"},"nativeSrc":"1472:43:75","nodeType":"YulFunctionCall","src":"1472:43:75"},"variableNames":[{"name":"diff","nativeSrc":"1464:4:75","nodeType":"YulIdentifier","src":"1464:4:75"}]},{"body":{"nativeSrc":"1548:22:75","nodeType":"YulBlock","src":"1548:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"1550:16:75","nodeType":"YulIdentifier","src":"1550:16:75"},"nativeSrc":"1550:18:75","nodeType":"YulFunctionCall","src":"1550:18:75"},"nativeSrc":"1550:18:75","nodeType":"YulExpressionStatement","src":"1550:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"1530:4:75","nodeType":"YulIdentifier","src":"1530:4:75"},{"kind":"number","nativeSrc":"1536:10:75","nodeType":"YulLiteral","src":"1536:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"gt","nativeSrc":"1527:2:75","nodeType":"YulIdentifier","src":"1527:2:75"},"nativeSrc":"1527:20:75","nodeType":"YulFunctionCall","src":"1527:20:75"},"nativeSrc":"1524:46:75","nodeType":"YulIf","src":"1524:46:75"}]},"name":"checked_sub_t_uint32","nativeSrc":"1406:170:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"1436:1:75","nodeType":"YulTypedName","src":"1436:1:75","type":""},{"name":"y","nativeSrc":"1439:1:75","nodeType":"YulTypedName","src":"1439:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"1445:4:75","nodeType":"YulTypedName","src":"1445:4:75","type":""}],"src":"1406:170:75"},{"body":{"nativeSrc":"1717:130:75","nodeType":"YulBlock","src":"1717:130:75","statements":[{"nativeSrc":"1727:26:75","nodeType":"YulAssignment","src":"1727:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1739:9:75","nodeType":"YulIdentifier","src":"1739:9:75"},{"kind":"number","nativeSrc":"1750:2:75","nodeType":"YulLiteral","src":"1750:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1735:3:75","nodeType":"YulIdentifier","src":"1735:3:75"},"nativeSrc":"1735:18:75","nodeType":"YulFunctionCall","src":"1735:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1727:4:75","nodeType":"YulIdentifier","src":"1727:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1769:9:75","nodeType":"YulIdentifier","src":"1769:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1784:6:75","nodeType":"YulIdentifier","src":"1784:6:75"},{"kind":"number","nativeSrc":"1792:4:75","nodeType":"YulLiteral","src":"1792:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1780:3:75","nodeType":"YulIdentifier","src":"1780:3:75"},"nativeSrc":"1780:17:75","nodeType":"YulFunctionCall","src":"1780:17:75"}],"functionName":{"name":"mstore","nativeSrc":"1762:6:75","nodeType":"YulIdentifier","src":"1762:6:75"},"nativeSrc":"1762:36:75","nodeType":"YulFunctionCall","src":"1762:36:75"},"nativeSrc":"1762:36:75","nodeType":"YulExpressionStatement","src":"1762:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1818:9:75","nodeType":"YulIdentifier","src":"1818:9:75"},{"kind":"number","nativeSrc":"1829:2:75","nodeType":"YulLiteral","src":"1829:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1814:3:75","nodeType":"YulIdentifier","src":"1814:3:75"},"nativeSrc":"1814:18:75","nodeType":"YulFunctionCall","src":"1814:18:75"},{"name":"value1","nativeSrc":"1834:6:75","nodeType":"YulIdentifier","src":"1834:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1807:6:75","nodeType":"YulIdentifier","src":"1807:6:75"},"nativeSrc":"1807:34:75","nodeType":"YulFunctionCall","src":"1807:34:75"},"nativeSrc":"1807:34:75","nodeType":"YulExpressionStatement","src":"1807:34:75"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"1581:266:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1678:9:75","nodeType":"YulTypedName","src":"1678:9:75","type":""},{"name":"value1","nativeSrc":"1689:6:75","nodeType":"YulTypedName","src":"1689:6:75","type":""},{"name":"value0","nativeSrc":"1697:6:75","nodeType":"YulTypedName","src":"1697:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1708:4:75","nodeType":"YulTypedName","src":"1708:4:75","type":""}],"src":"1581:266:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50604051612cc9380380612cc983398101604081905261002e91610441565b6001600160a01b03811661005c57604051630409d6d160e11b81525f60048201526024015b60405180910390fd5b6100685f82818061006f565b50506104bc565b5f6002600160401b03196001600160401b038616016100ac5760405163061c6a4360e21b81526001600160401b0386166004820152602401610053565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156101a15763ffffffff85166100f76102b5565b6101019190610482565b905060405180604001604052808265ffffffffffff1681526020016101318663ffffffff166102c460201b60201c565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c16845282529091208351815494909201519092166601000000000000026001600160a01b031990931665ffffffffffff90911617919091179055610247565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546101ed9166010000000000009091046001600160701b03169086906102cd565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316660100000000000002600160301b600160a01b03199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f6102bf42610373565b905090565b63ffffffff1690565b5f80806102e26001600160701b0387166103a9565b90505f61031d8563ffffffff168763ffffffff168463ffffffff1611610308575f610312565b61031288856104a0565b63ffffffff166103c7565b905063ffffffff811661032e6102b5565b6103389190610482565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b5f65ffffffffffff8211156103a5576040516306dfcc6560e41b81526030600482015260248101839052604401610053565b5090565b5f806103bd6001600160701b0384166103d7565b5090949350505050565b8082118183180281185b92915050565b5f80806103eb846103e66102b5565b6103f8565b9250925092509193909250565b6001600160501b03602083901c166001600160701b03831665ffffffffffff604085901c811690841681111561043057828282610434565b815f5f5b9250925092509250925092565b5f60208284031215610451575f5ffd5b81516001600160a01b0381168114610467575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b65ffffffffffff81811683821601908111156103d1576103d161046e565b63ffffffff82811682821603908111156103d1576103d161046e565b612800806104c95f395ff3fe6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f93660046120da565b6106cc565b005b34801561020b575f5ffd5b5061024261021a36600461213c565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e61027936600461213c565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad366004612155565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612190565b61076e565b61027e6102df3660046121f9565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe36600461225c565b6108fc565b34801561030e575f5ffd5b5061032261031d36600461229e565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe6103763660046122b8565b610982565b348015610386575f5ffd5b5061039a6103953660046122e9565b610994565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046122e9565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e610432366004612300565b6109c5565b348015610442575f5ffd5b506101fe6104513660046122b8565b6109f2565b348015610461575f5ffd5b5061024261047036600461213c565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab366004612330565b610a04565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd36600461235c565b610a3e565b3480156104ed575f5ffd5b506101fe6104fc3660046121f9565b610ad5565b34801561050c575f5ffd5b5061052061051b366004612300565b610b7f565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a366004612377565b610ba6565b34801561055a575f5ffd5b5061056e61056936600461239f565b610bb8565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046123ff565b610bf0565b604051610256919061243d565b3480156105b3575f5ffd5b506105c76105c23660046124c1565b610cd5565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd36600461229e565b610d56565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c761063136600461229e565b610d6d565b348015610641575f5ffd5b506101fe610650366004612509565b610de6565b348015610660575f5ffd5b5061027e61066f36600461239f565b610df8565b34801561067f575f5ffd5b5061069361068e366004612525565b610f4b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c736600461229e565b61108c565b6106d46110b5565b5f5b828110156107175761070f858585848181106106f4576106f4612592565b905060200201602081019061070991906125a6565b8461112c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ad565b92915050565b6107606110b5565b61076a82826111cb565b5050565b6107766110b5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861123c565b91509150811580156107f6575063ffffffff8116155b15610849578287610807888861128d565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bb8565b90505f63ffffffff831615158061087c575061087182610994565b65ffffffffffff1615155b1561088d5761088a826112a4565b90505b6003546108a38a61089e8b8b61128d565b6113a2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152503492506113e4915050565b506003559450505050505b9392505050565b6109046110b5565b61091883836109128661071e565b84611484565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff81169291829182919061097490600160301b90046001600160701b03166116ca565b969991985096509350505050565b61098a6110b5565b61076a82826116eb565b5f8181526002602052604081205465ffffffffffff166109b38161178e565b6109bd57806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ad565b6109fa6110b5565b61076a82826117bc565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a466110b5565b6001600160401b0383161580610a6457506001600160401b03838116145b15610a8d5760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610ac89291906125e9565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b389190612604565b6001600160e01b03191614610b6b57604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610b7a85838686610bb8565b6112a4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610bae6110b5565b61076a828261186d565b5f84848484604051602001610bd0949392919061261f565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c1957610c19612686565b604051908082528060200260200182016040528015610c4c57816020015b6060815260200190600190039081610c375790505b5091505f5b83811015610ccd57610ca830868684818110610c6f57610c6f612592565b9050602002810190610c81919061269a565b85604051602001610c94939291906126f3565b60405160208183030381529060405261197c565b838281518110610cba57610cba612592565b6020908102919091010152600101610c51565b505092915050565b5f5f610ce084610b7f565b15610cef57505f905080610d4e565b306001600160a01b03861603610d1357610d0984846119ee565b5f91509150610d4e565b5f610d1e8585610a04565b90505f5f610d2c8389610d6d565b9150915081610d3c575f5f610d46565b63ffffffff811615815b945094505050505b935093915050565b610d5e6110b5565b610d688282611a04565b505050565b5f8067fffffffffffffffe196001600160401b03851601610d935750600190505f610ddf565b5f5f610d9f868661091e565b5050915091508165ffffffffffff165f14158015610dd45750610dc0611aed565b65ffffffffffff168265ffffffffffff1611155b93509150610ddf9050565b9250929050565b610dee6110b5565b61076a8282611afc565b5f3381610e05858561128d565b90505f610e1488888888610bb8565b5f8181526002602052604081205491925065ffffffffffff9091169003610e515760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610eea575f610e755f85610d6d565b5090505f610e8f610e8961021a8b87610a04565b86610d6d565b50905081158015610e9e575080155b15610ee757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f5b8289898961123c565b9150505f8163ffffffff16610f6e611aed565b610f789190612708565b905063ffffffff82161580610fae57505f8665ffffffffffff16118015610fae57508065ffffffffffff168665ffffffffffff16105b15610fbf5782896108078a8a61128d565b610fd98665ffffffffffff168265ffffffffffff16611bb7565b9550610fe7838a8a8a610bb8565b9450610ff285611bc6565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611078908a9088908f908f908f90612726565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d5e57604051635f159e6360e01b815260040160405180910390fd5b335f806110c3838236611c12565b9150915081610d68578063ffffffff165f0361111d575f6110e48136611cd5565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610b7a84305f36610bb8565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f6111c1836001600160701b03166116ca565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061123090841515815260200190565b60405180910390a25050565b5f80306001600160a01b0386160361126257611259868585611c12565b91509150611284565b6004831061127e5761127986866105c2878761128d565b611259565b505f9050805b94509492505050565b5f61129b600482848661265f565b6108f59161276b565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036112ec5760405163060a299b60e41b815260048101859052602401610840565b6112f4611aed565b65ffffffffffff168265ffffffffffff16111561132757604051630c65b5bd60e11b815260048101859052602401610840565b6113308261178e565b1561135157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b6060814710156114105760405163cf47918160e01b815247600482015260248101839052604401610840565b5f5f856001600160a01b0316848660405161142b91906127a3565b5f6040518083038185875af1925050503d805f8114611465576040519150601f19603f3d011682016040523d82523d5f602084013e61146a565b606091505b509150915061147a868383611ebb565b9695505050505050565b5f67fffffffffffffffe196001600160401b038616016114c25760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156115b2578463ffffffff1661150d611aed565b6115179190612708565b905060405180604001604052808265ffffffffffff1681526020016115458663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff9091161791909117905561165c565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546115fb91600160301b9091046001600160701b0316908690611f17565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f6116de846116d9611aed565b611fbd565b9250925092509193909250565b6001600160401b038216158061170957506001600160401b03828116145b156117325760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f611797611aed565b65ffffffffffff166117ac62093a8084612708565b65ffffffffffff16111592915050565b6001600160401b03821615806117da57506001600160401b03828116145b156118035760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016118aa5760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f908152600160208190526040822001546118e390600160801b90046001600160701b03168362069780611f17565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610ac8908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f5f846001600160a01b03168460405161199891906127a3565b5f60405180830381855af49150503d805f81146119d0576040519150601f19603f3d011682016040523d82523d5f602084013e6119d5565b606091505b50915091506119e5858383611ebb565b95945050505050565b5f6119f983836113a2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611a425760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611a8357505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611af742612009565b905090565b6001600160a01b0382165f90815260208190526040812060010154611b2e906001600160701b03168362069780611f17565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610ac8565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611bf15750611bef8161178e565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611c2757505f905080610d4e565b306001600160a01b03861603611c4a57610d0930611c45868661128d565b6119ee565b5f5f5f611c578787611cd5565b92509250925082158015611c6f5750611c6f30610b7f565b15611c82575f5f94509450505050610d4e565b5f5f611c8e848b610d6d565b9150915081611ca7575f5f965096505050505050610d4e565b611cbd8363ffffffff168263ffffffff16611bb7565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611cee57505f915081905080611eb4565b5f611cf9868661128d565b90506001600160e01b031981166310a6aa3760e31b1480611d2a57506001600160e01b031981166330cae18760e01b145b80611d4557506001600160e01b0319811663294b14a960e11b145b80611d6057506001600160e01b03198116635326cae760e11b145b80611d7b57506001600160e01b0319811663d22b598960e01b145b15611d905760015f5f93509350935050611eb4565b6001600160e01b0319811663063fc60f60e21b1480611dbf57506001600160e01b0319811663167bd39560e01b145b80611dda57506001600160e01b031981166308d6122d60e01b145b15611e19575f611dee60246004888a61265f565b810190611dfb9190612300565b90505f611e07826109c5565b600196505f95509350611eb492505050565b6001600160e01b0319811663012e238d60e51b1480611e4857506001600160e01b03198116635be958b160e11b145b15611ea0575f611e5c60246004888a61265f565b810190611e69919061213c565b90506001611e92826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611eb4565b5f611eab3083610a04565b5f935093509350505b9250925092565b606082611ed057611ecb8261203f565b6108f5565b8151158015611ee757506001600160a01b0384163b155b15611f1057604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b50806108f5565b5f5f5f611f2c866001600160701b03166111ad565b90505f611f678563ffffffff168763ffffffff168463ffffffff1611611f52575f611f5c565b611f5c88856127ae565b63ffffffff16611bb7565b90508063ffffffff16611f78611aed565b611f829190612708565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c8116908416811115611ff857828282611ffc565b815f5f5b9250925092509250925092565b5f65ffffffffffff82111561203b576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b80511561204f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b0381168114612068575f5ffd5b5f5f83601f84011261208f575f5ffd5b5081356001600160401b038111156120a5575f5ffd5b6020830191508360208260051b8501011115610ddf575f5ffd5b80356001600160401b03811681146120d5575f5ffd5b919050565b5f5f5f5f606085870312156120ed575f5ffd5b84356120f88161206b565b935060208501356001600160401b03811115612112575f5ffd5b61211e8782880161207f565b90945092506121319050604086016120bf565b905092959194509250565b5f6020828403121561214c575f5ffd5b6108f5826120bf565b5f5f60408385031215612166575f5ffd5b82356121718161206b565b915060208301358015158114612185575f5ffd5b809150509250929050565b5f5f604083850312156121a1575f5ffd5b82356121ac8161206b565b915060208301356121858161206b565b5f5f83601f8401126121cc575f5ffd5b5081356001600160401b038111156121e2575f5ffd5b602083019150836020828501011115610ddf575f5ffd5b5f5f5f6040848603121561220b575f5ffd5b83356122168161206b565b925060208401356001600160401b03811115612230575f5ffd5b61223c868287016121bc565b9497909650939450505050565b803563ffffffff811681146120d5575f5ffd5b5f5f5f6060848603121561226e575f5ffd5b612277846120bf565b925060208401356122878161206b565b915061229560408501612249565b90509250925092565b5f5f604083850312156122af575f5ffd5b6121ac836120bf565b5f5f604083850312156122c9575f5ffd5b6122d2836120bf565b91506122e0602084016120bf565b90509250929050565b5f602082840312156122f9575f5ffd5b5035919050565b5f60208284031215612310575f5ffd5b81356108f58161206b565b6001600160e01b031981168114612068575f5ffd5b5f5f60408385031215612341575f5ffd5b823561234c8161206b565b915060208301356121858161231b565b5f5f5f6040848603121561236e575f5ffd5b612216846120bf565b5f5f60408385031215612388575f5ffd5b612391836120bf565b91506122e060208401612249565b5f5f5f5f606085870312156123b2575f5ffd5b84356123bd8161206b565b935060208501356123cd8161206b565b925060408501356001600160401b038111156123e7575f5ffd5b6123f3878288016121bc565b95989497509550505050565b5f5f60208385031215612410575f5ffd5b82356001600160401b03811115612425575f5ffd5b6124318582860161207f565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156124b557603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050612463565b50929695505050505050565b5f5f5f606084860312156124d3575f5ffd5b83356124de8161206b565b925060208401356124ee8161206b565b915060408401356124fe8161231b565b809150509250925092565b5f5f6040838503121561251a575f5ffd5b82356123918161206b565b5f5f5f5f60608587031215612538575f5ffd5b84356125438161206b565b935060208501356001600160401b0381111561255d575f5ffd5b612569878288016121bc565b909450925050604085013565ffffffffffff81168114612587575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125b6575f5ffd5b81356108f58161231b565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6125fc6020830184866125c1565b949350505050565b5f60208284031215612614575f5ffd5b81516108f58161231b565b6001600160a01b038581168252841660208201526060604082018190525f9061147a90830184866125c1565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561266d575f5ffd5b83861115612679575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e198436030181126126af575f5ffd5b8301803591506001600160401b038211156126c8575f5ffd5b602001915036819003821315610ddf575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f815261147a81856126dc565b65ffffffffffff81811683821601908111156107525761075261264b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061276090830184866125c1565b979650505050505050565b80356001600160e01b0319811690600484101561279c576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f6108f582846126dc565b63ffffffff82811682821603908111156107525761075261264b56fea2646970667358221220abdac89ee6ea272cc140dad3d92df5b9097ffcacb2763cec129af229139d737764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x2CC9 CODESIZE SUB DUP1 PUSH2 0x2CC9 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 0x2800 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 0x20DA 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 0x213C 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 0x213C 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 0x2155 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 0x2190 JUMP JUMPDEST PUSH2 0x76E JUMP JUMPDEST PUSH2 0x27E PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x21F9 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 0x225C 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 0x229E 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 0x22B8 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 0x22E9 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 0x22E9 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 0x2300 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 0x22B8 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 0x213C 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 0x2330 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 0x235C 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 0x21F9 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 0x2300 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 0x2377 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 0x239F 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 0x23FF JUMP JUMPDEST PUSH2 0xBF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x243D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x24C1 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 0x229E 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 0x229E 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 0x2509 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 0x239F 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 0x2525 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 0x229E 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 0x2592 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x25A6 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 0x13E4 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 0x1484 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 0x16CA 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 0x16EB JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x9B3 DUP2 PUSH2 0x178E 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 0x17BC 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 0x25E9 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 0x2604 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 0x186D JUMP JUMPDEST PUSH0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x261F 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 0x2686 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 0x2592 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC81 SWAP2 SWAP1 PUSH2 0x269A JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x197C JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x2592 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 0x19EE 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 0x1A04 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 0x1AED 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 0x1AFC 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 0x1AED JUMP JUMPDEST PUSH2 0xF78 SWAP2 SWAP1 PUSH2 0x2708 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 0x1BB7 JUMP JUMPDEST SWAP6 POP PUSH2 0xFE7 DUP4 DUP11 DUP11 DUP11 PUSH2 0xBB8 JUMP JUMPDEST SWAP5 POP PUSH2 0xFF2 DUP6 PUSH2 0x1BC6 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 0x2726 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 0x1C12 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 0x1CD5 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 0x16CA 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 0x1C12 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 0x265F JUMP JUMPDEST PUSH2 0x8F5 SWAP2 PUSH2 0x276B 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 0x1AED 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 0x178E 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 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 SWAP1 SWAP3 AND DUP4 DUP3 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1410 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 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x142B SWAP2 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1465 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 0x146A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x147A DUP7 DUP4 DUP4 PUSH2 0x1EBB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND ADD PUSH2 0x14C2 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 0x15B2 JUMPI DUP5 PUSH4 0xFFFFFFFF AND PUSH2 0x150D PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1517 SWAP2 SWAP1 PUSH2 0x2708 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 0x1545 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 0x165C 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 0x15FB SWAP2 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x1F17 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 0x16DE DUP5 PUSH2 0x16D9 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1FBD 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 0x1709 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1732 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 0x1797 PUSH2 0x1AED JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x17AC PUSH3 0x93A80 DUP5 PUSH2 0x2708 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 0x17DA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1803 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 0x18AA 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 0x18E3 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F17 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1998 SWAP2 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x19D0 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 0x19D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19E5 DUP6 DUP4 DUP4 PUSH2 0x1EBB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x19F9 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 0x1A42 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 0x1A83 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 0x1AF7 TIMESTAMP PUSH2 0x2009 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 0x1B2E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F17 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 0x1BF1 JUMPI POP PUSH2 0x1BEF DUP2 PUSH2 0x178E 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 0x1C27 JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1C4A JUMPI PUSH2 0xD09 ADDRESS PUSH2 0x1C45 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x19EE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1C57 DUP8 DUP8 PUSH2 0x1CD5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO DUP1 ISZERO PUSH2 0x1C6F JUMPI POP PUSH2 0x1C6F ADDRESS PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0x1C82 JUMPI PUSH0 PUSH0 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C8E DUP5 DUP12 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1CA7 JUMPI PUSH0 PUSH0 SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH2 0x1CBD DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND PUSH2 0x1BB7 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 0x1CEE JUMPI POP PUSH0 SWAP2 POP DUP2 SWAP1 POP DUP1 PUSH2 0x1EB4 JUMP JUMPDEST PUSH0 PUSH2 0x1CF9 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 0x1D2A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x30CAE187 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1D45 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x294B14A9 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D60 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5326CAE7 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D7B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xD22B5989 PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1D90 JUMPI PUSH1 0x1 PUSH0 PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x63FC60F PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x1DBF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x167BD395 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1DDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x8D6122D PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1E19 JUMPI PUSH0 PUSH2 0x1DEE PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x265F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1DFB SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1E07 DUP3 PUSH2 0x9C5 JUMP JUMPDEST PUSH1 0x1 SWAP7 POP PUSH0 SWAP6 POP SWAP4 POP PUSH2 0x1EB4 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 0x1E48 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5BE958B1 PUSH1 0xE1 SHL EQ JUMPDEST ISZERO PUSH2 0x1EA0 JUMPI PUSH0 PUSH2 0x1E5C PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x265F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x1E92 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 0x1EB4 JUMP JUMPDEST PUSH0 PUSH2 0x1EAB ADDRESS DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1ED0 JUMPI PUSH2 0x1ECB DUP3 PUSH2 0x203F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1EE7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1F10 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 POP DUP1 PUSH2 0x8F5 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1F2C DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F67 DUP6 PUSH4 0xFFFFFFFF AND DUP8 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1F52 JUMPI PUSH0 PUSH2 0x1F5C JUMP JUMPDEST PUSH2 0x1F5C DUP9 DUP6 PUSH2 0x27AE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x1F78 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1F82 SWAP2 SWAP1 PUSH2 0x2708 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 0x1FF8 JUMPI DUP3 DUP3 DUP3 PUSH2 0x1FFC JUMP JUMPDEST DUP2 PUSH0 PUSH0 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x203B 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 DUP1 MLOAD ISZERO PUSH2 0x204F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 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 DUP2 AND DUP2 EQ PUSH2 0x2068 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x208F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A5 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 0x20D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x20F8 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2112 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x211E DUP8 DUP3 DUP9 ADD PUSH2 0x207F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2131 SWAP1 POP PUSH1 0x40 DUP7 ADD PUSH2 0x20BF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x214C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x8F5 DUP3 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2166 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2171 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2185 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 0x21A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2185 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21E2 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 0x220B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2216 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2230 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x223C DUP7 DUP3 DUP8 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x20D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x226E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2277 DUP5 PUSH2 0x20BF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2287 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH2 0x2295 PUSH1 0x40 DUP6 ADD PUSH2 0x2249 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21AC DUP4 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22D2 DUP4 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP PUSH2 0x22E0 PUSH1 0x20 DUP5 ADD PUSH2 0x20BF JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2310 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2068 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2341 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x234C DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2185 DUP2 PUSH2 0x231B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x236E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2216 DUP5 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2388 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2391 DUP4 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP PUSH2 0x22E0 PUSH1 0x20 DUP5 ADD PUSH2 0x2249 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x23BD DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23CD DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23F3 DUP8 DUP3 DUP9 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2410 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2425 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2431 DUP6 DUP3 DUP7 ADD PUSH2 0x207F 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 0x24B5 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 0x2463 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 0x24D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x24DE DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x24EE DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x231B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x251A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2391 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2543 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x255D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2569 DUP8 DUP3 DUP9 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2587 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 0x25B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x231B 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 0x25FC PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2614 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8F5 DUP2 PUSH2 0x231B 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 0x147A SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 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 0x266D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2679 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 0x26AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x26C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP5 DUP3 CALLDATACOPY PUSH0 DUP4 DUP3 ADD PUSH0 DUP2 MSTORE PUSH2 0x147A DUP2 DUP6 PUSH2 0x26DC JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x264B 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 0x2760 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 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 0x279C 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 PUSH2 0x8F5 DUP3 DUP5 PUSH2 0x26DC JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x264B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0xDA 0xC8 SWAP15 0xE6 0xEA 0x27 0x2C 0xC1 BLOCKHASH 0xDA 0xD3 0xD9 0x2D CREATE2 0xB9 MULMOD PUSH32 0xFCACB2763CEC129AF229139D737764736F6C634300081C003300000000000000 ","sourceMap":"3722:26153:15:-:0;;;6279:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6327:26:15;;6323:108;;6376:44;;-1:-1:-1;;;6376:44:15;;6417:1;6376:44;;;455:51:75;428:18;;6376:44:15;;;;;;;;6323:108;6513:42;5433:16;6536:12;5433:16;;6513:10;:42::i;:::-;;6279:283;3722:26153;;11543:1061;11701:4;-1:-1:-1;;;;;;;;;;;11721:21:15;;;11717:90;;11765:31;;-1:-1:-1;;;11765:31:15;;-1:-1:-1;;;;;679:31:75;;11765::15;;;661:50:75;634:18;;11765:31:15;517:200:75;11717:90:15;-1:-1:-1;;;;;11834:14:15;;11817;11834;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11834:31:15;;;;;;;;;:37;;;:42;;11909:585;;;;11946:29;;;:16;:14;:16::i;:::-;:29;;;;:::i;:::-;11938:37;;12023:55;;;;;;;;12038:5;12023:55;;;;;;12052:24;:14;:22;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;12023:55:15;;;;;;-1:-1:-1;;;;;11989:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11989:31:15;;;;;;;;;:89;;;;;;;;;;;;;;-1:-1:-1;;;;;;11989:89:15;;;;;;;;;;;;;;11909:585;;;-1:-1:-1;;;;;12370:14:15;;12468:1;12370:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12370:31:15;;;;;;;;;:37;:113;;:37;;;;-1:-1:-1;;;;;12370:37:15;;12436:14;;12370:48;:113::i;:::-;-1:-1:-1;;;;;12322:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12322:31:15;;;;;;;;;12321:162;;-1:-1:-1;;;;;12321:162:15;;;;;-1:-1:-1;;;;;;;;12321:162:15;;;;;;;;;;;-1:-1:-1;11909:585:15;12509:62;;;1260:10:75;1248:23;;1230:42;;1320:14;1308:27;;1303:2;1288:18;;1281:55;1379:14;;1372:22;1352:18;;;1345:50;12509:62:15;;-1:-1:-1;;;;;12509:62:15;;;-1:-1:-1;;;;;12509:62:15;;;;;;;;1218:2:75;12509:62:15;;;-1:-1:-1;12588:9:15;11543:1061;-1:-1:-1;;;;;11543:1061:15:o;750:110:44:-;794:6;819:34;837:15;819:17;:34::i;:::-;812:41;;750:110;:::o;2508:108::-;2589:20;;;2508:108::o;4033:390::-;4154:18;;;4214:10;-1:-1:-1;;;;;4214:8:44;;;:10::i;:::-;4199:25;;4234:14;4258:61;4267:10;4258:61;;4287:8;4279:16;;:5;:16;;;:39;;4317:1;4279:39;;;4298:16;4306:8;4298:5;:16;:::i;:::-;4258:61;;:8;:61::i;:::-;4234:86;-1:-1:-1;4339:21:44;;;:11;:9;:11::i;:::-;:21;;;;:::i;:::-;4330:30;-1:-1:-1;5126:19:44;;;5120:2;5096:26;;;;;5089:2;5070:21;;;;;5069:54;:76;4370:46;;;;4033:390;;;;;;:::o;14296:213:43:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:43;;14452:2;14421:41;;;1762:36:75;1814:18;;;1807:34;;;1735:18;;14421:41:43;1581:266:75;14370:103:43;-1:-1:-1;14496:5:43;14296:213::o;3609:130:44:-;3657:6;;3696:14;-1:-1:-1;;;;;3696:12:44;;;:14::i;:::-;-1:-1:-1;3675:35:44;;3609:130;-1:-1:-1;;;;3609:130:44:o;3189:111:42:-;3281:5;;;3066;;;3065:36;3060:42;;3189:111;;;;;:::o;3393:159:44:-;3445:18;;;3516:29;3527:4;3533:11;:9;:11::i;:::-;3516:10;:29::i;:::-;3509:36;;;;;;3393:159;;;;;:::o;2868:307::-;-1:-1:-1;;;;;4771:2:44;4764:9;;;;-1:-1:-1;;;;;3062:11:44;;4800:9;4807:2;4800:9;;;;;;3092:19;;;;;:76;;3136:11;3149:10;3161:6;3092:76;;;3115:10;3127:1;3130;3092:76;3085:83;;;;;;2868:307;;;;;:::o;14:290:75:-;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:75;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:75: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::-;3722:26153:15;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ADMIN_ROLE_4959":{"entryPoint":null,"id":4959,"parameterSlots":0,"returnSlots":0},"@PUBLIC_ROLE_4967":{"entryPoint":null,"id":4967,"parameterSlots":0,"returnSlots":0},"@_canCallExtended_6606":{"entryPoint":4668,"id":6606,"parameterSlots":4,"returnSlots":2},"@_canCallSelf_6708":{"entryPoint":7186,"id":6708,"parameterSlots":3,"returnSlots":2},"@_checkAuthorized_6408":{"entryPoint":4277,"id":6408,"parameterSlots":0,"returnSlots":0},"@_checkNotScheduled_6012":{"entryPoint":7110,"id":6012,"parameterSlots":1,"returnSlots":0},"@_checkSelector_6761":{"entryPoint":4749,"id":6761,"parameterSlots":2,"returnSlots":1},"@_consumeScheduledOp_6314":{"entryPoint":4772,"id":6314,"parameterSlots":1,"returnSlots":1},"@_contextSuffixLength_9381":{"entryPoint":null,"id":9381,"parameterSlots":0,"returnSlots":1},"@_getAdminRestrictions_6561":{"entryPoint":7381,"id":6561,"parameterSlots":2,"returnSlots":3},"@_getFullAt_13164":{"entryPoint":8125,"id":13164,"parameterSlots":2,"returnSlots":3},"@_grantRole_5524":{"entryPoint":5252,"id":5524,"parameterSlots":4,"returnSlots":1},"@_hashExecutionId_6780":{"entryPoint":5026,"id":6780,"parameterSlots":2,"returnSlots":1},"@_isExecuting_6726":{"entryPoint":6638,"id":6726,"parameterSlots":2,"returnSlots":1},"@_isExpired_6744":{"entryPoint":6030,"id":6744,"parameterSlots":1,"returnSlots":1},"@_msgData_9373":{"entryPoint":null,"id":9373,"parameterSlots":0,"returnSlots":2},"@_msgSender_9364":{"entryPoint":null,"id":9364,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":8255,"id":9351,"parameterSlots":1,"returnSlots":0},"@_revokeRole_5572":{"entryPoint":6660,"id":5572,"parameterSlots":2,"returnSlots":1},"@_setGrantDelay_5684":{"entryPoint":6253,"id":5684,"parameterSlots":2,"returnSlots":0},"@_setRoleAdmin_5606":{"entryPoint":5867,"id":5606,"parameterSlots":2,"returnSlots":0},"@_setRoleGuardian_5640":{"entryPoint":6076,"id":5640,"parameterSlots":2,"returnSlots":0},"@_setTargetAdminDelay_5796":{"entryPoint":6908,"id":5796,"parameterSlots":2,"returnSlots":0},"@_setTargetClosed_5833":{"entryPoint":4555,"id":5833,"parameterSlots":2,"returnSlots":0},"@_setTargetFunctionRole_5745":{"entryPoint":4396,"id":5745,"parameterSlots":3,"returnSlots":0},"@canCall_5087":{"entryPoint":3285,"id":5087,"parameterSlots":3,"returnSlots":2},"@cancel_6212":{"entryPoint":3576,"id":6212,"parameterSlots":4,"returnSlots":1},"@consumeScheduledOp_6249":{"entryPoint":2773,"id":6249,"parameterSlots":3,"returnSlots":0},"@execute_6110":{"entryPoint":2000,"id":6110,"parameterSlots":3,"returnSlots":1},"@expiration_5096":{"entryPoint":null,"id":5096,"parameterSlots":0,"returnSlots":1},"@functionCallWithValue_9217":{"entryPoint":5092,"id":9217,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":6524,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAccess_5245":{"entryPoint":2334,"id":5245,"parameterSlots":2,"returnSlots":4},"@getFull_13184":{"entryPoint":5834,"id":13184,"parameterSlots":1,"returnSlots":3},"@getNonce_5870":{"entryPoint":null,"id":5870,"parameterSlots":1,"returnSlots":1},"@getRoleAdmin_5167":{"entryPoint":null,"id":5167,"parameterSlots":1,"returnSlots":1},"@getRoleGrantDelay_5197":{"entryPoint":1822,"id":5197,"parameterSlots":1,"returnSlots":1},"@getRoleGuardian_5181":{"entryPoint":null,"id":5181,"parameterSlots":1,"returnSlots":1},"@getSchedule_5856":{"entryPoint":2452,"id":5856,"parameterSlots":1,"returnSlots":1},"@getTargetAdminDelay_5153":{"entryPoint":2501,"id":5153,"parameterSlots":1,"returnSlots":1},"@getTargetFunctionRole_5137":{"entryPoint":2564,"id":5137,"parameterSlots":2,"returnSlots":1},"@get_13202":{"entryPoint":4525,"id":13202,"parameterSlots":1,"returnSlots":1},"@grantRole_5340":{"entryPoint":2300,"id":5340,"parameterSlots":3,"returnSlots":0},"@hasRole_5289":{"entryPoint":3437,"id":5289,"parameterSlots":2,"returnSlots":2},"@hashOperation_6336":{"entryPoint":3000,"id":6336,"parameterSlots":4,"returnSlots":1},"@isTargetClosed_5119":{"entryPoint":2943,"id":5119,"parameterSlots":1,"returnSlots":1},"@labelRole_5318":{"entryPoint":2622,"id":5318,"parameterSlots":3,"returnSlots":0},"@max_9919":{"entryPoint":7095,"id":9919,"parameterSlots":2,"returnSlots":1},"@minSetback_5105":{"entryPoint":null,"id":5105,"parameterSlots":0,"returnSlots":1},"@multicall_9490":{"entryPoint":3056,"id":9490,"parameterSlots":2,"returnSlots":1},"@pack_13347":{"entryPoint":null,"id":13347,"parameterSlots":3,"returnSlots":1},"@renounceRole_5379":{"entryPoint":4236,"id":5379,"parameterSlots":2,"returnSlots":0},"@revokeRole_5356":{"entryPoint":3414,"id":5356,"parameterSlots":2,"returnSlots":0},"@schedule_5984":{"entryPoint":3915,"id":5984,"parameterSlots":4,"returnSlots":2},"@setGrantDelay_5427":{"entryPoint":2982,"id":5427,"parameterSlots":2,"returnSlots":0},"@setRoleAdmin_5395":{"entryPoint":2434,"id":5395,"parameterSlots":2,"returnSlots":0},"@setRoleGuardian_5411":{"entryPoint":2546,"id":5411,"parameterSlots":2,"returnSlots":0},"@setTargetAdminDelay_5761":{"entryPoint":3558,"id":5761,"parameterSlots":2,"returnSlots":0},"@setTargetClosed_5812":{"entryPoint":1880,"id":5812,"parameterSlots":2,"returnSlots":0},"@setTargetFunctionRole_5719":{"entryPoint":1740,"id":5719,"parameterSlots":4,"returnSlots":0},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@timestamp_13096":{"entryPoint":6893,"id":13096,"parameterSlots":0,"returnSlots":1},"@toDelay_13126":{"entryPoint":null,"id":13126,"parameterSlots":1,"returnSlots":1},"@toUint48_12064":{"entryPoint":8201,"id":12064,"parameterSlots":1,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@unpack_13309":{"entryPoint":null,"id":13309,"parameterSlots":1,"returnSlots":3},"@updateAuthority_6354":{"entryPoint":1902,"id":6354,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":7867,"id":9309,"parameterSlots":3,"returnSlots":1},"@withUpdate_13258":{"entryPoint":7959,"id":13258,"parameterSlots":3,"returnSlots":2},"abi_decode_array_bytes4_dyn_calldata":{"entryPoint":8319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":8636,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":8960,"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":8592,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_bytes4":{"entryPoint":9409,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_bytes_calldata_ptr":{"entryPoint":9119,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_array$_t_bytes4_$dyn_calldata_ptrt_uint64":{"entryPoint":8410,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":8533,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes4":{"entryPoint":9008,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":8697,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint48":{"entryPoint":9509,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_uint32":{"entryPoint":9481,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":9215,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32":{"entryPoint":8937,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":9638,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":9732,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint64":{"entryPoint":8508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint64t_address":{"entryPoint":8862,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64t_addresst_uint32":{"entryPoint":8796,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint64t_string_calldata_ptr":{"entryPoint":9052,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint64t_uint32":{"entryPoint":9079,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint64t_uint64":{"entryPoint":8888,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint32":{"entryPoint":8777,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint64":{"entryPoint":8383,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":9948,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_calldata":{"entryPoint":9665,"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":9971,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":10147,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_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":9759,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes4__to_t_address_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"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":9277,"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":9705,"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":10022,"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":9882,"id":null,"parameterSlots":2,"returnSlots":2},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":9823,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint48":{"entryPoint":9992,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint32":{"entryPoint":10158,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":10091,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":9803,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9618,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":9862,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8299,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":8987,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:20056:75","nodeType":"YulBlock","src":"0:20056:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"59:86:75","nodeType":"YulBlock","src":"59:86:75","statements":[{"body":{"nativeSrc":"123:16:75","nodeType":"YulBlock","src":"123:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:75","nodeType":"YulLiteral","src":"132:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:75","nodeType":"YulLiteral","src":"135:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:75","nodeType":"YulIdentifier","src":"125:6:75"},"nativeSrc":"125:12:75","nodeType":"YulFunctionCall","src":"125:12:75"},"nativeSrc":"125:12:75","nodeType":"YulExpressionStatement","src":"125:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:75","nodeType":"YulIdentifier","src":"82:5:75"},{"arguments":[{"name":"value","nativeSrc":"93:5:75","nodeType":"YulIdentifier","src":"93:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:75","nodeType":"YulLiteral","src":"108:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:75","nodeType":"YulLiteral","src":"113:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:75","nodeType":"YulIdentifier","src":"104:3:75"},"nativeSrc":"104:11:75","nodeType":"YulFunctionCall","src":"104:11:75"},{"kind":"number","nativeSrc":"117:1:75","nodeType":"YulLiteral","src":"117:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:75","nodeType":"YulIdentifier","src":"100:3:75"},"nativeSrc":"100:19:75","nodeType":"YulFunctionCall","src":"100:19:75"}],"functionName":{"name":"and","nativeSrc":"89:3:75","nodeType":"YulIdentifier","src":"89:3:75"},"nativeSrc":"89:31:75","nodeType":"YulFunctionCall","src":"89:31:75"}],"functionName":{"name":"eq","nativeSrc":"79:2:75","nodeType":"YulIdentifier","src":"79:2:75"},"nativeSrc":"79:42:75","nodeType":"YulFunctionCall","src":"79:42:75"}],"functionName":{"name":"iszero","nativeSrc":"72:6:75","nodeType":"YulIdentifier","src":"72:6:75"},"nativeSrc":"72:50:75","nodeType":"YulFunctionCall","src":"72:50:75"},"nativeSrc":"69:70:75","nodeType":"YulIf","src":"69:70:75"}]},"name":"validator_revert_address","nativeSrc":"14:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:75","nodeType":"YulTypedName","src":"48:5:75","type":""}],"src":"14:131:75"},{"body":{"nativeSrc":"233:283:75","nodeType":"YulBlock","src":"233:283:75","statements":[{"body":{"nativeSrc":"282:16:75","nodeType":"YulBlock","src":"282:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"291:1:75","nodeType":"YulLiteral","src":"291:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"294:1:75","nodeType":"YulLiteral","src":"294:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"284:6:75","nodeType":"YulIdentifier","src":"284:6:75"},"nativeSrc":"284:12:75","nodeType":"YulFunctionCall","src":"284:12:75"},"nativeSrc":"284:12:75","nodeType":"YulExpressionStatement","src":"284:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"261:6:75","nodeType":"YulIdentifier","src":"261:6:75"},{"kind":"number","nativeSrc":"269:4:75","nodeType":"YulLiteral","src":"269:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"257:3:75","nodeType":"YulIdentifier","src":"257:3:75"},"nativeSrc":"257:17:75","nodeType":"YulFunctionCall","src":"257:17:75"},{"name":"end","nativeSrc":"276:3:75","nodeType":"YulIdentifier","src":"276:3:75"}],"functionName":{"name":"slt","nativeSrc":"253:3:75","nodeType":"YulIdentifier","src":"253:3:75"},"nativeSrc":"253:27:75","nodeType":"YulFunctionCall","src":"253:27:75"}],"functionName":{"name":"iszero","nativeSrc":"246:6:75","nodeType":"YulIdentifier","src":"246:6:75"},"nativeSrc":"246:35:75","nodeType":"YulFunctionCall","src":"246:35:75"},"nativeSrc":"243:55:75","nodeType":"YulIf","src":"243:55:75"},{"nativeSrc":"307:30:75","nodeType":"YulAssignment","src":"307:30:75","value":{"arguments":[{"name":"offset","nativeSrc":"330:6:75","nodeType":"YulIdentifier","src":"330:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"317:12:75","nodeType":"YulIdentifier","src":"317:12:75"},"nativeSrc":"317:20:75","nodeType":"YulFunctionCall","src":"317:20:75"},"variableNames":[{"name":"length","nativeSrc":"307:6:75","nodeType":"YulIdentifier","src":"307:6:75"}]},{"body":{"nativeSrc":"380:16:75","nodeType":"YulBlock","src":"380:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"389:1:75","nodeType":"YulLiteral","src":"389:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"392:1:75","nodeType":"YulLiteral","src":"392:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"382:6:75","nodeType":"YulIdentifier","src":"382:6:75"},"nativeSrc":"382:12:75","nodeType":"YulFunctionCall","src":"382:12:75"},"nativeSrc":"382:12:75","nodeType":"YulExpressionStatement","src":"382:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"352:6:75","nodeType":"YulIdentifier","src":"352:6:75"},{"kind":"number","nativeSrc":"360:18:75","nodeType":"YulLiteral","src":"360:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"349:2:75","nodeType":"YulIdentifier","src":"349:2:75"},"nativeSrc":"349:30:75","nodeType":"YulFunctionCall","src":"349:30:75"},"nativeSrc":"346:50:75","nodeType":"YulIf","src":"346:50:75"},{"nativeSrc":"405:29:75","nodeType":"YulAssignment","src":"405:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"421:6:75","nodeType":"YulIdentifier","src":"421:6:75"},{"kind":"number","nativeSrc":"429:4:75","nodeType":"YulLiteral","src":"429:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"417:3:75","nodeType":"YulIdentifier","src":"417:3:75"},"nativeSrc":"417:17:75","nodeType":"YulFunctionCall","src":"417:17:75"},"variableNames":[{"name":"arrayPos","nativeSrc":"405:8:75","nodeType":"YulIdentifier","src":"405:8:75"}]},{"body":{"nativeSrc":"494:16:75","nodeType":"YulBlock","src":"494:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"503:1:75","nodeType":"YulLiteral","src":"503:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"506:1:75","nodeType":"YulLiteral","src":"506:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"496:6:75","nodeType":"YulIdentifier","src":"496:6:75"},"nativeSrc":"496:12:75","nodeType":"YulFunctionCall","src":"496:12:75"},"nativeSrc":"496:12:75","nodeType":"YulExpressionStatement","src":"496:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"457:6:75","nodeType":"YulIdentifier","src":"457:6:75"},{"arguments":[{"kind":"number","nativeSrc":"469:1:75","nodeType":"YulLiteral","src":"469:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"472:6:75","nodeType":"YulIdentifier","src":"472:6:75"}],"functionName":{"name":"shl","nativeSrc":"465:3:75","nodeType":"YulIdentifier","src":"465:3:75"},"nativeSrc":"465:14:75","nodeType":"YulFunctionCall","src":"465:14:75"}],"functionName":{"name":"add","nativeSrc":"453:3:75","nodeType":"YulIdentifier","src":"453:3:75"},"nativeSrc":"453:27:75","nodeType":"YulFunctionCall","src":"453:27:75"},{"kind":"number","nativeSrc":"482:4:75","nodeType":"YulLiteral","src":"482:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"449:3:75","nodeType":"YulIdentifier","src":"449:3:75"},"nativeSrc":"449:38:75","nodeType":"YulFunctionCall","src":"449:38:75"},{"name":"end","nativeSrc":"489:3:75","nodeType":"YulIdentifier","src":"489:3:75"}],"functionName":{"name":"gt","nativeSrc":"446:2:75","nodeType":"YulIdentifier","src":"446:2:75"},"nativeSrc":"446:47:75","nodeType":"YulFunctionCall","src":"446:47:75"},"nativeSrc":"443:67:75","nodeType":"YulIf","src":"443:67:75"}]},"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"150:366:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"196:6:75","nodeType":"YulTypedName","src":"196:6:75","type":""},{"name":"end","nativeSrc":"204:3:75","nodeType":"YulTypedName","src":"204:3:75","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"212:8:75","nodeType":"YulTypedName","src":"212:8:75","type":""},{"name":"length","nativeSrc":"222:6:75","nodeType":"YulTypedName","src":"222:6:75","type":""}],"src":"150:366:75"},{"body":{"nativeSrc":"569:123:75","nodeType":"YulBlock","src":"569:123:75","statements":[{"nativeSrc":"579:29:75","nodeType":"YulAssignment","src":"579:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"601:6:75","nodeType":"YulIdentifier","src":"601:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"588:12:75","nodeType":"YulIdentifier","src":"588:12:75"},"nativeSrc":"588:20:75","nodeType":"YulFunctionCall","src":"588:20:75"},"variableNames":[{"name":"value","nativeSrc":"579:5:75","nodeType":"YulIdentifier","src":"579:5:75"}]},{"body":{"nativeSrc":"670:16:75","nodeType":"YulBlock","src":"670:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"679:1:75","nodeType":"YulLiteral","src":"679:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"682:1:75","nodeType":"YulLiteral","src":"682:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"672:6:75","nodeType":"YulIdentifier","src":"672:6:75"},"nativeSrc":"672:12:75","nodeType":"YulFunctionCall","src":"672:12:75"},"nativeSrc":"672:12:75","nodeType":"YulExpressionStatement","src":"672:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"630:5:75","nodeType":"YulIdentifier","src":"630:5:75"},{"arguments":[{"name":"value","nativeSrc":"641:5:75","nodeType":"YulIdentifier","src":"641:5:75"},{"kind":"number","nativeSrc":"648:18:75","nodeType":"YulLiteral","src":"648:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"637:3:75","nodeType":"YulIdentifier","src":"637:3:75"},"nativeSrc":"637:30:75","nodeType":"YulFunctionCall","src":"637:30:75"}],"functionName":{"name":"eq","nativeSrc":"627:2:75","nodeType":"YulIdentifier","src":"627:2:75"},"nativeSrc":"627:41:75","nodeType":"YulFunctionCall","src":"627:41:75"}],"functionName":{"name":"iszero","nativeSrc":"620:6:75","nodeType":"YulIdentifier","src":"620:6:75"},"nativeSrc":"620:49:75","nodeType":"YulFunctionCall","src":"620:49:75"},"nativeSrc":"617:69:75","nodeType":"YulIf","src":"617:69:75"}]},"name":"abi_decode_uint64","nativeSrc":"521:171:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"548:6:75","nodeType":"YulTypedName","src":"548:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"559:5:75","nodeType":"YulTypedName","src":"559:5:75","type":""}],"src":"521:171:75"},{"body":{"nativeSrc":"834:505:75","nodeType":"YulBlock","src":"834:505:75","statements":[{"body":{"nativeSrc":"880:16:75","nodeType":"YulBlock","src":"880:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"889:1:75","nodeType":"YulLiteral","src":"889:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"892:1:75","nodeType":"YulLiteral","src":"892:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"882:6:75","nodeType":"YulIdentifier","src":"882:6:75"},"nativeSrc":"882:12:75","nodeType":"YulFunctionCall","src":"882:12:75"},"nativeSrc":"882:12:75","nodeType":"YulExpressionStatement","src":"882:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"855:7:75","nodeType":"YulIdentifier","src":"855:7:75"},{"name":"headStart","nativeSrc":"864:9:75","nodeType":"YulIdentifier","src":"864:9:75"}],"functionName":{"name":"sub","nativeSrc":"851:3:75","nodeType":"YulIdentifier","src":"851:3:75"},"nativeSrc":"851:23:75","nodeType":"YulFunctionCall","src":"851:23:75"},{"kind":"number","nativeSrc":"876:2:75","nodeType":"YulLiteral","src":"876:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"847:3:75","nodeType":"YulIdentifier","src":"847:3:75"},"nativeSrc":"847:32:75","nodeType":"YulFunctionCall","src":"847:32:75"},"nativeSrc":"844:52:75","nodeType":"YulIf","src":"844:52:75"},{"nativeSrc":"905:36:75","nodeType":"YulVariableDeclaration","src":"905:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"931:9:75","nodeType":"YulIdentifier","src":"931:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"918:12:75","nodeType":"YulIdentifier","src":"918:12:75"},"nativeSrc":"918:23:75","nodeType":"YulFunctionCall","src":"918:23:75"},"variables":[{"name":"value","nativeSrc":"909:5:75","nodeType":"YulTypedName","src":"909:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"975:5:75","nodeType":"YulIdentifier","src":"975:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"950:24:75","nodeType":"YulIdentifier","src":"950:24:75"},"nativeSrc":"950:31:75","nodeType":"YulFunctionCall","src":"950:31:75"},"nativeSrc":"950:31:75","nodeType":"YulExpressionStatement","src":"950:31:75"},{"nativeSrc":"990:15:75","nodeType":"YulAssignment","src":"990:15:75","value":{"name":"value","nativeSrc":"1000:5:75","nodeType":"YulIdentifier","src":"1000:5:75"},"variableNames":[{"name":"value0","nativeSrc":"990:6:75","nodeType":"YulIdentifier","src":"990:6:75"}]},{"nativeSrc":"1014:46:75","nodeType":"YulVariableDeclaration","src":"1014:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1045:9:75","nodeType":"YulIdentifier","src":"1045:9:75"},{"kind":"number","nativeSrc":"1056:2:75","nodeType":"YulLiteral","src":"1056:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1041:3:75","nodeType":"YulIdentifier","src":"1041:3:75"},"nativeSrc":"1041:18:75","nodeType":"YulFunctionCall","src":"1041:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1028:12:75","nodeType":"YulIdentifier","src":"1028:12:75"},"nativeSrc":"1028:32:75","nodeType":"YulFunctionCall","src":"1028:32:75"},"variables":[{"name":"offset","nativeSrc":"1018:6:75","nodeType":"YulTypedName","src":"1018:6:75","type":""}]},{"body":{"nativeSrc":"1103:16:75","nodeType":"YulBlock","src":"1103:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1112:1:75","nodeType":"YulLiteral","src":"1112:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1115:1:75","nodeType":"YulLiteral","src":"1115:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1105:6:75","nodeType":"YulIdentifier","src":"1105:6:75"},"nativeSrc":"1105:12:75","nodeType":"YulFunctionCall","src":"1105:12:75"},"nativeSrc":"1105:12:75","nodeType":"YulExpressionStatement","src":"1105:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1075:6:75","nodeType":"YulIdentifier","src":"1075:6:75"},{"kind":"number","nativeSrc":"1083:18:75","nodeType":"YulLiteral","src":"1083:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1072:2:75","nodeType":"YulIdentifier","src":"1072:2:75"},"nativeSrc":"1072:30:75","nodeType":"YulFunctionCall","src":"1072:30:75"},"nativeSrc":"1069:50:75","nodeType":"YulIf","src":"1069:50:75"},{"nativeSrc":"1128:95:75","nodeType":"YulVariableDeclaration","src":"1128:95:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1195:9:75","nodeType":"YulIdentifier","src":"1195:9:75"},{"name":"offset","nativeSrc":"1206:6:75","nodeType":"YulIdentifier","src":"1206:6:75"}],"functionName":{"name":"add","nativeSrc":"1191:3:75","nodeType":"YulIdentifier","src":"1191:3:75"},"nativeSrc":"1191:22:75","nodeType":"YulFunctionCall","src":"1191:22:75"},{"name":"dataEnd","nativeSrc":"1215:7:75","nodeType":"YulIdentifier","src":"1215:7:75"}],"functionName":{"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"1154:36:75","nodeType":"YulIdentifier","src":"1154:36:75"},"nativeSrc":"1154:69:75","nodeType":"YulFunctionCall","src":"1154:69:75"},"variables":[{"name":"value1_1","nativeSrc":"1132:8:75","nodeType":"YulTypedName","src":"1132:8:75","type":""},{"name":"value2_1","nativeSrc":"1142:8:75","nodeType":"YulTypedName","src":"1142:8:75","type":""}]},{"nativeSrc":"1232:18:75","nodeType":"YulAssignment","src":"1232:18:75","value":{"name":"value1_1","nativeSrc":"1242:8:75","nodeType":"YulIdentifier","src":"1242:8:75"},"variableNames":[{"name":"value1","nativeSrc":"1232:6:75","nodeType":"YulIdentifier","src":"1232:6:75"}]},{"nativeSrc":"1259:18:75","nodeType":"YulAssignment","src":"1259:18:75","value":{"name":"value2_1","nativeSrc":"1269:8:75","nodeType":"YulIdentifier","src":"1269:8:75"},"variableNames":[{"name":"value2","nativeSrc":"1259:6:75","nodeType":"YulIdentifier","src":"1259:6:75"}]},{"nativeSrc":"1286:47:75","nodeType":"YulAssignment","src":"1286:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1318:9:75","nodeType":"YulIdentifier","src":"1318:9:75"},{"kind":"number","nativeSrc":"1329:2:75","nodeType":"YulLiteral","src":"1329:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1314:3:75","nodeType":"YulIdentifier","src":"1314:3:75"},"nativeSrc":"1314:18:75","nodeType":"YulFunctionCall","src":"1314:18:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"1296:17:75","nodeType":"YulIdentifier","src":"1296:17:75"},"nativeSrc":"1296:37:75","nodeType":"YulFunctionCall","src":"1296:37:75"},"variableNames":[{"name":"value3","nativeSrc":"1286:6:75","nodeType":"YulIdentifier","src":"1286:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_bytes4_$dyn_calldata_ptrt_uint64","nativeSrc":"697:642:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"776:9:75","nodeType":"YulTypedName","src":"776:9:75","type":""},{"name":"dataEnd","nativeSrc":"787:7:75","nodeType":"YulTypedName","src":"787:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"799:6:75","nodeType":"YulTypedName","src":"799:6:75","type":""},{"name":"value1","nativeSrc":"807:6:75","nodeType":"YulTypedName","src":"807:6:75","type":""},{"name":"value2","nativeSrc":"815:6:75","nodeType":"YulTypedName","src":"815:6:75","type":""},{"name":"value3","nativeSrc":"823:6:75","nodeType":"YulTypedName","src":"823:6:75","type":""}],"src":"697:642:75"},{"body":{"nativeSrc":"1413:115:75","nodeType":"YulBlock","src":"1413:115:75","statements":[{"body":{"nativeSrc":"1459:16:75","nodeType":"YulBlock","src":"1459:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1468:1:75","nodeType":"YulLiteral","src":"1468:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1471:1:75","nodeType":"YulLiteral","src":"1471:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1461:6:75","nodeType":"YulIdentifier","src":"1461:6:75"},"nativeSrc":"1461:12:75","nodeType":"YulFunctionCall","src":"1461:12:75"},"nativeSrc":"1461:12:75","nodeType":"YulExpressionStatement","src":"1461:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1434:7:75","nodeType":"YulIdentifier","src":"1434:7:75"},{"name":"headStart","nativeSrc":"1443:9:75","nodeType":"YulIdentifier","src":"1443:9:75"}],"functionName":{"name":"sub","nativeSrc":"1430:3:75","nodeType":"YulIdentifier","src":"1430:3:75"},"nativeSrc":"1430:23:75","nodeType":"YulFunctionCall","src":"1430:23:75"},{"kind":"number","nativeSrc":"1455:2:75","nodeType":"YulLiteral","src":"1455:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1426:3:75","nodeType":"YulIdentifier","src":"1426:3:75"},"nativeSrc":"1426:32:75","nodeType":"YulFunctionCall","src":"1426:32:75"},"nativeSrc":"1423:52:75","nodeType":"YulIf","src":"1423:52:75"},{"nativeSrc":"1484:38:75","nodeType":"YulAssignment","src":"1484:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1512:9:75","nodeType":"YulIdentifier","src":"1512:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"1494:17:75","nodeType":"YulIdentifier","src":"1494:17:75"},"nativeSrc":"1494:28:75","nodeType":"YulFunctionCall","src":"1494:28:75"},"variableNames":[{"name":"value0","nativeSrc":"1484:6:75","nodeType":"YulIdentifier","src":"1484:6:75"}]}]},"name":"abi_decode_tuple_t_uint64","nativeSrc":"1344:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1379:9:75","nodeType":"YulTypedName","src":"1379:9:75","type":""},{"name":"dataEnd","nativeSrc":"1390:7:75","nodeType":"YulTypedName","src":"1390:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1402:6:75","nodeType":"YulTypedName","src":"1402:6:75","type":""}],"src":"1344:184:75"},{"body":{"nativeSrc":"1632:101:75","nodeType":"YulBlock","src":"1632:101:75","statements":[{"nativeSrc":"1642:26:75","nodeType":"YulAssignment","src":"1642:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1654:9:75","nodeType":"YulIdentifier","src":"1654:9:75"},{"kind":"number","nativeSrc":"1665:2:75","nodeType":"YulLiteral","src":"1665:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1650:3:75","nodeType":"YulIdentifier","src":"1650:3:75"},"nativeSrc":"1650:18:75","nodeType":"YulFunctionCall","src":"1650:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1642:4:75","nodeType":"YulIdentifier","src":"1642:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1684:9:75","nodeType":"YulIdentifier","src":"1684:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1699:6:75","nodeType":"YulIdentifier","src":"1699:6:75"},{"kind":"number","nativeSrc":"1707:18:75","nodeType":"YulLiteral","src":"1707:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"1695:3:75","nodeType":"YulIdentifier","src":"1695:3:75"},"nativeSrc":"1695:31:75","nodeType":"YulFunctionCall","src":"1695:31:75"}],"functionName":{"name":"mstore","nativeSrc":"1677:6:75","nodeType":"YulIdentifier","src":"1677:6:75"},"nativeSrc":"1677:50:75","nodeType":"YulFunctionCall","src":"1677:50:75"},"nativeSrc":"1677:50:75","nodeType":"YulExpressionStatement","src":"1677:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"1533:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1601:9:75","nodeType":"YulTypedName","src":"1601:9:75","type":""},{"name":"value0","nativeSrc":"1612:6:75","nodeType":"YulTypedName","src":"1612:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1623:4:75","nodeType":"YulTypedName","src":"1623:4:75","type":""}],"src":"1533:200:75"},{"body":{"nativeSrc":"1837:93:75","nodeType":"YulBlock","src":"1837:93:75","statements":[{"nativeSrc":"1847:26:75","nodeType":"YulAssignment","src":"1847:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1859:9:75","nodeType":"YulIdentifier","src":"1859:9:75"},{"kind":"number","nativeSrc":"1870:2:75","nodeType":"YulLiteral","src":"1870:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1855:3:75","nodeType":"YulIdentifier","src":"1855:3:75"},"nativeSrc":"1855:18:75","nodeType":"YulFunctionCall","src":"1855:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1847:4:75","nodeType":"YulIdentifier","src":"1847:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1889:9:75","nodeType":"YulIdentifier","src":"1889:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1904:6:75","nodeType":"YulIdentifier","src":"1904:6:75"},{"kind":"number","nativeSrc":"1912:10:75","nodeType":"YulLiteral","src":"1912:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1900:3:75","nodeType":"YulIdentifier","src":"1900:3:75"},"nativeSrc":"1900:23:75","nodeType":"YulFunctionCall","src":"1900:23:75"}],"functionName":{"name":"mstore","nativeSrc":"1882:6:75","nodeType":"YulIdentifier","src":"1882:6:75"},"nativeSrc":"1882:42:75","nodeType":"YulFunctionCall","src":"1882:42:75"},"nativeSrc":"1882:42:75","nodeType":"YulExpressionStatement","src":"1882:42:75"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nativeSrc":"1738:192:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1806:9:75","nodeType":"YulTypedName","src":"1806:9:75","type":""},{"name":"value0","nativeSrc":"1817:6:75","nodeType":"YulTypedName","src":"1817:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1828:4:75","nodeType":"YulTypedName","src":"1828:4:75","type":""}],"src":"1738:192:75"},{"body":{"nativeSrc":"2019:332:75","nodeType":"YulBlock","src":"2019:332:75","statements":[{"body":{"nativeSrc":"2065:16:75","nodeType":"YulBlock","src":"2065:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2074:1:75","nodeType":"YulLiteral","src":"2074:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2077:1:75","nodeType":"YulLiteral","src":"2077:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2067:6:75","nodeType":"YulIdentifier","src":"2067:6:75"},"nativeSrc":"2067:12:75","nodeType":"YulFunctionCall","src":"2067:12:75"},"nativeSrc":"2067:12:75","nodeType":"YulExpressionStatement","src":"2067:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2040:7:75","nodeType":"YulIdentifier","src":"2040:7:75"},{"name":"headStart","nativeSrc":"2049:9:75","nodeType":"YulIdentifier","src":"2049:9:75"}],"functionName":{"name":"sub","nativeSrc":"2036:3:75","nodeType":"YulIdentifier","src":"2036:3:75"},"nativeSrc":"2036:23:75","nodeType":"YulFunctionCall","src":"2036:23:75"},{"kind":"number","nativeSrc":"2061:2:75","nodeType":"YulLiteral","src":"2061:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2032:3:75","nodeType":"YulIdentifier","src":"2032:3:75"},"nativeSrc":"2032:32:75","nodeType":"YulFunctionCall","src":"2032:32:75"},"nativeSrc":"2029:52:75","nodeType":"YulIf","src":"2029:52:75"},{"nativeSrc":"2090:36:75","nodeType":"YulVariableDeclaration","src":"2090:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2116:9:75","nodeType":"YulIdentifier","src":"2116:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2103:12:75","nodeType":"YulIdentifier","src":"2103:12:75"},"nativeSrc":"2103:23:75","nodeType":"YulFunctionCall","src":"2103:23:75"},"variables":[{"name":"value","nativeSrc":"2094:5:75","nodeType":"YulTypedName","src":"2094:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2160:5:75","nodeType":"YulIdentifier","src":"2160:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2135:24:75","nodeType":"YulIdentifier","src":"2135:24:75"},"nativeSrc":"2135:31:75","nodeType":"YulFunctionCall","src":"2135:31:75"},"nativeSrc":"2135:31:75","nodeType":"YulExpressionStatement","src":"2135:31:75"},{"nativeSrc":"2175:15:75","nodeType":"YulAssignment","src":"2175:15:75","value":{"name":"value","nativeSrc":"2185:5:75","nodeType":"YulIdentifier","src":"2185:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2175:6:75","nodeType":"YulIdentifier","src":"2175:6:75"}]},{"nativeSrc":"2199:47:75","nodeType":"YulVariableDeclaration","src":"2199:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2231:9:75","nodeType":"YulIdentifier","src":"2231:9:75"},{"kind":"number","nativeSrc":"2242:2:75","nodeType":"YulLiteral","src":"2242:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2227:3:75","nodeType":"YulIdentifier","src":"2227:3:75"},"nativeSrc":"2227:18:75","nodeType":"YulFunctionCall","src":"2227:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2214:12:75","nodeType":"YulIdentifier","src":"2214:12:75"},"nativeSrc":"2214:32:75","nodeType":"YulFunctionCall","src":"2214:32:75"},"variables":[{"name":"value_1","nativeSrc":"2203:7:75","nodeType":"YulTypedName","src":"2203:7:75","type":""}]},{"body":{"nativeSrc":"2303:16:75","nodeType":"YulBlock","src":"2303:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2312:1:75","nodeType":"YulLiteral","src":"2312:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2315:1:75","nodeType":"YulLiteral","src":"2315:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2305:6:75","nodeType":"YulIdentifier","src":"2305:6:75"},"nativeSrc":"2305:12:75","nodeType":"YulFunctionCall","src":"2305:12:75"},"nativeSrc":"2305:12:75","nodeType":"YulExpressionStatement","src":"2305:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"2268:7:75","nodeType":"YulIdentifier","src":"2268:7:75"},{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"2291:7:75","nodeType":"YulIdentifier","src":"2291:7:75"}],"functionName":{"name":"iszero","nativeSrc":"2284:6:75","nodeType":"YulIdentifier","src":"2284:6:75"},"nativeSrc":"2284:15:75","nodeType":"YulFunctionCall","src":"2284:15:75"}],"functionName":{"name":"iszero","nativeSrc":"2277:6:75","nodeType":"YulIdentifier","src":"2277:6:75"},"nativeSrc":"2277:23:75","nodeType":"YulFunctionCall","src":"2277:23:75"}],"functionName":{"name":"eq","nativeSrc":"2265:2:75","nodeType":"YulIdentifier","src":"2265:2:75"},"nativeSrc":"2265:36:75","nodeType":"YulFunctionCall","src":"2265:36:75"}],"functionName":{"name":"iszero","nativeSrc":"2258:6:75","nodeType":"YulIdentifier","src":"2258:6:75"},"nativeSrc":"2258:44:75","nodeType":"YulFunctionCall","src":"2258:44:75"},"nativeSrc":"2255:64:75","nodeType":"YulIf","src":"2255:64:75"},{"nativeSrc":"2328:17:75","nodeType":"YulAssignment","src":"2328:17:75","value":{"name":"value_1","nativeSrc":"2338:7:75","nodeType":"YulIdentifier","src":"2338:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2328:6:75","nodeType":"YulIdentifier","src":"2328:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"1935:416:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1977:9:75","nodeType":"YulTypedName","src":"1977:9:75","type":""},{"name":"dataEnd","nativeSrc":"1988:7:75","nodeType":"YulTypedName","src":"1988:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2000:6:75","nodeType":"YulTypedName","src":"2000:6:75","type":""},{"name":"value1","nativeSrc":"2008:6:75","nodeType":"YulTypedName","src":"2008:6:75","type":""}],"src":"1935:416:75"},{"body":{"nativeSrc":"2443:301:75","nodeType":"YulBlock","src":"2443:301:75","statements":[{"body":{"nativeSrc":"2489:16:75","nodeType":"YulBlock","src":"2489:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2498:1:75","nodeType":"YulLiteral","src":"2498:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2501:1:75","nodeType":"YulLiteral","src":"2501:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2491:6:75","nodeType":"YulIdentifier","src":"2491:6:75"},"nativeSrc":"2491:12:75","nodeType":"YulFunctionCall","src":"2491:12:75"},"nativeSrc":"2491:12:75","nodeType":"YulExpressionStatement","src":"2491:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2464:7:75","nodeType":"YulIdentifier","src":"2464:7:75"},{"name":"headStart","nativeSrc":"2473:9:75","nodeType":"YulIdentifier","src":"2473:9:75"}],"functionName":{"name":"sub","nativeSrc":"2460:3:75","nodeType":"YulIdentifier","src":"2460:3:75"},"nativeSrc":"2460:23:75","nodeType":"YulFunctionCall","src":"2460:23:75"},{"kind":"number","nativeSrc":"2485:2:75","nodeType":"YulLiteral","src":"2485:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2456:3:75","nodeType":"YulIdentifier","src":"2456:3:75"},"nativeSrc":"2456:32:75","nodeType":"YulFunctionCall","src":"2456:32:75"},"nativeSrc":"2453:52:75","nodeType":"YulIf","src":"2453:52:75"},{"nativeSrc":"2514:36:75","nodeType":"YulVariableDeclaration","src":"2514:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2540:9:75","nodeType":"YulIdentifier","src":"2540:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2527:12:75","nodeType":"YulIdentifier","src":"2527:12:75"},"nativeSrc":"2527:23:75","nodeType":"YulFunctionCall","src":"2527:23:75"},"variables":[{"name":"value","nativeSrc":"2518:5:75","nodeType":"YulTypedName","src":"2518:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2584:5:75","nodeType":"YulIdentifier","src":"2584:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2559:24:75","nodeType":"YulIdentifier","src":"2559:24:75"},"nativeSrc":"2559:31:75","nodeType":"YulFunctionCall","src":"2559:31:75"},"nativeSrc":"2559:31:75","nodeType":"YulExpressionStatement","src":"2559:31:75"},{"nativeSrc":"2599:15:75","nodeType":"YulAssignment","src":"2599:15:75","value":{"name":"value","nativeSrc":"2609:5:75","nodeType":"YulIdentifier","src":"2609:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2599:6:75","nodeType":"YulIdentifier","src":"2599:6:75"}]},{"nativeSrc":"2623:47:75","nodeType":"YulVariableDeclaration","src":"2623:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2655:9:75","nodeType":"YulIdentifier","src":"2655:9:75"},{"kind":"number","nativeSrc":"2666:2:75","nodeType":"YulLiteral","src":"2666:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2651:3:75","nodeType":"YulIdentifier","src":"2651:3:75"},"nativeSrc":"2651:18:75","nodeType":"YulFunctionCall","src":"2651:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2638:12:75","nodeType":"YulIdentifier","src":"2638:12:75"},"nativeSrc":"2638:32:75","nodeType":"YulFunctionCall","src":"2638:32:75"},"variables":[{"name":"value_1","nativeSrc":"2627:7:75","nodeType":"YulTypedName","src":"2627:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2704:7:75","nodeType":"YulIdentifier","src":"2704:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2679:24:75","nodeType":"YulIdentifier","src":"2679:24:75"},"nativeSrc":"2679:33:75","nodeType":"YulFunctionCall","src":"2679:33:75"},"nativeSrc":"2679:33:75","nodeType":"YulExpressionStatement","src":"2679:33:75"},{"nativeSrc":"2721:17:75","nodeType":"YulAssignment","src":"2721:17:75","value":{"name":"value_1","nativeSrc":"2731:7:75","nodeType":"YulIdentifier","src":"2731:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2721:6:75","nodeType":"YulIdentifier","src":"2721:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"2356:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2401:9:75","nodeType":"YulTypedName","src":"2401:9:75","type":""},{"name":"dataEnd","nativeSrc":"2412:7:75","nodeType":"YulTypedName","src":"2412:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2424:6:75","nodeType":"YulTypedName","src":"2424:6:75","type":""},{"name":"value1","nativeSrc":"2432:6:75","nodeType":"YulTypedName","src":"2432:6:75","type":""}],"src":"2356:388:75"},{"body":{"nativeSrc":"2821:275:75","nodeType":"YulBlock","src":"2821:275:75","statements":[{"body":{"nativeSrc":"2870:16:75","nodeType":"YulBlock","src":"2870:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2879:1:75","nodeType":"YulLiteral","src":"2879:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2882:1:75","nodeType":"YulLiteral","src":"2882:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2872:6:75","nodeType":"YulIdentifier","src":"2872:6:75"},"nativeSrc":"2872:12:75","nodeType":"YulFunctionCall","src":"2872:12:75"},"nativeSrc":"2872:12:75","nodeType":"YulExpressionStatement","src":"2872:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2849:6:75","nodeType":"YulIdentifier","src":"2849:6:75"},{"kind":"number","nativeSrc":"2857:4:75","nodeType":"YulLiteral","src":"2857:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2845:3:75","nodeType":"YulIdentifier","src":"2845:3:75"},"nativeSrc":"2845:17:75","nodeType":"YulFunctionCall","src":"2845:17:75"},{"name":"end","nativeSrc":"2864:3:75","nodeType":"YulIdentifier","src":"2864:3:75"}],"functionName":{"name":"slt","nativeSrc":"2841:3:75","nodeType":"YulIdentifier","src":"2841:3:75"},"nativeSrc":"2841:27:75","nodeType":"YulFunctionCall","src":"2841:27:75"}],"functionName":{"name":"iszero","nativeSrc":"2834:6:75","nodeType":"YulIdentifier","src":"2834:6:75"},"nativeSrc":"2834:35:75","nodeType":"YulFunctionCall","src":"2834:35:75"},"nativeSrc":"2831:55:75","nodeType":"YulIf","src":"2831:55:75"},{"nativeSrc":"2895:30:75","nodeType":"YulAssignment","src":"2895:30:75","value":{"arguments":[{"name":"offset","nativeSrc":"2918:6:75","nodeType":"YulIdentifier","src":"2918:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"2905:12:75","nodeType":"YulIdentifier","src":"2905:12:75"},"nativeSrc":"2905:20:75","nodeType":"YulFunctionCall","src":"2905:20:75"},"variableNames":[{"name":"length","nativeSrc":"2895:6:75","nodeType":"YulIdentifier","src":"2895:6:75"}]},{"body":{"nativeSrc":"2968:16:75","nodeType":"YulBlock","src":"2968:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2977:1:75","nodeType":"YulLiteral","src":"2977:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2980:1:75","nodeType":"YulLiteral","src":"2980:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2970:6:75","nodeType":"YulIdentifier","src":"2970:6:75"},"nativeSrc":"2970:12:75","nodeType":"YulFunctionCall","src":"2970:12:75"},"nativeSrc":"2970:12:75","nodeType":"YulExpressionStatement","src":"2970:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2940:6:75","nodeType":"YulIdentifier","src":"2940:6:75"},{"kind":"number","nativeSrc":"2948:18:75","nodeType":"YulLiteral","src":"2948:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2937:2:75","nodeType":"YulIdentifier","src":"2937:2:75"},"nativeSrc":"2937:30:75","nodeType":"YulFunctionCall","src":"2937:30:75"},"nativeSrc":"2934:50:75","nodeType":"YulIf","src":"2934:50:75"},{"nativeSrc":"2993:29:75","nodeType":"YulAssignment","src":"2993:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"3009:6:75","nodeType":"YulIdentifier","src":"3009:6:75"},{"kind":"number","nativeSrc":"3017:4:75","nodeType":"YulLiteral","src":"3017:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3005:3:75","nodeType":"YulIdentifier","src":"3005:3:75"},"nativeSrc":"3005:17:75","nodeType":"YulFunctionCall","src":"3005:17:75"},"variableNames":[{"name":"arrayPos","nativeSrc":"2993:8:75","nodeType":"YulIdentifier","src":"2993:8:75"}]},{"body":{"nativeSrc":"3074:16:75","nodeType":"YulBlock","src":"3074:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3083:1:75","nodeType":"YulLiteral","src":"3083:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3086:1:75","nodeType":"YulLiteral","src":"3086:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3076:6:75","nodeType":"YulIdentifier","src":"3076:6:75"},"nativeSrc":"3076:12:75","nodeType":"YulFunctionCall","src":"3076:12:75"},"nativeSrc":"3076:12:75","nodeType":"YulExpressionStatement","src":"3076:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3045:6:75","nodeType":"YulIdentifier","src":"3045:6:75"},{"name":"length","nativeSrc":"3053:6:75","nodeType":"YulIdentifier","src":"3053:6:75"}],"functionName":{"name":"add","nativeSrc":"3041:3:75","nodeType":"YulIdentifier","src":"3041:3:75"},"nativeSrc":"3041:19:75","nodeType":"YulFunctionCall","src":"3041:19:75"},{"kind":"number","nativeSrc":"3062:4:75","nodeType":"YulLiteral","src":"3062:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3037:3:75","nodeType":"YulIdentifier","src":"3037:3:75"},"nativeSrc":"3037:30:75","nodeType":"YulFunctionCall","src":"3037:30:75"},{"name":"end","nativeSrc":"3069:3:75","nodeType":"YulIdentifier","src":"3069:3:75"}],"functionName":{"name":"gt","nativeSrc":"3034:2:75","nodeType":"YulIdentifier","src":"3034:2:75"},"nativeSrc":"3034:39:75","nodeType":"YulFunctionCall","src":"3034:39:75"},"nativeSrc":"3031:59:75","nodeType":"YulIf","src":"3031:59:75"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"2749:347:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2784:6:75","nodeType":"YulTypedName","src":"2784:6:75","type":""},{"name":"end","nativeSrc":"2792:3:75","nodeType":"YulTypedName","src":"2792:3:75","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2800:8:75","nodeType":"YulTypedName","src":"2800:8:75","type":""},{"name":"length","nativeSrc":"2810:6:75","nodeType":"YulTypedName","src":"2810:6:75","type":""}],"src":"2749:347:75"},{"body":{"nativeSrc":"3207:438:75","nodeType":"YulBlock","src":"3207:438:75","statements":[{"body":{"nativeSrc":"3253:16:75","nodeType":"YulBlock","src":"3253:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3262:1:75","nodeType":"YulLiteral","src":"3262:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3265:1:75","nodeType":"YulLiteral","src":"3265:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3255:6:75","nodeType":"YulIdentifier","src":"3255:6:75"},"nativeSrc":"3255:12:75","nodeType":"YulFunctionCall","src":"3255:12:75"},"nativeSrc":"3255:12:75","nodeType":"YulExpressionStatement","src":"3255:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3228:7:75","nodeType":"YulIdentifier","src":"3228:7:75"},{"name":"headStart","nativeSrc":"3237:9:75","nodeType":"YulIdentifier","src":"3237:9:75"}],"functionName":{"name":"sub","nativeSrc":"3224:3:75","nodeType":"YulIdentifier","src":"3224:3:75"},"nativeSrc":"3224:23:75","nodeType":"YulFunctionCall","src":"3224:23:75"},{"kind":"number","nativeSrc":"3249:2:75","nodeType":"YulLiteral","src":"3249:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3220:3:75","nodeType":"YulIdentifier","src":"3220:3:75"},"nativeSrc":"3220:32:75","nodeType":"YulFunctionCall","src":"3220:32:75"},"nativeSrc":"3217:52:75","nodeType":"YulIf","src":"3217:52:75"},{"nativeSrc":"3278:36:75","nodeType":"YulVariableDeclaration","src":"3278:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3304:9:75","nodeType":"YulIdentifier","src":"3304:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3291:12:75","nodeType":"YulIdentifier","src":"3291:12:75"},"nativeSrc":"3291:23:75","nodeType":"YulFunctionCall","src":"3291:23:75"},"variables":[{"name":"value","nativeSrc":"3282:5:75","nodeType":"YulTypedName","src":"3282:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3348:5:75","nodeType":"YulIdentifier","src":"3348:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3323:24:75","nodeType":"YulIdentifier","src":"3323:24:75"},"nativeSrc":"3323:31:75","nodeType":"YulFunctionCall","src":"3323:31:75"},"nativeSrc":"3323:31:75","nodeType":"YulExpressionStatement","src":"3323:31:75"},{"nativeSrc":"3363:15:75","nodeType":"YulAssignment","src":"3363:15:75","value":{"name":"value","nativeSrc":"3373:5:75","nodeType":"YulIdentifier","src":"3373:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3363:6:75","nodeType":"YulIdentifier","src":"3363:6:75"}]},{"nativeSrc":"3387:46:75","nodeType":"YulVariableDeclaration","src":"3387:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3418:9:75","nodeType":"YulIdentifier","src":"3418:9:75"},{"kind":"number","nativeSrc":"3429:2:75","nodeType":"YulLiteral","src":"3429:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3414:3:75","nodeType":"YulIdentifier","src":"3414:3:75"},"nativeSrc":"3414:18:75","nodeType":"YulFunctionCall","src":"3414:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3401:12:75","nodeType":"YulIdentifier","src":"3401:12:75"},"nativeSrc":"3401:32:75","nodeType":"YulFunctionCall","src":"3401:32:75"},"variables":[{"name":"offset","nativeSrc":"3391:6:75","nodeType":"YulTypedName","src":"3391:6:75","type":""}]},{"body":{"nativeSrc":"3476:16:75","nodeType":"YulBlock","src":"3476:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3485:1:75","nodeType":"YulLiteral","src":"3485:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3488:1:75","nodeType":"YulLiteral","src":"3488:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3478:6:75","nodeType":"YulIdentifier","src":"3478:6:75"},"nativeSrc":"3478:12:75","nodeType":"YulFunctionCall","src":"3478:12:75"},"nativeSrc":"3478:12:75","nodeType":"YulExpressionStatement","src":"3478:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3448:6:75","nodeType":"YulIdentifier","src":"3448:6:75"},{"kind":"number","nativeSrc":"3456:18:75","nodeType":"YulLiteral","src":"3456:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3445:2:75","nodeType":"YulIdentifier","src":"3445:2:75"},"nativeSrc":"3445:30:75","nodeType":"YulFunctionCall","src":"3445:30:75"},"nativeSrc":"3442:50:75","nodeType":"YulIf","src":"3442:50:75"},{"nativeSrc":"3501:84:75","nodeType":"YulVariableDeclaration","src":"3501:84:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3557:9:75","nodeType":"YulIdentifier","src":"3557:9:75"},{"name":"offset","nativeSrc":"3568:6:75","nodeType":"YulIdentifier","src":"3568:6:75"}],"functionName":{"name":"add","nativeSrc":"3553:3:75","nodeType":"YulIdentifier","src":"3553:3:75"},"nativeSrc":"3553:22:75","nodeType":"YulFunctionCall","src":"3553:22:75"},{"name":"dataEnd","nativeSrc":"3577:7:75","nodeType":"YulIdentifier","src":"3577:7:75"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"3527:25:75","nodeType":"YulIdentifier","src":"3527:25:75"},"nativeSrc":"3527:58:75","nodeType":"YulFunctionCall","src":"3527:58:75"},"variables":[{"name":"value1_1","nativeSrc":"3505:8:75","nodeType":"YulTypedName","src":"3505:8:75","type":""},{"name":"value2_1","nativeSrc":"3515:8:75","nodeType":"YulTypedName","src":"3515:8:75","type":""}]},{"nativeSrc":"3594:18:75","nodeType":"YulAssignment","src":"3594:18:75","value":{"name":"value1_1","nativeSrc":"3604:8:75","nodeType":"YulIdentifier","src":"3604:8:75"},"variableNames":[{"name":"value1","nativeSrc":"3594:6:75","nodeType":"YulIdentifier","src":"3594:6:75"}]},{"nativeSrc":"3621:18:75","nodeType":"YulAssignment","src":"3621:18:75","value":{"name":"value2_1","nativeSrc":"3631:8:75","nodeType":"YulIdentifier","src":"3631:8:75"},"variableNames":[{"name":"value2","nativeSrc":"3621:6:75","nodeType":"YulIdentifier","src":"3621:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"3101:544:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3157:9:75","nodeType":"YulTypedName","src":"3157:9:75","type":""},{"name":"dataEnd","nativeSrc":"3168:7:75","nodeType":"YulTypedName","src":"3168:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3180:6:75","nodeType":"YulTypedName","src":"3180:6:75","type":""},{"name":"value1","nativeSrc":"3188:6:75","nodeType":"YulTypedName","src":"3188:6:75","type":""},{"name":"value2","nativeSrc":"3196:6:75","nodeType":"YulTypedName","src":"3196:6:75","type":""}],"src":"3101:544:75"},{"body":{"nativeSrc":"3698:115:75","nodeType":"YulBlock","src":"3698:115:75","statements":[{"nativeSrc":"3708:29:75","nodeType":"YulAssignment","src":"3708:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"3730:6:75","nodeType":"YulIdentifier","src":"3730:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"3717:12:75","nodeType":"YulIdentifier","src":"3717:12:75"},"nativeSrc":"3717:20:75","nodeType":"YulFunctionCall","src":"3717:20:75"},"variableNames":[{"name":"value","nativeSrc":"3708:5:75","nodeType":"YulIdentifier","src":"3708:5:75"}]},{"body":{"nativeSrc":"3791:16:75","nodeType":"YulBlock","src":"3791:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3800:1:75","nodeType":"YulLiteral","src":"3800:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3803:1:75","nodeType":"YulLiteral","src":"3803:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3793:6:75","nodeType":"YulIdentifier","src":"3793:6:75"},"nativeSrc":"3793:12:75","nodeType":"YulFunctionCall","src":"3793:12:75"},"nativeSrc":"3793:12:75","nodeType":"YulExpressionStatement","src":"3793:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3759:5:75","nodeType":"YulIdentifier","src":"3759:5:75"},{"arguments":[{"name":"value","nativeSrc":"3770:5:75","nodeType":"YulIdentifier","src":"3770:5:75"},{"kind":"number","nativeSrc":"3777:10:75","nodeType":"YulLiteral","src":"3777:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"3766:3:75","nodeType":"YulIdentifier","src":"3766:3:75"},"nativeSrc":"3766:22:75","nodeType":"YulFunctionCall","src":"3766:22:75"}],"functionName":{"name":"eq","nativeSrc":"3756:2:75","nodeType":"YulIdentifier","src":"3756:2:75"},"nativeSrc":"3756:33:75","nodeType":"YulFunctionCall","src":"3756:33:75"}],"functionName":{"name":"iszero","nativeSrc":"3749:6:75","nodeType":"YulIdentifier","src":"3749:6:75"},"nativeSrc":"3749:41:75","nodeType":"YulFunctionCall","src":"3749:41:75"},"nativeSrc":"3746:61:75","nodeType":"YulIf","src":"3746:61:75"}]},"name":"abi_decode_uint32","nativeSrc":"3650:163:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3677:6:75","nodeType":"YulTypedName","src":"3677:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3688:5:75","nodeType":"YulTypedName","src":"3688:5:75","type":""}],"src":"3650:163:75"},{"body":{"nativeSrc":"3920:289:75","nodeType":"YulBlock","src":"3920:289:75","statements":[{"body":{"nativeSrc":"3966:16:75","nodeType":"YulBlock","src":"3966:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3975:1:75","nodeType":"YulLiteral","src":"3975:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3978:1:75","nodeType":"YulLiteral","src":"3978:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3968:6:75","nodeType":"YulIdentifier","src":"3968:6:75"},"nativeSrc":"3968:12:75","nodeType":"YulFunctionCall","src":"3968:12:75"},"nativeSrc":"3968:12:75","nodeType":"YulExpressionStatement","src":"3968:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3941:7:75","nodeType":"YulIdentifier","src":"3941:7:75"},{"name":"headStart","nativeSrc":"3950:9:75","nodeType":"YulIdentifier","src":"3950:9:75"}],"functionName":{"name":"sub","nativeSrc":"3937:3:75","nodeType":"YulIdentifier","src":"3937:3:75"},"nativeSrc":"3937:23:75","nodeType":"YulFunctionCall","src":"3937:23:75"},{"kind":"number","nativeSrc":"3962:2:75","nodeType":"YulLiteral","src":"3962:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3933:3:75","nodeType":"YulIdentifier","src":"3933:3:75"},"nativeSrc":"3933:32:75","nodeType":"YulFunctionCall","src":"3933:32:75"},"nativeSrc":"3930:52:75","nodeType":"YulIf","src":"3930:52:75"},{"nativeSrc":"3991:38:75","nodeType":"YulAssignment","src":"3991:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4019:9:75","nodeType":"YulIdentifier","src":"4019:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"4001:17:75","nodeType":"YulIdentifier","src":"4001:17:75"},"nativeSrc":"4001:28:75","nodeType":"YulFunctionCall","src":"4001:28:75"},"variableNames":[{"name":"value0","nativeSrc":"3991:6:75","nodeType":"YulIdentifier","src":"3991:6:75"}]},{"nativeSrc":"4038:45:75","nodeType":"YulVariableDeclaration","src":"4038:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4068:9:75","nodeType":"YulIdentifier","src":"4068:9:75"},{"kind":"number","nativeSrc":"4079:2:75","nodeType":"YulLiteral","src":"4079:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4064:3:75","nodeType":"YulIdentifier","src":"4064:3:75"},"nativeSrc":"4064:18:75","nodeType":"YulFunctionCall","src":"4064:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4051:12:75","nodeType":"YulIdentifier","src":"4051:12:75"},"nativeSrc":"4051:32:75","nodeType":"YulFunctionCall","src":"4051:32:75"},"variables":[{"name":"value","nativeSrc":"4042:5:75","nodeType":"YulTypedName","src":"4042:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4117:5:75","nodeType":"YulIdentifier","src":"4117:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4092:24:75","nodeType":"YulIdentifier","src":"4092:24:75"},"nativeSrc":"4092:31:75","nodeType":"YulFunctionCall","src":"4092:31:75"},"nativeSrc":"4092:31:75","nodeType":"YulExpressionStatement","src":"4092:31:75"},{"nativeSrc":"4132:15:75","nodeType":"YulAssignment","src":"4132:15:75","value":{"name":"value","nativeSrc":"4142:5:75","nodeType":"YulIdentifier","src":"4142:5:75"},"variableNames":[{"name":"value1","nativeSrc":"4132:6:75","nodeType":"YulIdentifier","src":"4132:6:75"}]},{"nativeSrc":"4156:47:75","nodeType":"YulAssignment","src":"4156:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4188:9:75","nodeType":"YulIdentifier","src":"4188:9:75"},{"kind":"number","nativeSrc":"4199:2:75","nodeType":"YulLiteral","src":"4199:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4184:3:75","nodeType":"YulIdentifier","src":"4184:3:75"},"nativeSrc":"4184:18:75","nodeType":"YulFunctionCall","src":"4184:18:75"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"4166:17:75","nodeType":"YulIdentifier","src":"4166:17:75"},"nativeSrc":"4166:37:75","nodeType":"YulFunctionCall","src":"4166:37:75"},"variableNames":[{"name":"value2","nativeSrc":"4156:6:75","nodeType":"YulIdentifier","src":"4156:6:75"}]}]},"name":"abi_decode_tuple_t_uint64t_addresst_uint32","nativeSrc":"3818:391:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3870:9:75","nodeType":"YulTypedName","src":"3870:9:75","type":""},{"name":"dataEnd","nativeSrc":"3881:7:75","nodeType":"YulTypedName","src":"3881:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3893:6:75","nodeType":"YulTypedName","src":"3893:6:75","type":""},{"name":"value1","nativeSrc":"3901:6:75","nodeType":"YulTypedName","src":"3901:6:75","type":""},{"name":"value2","nativeSrc":"3909:6:75","nodeType":"YulTypedName","src":"3909:6:75","type":""}],"src":"3818:391:75"},{"body":{"nativeSrc":"4300:233:75","nodeType":"YulBlock","src":"4300:233:75","statements":[{"body":{"nativeSrc":"4346:16:75","nodeType":"YulBlock","src":"4346:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4355:1:75","nodeType":"YulLiteral","src":"4355:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4358:1:75","nodeType":"YulLiteral","src":"4358:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4348:6:75","nodeType":"YulIdentifier","src":"4348:6:75"},"nativeSrc":"4348:12:75","nodeType":"YulFunctionCall","src":"4348:12:75"},"nativeSrc":"4348:12:75","nodeType":"YulExpressionStatement","src":"4348:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4321:7:75","nodeType":"YulIdentifier","src":"4321:7:75"},{"name":"headStart","nativeSrc":"4330:9:75","nodeType":"YulIdentifier","src":"4330:9:75"}],"functionName":{"name":"sub","nativeSrc":"4317:3:75","nodeType":"YulIdentifier","src":"4317:3:75"},"nativeSrc":"4317:23:75","nodeType":"YulFunctionCall","src":"4317:23:75"},{"kind":"number","nativeSrc":"4342:2:75","nodeType":"YulLiteral","src":"4342:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4313:3:75","nodeType":"YulIdentifier","src":"4313:3:75"},"nativeSrc":"4313:32:75","nodeType":"YulFunctionCall","src":"4313:32:75"},"nativeSrc":"4310:52:75","nodeType":"YulIf","src":"4310:52:75"},{"nativeSrc":"4371:38:75","nodeType":"YulAssignment","src":"4371:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4399:9:75","nodeType":"YulIdentifier","src":"4399:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"4381:17:75","nodeType":"YulIdentifier","src":"4381:17:75"},"nativeSrc":"4381:28:75","nodeType":"YulFunctionCall","src":"4381:28:75"},"variableNames":[{"name":"value0","nativeSrc":"4371:6:75","nodeType":"YulIdentifier","src":"4371:6:75"}]},{"nativeSrc":"4418:45:75","nodeType":"YulVariableDeclaration","src":"4418:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4448:9:75","nodeType":"YulIdentifier","src":"4448:9:75"},{"kind":"number","nativeSrc":"4459:2:75","nodeType":"YulLiteral","src":"4459:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4444:3:75","nodeType":"YulIdentifier","src":"4444:3:75"},"nativeSrc":"4444:18:75","nodeType":"YulFunctionCall","src":"4444:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4431:12:75","nodeType":"YulIdentifier","src":"4431:12:75"},"nativeSrc":"4431:32:75","nodeType":"YulFunctionCall","src":"4431:32:75"},"variables":[{"name":"value","nativeSrc":"4422:5:75","nodeType":"YulTypedName","src":"4422:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4497:5:75","nodeType":"YulIdentifier","src":"4497:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4472:24:75","nodeType":"YulIdentifier","src":"4472:24:75"},"nativeSrc":"4472:31:75","nodeType":"YulFunctionCall","src":"4472:31:75"},"nativeSrc":"4472:31:75","nodeType":"YulExpressionStatement","src":"4472:31:75"},{"nativeSrc":"4512:15:75","nodeType":"YulAssignment","src":"4512:15:75","value":{"name":"value","nativeSrc":"4522:5:75","nodeType":"YulIdentifier","src":"4522:5:75"},"variableNames":[{"name":"value1","nativeSrc":"4512:6:75","nodeType":"YulIdentifier","src":"4512:6:75"}]}]},"name":"abi_decode_tuple_t_uint64t_address","nativeSrc":"4214:319:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4258:9:75","nodeType":"YulTypedName","src":"4258:9:75","type":""},{"name":"dataEnd","nativeSrc":"4269:7:75","nodeType":"YulTypedName","src":"4269:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4281:6:75","nodeType":"YulTypedName","src":"4281:6:75","type":""},{"name":"value1","nativeSrc":"4289:6:75","nodeType":"YulTypedName","src":"4289:6:75","type":""}],"src":"4214:319:75"},{"body":{"nativeSrc":"4715:282:75","nodeType":"YulBlock","src":"4715:282:75","statements":[{"nativeSrc":"4725:27:75","nodeType":"YulAssignment","src":"4725:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4737:9:75","nodeType":"YulIdentifier","src":"4737:9:75"},{"kind":"number","nativeSrc":"4748:3:75","nodeType":"YulLiteral","src":"4748:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4733:3:75","nodeType":"YulIdentifier","src":"4733:3:75"},"nativeSrc":"4733:19:75","nodeType":"YulFunctionCall","src":"4733:19:75"},"variableNames":[{"name":"tail","nativeSrc":"4725:4:75","nodeType":"YulIdentifier","src":"4725:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4768:9:75","nodeType":"YulIdentifier","src":"4768:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4783:6:75","nodeType":"YulIdentifier","src":"4783:6:75"},{"kind":"number","nativeSrc":"4791:14:75","nodeType":"YulLiteral","src":"4791:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4779:3:75","nodeType":"YulIdentifier","src":"4779:3:75"},"nativeSrc":"4779:27:75","nodeType":"YulFunctionCall","src":"4779:27:75"}],"functionName":{"name":"mstore","nativeSrc":"4761:6:75","nodeType":"YulIdentifier","src":"4761:6:75"},"nativeSrc":"4761:46:75","nodeType":"YulFunctionCall","src":"4761:46:75"},"nativeSrc":"4761:46:75","nodeType":"YulExpressionStatement","src":"4761:46:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4827:9:75","nodeType":"YulIdentifier","src":"4827:9:75"},{"kind":"number","nativeSrc":"4838:2:75","nodeType":"YulLiteral","src":"4838:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4823:3:75","nodeType":"YulIdentifier","src":"4823:3:75"},"nativeSrc":"4823:18:75","nodeType":"YulFunctionCall","src":"4823:18:75"},{"arguments":[{"name":"value1","nativeSrc":"4847:6:75","nodeType":"YulIdentifier","src":"4847:6:75"},{"kind":"number","nativeSrc":"4855:10:75","nodeType":"YulLiteral","src":"4855:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"4843:3:75","nodeType":"YulIdentifier","src":"4843:3:75"},"nativeSrc":"4843:23:75","nodeType":"YulFunctionCall","src":"4843:23:75"}],"functionName":{"name":"mstore","nativeSrc":"4816:6:75","nodeType":"YulIdentifier","src":"4816:6:75"},"nativeSrc":"4816:51:75","nodeType":"YulFunctionCall","src":"4816:51:75"},"nativeSrc":"4816:51:75","nodeType":"YulExpressionStatement","src":"4816:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4887:9:75","nodeType":"YulIdentifier","src":"4887:9:75"},{"kind":"number","nativeSrc":"4898:2:75","nodeType":"YulLiteral","src":"4898:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4883:3:75","nodeType":"YulIdentifier","src":"4883:3:75"},"nativeSrc":"4883:18:75","nodeType":"YulFunctionCall","src":"4883:18:75"},{"arguments":[{"name":"value2","nativeSrc":"4907:6:75","nodeType":"YulIdentifier","src":"4907:6:75"},{"kind":"number","nativeSrc":"4915:10:75","nodeType":"YulLiteral","src":"4915:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"4903:3:75","nodeType":"YulIdentifier","src":"4903:3:75"},"nativeSrc":"4903:23:75","nodeType":"YulFunctionCall","src":"4903:23:75"}],"functionName":{"name":"mstore","nativeSrc":"4876:6:75","nodeType":"YulIdentifier","src":"4876:6:75"},"nativeSrc":"4876:51:75","nodeType":"YulFunctionCall","src":"4876:51:75"},"nativeSrc":"4876:51:75","nodeType":"YulExpressionStatement","src":"4876:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4947:9:75","nodeType":"YulIdentifier","src":"4947:9:75"},{"kind":"number","nativeSrc":"4958:2:75","nodeType":"YulLiteral","src":"4958:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4943:3:75","nodeType":"YulIdentifier","src":"4943:3:75"},"nativeSrc":"4943:18:75","nodeType":"YulFunctionCall","src":"4943:18:75"},{"arguments":[{"name":"value3","nativeSrc":"4967:6:75","nodeType":"YulIdentifier","src":"4967:6:75"},{"kind":"number","nativeSrc":"4975:14:75","nodeType":"YulLiteral","src":"4975:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4963:3:75","nodeType":"YulIdentifier","src":"4963:3:75"},"nativeSrc":"4963:27:75","nodeType":"YulFunctionCall","src":"4963:27:75"}],"functionName":{"name":"mstore","nativeSrc":"4936:6:75","nodeType":"YulIdentifier","src":"4936:6:75"},"nativeSrc":"4936:55:75","nodeType":"YulFunctionCall","src":"4936:55:75"},"nativeSrc":"4936:55:75","nodeType":"YulExpressionStatement","src":"4936:55:75"}]},"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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4660:9:75","nodeType":"YulTypedName","src":"4660:9:75","type":""},{"name":"value3","nativeSrc":"4671:6:75","nodeType":"YulTypedName","src":"4671:6:75","type":""},{"name":"value2","nativeSrc":"4679:6:75","nodeType":"YulTypedName","src":"4679:6:75","type":""},{"name":"value1","nativeSrc":"4687:6:75","nodeType":"YulTypedName","src":"4687:6:75","type":""},{"name":"value0","nativeSrc":"4695:6:75","nodeType":"YulTypedName","src":"4695:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4706:4:75","nodeType":"YulTypedName","src":"4706:4:75","type":""}],"src":"4538:459:75"},{"body":{"nativeSrc":"5087:171:75","nodeType":"YulBlock","src":"5087:171:75","statements":[{"body":{"nativeSrc":"5133:16:75","nodeType":"YulBlock","src":"5133:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5142:1:75","nodeType":"YulLiteral","src":"5142:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5145:1:75","nodeType":"YulLiteral","src":"5145:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5135:6:75","nodeType":"YulIdentifier","src":"5135:6:75"},"nativeSrc":"5135:12:75","nodeType":"YulFunctionCall","src":"5135:12:75"},"nativeSrc":"5135:12:75","nodeType":"YulExpressionStatement","src":"5135:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5108:7:75","nodeType":"YulIdentifier","src":"5108:7:75"},{"name":"headStart","nativeSrc":"5117:9:75","nodeType":"YulIdentifier","src":"5117:9:75"}],"functionName":{"name":"sub","nativeSrc":"5104:3:75","nodeType":"YulIdentifier","src":"5104:3:75"},"nativeSrc":"5104:23:75","nodeType":"YulFunctionCall","src":"5104:23:75"},{"kind":"number","nativeSrc":"5129:2:75","nodeType":"YulLiteral","src":"5129:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5100:3:75","nodeType":"YulIdentifier","src":"5100:3:75"},"nativeSrc":"5100:32:75","nodeType":"YulFunctionCall","src":"5100:32:75"},"nativeSrc":"5097:52:75","nodeType":"YulIf","src":"5097:52:75"},{"nativeSrc":"5158:38:75","nodeType":"YulAssignment","src":"5158:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5186:9:75","nodeType":"YulIdentifier","src":"5186:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"5168:17:75","nodeType":"YulIdentifier","src":"5168:17:75"},"nativeSrc":"5168:28:75","nodeType":"YulFunctionCall","src":"5168:28:75"},"variableNames":[{"name":"value0","nativeSrc":"5158:6:75","nodeType":"YulIdentifier","src":"5158:6:75"}]},{"nativeSrc":"5205:47:75","nodeType":"YulAssignment","src":"5205:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5237:9:75","nodeType":"YulIdentifier","src":"5237:9:75"},{"kind":"number","nativeSrc":"5248:2:75","nodeType":"YulLiteral","src":"5248:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5233:3:75","nodeType":"YulIdentifier","src":"5233:3:75"},"nativeSrc":"5233:18:75","nodeType":"YulFunctionCall","src":"5233:18:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"5215:17:75","nodeType":"YulIdentifier","src":"5215:17:75"},"nativeSrc":"5215:37:75","nodeType":"YulFunctionCall","src":"5215:37:75"},"variableNames":[{"name":"value1","nativeSrc":"5205:6:75","nodeType":"YulIdentifier","src":"5205:6:75"}]}]},"name":"abi_decode_tuple_t_uint64t_uint64","nativeSrc":"5002:256:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5045:9:75","nodeType":"YulTypedName","src":"5045:9:75","type":""},{"name":"dataEnd","nativeSrc":"5056:7:75","nodeType":"YulTypedName","src":"5056:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5068:6:75","nodeType":"YulTypedName","src":"5068:6:75","type":""},{"name":"value1","nativeSrc":"5076:6:75","nodeType":"YulTypedName","src":"5076:6:75","type":""}],"src":"5002:256:75"},{"body":{"nativeSrc":"5333:110:75","nodeType":"YulBlock","src":"5333:110:75","statements":[{"body":{"nativeSrc":"5379:16:75","nodeType":"YulBlock","src":"5379:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5388:1:75","nodeType":"YulLiteral","src":"5388:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5391:1:75","nodeType":"YulLiteral","src":"5391:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5381:6:75","nodeType":"YulIdentifier","src":"5381:6:75"},"nativeSrc":"5381:12:75","nodeType":"YulFunctionCall","src":"5381:12:75"},"nativeSrc":"5381:12:75","nodeType":"YulExpressionStatement","src":"5381:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5354:7:75","nodeType":"YulIdentifier","src":"5354:7:75"},{"name":"headStart","nativeSrc":"5363:9:75","nodeType":"YulIdentifier","src":"5363:9:75"}],"functionName":{"name":"sub","nativeSrc":"5350:3:75","nodeType":"YulIdentifier","src":"5350:3:75"},"nativeSrc":"5350:23:75","nodeType":"YulFunctionCall","src":"5350:23:75"},{"kind":"number","nativeSrc":"5375:2:75","nodeType":"YulLiteral","src":"5375:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5346:3:75","nodeType":"YulIdentifier","src":"5346:3:75"},"nativeSrc":"5346:32:75","nodeType":"YulFunctionCall","src":"5346:32:75"},"nativeSrc":"5343:52:75","nodeType":"YulIf","src":"5343:52:75"},{"nativeSrc":"5404:33:75","nodeType":"YulAssignment","src":"5404:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5427:9:75","nodeType":"YulIdentifier","src":"5427:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5414:12:75","nodeType":"YulIdentifier","src":"5414:12:75"},"nativeSrc":"5414:23:75","nodeType":"YulFunctionCall","src":"5414:23:75"},"variableNames":[{"name":"value0","nativeSrc":"5404:6:75","nodeType":"YulIdentifier","src":"5404:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"5263:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5299:9:75","nodeType":"YulTypedName","src":"5299:9:75","type":""},{"name":"dataEnd","nativeSrc":"5310:7:75","nodeType":"YulTypedName","src":"5310:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5322:6:75","nodeType":"YulTypedName","src":"5322:6:75","type":""}],"src":"5263:180:75"},{"body":{"nativeSrc":"5547:97:75","nodeType":"YulBlock","src":"5547:97:75","statements":[{"nativeSrc":"5557:26:75","nodeType":"YulAssignment","src":"5557:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5569:9:75","nodeType":"YulIdentifier","src":"5569:9:75"},{"kind":"number","nativeSrc":"5580:2:75","nodeType":"YulLiteral","src":"5580:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5565:3:75","nodeType":"YulIdentifier","src":"5565:3:75"},"nativeSrc":"5565:18:75","nodeType":"YulFunctionCall","src":"5565:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5557:4:75","nodeType":"YulIdentifier","src":"5557:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5599:9:75","nodeType":"YulIdentifier","src":"5599:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5614:6:75","nodeType":"YulIdentifier","src":"5614:6:75"},{"kind":"number","nativeSrc":"5622:14:75","nodeType":"YulLiteral","src":"5622:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5610:3:75","nodeType":"YulIdentifier","src":"5610:3:75"},"nativeSrc":"5610:27:75","nodeType":"YulFunctionCall","src":"5610:27:75"}],"functionName":{"name":"mstore","nativeSrc":"5592:6:75","nodeType":"YulIdentifier","src":"5592:6:75"},"nativeSrc":"5592:46:75","nodeType":"YulFunctionCall","src":"5592:46:75"},"nativeSrc":"5592:46:75","nodeType":"YulExpressionStatement","src":"5592:46:75"}]},"name":"abi_encode_tuple_t_uint48__to_t_uint48__fromStack_reversed","nativeSrc":"5448:196:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5516:9:75","nodeType":"YulTypedName","src":"5516:9:75","type":""},{"name":"value0","nativeSrc":"5527:6:75","nodeType":"YulTypedName","src":"5527:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5538:4:75","nodeType":"YulTypedName","src":"5538:4:75","type":""}],"src":"5448:196:75"},{"body":{"nativeSrc":"5719:177:75","nodeType":"YulBlock","src":"5719:177:75","statements":[{"body":{"nativeSrc":"5765:16:75","nodeType":"YulBlock","src":"5765:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5774:1:75","nodeType":"YulLiteral","src":"5774:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5777:1:75","nodeType":"YulLiteral","src":"5777:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5767:6:75","nodeType":"YulIdentifier","src":"5767:6:75"},"nativeSrc":"5767:12:75","nodeType":"YulFunctionCall","src":"5767:12:75"},"nativeSrc":"5767:12:75","nodeType":"YulExpressionStatement","src":"5767:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5740:7:75","nodeType":"YulIdentifier","src":"5740:7:75"},{"name":"headStart","nativeSrc":"5749:9:75","nodeType":"YulIdentifier","src":"5749:9:75"}],"functionName":{"name":"sub","nativeSrc":"5736:3:75","nodeType":"YulIdentifier","src":"5736:3:75"},"nativeSrc":"5736:23:75","nodeType":"YulFunctionCall","src":"5736:23:75"},{"kind":"number","nativeSrc":"5761:2:75","nodeType":"YulLiteral","src":"5761:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5732:3:75","nodeType":"YulIdentifier","src":"5732:3:75"},"nativeSrc":"5732:32:75","nodeType":"YulFunctionCall","src":"5732:32:75"},"nativeSrc":"5729:52:75","nodeType":"YulIf","src":"5729:52:75"},{"nativeSrc":"5790:36:75","nodeType":"YulVariableDeclaration","src":"5790:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5816:9:75","nodeType":"YulIdentifier","src":"5816:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5803:12:75","nodeType":"YulIdentifier","src":"5803:12:75"},"nativeSrc":"5803:23:75","nodeType":"YulFunctionCall","src":"5803:23:75"},"variables":[{"name":"value","nativeSrc":"5794:5:75","nodeType":"YulTypedName","src":"5794:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5860:5:75","nodeType":"YulIdentifier","src":"5860:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5835:24:75","nodeType":"YulIdentifier","src":"5835:24:75"},"nativeSrc":"5835:31:75","nodeType":"YulFunctionCall","src":"5835:31:75"},"nativeSrc":"5835:31:75","nodeType":"YulExpressionStatement","src":"5835:31:75"},{"nativeSrc":"5875:15:75","nodeType":"YulAssignment","src":"5875:15:75","value":{"name":"value","nativeSrc":"5885:5:75","nodeType":"YulIdentifier","src":"5885:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5875:6:75","nodeType":"YulIdentifier","src":"5875:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"5649:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5685:9:75","nodeType":"YulTypedName","src":"5685:9:75","type":""},{"name":"dataEnd","nativeSrc":"5696:7:75","nodeType":"YulTypedName","src":"5696:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5708:6:75","nodeType":"YulTypedName","src":"5708:6:75","type":""}],"src":"5649:247:75"},{"body":{"nativeSrc":"5945:87:75","nodeType":"YulBlock","src":"5945:87:75","statements":[{"body":{"nativeSrc":"6010:16:75","nodeType":"YulBlock","src":"6010:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6019:1:75","nodeType":"YulLiteral","src":"6019:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6022:1:75","nodeType":"YulLiteral","src":"6022:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6012:6:75","nodeType":"YulIdentifier","src":"6012:6:75"},"nativeSrc":"6012:12:75","nodeType":"YulFunctionCall","src":"6012:12:75"},"nativeSrc":"6012:12:75","nodeType":"YulExpressionStatement","src":"6012:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5968:5:75","nodeType":"YulIdentifier","src":"5968:5:75"},{"arguments":[{"name":"value","nativeSrc":"5979:5:75","nodeType":"YulIdentifier","src":"5979:5:75"},{"arguments":[{"kind":"number","nativeSrc":"5990:3:75","nodeType":"YulLiteral","src":"5990:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"5995:10:75","nodeType":"YulLiteral","src":"5995:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"5986:3:75","nodeType":"YulIdentifier","src":"5986:3:75"},"nativeSrc":"5986:20:75","nodeType":"YulFunctionCall","src":"5986:20:75"}],"functionName":{"name":"and","nativeSrc":"5975:3:75","nodeType":"YulIdentifier","src":"5975:3:75"},"nativeSrc":"5975:32:75","nodeType":"YulFunctionCall","src":"5975:32:75"}],"functionName":{"name":"eq","nativeSrc":"5965:2:75","nodeType":"YulIdentifier","src":"5965:2:75"},"nativeSrc":"5965:43:75","nodeType":"YulFunctionCall","src":"5965:43:75"}],"functionName":{"name":"iszero","nativeSrc":"5958:6:75","nodeType":"YulIdentifier","src":"5958:6:75"},"nativeSrc":"5958:51:75","nodeType":"YulFunctionCall","src":"5958:51:75"},"nativeSrc":"5955:71:75","nodeType":"YulIf","src":"5955:71:75"}]},"name":"validator_revert_bytes4","nativeSrc":"5901:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"5934:5:75","nodeType":"YulTypedName","src":"5934:5:75","type":""}],"src":"5901:131:75"},{"body":{"nativeSrc":"6123:300:75","nodeType":"YulBlock","src":"6123:300:75","statements":[{"body":{"nativeSrc":"6169:16:75","nodeType":"YulBlock","src":"6169:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6178:1:75","nodeType":"YulLiteral","src":"6178:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6181:1:75","nodeType":"YulLiteral","src":"6181:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6171:6:75","nodeType":"YulIdentifier","src":"6171:6:75"},"nativeSrc":"6171:12:75","nodeType":"YulFunctionCall","src":"6171:12:75"},"nativeSrc":"6171:12:75","nodeType":"YulExpressionStatement","src":"6171:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6144:7:75","nodeType":"YulIdentifier","src":"6144:7:75"},{"name":"headStart","nativeSrc":"6153:9:75","nodeType":"YulIdentifier","src":"6153:9:75"}],"functionName":{"name":"sub","nativeSrc":"6140:3:75","nodeType":"YulIdentifier","src":"6140:3:75"},"nativeSrc":"6140:23:75","nodeType":"YulFunctionCall","src":"6140:23:75"},{"kind":"number","nativeSrc":"6165:2:75","nodeType":"YulLiteral","src":"6165:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6136:3:75","nodeType":"YulIdentifier","src":"6136:3:75"},"nativeSrc":"6136:32:75","nodeType":"YulFunctionCall","src":"6136:32:75"},"nativeSrc":"6133:52:75","nodeType":"YulIf","src":"6133:52:75"},{"nativeSrc":"6194:36:75","nodeType":"YulVariableDeclaration","src":"6194:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:75","nodeType":"YulIdentifier","src":"6220:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6207:12:75","nodeType":"YulIdentifier","src":"6207:12:75"},"nativeSrc":"6207:23:75","nodeType":"YulFunctionCall","src":"6207:23:75"},"variables":[{"name":"value","nativeSrc":"6198:5:75","nodeType":"YulTypedName","src":"6198:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6264:5:75","nodeType":"YulIdentifier","src":"6264:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6239:24:75","nodeType":"YulIdentifier","src":"6239:24:75"},"nativeSrc":"6239:31:75","nodeType":"YulFunctionCall","src":"6239:31:75"},"nativeSrc":"6239:31:75","nodeType":"YulExpressionStatement","src":"6239:31:75"},{"nativeSrc":"6279:15:75","nodeType":"YulAssignment","src":"6279:15:75","value":{"name":"value","nativeSrc":"6289:5:75","nodeType":"YulIdentifier","src":"6289:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6279:6:75","nodeType":"YulIdentifier","src":"6279:6:75"}]},{"nativeSrc":"6303:47:75","nodeType":"YulVariableDeclaration","src":"6303:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6335:9:75","nodeType":"YulIdentifier","src":"6335:9:75"},{"kind":"number","nativeSrc":"6346:2:75","nodeType":"YulLiteral","src":"6346:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6331:3:75","nodeType":"YulIdentifier","src":"6331:3:75"},"nativeSrc":"6331:18:75","nodeType":"YulFunctionCall","src":"6331:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6318:12:75","nodeType":"YulIdentifier","src":"6318:12:75"},"nativeSrc":"6318:32:75","nodeType":"YulFunctionCall","src":"6318:32:75"},"variables":[{"name":"value_1","nativeSrc":"6307:7:75","nodeType":"YulTypedName","src":"6307:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6383:7:75","nodeType":"YulIdentifier","src":"6383:7:75"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"6359:23:75","nodeType":"YulIdentifier","src":"6359:23:75"},"nativeSrc":"6359:32:75","nodeType":"YulFunctionCall","src":"6359:32:75"},"nativeSrc":"6359:32:75","nodeType":"YulExpressionStatement","src":"6359:32:75"},{"nativeSrc":"6400:17:75","nodeType":"YulAssignment","src":"6400:17:75","value":{"name":"value_1","nativeSrc":"6410:7:75","nodeType":"YulIdentifier","src":"6410:7:75"},"variableNames":[{"name":"value1","nativeSrc":"6400:6:75","nodeType":"YulIdentifier","src":"6400:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes4","nativeSrc":"6037:386:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6081:9:75","nodeType":"YulTypedName","src":"6081:9:75","type":""},{"name":"dataEnd","nativeSrc":"6092:7:75","nodeType":"YulTypedName","src":"6092:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6104:6:75","nodeType":"YulTypedName","src":"6104:6:75","type":""},{"name":"value1","nativeSrc":"6112:6:75","nodeType":"YulTypedName","src":"6112:6:75","type":""}],"src":"6037:386:75"},{"body":{"nativeSrc":"6534:376:75","nodeType":"YulBlock","src":"6534:376:75","statements":[{"body":{"nativeSrc":"6580:16:75","nodeType":"YulBlock","src":"6580:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6589:1:75","nodeType":"YulLiteral","src":"6589:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6592:1:75","nodeType":"YulLiteral","src":"6592:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6582:6:75","nodeType":"YulIdentifier","src":"6582:6:75"},"nativeSrc":"6582:12:75","nodeType":"YulFunctionCall","src":"6582:12:75"},"nativeSrc":"6582:12:75","nodeType":"YulExpressionStatement","src":"6582:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6555:7:75","nodeType":"YulIdentifier","src":"6555:7:75"},{"name":"headStart","nativeSrc":"6564:9:75","nodeType":"YulIdentifier","src":"6564:9:75"}],"functionName":{"name":"sub","nativeSrc":"6551:3:75","nodeType":"YulIdentifier","src":"6551:3:75"},"nativeSrc":"6551:23:75","nodeType":"YulFunctionCall","src":"6551:23:75"},{"kind":"number","nativeSrc":"6576:2:75","nodeType":"YulLiteral","src":"6576:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6547:3:75","nodeType":"YulIdentifier","src":"6547:3:75"},"nativeSrc":"6547:32:75","nodeType":"YulFunctionCall","src":"6547:32:75"},"nativeSrc":"6544:52:75","nodeType":"YulIf","src":"6544:52:75"},{"nativeSrc":"6605:38:75","nodeType":"YulAssignment","src":"6605:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6633:9:75","nodeType":"YulIdentifier","src":"6633:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"6615:17:75","nodeType":"YulIdentifier","src":"6615:17:75"},"nativeSrc":"6615:28:75","nodeType":"YulFunctionCall","src":"6615:28:75"},"variableNames":[{"name":"value0","nativeSrc":"6605:6:75","nodeType":"YulIdentifier","src":"6605:6:75"}]},{"nativeSrc":"6652:46:75","nodeType":"YulVariableDeclaration","src":"6652:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6683:9:75","nodeType":"YulIdentifier","src":"6683:9:75"},{"kind":"number","nativeSrc":"6694:2:75","nodeType":"YulLiteral","src":"6694:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6679:3:75","nodeType":"YulIdentifier","src":"6679:3:75"},"nativeSrc":"6679:18:75","nodeType":"YulFunctionCall","src":"6679:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6666:12:75","nodeType":"YulIdentifier","src":"6666:12:75"},"nativeSrc":"6666:32:75","nodeType":"YulFunctionCall","src":"6666:32:75"},"variables":[{"name":"offset","nativeSrc":"6656:6:75","nodeType":"YulTypedName","src":"6656:6:75","type":""}]},{"body":{"nativeSrc":"6741:16:75","nodeType":"YulBlock","src":"6741:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6750:1:75","nodeType":"YulLiteral","src":"6750:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6753:1:75","nodeType":"YulLiteral","src":"6753:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6743:6:75","nodeType":"YulIdentifier","src":"6743:6:75"},"nativeSrc":"6743:12:75","nodeType":"YulFunctionCall","src":"6743:12:75"},"nativeSrc":"6743:12:75","nodeType":"YulExpressionStatement","src":"6743:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6713:6:75","nodeType":"YulIdentifier","src":"6713:6:75"},{"kind":"number","nativeSrc":"6721:18:75","nodeType":"YulLiteral","src":"6721:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6710:2:75","nodeType":"YulIdentifier","src":"6710:2:75"},"nativeSrc":"6710:30:75","nodeType":"YulFunctionCall","src":"6710:30:75"},"nativeSrc":"6707:50:75","nodeType":"YulIf","src":"6707:50:75"},{"nativeSrc":"6766:84:75","nodeType":"YulVariableDeclaration","src":"6766:84:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6822:9:75","nodeType":"YulIdentifier","src":"6822:9:75"},{"name":"offset","nativeSrc":"6833:6:75","nodeType":"YulIdentifier","src":"6833:6:75"}],"functionName":{"name":"add","nativeSrc":"6818:3:75","nodeType":"YulIdentifier","src":"6818:3:75"},"nativeSrc":"6818:22:75","nodeType":"YulFunctionCall","src":"6818:22:75"},{"name":"dataEnd","nativeSrc":"6842:7:75","nodeType":"YulIdentifier","src":"6842:7:75"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"6792:25:75","nodeType":"YulIdentifier","src":"6792:25:75"},"nativeSrc":"6792:58:75","nodeType":"YulFunctionCall","src":"6792:58:75"},"variables":[{"name":"value1_1","nativeSrc":"6770:8:75","nodeType":"YulTypedName","src":"6770:8:75","type":""},{"name":"value2_1","nativeSrc":"6780:8:75","nodeType":"YulTypedName","src":"6780:8:75","type":""}]},{"nativeSrc":"6859:18:75","nodeType":"YulAssignment","src":"6859:18:75","value":{"name":"value1_1","nativeSrc":"6869:8:75","nodeType":"YulIdentifier","src":"6869:8:75"},"variableNames":[{"name":"value1","nativeSrc":"6859:6:75","nodeType":"YulIdentifier","src":"6859:6:75"}]},{"nativeSrc":"6886:18:75","nodeType":"YulAssignment","src":"6886:18:75","value":{"name":"value2_1","nativeSrc":"6896:8:75","nodeType":"YulIdentifier","src":"6896:8:75"},"variableNames":[{"name":"value2","nativeSrc":"6886:6:75","nodeType":"YulIdentifier","src":"6886:6:75"}]}]},"name":"abi_decode_tuple_t_uint64t_string_calldata_ptr","nativeSrc":"6428:482:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6484:9:75","nodeType":"YulTypedName","src":"6484:9:75","type":""},{"name":"dataEnd","nativeSrc":"6495:7:75","nodeType":"YulTypedName","src":"6495:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6507:6:75","nodeType":"YulTypedName","src":"6507:6:75","type":""},{"name":"value1","nativeSrc":"6515:6:75","nodeType":"YulTypedName","src":"6515:6:75","type":""},{"name":"value2","nativeSrc":"6523:6:75","nodeType":"YulTypedName","src":"6523:6:75","type":""}],"src":"6428:482:75"},{"body":{"nativeSrc":"7010:92:75","nodeType":"YulBlock","src":"7010:92:75","statements":[{"nativeSrc":"7020:26:75","nodeType":"YulAssignment","src":"7020:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7032:9:75","nodeType":"YulIdentifier","src":"7032:9:75"},{"kind":"number","nativeSrc":"7043:2:75","nodeType":"YulLiteral","src":"7043:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7028:3:75","nodeType":"YulIdentifier","src":"7028:3:75"},"nativeSrc":"7028:18:75","nodeType":"YulFunctionCall","src":"7028:18:75"},"variableNames":[{"name":"tail","nativeSrc":"7020:4:75","nodeType":"YulIdentifier","src":"7020:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7062:9:75","nodeType":"YulIdentifier","src":"7062:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"7087:6:75","nodeType":"YulIdentifier","src":"7087:6:75"}],"functionName":{"name":"iszero","nativeSrc":"7080:6:75","nodeType":"YulIdentifier","src":"7080:6:75"},"nativeSrc":"7080:14:75","nodeType":"YulFunctionCall","src":"7080:14:75"}],"functionName":{"name":"iszero","nativeSrc":"7073:6:75","nodeType":"YulIdentifier","src":"7073:6:75"},"nativeSrc":"7073:22:75","nodeType":"YulFunctionCall","src":"7073:22:75"}],"functionName":{"name":"mstore","nativeSrc":"7055:6:75","nodeType":"YulIdentifier","src":"7055:6:75"},"nativeSrc":"7055:41:75","nodeType":"YulFunctionCall","src":"7055:41:75"},"nativeSrc":"7055:41:75","nodeType":"YulExpressionStatement","src":"7055:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"6915:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6979:9:75","nodeType":"YulTypedName","src":"6979:9:75","type":""},{"name":"value0","nativeSrc":"6990:6:75","nodeType":"YulTypedName","src":"6990:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7001:4:75","nodeType":"YulTypedName","src":"7001:4:75","type":""}],"src":"6915:187:75"},{"body":{"nativeSrc":"7192:171:75","nodeType":"YulBlock","src":"7192:171:75","statements":[{"body":{"nativeSrc":"7238:16:75","nodeType":"YulBlock","src":"7238:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7247:1:75","nodeType":"YulLiteral","src":"7247:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7250:1:75","nodeType":"YulLiteral","src":"7250:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7240:6:75","nodeType":"YulIdentifier","src":"7240:6:75"},"nativeSrc":"7240:12:75","nodeType":"YulFunctionCall","src":"7240:12:75"},"nativeSrc":"7240:12:75","nodeType":"YulExpressionStatement","src":"7240:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7213:7:75","nodeType":"YulIdentifier","src":"7213:7:75"},{"name":"headStart","nativeSrc":"7222:9:75","nodeType":"YulIdentifier","src":"7222:9:75"}],"functionName":{"name":"sub","nativeSrc":"7209:3:75","nodeType":"YulIdentifier","src":"7209:3:75"},"nativeSrc":"7209:23:75","nodeType":"YulFunctionCall","src":"7209:23:75"},{"kind":"number","nativeSrc":"7234:2:75","nodeType":"YulLiteral","src":"7234:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7205:3:75","nodeType":"YulIdentifier","src":"7205:3:75"},"nativeSrc":"7205:32:75","nodeType":"YulFunctionCall","src":"7205:32:75"},"nativeSrc":"7202:52:75","nodeType":"YulIf","src":"7202:52:75"},{"nativeSrc":"7263:38:75","nodeType":"YulAssignment","src":"7263:38:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7291:9:75","nodeType":"YulIdentifier","src":"7291:9:75"}],"functionName":{"name":"abi_decode_uint64","nativeSrc":"7273:17:75","nodeType":"YulIdentifier","src":"7273:17:75"},"nativeSrc":"7273:28:75","nodeType":"YulFunctionCall","src":"7273:28:75"},"variableNames":[{"name":"value0","nativeSrc":"7263:6:75","nodeType":"YulIdentifier","src":"7263:6:75"}]},{"nativeSrc":"7310:47:75","nodeType":"YulAssignment","src":"7310:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7342:9:75","nodeType":"YulIdentifier","src":"7342:9:75"},{"kind":"number","nativeSrc":"7353:2:75","nodeType":"YulLiteral","src":"7353:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7338:3:75","nodeType":"YulIdentifier","src":"7338:3:75"},"nativeSrc":"7338:18:75","nodeType":"YulFunctionCall","src":"7338:18:75"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"7320:17:75","nodeType":"YulIdentifier","src":"7320:17:75"},"nativeSrc":"7320:37:75","nodeType":"YulFunctionCall","src":"7320:37:75"},"variableNames":[{"name":"value1","nativeSrc":"7310:6:75","nodeType":"YulIdentifier","src":"7310:6:75"}]}]},"name":"abi_decode_tuple_t_uint64t_uint32","nativeSrc":"7107:256:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7150:9:75","nodeType":"YulTypedName","src":"7150:9:75","type":""},{"name":"dataEnd","nativeSrc":"7161:7:75","nodeType":"YulTypedName","src":"7161:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7173:6:75","nodeType":"YulTypedName","src":"7173:6:75","type":""},{"name":"value1","nativeSrc":"7181:6:75","nodeType":"YulTypedName","src":"7181:6:75","type":""}],"src":"7107:256:75"},{"body":{"nativeSrc":"7491:562:75","nodeType":"YulBlock","src":"7491:562:75","statements":[{"body":{"nativeSrc":"7537:16:75","nodeType":"YulBlock","src":"7537:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7546:1:75","nodeType":"YulLiteral","src":"7546:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7549:1:75","nodeType":"YulLiteral","src":"7549:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7539:6:75","nodeType":"YulIdentifier","src":"7539:6:75"},"nativeSrc":"7539:12:75","nodeType":"YulFunctionCall","src":"7539:12:75"},"nativeSrc":"7539:12:75","nodeType":"YulExpressionStatement","src":"7539:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7512:7:75","nodeType":"YulIdentifier","src":"7512:7:75"},{"name":"headStart","nativeSrc":"7521:9:75","nodeType":"YulIdentifier","src":"7521:9:75"}],"functionName":{"name":"sub","nativeSrc":"7508:3:75","nodeType":"YulIdentifier","src":"7508:3:75"},"nativeSrc":"7508:23:75","nodeType":"YulFunctionCall","src":"7508:23:75"},{"kind":"number","nativeSrc":"7533:2:75","nodeType":"YulLiteral","src":"7533:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7504:3:75","nodeType":"YulIdentifier","src":"7504:3:75"},"nativeSrc":"7504:32:75","nodeType":"YulFunctionCall","src":"7504:32:75"},"nativeSrc":"7501:52:75","nodeType":"YulIf","src":"7501:52:75"},{"nativeSrc":"7562:36:75","nodeType":"YulVariableDeclaration","src":"7562:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7588:9:75","nodeType":"YulIdentifier","src":"7588:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7575:12:75","nodeType":"YulIdentifier","src":"7575:12:75"},"nativeSrc":"7575:23:75","nodeType":"YulFunctionCall","src":"7575:23:75"},"variables":[{"name":"value","nativeSrc":"7566:5:75","nodeType":"YulTypedName","src":"7566:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7632:5:75","nodeType":"YulIdentifier","src":"7632:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7607:24:75","nodeType":"YulIdentifier","src":"7607:24:75"},"nativeSrc":"7607:31:75","nodeType":"YulFunctionCall","src":"7607:31:75"},"nativeSrc":"7607:31:75","nodeType":"YulExpressionStatement","src":"7607:31:75"},{"nativeSrc":"7647:15:75","nodeType":"YulAssignment","src":"7647:15:75","value":{"name":"value","nativeSrc":"7657:5:75","nodeType":"YulIdentifier","src":"7657:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7647:6:75","nodeType":"YulIdentifier","src":"7647:6:75"}]},{"nativeSrc":"7671:47:75","nodeType":"YulVariableDeclaration","src":"7671:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7703:9:75","nodeType":"YulIdentifier","src":"7703:9:75"},{"kind":"number","nativeSrc":"7714:2:75","nodeType":"YulLiteral","src":"7714:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7699:3:75","nodeType":"YulIdentifier","src":"7699:3:75"},"nativeSrc":"7699:18:75","nodeType":"YulFunctionCall","src":"7699:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7686:12:75","nodeType":"YulIdentifier","src":"7686:12:75"},"nativeSrc":"7686:32:75","nodeType":"YulFunctionCall","src":"7686:32:75"},"variables":[{"name":"value_1","nativeSrc":"7675:7:75","nodeType":"YulTypedName","src":"7675:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7752:7:75","nodeType":"YulIdentifier","src":"7752:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7727:24:75","nodeType":"YulIdentifier","src":"7727:24:75"},"nativeSrc":"7727:33:75","nodeType":"YulFunctionCall","src":"7727:33:75"},"nativeSrc":"7727:33:75","nodeType":"YulExpressionStatement","src":"7727:33:75"},{"nativeSrc":"7769:17:75","nodeType":"YulAssignment","src":"7769:17:75","value":{"name":"value_1","nativeSrc":"7779:7:75","nodeType":"YulIdentifier","src":"7779:7:75"},"variableNames":[{"name":"value1","nativeSrc":"7769:6:75","nodeType":"YulIdentifier","src":"7769:6:75"}]},{"nativeSrc":"7795:46:75","nodeType":"YulVariableDeclaration","src":"7795:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7826:9:75","nodeType":"YulIdentifier","src":"7826:9:75"},{"kind":"number","nativeSrc":"7837:2:75","nodeType":"YulLiteral","src":"7837:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7822:3:75","nodeType":"YulIdentifier","src":"7822:3:75"},"nativeSrc":"7822:18:75","nodeType":"YulFunctionCall","src":"7822:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7809:12:75","nodeType":"YulIdentifier","src":"7809:12:75"},"nativeSrc":"7809:32:75","nodeType":"YulFunctionCall","src":"7809:32:75"},"variables":[{"name":"offset","nativeSrc":"7799:6:75","nodeType":"YulTypedName","src":"7799:6:75","type":""}]},{"body":{"nativeSrc":"7884:16:75","nodeType":"YulBlock","src":"7884:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7893:1:75","nodeType":"YulLiteral","src":"7893:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7896:1:75","nodeType":"YulLiteral","src":"7896:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7886:6:75","nodeType":"YulIdentifier","src":"7886:6:75"},"nativeSrc":"7886:12:75","nodeType":"YulFunctionCall","src":"7886:12:75"},"nativeSrc":"7886:12:75","nodeType":"YulExpressionStatement","src":"7886:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7856:6:75","nodeType":"YulIdentifier","src":"7856:6:75"},{"kind":"number","nativeSrc":"7864:18:75","nodeType":"YulLiteral","src":"7864:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7853:2:75","nodeType":"YulIdentifier","src":"7853:2:75"},"nativeSrc":"7853:30:75","nodeType":"YulFunctionCall","src":"7853:30:75"},"nativeSrc":"7850:50:75","nodeType":"YulIf","src":"7850:50:75"},{"nativeSrc":"7909:84:75","nodeType":"YulVariableDeclaration","src":"7909:84:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7965:9:75","nodeType":"YulIdentifier","src":"7965:9:75"},{"name":"offset","nativeSrc":"7976:6:75","nodeType":"YulIdentifier","src":"7976:6:75"}],"functionName":{"name":"add","nativeSrc":"7961:3:75","nodeType":"YulIdentifier","src":"7961:3:75"},"nativeSrc":"7961:22:75","nodeType":"YulFunctionCall","src":"7961:22:75"},{"name":"dataEnd","nativeSrc":"7985:7:75","nodeType":"YulIdentifier","src":"7985:7:75"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"7935:25:75","nodeType":"YulIdentifier","src":"7935:25:75"},"nativeSrc":"7935:58:75","nodeType":"YulFunctionCall","src":"7935:58:75"},"variables":[{"name":"value2_1","nativeSrc":"7913:8:75","nodeType":"YulTypedName","src":"7913:8:75","type":""},{"name":"value3_1","nativeSrc":"7923:8:75","nodeType":"YulTypedName","src":"7923:8:75","type":""}]},{"nativeSrc":"8002:18:75","nodeType":"YulAssignment","src":"8002:18:75","value":{"name":"value2_1","nativeSrc":"8012:8:75","nodeType":"YulIdentifier","src":"8012:8:75"},"variableNames":[{"name":"value2","nativeSrc":"8002:6:75","nodeType":"YulIdentifier","src":"8002:6:75"}]},{"nativeSrc":"8029:18:75","nodeType":"YulAssignment","src":"8029:18:75","value":{"name":"value3_1","nativeSrc":"8039:8:75","nodeType":"YulIdentifier","src":"8039:8:75"},"variableNames":[{"name":"value3","nativeSrc":"8029:6:75","nodeType":"YulIdentifier","src":"8029:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_calldata_ptr","nativeSrc":"7368:685:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7433:9:75","nodeType":"YulTypedName","src":"7433:9:75","type":""},{"name":"dataEnd","nativeSrc":"7444:7:75","nodeType":"YulTypedName","src":"7444:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7456:6:75","nodeType":"YulTypedName","src":"7456:6:75","type":""},{"name":"value1","nativeSrc":"7464:6:75","nodeType":"YulTypedName","src":"7464:6:75","type":""},{"name":"value2","nativeSrc":"7472:6:75","nodeType":"YulTypedName","src":"7472:6:75","type":""},{"name":"value3","nativeSrc":"7480:6:75","nodeType":"YulTypedName","src":"7480:6:75","type":""}],"src":"7368:685:75"},{"body":{"nativeSrc":"8159:76:75","nodeType":"YulBlock","src":"8159:76:75","statements":[{"nativeSrc":"8169:26:75","nodeType":"YulAssignment","src":"8169:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8181:9:75","nodeType":"YulIdentifier","src":"8181:9:75"},{"kind":"number","nativeSrc":"8192:2:75","nodeType":"YulLiteral","src":"8192:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8177:3:75","nodeType":"YulIdentifier","src":"8177:3:75"},"nativeSrc":"8177:18:75","nodeType":"YulFunctionCall","src":"8177:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8169:4:75","nodeType":"YulIdentifier","src":"8169:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8211:9:75","nodeType":"YulIdentifier","src":"8211:9:75"},{"name":"value0","nativeSrc":"8222:6:75","nodeType":"YulIdentifier","src":"8222:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8204:6:75","nodeType":"YulIdentifier","src":"8204:6:75"},"nativeSrc":"8204:25:75","nodeType":"YulFunctionCall","src":"8204:25:75"},"nativeSrc":"8204:25:75","nodeType":"YulExpressionStatement","src":"8204:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"8058:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8128:9:75","nodeType":"YulTypedName","src":"8128:9:75","type":""},{"name":"value0","nativeSrc":"8139:6:75","nodeType":"YulTypedName","src":"8139:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8150:4:75","nodeType":"YulTypedName","src":"8150:4:75","type":""}],"src":"8058:177:75"},{"body":{"nativeSrc":"8356:331:75","nodeType":"YulBlock","src":"8356:331:75","statements":[{"body":{"nativeSrc":"8402:16:75","nodeType":"YulBlock","src":"8402:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8411:1:75","nodeType":"YulLiteral","src":"8411:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8414:1:75","nodeType":"YulLiteral","src":"8414:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8404:6:75","nodeType":"YulIdentifier","src":"8404:6:75"},"nativeSrc":"8404:12:75","nodeType":"YulFunctionCall","src":"8404:12:75"},"nativeSrc":"8404:12:75","nodeType":"YulExpressionStatement","src":"8404:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8377:7:75","nodeType":"YulIdentifier","src":"8377:7:75"},{"name":"headStart","nativeSrc":"8386:9:75","nodeType":"YulIdentifier","src":"8386:9:75"}],"functionName":{"name":"sub","nativeSrc":"8373:3:75","nodeType":"YulIdentifier","src":"8373:3:75"},"nativeSrc":"8373:23:75","nodeType":"YulFunctionCall","src":"8373:23:75"},{"kind":"number","nativeSrc":"8398:2:75","nodeType":"YulLiteral","src":"8398:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8369:3:75","nodeType":"YulIdentifier","src":"8369:3:75"},"nativeSrc":"8369:32:75","nodeType":"YulFunctionCall","src":"8369:32:75"},"nativeSrc":"8366:52:75","nodeType":"YulIf","src":"8366:52:75"},{"nativeSrc":"8427:37:75","nodeType":"YulVariableDeclaration","src":"8427:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8454:9:75","nodeType":"YulIdentifier","src":"8454:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"8441:12:75","nodeType":"YulIdentifier","src":"8441:12:75"},"nativeSrc":"8441:23:75","nodeType":"YulFunctionCall","src":"8441:23:75"},"variables":[{"name":"offset","nativeSrc":"8431:6:75","nodeType":"YulTypedName","src":"8431:6:75","type":""}]},{"body":{"nativeSrc":"8507:16:75","nodeType":"YulBlock","src":"8507:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8516:1:75","nodeType":"YulLiteral","src":"8516:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8519:1:75","nodeType":"YulLiteral","src":"8519:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8509:6:75","nodeType":"YulIdentifier","src":"8509:6:75"},"nativeSrc":"8509:12:75","nodeType":"YulFunctionCall","src":"8509:12:75"},"nativeSrc":"8509:12:75","nodeType":"YulExpressionStatement","src":"8509:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8479:6:75","nodeType":"YulIdentifier","src":"8479:6:75"},{"kind":"number","nativeSrc":"8487:18:75","nodeType":"YulLiteral","src":"8487:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8476:2:75","nodeType":"YulIdentifier","src":"8476:2:75"},"nativeSrc":"8476:30:75","nodeType":"YulFunctionCall","src":"8476:30:75"},"nativeSrc":"8473:50:75","nodeType":"YulIf","src":"8473:50:75"},{"nativeSrc":"8532:95:75","nodeType":"YulVariableDeclaration","src":"8532:95:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8599:9:75","nodeType":"YulIdentifier","src":"8599:9:75"},{"name":"offset","nativeSrc":"8610:6:75","nodeType":"YulIdentifier","src":"8610:6:75"}],"functionName":{"name":"add","nativeSrc":"8595:3:75","nodeType":"YulIdentifier","src":"8595:3:75"},"nativeSrc":"8595:22:75","nodeType":"YulFunctionCall","src":"8595:22:75"},{"name":"dataEnd","nativeSrc":"8619:7:75","nodeType":"YulIdentifier","src":"8619:7:75"}],"functionName":{"name":"abi_decode_array_bytes4_dyn_calldata","nativeSrc":"8558:36:75","nodeType":"YulIdentifier","src":"8558:36:75"},"nativeSrc":"8558:69:75","nodeType":"YulFunctionCall","src":"8558:69:75"},"variables":[{"name":"value0_1","nativeSrc":"8536:8:75","nodeType":"YulTypedName","src":"8536:8:75","type":""},{"name":"value1_1","nativeSrc":"8546:8:75","nodeType":"YulTypedName","src":"8546:8:75","type":""}]},{"nativeSrc":"8636:18:75","nodeType":"YulAssignment","src":"8636:18:75","value":{"name":"value0_1","nativeSrc":"8646:8:75","nodeType":"YulIdentifier","src":"8646:8:75"},"variableNames":[{"name":"value0","nativeSrc":"8636:6:75","nodeType":"YulIdentifier","src":"8636:6:75"}]},{"nativeSrc":"8663:18:75","nodeType":"YulAssignment","src":"8663:18:75","value":{"name":"value1_1","nativeSrc":"8673:8:75","nodeType":"YulIdentifier","src":"8673:8:75"},"variableNames":[{"name":"value1","nativeSrc":"8663:6:75","nodeType":"YulIdentifier","src":"8663:6:75"}]}]},"name":"abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"8240:447:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8314:9:75","nodeType":"YulTypedName","src":"8314:9:75","type":""},{"name":"dataEnd","nativeSrc":"8325:7:75","nodeType":"YulTypedName","src":"8325:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8337:6:75","nodeType":"YulTypedName","src":"8337:6:75","type":""},{"name":"value1","nativeSrc":"8345:6:75","nodeType":"YulTypedName","src":"8345:6:75","type":""}],"src":"8240:447:75"},{"body":{"nativeSrc":"8861:847:75","nodeType":"YulBlock","src":"8861:847:75","statements":[{"nativeSrc":"8871:32:75","nodeType":"YulVariableDeclaration","src":"8871:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8889:9:75","nodeType":"YulIdentifier","src":"8889:9:75"},{"kind":"number","nativeSrc":"8900:2:75","nodeType":"YulLiteral","src":"8900:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8885:3:75","nodeType":"YulIdentifier","src":"8885:3:75"},"nativeSrc":"8885:18:75","nodeType":"YulFunctionCall","src":"8885:18:75"},"variables":[{"name":"tail_1","nativeSrc":"8875:6:75","nodeType":"YulTypedName","src":"8875:6:75","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8919:9:75","nodeType":"YulIdentifier","src":"8919:9:75"},{"kind":"number","nativeSrc":"8930:2:75","nodeType":"YulLiteral","src":"8930:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8912:6:75","nodeType":"YulIdentifier","src":"8912:6:75"},"nativeSrc":"8912:21:75","nodeType":"YulFunctionCall","src":"8912:21:75"},"nativeSrc":"8912:21:75","nodeType":"YulExpressionStatement","src":"8912:21:75"},{"nativeSrc":"8942:17:75","nodeType":"YulVariableDeclaration","src":"8942:17:75","value":{"name":"tail_1","nativeSrc":"8953:6:75","nodeType":"YulIdentifier","src":"8953:6:75"},"variables":[{"name":"pos","nativeSrc":"8946:3:75","nodeType":"YulTypedName","src":"8946:3:75","type":""}]},{"nativeSrc":"8968:27:75","nodeType":"YulVariableDeclaration","src":"8968:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"8988:6:75","nodeType":"YulIdentifier","src":"8988:6:75"}],"functionName":{"name":"mload","nativeSrc":"8982:5:75","nodeType":"YulIdentifier","src":"8982:5:75"},"nativeSrc":"8982:13:75","nodeType":"YulFunctionCall","src":"8982:13:75"},"variables":[{"name":"length","nativeSrc":"8972:6:75","nodeType":"YulTypedName","src":"8972:6:75","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"9011:6:75","nodeType":"YulIdentifier","src":"9011:6:75"},{"name":"length","nativeSrc":"9019:6:75","nodeType":"YulIdentifier","src":"9019:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9004:6:75","nodeType":"YulIdentifier","src":"9004:6:75"},"nativeSrc":"9004:22:75","nodeType":"YulFunctionCall","src":"9004:22:75"},"nativeSrc":"9004:22:75","nodeType":"YulExpressionStatement","src":"9004:22:75"},{"nativeSrc":"9035:25:75","nodeType":"YulAssignment","src":"9035:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9046:9:75","nodeType":"YulIdentifier","src":"9046:9:75"},{"kind":"number","nativeSrc":"9057:2:75","nodeType":"YulLiteral","src":"9057:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9042:3:75","nodeType":"YulIdentifier","src":"9042:3:75"},"nativeSrc":"9042:18:75","nodeType":"YulFunctionCall","src":"9042:18:75"},"variableNames":[{"name":"pos","nativeSrc":"9035:3:75","nodeType":"YulIdentifier","src":"9035:3:75"}]},{"nativeSrc":"9069:53:75","nodeType":"YulVariableDeclaration","src":"9069:53:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9091:9:75","nodeType":"YulIdentifier","src":"9091:9:75"},{"arguments":[{"kind":"number","nativeSrc":"9106:1:75","nodeType":"YulLiteral","src":"9106:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"9109:6:75","nodeType":"YulIdentifier","src":"9109:6:75"}],"functionName":{"name":"shl","nativeSrc":"9102:3:75","nodeType":"YulIdentifier","src":"9102:3:75"},"nativeSrc":"9102:14:75","nodeType":"YulFunctionCall","src":"9102:14:75"}],"functionName":{"name":"add","nativeSrc":"9087:3:75","nodeType":"YulIdentifier","src":"9087:3:75"},"nativeSrc":"9087:30:75","nodeType":"YulFunctionCall","src":"9087:30:75"},{"kind":"number","nativeSrc":"9119:2:75","nodeType":"YulLiteral","src":"9119:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9083:3:75","nodeType":"YulIdentifier","src":"9083:3:75"},"nativeSrc":"9083:39:75","nodeType":"YulFunctionCall","src":"9083:39:75"},"variables":[{"name":"tail_2","nativeSrc":"9073:6:75","nodeType":"YulTypedName","src":"9073:6:75","type":""}]},{"nativeSrc":"9131:29:75","nodeType":"YulVariableDeclaration","src":"9131:29:75","value":{"arguments":[{"name":"value0","nativeSrc":"9149:6:75","nodeType":"YulIdentifier","src":"9149:6:75"},{"kind":"number","nativeSrc":"9157:2:75","nodeType":"YulLiteral","src":"9157:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9145:3:75","nodeType":"YulIdentifier","src":"9145:3:75"},"nativeSrc":"9145:15:75","nodeType":"YulFunctionCall","src":"9145:15:75"},"variables":[{"name":"srcPtr","nativeSrc":"9135:6:75","nodeType":"YulTypedName","src":"9135:6:75","type":""}]},{"nativeSrc":"9169:10:75","nodeType":"YulVariableDeclaration","src":"9169:10:75","value":{"kind":"number","nativeSrc":"9178:1:75","nodeType":"YulLiteral","src":"9178:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"9173:1:75","nodeType":"YulTypedName","src":"9173:1:75","type":""}]},{"body":{"nativeSrc":"9237:442:75","nodeType":"YulBlock","src":"9237:442:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9258:3:75","nodeType":"YulIdentifier","src":"9258:3:75"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9271:6:75","nodeType":"YulIdentifier","src":"9271:6:75"},{"name":"headStart","nativeSrc":"9279:9:75","nodeType":"YulIdentifier","src":"9279:9:75"}],"functionName":{"name":"sub","nativeSrc":"9267:3:75","nodeType":"YulIdentifier","src":"9267:3:75"},"nativeSrc":"9267:22:75","nodeType":"YulFunctionCall","src":"9267:22:75"},{"arguments":[{"kind":"number","nativeSrc":"9295:2:75","nodeType":"YulLiteral","src":"9295:2:75","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"9291:3:75","nodeType":"YulIdentifier","src":"9291:3:75"},"nativeSrc":"9291:7:75","nodeType":"YulFunctionCall","src":"9291:7:75"}],"functionName":{"name":"add","nativeSrc":"9263:3:75","nodeType":"YulIdentifier","src":"9263:3:75"},"nativeSrc":"9263:36:75","nodeType":"YulFunctionCall","src":"9263:36:75"}],"functionName":{"name":"mstore","nativeSrc":"9251:6:75","nodeType":"YulIdentifier","src":"9251:6:75"},"nativeSrc":"9251:49:75","nodeType":"YulFunctionCall","src":"9251:49:75"},"nativeSrc":"9251:49:75","nodeType":"YulExpressionStatement","src":"9251:49:75"},{"nativeSrc":"9313:23:75","nodeType":"YulVariableDeclaration","src":"9313:23:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9329:6:75","nodeType":"YulIdentifier","src":"9329:6:75"}],"functionName":{"name":"mload","nativeSrc":"9323:5:75","nodeType":"YulIdentifier","src":"9323:5:75"},"nativeSrc":"9323:13:75","nodeType":"YulFunctionCall","src":"9323:13:75"},"variables":[{"name":"_1","nativeSrc":"9317:2:75","nodeType":"YulTypedName","src":"9317:2:75","type":""}]},{"nativeSrc":"9349:25:75","nodeType":"YulVariableDeclaration","src":"9349:25:75","value":{"arguments":[{"name":"_1","nativeSrc":"9371:2:75","nodeType":"YulIdentifier","src":"9371:2:75"}],"functionName":{"name":"mload","nativeSrc":"9365:5:75","nodeType":"YulIdentifier","src":"9365:5:75"},"nativeSrc":"9365:9:75","nodeType":"YulFunctionCall","src":"9365:9:75"},"variables":[{"name":"length_1","nativeSrc":"9353:8:75","nodeType":"YulTypedName","src":"9353:8:75","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"9394:6:75","nodeType":"YulIdentifier","src":"9394:6:75"},{"name":"length_1","nativeSrc":"9402:8:75","nodeType":"YulIdentifier","src":"9402:8:75"}],"functionName":{"name":"mstore","nativeSrc":"9387:6:75","nodeType":"YulIdentifier","src":"9387:6:75"},"nativeSrc":"9387:24:75","nodeType":"YulFunctionCall","src":"9387:24:75"},"nativeSrc":"9387:24:75","nodeType":"YulExpressionStatement","src":"9387:24:75"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9434:6:75","nodeType":"YulIdentifier","src":"9434:6:75"},{"kind":"number","nativeSrc":"9442:2:75","nodeType":"YulLiteral","src":"9442:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9430:3:75","nodeType":"YulIdentifier","src":"9430:3:75"},"nativeSrc":"9430:15:75","nodeType":"YulFunctionCall","src":"9430:15:75"},{"arguments":[{"name":"_1","nativeSrc":"9451:2:75","nodeType":"YulIdentifier","src":"9451:2:75"},{"kind":"number","nativeSrc":"9455:2:75","nodeType":"YulLiteral","src":"9455:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9447:3:75","nodeType":"YulIdentifier","src":"9447:3:75"},"nativeSrc":"9447:11:75","nodeType":"YulFunctionCall","src":"9447:11:75"},{"name":"length_1","nativeSrc":"9460:8:75","nodeType":"YulIdentifier","src":"9460:8:75"}],"functionName":{"name":"mcopy","nativeSrc":"9424:5:75","nodeType":"YulIdentifier","src":"9424:5:75"},"nativeSrc":"9424:45:75","nodeType":"YulFunctionCall","src":"9424:45:75"},"nativeSrc":"9424:45:75","nodeType":"YulExpressionStatement","src":"9424:45:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9497:6:75","nodeType":"YulIdentifier","src":"9497:6:75"},{"name":"length_1","nativeSrc":"9505:8:75","nodeType":"YulIdentifier","src":"9505:8:75"}],"functionName":{"name":"add","nativeSrc":"9493:3:75","nodeType":"YulIdentifier","src":"9493:3:75"},"nativeSrc":"9493:21:75","nodeType":"YulFunctionCall","src":"9493:21:75"},{"kind":"number","nativeSrc":"9516:2:75","nodeType":"YulLiteral","src":"9516:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9489:3:75","nodeType":"YulIdentifier","src":"9489:3:75"},"nativeSrc":"9489:30:75","nodeType":"YulFunctionCall","src":"9489:30:75"},{"kind":"number","nativeSrc":"9521:1:75","nodeType":"YulLiteral","src":"9521:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"9482:6:75","nodeType":"YulIdentifier","src":"9482:6:75"},"nativeSrc":"9482:41:75","nodeType":"YulFunctionCall","src":"9482:41:75"},"nativeSrc":"9482:41:75","nodeType":"YulExpressionStatement","src":"9482:41:75"},{"nativeSrc":"9536:63:75","nodeType":"YulAssignment","src":"9536:63:75","value":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"9554:6:75","nodeType":"YulIdentifier","src":"9554:6:75"},{"arguments":[{"arguments":[{"name":"length_1","nativeSrc":"9570:8:75","nodeType":"YulIdentifier","src":"9570:8:75"},{"kind":"number","nativeSrc":"9580:2:75","nodeType":"YulLiteral","src":"9580:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9566:3:75","nodeType":"YulIdentifier","src":"9566:3:75"},"nativeSrc":"9566:17:75","nodeType":"YulFunctionCall","src":"9566:17:75"},{"arguments":[{"kind":"number","nativeSrc":"9589:2:75","nodeType":"YulLiteral","src":"9589:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9585:3:75","nodeType":"YulIdentifier","src":"9585:3:75"},"nativeSrc":"9585:7:75","nodeType":"YulFunctionCall","src":"9585:7:75"}],"functionName":{"name":"and","nativeSrc":"9562:3:75","nodeType":"YulIdentifier","src":"9562:3:75"},"nativeSrc":"9562:31:75","nodeType":"YulFunctionCall","src":"9562:31:75"}],"functionName":{"name":"add","nativeSrc":"9550:3:75","nodeType":"YulIdentifier","src":"9550:3:75"},"nativeSrc":"9550:44:75","nodeType":"YulFunctionCall","src":"9550:44:75"},{"kind":"number","nativeSrc":"9596:2:75","nodeType":"YulLiteral","src":"9596:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9546:3:75","nodeType":"YulIdentifier","src":"9546:3:75"},"nativeSrc":"9546:53:75","nodeType":"YulFunctionCall","src":"9546:53:75"},"variableNames":[{"name":"tail_2","nativeSrc":"9536:6:75","nodeType":"YulIdentifier","src":"9536:6:75"}]},{"nativeSrc":"9612:25:75","nodeType":"YulAssignment","src":"9612:25:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9626:6:75","nodeType":"YulIdentifier","src":"9626:6:75"},{"kind":"number","nativeSrc":"9634:2:75","nodeType":"YulLiteral","src":"9634:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9622:3:75","nodeType":"YulIdentifier","src":"9622:3:75"},"nativeSrc":"9622:15:75","nodeType":"YulFunctionCall","src":"9622:15:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"9612:6:75","nodeType":"YulIdentifier","src":"9612:6:75"}]},{"nativeSrc":"9650:19:75","nodeType":"YulAssignment","src":"9650:19:75","value":{"arguments":[{"name":"pos","nativeSrc":"9661:3:75","nodeType":"YulIdentifier","src":"9661:3:75"},{"kind":"number","nativeSrc":"9666:2:75","nodeType":"YulLiteral","src":"9666:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9657:3:75","nodeType":"YulIdentifier","src":"9657:3:75"},"nativeSrc":"9657:12:75","nodeType":"YulFunctionCall","src":"9657:12:75"},"variableNames":[{"name":"pos","nativeSrc":"9650:3:75","nodeType":"YulIdentifier","src":"9650:3:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"9199:1:75","nodeType":"YulIdentifier","src":"9199:1:75"},{"name":"length","nativeSrc":"9202:6:75","nodeType":"YulIdentifier","src":"9202:6:75"}],"functionName":{"name":"lt","nativeSrc":"9196:2:75","nodeType":"YulIdentifier","src":"9196:2:75"},"nativeSrc":"9196:13:75","nodeType":"YulFunctionCall","src":"9196:13:75"},"nativeSrc":"9188:491:75","nodeType":"YulForLoop","post":{"nativeSrc":"9210:18:75","nodeType":"YulBlock","src":"9210:18:75","statements":[{"nativeSrc":"9212:14:75","nodeType":"YulAssignment","src":"9212:14:75","value":{"arguments":[{"name":"i","nativeSrc":"9221:1:75","nodeType":"YulIdentifier","src":"9221:1:75"},{"kind":"number","nativeSrc":"9224:1:75","nodeType":"YulLiteral","src":"9224:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9217:3:75","nodeType":"YulIdentifier","src":"9217:3:75"},"nativeSrc":"9217:9:75","nodeType":"YulFunctionCall","src":"9217:9:75"},"variableNames":[{"name":"i","nativeSrc":"9212:1:75","nodeType":"YulIdentifier","src":"9212:1:75"}]}]},"pre":{"nativeSrc":"9192:3:75","nodeType":"YulBlock","src":"9192:3:75","statements":[]},"src":"9188:491:75"},{"nativeSrc":"9688:14:75","nodeType":"YulAssignment","src":"9688:14:75","value":{"name":"tail_2","nativeSrc":"9696:6:75","nodeType":"YulIdentifier","src":"9696:6:75"},"variableNames":[{"name":"tail","nativeSrc":"9688:4:75","nodeType":"YulIdentifier","src":"9688:4:75"}]}]},"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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8830:9:75","nodeType":"YulTypedName","src":"8830:9:75","type":""},{"name":"value0","nativeSrc":"8841:6:75","nodeType":"YulTypedName","src":"8841:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8852:4:75","nodeType":"YulTypedName","src":"8852:4:75","type":""}],"src":"8692:1016:75"},{"body":{"nativeSrc":"9816:424:75","nodeType":"YulBlock","src":"9816:424:75","statements":[{"body":{"nativeSrc":"9862:16:75","nodeType":"YulBlock","src":"9862:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9871:1:75","nodeType":"YulLiteral","src":"9871:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9874:1:75","nodeType":"YulLiteral","src":"9874:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9864:6:75","nodeType":"YulIdentifier","src":"9864:6:75"},"nativeSrc":"9864:12:75","nodeType":"YulFunctionCall","src":"9864:12:75"},"nativeSrc":"9864:12:75","nodeType":"YulExpressionStatement","src":"9864:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9837:7:75","nodeType":"YulIdentifier","src":"9837:7:75"},{"name":"headStart","nativeSrc":"9846:9:75","nodeType":"YulIdentifier","src":"9846:9:75"}],"functionName":{"name":"sub","nativeSrc":"9833:3:75","nodeType":"YulIdentifier","src":"9833:3:75"},"nativeSrc":"9833:23:75","nodeType":"YulFunctionCall","src":"9833:23:75"},{"kind":"number","nativeSrc":"9858:2:75","nodeType":"YulLiteral","src":"9858:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"9829:3:75","nodeType":"YulIdentifier","src":"9829:3:75"},"nativeSrc":"9829:32:75","nodeType":"YulFunctionCall","src":"9829:32:75"},"nativeSrc":"9826:52:75","nodeType":"YulIf","src":"9826:52:75"},{"nativeSrc":"9887:36:75","nodeType":"YulVariableDeclaration","src":"9887:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9913:9:75","nodeType":"YulIdentifier","src":"9913:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"9900:12:75","nodeType":"YulIdentifier","src":"9900:12:75"},"nativeSrc":"9900:23:75","nodeType":"YulFunctionCall","src":"9900:23:75"},"variables":[{"name":"value","nativeSrc":"9891:5:75","nodeType":"YulTypedName","src":"9891:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9957:5:75","nodeType":"YulIdentifier","src":"9957:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9932:24:75","nodeType":"YulIdentifier","src":"9932:24:75"},"nativeSrc":"9932:31:75","nodeType":"YulFunctionCall","src":"9932:31:75"},"nativeSrc":"9932:31:75","nodeType":"YulExpressionStatement","src":"9932:31:75"},{"nativeSrc":"9972:15:75","nodeType":"YulAssignment","src":"9972:15:75","value":{"name":"value","nativeSrc":"9982:5:75","nodeType":"YulIdentifier","src":"9982:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9972:6:75","nodeType":"YulIdentifier","src":"9972:6:75"}]},{"nativeSrc":"9996:47:75","nodeType":"YulVariableDeclaration","src":"9996:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10028:9:75","nodeType":"YulIdentifier","src":"10028:9:75"},{"kind":"number","nativeSrc":"10039:2:75","nodeType":"YulLiteral","src":"10039:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10024:3:75","nodeType":"YulIdentifier","src":"10024:3:75"},"nativeSrc":"10024:18:75","nodeType":"YulFunctionCall","src":"10024:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"10011:12:75","nodeType":"YulIdentifier","src":"10011:12:75"},"nativeSrc":"10011:32:75","nodeType":"YulFunctionCall","src":"10011:32:75"},"variables":[{"name":"value_1","nativeSrc":"10000:7:75","nodeType":"YulTypedName","src":"10000:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"10077:7:75","nodeType":"YulIdentifier","src":"10077:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10052:24:75","nodeType":"YulIdentifier","src":"10052:24:75"},"nativeSrc":"10052:33:75","nodeType":"YulFunctionCall","src":"10052:33:75"},"nativeSrc":"10052:33:75","nodeType":"YulExpressionStatement","src":"10052:33:75"},{"nativeSrc":"10094:17:75","nodeType":"YulAssignment","src":"10094:17:75","value":{"name":"value_1","nativeSrc":"10104:7:75","nodeType":"YulIdentifier","src":"10104:7:75"},"variableNames":[{"name":"value1","nativeSrc":"10094:6:75","nodeType":"YulIdentifier","src":"10094:6:75"}]},{"nativeSrc":"10120:47:75","nodeType":"YulVariableDeclaration","src":"10120:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10152:9:75","nodeType":"YulIdentifier","src":"10152:9:75"},{"kind":"number","nativeSrc":"10163:2:75","nodeType":"YulLiteral","src":"10163:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10148:3:75","nodeType":"YulIdentifier","src":"10148:3:75"},"nativeSrc":"10148:18:75","nodeType":"YulFunctionCall","src":"10148:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"10135:12:75","nodeType":"YulIdentifier","src":"10135:12:75"},"nativeSrc":"10135:32:75","nodeType":"YulFunctionCall","src":"10135:32:75"},"variables":[{"name":"value_2","nativeSrc":"10124:7:75","nodeType":"YulTypedName","src":"10124:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"10200:7:75","nodeType":"YulIdentifier","src":"10200:7:75"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"10176:23:75","nodeType":"YulIdentifier","src":"10176:23:75"},"nativeSrc":"10176:32:75","nodeType":"YulFunctionCall","src":"10176:32:75"},"nativeSrc":"10176:32:75","nodeType":"YulExpressionStatement","src":"10176:32:75"},{"nativeSrc":"10217:17:75","nodeType":"YulAssignment","src":"10217:17:75","value":{"name":"value_2","nativeSrc":"10227:7:75","nodeType":"YulIdentifier","src":"10227:7:75"},"variableNames":[{"name":"value2","nativeSrc":"10217:6:75","nodeType":"YulIdentifier","src":"10217:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes4","nativeSrc":"9713:527:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9766:9:75","nodeType":"YulTypedName","src":"9766:9:75","type":""},{"name":"dataEnd","nativeSrc":"9777:7:75","nodeType":"YulTypedName","src":"9777:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9789:6:75","nodeType":"YulTypedName","src":"9789:6:75","type":""},{"name":"value1","nativeSrc":"9797:6:75","nodeType":"YulTypedName","src":"9797:6:75","type":""},{"name":"value2","nativeSrc":"9805:6:75","nodeType":"YulTypedName","src":"9805:6:75","type":""}],"src":"9713:527:75"},{"body":{"nativeSrc":"10366:152:75","nodeType":"YulBlock","src":"10366:152:75","statements":[{"nativeSrc":"10376:26:75","nodeType":"YulAssignment","src":"10376:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10388:9:75","nodeType":"YulIdentifier","src":"10388:9:75"},{"kind":"number","nativeSrc":"10399:2:75","nodeType":"YulLiteral","src":"10399:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10384:3:75","nodeType":"YulIdentifier","src":"10384:3:75"},"nativeSrc":"10384:18:75","nodeType":"YulFunctionCall","src":"10384:18:75"},"variableNames":[{"name":"tail","nativeSrc":"10376:4:75","nodeType":"YulIdentifier","src":"10376:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10418:9:75","nodeType":"YulIdentifier","src":"10418:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"10443:6:75","nodeType":"YulIdentifier","src":"10443:6:75"}],"functionName":{"name":"iszero","nativeSrc":"10436:6:75","nodeType":"YulIdentifier","src":"10436:6:75"},"nativeSrc":"10436:14:75","nodeType":"YulFunctionCall","src":"10436:14:75"}],"functionName":{"name":"iszero","nativeSrc":"10429:6:75","nodeType":"YulIdentifier","src":"10429:6:75"},"nativeSrc":"10429:22:75","nodeType":"YulFunctionCall","src":"10429:22:75"}],"functionName":{"name":"mstore","nativeSrc":"10411:6:75","nodeType":"YulIdentifier","src":"10411:6:75"},"nativeSrc":"10411:41:75","nodeType":"YulFunctionCall","src":"10411:41:75"},"nativeSrc":"10411:41:75","nodeType":"YulExpressionStatement","src":"10411:41:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10472:9:75","nodeType":"YulIdentifier","src":"10472:9:75"},{"kind":"number","nativeSrc":"10483:2:75","nodeType":"YulLiteral","src":"10483:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10468:3:75","nodeType":"YulIdentifier","src":"10468:3:75"},"nativeSrc":"10468:18:75","nodeType":"YulFunctionCall","src":"10468:18:75"},{"arguments":[{"name":"value1","nativeSrc":"10492:6:75","nodeType":"YulIdentifier","src":"10492:6:75"},{"kind":"number","nativeSrc":"10500:10:75","nodeType":"YulLiteral","src":"10500:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"10488:3:75","nodeType":"YulIdentifier","src":"10488:3:75"},"nativeSrc":"10488:23:75","nodeType":"YulFunctionCall","src":"10488:23:75"}],"functionName":{"name":"mstore","nativeSrc":"10461:6:75","nodeType":"YulIdentifier","src":"10461:6:75"},"nativeSrc":"10461:51:75","nodeType":"YulFunctionCall","src":"10461:51:75"},"nativeSrc":"10461:51:75","nodeType":"YulExpressionStatement","src":"10461:51:75"}]},"name":"abi_encode_tuple_t_bool_t_uint32__to_t_bool_t_uint32__fromStack_reversed","nativeSrc":"10245:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10327:9:75","nodeType":"YulTypedName","src":"10327:9:75","type":""},{"name":"value1","nativeSrc":"10338:6:75","nodeType":"YulTypedName","src":"10338:6:75","type":""},{"name":"value0","nativeSrc":"10346:6:75","nodeType":"YulTypedName","src":"10346:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10357:4:75","nodeType":"YulTypedName","src":"10357:4:75","type":""}],"src":"10245:273:75"},{"body":{"nativeSrc":"10609:233:75","nodeType":"YulBlock","src":"10609:233:75","statements":[{"body":{"nativeSrc":"10655:16:75","nodeType":"YulBlock","src":"10655:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10664:1:75","nodeType":"YulLiteral","src":"10664:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10667:1:75","nodeType":"YulLiteral","src":"10667:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10657:6:75","nodeType":"YulIdentifier","src":"10657:6:75"},"nativeSrc":"10657:12:75","nodeType":"YulFunctionCall","src":"10657:12:75"},"nativeSrc":"10657:12:75","nodeType":"YulExpressionStatement","src":"10657:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10630:7:75","nodeType":"YulIdentifier","src":"10630:7:75"},{"name":"headStart","nativeSrc":"10639:9:75","nodeType":"YulIdentifier","src":"10639:9:75"}],"functionName":{"name":"sub","nativeSrc":"10626:3:75","nodeType":"YulIdentifier","src":"10626:3:75"},"nativeSrc":"10626:23:75","nodeType":"YulFunctionCall","src":"10626:23:75"},{"kind":"number","nativeSrc":"10651:2:75","nodeType":"YulLiteral","src":"10651:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"10622:3:75","nodeType":"YulIdentifier","src":"10622:3:75"},"nativeSrc":"10622:32:75","nodeType":"YulFunctionCall","src":"10622:32:75"},"nativeSrc":"10619:52:75","nodeType":"YulIf","src":"10619:52:75"},{"nativeSrc":"10680:36:75","nodeType":"YulVariableDeclaration","src":"10680:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10706:9:75","nodeType":"YulIdentifier","src":"10706:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"10693:12:75","nodeType":"YulIdentifier","src":"10693:12:75"},"nativeSrc":"10693:23:75","nodeType":"YulFunctionCall","src":"10693:23:75"},"variables":[{"name":"value","nativeSrc":"10684:5:75","nodeType":"YulTypedName","src":"10684:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10750:5:75","nodeType":"YulIdentifier","src":"10750:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10725:24:75","nodeType":"YulIdentifier","src":"10725:24:75"},"nativeSrc":"10725:31:75","nodeType":"YulFunctionCall","src":"10725:31:75"},"nativeSrc":"10725:31:75","nodeType":"YulExpressionStatement","src":"10725:31:75"},{"nativeSrc":"10765:15:75","nodeType":"YulAssignment","src":"10765:15:75","value":{"name":"value","nativeSrc":"10775:5:75","nodeType":"YulIdentifier","src":"10775:5:75"},"variableNames":[{"name":"value0","nativeSrc":"10765:6:75","nodeType":"YulIdentifier","src":"10765:6:75"}]},{"nativeSrc":"10789:47:75","nodeType":"YulAssignment","src":"10789:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10821:9:75","nodeType":"YulIdentifier","src":"10821:9:75"},{"kind":"number","nativeSrc":"10832:2:75","nodeType":"YulLiteral","src":"10832:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10817:3:75","nodeType":"YulIdentifier","src":"10817:3:75"},"nativeSrc":"10817:18:75","nodeType":"YulFunctionCall","src":"10817:18:75"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"10799:17:75","nodeType":"YulIdentifier","src":"10799:17:75"},"nativeSrc":"10799:37:75","nodeType":"YulFunctionCall","src":"10799:37:75"},"variableNames":[{"name":"value1","nativeSrc":"10789:6:75","nodeType":"YulIdentifier","src":"10789:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint32","nativeSrc":"10523:319:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10567:9:75","nodeType":"YulTypedName","src":"10567:9:75","type":""},{"name":"dataEnd","nativeSrc":"10578:7:75","nodeType":"YulTypedName","src":"10578:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10590:6:75","nodeType":"YulTypedName","src":"10590:6:75","type":""},{"name":"value1","nativeSrc":"10598:6:75","nodeType":"YulTypedName","src":"10598:6:75","type":""}],"src":"10523:319:75"},{"body":{"nativeSrc":"10969:598:75","nodeType":"YulBlock","src":"10969:598:75","statements":[{"body":{"nativeSrc":"11015:16:75","nodeType":"YulBlock","src":"11015:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11024:1:75","nodeType":"YulLiteral","src":"11024:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11027:1:75","nodeType":"YulLiteral","src":"11027:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11017:6:75","nodeType":"YulIdentifier","src":"11017:6:75"},"nativeSrc":"11017:12:75","nodeType":"YulFunctionCall","src":"11017:12:75"},"nativeSrc":"11017:12:75","nodeType":"YulExpressionStatement","src":"11017:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10990:7:75","nodeType":"YulIdentifier","src":"10990:7:75"},{"name":"headStart","nativeSrc":"10999:9:75","nodeType":"YulIdentifier","src":"10999:9:75"}],"functionName":{"name":"sub","nativeSrc":"10986:3:75","nodeType":"YulIdentifier","src":"10986:3:75"},"nativeSrc":"10986:23:75","nodeType":"YulFunctionCall","src":"10986:23:75"},{"kind":"number","nativeSrc":"11011:2:75","nodeType":"YulLiteral","src":"11011:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"10982:3:75","nodeType":"YulIdentifier","src":"10982:3:75"},"nativeSrc":"10982:32:75","nodeType":"YulFunctionCall","src":"10982:32:75"},"nativeSrc":"10979:52:75","nodeType":"YulIf","src":"10979:52:75"},{"nativeSrc":"11040:36:75","nodeType":"YulVariableDeclaration","src":"11040:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11066:9:75","nodeType":"YulIdentifier","src":"11066:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"11053:12:75","nodeType":"YulIdentifier","src":"11053:12:75"},"nativeSrc":"11053:23:75","nodeType":"YulFunctionCall","src":"11053:23:75"},"variables":[{"name":"value","nativeSrc":"11044:5:75","nodeType":"YulTypedName","src":"11044:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11110:5:75","nodeType":"YulIdentifier","src":"11110:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11085:24:75","nodeType":"YulIdentifier","src":"11085:24:75"},"nativeSrc":"11085:31:75","nodeType":"YulFunctionCall","src":"11085:31:75"},"nativeSrc":"11085:31:75","nodeType":"YulExpressionStatement","src":"11085:31:75"},{"nativeSrc":"11125:15:75","nodeType":"YulAssignment","src":"11125:15:75","value":{"name":"value","nativeSrc":"11135:5:75","nodeType":"YulIdentifier","src":"11135:5:75"},"variableNames":[{"name":"value0","nativeSrc":"11125:6:75","nodeType":"YulIdentifier","src":"11125:6:75"}]},{"nativeSrc":"11149:46:75","nodeType":"YulVariableDeclaration","src":"11149:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11180:9:75","nodeType":"YulIdentifier","src":"11180:9:75"},{"kind":"number","nativeSrc":"11191:2:75","nodeType":"YulLiteral","src":"11191:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11176:3:75","nodeType":"YulIdentifier","src":"11176:3:75"},"nativeSrc":"11176:18:75","nodeType":"YulFunctionCall","src":"11176:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"11163:12:75","nodeType":"YulIdentifier","src":"11163:12:75"},"nativeSrc":"11163:32:75","nodeType":"YulFunctionCall","src":"11163:32:75"},"variables":[{"name":"offset","nativeSrc":"11153:6:75","nodeType":"YulTypedName","src":"11153:6:75","type":""}]},{"body":{"nativeSrc":"11238:16:75","nodeType":"YulBlock","src":"11238:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11247:1:75","nodeType":"YulLiteral","src":"11247:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11250:1:75","nodeType":"YulLiteral","src":"11250:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11240:6:75","nodeType":"YulIdentifier","src":"11240:6:75"},"nativeSrc":"11240:12:75","nodeType":"YulFunctionCall","src":"11240:12:75"},"nativeSrc":"11240:12:75","nodeType":"YulExpressionStatement","src":"11240:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11210:6:75","nodeType":"YulIdentifier","src":"11210:6:75"},{"kind":"number","nativeSrc":"11218:18:75","nodeType":"YulLiteral","src":"11218:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11207:2:75","nodeType":"YulIdentifier","src":"11207:2:75"},"nativeSrc":"11207:30:75","nodeType":"YulFunctionCall","src":"11207:30:75"},"nativeSrc":"11204:50:75","nodeType":"YulIf","src":"11204:50:75"},{"nativeSrc":"11263:84:75","nodeType":"YulVariableDeclaration","src":"11263:84:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11319:9:75","nodeType":"YulIdentifier","src":"11319:9:75"},{"name":"offset","nativeSrc":"11330:6:75","nodeType":"YulIdentifier","src":"11330:6:75"}],"functionName":{"name":"add","nativeSrc":"11315:3:75","nodeType":"YulIdentifier","src":"11315:3:75"},"nativeSrc":"11315:22:75","nodeType":"YulFunctionCall","src":"11315:22:75"},{"name":"dataEnd","nativeSrc":"11339:7:75","nodeType":"YulIdentifier","src":"11339:7:75"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"11289:25:75","nodeType":"YulIdentifier","src":"11289:25:75"},"nativeSrc":"11289:58:75","nodeType":"YulFunctionCall","src":"11289:58:75"},"variables":[{"name":"value1_1","nativeSrc":"11267:8:75","nodeType":"YulTypedName","src":"11267:8:75","type":""},{"name":"value2_1","nativeSrc":"11277:8:75","nodeType":"YulTypedName","src":"11277:8:75","type":""}]},{"nativeSrc":"11356:18:75","nodeType":"YulAssignment","src":"11356:18:75","value":{"name":"value1_1","nativeSrc":"11366:8:75","nodeType":"YulIdentifier","src":"11366:8:75"},"variableNames":[{"name":"value1","nativeSrc":"11356:6:75","nodeType":"YulIdentifier","src":"11356:6:75"}]},{"nativeSrc":"11383:18:75","nodeType":"YulAssignment","src":"11383:18:75","value":{"name":"value2_1","nativeSrc":"11393:8:75","nodeType":"YulIdentifier","src":"11393:8:75"},"variableNames":[{"name":"value2","nativeSrc":"11383:6:75","nodeType":"YulIdentifier","src":"11383:6:75"}]},{"nativeSrc":"11410:47:75","nodeType":"YulVariableDeclaration","src":"11410:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11442:9:75","nodeType":"YulIdentifier","src":"11442:9:75"},{"kind":"number","nativeSrc":"11453:2:75","nodeType":"YulLiteral","src":"11453:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11438:3:75","nodeType":"YulIdentifier","src":"11438:3:75"},"nativeSrc":"11438:18:75","nodeType":"YulFunctionCall","src":"11438:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"11425:12:75","nodeType":"YulIdentifier","src":"11425:12:75"},"nativeSrc":"11425:32:75","nodeType":"YulFunctionCall","src":"11425:32:75"},"variables":[{"name":"value_1","nativeSrc":"11414:7:75","nodeType":"YulTypedName","src":"11414:7:75","type":""}]},{"body":{"nativeSrc":"11519:16:75","nodeType":"YulBlock","src":"11519:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11528:1:75","nodeType":"YulLiteral","src":"11528:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11531:1:75","nodeType":"YulLiteral","src":"11531:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11521:6:75","nodeType":"YulIdentifier","src":"11521:6:75"},"nativeSrc":"11521:12:75","nodeType":"YulFunctionCall","src":"11521:12:75"},"nativeSrc":"11521:12:75","nodeType":"YulExpressionStatement","src":"11521:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"11479:7:75","nodeType":"YulIdentifier","src":"11479:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"11492:7:75","nodeType":"YulIdentifier","src":"11492:7:75"},{"kind":"number","nativeSrc":"11501:14:75","nodeType":"YulLiteral","src":"11501:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"11488:3:75","nodeType":"YulIdentifier","src":"11488:3:75"},"nativeSrc":"11488:28:75","nodeType":"YulFunctionCall","src":"11488:28:75"}],"functionName":{"name":"eq","nativeSrc":"11476:2:75","nodeType":"YulIdentifier","src":"11476:2:75"},"nativeSrc":"11476:41:75","nodeType":"YulFunctionCall","src":"11476:41:75"}],"functionName":{"name":"iszero","nativeSrc":"11469:6:75","nodeType":"YulIdentifier","src":"11469:6:75"},"nativeSrc":"11469:49:75","nodeType":"YulFunctionCall","src":"11469:49:75"},"nativeSrc":"11466:69:75","nodeType":"YulIf","src":"11466:69:75"},{"nativeSrc":"11544:17:75","nodeType":"YulAssignment","src":"11544:17:75","value":{"name":"value_1","nativeSrc":"11554:7:75","nodeType":"YulIdentifier","src":"11554:7:75"},"variableNames":[{"name":"value3","nativeSrc":"11544:6:75","nodeType":"YulIdentifier","src":"11544:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint48","nativeSrc":"10847:720:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10911:9:75","nodeType":"YulTypedName","src":"10911:9:75","type":""},{"name":"dataEnd","nativeSrc":"10922:7:75","nodeType":"YulTypedName","src":"10922:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10934:6:75","nodeType":"YulTypedName","src":"10934:6:75","type":""},{"name":"value1","nativeSrc":"10942:6:75","nodeType":"YulTypedName","src":"10942:6:75","type":""},{"name":"value2","nativeSrc":"10950:6:75","nodeType":"YulTypedName","src":"10950:6:75","type":""},{"name":"value3","nativeSrc":"10958:6:75","nodeType":"YulTypedName","src":"10958:6:75","type":""}],"src":"10847:720:75"},{"body":{"nativeSrc":"11699:136:75","nodeType":"YulBlock","src":"11699:136:75","statements":[{"nativeSrc":"11709:26:75","nodeType":"YulAssignment","src":"11709:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11721:9:75","nodeType":"YulIdentifier","src":"11721:9:75"},{"kind":"number","nativeSrc":"11732:2:75","nodeType":"YulLiteral","src":"11732:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11717:3:75","nodeType":"YulIdentifier","src":"11717:3:75"},"nativeSrc":"11717:18:75","nodeType":"YulFunctionCall","src":"11717:18:75"},"variableNames":[{"name":"tail","nativeSrc":"11709:4:75","nodeType":"YulIdentifier","src":"11709:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11751:9:75","nodeType":"YulIdentifier","src":"11751:9:75"},{"name":"value0","nativeSrc":"11762:6:75","nodeType":"YulIdentifier","src":"11762:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11744:6:75","nodeType":"YulIdentifier","src":"11744:6:75"},"nativeSrc":"11744:25:75","nodeType":"YulFunctionCall","src":"11744:25:75"},"nativeSrc":"11744:25:75","nodeType":"YulExpressionStatement","src":"11744:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11789:9:75","nodeType":"YulIdentifier","src":"11789:9:75"},{"kind":"number","nativeSrc":"11800:2:75","nodeType":"YulLiteral","src":"11800:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11785:3:75","nodeType":"YulIdentifier","src":"11785:3:75"},"nativeSrc":"11785:18:75","nodeType":"YulFunctionCall","src":"11785:18:75"},{"arguments":[{"name":"value1","nativeSrc":"11809:6:75","nodeType":"YulIdentifier","src":"11809:6:75"},{"kind":"number","nativeSrc":"11817:10:75","nodeType":"YulLiteral","src":"11817:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"11805:3:75","nodeType":"YulIdentifier","src":"11805:3:75"},"nativeSrc":"11805:23:75","nodeType":"YulFunctionCall","src":"11805:23:75"}],"functionName":{"name":"mstore","nativeSrc":"11778:6:75","nodeType":"YulIdentifier","src":"11778:6:75"},"nativeSrc":"11778:51:75","nodeType":"YulFunctionCall","src":"11778:51:75"},"nativeSrc":"11778:51:75","nodeType":"YulExpressionStatement","src":"11778:51:75"}]},"name":"abi_encode_tuple_t_bytes32_t_uint32__to_t_bytes32_t_uint32__fromStack_reversed","nativeSrc":"11572:263:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11660:9:75","nodeType":"YulTypedName","src":"11660:9:75","type":""},{"name":"value1","nativeSrc":"11671:6:75","nodeType":"YulTypedName","src":"11671:6:75","type":""},{"name":"value0","nativeSrc":"11679:6:75","nodeType":"YulTypedName","src":"11679:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11690:4:75","nodeType":"YulTypedName","src":"11690:4:75","type":""}],"src":"11572:263:75"},{"body":{"nativeSrc":"11872:95:75","nodeType":"YulBlock","src":"11872:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11889:1:75","nodeType":"YulLiteral","src":"11889:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11896:3:75","nodeType":"YulLiteral","src":"11896:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"11901:10:75","nodeType":"YulLiteral","src":"11901:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11892:3:75","nodeType":"YulIdentifier","src":"11892:3:75"},"nativeSrc":"11892:20:75","nodeType":"YulFunctionCall","src":"11892:20:75"}],"functionName":{"name":"mstore","nativeSrc":"11882:6:75","nodeType":"YulIdentifier","src":"11882:6:75"},"nativeSrc":"11882:31:75","nodeType":"YulFunctionCall","src":"11882:31:75"},"nativeSrc":"11882:31:75","nodeType":"YulExpressionStatement","src":"11882:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11929:1:75","nodeType":"YulLiteral","src":"11929:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"11932:4:75","nodeType":"YulLiteral","src":"11932:4:75","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"11922:6:75","nodeType":"YulIdentifier","src":"11922:6:75"},"nativeSrc":"11922:15:75","nodeType":"YulFunctionCall","src":"11922:15:75"},"nativeSrc":"11922:15:75","nodeType":"YulExpressionStatement","src":"11922:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11953:1:75","nodeType":"YulLiteral","src":"11953:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11956:4:75","nodeType":"YulLiteral","src":"11956:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11946:6:75","nodeType":"YulIdentifier","src":"11946:6:75"},"nativeSrc":"11946:15:75","nodeType":"YulFunctionCall","src":"11946:15:75"},"nativeSrc":"11946:15:75","nodeType":"YulExpressionStatement","src":"11946:15:75"}]},"name":"panic_error_0x32","nativeSrc":"11840:127:75","nodeType":"YulFunctionDefinition","src":"11840:127:75"},{"body":{"nativeSrc":"12041:176:75","nodeType":"YulBlock","src":"12041:176:75","statements":[{"body":{"nativeSrc":"12087:16:75","nodeType":"YulBlock","src":"12087:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12096:1:75","nodeType":"YulLiteral","src":"12096:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12099:1:75","nodeType":"YulLiteral","src":"12099:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12089:6:75","nodeType":"YulIdentifier","src":"12089:6:75"},"nativeSrc":"12089:12:75","nodeType":"YulFunctionCall","src":"12089:12:75"},"nativeSrc":"12089:12:75","nodeType":"YulExpressionStatement","src":"12089:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12062:7:75","nodeType":"YulIdentifier","src":"12062:7:75"},{"name":"headStart","nativeSrc":"12071:9:75","nodeType":"YulIdentifier","src":"12071:9:75"}],"functionName":{"name":"sub","nativeSrc":"12058:3:75","nodeType":"YulIdentifier","src":"12058:3:75"},"nativeSrc":"12058:23:75","nodeType":"YulFunctionCall","src":"12058:23:75"},{"kind":"number","nativeSrc":"12083:2:75","nodeType":"YulLiteral","src":"12083:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12054:3:75","nodeType":"YulIdentifier","src":"12054:3:75"},"nativeSrc":"12054:32:75","nodeType":"YulFunctionCall","src":"12054:32:75"},"nativeSrc":"12051:52:75","nodeType":"YulIf","src":"12051:52:75"},{"nativeSrc":"12112:36:75","nodeType":"YulVariableDeclaration","src":"12112:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12138:9:75","nodeType":"YulIdentifier","src":"12138:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"12125:12:75","nodeType":"YulIdentifier","src":"12125:12:75"},"nativeSrc":"12125:23:75","nodeType":"YulFunctionCall","src":"12125:23:75"},"variables":[{"name":"value","nativeSrc":"12116:5:75","nodeType":"YulTypedName","src":"12116:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12181:5:75","nodeType":"YulIdentifier","src":"12181:5:75"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"12157:23:75","nodeType":"YulIdentifier","src":"12157:23:75"},"nativeSrc":"12157:30:75","nodeType":"YulFunctionCall","src":"12157:30:75"},"nativeSrc":"12157:30:75","nodeType":"YulExpressionStatement","src":"12157:30:75"},{"nativeSrc":"12196:15:75","nodeType":"YulAssignment","src":"12196:15:75","value":{"name":"value","nativeSrc":"12206:5:75","nodeType":"YulIdentifier","src":"12206:5:75"},"variableNames":[{"name":"value0","nativeSrc":"12196:6:75","nodeType":"YulIdentifier","src":"12196:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"11972:245:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12007:9:75","nodeType":"YulTypedName","src":"12007:9:75","type":""},{"name":"dataEnd","nativeSrc":"12018:7:75","nodeType":"YulTypedName","src":"12018:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12030:6:75","nodeType":"YulTypedName","src":"12030:6:75","type":""}],"src":"11972:245:75"},{"body":{"nativeSrc":"12323:102:75","nodeType":"YulBlock","src":"12323:102:75","statements":[{"nativeSrc":"12333:26:75","nodeType":"YulAssignment","src":"12333:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12345:9:75","nodeType":"YulIdentifier","src":"12345:9:75"},{"kind":"number","nativeSrc":"12356:2:75","nodeType":"YulLiteral","src":"12356:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12341:3:75","nodeType":"YulIdentifier","src":"12341:3:75"},"nativeSrc":"12341:18:75","nodeType":"YulFunctionCall","src":"12341:18:75"},"variableNames":[{"name":"tail","nativeSrc":"12333:4:75","nodeType":"YulIdentifier","src":"12333:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12375:9:75","nodeType":"YulIdentifier","src":"12375:9:75"},{"arguments":[{"name":"value0","nativeSrc":"12390:6:75","nodeType":"YulIdentifier","src":"12390:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12406:3:75","nodeType":"YulLiteral","src":"12406:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12411:1:75","nodeType":"YulLiteral","src":"12411:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12402:3:75","nodeType":"YulIdentifier","src":"12402:3:75"},"nativeSrc":"12402:11:75","nodeType":"YulFunctionCall","src":"12402:11:75"},{"kind":"number","nativeSrc":"12415:1:75","nodeType":"YulLiteral","src":"12415:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12398:3:75","nodeType":"YulIdentifier","src":"12398:3:75"},"nativeSrc":"12398:19:75","nodeType":"YulFunctionCall","src":"12398:19:75"}],"functionName":{"name":"and","nativeSrc":"12386:3:75","nodeType":"YulIdentifier","src":"12386:3:75"},"nativeSrc":"12386:32:75","nodeType":"YulFunctionCall","src":"12386:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12368:6:75","nodeType":"YulIdentifier","src":"12368:6:75"},"nativeSrc":"12368:51:75","nodeType":"YulFunctionCall","src":"12368:51:75"},"nativeSrc":"12368:51:75","nodeType":"YulExpressionStatement","src":"12368:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"12222:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12292:9:75","nodeType":"YulTypedName","src":"12292:9:75","type":""},{"name":"value0","nativeSrc":"12303:6:75","nodeType":"YulTypedName","src":"12303:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12314:4:75","nodeType":"YulTypedName","src":"12314:4:75","type":""}],"src":"12222:203:75"},{"body":{"nativeSrc":"12585:241:75","nodeType":"YulBlock","src":"12585:241:75","statements":[{"nativeSrc":"12595:26:75","nodeType":"YulAssignment","src":"12595:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12607:9:75","nodeType":"YulIdentifier","src":"12607:9:75"},{"kind":"number","nativeSrc":"12618:2:75","nodeType":"YulLiteral","src":"12618:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12603:3:75","nodeType":"YulIdentifier","src":"12603:3:75"},"nativeSrc":"12603:18:75","nodeType":"YulFunctionCall","src":"12603:18:75"},"variableNames":[{"name":"tail","nativeSrc":"12595:4:75","nodeType":"YulIdentifier","src":"12595:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12637:9:75","nodeType":"YulIdentifier","src":"12637:9:75"},{"arguments":[{"name":"value0","nativeSrc":"12652:6:75","nodeType":"YulIdentifier","src":"12652:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12668:3:75","nodeType":"YulLiteral","src":"12668:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12673:1:75","nodeType":"YulLiteral","src":"12673:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12664:3:75","nodeType":"YulIdentifier","src":"12664:3:75"},"nativeSrc":"12664:11:75","nodeType":"YulFunctionCall","src":"12664:11:75"},{"kind":"number","nativeSrc":"12677:1:75","nodeType":"YulLiteral","src":"12677:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12660:3:75","nodeType":"YulIdentifier","src":"12660:3:75"},"nativeSrc":"12660:19:75","nodeType":"YulFunctionCall","src":"12660:19:75"}],"functionName":{"name":"and","nativeSrc":"12648:3:75","nodeType":"YulIdentifier","src":"12648:3:75"},"nativeSrc":"12648:32:75","nodeType":"YulFunctionCall","src":"12648:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12630:6:75","nodeType":"YulIdentifier","src":"12630:6:75"},"nativeSrc":"12630:51:75","nodeType":"YulFunctionCall","src":"12630:51:75"},"nativeSrc":"12630:51:75","nodeType":"YulExpressionStatement","src":"12630:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12701:9:75","nodeType":"YulIdentifier","src":"12701:9:75"},{"kind":"number","nativeSrc":"12712:2:75","nodeType":"YulLiteral","src":"12712:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12697:3:75","nodeType":"YulIdentifier","src":"12697:3:75"},"nativeSrc":"12697:18:75","nodeType":"YulFunctionCall","src":"12697:18:75"},{"arguments":[{"name":"value1","nativeSrc":"12721:6:75","nodeType":"YulIdentifier","src":"12721:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12737:3:75","nodeType":"YulLiteral","src":"12737:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12742:1:75","nodeType":"YulLiteral","src":"12742:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12733:3:75","nodeType":"YulIdentifier","src":"12733:3:75"},"nativeSrc":"12733:11:75","nodeType":"YulFunctionCall","src":"12733:11:75"},{"kind":"number","nativeSrc":"12746:1:75","nodeType":"YulLiteral","src":"12746:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12729:3:75","nodeType":"YulIdentifier","src":"12729:3:75"},"nativeSrc":"12729:19:75","nodeType":"YulFunctionCall","src":"12729:19:75"}],"functionName":{"name":"and","nativeSrc":"12717:3:75","nodeType":"YulIdentifier","src":"12717:3:75"},"nativeSrc":"12717:32:75","nodeType":"YulFunctionCall","src":"12717:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12690:6:75","nodeType":"YulIdentifier","src":"12690:6:75"},"nativeSrc":"12690:60:75","nodeType":"YulFunctionCall","src":"12690:60:75"},"nativeSrc":"12690:60:75","nodeType":"YulExpressionStatement","src":"12690:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12770:9:75","nodeType":"YulIdentifier","src":"12770:9:75"},{"kind":"number","nativeSrc":"12781:2:75","nodeType":"YulLiteral","src":"12781:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12766:3:75","nodeType":"YulIdentifier","src":"12766:3:75"},"nativeSrc":"12766:18:75","nodeType":"YulFunctionCall","src":"12766:18:75"},{"arguments":[{"name":"value2","nativeSrc":"12790:6:75","nodeType":"YulIdentifier","src":"12790:6:75"},{"arguments":[{"kind":"number","nativeSrc":"12802:3:75","nodeType":"YulLiteral","src":"12802:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"12807:10:75","nodeType":"YulLiteral","src":"12807:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"12798:3:75","nodeType":"YulIdentifier","src":"12798:3:75"},"nativeSrc":"12798:20:75","nodeType":"YulFunctionCall","src":"12798:20:75"}],"functionName":{"name":"and","nativeSrc":"12786:3:75","nodeType":"YulIdentifier","src":"12786:3:75"},"nativeSrc":"12786:33:75","nodeType":"YulFunctionCall","src":"12786:33:75"}],"functionName":{"name":"mstore","nativeSrc":"12759:6:75","nodeType":"YulIdentifier","src":"12759:6:75"},"nativeSrc":"12759:61:75","nodeType":"YulFunctionCall","src":"12759:61:75"},"nativeSrc":"12759:61:75","nodeType":"YulExpressionStatement","src":"12759:61:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"12430:396:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12538:9:75","nodeType":"YulTypedName","src":"12538:9:75","type":""},{"name":"value2","nativeSrc":"12549:6:75","nodeType":"YulTypedName","src":"12549:6:75","type":""},{"name":"value1","nativeSrc":"12557:6:75","nodeType":"YulTypedName","src":"12557:6:75","type":""},{"name":"value0","nativeSrc":"12565:6:75","nodeType":"YulTypedName","src":"12565:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12576:4:75","nodeType":"YulTypedName","src":"12576:4:75","type":""}],"src":"12430:396:75"},{"body":{"nativeSrc":"12898:200:75","nodeType":"YulBlock","src":"12898:200:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"12915:3:75","nodeType":"YulIdentifier","src":"12915:3:75"},{"name":"length","nativeSrc":"12920:6:75","nodeType":"YulIdentifier","src":"12920:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12908:6:75","nodeType":"YulIdentifier","src":"12908:6:75"},"nativeSrc":"12908:19:75","nodeType":"YulFunctionCall","src":"12908:19:75"},"nativeSrc":"12908:19:75","nodeType":"YulExpressionStatement","src":"12908:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"12953:3:75","nodeType":"YulIdentifier","src":"12953:3:75"},{"kind":"number","nativeSrc":"12958:4:75","nodeType":"YulLiteral","src":"12958:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12949:3:75","nodeType":"YulIdentifier","src":"12949:3:75"},"nativeSrc":"12949:14:75","nodeType":"YulFunctionCall","src":"12949:14:75"},{"name":"start","nativeSrc":"12965:5:75","nodeType":"YulIdentifier","src":"12965:5:75"},{"name":"length","nativeSrc":"12972:6:75","nodeType":"YulIdentifier","src":"12972:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"12936:12:75","nodeType":"YulIdentifier","src":"12936:12:75"},"nativeSrc":"12936:43:75","nodeType":"YulFunctionCall","src":"12936:43:75"},"nativeSrc":"12936:43:75","nodeType":"YulExpressionStatement","src":"12936:43:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13003:3:75","nodeType":"YulIdentifier","src":"13003:3:75"},{"name":"length","nativeSrc":"13008:6:75","nodeType":"YulIdentifier","src":"13008:6:75"}],"functionName":{"name":"add","nativeSrc":"12999:3:75","nodeType":"YulIdentifier","src":"12999:3:75"},"nativeSrc":"12999:16:75","nodeType":"YulFunctionCall","src":"12999:16:75"},{"kind":"number","nativeSrc":"13017:4:75","nodeType":"YulLiteral","src":"13017:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12995:3:75","nodeType":"YulIdentifier","src":"12995:3:75"},"nativeSrc":"12995:27:75","nodeType":"YulFunctionCall","src":"12995:27:75"},{"kind":"number","nativeSrc":"13024:1:75","nodeType":"YulLiteral","src":"13024:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12988:6:75","nodeType":"YulIdentifier","src":"12988:6:75"},"nativeSrc":"12988:38:75","nodeType":"YulFunctionCall","src":"12988:38:75"},"nativeSrc":"12988:38:75","nodeType":"YulExpressionStatement","src":"12988:38:75"},{"nativeSrc":"13035:57:75","nodeType":"YulAssignment","src":"13035:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"13050:3:75","nodeType":"YulIdentifier","src":"13050:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"13063:6:75","nodeType":"YulIdentifier","src":"13063:6:75"},{"kind":"number","nativeSrc":"13071:2:75","nodeType":"YulLiteral","src":"13071:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"13059:3:75","nodeType":"YulIdentifier","src":"13059:3:75"},"nativeSrc":"13059:15:75","nodeType":"YulFunctionCall","src":"13059:15:75"},{"arguments":[{"kind":"number","nativeSrc":"13080:2:75","nodeType":"YulLiteral","src":"13080:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"13076:3:75","nodeType":"YulIdentifier","src":"13076:3:75"},"nativeSrc":"13076:7:75","nodeType":"YulFunctionCall","src":"13076:7:75"}],"functionName":{"name":"and","nativeSrc":"13055:3:75","nodeType":"YulIdentifier","src":"13055:3:75"},"nativeSrc":"13055:29:75","nodeType":"YulFunctionCall","src":"13055:29:75"}],"functionName":{"name":"add","nativeSrc":"13046:3:75","nodeType":"YulIdentifier","src":"13046:3:75"},"nativeSrc":"13046:39:75","nodeType":"YulFunctionCall","src":"13046:39:75"},{"kind":"number","nativeSrc":"13087:4:75","nodeType":"YulLiteral","src":"13087:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13042:3:75","nodeType":"YulIdentifier","src":"13042:3:75"},"nativeSrc":"13042:50:75","nodeType":"YulFunctionCall","src":"13042:50:75"},"variableNames":[{"name":"end","nativeSrc":"13035:3:75","nodeType":"YulIdentifier","src":"13035:3:75"}]}]},"name":"abi_encode_string_calldata","nativeSrc":"12831:267:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"12867:5:75","nodeType":"YulTypedName","src":"12867:5:75","type":""},{"name":"length","nativeSrc":"12874:6:75","nodeType":"YulTypedName","src":"12874:6:75","type":""},{"name":"pos","nativeSrc":"12882:3:75","nodeType":"YulTypedName","src":"12882:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12890:3:75","nodeType":"YulTypedName","src":"12890:3:75","type":""}],"src":"12831:267:75"},{"body":{"nativeSrc":"13234:116:75","nodeType":"YulBlock","src":"13234:116:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13251:9:75","nodeType":"YulIdentifier","src":"13251:9:75"},{"kind":"number","nativeSrc":"13262:2:75","nodeType":"YulLiteral","src":"13262:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13244:6:75","nodeType":"YulIdentifier","src":"13244:6:75"},"nativeSrc":"13244:21:75","nodeType":"YulFunctionCall","src":"13244:21:75"},"nativeSrc":"13244:21:75","nodeType":"YulExpressionStatement","src":"13244:21:75"},{"nativeSrc":"13274:70:75","nodeType":"YulAssignment","src":"13274:70:75","value":{"arguments":[{"name":"value0","nativeSrc":"13309:6:75","nodeType":"YulIdentifier","src":"13309:6:75"},{"name":"value1","nativeSrc":"13317:6:75","nodeType":"YulIdentifier","src":"13317:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"13329:9:75","nodeType":"YulIdentifier","src":"13329:9:75"},{"kind":"number","nativeSrc":"13340:2:75","nodeType":"YulLiteral","src":"13340:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13325:3:75","nodeType":"YulIdentifier","src":"13325:3:75"},"nativeSrc":"13325:18:75","nodeType":"YulFunctionCall","src":"13325:18:75"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"13282:26:75","nodeType":"YulIdentifier","src":"13282:26:75"},"nativeSrc":"13282:62:75","nodeType":"YulFunctionCall","src":"13282:62:75"},"variableNames":[{"name":"tail","nativeSrc":"13274:4:75","nodeType":"YulIdentifier","src":"13274:4:75"}]}]},"name":"abi_encode_tuple_t_string_calldata_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"13103:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13195:9:75","nodeType":"YulTypedName","src":"13195:9:75","type":""},{"name":"value1","nativeSrc":"13206:6:75","nodeType":"YulTypedName","src":"13206:6:75","type":""},{"name":"value0","nativeSrc":"13214:6:75","nodeType":"YulTypedName","src":"13214:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13225:4:75","nodeType":"YulTypedName","src":"13225:4:75","type":""}],"src":"13103:247:75"},{"body":{"nativeSrc":"13435:169:75","nodeType":"YulBlock","src":"13435:169:75","statements":[{"body":{"nativeSrc":"13481:16:75","nodeType":"YulBlock","src":"13481:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13490:1:75","nodeType":"YulLiteral","src":"13490:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13493:1:75","nodeType":"YulLiteral","src":"13493:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13483:6:75","nodeType":"YulIdentifier","src":"13483:6:75"},"nativeSrc":"13483:12:75","nodeType":"YulFunctionCall","src":"13483:12:75"},"nativeSrc":"13483:12:75","nodeType":"YulExpressionStatement","src":"13483:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13456:7:75","nodeType":"YulIdentifier","src":"13456:7:75"},{"name":"headStart","nativeSrc":"13465:9:75","nodeType":"YulIdentifier","src":"13465:9:75"}],"functionName":{"name":"sub","nativeSrc":"13452:3:75","nodeType":"YulIdentifier","src":"13452:3:75"},"nativeSrc":"13452:23:75","nodeType":"YulFunctionCall","src":"13452:23:75"},{"kind":"number","nativeSrc":"13477:2:75","nodeType":"YulLiteral","src":"13477:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13448:3:75","nodeType":"YulIdentifier","src":"13448:3:75"},"nativeSrc":"13448:32:75","nodeType":"YulFunctionCall","src":"13448:32:75"},"nativeSrc":"13445:52:75","nodeType":"YulIf","src":"13445:52:75"},{"nativeSrc":"13506:29:75","nodeType":"YulVariableDeclaration","src":"13506:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13525:9:75","nodeType":"YulIdentifier","src":"13525:9:75"}],"functionName":{"name":"mload","nativeSrc":"13519:5:75","nodeType":"YulIdentifier","src":"13519:5:75"},"nativeSrc":"13519:16:75","nodeType":"YulFunctionCall","src":"13519:16:75"},"variables":[{"name":"value","nativeSrc":"13510:5:75","nodeType":"YulTypedName","src":"13510:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13568:5:75","nodeType":"YulIdentifier","src":"13568:5:75"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"13544:23:75","nodeType":"YulIdentifier","src":"13544:23:75"},"nativeSrc":"13544:30:75","nodeType":"YulFunctionCall","src":"13544:30:75"},"nativeSrc":"13544:30:75","nodeType":"YulExpressionStatement","src":"13544:30:75"},{"nativeSrc":"13583:15:75","nodeType":"YulAssignment","src":"13583:15:75","value":{"name":"value","nativeSrc":"13593:5:75","nodeType":"YulIdentifier","src":"13593:5:75"},"variableNames":[{"name":"value0","nativeSrc":"13583:6:75","nodeType":"YulIdentifier","src":"13583:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"13355:249:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13401:9:75","nodeType":"YulTypedName","src":"13401:9:75","type":""},{"name":"dataEnd","nativeSrc":"13412:7:75","nodeType":"YulTypedName","src":"13412:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13424:6:75","nodeType":"YulTypedName","src":"13424:6:75","type":""}],"src":"13355:249:75"},{"body":{"nativeSrc":"13794:254:75","nodeType":"YulBlock","src":"13794:254:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13811:9:75","nodeType":"YulIdentifier","src":"13811:9:75"},{"arguments":[{"name":"value0","nativeSrc":"13826:6:75","nodeType":"YulIdentifier","src":"13826:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13842:3:75","nodeType":"YulLiteral","src":"13842:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"13847:1:75","nodeType":"YulLiteral","src":"13847:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13838:3:75","nodeType":"YulIdentifier","src":"13838:3:75"},"nativeSrc":"13838:11:75","nodeType":"YulFunctionCall","src":"13838:11:75"},{"kind":"number","nativeSrc":"13851:1:75","nodeType":"YulLiteral","src":"13851:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13834:3:75","nodeType":"YulIdentifier","src":"13834:3:75"},"nativeSrc":"13834:19:75","nodeType":"YulFunctionCall","src":"13834:19:75"}],"functionName":{"name":"and","nativeSrc":"13822:3:75","nodeType":"YulIdentifier","src":"13822:3:75"},"nativeSrc":"13822:32:75","nodeType":"YulFunctionCall","src":"13822:32:75"}],"functionName":{"name":"mstore","nativeSrc":"13804:6:75","nodeType":"YulIdentifier","src":"13804:6:75"},"nativeSrc":"13804:51:75","nodeType":"YulFunctionCall","src":"13804:51:75"},"nativeSrc":"13804:51:75","nodeType":"YulExpressionStatement","src":"13804:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13875:9:75","nodeType":"YulIdentifier","src":"13875:9:75"},{"kind":"number","nativeSrc":"13886:2:75","nodeType":"YulLiteral","src":"13886:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13871:3:75","nodeType":"YulIdentifier","src":"13871:3:75"},"nativeSrc":"13871:18:75","nodeType":"YulFunctionCall","src":"13871:18:75"},{"arguments":[{"name":"value1","nativeSrc":"13895:6:75","nodeType":"YulIdentifier","src":"13895:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13911:3:75","nodeType":"YulLiteral","src":"13911:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"13916:1:75","nodeType":"YulLiteral","src":"13916:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13907:3:75","nodeType":"YulIdentifier","src":"13907:3:75"},"nativeSrc":"13907:11:75","nodeType":"YulFunctionCall","src":"13907:11:75"},{"kind":"number","nativeSrc":"13920:1:75","nodeType":"YulLiteral","src":"13920:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13903:3:75","nodeType":"YulIdentifier","src":"13903:3:75"},"nativeSrc":"13903:19:75","nodeType":"YulFunctionCall","src":"13903:19:75"}],"functionName":{"name":"and","nativeSrc":"13891:3:75","nodeType":"YulIdentifier","src":"13891:3:75"},"nativeSrc":"13891:32:75","nodeType":"YulFunctionCall","src":"13891:32:75"}],"functionName":{"name":"mstore","nativeSrc":"13864:6:75","nodeType":"YulIdentifier","src":"13864:6:75"},"nativeSrc":"13864:60:75","nodeType":"YulFunctionCall","src":"13864:60:75"},"nativeSrc":"13864:60:75","nodeType":"YulExpressionStatement","src":"13864:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13944:9:75","nodeType":"YulIdentifier","src":"13944:9:75"},{"kind":"number","nativeSrc":"13955:2:75","nodeType":"YulLiteral","src":"13955:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13940:3:75","nodeType":"YulIdentifier","src":"13940:3:75"},"nativeSrc":"13940:18:75","nodeType":"YulFunctionCall","src":"13940:18:75"},{"kind":"number","nativeSrc":"13960:2:75","nodeType":"YulLiteral","src":"13960:2:75","type":"","value":"96"}],"functionName":{"name":"mstore","nativeSrc":"13933:6:75","nodeType":"YulIdentifier","src":"13933:6:75"},"nativeSrc":"13933:30:75","nodeType":"YulFunctionCall","src":"13933:30:75"},"nativeSrc":"13933:30:75","nodeType":"YulExpressionStatement","src":"13933:30:75"},{"nativeSrc":"13972:70:75","nodeType":"YulAssignment","src":"13972:70:75","value":{"arguments":[{"name":"value2","nativeSrc":"14007:6:75","nodeType":"YulIdentifier","src":"14007:6:75"},{"name":"value3","nativeSrc":"14015:6:75","nodeType":"YulIdentifier","src":"14015:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"14027:9:75","nodeType":"YulIdentifier","src":"14027:9:75"},{"kind":"number","nativeSrc":"14038:2:75","nodeType":"YulLiteral","src":"14038:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14023:3:75","nodeType":"YulIdentifier","src":"14023:3:75"},"nativeSrc":"14023:18:75","nodeType":"YulFunctionCall","src":"14023:18:75"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"13980:26:75","nodeType":"YulIdentifier","src":"13980:26:75"},"nativeSrc":"13980:62:75","nodeType":"YulFunctionCall","src":"13980:62:75"},"variableNames":[{"name":"tail","nativeSrc":"13972:4:75","nodeType":"YulIdentifier","src":"13972:4:75"}]}]},"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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13739:9:75","nodeType":"YulTypedName","src":"13739:9:75","type":""},{"name":"value3","nativeSrc":"13750:6:75","nodeType":"YulTypedName","src":"13750:6:75","type":""},{"name":"value2","nativeSrc":"13758:6:75","nodeType":"YulTypedName","src":"13758:6:75","type":""},{"name":"value1","nativeSrc":"13766:6:75","nodeType":"YulTypedName","src":"13766:6:75","type":""},{"name":"value0","nativeSrc":"13774:6:75","nodeType":"YulTypedName","src":"13774:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13785:4:75","nodeType":"YulTypedName","src":"13785:4:75","type":""}],"src":"13609:439:75"},{"body":{"nativeSrc":"14085:95:75","nodeType":"YulBlock","src":"14085:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14102:1:75","nodeType":"YulLiteral","src":"14102:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14109:3:75","nodeType":"YulLiteral","src":"14109:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"14114:10:75","nodeType":"YulLiteral","src":"14114:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14105:3:75","nodeType":"YulIdentifier","src":"14105:3:75"},"nativeSrc":"14105:20:75","nodeType":"YulFunctionCall","src":"14105:20:75"}],"functionName":{"name":"mstore","nativeSrc":"14095:6:75","nodeType":"YulIdentifier","src":"14095:6:75"},"nativeSrc":"14095:31:75","nodeType":"YulFunctionCall","src":"14095:31:75"},"nativeSrc":"14095:31:75","nodeType":"YulExpressionStatement","src":"14095:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14142:1:75","nodeType":"YulLiteral","src":"14142:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"14145:4:75","nodeType":"YulLiteral","src":"14145:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"14135:6:75","nodeType":"YulIdentifier","src":"14135:6:75"},"nativeSrc":"14135:15:75","nodeType":"YulFunctionCall","src":"14135:15:75"},"nativeSrc":"14135:15:75","nodeType":"YulExpressionStatement","src":"14135:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14166:1:75","nodeType":"YulLiteral","src":"14166:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14169:4:75","nodeType":"YulLiteral","src":"14169:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14159:6:75","nodeType":"YulIdentifier","src":"14159:6:75"},"nativeSrc":"14159:15:75","nodeType":"YulFunctionCall","src":"14159:15:75"},"nativeSrc":"14159:15:75","nodeType":"YulExpressionStatement","src":"14159:15:75"}]},"name":"panic_error_0x11","nativeSrc":"14053:127:75","nodeType":"YulFunctionDefinition","src":"14053:127:75"},{"body":{"nativeSrc":"14234:79:75","nodeType":"YulBlock","src":"14234:79:75","statements":[{"nativeSrc":"14244:17:75","nodeType":"YulAssignment","src":"14244:17:75","value":{"arguments":[{"name":"x","nativeSrc":"14256:1:75","nodeType":"YulIdentifier","src":"14256:1:75"},{"name":"y","nativeSrc":"14259:1:75","nodeType":"YulIdentifier","src":"14259:1:75"}],"functionName":{"name":"sub","nativeSrc":"14252:3:75","nodeType":"YulIdentifier","src":"14252:3:75"},"nativeSrc":"14252:9:75","nodeType":"YulFunctionCall","src":"14252:9:75"},"variableNames":[{"name":"diff","nativeSrc":"14244:4:75","nodeType":"YulIdentifier","src":"14244:4:75"}]},{"body":{"nativeSrc":"14285:22:75","nodeType":"YulBlock","src":"14285:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"14287:16:75","nodeType":"YulIdentifier","src":"14287:16:75"},"nativeSrc":"14287:18:75","nodeType":"YulFunctionCall","src":"14287:18:75"},"nativeSrc":"14287:18:75","nodeType":"YulExpressionStatement","src":"14287:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"14276:4:75","nodeType":"YulIdentifier","src":"14276:4:75"},{"name":"x","nativeSrc":"14282:1:75","nodeType":"YulIdentifier","src":"14282:1:75"}],"functionName":{"name":"gt","nativeSrc":"14273:2:75","nodeType":"YulIdentifier","src":"14273:2:75"},"nativeSrc":"14273:11:75","nodeType":"YulFunctionCall","src":"14273:11:75"},"nativeSrc":"14270:37:75","nodeType":"YulIf","src":"14270:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"14185:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"14216:1:75","nodeType":"YulTypedName","src":"14216:1:75","type":""},{"name":"y","nativeSrc":"14219:1:75","nodeType":"YulTypedName","src":"14219:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"14225:4:75","nodeType":"YulTypedName","src":"14225:4:75","type":""}],"src":"14185:128:75"},{"body":{"nativeSrc":"14448:201:75","nodeType":"YulBlock","src":"14448:201:75","statements":[{"body":{"nativeSrc":"14486:16:75","nodeType":"YulBlock","src":"14486:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14495:1:75","nodeType":"YulLiteral","src":"14495:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14498:1:75","nodeType":"YulLiteral","src":"14498:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14488:6:75","nodeType":"YulIdentifier","src":"14488:6:75"},"nativeSrc":"14488:12:75","nodeType":"YulFunctionCall","src":"14488:12:75"},"nativeSrc":"14488:12:75","nodeType":"YulExpressionStatement","src":"14488:12:75"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"14464:10:75","nodeType":"YulIdentifier","src":"14464:10:75"},{"name":"endIndex","nativeSrc":"14476:8:75","nodeType":"YulIdentifier","src":"14476:8:75"}],"functionName":{"name":"gt","nativeSrc":"14461:2:75","nodeType":"YulIdentifier","src":"14461:2:75"},"nativeSrc":"14461:24:75","nodeType":"YulFunctionCall","src":"14461:24:75"},"nativeSrc":"14458:44:75","nodeType":"YulIf","src":"14458:44:75"},{"body":{"nativeSrc":"14535:16:75","nodeType":"YulBlock","src":"14535:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14544:1:75","nodeType":"YulLiteral","src":"14544:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14547:1:75","nodeType":"YulLiteral","src":"14547:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14537:6:75","nodeType":"YulIdentifier","src":"14537:6:75"},"nativeSrc":"14537:12:75","nodeType":"YulFunctionCall","src":"14537:12:75"},"nativeSrc":"14537:12:75","nodeType":"YulExpressionStatement","src":"14537:12:75"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"14517:8:75","nodeType":"YulIdentifier","src":"14517:8:75"},{"name":"length","nativeSrc":"14527:6:75","nodeType":"YulIdentifier","src":"14527:6:75"}],"functionName":{"name":"gt","nativeSrc":"14514:2:75","nodeType":"YulIdentifier","src":"14514:2:75"},"nativeSrc":"14514:20:75","nodeType":"YulFunctionCall","src":"14514:20:75"},"nativeSrc":"14511:40:75","nodeType":"YulIf","src":"14511:40:75"},{"nativeSrc":"14560:36:75","nodeType":"YulAssignment","src":"14560:36:75","value":{"arguments":[{"name":"offset","nativeSrc":"14577:6:75","nodeType":"YulIdentifier","src":"14577:6:75"},{"name":"startIndex","nativeSrc":"14585:10:75","nodeType":"YulIdentifier","src":"14585:10:75"}],"functionName":{"name":"add","nativeSrc":"14573:3:75","nodeType":"YulIdentifier","src":"14573:3:75"},"nativeSrc":"14573:23:75","nodeType":"YulFunctionCall","src":"14573:23:75"},"variableNames":[{"name":"offsetOut","nativeSrc":"14560:9:75","nodeType":"YulIdentifier","src":"14560:9:75"}]},{"nativeSrc":"14605:38:75","nodeType":"YulAssignment","src":"14605:38:75","value":{"arguments":[{"name":"endIndex","nativeSrc":"14622:8:75","nodeType":"YulIdentifier","src":"14622:8:75"},{"name":"startIndex","nativeSrc":"14632:10:75","nodeType":"YulIdentifier","src":"14632:10:75"}],"functionName":{"name":"sub","nativeSrc":"14618:3:75","nodeType":"YulIdentifier","src":"14618:3:75"},"nativeSrc":"14618:25:75","nodeType":"YulFunctionCall","src":"14618:25:75"},"variableNames":[{"name":"lengthOut","nativeSrc":"14605:9:75","nodeType":"YulIdentifier","src":"14605:9:75"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"14318:331:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"14382:6:75","nodeType":"YulTypedName","src":"14382:6:75","type":""},{"name":"length","nativeSrc":"14390:6:75","nodeType":"YulTypedName","src":"14390:6:75","type":""},{"name":"startIndex","nativeSrc":"14398:10:75","nodeType":"YulTypedName","src":"14398:10:75","type":""},{"name":"endIndex","nativeSrc":"14410:8:75","nodeType":"YulTypedName","src":"14410:8:75","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"14423:9:75","nodeType":"YulTypedName","src":"14423:9:75","type":""},{"name":"lengthOut","nativeSrc":"14434:9:75","nodeType":"YulTypedName","src":"14434:9:75","type":""}],"src":"14318:331:75"},{"body":{"nativeSrc":"14686:95:75","nodeType":"YulBlock","src":"14686:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14703:1:75","nodeType":"YulLiteral","src":"14703:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14710:3:75","nodeType":"YulLiteral","src":"14710:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"14715:10:75","nodeType":"YulLiteral","src":"14715:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14706:3:75","nodeType":"YulIdentifier","src":"14706:3:75"},"nativeSrc":"14706:20:75","nodeType":"YulFunctionCall","src":"14706:20:75"}],"functionName":{"name":"mstore","nativeSrc":"14696:6:75","nodeType":"YulIdentifier","src":"14696:6:75"},"nativeSrc":"14696:31:75","nodeType":"YulFunctionCall","src":"14696:31:75"},"nativeSrc":"14696:31:75","nodeType":"YulExpressionStatement","src":"14696:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14743:1:75","nodeType":"YulLiteral","src":"14743:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"14746:4:75","nodeType":"YulLiteral","src":"14746:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"14736:6:75","nodeType":"YulIdentifier","src":"14736:6:75"},"nativeSrc":"14736:15:75","nodeType":"YulFunctionCall","src":"14736:15:75"},"nativeSrc":"14736:15:75","nodeType":"YulExpressionStatement","src":"14736:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14767:1:75","nodeType":"YulLiteral","src":"14767:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14770:4:75","nodeType":"YulLiteral","src":"14770:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14760:6:75","nodeType":"YulIdentifier","src":"14760:6:75"},"nativeSrc":"14760:15:75","nodeType":"YulFunctionCall","src":"14760:15:75"},"nativeSrc":"14760:15:75","nodeType":"YulExpressionStatement","src":"14760:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14654:127:75","nodeType":"YulFunctionDefinition","src":"14654:127:75"},{"body":{"nativeSrc":"14880:427:75","nodeType":"YulBlock","src":"14880:427:75","statements":[{"nativeSrc":"14890:51:75","nodeType":"YulVariableDeclaration","src":"14890:51:75","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"14929:11:75","nodeType":"YulIdentifier","src":"14929:11:75"}],"functionName":{"name":"calldataload","nativeSrc":"14916:12:75","nodeType":"YulIdentifier","src":"14916:12:75"},"nativeSrc":"14916:25:75","nodeType":"YulFunctionCall","src":"14916:25:75"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"14894:18:75","nodeType":"YulTypedName","src":"14894:18:75","type":""}]},{"body":{"nativeSrc":"15030:16:75","nodeType":"YulBlock","src":"15030:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15039:1:75","nodeType":"YulLiteral","src":"15039:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15042:1:75","nodeType":"YulLiteral","src":"15042:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15032:6:75","nodeType":"YulIdentifier","src":"15032:6:75"},"nativeSrc":"15032:12:75","nodeType":"YulFunctionCall","src":"15032:12:75"},"nativeSrc":"15032:12:75","nodeType":"YulExpressionStatement","src":"15032:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"14964:18:75","nodeType":"YulIdentifier","src":"14964:18:75"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"14992:12:75","nodeType":"YulIdentifier","src":"14992:12:75"},"nativeSrc":"14992:14:75","nodeType":"YulFunctionCall","src":"14992:14:75"},{"name":"base_ref","nativeSrc":"15008:8:75","nodeType":"YulIdentifier","src":"15008:8:75"}],"functionName":{"name":"sub","nativeSrc":"14988:3:75","nodeType":"YulIdentifier","src":"14988:3:75"},"nativeSrc":"14988:29:75","nodeType":"YulFunctionCall","src":"14988:29:75"},{"arguments":[{"kind":"number","nativeSrc":"15023:2:75","nodeType":"YulLiteral","src":"15023:2:75","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"15019:3:75","nodeType":"YulIdentifier","src":"15019:3:75"},"nativeSrc":"15019:7:75","nodeType":"YulFunctionCall","src":"15019:7:75"}],"functionName":{"name":"add","nativeSrc":"14984:3:75","nodeType":"YulIdentifier","src":"14984:3:75"},"nativeSrc":"14984:43:75","nodeType":"YulFunctionCall","src":"14984:43:75"}],"functionName":{"name":"slt","nativeSrc":"14960:3:75","nodeType":"YulIdentifier","src":"14960:3:75"},"nativeSrc":"14960:68:75","nodeType":"YulFunctionCall","src":"14960:68:75"}],"functionName":{"name":"iszero","nativeSrc":"14953:6:75","nodeType":"YulIdentifier","src":"14953:6:75"},"nativeSrc":"14953:76:75","nodeType":"YulFunctionCall","src":"14953:76:75"},"nativeSrc":"14950:96:75","nodeType":"YulIf","src":"14950:96:75"},{"nativeSrc":"15055:47:75","nodeType":"YulVariableDeclaration","src":"15055:47:75","value":{"arguments":[{"name":"base_ref","nativeSrc":"15073:8:75","nodeType":"YulIdentifier","src":"15073:8:75"},{"name":"rel_offset_of_tail","nativeSrc":"15083:18:75","nodeType":"YulIdentifier","src":"15083:18:75"}],"functionName":{"name":"add","nativeSrc":"15069:3:75","nodeType":"YulIdentifier","src":"15069:3:75"},"nativeSrc":"15069:33:75","nodeType":"YulFunctionCall","src":"15069:33:75"},"variables":[{"name":"addr_1","nativeSrc":"15059:6:75","nodeType":"YulTypedName","src":"15059:6:75","type":""}]},{"nativeSrc":"15111:30:75","nodeType":"YulAssignment","src":"15111:30:75","value":{"arguments":[{"name":"addr_1","nativeSrc":"15134:6:75","nodeType":"YulIdentifier","src":"15134:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"15121:12:75","nodeType":"YulIdentifier","src":"15121:12:75"},"nativeSrc":"15121:20:75","nodeType":"YulFunctionCall","src":"15121:20:75"},"variableNames":[{"name":"length","nativeSrc":"15111:6:75","nodeType":"YulIdentifier","src":"15111:6:75"}]},{"body":{"nativeSrc":"15184:16:75","nodeType":"YulBlock","src":"15184:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15193:1:75","nodeType":"YulLiteral","src":"15193:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15196:1:75","nodeType":"YulLiteral","src":"15196:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15186:6:75","nodeType":"YulIdentifier","src":"15186:6:75"},"nativeSrc":"15186:12:75","nodeType":"YulFunctionCall","src":"15186:12:75"},"nativeSrc":"15186:12:75","nodeType":"YulExpressionStatement","src":"15186:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"15156:6:75","nodeType":"YulIdentifier","src":"15156:6:75"},{"kind":"number","nativeSrc":"15164:18:75","nodeType":"YulLiteral","src":"15164:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15153:2:75","nodeType":"YulIdentifier","src":"15153:2:75"},"nativeSrc":"15153:30:75","nodeType":"YulFunctionCall","src":"15153:30:75"},"nativeSrc":"15150:50:75","nodeType":"YulIf","src":"15150:50:75"},{"nativeSrc":"15209:25:75","nodeType":"YulAssignment","src":"15209:25:75","value":{"arguments":[{"name":"addr_1","nativeSrc":"15221:6:75","nodeType":"YulIdentifier","src":"15221:6:75"},{"kind":"number","nativeSrc":"15229:4:75","nodeType":"YulLiteral","src":"15229:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15217:3:75","nodeType":"YulIdentifier","src":"15217:3:75"},"nativeSrc":"15217:17:75","nodeType":"YulFunctionCall","src":"15217:17:75"},"variableNames":[{"name":"addr","nativeSrc":"15209:4:75","nodeType":"YulIdentifier","src":"15209:4:75"}]},{"body":{"nativeSrc":"15285:16:75","nodeType":"YulBlock","src":"15285:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15294:1:75","nodeType":"YulLiteral","src":"15294:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15297:1:75","nodeType":"YulLiteral","src":"15297:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15287:6:75","nodeType":"YulIdentifier","src":"15287:6:75"},"nativeSrc":"15287:12:75","nodeType":"YulFunctionCall","src":"15287:12:75"},"nativeSrc":"15287:12:75","nodeType":"YulExpressionStatement","src":"15287:12:75"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"15250:4:75","nodeType":"YulIdentifier","src":"15250:4:75"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"15260:12:75","nodeType":"YulIdentifier","src":"15260:12:75"},"nativeSrc":"15260:14:75","nodeType":"YulFunctionCall","src":"15260:14:75"},{"name":"length","nativeSrc":"15276:6:75","nodeType":"YulIdentifier","src":"15276:6:75"}],"functionName":{"name":"sub","nativeSrc":"15256:3:75","nodeType":"YulIdentifier","src":"15256:3:75"},"nativeSrc":"15256:27:75","nodeType":"YulFunctionCall","src":"15256:27:75"}],"functionName":{"name":"sgt","nativeSrc":"15246:3:75","nodeType":"YulIdentifier","src":"15246:3:75"},"nativeSrc":"15246:38:75","nodeType":"YulFunctionCall","src":"15246:38:75"},"nativeSrc":"15243:58:75","nodeType":"YulIf","src":"15243:58:75"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"14786:521:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"14837:8:75","nodeType":"YulTypedName","src":"14837:8:75","type":""},{"name":"ptr_to_tail","nativeSrc":"14847:11:75","nodeType":"YulTypedName","src":"14847:11:75","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"14863:4:75","nodeType":"YulTypedName","src":"14863:4:75","type":""},{"name":"length","nativeSrc":"14869:6:75","nodeType":"YulTypedName","src":"14869:6:75","type":""}],"src":"14786:521:75"},{"body":{"nativeSrc":"15361:162:75","nodeType":"YulBlock","src":"15361:162:75","statements":[{"nativeSrc":"15371:26:75","nodeType":"YulVariableDeclaration","src":"15371:26:75","value":{"arguments":[{"name":"value","nativeSrc":"15391:5:75","nodeType":"YulIdentifier","src":"15391:5:75"}],"functionName":{"name":"mload","nativeSrc":"15385:5:75","nodeType":"YulIdentifier","src":"15385:5:75"},"nativeSrc":"15385:12:75","nodeType":"YulFunctionCall","src":"15385:12:75"},"variables":[{"name":"length","nativeSrc":"15375:6:75","nodeType":"YulTypedName","src":"15375:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"15412:3:75","nodeType":"YulIdentifier","src":"15412:3:75"},{"arguments":[{"name":"value","nativeSrc":"15421:5:75","nodeType":"YulIdentifier","src":"15421:5:75"},{"kind":"number","nativeSrc":"15428:4:75","nodeType":"YulLiteral","src":"15428:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15417:3:75","nodeType":"YulIdentifier","src":"15417:3:75"},"nativeSrc":"15417:16:75","nodeType":"YulFunctionCall","src":"15417:16:75"},{"name":"length","nativeSrc":"15435:6:75","nodeType":"YulIdentifier","src":"15435:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"15406:5:75","nodeType":"YulIdentifier","src":"15406:5:75"},"nativeSrc":"15406:36:75","nodeType":"YulFunctionCall","src":"15406:36:75"},"nativeSrc":"15406:36:75","nodeType":"YulExpressionStatement","src":"15406:36:75"},{"nativeSrc":"15451:26:75","nodeType":"YulVariableDeclaration","src":"15451:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"15465:3:75","nodeType":"YulIdentifier","src":"15465:3:75"},{"name":"length","nativeSrc":"15470:6:75","nodeType":"YulIdentifier","src":"15470:6:75"}],"functionName":{"name":"add","nativeSrc":"15461:3:75","nodeType":"YulIdentifier","src":"15461:3:75"},"nativeSrc":"15461:16:75","nodeType":"YulFunctionCall","src":"15461:16:75"},"variables":[{"name":"_1","nativeSrc":"15455:2:75","nodeType":"YulTypedName","src":"15455:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"15493:2:75","nodeType":"YulIdentifier","src":"15493:2:75"},{"kind":"number","nativeSrc":"15497:1:75","nodeType":"YulLiteral","src":"15497:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15486:6:75","nodeType":"YulIdentifier","src":"15486:6:75"},"nativeSrc":"15486:13:75","nodeType":"YulFunctionCall","src":"15486:13:75"},"nativeSrc":"15486:13:75","nodeType":"YulExpressionStatement","src":"15486:13:75"},{"nativeSrc":"15508:9:75","nodeType":"YulAssignment","src":"15508:9:75","value":{"name":"_1","nativeSrc":"15515:2:75","nodeType":"YulIdentifier","src":"15515:2:75"},"variableNames":[{"name":"end","nativeSrc":"15508:3:75","nodeType":"YulIdentifier","src":"15508:3:75"}]}]},"name":"abi_encode_bytes","nativeSrc":"15312:211:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15338:5:75","nodeType":"YulTypedName","src":"15338:5:75","type":""},{"name":"pos","nativeSrc":"15345:3:75","nodeType":"YulTypedName","src":"15345:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15353:3:75","nodeType":"YulTypedName","src":"15353:3:75","type":""}],"src":"15312:211:75"},{"body":{"nativeSrc":"15721:150:75","nodeType":"YulBlock","src":"15721:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15744:3:75","nodeType":"YulIdentifier","src":"15744:3:75"},{"name":"value0","nativeSrc":"15749:6:75","nodeType":"YulIdentifier","src":"15749:6:75"},{"name":"value1","nativeSrc":"15757:6:75","nodeType":"YulIdentifier","src":"15757:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"15731:12:75","nodeType":"YulIdentifier","src":"15731:12:75"},"nativeSrc":"15731:33:75","nodeType":"YulFunctionCall","src":"15731:33:75"},"nativeSrc":"15731:33:75","nodeType":"YulExpressionStatement","src":"15731:33:75"},{"nativeSrc":"15773:26:75","nodeType":"YulVariableDeclaration","src":"15773:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"15787:3:75","nodeType":"YulIdentifier","src":"15787:3:75"},{"name":"value1","nativeSrc":"15792:6:75","nodeType":"YulIdentifier","src":"15792:6:75"}],"functionName":{"name":"add","nativeSrc":"15783:3:75","nodeType":"YulIdentifier","src":"15783:3:75"},"nativeSrc":"15783:16:75","nodeType":"YulFunctionCall","src":"15783:16:75"},"variables":[{"name":"_1","nativeSrc":"15777:2:75","nodeType":"YulTypedName","src":"15777:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"15815:2:75","nodeType":"YulIdentifier","src":"15815:2:75"},{"kind":"number","nativeSrc":"15819:1:75","nodeType":"YulLiteral","src":"15819:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15808:6:75","nodeType":"YulIdentifier","src":"15808:6:75"},"nativeSrc":"15808:13:75","nodeType":"YulFunctionCall","src":"15808:13:75"},"nativeSrc":"15808:13:75","nodeType":"YulExpressionStatement","src":"15808:13:75"},{"nativeSrc":"15830:35:75","nodeType":"YulAssignment","src":"15830:35:75","value":{"arguments":[{"name":"value2","nativeSrc":"15854:6:75","nodeType":"YulIdentifier","src":"15854:6:75"},{"name":"_1","nativeSrc":"15862:2:75","nodeType":"YulIdentifier","src":"15862:2:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"15837:16:75","nodeType":"YulIdentifier","src":"15837:16:75"},"nativeSrc":"15837:28:75","nodeType":"YulFunctionCall","src":"15837:28:75"},"variableNames":[{"name":"end","nativeSrc":"15830:3:75","nodeType":"YulIdentifier","src":"15830:3:75"}]}]},"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":"15528:343:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"15681:3:75","nodeType":"YulTypedName","src":"15681:3:75","type":""},{"name":"value2","nativeSrc":"15686:6:75","nodeType":"YulTypedName","src":"15686:6:75","type":""},{"name":"value1","nativeSrc":"15694:6:75","nodeType":"YulTypedName","src":"15694:6:75","type":""},{"name":"value0","nativeSrc":"15702:6:75","nodeType":"YulTypedName","src":"15702:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15713:3:75","nodeType":"YulTypedName","src":"15713:3:75","type":""}],"src":"15528:343:75"},{"body":{"nativeSrc":"16059:311:75","nodeType":"YulBlock","src":"16059:311:75","statements":[{"nativeSrc":"16069:27:75","nodeType":"YulAssignment","src":"16069:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16081:9:75","nodeType":"YulIdentifier","src":"16081:9:75"},{"kind":"number","nativeSrc":"16092:3:75","nodeType":"YulLiteral","src":"16092:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"16077:3:75","nodeType":"YulIdentifier","src":"16077:3:75"},"nativeSrc":"16077:19:75","nodeType":"YulFunctionCall","src":"16077:19:75"},"variableNames":[{"name":"tail","nativeSrc":"16069:4:75","nodeType":"YulIdentifier","src":"16069:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16112:9:75","nodeType":"YulIdentifier","src":"16112:9:75"},{"arguments":[{"name":"value0","nativeSrc":"16127:6:75","nodeType":"YulIdentifier","src":"16127:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16143:3:75","nodeType":"YulLiteral","src":"16143:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16148:1:75","nodeType":"YulLiteral","src":"16148:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16139:3:75","nodeType":"YulIdentifier","src":"16139:3:75"},"nativeSrc":"16139:11:75","nodeType":"YulFunctionCall","src":"16139:11:75"},{"kind":"number","nativeSrc":"16152:1:75","nodeType":"YulLiteral","src":"16152:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16135:3:75","nodeType":"YulIdentifier","src":"16135:3:75"},"nativeSrc":"16135:19:75","nodeType":"YulFunctionCall","src":"16135:19:75"}],"functionName":{"name":"and","nativeSrc":"16123:3:75","nodeType":"YulIdentifier","src":"16123:3:75"},"nativeSrc":"16123:32:75","nodeType":"YulFunctionCall","src":"16123:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16105:6:75","nodeType":"YulIdentifier","src":"16105:6:75"},"nativeSrc":"16105:51:75","nodeType":"YulFunctionCall","src":"16105:51:75"},"nativeSrc":"16105:51:75","nodeType":"YulExpressionStatement","src":"16105:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16176:9:75","nodeType":"YulIdentifier","src":"16176:9:75"},{"kind":"number","nativeSrc":"16187:2:75","nodeType":"YulLiteral","src":"16187:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16172:3:75","nodeType":"YulIdentifier","src":"16172:3:75"},"nativeSrc":"16172:18:75","nodeType":"YulFunctionCall","src":"16172:18:75"},{"arguments":[{"name":"value1","nativeSrc":"16196:6:75","nodeType":"YulIdentifier","src":"16196:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16212:3:75","nodeType":"YulLiteral","src":"16212:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16217:1:75","nodeType":"YulLiteral","src":"16217:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16208:3:75","nodeType":"YulIdentifier","src":"16208:3:75"},"nativeSrc":"16208:11:75","nodeType":"YulFunctionCall","src":"16208:11:75"},{"kind":"number","nativeSrc":"16221:1:75","nodeType":"YulLiteral","src":"16221:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16204:3:75","nodeType":"YulIdentifier","src":"16204:3:75"},"nativeSrc":"16204:19:75","nodeType":"YulFunctionCall","src":"16204:19:75"}],"functionName":{"name":"and","nativeSrc":"16192:3:75","nodeType":"YulIdentifier","src":"16192:3:75"},"nativeSrc":"16192:32:75","nodeType":"YulFunctionCall","src":"16192:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16165:6:75","nodeType":"YulIdentifier","src":"16165:6:75"},"nativeSrc":"16165:60:75","nodeType":"YulFunctionCall","src":"16165:60:75"},"nativeSrc":"16165:60:75","nodeType":"YulExpressionStatement","src":"16165:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16245:9:75","nodeType":"YulIdentifier","src":"16245:9:75"},{"kind":"number","nativeSrc":"16256:2:75","nodeType":"YulLiteral","src":"16256:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16241:3:75","nodeType":"YulIdentifier","src":"16241:3:75"},"nativeSrc":"16241:18:75","nodeType":"YulFunctionCall","src":"16241:18:75"},{"arguments":[{"name":"value2","nativeSrc":"16265:6:75","nodeType":"YulIdentifier","src":"16265:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16281:3:75","nodeType":"YulLiteral","src":"16281:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16286:1:75","nodeType":"YulLiteral","src":"16286:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16277:3:75","nodeType":"YulIdentifier","src":"16277:3:75"},"nativeSrc":"16277:11:75","nodeType":"YulFunctionCall","src":"16277:11:75"},{"kind":"number","nativeSrc":"16290:1:75","nodeType":"YulLiteral","src":"16290:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16273:3:75","nodeType":"YulIdentifier","src":"16273:3:75"},"nativeSrc":"16273:19:75","nodeType":"YulFunctionCall","src":"16273:19:75"}],"functionName":{"name":"and","nativeSrc":"16261:3:75","nodeType":"YulIdentifier","src":"16261:3:75"},"nativeSrc":"16261:32:75","nodeType":"YulFunctionCall","src":"16261:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16234:6:75","nodeType":"YulIdentifier","src":"16234:6:75"},"nativeSrc":"16234:60:75","nodeType":"YulFunctionCall","src":"16234:60:75"},"nativeSrc":"16234:60:75","nodeType":"YulExpressionStatement","src":"16234:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16314:9:75","nodeType":"YulIdentifier","src":"16314:9:75"},{"kind":"number","nativeSrc":"16325:2:75","nodeType":"YulLiteral","src":"16325:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16310:3:75","nodeType":"YulIdentifier","src":"16310:3:75"},"nativeSrc":"16310:18:75","nodeType":"YulFunctionCall","src":"16310:18:75"},{"arguments":[{"name":"value3","nativeSrc":"16334:6:75","nodeType":"YulIdentifier","src":"16334:6:75"},{"arguments":[{"kind":"number","nativeSrc":"16346:3:75","nodeType":"YulLiteral","src":"16346:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16351:10:75","nodeType":"YulLiteral","src":"16351:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"16342:3:75","nodeType":"YulIdentifier","src":"16342:3:75"},"nativeSrc":"16342:20:75","nodeType":"YulFunctionCall","src":"16342:20:75"}],"functionName":{"name":"and","nativeSrc":"16330:3:75","nodeType":"YulIdentifier","src":"16330:3:75"},"nativeSrc":"16330:33:75","nodeType":"YulFunctionCall","src":"16330:33:75"}],"functionName":{"name":"mstore","nativeSrc":"16303:6:75","nodeType":"YulIdentifier","src":"16303:6:75"},"nativeSrc":"16303:61:75","nodeType":"YulFunctionCall","src":"16303:61:75"},"nativeSrc":"16303:61:75","nodeType":"YulExpressionStatement","src":"16303:61:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_bytes4__to_t_address_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"15876:494:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16004:9:75","nodeType":"YulTypedName","src":"16004:9:75","type":""},{"name":"value3","nativeSrc":"16015:6:75","nodeType":"YulTypedName","src":"16015:6:75","type":""},{"name":"value2","nativeSrc":"16023:6:75","nodeType":"YulTypedName","src":"16023:6:75","type":""},{"name":"value1","nativeSrc":"16031:6:75","nodeType":"YulTypedName","src":"16031:6:75","type":""},{"name":"value0","nativeSrc":"16039:6:75","nodeType":"YulTypedName","src":"16039:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16050:4:75","nodeType":"YulTypedName","src":"16050:4:75","type":""}],"src":"15876:494:75"},{"body":{"nativeSrc":"16422:132:75","nodeType":"YulBlock","src":"16422:132:75","statements":[{"nativeSrc":"16432:58:75","nodeType":"YulAssignment","src":"16432:58:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"16447:1:75","nodeType":"YulIdentifier","src":"16447:1:75"},{"kind":"number","nativeSrc":"16450:14:75","nodeType":"YulLiteral","src":"16450:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16443:3:75","nodeType":"YulIdentifier","src":"16443:3:75"},"nativeSrc":"16443:22:75","nodeType":"YulFunctionCall","src":"16443:22:75"},{"arguments":[{"name":"y","nativeSrc":"16471:1:75","nodeType":"YulIdentifier","src":"16471:1:75"},{"kind":"number","nativeSrc":"16474:14:75","nodeType":"YulLiteral","src":"16474:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16467:3:75","nodeType":"YulIdentifier","src":"16467:3:75"},"nativeSrc":"16467:22:75","nodeType":"YulFunctionCall","src":"16467:22:75"}],"functionName":{"name":"add","nativeSrc":"16439:3:75","nodeType":"YulIdentifier","src":"16439:3:75"},"nativeSrc":"16439:51:75","nodeType":"YulFunctionCall","src":"16439:51:75"},"variableNames":[{"name":"sum","nativeSrc":"16432:3:75","nodeType":"YulIdentifier","src":"16432:3:75"}]},{"body":{"nativeSrc":"16526:22:75","nodeType":"YulBlock","src":"16526:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16528:16:75","nodeType":"YulIdentifier","src":"16528:16:75"},"nativeSrc":"16528:18:75","nodeType":"YulFunctionCall","src":"16528:18:75"},"nativeSrc":"16528:18:75","nodeType":"YulExpressionStatement","src":"16528:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"16505:3:75","nodeType":"YulIdentifier","src":"16505:3:75"},{"kind":"number","nativeSrc":"16510:14:75","nodeType":"YulLiteral","src":"16510:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16502:2:75","nodeType":"YulIdentifier","src":"16502:2:75"},"nativeSrc":"16502:23:75","nodeType":"YulFunctionCall","src":"16502:23:75"},"nativeSrc":"16499:49:75","nodeType":"YulIf","src":"16499:49:75"}]},"name":"checked_add_t_uint48","nativeSrc":"16375:179:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16405:1:75","nodeType":"YulTypedName","src":"16405:1:75","type":""},{"name":"y","nativeSrc":"16408:1:75","nodeType":"YulTypedName","src":"16408:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16414:3:75","nodeType":"YulTypedName","src":"16414:3:75","type":""}],"src":"16375:179:75"},{"body":{"nativeSrc":"16770:320:75","nodeType":"YulBlock","src":"16770:320:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16787:9:75","nodeType":"YulIdentifier","src":"16787:9:75"},{"arguments":[{"name":"value0","nativeSrc":"16802:6:75","nodeType":"YulIdentifier","src":"16802:6:75"},{"kind":"number","nativeSrc":"16810:14:75","nodeType":"YulLiteral","src":"16810:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16798:3:75","nodeType":"YulIdentifier","src":"16798:3:75"},"nativeSrc":"16798:27:75","nodeType":"YulFunctionCall","src":"16798:27:75"}],"functionName":{"name":"mstore","nativeSrc":"16780:6:75","nodeType":"YulIdentifier","src":"16780:6:75"},"nativeSrc":"16780:46:75","nodeType":"YulFunctionCall","src":"16780:46:75"},"nativeSrc":"16780:46:75","nodeType":"YulExpressionStatement","src":"16780:46:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16846:9:75","nodeType":"YulIdentifier","src":"16846:9:75"},{"kind":"number","nativeSrc":"16857:2:75","nodeType":"YulLiteral","src":"16857:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16842:3:75","nodeType":"YulIdentifier","src":"16842:3:75"},"nativeSrc":"16842:18:75","nodeType":"YulFunctionCall","src":"16842:18:75"},{"arguments":[{"name":"value1","nativeSrc":"16866:6:75","nodeType":"YulIdentifier","src":"16866:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16882:3:75","nodeType":"YulLiteral","src":"16882:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16887:1:75","nodeType":"YulLiteral","src":"16887:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16878:3:75","nodeType":"YulIdentifier","src":"16878:3:75"},"nativeSrc":"16878:11:75","nodeType":"YulFunctionCall","src":"16878:11:75"},{"kind":"number","nativeSrc":"16891:1:75","nodeType":"YulLiteral","src":"16891:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16874:3:75","nodeType":"YulIdentifier","src":"16874:3:75"},"nativeSrc":"16874:19:75","nodeType":"YulFunctionCall","src":"16874:19:75"}],"functionName":{"name":"and","nativeSrc":"16862:3:75","nodeType":"YulIdentifier","src":"16862:3:75"},"nativeSrc":"16862:32:75","nodeType":"YulFunctionCall","src":"16862:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16835:6:75","nodeType":"YulIdentifier","src":"16835:6:75"},"nativeSrc":"16835:60:75","nodeType":"YulFunctionCall","src":"16835:60:75"},"nativeSrc":"16835:60:75","nodeType":"YulExpressionStatement","src":"16835:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16915:9:75","nodeType":"YulIdentifier","src":"16915:9:75"},{"kind":"number","nativeSrc":"16926:2:75","nodeType":"YulLiteral","src":"16926:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16911:3:75","nodeType":"YulIdentifier","src":"16911:3:75"},"nativeSrc":"16911:18:75","nodeType":"YulFunctionCall","src":"16911:18:75"},{"arguments":[{"name":"value2","nativeSrc":"16935:6:75","nodeType":"YulIdentifier","src":"16935:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16951:3:75","nodeType":"YulLiteral","src":"16951:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16956:1:75","nodeType":"YulLiteral","src":"16956:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16947:3:75","nodeType":"YulIdentifier","src":"16947:3:75"},"nativeSrc":"16947:11:75","nodeType":"YulFunctionCall","src":"16947:11:75"},{"kind":"number","nativeSrc":"16960:1:75","nodeType":"YulLiteral","src":"16960:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16943:3:75","nodeType":"YulIdentifier","src":"16943:3:75"},"nativeSrc":"16943:19:75","nodeType":"YulFunctionCall","src":"16943:19:75"}],"functionName":{"name":"and","nativeSrc":"16931:3:75","nodeType":"YulIdentifier","src":"16931:3:75"},"nativeSrc":"16931:32:75","nodeType":"YulFunctionCall","src":"16931:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16904:6:75","nodeType":"YulIdentifier","src":"16904:6:75"},"nativeSrc":"16904:60:75","nodeType":"YulFunctionCall","src":"16904:60:75"},"nativeSrc":"16904:60:75","nodeType":"YulExpressionStatement","src":"16904:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16984:9:75","nodeType":"YulIdentifier","src":"16984:9:75"},{"kind":"number","nativeSrc":"16995:2:75","nodeType":"YulLiteral","src":"16995:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16980:3:75","nodeType":"YulIdentifier","src":"16980:3:75"},"nativeSrc":"16980:18:75","nodeType":"YulFunctionCall","src":"16980:18:75"},{"kind":"number","nativeSrc":"17000:3:75","nodeType":"YulLiteral","src":"17000:3:75","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"16973:6:75","nodeType":"YulIdentifier","src":"16973:6:75"},"nativeSrc":"16973:31:75","nodeType":"YulFunctionCall","src":"16973:31:75"},"nativeSrc":"16973:31:75","nodeType":"YulExpressionStatement","src":"16973:31:75"},{"nativeSrc":"17013:71:75","nodeType":"YulAssignment","src":"17013:71:75","value":{"arguments":[{"name":"value3","nativeSrc":"17048:6:75","nodeType":"YulIdentifier","src":"17048:6:75"},{"name":"value4","nativeSrc":"17056:6:75","nodeType":"YulIdentifier","src":"17056:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"17068:9:75","nodeType":"YulIdentifier","src":"17068:9:75"},{"kind":"number","nativeSrc":"17079:3:75","nodeType":"YulLiteral","src":"17079:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"17064:3:75","nodeType":"YulIdentifier","src":"17064:3:75"},"nativeSrc":"17064:19:75","nodeType":"YulFunctionCall","src":"17064:19:75"}],"functionName":{"name":"abi_encode_string_calldata","nativeSrc":"17021:26:75","nodeType":"YulIdentifier","src":"17021:26:75"},"nativeSrc":"17021:63:75","nodeType":"YulFunctionCall","src":"17021:63:75"},"variableNames":[{"name":"tail","nativeSrc":"17013:4:75","nodeType":"YulIdentifier","src":"17013:4:75"}]}]},"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":"16559:531:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16707:9:75","nodeType":"YulTypedName","src":"16707:9:75","type":""},{"name":"value4","nativeSrc":"16718:6:75","nodeType":"YulTypedName","src":"16718:6:75","type":""},{"name":"value3","nativeSrc":"16726:6:75","nodeType":"YulTypedName","src":"16726:6:75","type":""},{"name":"value2","nativeSrc":"16734:6:75","nodeType":"YulTypedName","src":"16734:6:75","type":""},{"name":"value1","nativeSrc":"16742:6:75","nodeType":"YulTypedName","src":"16742:6:75","type":""},{"name":"value0","nativeSrc":"16750:6:75","nodeType":"YulTypedName","src":"16750:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16761:4:75","nodeType":"YulTypedName","src":"16761:4:75","type":""}],"src":"16559:531:75"},{"body":{"nativeSrc":"17222:170:75","nodeType":"YulBlock","src":"17222:170:75","statements":[{"nativeSrc":"17232:26:75","nodeType":"YulAssignment","src":"17232:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17244:9:75","nodeType":"YulIdentifier","src":"17244:9:75"},{"kind":"number","nativeSrc":"17255:2:75","nodeType":"YulLiteral","src":"17255:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17240:3:75","nodeType":"YulIdentifier","src":"17240:3:75"},"nativeSrc":"17240:18:75","nodeType":"YulFunctionCall","src":"17240:18:75"},"variableNames":[{"name":"tail","nativeSrc":"17232:4:75","nodeType":"YulIdentifier","src":"17232:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17274:9:75","nodeType":"YulIdentifier","src":"17274:9:75"},{"arguments":[{"name":"value0","nativeSrc":"17289:6:75","nodeType":"YulIdentifier","src":"17289:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17305:3:75","nodeType":"YulLiteral","src":"17305:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"17310:1:75","nodeType":"YulLiteral","src":"17310:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17301:3:75","nodeType":"YulIdentifier","src":"17301:3:75"},"nativeSrc":"17301:11:75","nodeType":"YulFunctionCall","src":"17301:11:75"},{"kind":"number","nativeSrc":"17314:1:75","nodeType":"YulLiteral","src":"17314:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17297:3:75","nodeType":"YulIdentifier","src":"17297:3:75"},"nativeSrc":"17297:19:75","nodeType":"YulFunctionCall","src":"17297:19:75"}],"functionName":{"name":"and","nativeSrc":"17285:3:75","nodeType":"YulIdentifier","src":"17285:3:75"},"nativeSrc":"17285:32:75","nodeType":"YulFunctionCall","src":"17285:32:75"}],"functionName":{"name":"mstore","nativeSrc":"17267:6:75","nodeType":"YulIdentifier","src":"17267:6:75"},"nativeSrc":"17267:51:75","nodeType":"YulFunctionCall","src":"17267:51:75"},"nativeSrc":"17267:51:75","nodeType":"YulExpressionStatement","src":"17267:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17338:9:75","nodeType":"YulIdentifier","src":"17338:9:75"},{"kind":"number","nativeSrc":"17349:2:75","nodeType":"YulLiteral","src":"17349:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17334:3:75","nodeType":"YulIdentifier","src":"17334:3:75"},"nativeSrc":"17334:18:75","nodeType":"YulFunctionCall","src":"17334:18:75"},{"arguments":[{"name":"value1","nativeSrc":"17358:6:75","nodeType":"YulIdentifier","src":"17358:6:75"},{"kind":"number","nativeSrc":"17366:18:75","nodeType":"YulLiteral","src":"17366:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"17354:3:75","nodeType":"YulIdentifier","src":"17354:3:75"},"nativeSrc":"17354:31:75","nodeType":"YulFunctionCall","src":"17354:31:75"}],"functionName":{"name":"mstore","nativeSrc":"17327:6:75","nodeType":"YulIdentifier","src":"17327:6:75"},"nativeSrc":"17327:59:75","nodeType":"YulFunctionCall","src":"17327:59:75"},"nativeSrc":"17327:59:75","nodeType":"YulExpressionStatement","src":"17327:59:75"}]},"name":"abi_encode_tuple_t_address_t_uint64__to_t_address_t_uint64__fromStack_reversed","nativeSrc":"17095:297:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17183:9:75","nodeType":"YulTypedName","src":"17183:9:75","type":""},{"name":"value1","nativeSrc":"17194:6:75","nodeType":"YulTypedName","src":"17194:6:75","type":""},{"name":"value0","nativeSrc":"17202:6:75","nodeType":"YulTypedName","src":"17202:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17213:4:75","nodeType":"YulTypedName","src":"17213:4:75","type":""}],"src":"17095:297:75"},{"body":{"nativeSrc":"17496:103:75","nodeType":"YulBlock","src":"17496:103:75","statements":[{"nativeSrc":"17506:26:75","nodeType":"YulAssignment","src":"17506:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17518:9:75","nodeType":"YulIdentifier","src":"17518:9:75"},{"kind":"number","nativeSrc":"17529:2:75","nodeType":"YulLiteral","src":"17529:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17514:3:75","nodeType":"YulIdentifier","src":"17514:3:75"},"nativeSrc":"17514:18:75","nodeType":"YulFunctionCall","src":"17514:18:75"},"variableNames":[{"name":"tail","nativeSrc":"17506:4:75","nodeType":"YulIdentifier","src":"17506:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17548:9:75","nodeType":"YulIdentifier","src":"17548:9:75"},{"arguments":[{"name":"value0","nativeSrc":"17563:6:75","nodeType":"YulIdentifier","src":"17563:6:75"},{"arguments":[{"kind":"number","nativeSrc":"17575:3:75","nodeType":"YulLiteral","src":"17575:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17580:10:75","nodeType":"YulLiteral","src":"17580:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17571:3:75","nodeType":"YulIdentifier","src":"17571:3:75"},"nativeSrc":"17571:20:75","nodeType":"YulFunctionCall","src":"17571:20:75"}],"functionName":{"name":"and","nativeSrc":"17559:3:75","nodeType":"YulIdentifier","src":"17559:3:75"},"nativeSrc":"17559:33:75","nodeType":"YulFunctionCall","src":"17559:33:75"}],"functionName":{"name":"mstore","nativeSrc":"17541:6:75","nodeType":"YulIdentifier","src":"17541:6:75"},"nativeSrc":"17541:52:75","nodeType":"YulFunctionCall","src":"17541:52:75"},"nativeSrc":"17541:52:75","nodeType":"YulExpressionStatement","src":"17541:52:75"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"17397:202:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17465:9:75","nodeType":"YulTypedName","src":"17465:9:75","type":""},{"name":"value0","nativeSrc":"17476:6:75","nodeType":"YulTypedName","src":"17476:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17487:4:75","nodeType":"YulTypedName","src":"17487:4:75","type":""}],"src":"17397:202:75"},{"body":{"nativeSrc":"17704:238:75","nodeType":"YulBlock","src":"17704:238:75","statements":[{"nativeSrc":"17714:29:75","nodeType":"YulVariableDeclaration","src":"17714:29:75","value":{"arguments":[{"name":"array","nativeSrc":"17737:5:75","nodeType":"YulIdentifier","src":"17737:5:75"}],"functionName":{"name":"calldataload","nativeSrc":"17724:12:75","nodeType":"YulIdentifier","src":"17724:12:75"},"nativeSrc":"17724:19:75","nodeType":"YulFunctionCall","src":"17724:19:75"},"variables":[{"name":"_1","nativeSrc":"17718:2:75","nodeType":"YulTypedName","src":"17718:2:75","type":""}]},{"nativeSrc":"17752:38:75","nodeType":"YulAssignment","src":"17752:38:75","value":{"arguments":[{"name":"_1","nativeSrc":"17765:2:75","nodeType":"YulIdentifier","src":"17765:2:75"},{"arguments":[{"kind":"number","nativeSrc":"17773:3:75","nodeType":"YulLiteral","src":"17773:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17778:10:75","nodeType":"YulLiteral","src":"17778:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17769:3:75","nodeType":"YulIdentifier","src":"17769:3:75"},"nativeSrc":"17769:20:75","nodeType":"YulFunctionCall","src":"17769:20:75"}],"functionName":{"name":"and","nativeSrc":"17761:3:75","nodeType":"YulIdentifier","src":"17761:3:75"},"nativeSrc":"17761:29:75","nodeType":"YulFunctionCall","src":"17761:29:75"},"variableNames":[{"name":"value","nativeSrc":"17752:5:75","nodeType":"YulIdentifier","src":"17752:5:75"}]},{"body":{"nativeSrc":"17821:115:75","nodeType":"YulBlock","src":"17821:115:75","statements":[{"nativeSrc":"17835:91:75","nodeType":"YulAssignment","src":"17835:91:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"17852:2:75","nodeType":"YulIdentifier","src":"17852:2:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17864:1:75","nodeType":"YulLiteral","src":"17864:1:75","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"17871:1:75","nodeType":"YulLiteral","src":"17871:1:75","type":"","value":"4"},{"name":"len","nativeSrc":"17874:3:75","nodeType":"YulIdentifier","src":"17874:3:75"}],"functionName":{"name":"sub","nativeSrc":"17867:3:75","nodeType":"YulIdentifier","src":"17867:3:75"},"nativeSrc":"17867:11:75","nodeType":"YulFunctionCall","src":"17867:11:75"}],"functionName":{"name":"shl","nativeSrc":"17860:3:75","nodeType":"YulIdentifier","src":"17860:3:75"},"nativeSrc":"17860:19:75","nodeType":"YulFunctionCall","src":"17860:19:75"},{"arguments":[{"kind":"number","nativeSrc":"17885:3:75","nodeType":"YulLiteral","src":"17885:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17890:10:75","nodeType":"YulLiteral","src":"17890:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17881:3:75","nodeType":"YulIdentifier","src":"17881:3:75"},"nativeSrc":"17881:20:75","nodeType":"YulFunctionCall","src":"17881:20:75"}],"functionName":{"name":"shl","nativeSrc":"17856:3:75","nodeType":"YulIdentifier","src":"17856:3:75"},"nativeSrc":"17856:46:75","nodeType":"YulFunctionCall","src":"17856:46:75"}],"functionName":{"name":"and","nativeSrc":"17848:3:75","nodeType":"YulIdentifier","src":"17848:3:75"},"nativeSrc":"17848:55:75","nodeType":"YulFunctionCall","src":"17848:55:75"},{"arguments":[{"kind":"number","nativeSrc":"17909:3:75","nodeType":"YulLiteral","src":"17909:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17914:10:75","nodeType":"YulLiteral","src":"17914:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"17905:3:75","nodeType":"YulIdentifier","src":"17905:3:75"},"nativeSrc":"17905:20:75","nodeType":"YulFunctionCall","src":"17905:20:75"}],"functionName":{"name":"and","nativeSrc":"17844:3:75","nodeType":"YulIdentifier","src":"17844:3:75"},"nativeSrc":"17844:82:75","nodeType":"YulFunctionCall","src":"17844:82:75"},"variableNames":[{"name":"value","nativeSrc":"17835:5:75","nodeType":"YulIdentifier","src":"17835:5:75"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"17805:3:75","nodeType":"YulIdentifier","src":"17805:3:75"},{"kind":"number","nativeSrc":"17810:1:75","nodeType":"YulLiteral","src":"17810:1:75","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"17802:2:75","nodeType":"YulIdentifier","src":"17802:2:75"},"nativeSrc":"17802:10:75","nodeType":"YulFunctionCall","src":"17802:10:75"},"nativeSrc":"17799:137:75","nodeType":"YulIf","src":"17799:137:75"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"17604:338:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"17679:5:75","nodeType":"YulTypedName","src":"17679:5:75","type":""},{"name":"len","nativeSrc":"17686:3:75","nodeType":"YulTypedName","src":"17686:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"17694:5:75","nodeType":"YulTypedName","src":"17694:5:75","type":""}],"src":"17604:338:75"},{"body":{"nativeSrc":"18074:172:75","nodeType":"YulBlock","src":"18074:172:75","statements":[{"nativeSrc":"18084:26:75","nodeType":"YulAssignment","src":"18084:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18096:9:75","nodeType":"YulIdentifier","src":"18096:9:75"},{"kind":"number","nativeSrc":"18107:2:75","nodeType":"YulLiteral","src":"18107:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18092:3:75","nodeType":"YulIdentifier","src":"18092:3:75"},"nativeSrc":"18092:18:75","nodeType":"YulFunctionCall","src":"18092:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18084:4:75","nodeType":"YulIdentifier","src":"18084:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18126:9:75","nodeType":"YulIdentifier","src":"18126:9:75"},{"arguments":[{"name":"value0","nativeSrc":"18141:6:75","nodeType":"YulIdentifier","src":"18141:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18157:3:75","nodeType":"YulLiteral","src":"18157:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"18162:1:75","nodeType":"YulLiteral","src":"18162:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18153:3:75","nodeType":"YulIdentifier","src":"18153:3:75"},"nativeSrc":"18153:11:75","nodeType":"YulFunctionCall","src":"18153:11:75"},{"kind":"number","nativeSrc":"18166:1:75","nodeType":"YulLiteral","src":"18166:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18149:3:75","nodeType":"YulIdentifier","src":"18149:3:75"},"nativeSrc":"18149:19:75","nodeType":"YulFunctionCall","src":"18149:19:75"}],"functionName":{"name":"and","nativeSrc":"18137:3:75","nodeType":"YulIdentifier","src":"18137:3:75"},"nativeSrc":"18137:32:75","nodeType":"YulFunctionCall","src":"18137:32:75"}],"functionName":{"name":"mstore","nativeSrc":"18119:6:75","nodeType":"YulIdentifier","src":"18119:6:75"},"nativeSrc":"18119:51:75","nodeType":"YulFunctionCall","src":"18119:51:75"},"nativeSrc":"18119:51:75","nodeType":"YulExpressionStatement","src":"18119:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18190:9:75","nodeType":"YulIdentifier","src":"18190:9:75"},{"kind":"number","nativeSrc":"18201:2:75","nodeType":"YulLiteral","src":"18201:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18186:3:75","nodeType":"YulIdentifier","src":"18186:3:75"},"nativeSrc":"18186:18:75","nodeType":"YulFunctionCall","src":"18186:18:75"},{"arguments":[{"name":"value1","nativeSrc":"18210:6:75","nodeType":"YulIdentifier","src":"18210:6:75"},{"arguments":[{"kind":"number","nativeSrc":"18222:3:75","nodeType":"YulLiteral","src":"18222:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"18227:10:75","nodeType":"YulLiteral","src":"18227:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"18218:3:75","nodeType":"YulIdentifier","src":"18218:3:75"},"nativeSrc":"18218:20:75","nodeType":"YulFunctionCall","src":"18218:20:75"}],"functionName":{"name":"and","nativeSrc":"18206:3:75","nodeType":"YulIdentifier","src":"18206:3:75"},"nativeSrc":"18206:33:75","nodeType":"YulFunctionCall","src":"18206:33:75"}],"functionName":{"name":"mstore","nativeSrc":"18179:6:75","nodeType":"YulIdentifier","src":"18179:6:75"},"nativeSrc":"18179:61:75","nodeType":"YulFunctionCall","src":"18179:61:75"},"nativeSrc":"18179:61:75","nodeType":"YulExpressionStatement","src":"18179:61:75"}]},"name":"abi_encode_tuple_t_address_t_bytes4__to_t_address_t_bytes4__fromStack_reversed","nativeSrc":"17947:299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18035:9:75","nodeType":"YulTypedName","src":"18035:9:75","type":""},{"name":"value1","nativeSrc":"18046:6:75","nodeType":"YulTypedName","src":"18046:6:75","type":""},{"name":"value0","nativeSrc":"18054:6:75","nodeType":"YulTypedName","src":"18054:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18065:4:75","nodeType":"YulTypedName","src":"18065:4:75","type":""}],"src":"17947:299:75"},{"body":{"nativeSrc":"18380:119:75","nodeType":"YulBlock","src":"18380:119:75","statements":[{"nativeSrc":"18390:26:75","nodeType":"YulAssignment","src":"18390:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18402:9:75","nodeType":"YulIdentifier","src":"18402:9:75"},{"kind":"number","nativeSrc":"18413:2:75","nodeType":"YulLiteral","src":"18413:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18398:3:75","nodeType":"YulIdentifier","src":"18398:3:75"},"nativeSrc":"18398:18:75","nodeType":"YulFunctionCall","src":"18398:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18390:4:75","nodeType":"YulIdentifier","src":"18390:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18432:9:75","nodeType":"YulIdentifier","src":"18432:9:75"},{"name":"value0","nativeSrc":"18443:6:75","nodeType":"YulIdentifier","src":"18443:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18425:6:75","nodeType":"YulIdentifier","src":"18425:6:75"},"nativeSrc":"18425:25:75","nodeType":"YulFunctionCall","src":"18425:25:75"},"nativeSrc":"18425:25:75","nodeType":"YulExpressionStatement","src":"18425:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18470:9:75","nodeType":"YulIdentifier","src":"18470:9:75"},{"kind":"number","nativeSrc":"18481:2:75","nodeType":"YulLiteral","src":"18481:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18466:3:75","nodeType":"YulIdentifier","src":"18466:3:75"},"nativeSrc":"18466:18:75","nodeType":"YulFunctionCall","src":"18466:18:75"},{"name":"value1","nativeSrc":"18486:6:75","nodeType":"YulIdentifier","src":"18486:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18459:6:75","nodeType":"YulIdentifier","src":"18459:6:75"},"nativeSrc":"18459:34:75","nodeType":"YulFunctionCall","src":"18459:34:75"},"nativeSrc":"18459:34:75","nodeType":"YulExpressionStatement","src":"18459:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"18251:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18341:9:75","nodeType":"YulTypedName","src":"18341:9:75","type":""},{"name":"value1","nativeSrc":"18352:6:75","nodeType":"YulTypedName","src":"18352:6:75","type":""},{"name":"value0","nativeSrc":"18360:6:75","nodeType":"YulTypedName","src":"18360:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18371:4:75","nodeType":"YulTypedName","src":"18371:4:75","type":""}],"src":"18251:248:75"},{"body":{"nativeSrc":"18641:52:75","nodeType":"YulBlock","src":"18641:52:75","statements":[{"nativeSrc":"18651:36:75","nodeType":"YulAssignment","src":"18651:36:75","value":{"arguments":[{"name":"value0","nativeSrc":"18675:6:75","nodeType":"YulIdentifier","src":"18675:6:75"},{"name":"pos","nativeSrc":"18683:3:75","nodeType":"YulIdentifier","src":"18683:3:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"18658:16:75","nodeType":"YulIdentifier","src":"18658:16:75"},"nativeSrc":"18658:29:75","nodeType":"YulFunctionCall","src":"18658:29:75"},"variableNames":[{"name":"end","nativeSrc":"18651:3:75","nodeType":"YulIdentifier","src":"18651:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"18504:189:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"18617:3:75","nodeType":"YulTypedName","src":"18617:3:75","type":""},{"name":"value0","nativeSrc":"18622:6:75","nodeType":"YulTypedName","src":"18622:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"18633:3:75","nodeType":"YulTypedName","src":"18633:3:75","type":""}],"src":"18504:189:75"},{"body":{"nativeSrc":"18845:216:75","nodeType":"YulBlock","src":"18845:216:75","statements":[{"nativeSrc":"18855:26:75","nodeType":"YulAssignment","src":"18855:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18867:9:75","nodeType":"YulIdentifier","src":"18867:9:75"},{"kind":"number","nativeSrc":"18878:2:75","nodeType":"YulLiteral","src":"18878:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18863:3:75","nodeType":"YulIdentifier","src":"18863:3:75"},"nativeSrc":"18863:18:75","nodeType":"YulFunctionCall","src":"18863:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18855:4:75","nodeType":"YulIdentifier","src":"18855:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18897:9:75","nodeType":"YulIdentifier","src":"18897:9:75"},{"arguments":[{"name":"value0","nativeSrc":"18912:6:75","nodeType":"YulIdentifier","src":"18912:6:75"},{"kind":"number","nativeSrc":"18920:10:75","nodeType":"YulLiteral","src":"18920:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"18908:3:75","nodeType":"YulIdentifier","src":"18908:3:75"},"nativeSrc":"18908:23:75","nodeType":"YulFunctionCall","src":"18908:23:75"}],"functionName":{"name":"mstore","nativeSrc":"18890:6:75","nodeType":"YulIdentifier","src":"18890:6:75"},"nativeSrc":"18890:42:75","nodeType":"YulFunctionCall","src":"18890:42:75"},"nativeSrc":"18890:42:75","nodeType":"YulExpressionStatement","src":"18890:42:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18952:9:75","nodeType":"YulIdentifier","src":"18952:9:75"},{"kind":"number","nativeSrc":"18963:2:75","nodeType":"YulLiteral","src":"18963:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18948:3:75","nodeType":"YulIdentifier","src":"18948:3:75"},"nativeSrc":"18948:18:75","nodeType":"YulFunctionCall","src":"18948:18:75"},{"arguments":[{"name":"value1","nativeSrc":"18972:6:75","nodeType":"YulIdentifier","src":"18972:6:75"},{"kind":"number","nativeSrc":"18980:14:75","nodeType":"YulLiteral","src":"18980:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"18968:3:75","nodeType":"YulIdentifier","src":"18968:3:75"},"nativeSrc":"18968:27:75","nodeType":"YulFunctionCall","src":"18968:27:75"}],"functionName":{"name":"mstore","nativeSrc":"18941:6:75","nodeType":"YulIdentifier","src":"18941:6:75"},"nativeSrc":"18941:55:75","nodeType":"YulFunctionCall","src":"18941:55:75"},"nativeSrc":"18941:55:75","nodeType":"YulExpressionStatement","src":"18941:55:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19016:9:75","nodeType":"YulIdentifier","src":"19016:9:75"},{"kind":"number","nativeSrc":"19027:2:75","nodeType":"YulLiteral","src":"19027:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19012:3:75","nodeType":"YulIdentifier","src":"19012:3:75"},"nativeSrc":"19012:18:75","nodeType":"YulFunctionCall","src":"19012:18:75"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"19046:6:75","nodeType":"YulIdentifier","src":"19046:6:75"}],"functionName":{"name":"iszero","nativeSrc":"19039:6:75","nodeType":"YulIdentifier","src":"19039:6:75"},"nativeSrc":"19039:14:75","nodeType":"YulFunctionCall","src":"19039:14:75"}],"functionName":{"name":"iszero","nativeSrc":"19032:6:75","nodeType":"YulIdentifier","src":"19032:6:75"},"nativeSrc":"19032:22:75","nodeType":"YulFunctionCall","src":"19032:22:75"}],"functionName":{"name":"mstore","nativeSrc":"19005:6:75","nodeType":"YulIdentifier","src":"19005:6:75"},"nativeSrc":"19005:50:75","nodeType":"YulFunctionCall","src":"19005:50:75"},"nativeSrc":"19005:50:75","nodeType":"YulExpressionStatement","src":"19005:50:75"}]},"name":"abi_encode_tuple_t_uint32_t_uint48_t_bool__to_t_uint32_t_uint48_t_bool__fromStack_reversed","nativeSrc":"18698:363:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18798:9:75","nodeType":"YulTypedName","src":"18798:9:75","type":""},{"name":"value2","nativeSrc":"18809:6:75","nodeType":"YulTypedName","src":"18809:6:75","type":""},{"name":"value1","nativeSrc":"18817:6:75","nodeType":"YulTypedName","src":"18817:6:75","type":""},{"name":"value0","nativeSrc":"18825:6:75","nodeType":"YulTypedName","src":"18825:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18836:4:75","nodeType":"YulTypedName","src":"18836:4:75","type":""}],"src":"18698:363:75"},{"body":{"nativeSrc":"19191:157:75","nodeType":"YulBlock","src":"19191:157:75","statements":[{"nativeSrc":"19201:26:75","nodeType":"YulAssignment","src":"19201:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19213:9:75","nodeType":"YulIdentifier","src":"19213:9:75"},{"kind":"number","nativeSrc":"19224:2:75","nodeType":"YulLiteral","src":"19224:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19209:3:75","nodeType":"YulIdentifier","src":"19209:3:75"},"nativeSrc":"19209:18:75","nodeType":"YulFunctionCall","src":"19209:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19201:4:75","nodeType":"YulIdentifier","src":"19201:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19243:9:75","nodeType":"YulIdentifier","src":"19243:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19258:6:75","nodeType":"YulIdentifier","src":"19258:6:75"},{"kind":"number","nativeSrc":"19266:10:75","nodeType":"YulLiteral","src":"19266:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"19254:3:75","nodeType":"YulIdentifier","src":"19254:3:75"},"nativeSrc":"19254:23:75","nodeType":"YulFunctionCall","src":"19254:23:75"}],"functionName":{"name":"mstore","nativeSrc":"19236:6:75","nodeType":"YulIdentifier","src":"19236:6:75"},"nativeSrc":"19236:42:75","nodeType":"YulFunctionCall","src":"19236:42:75"},"nativeSrc":"19236:42:75","nodeType":"YulExpressionStatement","src":"19236:42:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19298:9:75","nodeType":"YulIdentifier","src":"19298:9:75"},{"kind":"number","nativeSrc":"19309:2:75","nodeType":"YulLiteral","src":"19309:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19294:3:75","nodeType":"YulIdentifier","src":"19294:3:75"},"nativeSrc":"19294:18:75","nodeType":"YulFunctionCall","src":"19294:18:75"},{"arguments":[{"name":"value1","nativeSrc":"19318:6:75","nodeType":"YulIdentifier","src":"19318:6:75"},{"kind":"number","nativeSrc":"19326:14:75","nodeType":"YulLiteral","src":"19326:14:75","type":"","value":"0xffffffffffff"}],"functionName":{"name":"and","nativeSrc":"19314:3:75","nodeType":"YulIdentifier","src":"19314:3:75"},"nativeSrc":"19314:27:75","nodeType":"YulFunctionCall","src":"19314:27:75"}],"functionName":{"name":"mstore","nativeSrc":"19287:6:75","nodeType":"YulIdentifier","src":"19287:6:75"},"nativeSrc":"19287:55:75","nodeType":"YulFunctionCall","src":"19287:55:75"},"nativeSrc":"19287:55:75","nodeType":"YulExpressionStatement","src":"19287:55:75"}]},"name":"abi_encode_tuple_t_uint32_t_uint48__to_t_uint32_t_uint48__fromStack_reversed","nativeSrc":"19066:282:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19152:9:75","nodeType":"YulTypedName","src":"19152:9:75","type":""},{"name":"value1","nativeSrc":"19163:6:75","nodeType":"YulTypedName","src":"19163:6:75","type":""},{"name":"value0","nativeSrc":"19171:6:75","nodeType":"YulTypedName","src":"19171:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19182:4:75","nodeType":"YulTypedName","src":"19182:4:75","type":""}],"src":"19066:282:75"},{"body":{"nativeSrc":"19431:177:75","nodeType":"YulBlock","src":"19431:177:75","statements":[{"body":{"nativeSrc":"19477:16:75","nodeType":"YulBlock","src":"19477:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19486:1:75","nodeType":"YulLiteral","src":"19486:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19489:1:75","nodeType":"YulLiteral","src":"19489:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19479:6:75","nodeType":"YulIdentifier","src":"19479:6:75"},"nativeSrc":"19479:12:75","nodeType":"YulFunctionCall","src":"19479:12:75"},"nativeSrc":"19479:12:75","nodeType":"YulExpressionStatement","src":"19479:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"19452:7:75","nodeType":"YulIdentifier","src":"19452:7:75"},{"name":"headStart","nativeSrc":"19461:9:75","nodeType":"YulIdentifier","src":"19461:9:75"}],"functionName":{"name":"sub","nativeSrc":"19448:3:75","nodeType":"YulIdentifier","src":"19448:3:75"},"nativeSrc":"19448:23:75","nodeType":"YulFunctionCall","src":"19448:23:75"},{"kind":"number","nativeSrc":"19473:2:75","nodeType":"YulLiteral","src":"19473:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"19444:3:75","nodeType":"YulIdentifier","src":"19444:3:75"},"nativeSrc":"19444:32:75","nodeType":"YulFunctionCall","src":"19444:32:75"},"nativeSrc":"19441:52:75","nodeType":"YulIf","src":"19441:52:75"},{"nativeSrc":"19502:36:75","nodeType":"YulVariableDeclaration","src":"19502:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19528:9:75","nodeType":"YulIdentifier","src":"19528:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"19515:12:75","nodeType":"YulIdentifier","src":"19515:12:75"},"nativeSrc":"19515:23:75","nodeType":"YulFunctionCall","src":"19515:23:75"},"variables":[{"name":"value","nativeSrc":"19506:5:75","nodeType":"YulTypedName","src":"19506:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"19572:5:75","nodeType":"YulIdentifier","src":"19572:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"19547:24:75","nodeType":"YulIdentifier","src":"19547:24:75"},"nativeSrc":"19547:31:75","nodeType":"YulFunctionCall","src":"19547:31:75"},"nativeSrc":"19547:31:75","nodeType":"YulExpressionStatement","src":"19547:31:75"},{"nativeSrc":"19587:15:75","nodeType":"YulAssignment","src":"19587:15:75","value":{"name":"value","nativeSrc":"19597:5:75","nodeType":"YulIdentifier","src":"19597:5:75"},"variableNames":[{"name":"value0","nativeSrc":"19587:6:75","nodeType":"YulIdentifier","src":"19587:6:75"}]}]},"name":"abi_decode_tuple_t_address_payable","nativeSrc":"19353:255:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19397:9:75","nodeType":"YulTypedName","src":"19397:9:75","type":""},{"name":"dataEnd","nativeSrc":"19408:7:75","nodeType":"YulTypedName","src":"19408:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"19420:6:75","nodeType":"YulTypedName","src":"19420:6:75","type":""}],"src":"19353:255:75"},{"body":{"nativeSrc":"19661:122:75","nodeType":"YulBlock","src":"19661:122:75","statements":[{"nativeSrc":"19671:51:75","nodeType":"YulAssignment","src":"19671:51:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"19687:1:75","nodeType":"YulIdentifier","src":"19687:1:75"},{"kind":"number","nativeSrc":"19690:10:75","nodeType":"YulLiteral","src":"19690:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"19683:3:75","nodeType":"YulIdentifier","src":"19683:3:75"},"nativeSrc":"19683:18:75","nodeType":"YulFunctionCall","src":"19683:18:75"},{"arguments":[{"name":"y","nativeSrc":"19707:1:75","nodeType":"YulIdentifier","src":"19707:1:75"},{"kind":"number","nativeSrc":"19710:10:75","nodeType":"YulLiteral","src":"19710:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"19703:3:75","nodeType":"YulIdentifier","src":"19703:3:75"},"nativeSrc":"19703:18:75","nodeType":"YulFunctionCall","src":"19703:18:75"}],"functionName":{"name":"sub","nativeSrc":"19679:3:75","nodeType":"YulIdentifier","src":"19679:3:75"},"nativeSrc":"19679:43:75","nodeType":"YulFunctionCall","src":"19679:43:75"},"variableNames":[{"name":"diff","nativeSrc":"19671:4:75","nodeType":"YulIdentifier","src":"19671:4:75"}]},{"body":{"nativeSrc":"19755:22:75","nodeType":"YulBlock","src":"19755:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19757:16:75","nodeType":"YulIdentifier","src":"19757:16:75"},"nativeSrc":"19757:18:75","nodeType":"YulFunctionCall","src":"19757:18:75"},"nativeSrc":"19757:18:75","nodeType":"YulExpressionStatement","src":"19757:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"19737:4:75","nodeType":"YulIdentifier","src":"19737:4:75"},{"kind":"number","nativeSrc":"19743:10:75","nodeType":"YulLiteral","src":"19743:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"gt","nativeSrc":"19734:2:75","nodeType":"YulIdentifier","src":"19734:2:75"},"nativeSrc":"19734:20:75","nodeType":"YulFunctionCall","src":"19734:20:75"},"nativeSrc":"19731:46:75","nodeType":"YulIf","src":"19731:46:75"}]},"name":"checked_sub_t_uint32","nativeSrc":"19613:170:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19643:1:75","nodeType":"YulTypedName","src":"19643:1:75","type":""},{"name":"y","nativeSrc":"19646:1:75","nodeType":"YulTypedName","src":"19646:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"19652:4:75","nodeType":"YulTypedName","src":"19652:4:75","type":""}],"src":"19613:170:75"},{"body":{"nativeSrc":"19924:130:75","nodeType":"YulBlock","src":"19924:130:75","statements":[{"nativeSrc":"19934:26:75","nodeType":"YulAssignment","src":"19934:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19946:9:75","nodeType":"YulIdentifier","src":"19946:9:75"},{"kind":"number","nativeSrc":"19957:2:75","nodeType":"YulLiteral","src":"19957:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19942:3:75","nodeType":"YulIdentifier","src":"19942:3:75"},"nativeSrc":"19942:18:75","nodeType":"YulFunctionCall","src":"19942:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19934:4:75","nodeType":"YulIdentifier","src":"19934:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19976:9:75","nodeType":"YulIdentifier","src":"19976:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19991:6:75","nodeType":"YulIdentifier","src":"19991:6:75"},{"kind":"number","nativeSrc":"19999:4:75","nodeType":"YulLiteral","src":"19999:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19987:3:75","nodeType":"YulIdentifier","src":"19987:3:75"},"nativeSrc":"19987:17:75","nodeType":"YulFunctionCall","src":"19987:17:75"}],"functionName":{"name":"mstore","nativeSrc":"19969:6:75","nodeType":"YulIdentifier","src":"19969:6:75"},"nativeSrc":"19969:36:75","nodeType":"YulFunctionCall","src":"19969:36:75"},"nativeSrc":"19969:36:75","nodeType":"YulExpressionStatement","src":"19969:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20025:9:75","nodeType":"YulIdentifier","src":"20025:9:75"},{"kind":"number","nativeSrc":"20036:2:75","nodeType":"YulLiteral","src":"20036:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20021:3:75","nodeType":"YulIdentifier","src":"20021:3:75"},"nativeSrc":"20021:18:75","nodeType":"YulFunctionCall","src":"20021:18:75"},{"name":"value1","nativeSrc":"20041:6:75","nodeType":"YulIdentifier","src":"20041:6:75"}],"functionName":{"name":"mstore","nativeSrc":"20014:6:75","nodeType":"YulIdentifier","src":"20014:6:75"},"nativeSrc":"20014:34:75","nodeType":"YulFunctionCall","src":"20014:34:75"},"nativeSrc":"20014:34:75","nodeType":"YulExpressionStatement","src":"20014:34:75"}]},"name":"abi_encode_tuple_t_rational_48_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"19788:266:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19885:9:75","nodeType":"YulTypedName","src":"19885:9:75","type":""},{"name":"value1","nativeSrc":"19896:6:75","nodeType":"YulTypedName","src":"19896:6:75","type":""},{"name":"value0","nativeSrc":"19904:6:75","nodeType":"YulTypedName","src":"19904:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19915:4:75","nodeType":"YulTypedName","src":"19915:4:75","type":""}],"src":"19788:266:75"}]},"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_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mcopy(pos, add(value, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\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        end := abi_encode_bytes(value2, _1)\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_address_t_bytes4__to_t_address_t_bytes4__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, shl(224, 0xffffffff)))\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        end := abi_encode_bytes(value0, pos)\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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101db575f3560e01c80636d5115bd116100fd578063b700961311610092578063d22b598911610062578063d22b598914610636578063d6bb62c614610655578063f801a69814610674578063fe0776f5146106ad575f5ffd5b8063b7009613146105a8578063b7d2b162146105e3578063cc1b6c8114610602578063d1f856ee14610617575f5ffd5b8063a166aa89116100cd578063a166aa8914610501578063a64d95ce14610530578063abd9bd2a1461054f578063ac9650d81461057c575f5ffd5b80636d5115bd1461049157806375b238fc146104b0578063853551b8146104c357806394c7d7ee146104e2575f5ffd5b806330cae187116101735780634665096d116101435780634665096d146104035780634c1da1e2146104185780635296295214610437578063530dd45614610456575f5ffd5b806330cae1871461035c5780633adc277a1461037b5780633ca7c02a146103b15780634136a33c146103cb575f5ffd5b806318ff183c116101ae57806318ff183c146102b25780631cff79cd146102d157806325c471a0146102e45780633078f11414610303575f5ffd5b806308d6122d146101df5780630b0a93ba1461020057806312be87271461025f578063167bd39514610293575b5f5ffd5b3480156101ea575f5ffd5b506101fe6101f93660046120da565b6106cc565b005b34801561020b575f5ffd5b5061024261021a36600461213c565b6001600160401b039081165f9081526001602081905260409091200154600160401b90041690565b6040516001600160401b0390911681526020015b60405180910390f35b34801561026a575f5ffd5b5061027e61027936600461213c565b61071e565b60405163ffffffff9091168152602001610256565b34801561029e575f5ffd5b506101fe6102ad366004612155565b610758565b3480156102bd575f5ffd5b506101fe6102cc366004612190565b61076e565b61027e6102df3660046121f9565b6107d0565b3480156102ef575f5ffd5b506101fe6102fe36600461225c565b6108fc565b34801561030e575f5ffd5b5061032261031d36600461229e565b61091e565b604051610256949392919065ffffffffffff948516815263ffffffff93841660208201529190921660408201529116606082015260800190565b348015610367575f5ffd5b506101fe6103763660046122b8565b610982565b348015610386575f5ffd5b5061039a6103953660046122e9565b610994565b60405165ffffffffffff9091168152602001610256565b3480156103bc575f5ffd5b506102426001600160401b0381565b3480156103d6575f5ffd5b5061027e6103e53660046122e9565b5f90815260026020526040902054600160301b900463ffffffff1690565b34801561040e575f5ffd5b5062093a8061027e565b348015610423575f5ffd5b5061027e610432366004612300565b6109c5565b348015610442575f5ffd5b506101fe6104513660046122b8565b6109f2565b348015610461575f5ffd5b5061024261047036600461213c565b6001600160401b039081165f90815260016020819052604090912001541690565b34801561049c575f5ffd5b506102426104ab366004612330565b610a04565b3480156104bb575f5ffd5b506102425f81565b3480156104ce575f5ffd5b506101fe6104dd36600461235c565b610a3e565b3480156104ed575f5ffd5b506101fe6104fc3660046121f9565b610ad5565b34801561050c575f5ffd5b5061052061051b366004612300565b610b7f565b6040519015158152602001610256565b34801561053b575f5ffd5b506101fe61054a366004612377565b610ba6565b34801561055a575f5ffd5b5061056e61056936600461239f565b610bb8565b604051908152602001610256565b348015610587575f5ffd5b5061059b6105963660046123ff565b610bf0565b604051610256919061243d565b3480156105b3575f5ffd5b506105c76105c23660046124c1565b610cd5565b60408051921515835263ffffffff909116602083015201610256565b3480156105ee575f5ffd5b506101fe6105fd36600461229e565b610d56565b34801561060d575f5ffd5b506206978061027e565b348015610622575f5ffd5b506105c761063136600461229e565b610d6d565b348015610641575f5ffd5b506101fe610650366004612509565b610de6565b348015610660575f5ffd5b5061027e61066f36600461239f565b610df8565b34801561067f575f5ffd5b5061069361068e366004612525565b610f4b565b6040805192835263ffffffff909116602083015201610256565b3480156106b8575f5ffd5b506101fe6106c736600461229e565b61108c565b6106d46110b5565b5f5b828110156107175761070f858585848181106106f4576106f4612592565b905060200201602081019061070991906125a6565b8461112c565b6001016106d6565b5050505050565b6001600160401b0381165f9081526001602081905260408220015461075290600160801b90046001600160701b03166111ad565b92915050565b6107606110b5565b61076a82826111cb565b5050565b6107766110b5565b604051637a9e5e4b60e01b81526001600160a01b038281166004830152831690637a9e5e4b906024015f604051808303815f87803b1580156107b6575f5ffd5b505af11580156107c8573d5f5f3e3d5ffd5b505050505050565b5f3381806107e08388888861123c565b91509150811580156107f6575063ffffffff8116155b15610849578287610807888861128d565b6040516381c6f24b60e01b81526001600160a01b0393841660048201529290911660248301526001600160e01b03191660448201526064015b60405180910390fd5b5f61085684898989610bb8565b90505f63ffffffff831615158061087c575061087182610994565b65ffffffffffff1615155b1561088d5761088a826112a4565b90505b6003546108a38a61089e8b8b61128d565b6113a2565b6003819055506108ea8a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152503492506113e4915050565b506003559450505050505b9392505050565b6109046110b5565b61091883836109128661071e565b84611484565b50505050565b6001600160401b0382165f9081526001602090815260408083206001600160a01b03851684529091528120805465ffffffffffff81169291829182919061097490600160301b90046001600160701b03166116ca565b969991985096509350505050565b61098a6110b5565b61076a82826116eb565b5f8181526002602052604081205465ffffffffffff166109b38161178e565b6109bd57806108f5565b5f9392505050565b6001600160a01b0381165f90815260208190526040812060010154610752906001600160701b03166111ad565b6109fa6110b5565b61076a82826117bc565b6001600160a01b0382165f908152602081815260408083206001600160e01b0319851684529091529020546001600160401b031692915050565b610a466110b5565b6001600160401b0383161580610a6457506001600160401b03838116145b15610a8d5760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b826001600160401b03167f1256f5b5ecb89caec12db449738f2fbcd1ba5806cf38f35413f4e5c15bf6a4508383604051610ac89291906125e9565b60405180910390a2505050565b60408051638fb3603760e01b80825291513392918391638fb36037916004808201926020929091908290030181865afa158015610b14573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b389190612604565b6001600160e01b03191614610b6b57604051630641fee960e31b81526001600160a01b0382166004820152602401610840565b610717610b7a85838686610bb8565b6112a4565b6001600160a01b03165f90815260208190526040902060010154600160701b900460ff1690565b610bae6110b5565b61076a828261186d565b5f84848484604051602001610bd0949392919061261f565b604051602081830303815290604052805190602001209050949350505050565b604080515f815260208101909152606090826001600160401b03811115610c1957610c19612686565b604051908082528060200260200182016040528015610c4c57816020015b6060815260200190600190039081610c375790505b5091505f5b83811015610ccd57610ca830868684818110610c6f57610c6f612592565b9050602002810190610c81919061269a565b85604051602001610c94939291906126f3565b60405160208183030381529060405261197c565b838281518110610cba57610cba612592565b6020908102919091010152600101610c51565b505092915050565b5f5f610ce084610b7f565b15610cef57505f905080610d4e565b306001600160a01b03861603610d1357610d0984846119ee565b5f91509150610d4e565b5f610d1e8585610a04565b90505f5f610d2c8389610d6d565b9150915081610d3c575f5f610d46565b63ffffffff811615815b945094505050505b935093915050565b610d5e6110b5565b610d688282611a04565b505050565b5f8067fffffffffffffffe196001600160401b03851601610d935750600190505f610ddf565b5f5f610d9f868661091e565b5050915091508165ffffffffffff165f14158015610dd45750610dc0611aed565b65ffffffffffff168265ffffffffffff1611155b93509150610ddf9050565b9250929050565b610dee6110b5565b61076a8282611afc565b5f3381610e05858561128d565b90505f610e1488888888610bb8565b5f8181526002602052604081205491925065ffffffffffff9091169003610e515760405163060a299b60e41b815260048101829052602401610840565b826001600160a01b0316886001600160a01b031614610eea575f610e755f85610d6d565b5090505f610e8f610e8961021a8b87610a04565b86610d6d565b50905081158015610e9e575080155b15610ee757604051630ff89d4760e21b81526001600160a01b038087166004830152808c1660248301528a1660448201526001600160e01b031985166064820152608401610840565b50505b5f81815260026020526040808220805465ffffffffffff1916908190559051600160301b90910463ffffffff1691829184917fbd9ac67a6e2f6463b80927326310338bcbb4bdb7936ce1365ea3e01067e7b9f791a398975050505050505050565b5f803381610f5b8289898961123c565b9150505f8163ffffffff16610f6e611aed565b610f789190612708565b905063ffffffff82161580610fae57505f8665ffffffffffff16118015610fae57508065ffffffffffff168665ffffffffffff16105b15610fbf5782896108078a8a61128d565b610fd98665ffffffffffff168265ffffffffffff16611bb7565b9550610fe7838a8a8a610bb8565b9450610ff285611bc6565b5f8581526002602052604090819020805465ffffffffffff891669ffffffffffffffffffff19821617600160301b9182900463ffffffff90811660010190811692830291909117909255915190955086907f82a2da5dee54ea8021c6545b4444620291e07ee83be6dd57edb175062715f3b490611078908a9088908f908f908f90612726565b60405180910390a350505094509492505050565b6001600160a01b0381163314610d5e57604051635f159e6360e01b815260040160405180910390fd5b335f806110c3838236611c12565b9150915081610d68578063ffffffff165f0361111d575f6110e48136611cd5565b5060405163f07e038f60e01b81526001600160a01b03871660048201526001600160401b03821660248201529092506044019050610840565b610918610b7a84305f36610bb8565b6001600160a01b0383165f818152602081815260408083206001600160e01b0319871680855290835292819020805467ffffffffffffffff19166001600160401b038716908117909155905192835292917f9ea6790c7dadfd01c9f8b9762b3682607af2c7e79e05a9f9fdf5580dde949151910160405180910390a3505050565b5f5f6111c1836001600160701b03166116ca565b5090949350505050565b6001600160a01b0382165f81815260208190526040908190206001018054841515600160701b0260ff60701b19909116179055517f90d4e7bb7e5d933792b3562e1741306f8be94837e1348dacef9b6f1df56eb1389061123090841515815260200190565b60405180910390a25050565b5f80306001600160a01b0386160361126257611259868585611c12565b91509150611284565b6004831061127e5761127986866105c2878761128d565b611259565b505f9050805b94509492505050565b5f61129b600482848661265f565b6108f59161276b565b5f8181526002602052604081205465ffffffffffff811690600160301b900463ffffffff168183036112ec5760405163060a299b60e41b815260048101859052602401610840565b6112f4611aed565b65ffffffffffff168265ffffffffffff16111561132757604051630c65b5bd60e11b815260048101859052602401610840565b6113308261178e565b1561135157604051631e2975b960e21b815260048101859052602401610840565b5f84815260026020526040808220805465ffffffffffff191690555163ffffffff83169186917f76a2a46953689d4861a5d3f6ed883ad7e6af674a21f8e162707159fc9dde614d9190a39392505050565b604080516001600160a01b03939093166020808501919091526001600160e01b0319929092168382015280518084038201815260609093019052815191012090565b6060814710156114105760405163cf47918160e01b815247600482015260248101839052604401610840565b5f5f856001600160a01b0316848660405161142b91906127a3565b5f6040518083038185875af1925050503d805f8114611465576040519150601f19603f3d011682016040523d82523d5f602084013e61146a565b606091505b509150915061147a868383611ebb565b9695505050505050565b5f67fffffffffffffffe196001600160401b038616016114c25760405163061c6a4360e21b81526001600160401b0386166004820152602401610840565b6001600160401b0385165f9081526001602090815260408083206001600160a01b038816845290915281205465ffffffffffff16159081156115b2578463ffffffff1661150d611aed565b6115179190612708565b905060405180604001604052808265ffffffffffff1681526020016115458663ffffffff1663ffffffff1690565b6001600160701b039081169091526001600160401b0389165f9081526001602090815260408083206001600160a01b038c1684528252909120835181549490920151909216600160301b026001600160a01b031990931665ffffffffffff9091161791909117905561165c565b6001600160401b0387165f9081526001602090815260408083206001600160a01b038a1684529091528120546115fb91600160301b9091046001600160701b0316908690611f17565b6001600160401b0389165f9081526001602090815260408083206001600160a01b038c168452909152902080546001600160701b03909316600160301b0273ffffffffffffffffffffffffffff000000000000199093169290921790915590505b6040805163ffffffff8616815265ffffffffffff831660208201528315158183015290516001600160a01b038816916001600160401b038a16917ff98448b987f1428e0e230e1f3c6e2ce15b5693eaf31827fbd0b1ec4b424ae7cf9181900360600190a35095945050505050565b5f5f5f6116de846116d9611aed565b611fbd565b9250925092509193909250565b6001600160401b038216158061170957506001600160401b03828116145b156117325760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f818152600160208190526040808320909101805467ffffffffffffffff19169486169485179055517f1fd6dd7631312dfac2205b52913f99de03b4d7e381d5d27d3dbfe0713e6e63409190a35050565b5f611797611aed565b65ffffffffffff166117ac62093a8084612708565b65ffffffffffff16111592915050565b6001600160401b03821615806117da57506001600160401b03828116145b156118035760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b038281165f81815260016020819052604080832090910180546fffffffffffffffff00000000000000001916600160401b958716958602179055517f7a8059630b897b5de4c08ade69f8b90c3ead1f8596d62d10b6c4d14a0afb4ae29190a35050565b67fffffffffffffffe196001600160401b038316016118aa5760405163061c6a4360e21b81526001600160401b0383166004820152602401610840565b6001600160401b0382165f908152600160208190526040822001546118e390600160801b90046001600160701b03168362069780611f17565b6001600160401b0385165f818152600160208190526040918290200180546001600160701b03909516600160801b026dffffffffffffffffffffffffffff60801b199095169490941790935591519092507ffeb69018ee8b8fd50ea86348f1267d07673379f72cffdeccec63853ee8ce8b4890610ac8908590859063ffffffff92909216825265ffffffffffff16602082015260400190565b60605f5f846001600160a01b03168460405161199891906127a3565b5f60405180830381855af49150503d805f81146119d0576040519150601f19603f3d011682016040523d82523d5f602084013e6119d5565b606091505b50915091506119e5858383611ebb565b95945050505050565b5f6119f983836113a2565b600354149392505050565b5f67fffffffffffffffe196001600160401b03841601611a425760405163061c6a4360e21b81526001600160401b0384166004820152602401610840565b6001600160401b0383165f9081526001602090815260408083206001600160a01b038616845290915281205465ffffffffffff169003611a8357505f610752565b6001600160401b0383165f8181526001602090815260408083206001600160a01b038716808552925280832080546001600160a01b0319169055519092917ff229baa593af28c41b1d16b748cd7688f0c83aaf92d4be41c44005defe84c16691a350600192915050565b5f611af742612009565b905090565b6001600160a01b0382165f90815260208190526040812060010154611b2e906001600160701b03168362069780611f17565b6001600160a01b0385165f818152602081815260409182902060010180546dffffffffffffffffffffffffffff19166001600160701b039690961695909517909455805163ffffffff8716815265ffffffffffff841694810194909452919350917fa56b76017453f399ec2327ba00375dbfb1fd070ff854341ad6191e6a2e2de19c9101610ac8565b5f8282188284110282186108f5565b5f8181526002602052604090205465ffffffffffff168015801590611bf15750611bef8161178e565b155b1561076a5760405163813e945960e01b815260048101839052602401610840565b5f806004831015611c2757505f905080610d4e565b306001600160a01b03861603611c4a57610d0930611c45868661128d565b6119ee565b5f5f5f611c578787611cd5565b92509250925082158015611c6f5750611c6f30610b7f565b15611c82575f5f94509450505050610d4e565b5f5f611c8e848b610d6d565b9150915081611ca7575f5f965096505050505050610d4e565b611cbd8363ffffffff168263ffffffff16611bb7565b63ffffffff8116159b909a5098505050505050505050565b5f80806004841015611cee57505f915081905080611eb4565b5f611cf9868661128d565b90506001600160e01b031981166310a6aa3760e31b1480611d2a57506001600160e01b031981166330cae18760e01b145b80611d4557506001600160e01b0319811663294b14a960e11b145b80611d6057506001600160e01b03198116635326cae760e11b145b80611d7b57506001600160e01b0319811663d22b598960e01b145b15611d905760015f5f93509350935050611eb4565b6001600160e01b0319811663063fc60f60e21b1480611dbf57506001600160e01b0319811663167bd39560e01b145b80611dda57506001600160e01b031981166308d6122d60e01b145b15611e19575f611dee60246004888a61265f565b810190611dfb9190612300565b90505f611e07826109c5565b600196505f95509350611eb492505050565b6001600160e01b0319811663012e238d60e51b1480611e4857506001600160e01b03198116635be958b160e11b145b15611ea0575f611e5c60246004888a61265f565b810190611e69919061213c565b90506001611e92826001600160401b039081165f90815260016020819052604090912001541690565b5f9450945094505050611eb4565b5f611eab3083610a04565b5f935093509350505b9250925092565b606082611ed057611ecb8261203f565b6108f5565b8151158015611ee757506001600160a01b0384163b155b15611f1057604051639996b31560e01b81526001600160a01b0385166004820152602401610840565b50806108f5565b5f5f5f611f2c866001600160701b03166111ad565b90505f611f678563ffffffff168763ffffffff168463ffffffff1611611f52575f611f5c565b611f5c88856127ae565b63ffffffff16611bb7565b90508063ffffffff16611f78611aed565b611f829190612708565b925063ffffffff8616602083901b67ffffffff0000000016604085901b6dffffffffffff000000000000000016171793505050935093915050565b69ffffffffffffffffffff602083901c166001600160701b03831665ffffffffffff604085901c8116908416811115611ff857828282611ffc565b815f5f5b9250925092509250925092565b5f65ffffffffffff82111561203b576040516306dfcc6560e41b81526030600482015260248101839052604401610840565b5090565b80511561204f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b0381168114612068575f5ffd5b5f5f83601f84011261208f575f5ffd5b5081356001600160401b038111156120a5575f5ffd5b6020830191508360208260051b8501011115610ddf575f5ffd5b80356001600160401b03811681146120d5575f5ffd5b919050565b5f5f5f5f606085870312156120ed575f5ffd5b84356120f88161206b565b935060208501356001600160401b03811115612112575f5ffd5b61211e8782880161207f565b90945092506121319050604086016120bf565b905092959194509250565b5f6020828403121561214c575f5ffd5b6108f5826120bf565b5f5f60408385031215612166575f5ffd5b82356121718161206b565b915060208301358015158114612185575f5ffd5b809150509250929050565b5f5f604083850312156121a1575f5ffd5b82356121ac8161206b565b915060208301356121858161206b565b5f5f83601f8401126121cc575f5ffd5b5081356001600160401b038111156121e2575f5ffd5b602083019150836020828501011115610ddf575f5ffd5b5f5f5f6040848603121561220b575f5ffd5b83356122168161206b565b925060208401356001600160401b03811115612230575f5ffd5b61223c868287016121bc565b9497909650939450505050565b803563ffffffff811681146120d5575f5ffd5b5f5f5f6060848603121561226e575f5ffd5b612277846120bf565b925060208401356122878161206b565b915061229560408501612249565b90509250925092565b5f5f604083850312156122af575f5ffd5b6121ac836120bf565b5f5f604083850312156122c9575f5ffd5b6122d2836120bf565b91506122e0602084016120bf565b90509250929050565b5f602082840312156122f9575f5ffd5b5035919050565b5f60208284031215612310575f5ffd5b81356108f58161206b565b6001600160e01b031981168114612068575f5ffd5b5f5f60408385031215612341575f5ffd5b823561234c8161206b565b915060208301356121858161231b565b5f5f5f6040848603121561236e575f5ffd5b612216846120bf565b5f5f60408385031215612388575f5ffd5b612391836120bf565b91506122e060208401612249565b5f5f5f5f606085870312156123b2575f5ffd5b84356123bd8161206b565b935060208501356123cd8161206b565b925060408501356001600160401b038111156123e7575f5ffd5b6123f3878288016121bc565b95989497509550505050565b5f5f60208385031215612410575f5ffd5b82356001600160401b03811115612425575f5ffd5b6124318582860161207f565b90969095509350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156124b557603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050612463565b50929695505050505050565b5f5f5f606084860312156124d3575f5ffd5b83356124de8161206b565b925060208401356124ee8161206b565b915060408401356124fe8161231b565b809150509250925092565b5f5f6040838503121561251a575f5ffd5b82356123918161206b565b5f5f5f5f60608587031215612538575f5ffd5b84356125438161206b565b935060208501356001600160401b0381111561255d575f5ffd5b612569878288016121bc565b909450925050604085013565ffffffffffff81168114612587575f5ffd5b939692955090935050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156125b6575f5ffd5b81356108f58161231b565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6125fc6020830184866125c1565b949350505050565b5f60208284031215612614575f5ffd5b81516108f58161231b565b6001600160a01b038581168252841660208201526060604082018190525f9061147a90830184866125c1565b634e487b7160e01b5f52601160045260245ffd5b5f5f8585111561266d575f5ffd5b83861115612679575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f5f8335601e198436030181126126af575f5ffd5b8301803591506001600160401b038211156126c8575f5ffd5b602001915036819003821315610ddf575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f815261147a81856126dc565b65ffffffffffff81811683821601908111156107525761075261264b565b65ffffffffffff861681526001600160a01b038581166020830152841660408201526080606082018190525f9061276090830184866125c1565b979650505050505050565b80356001600160e01b0319811690600484101561279c576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f6108f582846126dc565b63ffffffff82811682821603908111156107525761075261264b56fea2646970667358221220abdac89ee6ea272cc140dad3d92df5b9097ffcacb2763cec129af229139d737764736f6c634300081c0033","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 0x20DA 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 0x213C 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 0x213C 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 0x2155 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 0x2190 JUMP JUMPDEST PUSH2 0x76E JUMP JUMPDEST PUSH2 0x27E PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x21F9 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 0x225C 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 0x229E 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 0x22B8 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 0x22E9 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 0x22E9 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 0x2300 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 0x22B8 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 0x213C 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 0x2330 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 0x235C 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 0x21F9 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 0x2300 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 0x2377 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 0x239F 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 0x23FF JUMP JUMPDEST PUSH2 0xBF0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x256 SWAP2 SWAP1 PUSH2 0x243D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5C7 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x24C1 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 0x229E 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 0x229E 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 0x2509 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 0x239F 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 0x2525 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 0x229E 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 0x2592 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0x25A6 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 0x13E4 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 0x1484 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 0x16CA 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 0x16EB JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x9B3 DUP2 PUSH2 0x178E 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 0x17BC 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 0x25E9 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 0x2604 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 0x186D JUMP JUMPDEST PUSH0 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x261F 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 0x2686 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 0x2592 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xC81 SWAP2 SWAP1 PUSH2 0x269A JUMP JUMPDEST DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC94 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x197C JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x2592 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 0x19EE 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 0x1A04 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 0x1AED 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 0x1AFC 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 0x1AED JUMP JUMPDEST PUSH2 0xF78 SWAP2 SWAP1 PUSH2 0x2708 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 0x1BB7 JUMP JUMPDEST SWAP6 POP PUSH2 0xFE7 DUP4 DUP11 DUP11 DUP11 PUSH2 0xBB8 JUMP JUMPDEST SWAP5 POP PUSH2 0xFF2 DUP6 PUSH2 0x1BC6 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 0x2726 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 0x1C12 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 0x1CD5 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 0x16CA 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 0x1C12 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 0x265F JUMP JUMPDEST PUSH2 0x8F5 SWAP2 PUSH2 0x276B 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 0x1AED 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 0x178E 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 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP1 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP3 SWAP1 SWAP3 AND DUP4 DUP3 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB DUP3 ADD DUP2 MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1410 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 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP7 PUSH1 0x40 MLOAD PUSH2 0x142B SWAP2 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1465 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 0x146A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x147A DUP7 DUP4 DUP4 PUSH2 0x1EBB JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFE NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND ADD PUSH2 0x14C2 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 0x15B2 JUMPI DUP5 PUSH4 0xFFFFFFFF AND PUSH2 0x150D PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1517 SWAP2 SWAP1 PUSH2 0x2708 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 0x1545 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 0x165C 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 0x15FB SWAP2 PUSH1 0x1 PUSH1 0x30 SHL SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND SWAP1 DUP7 SWAP1 PUSH2 0x1F17 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 0x16DE DUP5 PUSH2 0x16D9 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1FBD 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 0x1709 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1732 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 0x1797 PUSH2 0x1AED JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF AND PUSH2 0x17AC PUSH3 0x93A80 DUP5 PUSH2 0x2708 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 0x17DA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 DUP2 AND EQ JUMPDEST ISZERO PUSH2 0x1803 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 0x18AA 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 0x18E3 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F17 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1998 SWAP2 SWAP1 PUSH2 0x27A3 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x19D0 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 0x19D5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x19E5 DUP6 DUP4 DUP4 PUSH2 0x1EBB JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x19F9 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 0x1A42 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 0x1A83 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 0x1AF7 TIMESTAMP PUSH2 0x2009 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 0x1B2E SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP4 PUSH3 0x69780 PUSH2 0x1F17 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 0x1BF1 JUMPI POP PUSH2 0x1BEF DUP2 PUSH2 0x178E 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 0x1C27 JUMPI POP PUSH0 SWAP1 POP DUP1 PUSH2 0xD4E JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB PUSH2 0x1C4A JUMPI PUSH2 0xD09 ADDRESS PUSH2 0x1C45 DUP7 DUP7 PUSH2 0x128D JUMP JUMPDEST PUSH2 0x19EE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1C57 DUP8 DUP8 PUSH2 0x1CD5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 ISZERO DUP1 ISZERO PUSH2 0x1C6F JUMPI POP PUSH2 0x1C6F ADDRESS PUSH2 0xB7F JUMP JUMPDEST ISZERO PUSH2 0x1C82 JUMPI PUSH0 PUSH0 SWAP5 POP SWAP5 POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C8E DUP5 DUP12 PUSH2 0xD6D JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1CA7 JUMPI PUSH0 PUSH0 SWAP7 POP SWAP7 POP POP POP POP POP POP PUSH2 0xD4E JUMP JUMPDEST PUSH2 0x1CBD DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND PUSH2 0x1BB7 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 0x1CEE JUMPI POP PUSH0 SWAP2 POP DUP2 SWAP1 POP DUP1 PUSH2 0x1EB4 JUMP JUMPDEST PUSH0 PUSH2 0x1CF9 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 0x1D2A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x30CAE187 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1D45 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x294B14A9 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D60 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5326CAE7 PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1D7B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xD22B5989 PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1D90 JUMPI PUSH1 0x1 PUSH0 PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP PUSH2 0x1EB4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x63FC60F PUSH1 0xE2 SHL EQ DUP1 PUSH2 0x1DBF JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x167BD395 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1DDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x8D6122D PUSH1 0xE0 SHL EQ JUMPDEST ISZERO PUSH2 0x1E19 JUMPI PUSH0 PUSH2 0x1DEE PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x265F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1DFB SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1E07 DUP3 PUSH2 0x9C5 JUMP JUMPDEST PUSH1 0x1 SWAP7 POP PUSH0 SWAP6 POP SWAP4 POP PUSH2 0x1EB4 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 0x1E48 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x5BE958B1 PUSH1 0xE1 SHL EQ JUMPDEST ISZERO PUSH2 0x1EA0 JUMPI PUSH0 PUSH2 0x1E5C PUSH1 0x24 PUSH1 0x4 DUP9 DUP11 PUSH2 0x265F JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0x1E69 SWAP2 SWAP1 PUSH2 0x213C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x1E92 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 0x1EB4 JUMP JUMPDEST PUSH0 PUSH2 0x1EAB ADDRESS DUP4 PUSH2 0xA04 JUMP JUMPDEST PUSH0 SWAP4 POP SWAP4 POP SWAP4 POP POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1ED0 JUMPI PUSH2 0x1ECB DUP3 PUSH2 0x203F JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1EE7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1F10 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 POP DUP1 PUSH2 0x8F5 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x1F2C DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x11AD JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F67 DUP6 PUSH4 0xFFFFFFFF AND DUP8 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x1F52 JUMPI PUSH0 PUSH2 0x1F5C JUMP JUMPDEST PUSH2 0x1F5C DUP9 DUP6 PUSH2 0x27AE JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x1F78 PUSH2 0x1AED JUMP JUMPDEST PUSH2 0x1F82 SWAP2 SWAP1 PUSH2 0x2708 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 0x1FF8 JUMPI DUP3 DUP3 DUP3 PUSH2 0x1FFC JUMP JUMPDEST DUP2 PUSH0 PUSH0 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH6 0xFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x203B 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 DUP1 MLOAD ISZERO PUSH2 0x204F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 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 DUP2 AND DUP2 EQ PUSH2 0x2068 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x208F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A5 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 0x20D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x20F8 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2112 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x211E DUP8 DUP3 DUP9 ADD PUSH2 0x207F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x2131 SWAP1 POP PUSH1 0x40 DUP7 ADD PUSH2 0x20BF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x214C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x8F5 DUP3 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2166 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2171 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2185 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 0x21A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x21AC DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2185 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x21CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21E2 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 0x220B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2216 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2230 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x223C DUP7 DUP3 DUP8 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x20D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x226E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2277 DUP5 PUSH2 0x20BF JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2287 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH2 0x2295 PUSH1 0x40 DUP6 ADD PUSH2 0x2249 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21AC DUP4 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22D2 DUP4 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP PUSH2 0x22E0 PUSH1 0x20 DUP5 ADD PUSH2 0x20BF JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2310 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2068 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2341 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x234C DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2185 DUP2 PUSH2 0x231B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x236E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2216 DUP5 PUSH2 0x20BF JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2388 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2391 DUP4 PUSH2 0x20BF JUMP JUMPDEST SWAP2 POP PUSH2 0x22E0 PUSH1 0x20 DUP5 ADD PUSH2 0x2249 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x23B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x23BD DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x23CD DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23F3 DUP8 DUP3 DUP9 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2410 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2425 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2431 DUP6 DUP3 DUP7 ADD PUSH2 0x207F 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 0x24B5 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 0x2463 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 0x24D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x24DE DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x24EE DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x231B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x251A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2391 DUP2 PUSH2 0x206B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2538 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2543 DUP2 PUSH2 0x206B JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x255D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2569 DUP8 DUP3 DUP9 ADD PUSH2 0x21BC JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH6 0xFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2587 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 0x25B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x8F5 DUP2 PUSH2 0x231B 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 0x25FC PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2614 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x8F5 DUP2 PUSH2 0x231B 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 0x147A SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 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 0x266D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2679 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 0x26AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x26C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xDDF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 DUP2 MLOAD DUP1 PUSH1 0x20 DUP5 ADD DUP6 MCOPY PUSH0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP5 DUP3 CALLDATACOPY PUSH0 DUP4 DUP3 ADD PUSH0 DUP2 MSTORE PUSH2 0x147A DUP2 DUP6 PUSH2 0x26DC JUMP JUMPDEST PUSH6 0xFFFFFFFFFFFF DUP2 DUP2 AND DUP4 DUP3 AND ADD SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x264B 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 0x2760 SWAP1 DUP4 ADD DUP5 DUP7 PUSH2 0x25C1 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 0x279C 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 PUSH2 0x8F5 DUP3 DUP5 PUSH2 0x26DC JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x752 JUMPI PUSH2 0x752 PUSH2 0x264B JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0xDA 0xC8 SWAP15 0xE6 0xEA 0x27 0x2C 0xC1 BLOCKHASH 0xDA 0xD3 0xD9 0x2D CREATE2 0xB9 MULMOD PUSH32 0xFCACB2763CEC129AF229139D737764736F6C634300081C003300000000000000 ","sourceMap":"3722:26153:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15149:291;;;;;;;;;;-1:-1:-1;15149:291:15;;;;;:::i;:::-;;:::i;:::-;;8534:124;;;;;;;;;;-1:-1:-1;8534:124:15;;;;;:::i;:::-;-1:-1:-1;;;;;8628:14:15;;;8603:6;8628:14;;;:6;:14;;;;;;;;:23;;-1:-1:-1;;;8628:23:15;;;;8534:124;;;;-1:-1:-1;;;;;1695:31:75;;;1677:50;;1665:2;1650:18;8534:124:15;;;;;;;;8699:134;;;;;;;;;;-1:-1:-1;8699:134:15;;;;;:::i;:::-;;:::i;:::-;;;1912:10:75;1900:23;;;1882:42;;1870:2;1855:18;8699:134:15;1738:192:75;16618:133:15;;;;;;;;;;-1:-1:-1;16618:133:15;;;;;:::i;:::-;;:::i;23785:159::-;;;;;;;;;;-1:-1:-1;23785:159:15;;;;;:::i;:::-;;:::i;19732:1238::-;;;;;;:::i;:::-;;:::i;10198:191::-;;;;;;;;;;-1:-1:-1;10198:191:15;;;;;:::i;:::-;;:::i;8874:408::-;;;;;;;;;;-1:-1:-1;8874:408:15;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;4791:14:75;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;10886:126:15;;;;;;;;;;-1:-1:-1;10886:126:15;;;;;:::i;:::-;;:::i;17246:184::-;;;;;;;;;;-1:-1:-1;17246:184:15;;;;;:::i;:::-;;:::i;:::-;;;5622:14:75;5610:27;;;5592:46;;5580:2;5565:18;17246:184:15;5448:196:75;5578:53:15;;;;;;;;;;;;-1:-1:-1;;;;;5578:53:15;;17471:111;;;;;;;;;;-1:-1:-1;17471:111:15;;;;;:::i;:::-;17530:6;17555:14;;;:10;:14;;;;;:20;-1:-1:-1;;;17555:20:15;;;;;17471:111;7566:90;;;;;;;;;;-1:-1:-1;7642:7:15;7566:90;;8195:139;;;;;;;;;;-1:-1:-1;8195:139:15;;;;;:::i;:::-;;:::i;11053:138::-;;;;;;;;;;-1:-1:-1;11053:138:15;;;;;:::i;:::-;;:::i;8375:118::-;;;;;;;;;;-1:-1:-1;8375:118:15;;;;;:::i;:::-;-1:-1:-1;;;;;8466:14:15;;;8441:6;8466:14;;;:6;:14;;;;;;;;:20;;;;8375:118;7990:164;;;;;;;;;;-1:-1:-1;7990:164:15;;;;;:::i;:::-;;:::i;5397:52::-;;;;;;;;;;;;5433:16;5397:52;;9901:256;;;;;;;;;;-1:-1:-1;9901:256:15;;;;;:::i;:::-;;:::i;22160:376::-;;;;;;;;;;-1:-1:-1;22160:376:15;;;;;:::i;:::-;;:::i;7827:122::-;;;;;;;;;;-1:-1:-1;7827:122:15;;;;;:::i;:::-;;:::i;:::-;;;7080:14:75;;7073:22;7055:41;;7043:2;7028:18;7827:122:15;6915:187:75;11232:134:15;;;;;;;;;;-1:-1:-1;11232:134:15;;;;;:::i;:::-;;:::i;23443:181::-;;;;;;;;;;-1:-1:-1;23443:181:15;;;;;:::i;:::-;;:::i;:::-;;;8204:25:75;;;8192:2;8177:18;23443:181:15;8058:177:75;1208:484:37;;;;;;;;;;-1:-1:-1;1208:484:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6723:802:15:-;;;;;;;;;;-1:-1:-1;6723:802:15;;;;;:::i;:::-;;:::i;:::-;;;;10436:14:75;;10429:22;10411:41;;10500:10;10488:23;;;10483:2;10468:18;;10461:51;10384:18;6723:802:15;10245:273:75;10430:127:15;;;;;;;;;;-1:-1:-1;10430:127:15;;;;;:::i;:::-;;:::i;7697:89::-;;;;;;;;;;-1:-1:-1;7773:6:15;7697:89;;9323:418;;;;;;;;;;-1:-1:-1;9323:418:15;;;;;:::i;:::-;;:::i;15868:147::-;;;;;;;;;;-1:-1:-1;15868:147:15;;;;;:::i;:::-;;:::i;21011:1108::-;;;;;;;;;;-1:-1:-1;21011:1108:15;;;;;:::i;:::-;;:::i;17623:1373::-;;;;;;;;;;-1:-1:-1;17623:1373:15;;;;;:::i;:::-;;:::i;:::-;;;;11744:25:75;;;11817:10;11805:23;;;11800:2;11785:18;;11778:51;11717:18;17623:1373:15;11572:263:75;10598:247:15;;;;;;;;;;-1:-1:-1;10598:247:15;;;;;:::i;:::-;;:::i;15149:291::-;6237:18;:16;:18::i;:::-;15315:9:::1;15310:124;15330:20:::0;;::::1;15310:124;;;15371:52;15394:6;15402:9;;15412:1;15402:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15416:6;15371:22;:52::i;:::-;15352:3;;15310:124;;;;15149:291:::0;;;;:::o;8699:134::-;-1:-1:-1;;;;;8795:14:15;;8770:6;8795:14;;;:6;:14;;;;;;;:25;;:31;;-1:-1:-1;;;8795:25:15;;-1:-1:-1;;;;;8795:25:15;:29;:31::i;:::-;8788:38;8699:134;-1:-1:-1;;8699:134:15:o;16618:133::-;6237:18;:16;:18::i;:::-;16712:32:::1;16729:6;16737;16712:16;:32::i;:::-;16618:133:::0;;:::o;23785:159::-;6237:18;:16;:18::i;:::-;23888:49:::1;::::0;-1:-1:-1;;;23888:49:15;;-1:-1:-1;;;;;12386:32:75;;;23888:49:15::1;::::0;::::1;12368:51:75::0;23888:35:15;::::1;::::0;::::1;::::0;12341:18:75;;23888:49:15::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:159:::0;;:::o;19732:1238::-;19818:6;735:10:35;19818:6:15;;19991:38;735:10:35;20016:6:15;20024:4;;19991:16;:38::i;:::-;19956:73;;;;20090:9;20089:10;:26;;;;-1:-1:-1;20103:12:15;;;;20089:26;20085:131;;;20168:6;20176;20184:20;20199:4;;20184:14;:20::i;:::-;20138:67;;-1:-1:-1;;;20138:67:15;;-1:-1:-1;;;;;12648:32:75;;;20138:67:15;;;12630:51:75;12717:32;;;;12697:18;;;12690:60;-1:-1:-1;;;;;;12786:33:75;12766:18;;;12759:61;12603:18;;20138:67:15;;;;;;;;20085:131;20226:19;20248:35;20262:6;20270;20278:4;;20248:13;:35::i;:::-;20226:57;-1:-1:-1;20293:12:15;20485;;;;;;:45;;;20501:24;20513:11;20501;:24::i;:::-;:29;;;;20485:45;20481:116;;;20554:32;20574:11;20554:19;:32::i;:::-;20546:40;;20481:116;20689:12;;20726:46;20743:6;20751:20;20766:4;;20751:14;:20::i;:::-;20726:16;:46::i;:::-;20711:12;:61;;;;20807:54;20837:6;20845:4;;20807:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20851:9:15;;-1:-1:-1;20807:29:15;;-1:-1:-1;;20807:54:15:i;:::-;-1:-1:-1;20908:12:15;:32;20958:5;-1:-1:-1;;;;;19732:1238:15;;;;;;:::o;10198:191::-;6237:18;:16;:18::i;:::-;10312:70:::1;10323:6;10331:7;10340:25;10358:6;10340:17;:25::i;:::-;10367:14;10312:10;:70::i;:::-;;10198:191:::0;;;:::o;8874:408::-;-1:-1:-1;;;;;9081:14:15;;8976:12;9081:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;9081:31:15;;;;;;;;;9131:12;;;;;;8976;;;;;9081:31;9192:22;;-1:-1:-1;;;9192:12:15;;-1:-1:-1;;;;;9192:12:15;:20;:22::i;:::-;8874:408;;9153:61;;-1:-1:-1;9153:61:15;-1:-1:-1;8874:408:15;-1:-1:-1;;;;8874:408:15:o;10886:126::-;6237:18;:16;:18::i;:::-;10977:28:::1;10991:6;10999:5;10977:13;:28::i;17246:184::-:0;17308:6;17345:14;;;:10;:14;;;;;:24;;;17386:21;17345:24;17386:10;:21::i;:::-;:37;;17414:9;17386:37;;;17410:1;17379:44;17246:184;-1:-1:-1;;;17246:184:15:o;8195:139::-;-1:-1:-1;;;;;8294:16:15;;8269:6;8294:16;;;;;;;;;;:27;;;:33;;-1:-1:-1;;;;;8294:27:15;:31;:33::i;11053:138::-;6237:18;:16;:18::i;:::-;11150:34:::1;11167:6;11175:8;11150:16;:34::i;7990:164::-:0;-1:-1:-1;;;;;8108:16:15;;8083:6;8108:16;;;;;;;;;;;-1:-1:-1;;;;;;8108:39:15;;;;;;;;;;-1:-1:-1;;;;;8108:39:15;7990:164;;;;:::o;9901:256::-;6237:18;:16;:18::i;:::-;-1:-1:-1;;;;;10002:20:15;::::1;::::0;;:45:::1;;-1:-1:-1::0;;;;;;10026:21:15;;::::1;;10002:45;9998:114;;;10070:31;::::0;-1:-1:-1;;;10070:31:15;;-1:-1:-1;;;;;1695:31:75;;10070::15::1;::::0;::::1;1677:50:75::0;1650:18;;10070:31:15::1;1533:200:75::0;9998:114:15::1;10136:6;-1:-1:-1::0;;;;;10126:24:15::1;;10144:5;;10126:24;;;;;;;:::i;:::-;;;;;;;;9901:256:::0;;;:::o;22160:376::-;22293:47;;;-1:-1:-1;;;22293:47:15;;;;;735:10:35;;22344:46:15;735:10:35;;22344:46:15;;22293:47;;;;;;;;;;;;;;;735:10:35;22293:47:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;22293:97:15;;22289:175;;22413:40;;-1:-1:-1;;;22413:40:15;;-1:-1:-1;;;;;12386:32:75;;22413:40:15;;;12368:51:75;12341:18;;22413:40:15;12222:203:75;22289:175:15;22473:56;22493:35;22507:6;22515;22523:4;;22493:13;:35::i;:::-;22473:19;:56::i;7827:122::-;-1:-1:-1;;;;;7919:16:15;7896:4;7919:16;;;;;;;;;;:23;;;-1:-1:-1;;;7919:23:15;;;;;7827:122::o;11232:134::-;6237:18;:16;:18::i;:::-;11327:32:::1;11342:6;11350:8;11327:14;:32::i;23443:181::-:0;23548:7;23595:6;23603;23611:4;;23584:32;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23574:43;;;;;;23567:50;;23443:181;;;;;;:::o;1208:484:37:-;1374:12;;;1310:20;1374:12;;;;;;;;1276:22;;1485:4;-1:-1:-1;;;;;1473:24:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1463:34:37;-1:-1:-1;1512:9:37;1507:155;1527:15;;;1507:155;;;1576:75;1613:4;1633;;1638:1;1633:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1642;1620:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1576:28;:75::i;:::-;1563:7;1571:1;1563:10;;;;;;;;:::i;:::-;;;;;;;;;;:88;1544:3;;1507:155;;;;1671:14;1208:484;;;;:::o;6723:802:15:-;6848:14;6864:12;6892:22;6907:6;6892:14;:22::i;:::-;6888:631;;;-1:-1:-1;6938:5:15;;-1:-1:-1;6938:5:15;6930:17;;6888:631;6986:4;-1:-1:-1;;;;;6968:23:15;;;6964:555;;7234:30;7247:6;7255:8;7234:12;:30::i;:::-;7266:1;7226:42;;;;;;6964:555;7299:13;7315:39;7337:6;7345:8;7315:21;:39::i;:::-;7299:55;;7369:13;7384:19;7407:23;7415:6;7423;7407:7;:23::i;:::-;7368:62;;;;7451:8;:57;;7499:5;7506:1;7451:57;;;7463:17;;;;:12;7451:57;7444:64;;;;;;;6964:555;6723:802;;;;;;:::o;10430:127::-;6237:18;:16;:18::i;:::-;10522:28:::1;10534:6;10542:7;10522:11;:28::i;:::-;;10430:127:::0;;:::o;9323:418::-;9423:13;;-1:-1:-1;;;;;;;9475:21:15;;;9471:264;;-1:-1:-1;9520:4:15;;-1:-1:-1;9526:1:15;9512:16;;9471:264;9560:19;9581;9608:26;9618:6;9626:7;9608:9;:26::i;:::-;9559:75;;;;;;9656:12;:17;;9672:1;9656:17;;:53;;;;;9693:16;:14;:16::i;:::-;9677:32;;:12;:32;;;;9656:53;9648:76;-1:-1:-1;9711:12:15;-1:-1:-1;9648:76:15;;-1:-1:-1;9648:76:15;9471:264;9323:418;;;;;:::o;15868:147::-;6237:18;:16;:18::i;:::-;15970:38:::1;15991:6;15999:8;15970:20;:38::i;21011:1108::-:0;21104:6;735:10:35;21104:6:15;21182:20;21197:4;;21182:14;:20::i;:::-;21164:38;;21213:19;21235:35;21249:6;21257;21265:4;;21235:13;:35::i;:::-;21284:23;;;;:10;:23;;;;;:33;21213:57;;-1:-1:-1;21284:33:15;;;;:38;;21280:614;;21345:38;;-1:-1:-1;;;21345:38:15;;;;;8204:25:75;;;8177:18;;21345:38:15;8058:177:75;21280:614:15;21414:9;-1:-1:-1;;;;;21404:19:15;:6;-1:-1:-1;;;;;21404:19:15;;21400:494;;21573:12;21591:30;5433:16;21611:9;21591:7;:30::i;:::-;21572:49;;;21636:15;21657:76;21665:56;21681:39;21703:6;21711:8;21681:21;:39::i;21665:56::-;21723:9;21657:7;:76::i;:::-;21635:98;;;21752:7;21751:8;:23;;;;;21764:10;21763:11;21751:23;21747:137;;;21801:68;;-1:-1:-1;;;21801:68:15;;-1:-1:-1;;;;;16123:32:75;;;21801:68:15;;;16105:51:75;16192:32;;;16172:18;;;16165:60;16261:32;;16241:18;;;16234:60;-1:-1:-1;;;;;;16330:33:75;;16310:18;;;16303:61;16077:19;;21801:68:15;15876:494:75;21747:137:15;21425:469;;21400:494;21911:23;;;;:10;:23;;;;;;21904:40;;-1:-1:-1;;21904:40:15;;;;;22052:37;;-1:-1:-1;;;22008:29:15;;;;;;;;21911:23;;22052:37;;;22107:5;21011:1108;-1:-1:-1;;;;;;;;21011:1108:15:o;17623:1373::-;17745:19;;735:10:35;17745:19:15;17931:38;735:10:35;17956:6:15;17964:4;;17931:16;:38::i;:::-;17910:59;;;17980:14;18016:7;17997:26;;:16;:14;:16::i;:::-;:26;;;;:::i;:::-;17980:43;-1:-1:-1;18130:12:15;;;;;:44;;;18154:1;18147:4;:8;;;:26;;;;;18166:7;18159:14;;:4;:14;;;18147:26;18126:149;;;18227:6;18235;18243:20;18258:4;;18243:14;:20::i;18126:149::-;18347:23;18356:4;18347:23;;18362:7;18347:23;;:8;:23::i;:::-;18333:38;;18491:35;18505:6;18513;18521:4;;18491:13;:35::i;:::-;18477:49;;18537:31;18556:11;18537:18;:31::i;:::-;18690:23;;;;:10;:23;;;;;;;:29;;18743:40;;;-1:-1:-1;;18793:37:15;;;-1:-1:-1;;;18690:29:15;;;;;;;;18722:1;18690:33;18793:37;;;;;;;;;;;;;18845:66;;18690:33;;-1:-1:-1;18690:23:15;;18845:66;;;;18743:40;;18890:6;;18898;;18906:4;;;;18845:66;:::i;:::-;;;;;;;;17780:1216;;;17623:1373;;;;;;;:::o;10598:247::-;-1:-1:-1;;;;;10692:34:15;;735:10:35;10692:34:15;10688:102;;10749:30;;-1:-1:-1;;;10749:30:15;;;;;;;;;;;24298:503;735:10:35;24344:14:15;;24416:32;735:10:35;24344:14:15;809::35;24416:12:15;:32::i;:::-;24383:65;;;;24463:9;24458:337;;24492:5;:10;;24501:1;24492:10;24488:297;;24525:19;24550:33;24525:19;809:14:35;24550:21:15;:33::i;:::-;-1:-1:-1;24608:54:15;;-1:-1:-1;;;24608:54:15;;-1:-1:-1;;;;;17285:32:75;;24608:54:15;;;17267:51:75;-1:-1:-1;;;;;17354:31:75;;17334:18;;;17327:59;24522:61:15;;-1:-1:-1;17240:18:75;;;-1:-1:-1;24608:54:15;17095:297:75;24488::15;24701:69;24721:48;24735:6;24751:4;809:14:35;;23443:181:15;:::i;15599:228::-;-1:-1:-1;;;;;15706:16:15;;:8;:16;;;;;;;;;;;-1:-1:-1;;;;;;15706:39:15;;;;;;;;;;;;:48;;-1:-1:-1;;15706:48:15;-1:-1:-1;;;;;15706:48:15;;;;;;;;15769:51;;17541:52:75;;;15706:48:15;:16;15769:51;;17514:18:75;15769:51:15;;;;;;;15599:228;;;:::o;3609:130:44:-;3657:6;3676:12;3696:14;:4;-1:-1:-1;;;;;3696:12:44;;:14::i;:::-;-1:-1:-1;3675:35:44;;3609:130;-1:-1:-1;;;;3609:130:44:o;16921:164:15:-;-1:-1:-1;;;;;17003:16:15;;:8;:16;;;;;;;;;;;;:23;;:32;;;;;-1:-1:-1;;;17003:32:15;-1:-1:-1;;;;17003:32:15;;;;;;17050:28;;;;;17029:6;7080:14:75;7073:22;7055:41;;7043:2;7028:18;;6915:187;17050:28:15;;;;;;;;16921:164;;:::o;27316:378::-;27447:14;;27509:4;-1:-1:-1;;;;;27491:23:15;;;27487:201;;27537:26;27550:6;27558:4;;27537:12;:26::i;:::-;27530:33;;;;;;27487:201;27615:1;27601:15;;:76;;27632:45;27640:6;27648;27656:20;27671:4;;27656:14;:20::i;27632:45::-;27601:76;;;-1:-1:-1;27620:5:15;;-1:-1:-1;27620:5:15;27487:201;27316:378;;;;;;;:::o;29530:116::-;29597:6;29629:9;29636:1;29597:6;29629:4;;:9;:::i;:::-;29622:17;;;:::i;22726:676::-;22802:6;22839:23;;;:10;:23;;;;;:33;;;;;-1:-1:-1;;;22897:29:15;;;;22941:14;;;22937:294;;22978:38;;-1:-1:-1;;;22978:38:15;;;;;8204:25:75;;;8177:18;;22978:38:15;8058:177:75;22937:294:15;23049:16;:14;:16::i;:::-;23037:28;;:9;:28;;;23033:198;;;23088:34;;-1:-1:-1;;;23088:34:15;;;;;8204:25:75;;;8177:18;;23088:34:15;8058:177:75;23033:198:15;23143:21;23154:9;23143:10;:21::i;:::-;23139:92;;;23187:33;;-1:-1:-1;;;23187:33:15;;;;;8204:25:75;;;8177:18;;23187:33:15;8058:177:75;23139:92:15;23248:23;;;;:10;:23;;;;;;23241:40;;-1:-1:-1;;23241:40:15;;;23335:37;;;;;23259:11;;23335:37;;23248:23;23335:37;23390:5;22726:676;-1:-1:-1;;;22726:676:15:o;29720:153::-;29837:28;;;-1:-1:-1;;;;;18137:32:75;;;;29837:28:15;;;;18119:51:75;;;;-1:-1:-1;;;;;;18206:33:75;;;;18186:18;;;18179:61;29837:28:15;;;;;;;;;18092:18:75;;;;29837:28:15;;29827:39;;;;;;29720:153::o;2959:407:34:-;3058:12;3110:5;3086:21;:29;3082:123;;;3138:56;;-1:-1:-1;;;3138:56:34;;3165:21;3138:56;;;18425:25:75;18466:18;;;18459:34;;;18398:18;;3138:56:34;18251:248:75;3082:123:34;3215:12;3229:23;3256:6;-1:-1:-1;;;;;3256:11:34;3275:5;3282:4;3256:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:73;;;;3304:55;3331:6;3339:7;3348:10;3304:26;:55::i;:::-;3297:62;2959:407;-1:-1:-1;;;;;;2959:407:34:o;11543:1061:15:-;11701:4;-1:-1:-1;;;;;;;11721:21:15;;;11717:90;;11765:31;;-1:-1:-1;;;11765:31:15;;-1:-1:-1;;;;;1695:31:75;;11765::15;;;1677:50:75;1650:18;;11765:31:15;1533:200:75;11717:90:15;-1:-1:-1;;;;;11834:14:15;;11817;11834;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11834:31:15;;;;;;;;;:37;;;:42;;11909:585;;;;11965:10;11946:29;;:16;:14;:16::i;:::-;:29;;;;:::i;:::-;11938:37;;12023:55;;;;;;;;12038:5;12023:55;;;;;;12052:24;:14;:22;;2589:20:44;;;2508:108;12052:24:15;-1:-1:-1;;;;;12023:55:15;;;;;;-1:-1:-1;;;;;11989:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;11989:31:15;;;;;;;;;:89;;;;;;;;;;;;-1:-1:-1;;;11989:89:15;-1:-1:-1;;;;;;11989:89:15;;;;;;;;;;;;;;11909:585;;;-1:-1:-1;;;;;12370:14:15;;12468:1;12370:14;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12370:31:15;;;;;;;;;:37;:113;;-1:-1:-1;;;12370:37:15;;;-1:-1:-1;;;;;12370:37:15;;12436:14;;12370:48;:113::i;:::-;-1:-1:-1;;;;;12322:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;12322:31:15;;;;;;;;;12321:162;;-1:-1:-1;;;;;12321:162:15;;;-1:-1:-1;;;12321:162:15;-1:-1:-1;;12321:162:15;;;;;;;;;;;-1:-1:-1;11909:585:15;12509:62;;;18920:10:75;18908:23;;18890:42;;18980:14;18968:27;;18963:2;18948:18;;18941:55;19039:14;;19032:22;19012:18;;;19005:50;12509:62:15;;-1:-1:-1;;;;;12509:62:15;;;-1:-1:-1;;;;;12509:62:15;;;;;;;;18878:2:75;12509:62:15;;;-1:-1:-1;12588:9:15;11543:1061;-1:-1:-1;;;;;11543:1061:15:o;3393:159:44:-;3445:18;3465:17;3484:13;3516:29;3527:4;3533:11;:9;:11::i;:::-;3516:10;:29::i;:::-;3509:36;;;;;;3393:159;;;;;:::o;13560:285:15:-;-1:-1:-1;;;;;13643:20:15;;;;:45;;-1:-1:-1;;;;;;13667:21:15;;;;13643:45;13639:114;;;13711:31;;-1:-1:-1;;;13711:31:15;;-1:-1:-1;;;;;1695:31:75;;13711::15;;;1677:50:75;1650:18;;13711:31:15;1533:200:75;13639:114:15;-1:-1:-1;;;;;13763:14:15;;;;;;;:6;:14;;;;;;;;:20;;;:28;;-1:-1:-1;;13763:28:15;;;;;;;;;13807:31;;;13763:14;13807:31;13560:285;;:::o;29286:134::-;29346:4;29397:16;:14;:16::i;:::-;29369:44;;:24;7642:7;29369:9;:24;:::i;:::-;:44;;;;;29286:134;-1:-1:-1;;29286:134:15:o;14164:303::-;-1:-1:-1;;;;;14253:20:15;;;;:45;;-1:-1:-1;;;;;;14277:21:15;;;;14253:45;14249:114;;;14321:31;;-1:-1:-1;;;14321:31:15;;-1:-1:-1;;;;;1695:31:75;;14321::15;;;1677:50:75;1650:18;;14321:31:15;1533:200:75;14249:114:15;-1:-1:-1;;;;;14373:14:15;;;;;;;:6;:14;;;;;;;;:23;;;:34;;-1:-1:-1;;14373:34:15;-1:-1:-1;;;14373:34:15;;;;;;;;;14423:37;;;14373:14;14423:37;14164:303;;:::o;14614:374::-;-1:-1:-1;;;;;;;14701:21:15;;;14697:90;;14745:31;;-1:-1:-1;;;14745:31:15;;-1:-1:-1;;;;;1695:31:75;;14745::15;;;1677:50:75;1650:18;;14745:31:15;1533:200:75;14697:90:15;-1:-1:-1;;;;;14858:14:15;;14797:13;14858:14;;;:6;:14;;;;;;;:25;;:60;;-1:-1:-1;;;14858:25:15;;-1:-1:-1;;;;;14858:25:15;14895:8;7773:6;14858:36;:60::i;:::-;-1:-1:-1;;;;;14821:14:15;;;;;;:6;:14;;;;;;;;;:25;14820:98;;-1:-1:-1;;;;;14820:98:15;;;-1:-1:-1;;;14820:98:15;-1:-1:-1;;;;14820:98:15;;;;;;;;;;14934:47;;14820:98;;-1:-1:-1;14934:47:15;;;;14964:8;;14820:98;;19266:10:75;19254:23;;;;19236:42;;19326:14;19314:27;19309:2;19294:18;;19287:55;19224:2;19209:18;;19066:282;3900:253:34;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;29025:157:15:-;29102:4;29141:34;29158:6;29166:8;29141:16;:34::i;:::-;29125:12;;:50;;29025:157;-1:-1:-1;;;29025:157:15:o;12865:400::-;12944:4;-1:-1:-1;;;;;;;12964:21:15;;;12960:90;;13008:31;;-1:-1:-1;;;13008:31:15;;-1:-1:-1;;;;;1695:31:75;;13008::15;;;1677:50:75;1650:18;;13008:31:15;1533:200:75;12960:90:15;-1:-1:-1;;;;;13064:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;13064:31:15;;;;;;;;;:37;;;:42;;13060:85;;-1:-1:-1;13129:5:15;13122:12;;13060:85;-1:-1:-1;;;;;13162:14:15;;;;;;:6;:14;;;;;;;;-1:-1:-1;;;;;13162:31:15;;;;;;;;;;13155:38;;-1:-1:-1;;;;;;13155:38:15;;;13209:28;13162:31;;:14;13209:28;;;-1:-1:-1;13254:4:15;12865:400;;;;:::o;750:110:44:-;794:6;819:34;837:15;819:17;:34::i;:::-;812:41;;750:110;:::o;16170:287:15:-;-1:-1:-1;;;;;16323:16:15;;16260:13;16323:16;;;;;;;;;;:27;;;:62;;-1:-1:-1;;;;;16323:27:15;16362:8;7773:6;16323:38;:62::i;:::-;-1:-1:-1;;;;;16284:16:15;;:8;:16;;;;;;;;;;;;:27;;16283:102;;-1:-1:-1;;16283:102:15;-1:-1:-1;;;;;16283:102:15;;;;;;;;;;;16401:49;;19266:10:75;19254:23;;19236:42;;19326:14;19314:27;;19294:18;;;19287:55;;;;16283:102:15;;-1:-1:-1;16284:16:15;16401:49;;19209:18:75;16401:49:15;19066:282:75;3189:111:42;3247:7;3066:5;;;3281;;;3065:36;3060:42;;3273:20;2825:294;19190:272:15;19262:20;19285:23;;;:10;:23;;;;;:33;;;19332:18;;;;;:48;;;19355:25;19366:13;19355:10;:25::i;:::-;19354:26;19332:48;19328:128;;;19403:42;;-1:-1:-1;;;19403:42:15;;;;;8204:25:75;;;8177:18;;19403:42:15;8058:177:75;27798:1107:15;27879:14;;27937:1;27923:15;;27919:63;;;-1:-1:-1;27962:5:15;;-1:-1:-1;27962:5:15;27954:17;;27919:63;28014:4;-1:-1:-1;;;;;27996:23:15;;;27992:334;;28262:49;28283:4;28290:20;28305:4;;28290:14;:20::i;:::-;28262:12;:49::i;27992:334::-;28337:20;28359:13;28374:21;28399:27;28421:4;;28399:21;:27::i;:::-;28336:90;;;;;;28507:15;28506:16;:49;;;;;28526:29;28549:4;28526:14;:29::i;:::-;28502:97;;;28579:5;28586:1;28571:17;;;;;;;;;28502:97;28610:11;28623:21;28648:23;28656:6;28664;28648:7;:23::i;:::-;28609:62;;;;28686:6;28681:55;;28716:5;28723:1;28708:17;;;;;;;;;;;28681:55;28821:40;28830:14;28821:40;;28846:14;28821:40;;:8;:40::i;:::-;28880:10;;;;;;;-1:-1:-1;27798:1107:15;-1:-1:-1;;;;;;;;;27798:1107:15:o;25207:1678::-;25295:20;;;25388:1;25374:15;;25370:66;;;-1:-1:-1;25413:5:15;;-1:-1:-1;25413:5:15;;-1:-1:-1;25413:5:15;25405:20;;25370:66;25446:15;25464:20;25479:4;;25464:14;:20::i;:::-;25446:38;-1:-1:-1;;;;;;;25604:35:15;;-1:-1:-1;;;25604:35:15;;:89;;-1:-1:-1;;;;;;;25655:38:15;;-1:-1:-1;;;25655:38:15;25604:89;:146;;;-1:-1:-1;;;;;;;25709:41:15;;-1:-1:-1;;;25709:41:15;25604:146;:201;;;-1:-1:-1;;;;;;;25766:39:15;;-1:-1:-1;;;25766:39:15;25604:201;:262;;;-1:-1:-1;;;;;;;25821:45:15;;-1:-1:-1;;;25821:45:15;25604:262;25587:343;;;25899:4;5433:16;25917:1;25891:28;;;;;;;;;25587:343;-1:-1:-1;;;;;;26037:41:15;;-1:-1:-1;;;26037:41:15;;:98;;-1:-1:-1;;;;;;;26094:41:15;;-1:-1:-1;;;26094:41:15;26037:98;:161;;;-1:-1:-1;;;;;;;26151:47:15;;-1:-1:-1;;;26151:47:15;26037:161;26020:414;;;26266:14;26294:15;26304:4;26299;26294;;:15;:::i;:::-;26283:38;;;;;;;:::i;:::-;26266:55;;26335:12;26350:27;26370:6;26350:19;:27::i;:::-;26399:4;;-1:-1:-1;5433:16:15;;-1:-1:-1;26335:42:15;-1:-1:-1;26391:32:15;;-1:-1:-1;;;26391:32:15;26020:414;-1:-1:-1;;;;;;26553:35:15;;-1:-1:-1;;;26553:35:15;;:75;;-1:-1:-1;;;;;;;26592:36:15;;-1:-1:-1;;;26592:36:15;26553:75;26549:254;;;26687:13;26714:15;26724:4;26719;26714;;:15;:::i;:::-;26703:37;;;;;;;:::i;:::-;26687:53;;26762:4;26768:20;26781:6;-1:-1:-1;;;;;8466:14:15;;;8441:6;8466:14;;;:6;:14;;;;;;;;:20;;;;8375:118;26768:20;26790:1;26754:38;;;;;;;;;;26549:254;26821:5;26828:46;26858:4;26865:8;26828:21;:46::i;:::-;26876:1;26813:65;;;;;;;25207:1678;;;;;;:::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;12386:32:75;;4917:24:34;;;12368:51:75;12341:18;;4917:24:34;12222:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;4033:390:44;4154:18;4174:13;4199:12;4214:10;:4;-1:-1:-1;;;;;4214:8:44;;:10::i;:::-;4199:25;;4234:14;4258:61;4267:10;4258:61;;4287:8;4279:16;;:5;:16;;;:39;;4317:1;4279:39;;;4298:16;4306:8;4298:5;:16;:::i;:::-;4258:61;;:8;:61::i;:::-;4234:86;;4353:7;4339:21;;:11;:9;:11::i;:::-;:21;;;;:::i;:::-;4330:30;-1:-1:-1;5126:19:44;;;5120:2;5096:26;;;;;5089:2;5070:21;;;;;5069:54;:76;4370:46;;;;4033:390;;;;;;:::o;2868:307::-;4764:9;4771:2;4764:9;;;;-1:-1:-1;;;;;3062:11:44;;4800:9;4807:2;4800:9;;;;;;3092:19;;;;;:76;;3136:11;3149:10;3161:6;3092:76;;;3115:10;3127:1;3130;3092:76;3085:83;;;;;;2868:307;;;;;:::o;14296:213:43:-;14352:6;14382:16;14374:24;;14370:103;;;14421:41;;-1:-1:-1;;;14421:41:43;;14452:2;14421:41;;;19969:36:75;20021:18;;;20014:34;;;19942:18;;14421:41:43;19788:266:75;14370:103:43;-1:-1:-1;14496:5:43;14296:213::o;5543:487:34:-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;5670:354;5543:487;:::o;14:131:75:-;-1:-1:-1;;;;;89:31:75;;79:42;;69:70;;135:1;132;125:12;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:75;;-1:-1:-1;;;;;349:30:75;;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:75;;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:75;1041:18;;1028:32;-1:-1:-1;;;;;1072:30:75;;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:75;-1:-1:-1;1296:37:75;;-1:-1:-1;1329:2:75;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:75;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:75;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:75;;-1:-1:-1;;;;;2937:30:75;;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:75;3414:18;;3401:32;-1:-1:-1;;;;;3445:30:75;;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:75;;-1:-1:-1;;;;3101:544:75: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:75;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:75;;5263:180;-1:-1:-1;5263:180:75: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:75;;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:75;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:75;7699:18;;7686:32;7727:33;7686:32;7727:33;:::i;:::-;7779:7;-1:-1:-1;7837:2:75;7822:18;;7809:32;-1:-1:-1;;;;;7853:30:75;;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:75;-1:-1:-1;;;;7368:685:75: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:75;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:75;-1:-1:-1;;;;8240:447:75: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:75;;8692:1016;-1:-1:-1;;;;;;8692:1016:75: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:75;10024:18;;10011:32;10052:33;10011:32;10052:33;:::i;:::-;10104:7;-1:-1:-1;10163:2:75;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:75;11176:18;;11163:32;-1:-1:-1;;;;;11207:30:75;;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:75;-1:-1:-1;;11453:2:75;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:75;;-1:-1:-1;;10847:720:75: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:75;12999:16;;;13017:4;12995:27;;;12988:38;;;;13080:2;13059:15;;;-1:-1:-1;;13055:29:75;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:75: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:75;;;13804:51;;13891:32;;13886:2;13871:18;;13864:60;13960:2;13955;13940:18;;13933:30;;;-1:-1:-1;;13980:62:75;;14023:18;;14015:6;14007;13980:62;:::i;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:75;;;14618:25;;;;;-1:-1:-1;14318:331:75: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:75;;15150:50;;;15196:1;15193;15186:12;15150:50;15229:4;15217:17;;-1:-1:-1;15260:14:75;15256:27;;;15246:38;;15243:58;;;15297:1;15294;15287:12;15312:211;15353:3;15391:5;15385:12;15435:6;15428:4;15421:5;15417:16;15412:3;15406:36;15497:1;15461:16;;15486:13;;;-1:-1:-1;15461:16:75;;15312:211;-1:-1:-1;15312:211:75:o;15528:343::-;15757:6;15749;15744:3;15731:33;15713:3;15792:6;15787:3;15783:16;15819:1;15815:2;15808:13;15837:28;15862:2;15854:6;15837:28;:::i;16375:179::-;16474:14;16443:22;;;16467;;;16439:51;;16502:23;;16499:49;;;16528:18;;:::i;16559:531::-;16810:14;16798:27;;16780:46;;-1:-1:-1;;;;;16862:32:75;;;16857:2;16842:18;;16835:60;16931:32;;16926:2;16911:18;;16904:60;17000:3;16995:2;16980:18;;16973:31;;;-1:-1:-1;;17021:63:75;;17064:19;;17056:6;17048;17021:63;:::i;:::-;17013:71;16559:531;-1:-1:-1;;;;;;;16559:531:75:o;17604:338::-;17724:19;;-1:-1:-1;;;;;;17761:29:75;;;17810:1;17802:10;;17799:137;;;-1:-1:-1;;;;;;17871:1:75;17867:11;;;17864:1;17860:19;17856:46;;;17848:55;;17844:82;;-1:-1:-1;17799:137:75;;17604:338;;;;:::o;18504:189::-;18633:3;18658:29;18683:3;18675:6;18658:29;:::i;19613:170::-;19710:10;19703:18;;;19683;;;19679:43;;19734:20;;19731:46;;;19757: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.28+commit.7893614a\"},\"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 `immediate` 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 contract 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 operation 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 case 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/AccessManager.sol\":{\"keccak256\":\"0x874c56d0f80ee2acd419bd5cb587be74cd72d44f1e9dc6300590adcef1f80d07\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4913619915074c2129d26054abd84de2714488a33a8172f03296f5f88d8908f9\",\"dweb:/ipfs/QmaEkbs5PM5p3ugg7oBZa6MUpYJU45qMUGCpxrHiPMkVKs\"]},\"@openzeppelin/contracts/access/manager/IAccessManaged.sol\":{\"keccak256\":\"0xaba93d42cd70e1418782951132d97b31ddce5f50ad81090884b6d0e41caac9d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b110886f83e3e98a11255a3b56790322e8d83e513304dde71299406685fc6694\",\"dweb:/ipfs/QmPwroS7MUUk1EmsvaJqU6aarhQ8ewJtJMg7xxmTsaxZEv\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x9be2d08a326515805bc9cf6315b7953f8d1ebe88abf48c2d645fb1fa8211a0e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e750d656e37efaefbb2300051ec2c4c725db266c5ff89bc985f7ecb8d214c4f4\",\"dweb:/ipfs/QmT51FsZes2n2nrLLh3d8YkBYKY43CtwScZxixcLGzL9r6\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@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/Multicall.sol\":{\"keccak256\":\"0x8bbd8e639a2845206c2525c3e41892232a78372d952974bc1d2809b6879f6946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c92f1b562e8603218d97751af56733d2f695f16da82389d53139d5e63496a45\",\"dweb:/ipfs/QmRiVMRTFjYBHDt5mN4E6TMotiE28XgWxEBPGewp5GTZ9X\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":4972,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_targets","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(TargetConfig)4927_storage)"},{"astId":4977,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_roles","offset":0,"slot":"1","type":"t_mapping(t_uint64,t_struct(Role)4946_storage)"},{"astId":4982,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"_schedules","offset":0,"slot":"2","type":"t_mapping(t_bytes32,t_struct(Schedule)4951_storage)"},{"astId":4984,"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)4933_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct AccessManager.Access)","numberOfBytes":"32","value":"t_struct(Access)4933_storage"},"t_mapping(t_address,t_struct(TargetConfig)4927_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct AccessManager.TargetConfig)","numberOfBytes":"32","value":"t_struct(TargetConfig)4927_storage"},"t_mapping(t_bytes32,t_struct(Schedule)4951_storage)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => struct AccessManager.Schedule)","numberOfBytes":"32","value":"t_struct(Schedule)4951_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)4946_storage)":{"encoding":"mapping","key":"t_uint64","label":"mapping(uint64 => struct AccessManager.Role)","numberOfBytes":"32","value":"t_struct(Role)4946_storage"},"t_struct(Access)4933_storage":{"encoding":"inplace","label":"struct AccessManager.Access","members":[{"astId":4929,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"since","offset":0,"slot":"0","type":"t_uint48"},{"astId":4932,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"delay","offset":6,"slot":"0","type":"t_userDefinedValueType(Delay)13111"}],"numberOfBytes":"32"},"t_struct(Role)4946_storage":{"encoding":"inplace","label":"struct AccessManager.Role","members":[{"astId":4938,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"members","offset":0,"slot":"0","type":"t_mapping(t_address,t_struct(Access)4933_storage)"},{"astId":4940,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"admin","offset":0,"slot":"1","type":"t_uint64"},{"astId":4942,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"guardian","offset":8,"slot":"1","type":"t_uint64"},{"astId":4945,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"grantDelay","offset":16,"slot":"1","type":"t_userDefinedValueType(Delay)13111"}],"numberOfBytes":"64"},"t_struct(Schedule)4951_storage":{"encoding":"inplace","label":"struct AccessManager.Schedule","members":[{"astId":4948,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"timepoint","offset":0,"slot":"0","type":"t_uint48"},{"astId":4950,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"nonce","offset":6,"slot":"0","type":"t_uint32"}],"numberOfBytes":"32"},"t_struct(TargetConfig)4927_storage":{"encoding":"inplace","label":"struct AccessManager.TargetConfig","members":[{"astId":4921,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"allowedRoles","offset":0,"slot":"0","type":"t_mapping(t_bytes4,t_uint64)"},{"astId":4924,"contract":"@openzeppelin/contracts/access/manager/AccessManager.sol:AccessManager","label":"adminDelay","offset":0,"slot":"1","type":"t_userDefinedValueType(Delay)13111"},{"astId":4926,"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)13111":{"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/IAccessManaged.sol\":{\"keccak256\":\"0xaba93d42cd70e1418782951132d97b31ddce5f50ad81090884b6d0e41caac9d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b110886f83e3e98a11255a3b56790322e8d83e513304dde71299406685fc6694\",\"dweb:/ipfs/QmPwroS7MUUk1EmsvaJqU6aarhQ8ewJtJMg7xxmTsaxZEv\"]}},\"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.28+commit.7893614a\"},\"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 `immediate` 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 contract 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 operation 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 case 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x9be2d08a326515805bc9cf6315b7953f8d1ebe88abf48c2d645fb1fa8211a0e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e750d656e37efaefbb2300051ec2c4c725db266c5ff89bc985f7ecb8d214c4f4\",\"dweb:/ipfs/QmT51FsZes2n2nrLLh3d8YkBYKY43CtwScZxixcLGzL9r6\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]}},\"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.28+commit.7893614a\"},\"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\":\"Mints shares Vault shares to receiver by depositing exactly amount of 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   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 by depositing amount of 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 redeemption 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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.28+commit.7893614a\"},\"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-20. 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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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":{"@_7710":{"entryPoint":null,"id":7710,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":383,"id":8016,"parameterSlots":0,"returnSlots":0},"@_revert_9351":{"entryPoint":511,"id":9351,"parameterSlots":1,"returnSlots":0},"@_setImplementation_7796":{"entryPoint":145,"id":7796,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9269":{"entryPoint":268,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_7832":{"entryPoint":51,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":416,"id":9309,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":572,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":552,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1763:75","nodeType":"YulBlock","src":"0:1763:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"46:95:75","nodeType":"YulBlock","src":"46:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:75","nodeType":"YulLiteral","src":"63:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:75","nodeType":"YulLiteral","src":"70:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:75","nodeType":"YulLiteral","src":"75:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:75","nodeType":"YulIdentifier","src":"66:3:75"},"nativeSrc":"66:20:75","nodeType":"YulFunctionCall","src":"66:20:75"}],"functionName":{"name":"mstore","nativeSrc":"56:6:75","nodeType":"YulIdentifier","src":"56:6:75"},"nativeSrc":"56:31:75","nodeType":"YulFunctionCall","src":"56:31:75"},"nativeSrc":"56:31:75","nodeType":"YulExpressionStatement","src":"56:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:75","nodeType":"YulLiteral","src":"103:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:75","nodeType":"YulLiteral","src":"106:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:75","nodeType":"YulIdentifier","src":"96:6:75"},"nativeSrc":"96:15:75","nodeType":"YulFunctionCall","src":"96:15:75"},"nativeSrc":"96:15:75","nodeType":"YulExpressionStatement","src":"96:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:75","nodeType":"YulLiteral","src":"127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:75","nodeType":"YulLiteral","src":"130:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:75","nodeType":"YulIdentifier","src":"120:6:75"},"nativeSrc":"120:15:75","nodeType":"YulFunctionCall","src":"120:15:75"},"nativeSrc":"120:15:75","nodeType":"YulExpressionStatement","src":"120:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14:127:75","nodeType":"YulFunctionDefinition","src":"14:127:75"},{"body":{"nativeSrc":"253:994:75","nodeType":"YulBlock","src":"253:994:75","statements":[{"body":{"nativeSrc":"299:16:75","nodeType":"YulBlock","src":"299:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"308:1:75","nodeType":"YulLiteral","src":"308:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"311:1:75","nodeType":"YulLiteral","src":"311:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"301:6:75","nodeType":"YulIdentifier","src":"301:6:75"},"nativeSrc":"301:12:75","nodeType":"YulFunctionCall","src":"301:12:75"},"nativeSrc":"301:12:75","nodeType":"YulExpressionStatement","src":"301:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"274:7:75","nodeType":"YulIdentifier","src":"274:7:75"},{"name":"headStart","nativeSrc":"283:9:75","nodeType":"YulIdentifier","src":"283:9:75"}],"functionName":{"name":"sub","nativeSrc":"270:3:75","nodeType":"YulIdentifier","src":"270:3:75"},"nativeSrc":"270:23:75","nodeType":"YulFunctionCall","src":"270:23:75"},{"kind":"number","nativeSrc":"295:2:75","nodeType":"YulLiteral","src":"295:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"266:3:75","nodeType":"YulIdentifier","src":"266:3:75"},"nativeSrc":"266:32:75","nodeType":"YulFunctionCall","src":"266:32:75"},"nativeSrc":"263:52:75","nodeType":"YulIf","src":"263:52:75"},{"nativeSrc":"324:29:75","nodeType":"YulVariableDeclaration","src":"324:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"343:9:75","nodeType":"YulIdentifier","src":"343:9:75"}],"functionName":{"name":"mload","nativeSrc":"337:5:75","nodeType":"YulIdentifier","src":"337:5:75"},"nativeSrc":"337:16:75","nodeType":"YulFunctionCall","src":"337:16:75"},"variables":[{"name":"value","nativeSrc":"328:5:75","nodeType":"YulTypedName","src":"328:5:75","type":""}]},{"body":{"nativeSrc":"416:16:75","nodeType":"YulBlock","src":"416:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"425:1:75","nodeType":"YulLiteral","src":"425:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"428:1:75","nodeType":"YulLiteral","src":"428:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"418:6:75","nodeType":"YulIdentifier","src":"418:6:75"},"nativeSrc":"418:12:75","nodeType":"YulFunctionCall","src":"418:12:75"},"nativeSrc":"418:12:75","nodeType":"YulExpressionStatement","src":"418:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"375:5:75","nodeType":"YulIdentifier","src":"375:5:75"},{"arguments":[{"name":"value","nativeSrc":"386:5:75","nodeType":"YulIdentifier","src":"386:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"401:3:75","nodeType":"YulLiteral","src":"401:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"406:1:75","nodeType":"YulLiteral","src":"406:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"397:3:75","nodeType":"YulIdentifier","src":"397:3:75"},"nativeSrc":"397:11:75","nodeType":"YulFunctionCall","src":"397:11:75"},{"kind":"number","nativeSrc":"410:1:75","nodeType":"YulLiteral","src":"410:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"393:3:75","nodeType":"YulIdentifier","src":"393:3:75"},"nativeSrc":"393:19:75","nodeType":"YulFunctionCall","src":"393:19:75"}],"functionName":{"name":"and","nativeSrc":"382:3:75","nodeType":"YulIdentifier","src":"382:3:75"},"nativeSrc":"382:31:75","nodeType":"YulFunctionCall","src":"382:31:75"}],"functionName":{"name":"eq","nativeSrc":"372:2:75","nodeType":"YulIdentifier","src":"372:2:75"},"nativeSrc":"372:42:75","nodeType":"YulFunctionCall","src":"372:42:75"}],"functionName":{"name":"iszero","nativeSrc":"365:6:75","nodeType":"YulIdentifier","src":"365:6:75"},"nativeSrc":"365:50:75","nodeType":"YulFunctionCall","src":"365:50:75"},"nativeSrc":"362:70:75","nodeType":"YulIf","src":"362:70:75"},{"nativeSrc":"441:15:75","nodeType":"YulAssignment","src":"441:15:75","value":{"name":"value","nativeSrc":"451:5:75","nodeType":"YulIdentifier","src":"451:5:75"},"variableNames":[{"name":"value0","nativeSrc":"441:6:75","nodeType":"YulIdentifier","src":"441:6:75"}]},{"nativeSrc":"465:39:75","nodeType":"YulVariableDeclaration","src":"465:39:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"489:9:75","nodeType":"YulIdentifier","src":"489:9:75"},{"kind":"number","nativeSrc":"500:2:75","nodeType":"YulLiteral","src":"500:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"485:3:75","nodeType":"YulIdentifier","src":"485:3:75"},"nativeSrc":"485:18:75","nodeType":"YulFunctionCall","src":"485:18:75"}],"functionName":{"name":"mload","nativeSrc":"479:5:75","nodeType":"YulIdentifier","src":"479:5:75"},"nativeSrc":"479:25:75","nodeType":"YulFunctionCall","src":"479:25:75"},"variables":[{"name":"offset","nativeSrc":"469:6:75","nodeType":"YulTypedName","src":"469:6:75","type":""}]},{"body":{"nativeSrc":"547:16:75","nodeType":"YulBlock","src":"547:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"556:1:75","nodeType":"YulLiteral","src":"556:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"559:1:75","nodeType":"YulLiteral","src":"559:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"549:6:75","nodeType":"YulIdentifier","src":"549:6:75"},"nativeSrc":"549:12:75","nodeType":"YulFunctionCall","src":"549:12:75"},"nativeSrc":"549:12:75","nodeType":"YulExpressionStatement","src":"549:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"519:6:75","nodeType":"YulIdentifier","src":"519:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"535:2:75","nodeType":"YulLiteral","src":"535:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"539:1:75","nodeType":"YulLiteral","src":"539:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"531:3:75","nodeType":"YulIdentifier","src":"531:3:75"},"nativeSrc":"531:10:75","nodeType":"YulFunctionCall","src":"531:10:75"},{"kind":"number","nativeSrc":"543:1:75","nodeType":"YulLiteral","src":"543:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"527:3:75","nodeType":"YulIdentifier","src":"527:3:75"},"nativeSrc":"527:18:75","nodeType":"YulFunctionCall","src":"527:18:75"}],"functionName":{"name":"gt","nativeSrc":"516:2:75","nodeType":"YulIdentifier","src":"516:2:75"},"nativeSrc":"516:30:75","nodeType":"YulFunctionCall","src":"516:30:75"},"nativeSrc":"513:50:75","nodeType":"YulIf","src":"513:50:75"},{"nativeSrc":"572:32:75","nodeType":"YulVariableDeclaration","src":"572:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"586:9:75","nodeType":"YulIdentifier","src":"586:9:75"},{"name":"offset","nativeSrc":"597:6:75","nodeType":"YulIdentifier","src":"597:6:75"}],"functionName":{"name":"add","nativeSrc":"582:3:75","nodeType":"YulIdentifier","src":"582:3:75"},"nativeSrc":"582:22:75","nodeType":"YulFunctionCall","src":"582:22:75"},"variables":[{"name":"_1","nativeSrc":"576:2:75","nodeType":"YulTypedName","src":"576:2:75","type":""}]},{"body":{"nativeSrc":"652:16:75","nodeType":"YulBlock","src":"652:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"661:1:75","nodeType":"YulLiteral","src":"661:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"664:1:75","nodeType":"YulLiteral","src":"664:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"654:6:75","nodeType":"YulIdentifier","src":"654:6:75"},"nativeSrc":"654:12:75","nodeType":"YulFunctionCall","src":"654:12:75"},"nativeSrc":"654:12:75","nodeType":"YulExpressionStatement","src":"654:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"631:2:75","nodeType":"YulIdentifier","src":"631:2:75"},{"kind":"number","nativeSrc":"635:4:75","nodeType":"YulLiteral","src":"635:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"627:3:75","nodeType":"YulIdentifier","src":"627:3:75"},"nativeSrc":"627:13:75","nodeType":"YulFunctionCall","src":"627:13:75"},{"name":"dataEnd","nativeSrc":"642:7:75","nodeType":"YulIdentifier","src":"642:7:75"}],"functionName":{"name":"slt","nativeSrc":"623:3:75","nodeType":"YulIdentifier","src":"623:3:75"},"nativeSrc":"623:27:75","nodeType":"YulFunctionCall","src":"623:27:75"}],"functionName":{"name":"iszero","nativeSrc":"616:6:75","nodeType":"YulIdentifier","src":"616:6:75"},"nativeSrc":"616:35:75","nodeType":"YulFunctionCall","src":"616:35:75"},"nativeSrc":"613:55:75","nodeType":"YulIf","src":"613:55:75"},{"nativeSrc":"677:23:75","nodeType":"YulVariableDeclaration","src":"677:23:75","value":{"arguments":[{"name":"_1","nativeSrc":"697:2:75","nodeType":"YulIdentifier","src":"697:2:75"}],"functionName":{"name":"mload","nativeSrc":"691:5:75","nodeType":"YulIdentifier","src":"691:5:75"},"nativeSrc":"691:9:75","nodeType":"YulFunctionCall","src":"691:9:75"},"variables":[{"name":"length","nativeSrc":"681:6:75","nodeType":"YulTypedName","src":"681:6:75","type":""}]},{"body":{"nativeSrc":"743:22:75","nodeType":"YulBlock","src":"743:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"745:16:75","nodeType":"YulIdentifier","src":"745:16:75"},"nativeSrc":"745:18:75","nodeType":"YulFunctionCall","src":"745:18:75"},"nativeSrc":"745:18:75","nodeType":"YulExpressionStatement","src":"745:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"715:6:75","nodeType":"YulIdentifier","src":"715:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"731:2:75","nodeType":"YulLiteral","src":"731:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"735:1:75","nodeType":"YulLiteral","src":"735:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"727:3:75","nodeType":"YulIdentifier","src":"727:3:75"},"nativeSrc":"727:10:75","nodeType":"YulFunctionCall","src":"727:10:75"},{"kind":"number","nativeSrc":"739:1:75","nodeType":"YulLiteral","src":"739:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"723:3:75","nodeType":"YulIdentifier","src":"723:3:75"},"nativeSrc":"723:18:75","nodeType":"YulFunctionCall","src":"723:18:75"}],"functionName":{"name":"gt","nativeSrc":"712:2:75","nodeType":"YulIdentifier","src":"712:2:75"},"nativeSrc":"712:30:75","nodeType":"YulFunctionCall","src":"712:30:75"},"nativeSrc":"709:56:75","nodeType":"YulIf","src":"709:56:75"},{"nativeSrc":"774:23:75","nodeType":"YulVariableDeclaration","src":"774:23:75","value":{"arguments":[{"kind":"number","nativeSrc":"794:2:75","nodeType":"YulLiteral","src":"794:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"788:5:75","nodeType":"YulIdentifier","src":"788:5:75"},"nativeSrc":"788:9:75","nodeType":"YulFunctionCall","src":"788:9:75"},"variables":[{"name":"memPtr","nativeSrc":"778:6:75","nodeType":"YulTypedName","src":"778:6:75","type":""}]},{"nativeSrc":"806:85:75","nodeType":"YulVariableDeclaration","src":"806:85:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"828:6:75","nodeType":"YulIdentifier","src":"828:6:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"852:6:75","nodeType":"YulIdentifier","src":"852:6:75"},{"kind":"number","nativeSrc":"860:4:75","nodeType":"YulLiteral","src":"860:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"848:3:75","nodeType":"YulIdentifier","src":"848:3:75"},"nativeSrc":"848:17:75","nodeType":"YulFunctionCall","src":"848:17:75"},{"arguments":[{"kind":"number","nativeSrc":"871:2:75","nodeType":"YulLiteral","src":"871:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"867:3:75","nodeType":"YulIdentifier","src":"867:3:75"},"nativeSrc":"867:7:75","nodeType":"YulFunctionCall","src":"867:7:75"}],"functionName":{"name":"and","nativeSrc":"844:3:75","nodeType":"YulIdentifier","src":"844:3:75"},"nativeSrc":"844:31:75","nodeType":"YulFunctionCall","src":"844:31:75"},{"kind":"number","nativeSrc":"877:2:75","nodeType":"YulLiteral","src":"877:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"840:3:75","nodeType":"YulIdentifier","src":"840:3:75"},"nativeSrc":"840:40:75","nodeType":"YulFunctionCall","src":"840:40:75"},{"arguments":[{"kind":"number","nativeSrc":"886:2:75","nodeType":"YulLiteral","src":"886:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"882:3:75","nodeType":"YulIdentifier","src":"882:3:75"},"nativeSrc":"882:7:75","nodeType":"YulFunctionCall","src":"882:7:75"}],"functionName":{"name":"and","nativeSrc":"836:3:75","nodeType":"YulIdentifier","src":"836:3:75"},"nativeSrc":"836:54:75","nodeType":"YulFunctionCall","src":"836:54:75"}],"functionName":{"name":"add","nativeSrc":"824:3:75","nodeType":"YulIdentifier","src":"824:3:75"},"nativeSrc":"824:67:75","nodeType":"YulFunctionCall","src":"824:67:75"},"variables":[{"name":"newFreePtr","nativeSrc":"810:10:75","nodeType":"YulTypedName","src":"810:10:75","type":""}]},{"body":{"nativeSrc":"966:22:75","nodeType":"YulBlock","src":"966:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"968:16:75","nodeType":"YulIdentifier","src":"968:16:75"},"nativeSrc":"968:18:75","nodeType":"YulFunctionCall","src":"968:18:75"},"nativeSrc":"968:18:75","nodeType":"YulExpressionStatement","src":"968:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"909:10:75","nodeType":"YulIdentifier","src":"909:10:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"929:2:75","nodeType":"YulLiteral","src":"929:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"933:1:75","nodeType":"YulLiteral","src":"933:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"925:3:75","nodeType":"YulIdentifier","src":"925:3:75"},"nativeSrc":"925:10:75","nodeType":"YulFunctionCall","src":"925:10:75"},{"kind":"number","nativeSrc":"937:1:75","nodeType":"YulLiteral","src":"937:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"921:3:75","nodeType":"YulIdentifier","src":"921:3:75"},"nativeSrc":"921:18:75","nodeType":"YulFunctionCall","src":"921:18:75"}],"functionName":{"name":"gt","nativeSrc":"906:2:75","nodeType":"YulIdentifier","src":"906:2:75"},"nativeSrc":"906:34:75","nodeType":"YulFunctionCall","src":"906:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"945:10:75","nodeType":"YulIdentifier","src":"945:10:75"},{"name":"memPtr","nativeSrc":"957:6:75","nodeType":"YulIdentifier","src":"957:6:75"}],"functionName":{"name":"lt","nativeSrc":"942:2:75","nodeType":"YulIdentifier","src":"942:2:75"},"nativeSrc":"942:22:75","nodeType":"YulFunctionCall","src":"942:22:75"}],"functionName":{"name":"or","nativeSrc":"903:2:75","nodeType":"YulIdentifier","src":"903:2:75"},"nativeSrc":"903:62:75","nodeType":"YulFunctionCall","src":"903:62:75"},"nativeSrc":"900:88:75","nodeType":"YulIf","src":"900:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1004:2:75","nodeType":"YulLiteral","src":"1004:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1008:10:75","nodeType":"YulIdentifier","src":"1008:10:75"}],"functionName":{"name":"mstore","nativeSrc":"997:6:75","nodeType":"YulIdentifier","src":"997:6:75"},"nativeSrc":"997:22:75","nodeType":"YulFunctionCall","src":"997:22:75"},"nativeSrc":"997:22:75","nodeType":"YulExpressionStatement","src":"997:22:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1035:6:75","nodeType":"YulIdentifier","src":"1035:6:75"},{"name":"length","nativeSrc":"1043:6:75","nodeType":"YulIdentifier","src":"1043:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1028:6:75","nodeType":"YulIdentifier","src":"1028:6:75"},"nativeSrc":"1028:22:75","nodeType":"YulFunctionCall","src":"1028:22:75"},"nativeSrc":"1028:22:75","nodeType":"YulExpressionStatement","src":"1028:22:75"},{"body":{"nativeSrc":"1100:16:75","nodeType":"YulBlock","src":"1100:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1109:1:75","nodeType":"YulLiteral","src":"1109:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1112:1:75","nodeType":"YulLiteral","src":"1112:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1102:6:75","nodeType":"YulIdentifier","src":"1102:6:75"},"nativeSrc":"1102:12:75","nodeType":"YulFunctionCall","src":"1102:12:75"},"nativeSrc":"1102:12:75","nodeType":"YulExpressionStatement","src":"1102:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1073:2:75","nodeType":"YulIdentifier","src":"1073:2:75"},{"name":"length","nativeSrc":"1077:6:75","nodeType":"YulIdentifier","src":"1077:6:75"}],"functionName":{"name":"add","nativeSrc":"1069:3:75","nodeType":"YulIdentifier","src":"1069:3:75"},"nativeSrc":"1069:15:75","nodeType":"YulFunctionCall","src":"1069:15:75"},{"kind":"number","nativeSrc":"1086:2:75","nodeType":"YulLiteral","src":"1086:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1065:3:75","nodeType":"YulIdentifier","src":"1065:3:75"},"nativeSrc":"1065:24:75","nodeType":"YulFunctionCall","src":"1065:24:75"},{"name":"dataEnd","nativeSrc":"1091:7:75","nodeType":"YulIdentifier","src":"1091:7:75"}],"functionName":{"name":"gt","nativeSrc":"1062:2:75","nodeType":"YulIdentifier","src":"1062:2:75"},"nativeSrc":"1062:37:75","nodeType":"YulFunctionCall","src":"1062:37:75"},"nativeSrc":"1059:57:75","nodeType":"YulIf","src":"1059:57:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1135:6:75","nodeType":"YulIdentifier","src":"1135:6:75"},{"kind":"number","nativeSrc":"1143:2:75","nodeType":"YulLiteral","src":"1143:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1131:3:75","nodeType":"YulIdentifier","src":"1131:3:75"},"nativeSrc":"1131:15:75","nodeType":"YulFunctionCall","src":"1131:15:75"},{"arguments":[{"name":"_1","nativeSrc":"1152:2:75","nodeType":"YulIdentifier","src":"1152:2:75"},{"kind":"number","nativeSrc":"1156:2:75","nodeType":"YulLiteral","src":"1156:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1148:3:75","nodeType":"YulIdentifier","src":"1148:3:75"},"nativeSrc":"1148:11:75","nodeType":"YulFunctionCall","src":"1148:11:75"},{"name":"length","nativeSrc":"1161:6:75","nodeType":"YulIdentifier","src":"1161:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1125:5:75","nodeType":"YulIdentifier","src":"1125:5:75"},"nativeSrc":"1125:43:75","nodeType":"YulFunctionCall","src":"1125:43:75"},"nativeSrc":"1125:43:75","nodeType":"YulExpressionStatement","src":"1125:43:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1192:6:75","nodeType":"YulIdentifier","src":"1192:6:75"},{"name":"length","nativeSrc":"1200:6:75","nodeType":"YulIdentifier","src":"1200:6:75"}],"functionName":{"name":"add","nativeSrc":"1188:3:75","nodeType":"YulIdentifier","src":"1188:3:75"},"nativeSrc":"1188:19:75","nodeType":"YulFunctionCall","src":"1188:19:75"},{"kind":"number","nativeSrc":"1209:2:75","nodeType":"YulLiteral","src":"1209:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1184:3:75","nodeType":"YulIdentifier","src":"1184:3:75"},"nativeSrc":"1184:28:75","nodeType":"YulFunctionCall","src":"1184:28:75"},{"kind":"number","nativeSrc":"1214:1:75","nodeType":"YulLiteral","src":"1214:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1177:6:75","nodeType":"YulIdentifier","src":"1177:6:75"},"nativeSrc":"1177:39:75","nodeType":"YulFunctionCall","src":"1177:39:75"},"nativeSrc":"1177:39:75","nodeType":"YulExpressionStatement","src":"1177:39:75"},{"nativeSrc":"1225:16:75","nodeType":"YulAssignment","src":"1225:16:75","value":{"name":"memPtr","nativeSrc":"1235:6:75","nodeType":"YulIdentifier","src":"1235:6:75"},"variableNames":[{"name":"value1","nativeSrc":"1225:6:75","nodeType":"YulIdentifier","src":"1225:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"146:1101:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"211:9:75","nodeType":"YulTypedName","src":"211:9:75","type":""},{"name":"dataEnd","nativeSrc":"222:7:75","nodeType":"YulTypedName","src":"222:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"234:6:75","nodeType":"YulTypedName","src":"234:6:75","type":""},{"name":"value1","nativeSrc":"242:6:75","nodeType":"YulTypedName","src":"242:6:75","type":""}],"src":"146:1101:75"},{"body":{"nativeSrc":"1353:102:75","nodeType":"YulBlock","src":"1353:102:75","statements":[{"nativeSrc":"1363:26:75","nodeType":"YulAssignment","src":"1363:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1375:9:75","nodeType":"YulIdentifier","src":"1375:9:75"},{"kind":"number","nativeSrc":"1386:2:75","nodeType":"YulLiteral","src":"1386:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1371:3:75","nodeType":"YulIdentifier","src":"1371:3:75"},"nativeSrc":"1371:18:75","nodeType":"YulFunctionCall","src":"1371:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1363:4:75","nodeType":"YulIdentifier","src":"1363:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1405:9:75","nodeType":"YulIdentifier","src":"1405:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1420:6:75","nodeType":"YulIdentifier","src":"1420:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1436:3:75","nodeType":"YulLiteral","src":"1436:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1441:1:75","nodeType":"YulLiteral","src":"1441:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1432:3:75","nodeType":"YulIdentifier","src":"1432:3:75"},"nativeSrc":"1432:11:75","nodeType":"YulFunctionCall","src":"1432:11:75"},{"kind":"number","nativeSrc":"1445:1:75","nodeType":"YulLiteral","src":"1445:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1428:3:75","nodeType":"YulIdentifier","src":"1428:3:75"},"nativeSrc":"1428:19:75","nodeType":"YulFunctionCall","src":"1428:19:75"}],"functionName":{"name":"and","nativeSrc":"1416:3:75","nodeType":"YulIdentifier","src":"1416:3:75"},"nativeSrc":"1416:32:75","nodeType":"YulFunctionCall","src":"1416:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1398:6:75","nodeType":"YulIdentifier","src":"1398:6:75"},"nativeSrc":"1398:51:75","nodeType":"YulFunctionCall","src":"1398:51:75"},"nativeSrc":"1398:51:75","nodeType":"YulExpressionStatement","src":"1398:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1252:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1322:9:75","nodeType":"YulTypedName","src":"1322:9:75","type":""},{"name":"value0","nativeSrc":"1333:6:75","nodeType":"YulTypedName","src":"1333:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1344:4:75","nodeType":"YulTypedName","src":"1344:4:75","type":""}],"src":"1252:203:75"},{"body":{"nativeSrc":"1597:164:75","nodeType":"YulBlock","src":"1597:164:75","statements":[{"nativeSrc":"1607:27:75","nodeType":"YulVariableDeclaration","src":"1607:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"1627:6:75","nodeType":"YulIdentifier","src":"1627:6:75"}],"functionName":{"name":"mload","nativeSrc":"1621:5:75","nodeType":"YulIdentifier","src":"1621:5:75"},"nativeSrc":"1621:13:75","nodeType":"YulFunctionCall","src":"1621:13:75"},"variables":[{"name":"length","nativeSrc":"1611:6:75","nodeType":"YulTypedName","src":"1611:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1649:3:75","nodeType":"YulIdentifier","src":"1649:3:75"},{"arguments":[{"name":"value0","nativeSrc":"1658:6:75","nodeType":"YulIdentifier","src":"1658:6:75"},{"kind":"number","nativeSrc":"1666:4:75","nodeType":"YulLiteral","src":"1666:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1654:3:75","nodeType":"YulIdentifier","src":"1654:3:75"},"nativeSrc":"1654:17:75","nodeType":"YulFunctionCall","src":"1654:17:75"},{"name":"length","nativeSrc":"1673:6:75","nodeType":"YulIdentifier","src":"1673:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1643:5:75","nodeType":"YulIdentifier","src":"1643:5:75"},"nativeSrc":"1643:37:75","nodeType":"YulFunctionCall","src":"1643:37:75"},"nativeSrc":"1643:37:75","nodeType":"YulExpressionStatement","src":"1643:37:75"},{"nativeSrc":"1689:26:75","nodeType":"YulVariableDeclaration","src":"1689:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"1703:3:75","nodeType":"YulIdentifier","src":"1703:3:75"},{"name":"length","nativeSrc":"1708:6:75","nodeType":"YulIdentifier","src":"1708:6:75"}],"functionName":{"name":"add","nativeSrc":"1699:3:75","nodeType":"YulIdentifier","src":"1699:3:75"},"nativeSrc":"1699:16:75","nodeType":"YulFunctionCall","src":"1699:16:75"},"variables":[{"name":"_1","nativeSrc":"1693:2:75","nodeType":"YulTypedName","src":"1693:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"1731:2:75","nodeType":"YulIdentifier","src":"1731:2:75"},{"kind":"number","nativeSrc":"1735:1:75","nodeType":"YulLiteral","src":"1735:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1724:6:75","nodeType":"YulIdentifier","src":"1724:6:75"},"nativeSrc":"1724:13:75","nodeType":"YulFunctionCall","src":"1724:13:75"},"nativeSrc":"1724:13:75","nodeType":"YulExpressionStatement","src":"1724:13:75"},{"nativeSrc":"1746:9:75","nodeType":"YulAssignment","src":"1746:9:75","value":{"name":"_1","nativeSrc":"1753:2:75","nodeType":"YulIdentifier","src":"1753:2:75"},"variableNames":[{"name":"end","nativeSrc":"1746:3:75","nodeType":"YulIdentifier","src":"1746:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1460:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1573:3:75","nodeType":"YulTypedName","src":"1573:3:75","type":""},{"name":"value0","nativeSrc":"1578:6:75","nodeType":"YulTypedName","src":"1578:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1589:3:75","nodeType":"YulTypedName","src":"1589:3:75","type":""}],"src":"1460:301:75"}]},"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    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}","id":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516103d03803806103d08339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60a38061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea26469706673582212204670e8e7cd251f59335a631155d68c8f58a6948ba380add1b417a629523e353864736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x3D0 CODESIZE SUB DUP1 PUSH2 0x3D0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x23C JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x321 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 0x17F 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x128 SWAP2 SWAP1 PUSH2 0x30B JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x160 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 0x165 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x176 DUP6 DUP4 DUP4 PUSH2 0x1A0 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19E 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 PUSH1 0x60 DUP3 PUSH2 0x1B5 JUMPI PUSH2 0x1B0 DUP3 PUSH2 0x1FF JUMP JUMPDEST PUSH2 0x1F8 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1F5 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 POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x20F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 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 0x24D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x263 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 0x27E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x28E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A7 JUMPI PUSH2 0x2A7 PUSH2 0x228 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 0x2D5 JUMPI PUSH2 0x2D5 PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x2EC 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 PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA3 DUP1 PUSH2 0x32D 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 CHAINID PUSH17 0xE8E7CD251F59335A631155D68C8F58A694 DUP12 LOG3 DUP1 0xAD 0xD1 0xB4 OR 0xA6 0x29 MSTORE RETURNDATACOPY CALLDATALOAD CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","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:75;;1805:47:27;;;1398:51:75;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;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:34;;-1:-1:-1;4007:67:34;-1:-1:-1;4091:55:34;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;6159:70;6113:122::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;1416:32:75;;4917:24:34;;;1398:51:75;1371:18;;4917:24:34;1252:203:75;4837:119:34;-1:-1:-1;4976:10:34;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;14:127:75;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:75;;372:42;;362:70;;428:1;425;418:12;362:70;500:2;485:18;;479:25;451:5;;-1:-1:-1;;;;;;516:30:75;;513:50;;;559:1;556;549:12;513:50;582:22;;635:4;627:13;;623:27;-1:-1:-1;613:55:75;;664:1;661;654:12;613:55;691:9;;-1:-1:-1;;;;;712:30:75;;709:56;;;745:18;;:::i;:::-;794:2;788:9;886:2;848:17;;-1:-1:-1;;844:31:75;;;877:2;840:40;836:54;824:67;;-1:-1:-1;;;;;906:34:75;;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:75;;;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;1460:301::-;1589:3;1627:6;1621:13;1673:6;1666:4;1658:6;1654:17;1649:3;1643:37;1735:1;1699:16;;1724:13;;;-1:-1:-1;1699:16:75;1460:301;-1:-1:-1;1460:301:75:o;:::-;600:1117:26;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_8052":{"entryPoint":null,"id":8052,"parameterSlots":0,"returnSlots":0},"@_delegate_8028":{"entryPoint":80,"id":8028,"parameterSlots":1,"returnSlots":0},"@_fallback_8044":{"entryPoint":12,"id":8044,"parameterSlots":0,"returnSlots":0},"@_implementation_7722":{"entryPoint":26,"id":7722,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea26469706673582212204670e8e7cd251f59335a631155d68c8f58a6948ba380add1b417a629523e353864736f6c634300081c0033","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 CHAINID PUSH17 0xE8E7CD251F59335A631155D68C8F58A694 DUP12 LOG3 DUP1 0xAD 0xD1 0xB4 OR 0xA6 0x29 MSTORE RETURNDATACOPY CALLDATALOAD CODESIZE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"600:1117:26:-:0;;;2649:11:28;:9;:11::i;:::-;600:1117:26;2323:83:28;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323: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:895:28:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122040bce6948bde32e42fc4f99e30472909790bbd23b028047961a2a39109b563b264736f6c634300081c0033","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 BLOCKHASH 0xBC 0xE6 SWAP5 DUP12 0xDE ORIGIN 0xE4 0x2F 0xC4 0xF9 SWAP15 ADDRESS SELFBALANCE 0x29 MULMOD PUSH26 0xBBD23B028047961A2A39109B563B264736F6C634300081C0033 ","sourceMap":"496:5741:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122040bce6948bde32e42fc4f99e30472909790bbd23b028047961a2a39109b563b264736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BLOCKHASH 0xBC 0xE6 SWAP5 DUP12 0xDE ORIGIN 0xE4 0x2F 0xC4 0xF9 SWAP15 ADDRESS SELFBALANCE 0x29 MULMOD PUSH26 0xBBD23B028047961A2A39109B563B264736F6C634300081C0033 ","sourceMap":"496:5741:27:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"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.28+commit.7893614a\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the 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\":\"See {IERC20-totalSupply}.\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":8086,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":8092,"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":8094,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":8096,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":8098,"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cfe51aef1b46091d16f3522da3b2ebad461170bcc84f3d5a182e1dca0a69209664736f6c634300081c0033","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 0xCF 0xE5 BYTE 0xEF SHL CHAINID MULMOD SAR AND RETURN MSTORE 0x2D LOG3 0xB2 0xEB 0xAD CHAINID GT PUSH17 0xBCC84F3D5A182E1DCA0A69209664736F6C PUSH4 0x4300081C STOP CALLER ","sourceMap":"750:8692:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;750:8692:33;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cfe51aef1b46091d16f3522da3b2ebad461170bcc84f3d5a182e1dca0a69209664736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xE5 BYTE 0xEF SHL CHAINID MULMOD SAR AND RETURN MSTORE 0x2D LOG3 0xB2 0xEB 0xAD CHAINID GT PUSH17 0xBCC84F3D5A182E1DCA0A69209664736F6C PUSH4 0x4300081C STOP CALLER ","sourceMap":"750:8692:33:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c2449b78151e4df7292f7f2d07f95525e81fb5576675d57dec74639cb33aeae664736f6c634300081c0033","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 0xC2 PREVRANDAO SWAP12 PUSH25 0x151E4DF7292F7F2D07F95525E81FB5576675D57DEC74639CB3 GASPRICE 0xEA 0xE6 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5799:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5799:34;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220c2449b78151e4df7292f7f2d07f95525e81fb5576675d57dec74639cb33aeae664736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 PREVRANDAO SWAP12 PUSH25 0x151E4DF7292F7F2D07F95525E81FB5576675D57DEC74639CB3 GASPRICE 0xEA 0xE6 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5799:34:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@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/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.28+commit.7893614a\"},\"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\":\"cancun\",\"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212209e4da8aa5333ac8d389d2e409b786095cfb5076699894c42d09ca4aa483d24be64736f6c634300081c0033","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 SWAP15 0x4D 0xA8 0xAA MSTORE8 CALLER 0xAC DUP14 CODESIZE SWAP14 0x2E BLOCKHASH SWAP12 PUSH25 0x6095CFB5076699894C42D09CA4AA483D24BE64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"411:484:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:36;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212209e4da8aa5333ac8d389d2e409b786095cfb5076699894c42d09ca4aa483d24be64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP15 0x4D 0xA8 0xAA MSTORE8 CALLER 0xAC DUP14 CODESIZE SWAP14 0x2E BLOCKHASH SWAP12 PUSH25 0x6095CFB5076699894C42D09CA4AA483D24BE64736F6C634300 ADDMOD SHR STOP CALLER ","sourceMap":"411:484:36:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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/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.28+commit.7893614a\"},\"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 {_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 {_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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@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/Multicall.sol\":{\"keccak256\":\"0x8bbd8e639a2845206c2525c3e41892232a78372d952974bc1d2809b6879f6946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c92f1b562e8603218d97751af56733d2f695f16da82389d53139d5e63496a45\",\"dweb:/ipfs/QmRiVMRTFjYBHDt5mN4E6TMotiE28XgWxEBPGewp5GTZ9X\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cca8e34ba4a10a3072e457ee409c3e14973552ffad66786674cea596605f229764736f6c634300081c0033","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 0xCC 0xA8 0xE3 0x4B LOG4 LOG1 EXP ADDRESS PUSH19 0xE457EE409C3E14973552FFAD66786674CEA596 PUSH1 0x5F 0x22 SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"657:1315:38:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:38;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cca8e34ba4a10a3072e457ee409c3e14973552ffad66786674cea596605f229764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0xA8 0xE3 0x4B LOG4 LOG1 EXP ADDRESS PUSH19 0xE457EE409C3E14973552FFAD66786674CEA596 PUSH1 0x5F 0x22 SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"657:1315:38:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202e11909616c8a357ae57cd11f3e744f7b7de3a3174b44a2b6467fa9904f2585764736f6c634300081c0033","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 0x2E GT SWAP1 SWAP7 AND 0xC8 LOG3 JUMPI 0xAE JUMPI 0xCD GT RETURN 0xE7 PREVRANDAO 0xF7 0xB7 0xDE GASPRICE BALANCE PUSH21 0xB44A2B6467FA9904F2585764736F6C634300081C00 CALLER ","sourceMap":"1407:2774:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:39;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212202e11909616c8a357ae57cd11f3e744f7b7de3a3174b44a2b6467fa9904f2585764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2E GT SWAP1 SWAP7 AND 0xC8 LOG3 JUMPI 0xAE JUMPI 0xCD GT RETURN 0xE7 PREVRANDAO 0xF7 0xB7 0xDE GASPRICE BALANCE PUSH21 0xB44A2B6467FA9904F2585764736F6C634300081C00 CALLER ","sourceMap":"1407:2774:39:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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/introspection/ERC165.sol":{"ERC165":{"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.28+commit.7893614a\"},\"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\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212200d61d7ffd6d6da702d16871c3bfa0a3845d7eed52dd13e969ca105d4cfe2c6b064736f6c634300081c0033","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 0xD PUSH2 0xD7FF 0xD6 0xD6 0xDA PUSH17 0x2D16871C3BFA0A3845D7EED52DD13E969C LOG1 SDIV 0xD4 0xCF 0xE2 0xC6 0xB0 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:28026:42:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:28026:42;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212200d61d7ffd6d6da702d16871c3bfa0a3845d7eed52dd13e969ca105d4cfe2c6b064736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD PUSH2 0xD7FF 0xD6 0xD6 0xDA PUSH17 0x2D16871C3BFA0A3845D7EED52DD13E969C LOG1 SDIV 0xD4 0xCF 0xE2 0xC6 0xB0 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:28026:42:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203f46a6ffb56326a473b5758acd55e32e99b937035796e94c7557579cea6fb9d464736f6c634300081c0033","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 EXTCODEHASH CHAINID 0xA6 SELFDESTRUCT 0xB5 PUSH4 0x26A473B5 PUSH22 0x8ACD55E32E99B937035796E94C7557579CEA6FB9D464 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"769:34173:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:43;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212203f46a6ffb56326a473b5758acd55e32e99b937035796e94c7557579cea6fb9d464736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODEHASH CHAINID 0xA6 SELFDESTRUCT 0xB5 PUSH4 0x26A473B5 PUSH22 0x8ACD55E32E99B937035796E94C7557579CEA6FB9D464 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"769:34173:43:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cd9ccc12b48650d6671ff012e1a23d34a0fc464d74d5dc050e4fe3726890afb464736f6c634300081c0033","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 0xCD SWAP13 0xCC SLT 0xB4 DUP7 POP 0xD6 PUSH8 0x1FF012E1A23D34A0 0xFC CHAINID 0x4D PUSH21 0xD5DC050E4FE3726890AFB464736F6C634300081C00 CALLER ","sourceMap":"640:4515:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;640:4515:44;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220cd9ccc12b48650d6671ff012e1a23d34a0fc464d74d5dc050e4fe3726890afb464736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD SWAP13 0xCC SLT 0xB4 DUP7 POP 0xD6 PUSH8 0x1FF012E1A23D34A0 0xFC CHAINID 0x4D PUSH21 0xD5DC050E4FE3726890AFB464736F6C634300081C00 CALLER ","sourceMap":"640:4515:44:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]}},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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/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":{"@_13558":{"entryPoint":null,"id":13558,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15720":{"entryPoint":null,"id":15720,"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_$8656t_contract$_IPool_$20704_fromMemory":{"entryPoint":319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_ReserveData_$19475_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_$22374__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:75","nodeType":"YulBlock","src":"0:4404:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"67:86:75","nodeType":"YulBlock","src":"67:86:75","statements":[{"body":{"nativeSrc":"131:16:75","nodeType":"YulBlock","src":"131:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"140:1:75","nodeType":"YulLiteral","src":"140:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"143:1:75","nodeType":"YulLiteral","src":"143:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"133:6:75","nodeType":"YulIdentifier","src":"133:6:75"},"nativeSrc":"133:12:75","nodeType":"YulFunctionCall","src":"133:12:75"},"nativeSrc":"133:12:75","nodeType":"YulExpressionStatement","src":"133:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"90:5:75","nodeType":"YulIdentifier","src":"90:5:75"},{"arguments":[{"name":"value","nativeSrc":"101:5:75","nodeType":"YulIdentifier","src":"101:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"116:3:75","nodeType":"YulLiteral","src":"116:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"121:1:75","nodeType":"YulLiteral","src":"121:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"112:3:75","nodeType":"YulIdentifier","src":"112:3:75"},"nativeSrc":"112:11:75","nodeType":"YulFunctionCall","src":"112:11:75"},{"kind":"number","nativeSrc":"125:1:75","nodeType":"YulLiteral","src":"125:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"108:3:75","nodeType":"YulIdentifier","src":"108:3:75"},"nativeSrc":"108:19:75","nodeType":"YulFunctionCall","src":"108:19:75"}],"functionName":{"name":"and","nativeSrc":"97:3:75","nodeType":"YulIdentifier","src":"97:3:75"},"nativeSrc":"97:31:75","nodeType":"YulFunctionCall","src":"97:31:75"}],"functionName":{"name":"eq","nativeSrc":"87:2:75","nodeType":"YulIdentifier","src":"87:2:75"},"nativeSrc":"87:42:75","nodeType":"YulFunctionCall","src":"87:42:75"}],"functionName":{"name":"iszero","nativeSrc":"80:6:75","nodeType":"YulIdentifier","src":"80:6:75"},"nativeSrc":"80:50:75","nodeType":"YulFunctionCall","src":"80:50:75"},"nativeSrc":"77:70:75","nodeType":"YulIf","src":"77:70:75"}]},"name":"validator_revert_contract_IERC20","nativeSrc":"14:139:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"56:5:75","nodeType":"YulTypedName","src":"56:5:75","type":""}],"src":"14:139:75"},{"body":{"nativeSrc":"286:303:75","nodeType":"YulBlock","src":"286:303:75","statements":[{"body":{"nativeSrc":"332:16:75","nodeType":"YulBlock","src":"332:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"341:1:75","nodeType":"YulLiteral","src":"341:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"344:1:75","nodeType":"YulLiteral","src":"344:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"334:6:75","nodeType":"YulIdentifier","src":"334:6:75"},"nativeSrc":"334:12:75","nodeType":"YulFunctionCall","src":"334:12:75"},"nativeSrc":"334:12:75","nodeType":"YulExpressionStatement","src":"334:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"307:7:75","nodeType":"YulIdentifier","src":"307:7:75"},{"name":"headStart","nativeSrc":"316:9:75","nodeType":"YulIdentifier","src":"316:9:75"}],"functionName":{"name":"sub","nativeSrc":"303:3:75","nodeType":"YulIdentifier","src":"303:3:75"},"nativeSrc":"303:23:75","nodeType":"YulFunctionCall","src":"303:23:75"},{"kind":"number","nativeSrc":"328:2:75","nodeType":"YulLiteral","src":"328:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"299:3:75","nodeType":"YulIdentifier","src":"299:3:75"},"nativeSrc":"299:32:75","nodeType":"YulFunctionCall","src":"299:32:75"},"nativeSrc":"296:52:75","nodeType":"YulIf","src":"296:52:75"},{"nativeSrc":"357:29:75","nodeType":"YulVariableDeclaration","src":"357:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"376:9:75","nodeType":"YulIdentifier","src":"376:9:75"}],"functionName":{"name":"mload","nativeSrc":"370:5:75","nodeType":"YulIdentifier","src":"370:5:75"},"nativeSrc":"370:16:75","nodeType":"YulFunctionCall","src":"370:16:75"},"variables":[{"name":"value","nativeSrc":"361:5:75","nodeType":"YulTypedName","src":"361:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"428:5:75","nodeType":"YulIdentifier","src":"428:5:75"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"395:32:75","nodeType":"YulIdentifier","src":"395:32:75"},"nativeSrc":"395:39:75","nodeType":"YulFunctionCall","src":"395:39:75"},"nativeSrc":"395:39:75","nodeType":"YulExpressionStatement","src":"395:39:75"},{"nativeSrc":"443:15:75","nodeType":"YulAssignment","src":"443:15:75","value":{"name":"value","nativeSrc":"453:5:75","nodeType":"YulIdentifier","src":"453:5:75"},"variableNames":[{"name":"value0","nativeSrc":"443:6:75","nodeType":"YulIdentifier","src":"443:6:75"}]},{"nativeSrc":"467:40:75","nodeType":"YulVariableDeclaration","src":"467:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"492:9:75","nodeType":"YulIdentifier","src":"492:9:75"},{"kind":"number","nativeSrc":"503:2:75","nodeType":"YulLiteral","src":"503:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"488:3:75","nodeType":"YulIdentifier","src":"488:3:75"},"nativeSrc":"488:18:75","nodeType":"YulFunctionCall","src":"488:18:75"}],"functionName":{"name":"mload","nativeSrc":"482:5:75","nodeType":"YulIdentifier","src":"482:5:75"},"nativeSrc":"482:25:75","nodeType":"YulFunctionCall","src":"482:25:75"},"variables":[{"name":"value_1","nativeSrc":"471:7:75","nodeType":"YulTypedName","src":"471:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"549:7:75","nodeType":"YulIdentifier","src":"549:7:75"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"516:32:75","nodeType":"YulIdentifier","src":"516:32:75"},"nativeSrc":"516:41:75","nodeType":"YulFunctionCall","src":"516:41:75"},"nativeSrc":"516:41:75","nodeType":"YulExpressionStatement","src":"516:41:75"},{"nativeSrc":"566:17:75","nodeType":"YulAssignment","src":"566:17:75","value":{"name":"value_1","nativeSrc":"576:7:75","nodeType":"YulIdentifier","src":"576:7:75"},"variableNames":[{"name":"value1","nativeSrc":"566:6:75","nodeType":"YulIdentifier","src":"566:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8656t_contract$_IPool_$20704_fromMemory","nativeSrc":"158:431:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"244:9:75","nodeType":"YulTypedName","src":"244:9:75","type":""},{"name":"dataEnd","nativeSrc":"255:7:75","nodeType":"YulTypedName","src":"255:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"267:6:75","nodeType":"YulTypedName","src":"267:6:75","type":""},{"name":"value1","nativeSrc":"275:6:75","nodeType":"YulTypedName","src":"275:6:75","type":""}],"src":"158:431:75"},{"body":{"nativeSrc":"695:102:75","nodeType":"YulBlock","src":"695:102:75","statements":[{"nativeSrc":"705:26:75","nodeType":"YulAssignment","src":"705:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"717:9:75","nodeType":"YulIdentifier","src":"717:9:75"},{"kind":"number","nativeSrc":"728:2:75","nodeType":"YulLiteral","src":"728:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"713:3:75","nodeType":"YulIdentifier","src":"713:3:75"},"nativeSrc":"713:18:75","nodeType":"YulFunctionCall","src":"713:18:75"},"variableNames":[{"name":"tail","nativeSrc":"705:4:75","nodeType":"YulIdentifier","src":"705:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"747:9:75","nodeType":"YulIdentifier","src":"747:9:75"},{"arguments":[{"name":"value0","nativeSrc":"762:6:75","nodeType":"YulIdentifier","src":"762:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"778:3:75","nodeType":"YulLiteral","src":"778:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"783:1:75","nodeType":"YulLiteral","src":"783:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"774:3:75","nodeType":"YulIdentifier","src":"774:3:75"},"nativeSrc":"774:11:75","nodeType":"YulFunctionCall","src":"774:11:75"},{"kind":"number","nativeSrc":"787:1:75","nodeType":"YulLiteral","src":"787:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"770:3:75","nodeType":"YulIdentifier","src":"770:3:75"},"nativeSrc":"770:19:75","nodeType":"YulFunctionCall","src":"770:19:75"}],"functionName":{"name":"and","nativeSrc":"758:3:75","nodeType":"YulIdentifier","src":"758:3:75"},"nativeSrc":"758:32:75","nodeType":"YulFunctionCall","src":"758:32:75"}],"functionName":{"name":"mstore","nativeSrc":"740:6:75","nodeType":"YulIdentifier","src":"740:6:75"},"nativeSrc":"740:51:75","nodeType":"YulFunctionCall","src":"740:51:75"},"nativeSrc":"740:51:75","nodeType":"YulExpressionStatement","src":"740:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"594:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"664:9:75","nodeType":"YulTypedName","src":"664:9:75","type":""},{"name":"value0","nativeSrc":"675:6:75","nodeType":"YulTypedName","src":"675:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"686:4:75","nodeType":"YulTypedName","src":"686:4:75","type":""}],"src":"594:203:75"},{"body":{"nativeSrc":"843:303:75","nodeType":"YulBlock","src":"843:303:75","statements":[{"nativeSrc":"853:19:75","nodeType":"YulAssignment","src":"853:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"869:2:75","nodeType":"YulLiteral","src":"869:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"863:5:75","nodeType":"YulIdentifier","src":"863:5:75"},"nativeSrc":"863:9:75","nodeType":"YulFunctionCall","src":"863:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"853:6:75","nodeType":"YulIdentifier","src":"853:6:75"}]},{"nativeSrc":"881:34:75","nodeType":"YulVariableDeclaration","src":"881:34:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"903:6:75","nodeType":"YulIdentifier","src":"903:6:75"},{"kind":"number","nativeSrc":"911:3:75","nodeType":"YulLiteral","src":"911:3:75","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"899:3:75","nodeType":"YulIdentifier","src":"899:3:75"},"nativeSrc":"899:16:75","nodeType":"YulFunctionCall","src":"899:16:75"},"variables":[{"name":"newFreePtr","nativeSrc":"885:10:75","nodeType":"YulTypedName","src":"885:10:75","type":""}]},{"body":{"nativeSrc":"998:111:75","nodeType":"YulBlock","src":"998:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1019:1:75","nodeType":"YulLiteral","src":"1019:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1026:3:75","nodeType":"YulLiteral","src":"1026:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"1031:10:75","nodeType":"YulLiteral","src":"1031:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1022:3:75","nodeType":"YulIdentifier","src":"1022:3:75"},"nativeSrc":"1022:20:75","nodeType":"YulFunctionCall","src":"1022:20:75"}],"functionName":{"name":"mstore","nativeSrc":"1012:6:75","nodeType":"YulIdentifier","src":"1012:6:75"},"nativeSrc":"1012:31:75","nodeType":"YulFunctionCall","src":"1012:31:75"},"nativeSrc":"1012:31:75","nodeType":"YulExpressionStatement","src":"1012:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1063:1:75","nodeType":"YulLiteral","src":"1063:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"1066:4:75","nodeType":"YulLiteral","src":"1066:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1056:6:75","nodeType":"YulIdentifier","src":"1056:6:75"},"nativeSrc":"1056:15:75","nodeType":"YulFunctionCall","src":"1056:15:75"},"nativeSrc":"1056:15:75","nodeType":"YulExpressionStatement","src":"1056:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1091:1:75","nodeType":"YulLiteral","src":"1091:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1094:4:75","nodeType":"YulLiteral","src":"1094:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1084:6:75","nodeType":"YulIdentifier","src":"1084:6:75"},"nativeSrc":"1084:15:75","nodeType":"YulFunctionCall","src":"1084:15:75"},"nativeSrc":"1084:15:75","nodeType":"YulExpressionStatement","src":"1084:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"933:10:75","nodeType":"YulIdentifier","src":"933:10:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"953:2:75","nodeType":"YulLiteral","src":"953:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"957:1:75","nodeType":"YulLiteral","src":"957:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"949:3:75","nodeType":"YulIdentifier","src":"949:3:75"},"nativeSrc":"949:10:75","nodeType":"YulFunctionCall","src":"949:10:75"},{"kind":"number","nativeSrc":"961:1:75","nodeType":"YulLiteral","src":"961:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"945:3:75","nodeType":"YulIdentifier","src":"945:3:75"},"nativeSrc":"945:18:75","nodeType":"YulFunctionCall","src":"945:18:75"}],"functionName":{"name":"gt","nativeSrc":"930:2:75","nodeType":"YulIdentifier","src":"930:2:75"},"nativeSrc":"930:34:75","nodeType":"YulFunctionCall","src":"930:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"969:10:75","nodeType":"YulIdentifier","src":"969:10:75"},{"name":"memPtr","nativeSrc":"981:6:75","nodeType":"YulIdentifier","src":"981:6:75"}],"functionName":{"name":"lt","nativeSrc":"966:2:75","nodeType":"YulIdentifier","src":"966:2:75"},"nativeSrc":"966:22:75","nodeType":"YulFunctionCall","src":"966:22:75"}],"functionName":{"name":"or","nativeSrc":"927:2:75","nodeType":"YulIdentifier","src":"927:2:75"},"nativeSrc":"927:62:75","nodeType":"YulFunctionCall","src":"927:62:75"},"nativeSrc":"924:185:75","nodeType":"YulIf","src":"924:185:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1125:2:75","nodeType":"YulLiteral","src":"1125:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1129:10:75","nodeType":"YulIdentifier","src":"1129:10:75"}],"functionName":{"name":"mstore","nativeSrc":"1118:6:75","nodeType":"YulIdentifier","src":"1118:6:75"},"nativeSrc":"1118:22:75","nodeType":"YulFunctionCall","src":"1118:22:75"},"nativeSrc":"1118:22:75","nodeType":"YulExpressionStatement","src":"1118:22:75"}]},"name":"allocate_memory","nativeSrc":"802:344:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"832:6:75","nodeType":"YulTypedName","src":"832:6:75","type":""}],"src":"802:344:75"},{"body":{"nativeSrc":"1242:452:75","nodeType":"YulBlock","src":"1242:452:75","statements":[{"body":{"nativeSrc":"1286:16:75","nodeType":"YulBlock","src":"1286:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1295:1:75","nodeType":"YulLiteral","src":"1295:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1298:1:75","nodeType":"YulLiteral","src":"1298:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1288:6:75","nodeType":"YulIdentifier","src":"1288:6:75"},"nativeSrc":"1288:12:75","nodeType":"YulFunctionCall","src":"1288:12:75"},"nativeSrc":"1288:12:75","nodeType":"YulExpressionStatement","src":"1288:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1263:3:75","nodeType":"YulIdentifier","src":"1263:3:75"},{"name":"headStart","nativeSrc":"1268:9:75","nodeType":"YulIdentifier","src":"1268:9:75"}],"functionName":{"name":"sub","nativeSrc":"1259:3:75","nodeType":"YulIdentifier","src":"1259:3:75"},"nativeSrc":"1259:19:75","nodeType":"YulFunctionCall","src":"1259:19:75"},{"kind":"number","nativeSrc":"1280:4:75","nodeType":"YulLiteral","src":"1280:4:75","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"1255:3:75","nodeType":"YulIdentifier","src":"1255:3:75"},"nativeSrc":"1255:30:75","nodeType":"YulFunctionCall","src":"1255:30:75"},"nativeSrc":"1252:50:75","nodeType":"YulIf","src":"1252:50:75"},{"nativeSrc":"1311:15:75","nodeType":"YulVariableDeclaration","src":"1311:15:75","value":{"kind":"number","nativeSrc":"1325:1:75","nodeType":"YulLiteral","src":"1325:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"1315:6:75","nodeType":"YulTypedName","src":"1315:6:75","type":""}]},{"nativeSrc":"1335:19:75","nodeType":"YulAssignment","src":"1335:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"1351:2:75","nodeType":"YulLiteral","src":"1351:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1345:5:75","nodeType":"YulIdentifier","src":"1345:5:75"},"nativeSrc":"1345:9:75","nodeType":"YulFunctionCall","src":"1345:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"1335:6:75","nodeType":"YulIdentifier","src":"1335:6:75"}]},{"nativeSrc":"1363:35:75","nodeType":"YulVariableDeclaration","src":"1363:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"1385:6:75","nodeType":"YulIdentifier","src":"1385:6:75"},{"kind":"number","nativeSrc":"1393:4:75","nodeType":"YulLiteral","src":"1393:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1381:3:75","nodeType":"YulIdentifier","src":"1381:3:75"},"nativeSrc":"1381:17:75","nodeType":"YulFunctionCall","src":"1381:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"1367:10:75","nodeType":"YulTypedName","src":"1367:10:75","type":""}]},{"body":{"nativeSrc":"1481:111:75","nodeType":"YulBlock","src":"1481:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1502:1:75","nodeType":"YulLiteral","src":"1502:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1509:3:75","nodeType":"YulLiteral","src":"1509:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"1514:10:75","nodeType":"YulLiteral","src":"1514:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1505:3:75","nodeType":"YulIdentifier","src":"1505:3:75"},"nativeSrc":"1505:20:75","nodeType":"YulFunctionCall","src":"1505:20:75"}],"functionName":{"name":"mstore","nativeSrc":"1495:6:75","nodeType":"YulIdentifier","src":"1495:6:75"},"nativeSrc":"1495:31:75","nodeType":"YulFunctionCall","src":"1495:31:75"},"nativeSrc":"1495:31:75","nodeType":"YulExpressionStatement","src":"1495:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1546:1:75","nodeType":"YulLiteral","src":"1546:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"1549:4:75","nodeType":"YulLiteral","src":"1549:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"1539:6:75","nodeType":"YulIdentifier","src":"1539:6:75"},"nativeSrc":"1539:15:75","nodeType":"YulFunctionCall","src":"1539:15:75"},"nativeSrc":"1539:15:75","nodeType":"YulExpressionStatement","src":"1539:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1574:1:75","nodeType":"YulLiteral","src":"1574:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1577:4:75","nodeType":"YulLiteral","src":"1577:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1567:6:75","nodeType":"YulIdentifier","src":"1567:6:75"},"nativeSrc":"1567:15:75","nodeType":"YulFunctionCall","src":"1567:15:75"},"nativeSrc":"1567:15:75","nodeType":"YulExpressionStatement","src":"1567:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1416:10:75","nodeType":"YulIdentifier","src":"1416:10:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1436:2:75","nodeType":"YulLiteral","src":"1436:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"1440:1:75","nodeType":"YulLiteral","src":"1440:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1432:3:75","nodeType":"YulIdentifier","src":"1432:3:75"},"nativeSrc":"1432:10:75","nodeType":"YulFunctionCall","src":"1432:10:75"},{"kind":"number","nativeSrc":"1444:1:75","nodeType":"YulLiteral","src":"1444:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1428:3:75","nodeType":"YulIdentifier","src":"1428:3:75"},"nativeSrc":"1428:18:75","nodeType":"YulFunctionCall","src":"1428:18:75"}],"functionName":{"name":"gt","nativeSrc":"1413:2:75","nodeType":"YulIdentifier","src":"1413:2:75"},"nativeSrc":"1413:34:75","nodeType":"YulFunctionCall","src":"1413:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1452:10:75","nodeType":"YulIdentifier","src":"1452:10:75"},{"name":"memPtr","nativeSrc":"1464:6:75","nodeType":"YulIdentifier","src":"1464:6:75"}],"functionName":{"name":"lt","nativeSrc":"1449:2:75","nodeType":"YulIdentifier","src":"1449:2:75"},"nativeSrc":"1449:22:75","nodeType":"YulFunctionCall","src":"1449:22:75"}],"functionName":{"name":"or","nativeSrc":"1410:2:75","nodeType":"YulIdentifier","src":"1410:2:75"},"nativeSrc":"1410:62:75","nodeType":"YulFunctionCall","src":"1410:62:75"},"nativeSrc":"1407:185:75","nodeType":"YulIf","src":"1407:185:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1608:2:75","nodeType":"YulLiteral","src":"1608:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1612:10:75","nodeType":"YulIdentifier","src":"1612:10:75"}],"functionName":{"name":"mstore","nativeSrc":"1601:6:75","nodeType":"YulIdentifier","src":"1601:6:75"},"nativeSrc":"1601:22:75","nodeType":"YulFunctionCall","src":"1601:22:75"},"nativeSrc":"1601:22:75","nodeType":"YulExpressionStatement","src":"1601:22:75"},{"nativeSrc":"1632:15:75","nodeType":"YulAssignment","src":"1632:15:75","value":{"name":"memPtr","nativeSrc":"1641:6:75","nodeType":"YulIdentifier","src":"1641:6:75"},"variableNames":[{"name":"value","nativeSrc":"1632:5:75","nodeType":"YulIdentifier","src":"1632:5:75"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1663:6:75","nodeType":"YulIdentifier","src":"1663:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"1677:9:75","nodeType":"YulIdentifier","src":"1677:9:75"}],"functionName":{"name":"mload","nativeSrc":"1671:5:75","nodeType":"YulIdentifier","src":"1671:5:75"},"nativeSrc":"1671:16:75","nodeType":"YulFunctionCall","src":"1671:16:75"}],"functionName":{"name":"mstore","nativeSrc":"1656:6:75","nodeType":"YulIdentifier","src":"1656:6:75"},"nativeSrc":"1656:32:75","nodeType":"YulFunctionCall","src":"1656:32:75"},"nativeSrc":"1656:32:75","nodeType":"YulExpressionStatement","src":"1656:32:75"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"1151:543:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1213:9:75","nodeType":"YulTypedName","src":"1213:9:75","type":""},{"name":"end","nativeSrc":"1224:3:75","nodeType":"YulTypedName","src":"1224:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1232:5:75","nodeType":"YulTypedName","src":"1232:5:75","type":""}],"src":"1151:543:75"},{"body":{"nativeSrc":"1759:117:75","nodeType":"YulBlock","src":"1759:117:75","statements":[{"nativeSrc":"1769:22:75","nodeType":"YulAssignment","src":"1769:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"1784:6:75","nodeType":"YulIdentifier","src":"1784:6:75"}],"functionName":{"name":"mload","nativeSrc":"1778:5:75","nodeType":"YulIdentifier","src":"1778:5:75"},"nativeSrc":"1778:13:75","nodeType":"YulFunctionCall","src":"1778:13:75"},"variableNames":[{"name":"value","nativeSrc":"1769:5:75","nodeType":"YulIdentifier","src":"1769:5:75"}]},{"body":{"nativeSrc":"1854:16:75","nodeType":"YulBlock","src":"1854:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1863:1:75","nodeType":"YulLiteral","src":"1863:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1866:1:75","nodeType":"YulLiteral","src":"1866:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1856:6:75","nodeType":"YulIdentifier","src":"1856:6:75"},"nativeSrc":"1856:12:75","nodeType":"YulFunctionCall","src":"1856:12:75"},"nativeSrc":"1856:12:75","nodeType":"YulExpressionStatement","src":"1856:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1813:5:75","nodeType":"YulIdentifier","src":"1813:5:75"},{"arguments":[{"name":"value","nativeSrc":"1824:5:75","nodeType":"YulIdentifier","src":"1824:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1839:3:75","nodeType":"YulLiteral","src":"1839:3:75","type":"","value":"128"},{"kind":"number","nativeSrc":"1844:1:75","nodeType":"YulLiteral","src":"1844:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1835:3:75","nodeType":"YulIdentifier","src":"1835:3:75"},"nativeSrc":"1835:11:75","nodeType":"YulFunctionCall","src":"1835:11:75"},{"kind":"number","nativeSrc":"1848:1:75","nodeType":"YulLiteral","src":"1848:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1831:3:75","nodeType":"YulIdentifier","src":"1831:3:75"},"nativeSrc":"1831:19:75","nodeType":"YulFunctionCall","src":"1831:19:75"}],"functionName":{"name":"and","nativeSrc":"1820:3:75","nodeType":"YulIdentifier","src":"1820:3:75"},"nativeSrc":"1820:31:75","nodeType":"YulFunctionCall","src":"1820:31:75"}],"functionName":{"name":"eq","nativeSrc":"1810:2:75","nodeType":"YulIdentifier","src":"1810:2:75"},"nativeSrc":"1810:42:75","nodeType":"YulFunctionCall","src":"1810:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1803:6:75","nodeType":"YulIdentifier","src":"1803:6:75"},"nativeSrc":"1803:50:75","nodeType":"YulFunctionCall","src":"1803:50:75"},"nativeSrc":"1800:70:75","nodeType":"YulIf","src":"1800:70:75"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"1699:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1738:6:75","nodeType":"YulTypedName","src":"1738:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1749:5:75","nodeType":"YulTypedName","src":"1749:5:75","type":""}],"src":"1699:177:75"},{"body":{"nativeSrc":"1940:110:75","nodeType":"YulBlock","src":"1940:110:75","statements":[{"nativeSrc":"1950:22:75","nodeType":"YulAssignment","src":"1950:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"1965:6:75","nodeType":"YulIdentifier","src":"1965:6:75"}],"functionName":{"name":"mload","nativeSrc":"1959:5:75","nodeType":"YulIdentifier","src":"1959:5:75"},"nativeSrc":"1959:13:75","nodeType":"YulFunctionCall","src":"1959:13:75"},"variableNames":[{"name":"value","nativeSrc":"1950:5:75","nodeType":"YulIdentifier","src":"1950:5:75"}]},{"body":{"nativeSrc":"2028:16:75","nodeType":"YulBlock","src":"2028:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2037:1:75","nodeType":"YulLiteral","src":"2037:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2040:1:75","nodeType":"YulLiteral","src":"2040:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2030:6:75","nodeType":"YulIdentifier","src":"2030:6:75"},"nativeSrc":"2030:12:75","nodeType":"YulFunctionCall","src":"2030:12:75"},"nativeSrc":"2030:12:75","nodeType":"YulExpressionStatement","src":"2030:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1994:5:75","nodeType":"YulIdentifier","src":"1994:5:75"},{"arguments":[{"name":"value","nativeSrc":"2005:5:75","nodeType":"YulIdentifier","src":"2005:5:75"},{"kind":"number","nativeSrc":"2012:12:75","nodeType":"YulLiteral","src":"2012:12:75","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"2001:3:75","nodeType":"YulIdentifier","src":"2001:3:75"},"nativeSrc":"2001:24:75","nodeType":"YulFunctionCall","src":"2001:24:75"}],"functionName":{"name":"eq","nativeSrc":"1991:2:75","nodeType":"YulIdentifier","src":"1991:2:75"},"nativeSrc":"1991:35:75","nodeType":"YulFunctionCall","src":"1991:35:75"}],"functionName":{"name":"iszero","nativeSrc":"1984:6:75","nodeType":"YulIdentifier","src":"1984:6:75"},"nativeSrc":"1984:43:75","nodeType":"YulFunctionCall","src":"1984:43:75"},"nativeSrc":"1981:63:75","nodeType":"YulIf","src":"1981:63:75"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"1881:169:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1919:6:75","nodeType":"YulTypedName","src":"1919:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1930:5:75","nodeType":"YulTypedName","src":"1930:5:75","type":""}],"src":"1881:169:75"},{"body":{"nativeSrc":"2114:104:75","nodeType":"YulBlock","src":"2114:104:75","statements":[{"nativeSrc":"2124:22:75","nodeType":"YulAssignment","src":"2124:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"2139:6:75","nodeType":"YulIdentifier","src":"2139:6:75"}],"functionName":{"name":"mload","nativeSrc":"2133:5:75","nodeType":"YulIdentifier","src":"2133:5:75"},"nativeSrc":"2133:13:75","nodeType":"YulFunctionCall","src":"2133:13:75"},"variableNames":[{"name":"value","nativeSrc":"2124:5:75","nodeType":"YulIdentifier","src":"2124:5:75"}]},{"body":{"nativeSrc":"2196:16:75","nodeType":"YulBlock","src":"2196:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2205:1:75","nodeType":"YulLiteral","src":"2205:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2208:1:75","nodeType":"YulLiteral","src":"2208:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2198:6:75","nodeType":"YulIdentifier","src":"2198:6:75"},"nativeSrc":"2198:12:75","nodeType":"YulFunctionCall","src":"2198:12:75"},"nativeSrc":"2198:12:75","nodeType":"YulExpressionStatement","src":"2198:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2168:5:75","nodeType":"YulIdentifier","src":"2168:5:75"},{"arguments":[{"name":"value","nativeSrc":"2179:5:75","nodeType":"YulIdentifier","src":"2179:5:75"},{"kind":"number","nativeSrc":"2186:6:75","nodeType":"YulLiteral","src":"2186:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"2175:3:75","nodeType":"YulIdentifier","src":"2175:3:75"},"nativeSrc":"2175:18:75","nodeType":"YulFunctionCall","src":"2175:18:75"}],"functionName":{"name":"eq","nativeSrc":"2165:2:75","nodeType":"YulIdentifier","src":"2165:2:75"},"nativeSrc":"2165:29:75","nodeType":"YulFunctionCall","src":"2165:29:75"}],"functionName":{"name":"iszero","nativeSrc":"2158:6:75","nodeType":"YulIdentifier","src":"2158:6:75"},"nativeSrc":"2158:37:75","nodeType":"YulFunctionCall","src":"2158:37:75"},"nativeSrc":"2155:57:75","nodeType":"YulIf","src":"2155:57:75"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"2055:163:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2093:6:75","nodeType":"YulTypedName","src":"2093:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2104:5:75","nodeType":"YulTypedName","src":"2104:5:75","type":""}],"src":"2055:163:75"},{"body":{"nativeSrc":"2283:86:75","nodeType":"YulBlock","src":"2283:86:75","statements":[{"nativeSrc":"2293:22:75","nodeType":"YulAssignment","src":"2293:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"2308:6:75","nodeType":"YulIdentifier","src":"2308:6:75"}],"functionName":{"name":"mload","nativeSrc":"2302:5:75","nodeType":"YulIdentifier","src":"2302:5:75"},"nativeSrc":"2302:13:75","nodeType":"YulFunctionCall","src":"2302:13:75"},"variableNames":[{"name":"value","nativeSrc":"2293:5:75","nodeType":"YulIdentifier","src":"2293:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2357:5:75","nodeType":"YulIdentifier","src":"2357:5:75"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"2324:32:75","nodeType":"YulIdentifier","src":"2324:32:75"},"nativeSrc":"2324:39:75","nodeType":"YulFunctionCall","src":"2324:39:75"},"nativeSrc":"2324:39:75","nodeType":"YulExpressionStatement","src":"2324:39:75"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"2223:146:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2262:6:75","nodeType":"YulTypedName","src":"2262:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2273:5:75","nodeType":"YulTypedName","src":"2273:5:75","type":""}],"src":"2223:146:75"},{"body":{"nativeSrc":"2485:1433:75","nodeType":"YulBlock","src":"2485:1433:75","statements":[{"nativeSrc":"2495:43:75","nodeType":"YulVariableDeclaration","src":"2495:43:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2513:7:75","nodeType":"YulIdentifier","src":"2513:7:75"},{"name":"headStart","nativeSrc":"2522:9:75","nodeType":"YulIdentifier","src":"2522:9:75"}],"functionName":{"name":"sub","nativeSrc":"2509:3:75","nodeType":"YulIdentifier","src":"2509:3:75"},"nativeSrc":"2509:23:75","nodeType":"YulFunctionCall","src":"2509:23:75"},{"kind":"number","nativeSrc":"2534:3:75","nodeType":"YulLiteral","src":"2534:3:75","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"2505:3:75","nodeType":"YulIdentifier","src":"2505:3:75"},"nativeSrc":"2505:33:75","nodeType":"YulFunctionCall","src":"2505:33:75"},"variables":[{"name":"_1","nativeSrc":"2499:2:75","nodeType":"YulTypedName","src":"2499:2:75","type":""}]},{"body":{"nativeSrc":"2553:16:75","nodeType":"YulBlock","src":"2553:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2562:1:75","nodeType":"YulLiteral","src":"2562:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2565:1:75","nodeType":"YulLiteral","src":"2565:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2555:6:75","nodeType":"YulIdentifier","src":"2555:6:75"},"nativeSrc":"2555:12:75","nodeType":"YulFunctionCall","src":"2555:12:75"},"nativeSrc":"2555:12:75","nodeType":"YulExpressionStatement","src":"2555:12:75"}]},"condition":{"name":"_1","nativeSrc":"2550:2:75","nodeType":"YulIdentifier","src":"2550:2:75"},"nativeSrc":"2547:22:75","nodeType":"YulIf","src":"2547:22:75"},{"nativeSrc":"2578:7:75","nodeType":"YulAssignment","src":"2578:7:75","value":{"kind":"number","nativeSrc":"2584:1:75","nodeType":"YulLiteral","src":"2584:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"2578:2:75","nodeType":"YulIdentifier","src":"2578:2:75"}]},{"nativeSrc":"2594:30:75","nodeType":"YulVariableDeclaration","src":"2594:30:75","value":{"arguments":[],"functionName":{"name":"allocate_memory","nativeSrc":"2607:15:75","nodeType":"YulIdentifier","src":"2607:15:75"},"nativeSrc":"2607:17:75","nodeType":"YulFunctionCall","src":"2607:17:75"},"variables":[{"name":"value","nativeSrc":"2598:5:75","nodeType":"YulTypedName","src":"2598:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2640:5:75","nodeType":"YulIdentifier","src":"2640:5:75"},{"arguments":[{"name":"headStart","nativeSrc":"2700:9:75","nodeType":"YulIdentifier","src":"2700:9:75"},{"name":"dataEnd","nativeSrc":"2711:7:75","nodeType":"YulIdentifier","src":"2711:7:75"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"2647:52:75","nodeType":"YulIdentifier","src":"2647:52:75"},"nativeSrc":"2647:72:75","nodeType":"YulFunctionCall","src":"2647:72:75"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:75","nodeType":"YulIdentifier","src":"2633:6:75"},"nativeSrc":"2633:87:75","nodeType":"YulFunctionCall","src":"2633:87:75"},"nativeSrc":"2633:87:75","nodeType":"YulExpressionStatement","src":"2633:87:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2740:5:75","nodeType":"YulIdentifier","src":"2740:5:75"},{"kind":"number","nativeSrc":"2747:2:75","nodeType":"YulLiteral","src":"2747:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2736:3:75","nodeType":"YulIdentifier","src":"2736:3:75"},"nativeSrc":"2736:14:75","nodeType":"YulFunctionCall","src":"2736:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2786:9:75","nodeType":"YulIdentifier","src":"2786:9:75"},{"kind":"number","nativeSrc":"2797:2:75","nodeType":"YulLiteral","src":"2797:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2782:3:75","nodeType":"YulIdentifier","src":"2782:3:75"},"nativeSrc":"2782:18:75","nodeType":"YulFunctionCall","src":"2782:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2752:29:75","nodeType":"YulIdentifier","src":"2752:29:75"},"nativeSrc":"2752:49:75","nodeType":"YulFunctionCall","src":"2752:49:75"}],"functionName":{"name":"mstore","nativeSrc":"2729:6:75","nodeType":"YulIdentifier","src":"2729:6:75"},"nativeSrc":"2729:73:75","nodeType":"YulFunctionCall","src":"2729:73:75"},"nativeSrc":"2729:73:75","nodeType":"YulExpressionStatement","src":"2729:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2822:5:75","nodeType":"YulIdentifier","src":"2822:5:75"},{"kind":"number","nativeSrc":"2829:2:75","nodeType":"YulLiteral","src":"2829:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2818:3:75","nodeType":"YulIdentifier","src":"2818:3:75"},"nativeSrc":"2818:14:75","nodeType":"YulFunctionCall","src":"2818:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2868:9:75","nodeType":"YulIdentifier","src":"2868:9:75"},{"kind":"number","nativeSrc":"2879:2:75","nodeType":"YulLiteral","src":"2879:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2864:3:75","nodeType":"YulIdentifier","src":"2864:3:75"},"nativeSrc":"2864:18:75","nodeType":"YulFunctionCall","src":"2864:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2834:29:75","nodeType":"YulIdentifier","src":"2834:29:75"},"nativeSrc":"2834:49:75","nodeType":"YulFunctionCall","src":"2834:49:75"}],"functionName":{"name":"mstore","nativeSrc":"2811:6:75","nodeType":"YulIdentifier","src":"2811:6:75"},"nativeSrc":"2811:73:75","nodeType":"YulFunctionCall","src":"2811:73:75"},"nativeSrc":"2811:73:75","nodeType":"YulExpressionStatement","src":"2811:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2904:5:75","nodeType":"YulIdentifier","src":"2904:5:75"},{"kind":"number","nativeSrc":"2911:2:75","nodeType":"YulLiteral","src":"2911:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2900:3:75","nodeType":"YulIdentifier","src":"2900:3:75"},"nativeSrc":"2900:14:75","nodeType":"YulFunctionCall","src":"2900:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2950:9:75","nodeType":"YulIdentifier","src":"2950:9:75"},{"kind":"number","nativeSrc":"2961:2:75","nodeType":"YulLiteral","src":"2961:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2946:3:75","nodeType":"YulIdentifier","src":"2946:3:75"},"nativeSrc":"2946:18:75","nodeType":"YulFunctionCall","src":"2946:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2916:29:75","nodeType":"YulIdentifier","src":"2916:29:75"},"nativeSrc":"2916:49:75","nodeType":"YulFunctionCall","src":"2916:49:75"}],"functionName":{"name":"mstore","nativeSrc":"2893:6:75","nodeType":"YulIdentifier","src":"2893:6:75"},"nativeSrc":"2893:73:75","nodeType":"YulFunctionCall","src":"2893:73:75"},"nativeSrc":"2893:73:75","nodeType":"YulExpressionStatement","src":"2893:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2986:5:75","nodeType":"YulIdentifier","src":"2986:5:75"},{"kind":"number","nativeSrc":"2993:3:75","nodeType":"YulLiteral","src":"2993:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2982:3:75","nodeType":"YulIdentifier","src":"2982:3:75"},"nativeSrc":"2982:15:75","nodeType":"YulFunctionCall","src":"2982:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3033:9:75","nodeType":"YulIdentifier","src":"3033:9:75"},{"kind":"number","nativeSrc":"3044:3:75","nodeType":"YulLiteral","src":"3044:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3029:3:75","nodeType":"YulIdentifier","src":"3029:3:75"},"nativeSrc":"3029:19:75","nodeType":"YulFunctionCall","src":"3029:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"2999:29:75","nodeType":"YulIdentifier","src":"2999:29:75"},"nativeSrc":"2999:50:75","nodeType":"YulFunctionCall","src":"2999:50:75"}],"functionName":{"name":"mstore","nativeSrc":"2975:6:75","nodeType":"YulIdentifier","src":"2975:6:75"},"nativeSrc":"2975:75:75","nodeType":"YulFunctionCall","src":"2975:75:75"},"nativeSrc":"2975:75:75","nodeType":"YulExpressionStatement","src":"2975:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3070:5:75","nodeType":"YulIdentifier","src":"3070:5:75"},{"kind":"number","nativeSrc":"3077:3:75","nodeType":"YulLiteral","src":"3077:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3066:3:75","nodeType":"YulIdentifier","src":"3066:3:75"},"nativeSrc":"3066:15:75","nodeType":"YulFunctionCall","src":"3066:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3117:9:75","nodeType":"YulIdentifier","src":"3117:9:75"},{"kind":"number","nativeSrc":"3128:3:75","nodeType":"YulLiteral","src":"3128:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3113:3:75","nodeType":"YulIdentifier","src":"3113:3:75"},"nativeSrc":"3113:19:75","nodeType":"YulFunctionCall","src":"3113:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3083:29:75","nodeType":"YulIdentifier","src":"3083:29:75"},"nativeSrc":"3083:50:75","nodeType":"YulFunctionCall","src":"3083:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3059:6:75","nodeType":"YulIdentifier","src":"3059:6:75"},"nativeSrc":"3059:75:75","nodeType":"YulFunctionCall","src":"3059:75:75"},"nativeSrc":"3059:75:75","nodeType":"YulExpressionStatement","src":"3059:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3154:5:75","nodeType":"YulIdentifier","src":"3154:5:75"},{"kind":"number","nativeSrc":"3161:3:75","nodeType":"YulLiteral","src":"3161:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"3150:3:75","nodeType":"YulIdentifier","src":"3150:3:75"},"nativeSrc":"3150:15:75","nodeType":"YulFunctionCall","src":"3150:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3200:9:75","nodeType":"YulIdentifier","src":"3200:9:75"},{"kind":"number","nativeSrc":"3211:3:75","nodeType":"YulLiteral","src":"3211:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"3196:3:75","nodeType":"YulIdentifier","src":"3196:3:75"},"nativeSrc":"3196:19:75","nodeType":"YulFunctionCall","src":"3196:19:75"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"3167:28:75","nodeType":"YulIdentifier","src":"3167:28:75"},"nativeSrc":"3167:49:75","nodeType":"YulFunctionCall","src":"3167:49:75"}],"functionName":{"name":"mstore","nativeSrc":"3143:6:75","nodeType":"YulIdentifier","src":"3143:6:75"},"nativeSrc":"3143:74:75","nodeType":"YulFunctionCall","src":"3143:74:75"},"nativeSrc":"3143:74:75","nodeType":"YulExpressionStatement","src":"3143:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3237:5:75","nodeType":"YulIdentifier","src":"3237:5:75"},{"kind":"number","nativeSrc":"3244:3:75","nodeType":"YulLiteral","src":"3244:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"3233:3:75","nodeType":"YulIdentifier","src":"3233:3:75"},"nativeSrc":"3233:15:75","nodeType":"YulFunctionCall","src":"3233:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3283:9:75","nodeType":"YulIdentifier","src":"3283:9:75"},{"kind":"number","nativeSrc":"3294:3:75","nodeType":"YulLiteral","src":"3294:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"3279:3:75","nodeType":"YulIdentifier","src":"3279:3:75"},"nativeSrc":"3279:19:75","nodeType":"YulFunctionCall","src":"3279:19:75"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"3250:28:75","nodeType":"YulIdentifier","src":"3250:28:75"},"nativeSrc":"3250:49:75","nodeType":"YulFunctionCall","src":"3250:49:75"}],"functionName":{"name":"mstore","nativeSrc":"3226:6:75","nodeType":"YulIdentifier","src":"3226:6:75"},"nativeSrc":"3226:74:75","nodeType":"YulFunctionCall","src":"3226:74:75"},"nativeSrc":"3226:74:75","nodeType":"YulExpressionStatement","src":"3226:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3320:5:75","nodeType":"YulIdentifier","src":"3320:5:75"},{"kind":"number","nativeSrc":"3327:3:75","nodeType":"YulLiteral","src":"3327:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"3316:3:75","nodeType":"YulIdentifier","src":"3316:3:75"},"nativeSrc":"3316:15:75","nodeType":"YulFunctionCall","src":"3316:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3367:9:75","nodeType":"YulIdentifier","src":"3367:9:75"},{"kind":"number","nativeSrc":"3378:3:75","nodeType":"YulLiteral","src":"3378:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"3363:3:75","nodeType":"YulIdentifier","src":"3363:3:75"},"nativeSrc":"3363:19:75","nodeType":"YulFunctionCall","src":"3363:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3333:29:75","nodeType":"YulIdentifier","src":"3333:29:75"},"nativeSrc":"3333:50:75","nodeType":"YulFunctionCall","src":"3333:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3309:6:75","nodeType":"YulIdentifier","src":"3309:6:75"},"nativeSrc":"3309:75:75","nodeType":"YulFunctionCall","src":"3309:75:75"},"nativeSrc":"3309:75:75","nodeType":"YulExpressionStatement","src":"3309:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3404:5:75","nodeType":"YulIdentifier","src":"3404:5:75"},{"kind":"number","nativeSrc":"3411:3:75","nodeType":"YulLiteral","src":"3411:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"3400:3:75","nodeType":"YulIdentifier","src":"3400:3:75"},"nativeSrc":"3400:15:75","nodeType":"YulFunctionCall","src":"3400:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3451:9:75","nodeType":"YulIdentifier","src":"3451:9:75"},{"kind":"number","nativeSrc":"3462:3:75","nodeType":"YulLiteral","src":"3462:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"3447:3:75","nodeType":"YulIdentifier","src":"3447:3:75"},"nativeSrc":"3447:19:75","nodeType":"YulFunctionCall","src":"3447:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3417:29:75","nodeType":"YulIdentifier","src":"3417:29:75"},"nativeSrc":"3417:50:75","nodeType":"YulFunctionCall","src":"3417:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3393:6:75","nodeType":"YulIdentifier","src":"3393:6:75"},"nativeSrc":"3393:75:75","nodeType":"YulFunctionCall","src":"3393:75:75"},"nativeSrc":"3393:75:75","nodeType":"YulExpressionStatement","src":"3393:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3488:5:75","nodeType":"YulIdentifier","src":"3488:5:75"},{"kind":"number","nativeSrc":"3495:3:75","nodeType":"YulLiteral","src":"3495:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"3484:3:75","nodeType":"YulIdentifier","src":"3484:3:75"},"nativeSrc":"3484:15:75","nodeType":"YulFunctionCall","src":"3484:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3535:9:75","nodeType":"YulIdentifier","src":"3535:9:75"},{"kind":"number","nativeSrc":"3546:3:75","nodeType":"YulLiteral","src":"3546:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"3531:3:75","nodeType":"YulIdentifier","src":"3531:3:75"},"nativeSrc":"3531:19:75","nodeType":"YulFunctionCall","src":"3531:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3501:29:75","nodeType":"YulIdentifier","src":"3501:29:75"},"nativeSrc":"3501:50:75","nodeType":"YulFunctionCall","src":"3501:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3477:6:75","nodeType":"YulIdentifier","src":"3477:6:75"},"nativeSrc":"3477:75:75","nodeType":"YulFunctionCall","src":"3477:75:75"},"nativeSrc":"3477:75:75","nodeType":"YulExpressionStatement","src":"3477:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3572:5:75","nodeType":"YulIdentifier","src":"3572:5:75"},{"kind":"number","nativeSrc":"3579:3:75","nodeType":"YulLiteral","src":"3579:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"3568:3:75","nodeType":"YulIdentifier","src":"3568:3:75"},"nativeSrc":"3568:15:75","nodeType":"YulFunctionCall","src":"3568:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3619:9:75","nodeType":"YulIdentifier","src":"3619:9:75"},{"kind":"number","nativeSrc":"3630:3:75","nodeType":"YulLiteral","src":"3630:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"3615:3:75","nodeType":"YulIdentifier","src":"3615:3:75"},"nativeSrc":"3615:19:75","nodeType":"YulFunctionCall","src":"3615:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"3585:29:75","nodeType":"YulIdentifier","src":"3585:29:75"},"nativeSrc":"3585:50:75","nodeType":"YulFunctionCall","src":"3585:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3561:6:75","nodeType":"YulIdentifier","src":"3561:6:75"},"nativeSrc":"3561:75:75","nodeType":"YulFunctionCall","src":"3561:75:75"},"nativeSrc":"3561:75:75","nodeType":"YulExpressionStatement","src":"3561:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3656:5:75","nodeType":"YulIdentifier","src":"3656:5:75"},{"kind":"number","nativeSrc":"3663:3:75","nodeType":"YulLiteral","src":"3663:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"3652:3:75","nodeType":"YulIdentifier","src":"3652:3:75"},"nativeSrc":"3652:15:75","nodeType":"YulFunctionCall","src":"3652:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3703:9:75","nodeType":"YulIdentifier","src":"3703:9:75"},{"kind":"number","nativeSrc":"3714:3:75","nodeType":"YulLiteral","src":"3714:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"3699:3:75","nodeType":"YulIdentifier","src":"3699:3:75"},"nativeSrc":"3699:19:75","nodeType":"YulFunctionCall","src":"3699:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3669:29:75","nodeType":"YulIdentifier","src":"3669:29:75"},"nativeSrc":"3669:50:75","nodeType":"YulFunctionCall","src":"3669:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3645:6:75","nodeType":"YulIdentifier","src":"3645:6:75"},"nativeSrc":"3645:75:75","nodeType":"YulFunctionCall","src":"3645:75:75"},"nativeSrc":"3645:75:75","nodeType":"YulExpressionStatement","src":"3645:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3740:5:75","nodeType":"YulIdentifier","src":"3740:5:75"},{"kind":"number","nativeSrc":"3747:3:75","nodeType":"YulLiteral","src":"3747:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"3736:3:75","nodeType":"YulIdentifier","src":"3736:3:75"},"nativeSrc":"3736:15:75","nodeType":"YulFunctionCall","src":"3736:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3787:9:75","nodeType":"YulIdentifier","src":"3787:9:75"},{"kind":"number","nativeSrc":"3798:3:75","nodeType":"YulLiteral","src":"3798:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"3783:3:75","nodeType":"YulIdentifier","src":"3783:3:75"},"nativeSrc":"3783:19:75","nodeType":"YulFunctionCall","src":"3783:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3753:29:75","nodeType":"YulIdentifier","src":"3753:29:75"},"nativeSrc":"3753:50:75","nodeType":"YulFunctionCall","src":"3753:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3729:6:75","nodeType":"YulIdentifier","src":"3729:6:75"},"nativeSrc":"3729:75:75","nodeType":"YulFunctionCall","src":"3729:75:75"},"nativeSrc":"3729:75:75","nodeType":"YulExpressionStatement","src":"3729:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3824:5:75","nodeType":"YulIdentifier","src":"3824:5:75"},{"kind":"number","nativeSrc":"3831:3:75","nodeType":"YulLiteral","src":"3831:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"3820:3:75","nodeType":"YulIdentifier","src":"3820:3:75"},"nativeSrc":"3820:15:75","nodeType":"YulFunctionCall","src":"3820:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3871:9:75","nodeType":"YulIdentifier","src":"3871:9:75"},{"kind":"number","nativeSrc":"3882:3:75","nodeType":"YulLiteral","src":"3882:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"3867:3:75","nodeType":"YulIdentifier","src":"3867:3:75"},"nativeSrc":"3867:19:75","nodeType":"YulFunctionCall","src":"3867:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"3837:29:75","nodeType":"YulIdentifier","src":"3837:29:75"},"nativeSrc":"3837:50:75","nodeType":"YulFunctionCall","src":"3837:50:75"}],"functionName":{"name":"mstore","nativeSrc":"3813:6:75","nodeType":"YulIdentifier","src":"3813:6:75"},"nativeSrc":"3813:75:75","nodeType":"YulFunctionCall","src":"3813:75:75"},"nativeSrc":"3813:75:75","nodeType":"YulExpressionStatement","src":"3813:75:75"},{"nativeSrc":"3897:15:75","nodeType":"YulAssignment","src":"3897:15:75","value":{"name":"value","nativeSrc":"3907:5:75","nodeType":"YulIdentifier","src":"3907:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3897:6:75","nodeType":"YulIdentifier","src":"3897:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$19475_memory_ptr_fromMemory","nativeSrc":"2374:1544:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2451:9:75","nodeType":"YulTypedName","src":"2451:9:75","type":""},{"name":"dataEnd","nativeSrc":"2462:7:75","nodeType":"YulTypedName","src":"2462:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2474:6:75","nodeType":"YulTypedName","src":"2474:6:75","type":""}],"src":"2374:1544:75"},{"body":{"nativeSrc":"4150:252:75","nodeType":"YulBlock","src":"4150:252:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4167:9:75","nodeType":"YulIdentifier","src":"4167:9:75"},{"kind":"number","nativeSrc":"4178:2:75","nodeType":"YulLiteral","src":"4178:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"4160:6:75","nodeType":"YulIdentifier","src":"4160:6:75"},"nativeSrc":"4160:21:75","nodeType":"YulFunctionCall","src":"4160:21:75"},"nativeSrc":"4160:21:75","nodeType":"YulExpressionStatement","src":"4160:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4201:9:75","nodeType":"YulIdentifier","src":"4201:9:75"},{"kind":"number","nativeSrc":"4212:2:75","nodeType":"YulLiteral","src":"4212:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4197:3:75","nodeType":"YulIdentifier","src":"4197:3:75"},"nativeSrc":"4197:18:75","nodeType":"YulFunctionCall","src":"4197:18:75"},{"kind":"number","nativeSrc":"4217:2:75","nodeType":"YulLiteral","src":"4217:2:75","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"4190:6:75","nodeType":"YulIdentifier","src":"4190:6:75"},"nativeSrc":"4190:30:75","nodeType":"YulFunctionCall","src":"4190:30:75"},"nativeSrc":"4190:30:75","nodeType":"YulExpressionStatement","src":"4190:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4240:9:75","nodeType":"YulIdentifier","src":"4240:9:75"},{"kind":"number","nativeSrc":"4251:2:75","nodeType":"YulLiteral","src":"4251:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4236:3:75","nodeType":"YulIdentifier","src":"4236:3:75"},"nativeSrc":"4236:18:75","nodeType":"YulFunctionCall","src":"4236:18:75"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"4256:32:75","nodeType":"YulLiteral","src":"4256:32:75","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"4229:6:75","nodeType":"YulIdentifier","src":"4229:6:75"},"nativeSrc":"4229:60:75","nodeType":"YulFunctionCall","src":"4229:60:75"},"nativeSrc":"4229:60:75","nodeType":"YulExpressionStatement","src":"4229:60:75"},{"nativeSrc":"4298:27:75","nodeType":"YulAssignment","src":"4298:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4310:9:75","nodeType":"YulIdentifier","src":"4310:9:75"},{"kind":"number","nativeSrc":"4321:3:75","nodeType":"YulLiteral","src":"4321:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4306:3:75","nodeType":"YulIdentifier","src":"4306:3:75"},"nativeSrc":"4306:19:75","nodeType":"YulFunctionCall","src":"4306:19:75"},"variableNames":[{"name":"tail","nativeSrc":"4298:4:75","nodeType":"YulIdentifier","src":"4298:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4345:9:75","nodeType":"YulIdentifier","src":"4345:9:75"},{"kind":"number","nativeSrc":"4356:4:75","nodeType":"YulLiteral","src":"4356:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4341:3:75","nodeType":"YulIdentifier","src":"4341:3:75"},"nativeSrc":"4341:20:75","nodeType":"YulFunctionCall","src":"4341:20:75"},{"arguments":[{"name":"value0","nativeSrc":"4367:6:75","nodeType":"YulIdentifier","src":"4367:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4383:3:75","nodeType":"YulLiteral","src":"4383:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4388:1:75","nodeType":"YulLiteral","src":"4388:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4379:3:75","nodeType":"YulIdentifier","src":"4379:3:75"},"nativeSrc":"4379:11:75","nodeType":"YulFunctionCall","src":"4379:11:75"},{"kind":"number","nativeSrc":"4392:1:75","nodeType":"YulLiteral","src":"4392:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4375:3:75","nodeType":"YulIdentifier","src":"4375:3:75"},"nativeSrc":"4375:19:75","nodeType":"YulFunctionCall","src":"4375:19:75"}],"functionName":{"name":"and","nativeSrc":"4363:3:75","nodeType":"YulIdentifier","src":"4363:3:75"},"nativeSrc":"4363:32:75","nodeType":"YulFunctionCall","src":"4363:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4334:6:75","nodeType":"YulIdentifier","src":"4334:6:75"},"nativeSrc":"4334:62:75","nodeType":"YulFunctionCall","src":"4334:62:75"},"nativeSrc":"4334:62:75","nodeType":"YulExpressionStatement","src":"4334:62:75"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"3923:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4119:9:75","nodeType":"YulTypedName","src":"4119:9:75","type":""},{"name":"value0","nativeSrc":"4130:6:75","nodeType":"YulTypedName","src":"4130:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4141:4:75","nodeType":"YulTypedName","src":"4141:4:75","type":""}],"src":"3923:479:75"}]},"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_$8656t_contract$_IPool_$20704_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_$19475_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_$22374__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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060808181526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e74000061018052610140939093526101008290526101a09052902060a05234801561005a575f5ffd5b506040516110e03803806110e08339810160408190526100799161013f565b6040516335ea6a7560e01b81526001600160a01b0383811660048301525f91908316906335ea6a75906024016101e060405180830381865afa1580156100c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e59190610242565b61010001516001600160a01b0316036101115760405163c3eb4ed560e01b815260040160405180910390fd5b6001600160a01b0390811660c0521660e05261036c565b6001600160a01b038116811461013c575f5ffd5b50565b5f5f60408385031215610150575f5ffd5b825161015b81610128565b602084015190925061016c81610128565b809150509250929050565b6040516101e081016001600160401b03811182821017156101a657634e487b7160e01b5f52604160045260245ffd5b60405290565b5f602082840312156101bc575f5ffd5b604051602081016001600160401b03811182821017156101ea57634e487b7160e01b5f52604160045260245ffd5b6040529151825250919050565b80516001600160801b038116811461020d575f5ffd5b919050565b805164ffffffffff8116811461020d575f5ffd5b805161ffff8116811461020d575f5ffd5b805161020d81610128565b5f6101e0828403128015610254575f5ffd5b5061025d610177565b61026784846101ac565b8152610275602084016101f7565b6020820152610286604084016101f7565b6040820152610297606084016101f7565b60608201526102a8608084016101f7565b60808201526102b960a084016101f7565b60a08201526102ca60c08401610212565b60c08201526102db60e08401610226565b60e08201526102ed6101008401610237565b6101008201526103006101208401610237565b6101208201526103136101408401610237565b6101408201526103266101608401610237565b61016082015261033961018084016101f7565b61018082015261034c6101a084016101f7565b6101a082015261035f6101c084016101f7565b6101c08201529392505050565b60805160a05160c05160e051610cf46103ec5f395f818161014901528181610280015281816106e2015281816107bf015261084101525f81816102b50152818161070a01528181610790015261087c01525f61011601525f81816101db01528181610224015281816103830152818161046c01526104d50152610cf45ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101385780639cd4712814610183578063b6b55f2514610196578063ce96cb77146101a9578063f3e0ffbf146101bc575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100fe5780635b9a4c3514610111575b5f5ffd5b6100b26100ad36600461099f565b6101cf565b6040516100bf91906109f1565b60405180910390f35b6100db6100d6366004610a26565b61021a565b005b6100f06100eb366004610a51565b610324565b6040519081526020016100bf565b6100db61010c366004610a79565b610379565b6100f07f000000000000000000000000000000000000000000000000000000000000000081565b61016b610146366004610a51565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db610191366004610a94565b610462565b6100db6101a4366004610a26565b6104cb565b6100f06101b7366004610a51565b610523565b6100f06101ca366004610a51565b6105cf565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361026357604051632abf118b60e21b815260040160405180910390fd5b801561032157604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156102fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031f9190610ace565b505b50565b5f5f61032e61064c565b805151909150600160381b16158061034d57508051516001603c1b1615155b8061036357508051516702000000000000001615155b1561037057505f92915050565b505f1992915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103c257604051632abf118b60e21b815260040160405180910390fd5b5f6103cb61064c565b610100015190508115801561044457506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561041d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104419190610ace565b15155b1561031f576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ab57604051632abf118b60e21b815260040160405180910390fd5b805115610321576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361051457604051632abf118b60e21b815260040160405180910390fd5b80156103215761032181610779565b5f5f61052d61064c565b805151909150600160381b16158061054c57508051516001603c1b1615155b1561055957505f92915050565b6101008101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190610ace565b9392505050565b5f6105d861064c565b61010001516040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106469190610ace565b92915050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107749190610b79565b905090565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190610ca3565b5060405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b1580156108bd575f5ffd5b505af11580156108cf573d5f5f3e3d5ffd5b5050505050565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff8111828210171561090e5761090e6108d6565b60405290565b5f82601f830112610923575f5ffd5b813567ffffffffffffffff81111561093d5761093d6108d6565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561096c5761096c6108d6565b604052818152838201602001851015610983575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b0575f5ffd5b823560ff811681146109c0575f5ffd5b9150602083013567ffffffffffffffff8111156109db575f5ffd5b6109e785828601610914565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a36575f5ffd5b5035919050565b6001600160a01b0381168114610321575f5ffd5b5f60208284031215610a61575f5ffd5b81356105c881610a3d565b8015158114610321575f5ffd5b5f60208284031215610a89575f5ffd5b81356105c881610a6c565b5f60208284031215610aa4575f5ffd5b813567ffffffffffffffff811115610aba575f5ffd5b610ac684828501610914565b949350505050565b5f60208284031215610ade575f5ffd5b5051919050565b5f60208284031215610af5575f5ffd5b6040516020810167ffffffffffffffff81118282101715610b1857610b186108d6565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b44575f5ffd5b919050565b805164ffffffffff81168114610b44575f5ffd5b805161ffff81168114610b44575f5ffd5b8051610b4481610a3d565b5f6101e0828403128015610b8b575f5ffd5b50610b946108ea565b610b9e8484610ae5565b8152610bac60208401610b25565b6020820152610bbd60408401610b25565b6040820152610bce60608401610b25565b6060820152610bdf60808401610b25565b6080820152610bf060a08401610b25565b60a0820152610c0160c08401610b49565b60c0820152610c1260e08401610b5d565b60e0820152610c246101008401610b6e565b610100820152610c376101208401610b6e565b610120820152610c4a6101408401610b6e565b610140820152610c5d6101608401610b6e565b610160820152610c706101808401610b25565b610180820152610c836101a08401610b25565b6101a0820152610c966101c08401610b25565b6101c08201529392505050565b5f60208284031215610cb3575f5ffd5b81516105c881610a6c56fea264697066735822122029a377fd9d1563b2fcd907da31487aaed22d666fdb497ebc1f40f2cfd3d4f0a964736f6c634300081c0033","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 0x29 LOG3 PUSH24 0xFD9D1563B2FCD907DA31487AAED22D666FDB497EBC1F40F2 0xCF 0xD3 0xD4 CREATE 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"825:4:47:-:0;782:48;;;;660:3183;7309:54:52;4160:21:75;;;4217:2;4197:18;4190:30;4256:32;4236:18;4229:60;4341:20;4334:62;;;;660:3183:47;7309:54:52;;;4306:19:75;7309:54:52;;7299:65;;834:81:47;;1258:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1308:37;;-1:-1:-1;;;1308:37:47;;-1:-1:-1;;;;;758:32:75;;;1308:37:47;;;740:51:75;1371:1:47;;1308:20;;;;;;713:18:75;;1308:37:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;-1:-1:-1;;;;;1308:65:47;;1304:101;;1382:23;;-1:-1:-1;;;1382:23:47;;;;;;;;;;;1304:101;-1:-1:-1;;;;;1411:13:47;;;;;1430:15;;;660:3183;;14:139:75;-1:-1:-1;;;;;97:31:75;;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:75;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:75;;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:75;;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:75;1151:543;-1:-1:-1;1151:543:75:o;1699:177::-;1778:13;;-1:-1:-1;;;;;1820:31:75;;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:75;;:::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:75:o;3923:479::-;660:3183:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_reserveData_13573":{"entryPoint":1612,"id":13573,"parameterSlots":0,"returnSlots":1},"@_supply_13819":{"entryPoint":1913,"id":13819,"parameterSlots":1,"returnSlots":0},"@asset_13722":{"entryPoint":null,"id":13722,"parameterSlots":1,"returnSlots":1},"@connect_13591":{"entryPoint":1122,"id":13591,"parameterSlots":1,"returnSlots":0},"@deposit_13787":{"entryPoint":1227,"id":13787,"parameterSlots":1,"returnSlots":0},"@disconnect_13626":{"entryPoint":889,"id":13626,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_13835":{"entryPoint":463,"id":13835,"parameterSlots":2,"returnSlots":1},"@getActive_21323":{"entryPoint":null,"id":21323,"parameterSlots":1,"returnSlots":1},"@getFrozen_21373":{"entryPoint":null,"id":21373,"parameterSlots":1,"returnSlots":1},"@getPaused_21423":{"entryPoint":null,"id":21423,"parameterSlots":1,"returnSlots":1},"@maxDeposit_13707":{"entryPoint":804,"id":13707,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_13665":{"entryPoint":1315,"id":13665,"parameterSlots":1,"returnSlots":1},"@storageSlot_13495":{"entryPoint":null,"id":13495,"parameterSlots":0,"returnSlots":0},"@totalAssets_13741":{"entryPoint":1487,"id":13741,"parameterSlots":1,"returnSlots":1},"@withdraw_13769":{"entryPoint":538,"id":13769,"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_$19475_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:75","nodeType":"YulBlock","src":"0:8229:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"46:95:75","nodeType":"YulBlock","src":"46:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:75","nodeType":"YulLiteral","src":"63:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:75","nodeType":"YulLiteral","src":"70:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:75","nodeType":"YulLiteral","src":"75:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:75","nodeType":"YulIdentifier","src":"66:3:75"},"nativeSrc":"66:20:75","nodeType":"YulFunctionCall","src":"66:20:75"}],"functionName":{"name":"mstore","nativeSrc":"56:6:75","nodeType":"YulIdentifier","src":"56:6:75"},"nativeSrc":"56:31:75","nodeType":"YulFunctionCall","src":"56:31:75"},"nativeSrc":"56:31:75","nodeType":"YulExpressionStatement","src":"56:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:75","nodeType":"YulLiteral","src":"103:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:75","nodeType":"YulLiteral","src":"106:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:75","nodeType":"YulIdentifier","src":"96:6:75"},"nativeSrc":"96:15:75","nodeType":"YulFunctionCall","src":"96:15:75"},"nativeSrc":"96:15:75","nodeType":"YulExpressionStatement","src":"96:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:75","nodeType":"YulLiteral","src":"127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:75","nodeType":"YulLiteral","src":"130:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:75","nodeType":"YulIdentifier","src":"120:6:75"},"nativeSrc":"120:15:75","nodeType":"YulFunctionCall","src":"120:15:75"},"nativeSrc":"120:15:75","nodeType":"YulExpressionStatement","src":"120:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14:127:75","nodeType":"YulFunctionDefinition","src":"14:127:75"},{"body":{"nativeSrc":"187:206:75","nodeType":"YulBlock","src":"187:206:75","statements":[{"nativeSrc":"197:19:75","nodeType":"YulAssignment","src":"197:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"213:2:75","nodeType":"YulLiteral","src":"213:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"207:5:75","nodeType":"YulIdentifier","src":"207:5:75"},"nativeSrc":"207:9:75","nodeType":"YulFunctionCall","src":"207:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"197:6:75","nodeType":"YulIdentifier","src":"197:6:75"}]},{"nativeSrc":"225:34:75","nodeType":"YulVariableDeclaration","src":"225:34:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"247:6:75","nodeType":"YulIdentifier","src":"247:6:75"},{"kind":"number","nativeSrc":"255:3:75","nodeType":"YulLiteral","src":"255:3:75","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"243:3:75","nodeType":"YulIdentifier","src":"243:3:75"},"nativeSrc":"243:16:75","nodeType":"YulFunctionCall","src":"243:16:75"},"variables":[{"name":"newFreePtr","nativeSrc":"229:10:75","nodeType":"YulTypedName","src":"229:10:75","type":""}]},{"body":{"nativeSrc":"334:22:75","nodeType":"YulBlock","src":"334:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"336:16:75","nodeType":"YulIdentifier","src":"336:16:75"},"nativeSrc":"336:18:75","nodeType":"YulFunctionCall","src":"336:18:75"},"nativeSrc":"336:18:75","nodeType":"YulExpressionStatement","src":"336:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"277:10:75","nodeType":"YulIdentifier","src":"277:10:75"},{"kind":"number","nativeSrc":"289:18:75","nodeType":"YulLiteral","src":"289:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"274:2:75","nodeType":"YulIdentifier","src":"274:2:75"},"nativeSrc":"274:34:75","nodeType":"YulFunctionCall","src":"274:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"313:10:75","nodeType":"YulIdentifier","src":"313:10:75"},{"name":"memPtr","nativeSrc":"325:6:75","nodeType":"YulIdentifier","src":"325:6:75"}],"functionName":{"name":"lt","nativeSrc":"310:2:75","nodeType":"YulIdentifier","src":"310:2:75"},"nativeSrc":"310:22:75","nodeType":"YulFunctionCall","src":"310:22:75"}],"functionName":{"name":"or","nativeSrc":"271:2:75","nodeType":"YulIdentifier","src":"271:2:75"},"nativeSrc":"271:62:75","nodeType":"YulFunctionCall","src":"271:62:75"},"nativeSrc":"268:88:75","nodeType":"YulIf","src":"268:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"372:2:75","nodeType":"YulLiteral","src":"372:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"376:10:75","nodeType":"YulIdentifier","src":"376:10:75"}],"functionName":{"name":"mstore","nativeSrc":"365:6:75","nodeType":"YulIdentifier","src":"365:6:75"},"nativeSrc":"365:22:75","nodeType":"YulFunctionCall","src":"365:22:75"},"nativeSrc":"365:22:75","nodeType":"YulExpressionStatement","src":"365:22:75"}]},"name":"allocate_memory","nativeSrc":"146:247:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"176:6:75","nodeType":"YulTypedName","src":"176:6:75","type":""}],"src":"146:247:75"},{"body":{"nativeSrc":"450:693:75","nodeType":"YulBlock","src":"450:693:75","statements":[{"body":{"nativeSrc":"499:16:75","nodeType":"YulBlock","src":"499:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"508:1:75","nodeType":"YulLiteral","src":"508:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"511:1:75","nodeType":"YulLiteral","src":"511:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"501:6:75","nodeType":"YulIdentifier","src":"501:6:75"},"nativeSrc":"501:12:75","nodeType":"YulFunctionCall","src":"501:12:75"},"nativeSrc":"501:12:75","nodeType":"YulExpressionStatement","src":"501:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"478:6:75","nodeType":"YulIdentifier","src":"478:6:75"},{"kind":"number","nativeSrc":"486:4:75","nodeType":"YulLiteral","src":"486:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"474:3:75","nodeType":"YulIdentifier","src":"474:3:75"},"nativeSrc":"474:17:75","nodeType":"YulFunctionCall","src":"474:17:75"},{"name":"end","nativeSrc":"493:3:75","nodeType":"YulIdentifier","src":"493:3:75"}],"functionName":{"name":"slt","nativeSrc":"470:3:75","nodeType":"YulIdentifier","src":"470:3:75"},"nativeSrc":"470:27:75","nodeType":"YulFunctionCall","src":"470:27:75"}],"functionName":{"name":"iszero","nativeSrc":"463:6:75","nodeType":"YulIdentifier","src":"463:6:75"},"nativeSrc":"463:35:75","nodeType":"YulFunctionCall","src":"463:35:75"},"nativeSrc":"460:55:75","nodeType":"YulIf","src":"460:55:75"},{"nativeSrc":"524:34:75","nodeType":"YulVariableDeclaration","src":"524:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"551:6:75","nodeType":"YulIdentifier","src":"551:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"538:12:75","nodeType":"YulIdentifier","src":"538:12:75"},"nativeSrc":"538:20:75","nodeType":"YulFunctionCall","src":"538:20:75"},"variables":[{"name":"length","nativeSrc":"528:6:75","nodeType":"YulTypedName","src":"528:6:75","type":""}]},{"body":{"nativeSrc":"601:22:75","nodeType":"YulBlock","src":"601:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"603:16:75","nodeType":"YulIdentifier","src":"603:16:75"},"nativeSrc":"603:18:75","nodeType":"YulFunctionCall","src":"603:18:75"},"nativeSrc":"603:18:75","nodeType":"YulExpressionStatement","src":"603:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"573:6:75","nodeType":"YulIdentifier","src":"573:6:75"},{"kind":"number","nativeSrc":"581:18:75","nodeType":"YulLiteral","src":"581:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"570:2:75","nodeType":"YulIdentifier","src":"570:2:75"},"nativeSrc":"570:30:75","nodeType":"YulFunctionCall","src":"570:30:75"},"nativeSrc":"567:56:75","nodeType":"YulIf","src":"567:56:75"},{"nativeSrc":"632:15:75","nodeType":"YulVariableDeclaration","src":"632:15:75","value":{"kind":"number","nativeSrc":"646:1:75","nodeType":"YulLiteral","src":"646:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"636:6:75","nodeType":"YulTypedName","src":"636:6:75","type":""}]},{"nativeSrc":"656:19:75","nodeType":"YulAssignment","src":"656:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"672:2:75","nodeType":"YulLiteral","src":"672:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"666:5:75","nodeType":"YulIdentifier","src":"666:5:75"},"nativeSrc":"666:9:75","nodeType":"YulFunctionCall","src":"666:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"656:6:75","nodeType":"YulIdentifier","src":"656:6:75"}]},{"nativeSrc":"684:85:75","nodeType":"YulVariableDeclaration","src":"684:85:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"706:6:75","nodeType":"YulIdentifier","src":"706:6:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"730:6:75","nodeType":"YulIdentifier","src":"730:6:75"},{"kind":"number","nativeSrc":"738:4:75","nodeType":"YulLiteral","src":"738:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"726:3:75","nodeType":"YulIdentifier","src":"726:3:75"},"nativeSrc":"726:17:75","nodeType":"YulFunctionCall","src":"726:17:75"},{"arguments":[{"kind":"number","nativeSrc":"749:2:75","nodeType":"YulLiteral","src":"749:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"745:3:75","nodeType":"YulIdentifier","src":"745:3:75"},"nativeSrc":"745:7:75","nodeType":"YulFunctionCall","src":"745:7:75"}],"functionName":{"name":"and","nativeSrc":"722:3:75","nodeType":"YulIdentifier","src":"722:3:75"},"nativeSrc":"722:31:75","nodeType":"YulFunctionCall","src":"722:31:75"},{"kind":"number","nativeSrc":"755:2:75","nodeType":"YulLiteral","src":"755:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"718:3:75","nodeType":"YulIdentifier","src":"718:3:75"},"nativeSrc":"718:40:75","nodeType":"YulFunctionCall","src":"718:40:75"},{"arguments":[{"kind":"number","nativeSrc":"764:2:75","nodeType":"YulLiteral","src":"764:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"760:3:75","nodeType":"YulIdentifier","src":"760:3:75"},"nativeSrc":"760:7:75","nodeType":"YulFunctionCall","src":"760:7:75"}],"functionName":{"name":"and","nativeSrc":"714:3:75","nodeType":"YulIdentifier","src":"714:3:75"},"nativeSrc":"714:54:75","nodeType":"YulFunctionCall","src":"714:54:75"}],"functionName":{"name":"add","nativeSrc":"702:3:75","nodeType":"YulIdentifier","src":"702:3:75"},"nativeSrc":"702:67:75","nodeType":"YulFunctionCall","src":"702:67:75"},"variables":[{"name":"newFreePtr","nativeSrc":"688:10:75","nodeType":"YulTypedName","src":"688:10:75","type":""}]},{"body":{"nativeSrc":"844:22:75","nodeType":"YulBlock","src":"844:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"846:16:75","nodeType":"YulIdentifier","src":"846:16:75"},"nativeSrc":"846:18:75","nodeType":"YulFunctionCall","src":"846:18:75"},"nativeSrc":"846:18:75","nodeType":"YulExpressionStatement","src":"846:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"787:10:75","nodeType":"YulIdentifier","src":"787:10:75"},{"kind":"number","nativeSrc":"799:18:75","nodeType":"YulLiteral","src":"799:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"784:2:75","nodeType":"YulIdentifier","src":"784:2:75"},"nativeSrc":"784:34:75","nodeType":"YulFunctionCall","src":"784:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"823:10:75","nodeType":"YulIdentifier","src":"823:10:75"},{"name":"memPtr","nativeSrc":"835:6:75","nodeType":"YulIdentifier","src":"835:6:75"}],"functionName":{"name":"lt","nativeSrc":"820:2:75","nodeType":"YulIdentifier","src":"820:2:75"},"nativeSrc":"820:22:75","nodeType":"YulFunctionCall","src":"820:22:75"}],"functionName":{"name":"or","nativeSrc":"781:2:75","nodeType":"YulIdentifier","src":"781:2:75"},"nativeSrc":"781:62:75","nodeType":"YulFunctionCall","src":"781:62:75"},"nativeSrc":"778:88:75","nodeType":"YulIf","src":"778:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"882:2:75","nodeType":"YulLiteral","src":"882:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"886:10:75","nodeType":"YulIdentifier","src":"886:10:75"}],"functionName":{"name":"mstore","nativeSrc":"875:6:75","nodeType":"YulIdentifier","src":"875:6:75"},"nativeSrc":"875:22:75","nodeType":"YulFunctionCall","src":"875:22:75"},"nativeSrc":"875:22:75","nodeType":"YulExpressionStatement","src":"875:22:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"913:6:75","nodeType":"YulIdentifier","src":"913:6:75"},{"name":"length","nativeSrc":"921:6:75","nodeType":"YulIdentifier","src":"921:6:75"}],"functionName":{"name":"mstore","nativeSrc":"906:6:75","nodeType":"YulIdentifier","src":"906:6:75"},"nativeSrc":"906:22:75","nodeType":"YulFunctionCall","src":"906:22:75"},"nativeSrc":"906:22:75","nodeType":"YulExpressionStatement","src":"906:22:75"},{"body":{"nativeSrc":"980:16:75","nodeType":"YulBlock","src":"980:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"989:1:75","nodeType":"YulLiteral","src":"989:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"992:1:75","nodeType":"YulLiteral","src":"992:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"982:6:75","nodeType":"YulIdentifier","src":"982:6:75"},"nativeSrc":"982:12:75","nodeType":"YulFunctionCall","src":"982:12:75"},"nativeSrc":"982:12:75","nodeType":"YulExpressionStatement","src":"982:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"951:6:75","nodeType":"YulIdentifier","src":"951:6:75"},{"name":"length","nativeSrc":"959:6:75","nodeType":"YulIdentifier","src":"959:6:75"}],"functionName":{"name":"add","nativeSrc":"947:3:75","nodeType":"YulIdentifier","src":"947:3:75"},"nativeSrc":"947:19:75","nodeType":"YulFunctionCall","src":"947:19:75"},{"kind":"number","nativeSrc":"968:4:75","nodeType":"YulLiteral","src":"968:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:75","nodeType":"YulIdentifier","src":"943:3:75"},"nativeSrc":"943:30:75","nodeType":"YulFunctionCall","src":"943:30:75"},{"name":"end","nativeSrc":"975:3:75","nodeType":"YulIdentifier","src":"975:3:75"}],"functionName":{"name":"gt","nativeSrc":"940:2:75","nodeType":"YulIdentifier","src":"940:2:75"},"nativeSrc":"940:39:75","nodeType":"YulFunctionCall","src":"940:39:75"},"nativeSrc":"937:59:75","nodeType":"YulIf","src":"937:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1022:6:75","nodeType":"YulIdentifier","src":"1022:6:75"},{"kind":"number","nativeSrc":"1030:4:75","nodeType":"YulLiteral","src":"1030:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1018:3:75","nodeType":"YulIdentifier","src":"1018:3:75"},"nativeSrc":"1018:17:75","nodeType":"YulFunctionCall","src":"1018:17:75"},{"arguments":[{"name":"offset","nativeSrc":"1041:6:75","nodeType":"YulIdentifier","src":"1041:6:75"},{"kind":"number","nativeSrc":"1049:4:75","nodeType":"YulLiteral","src":"1049:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1037:3:75","nodeType":"YulIdentifier","src":"1037:3:75"},"nativeSrc":"1037:17:75","nodeType":"YulFunctionCall","src":"1037:17:75"},{"name":"length","nativeSrc":"1056:6:75","nodeType":"YulIdentifier","src":"1056:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"1005:12:75","nodeType":"YulIdentifier","src":"1005:12:75"},"nativeSrc":"1005:58:75","nodeType":"YulFunctionCall","src":"1005:58:75"},"nativeSrc":"1005:58:75","nodeType":"YulExpressionStatement","src":"1005:58:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1087:6:75","nodeType":"YulIdentifier","src":"1087:6:75"},{"name":"length","nativeSrc":"1095:6:75","nodeType":"YulIdentifier","src":"1095:6:75"}],"functionName":{"name":"add","nativeSrc":"1083:3:75","nodeType":"YulIdentifier","src":"1083:3:75"},"nativeSrc":"1083:19:75","nodeType":"YulFunctionCall","src":"1083:19:75"},{"kind":"number","nativeSrc":"1104:4:75","nodeType":"YulLiteral","src":"1104:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1079:3:75","nodeType":"YulIdentifier","src":"1079:3:75"},"nativeSrc":"1079:30:75","nodeType":"YulFunctionCall","src":"1079:30:75"},{"kind":"number","nativeSrc":"1111:1:75","nodeType":"YulLiteral","src":"1111:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1072:6:75","nodeType":"YulIdentifier","src":"1072:6:75"},"nativeSrc":"1072:41:75","nodeType":"YulFunctionCall","src":"1072:41:75"},"nativeSrc":"1072:41:75","nodeType":"YulExpressionStatement","src":"1072:41:75"},{"nativeSrc":"1122:15:75","nodeType":"YulAssignment","src":"1122:15:75","value":{"name":"memPtr","nativeSrc":"1131:6:75","nodeType":"YulIdentifier","src":"1131:6:75"},"variableNames":[{"name":"array","nativeSrc":"1122:5:75","nodeType":"YulIdentifier","src":"1122:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"398:745:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"424:6:75","nodeType":"YulTypedName","src":"424:6:75","type":""},{"name":"end","nativeSrc":"432:3:75","nodeType":"YulTypedName","src":"432:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"440:5:75","nodeType":"YulTypedName","src":"440:5:75","type":""}],"src":"398:745:75"},{"body":{"nativeSrc":"1242:383:75","nodeType":"YulBlock","src":"1242:383:75","statements":[{"body":{"nativeSrc":"1288:16:75","nodeType":"YulBlock","src":"1288:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1297:1:75","nodeType":"YulLiteral","src":"1297:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1300:1:75","nodeType":"YulLiteral","src":"1300:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1290:6:75","nodeType":"YulIdentifier","src":"1290:6:75"},"nativeSrc":"1290:12:75","nodeType":"YulFunctionCall","src":"1290:12:75"},"nativeSrc":"1290:12:75","nodeType":"YulExpressionStatement","src":"1290:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1263:7:75","nodeType":"YulIdentifier","src":"1263:7:75"},{"name":"headStart","nativeSrc":"1272:9:75","nodeType":"YulIdentifier","src":"1272:9:75"}],"functionName":{"name":"sub","nativeSrc":"1259:3:75","nodeType":"YulIdentifier","src":"1259:3:75"},"nativeSrc":"1259:23:75","nodeType":"YulFunctionCall","src":"1259:23:75"},{"kind":"number","nativeSrc":"1284:2:75","nodeType":"YulLiteral","src":"1284:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1255:3:75","nodeType":"YulIdentifier","src":"1255:3:75"},"nativeSrc":"1255:32:75","nodeType":"YulFunctionCall","src":"1255:32:75"},"nativeSrc":"1252:52:75","nodeType":"YulIf","src":"1252:52:75"},{"nativeSrc":"1313:36:75","nodeType":"YulVariableDeclaration","src":"1313:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1339:9:75","nodeType":"YulIdentifier","src":"1339:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1326:12:75","nodeType":"YulIdentifier","src":"1326:12:75"},"nativeSrc":"1326:23:75","nodeType":"YulFunctionCall","src":"1326:23:75"},"variables":[{"name":"value","nativeSrc":"1317:5:75","nodeType":"YulTypedName","src":"1317:5:75","type":""}]},{"body":{"nativeSrc":"1397:16:75","nodeType":"YulBlock","src":"1397:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1406:1:75","nodeType":"YulLiteral","src":"1406:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1409:1:75","nodeType":"YulLiteral","src":"1409:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1399:6:75","nodeType":"YulIdentifier","src":"1399:6:75"},"nativeSrc":"1399:12:75","nodeType":"YulFunctionCall","src":"1399:12:75"},"nativeSrc":"1399:12:75","nodeType":"YulExpressionStatement","src":"1399:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1371:5:75","nodeType":"YulIdentifier","src":"1371:5:75"},{"arguments":[{"name":"value","nativeSrc":"1382:5:75","nodeType":"YulIdentifier","src":"1382:5:75"},{"kind":"number","nativeSrc":"1389:4:75","nodeType":"YulLiteral","src":"1389:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1378:3:75","nodeType":"YulIdentifier","src":"1378:3:75"},"nativeSrc":"1378:16:75","nodeType":"YulFunctionCall","src":"1378:16:75"}],"functionName":{"name":"eq","nativeSrc":"1368:2:75","nodeType":"YulIdentifier","src":"1368:2:75"},"nativeSrc":"1368:27:75","nodeType":"YulFunctionCall","src":"1368:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1361:6:75","nodeType":"YulIdentifier","src":"1361:6:75"},"nativeSrc":"1361:35:75","nodeType":"YulFunctionCall","src":"1361:35:75"},"nativeSrc":"1358:55:75","nodeType":"YulIf","src":"1358:55:75"},{"nativeSrc":"1422:15:75","nodeType":"YulAssignment","src":"1422:15:75","value":{"name":"value","nativeSrc":"1432:5:75","nodeType":"YulIdentifier","src":"1432:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1422:6:75","nodeType":"YulIdentifier","src":"1422:6:75"}]},{"nativeSrc":"1446:46:75","nodeType":"YulVariableDeclaration","src":"1446:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1477:9:75","nodeType":"YulIdentifier","src":"1477:9:75"},{"kind":"number","nativeSrc":"1488:2:75","nodeType":"YulLiteral","src":"1488:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1473:3:75","nodeType":"YulIdentifier","src":"1473:3:75"},"nativeSrc":"1473:18:75","nodeType":"YulFunctionCall","src":"1473:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1460:12:75","nodeType":"YulIdentifier","src":"1460:12:75"},"nativeSrc":"1460:32:75","nodeType":"YulFunctionCall","src":"1460:32:75"},"variables":[{"name":"offset","nativeSrc":"1450:6:75","nodeType":"YulTypedName","src":"1450:6:75","type":""}]},{"body":{"nativeSrc":"1535:16:75","nodeType":"YulBlock","src":"1535:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1544:1:75","nodeType":"YulLiteral","src":"1544:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1547:1:75","nodeType":"YulLiteral","src":"1547:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1537:6:75","nodeType":"YulIdentifier","src":"1537:6:75"},"nativeSrc":"1537:12:75","nodeType":"YulFunctionCall","src":"1537:12:75"},"nativeSrc":"1537:12:75","nodeType":"YulExpressionStatement","src":"1537:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1507:6:75","nodeType":"YulIdentifier","src":"1507:6:75"},{"kind":"number","nativeSrc":"1515:18:75","nodeType":"YulLiteral","src":"1515:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1504:2:75","nodeType":"YulIdentifier","src":"1504:2:75"},"nativeSrc":"1504:30:75","nodeType":"YulFunctionCall","src":"1504:30:75"},"nativeSrc":"1501:50:75","nodeType":"YulIf","src":"1501:50:75"},{"nativeSrc":"1560:59:75","nodeType":"YulAssignment","src":"1560:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1591:9:75","nodeType":"YulIdentifier","src":"1591:9:75"},{"name":"offset","nativeSrc":"1602:6:75","nodeType":"YulIdentifier","src":"1602:6:75"}],"functionName":{"name":"add","nativeSrc":"1587:3:75","nodeType":"YulIdentifier","src":"1587:3:75"},"nativeSrc":"1587:22:75","nodeType":"YulFunctionCall","src":"1587:22:75"},{"name":"dataEnd","nativeSrc":"1611:7:75","nodeType":"YulIdentifier","src":"1611:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1570:16:75","nodeType":"YulIdentifier","src":"1570:16:75"},"nativeSrc":"1570:49:75","nodeType":"YulFunctionCall","src":"1570:49:75"},"variableNames":[{"name":"value1","nativeSrc":"1560:6:75","nodeType":"YulIdentifier","src":"1560:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1148:477:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1200:9:75","nodeType":"YulTypedName","src":"1200:9:75","type":""},{"name":"dataEnd","nativeSrc":"1211:7:75","nodeType":"YulTypedName","src":"1211:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1223:6:75","nodeType":"YulTypedName","src":"1223:6:75","type":""},{"name":"value1","nativeSrc":"1231:6:75","nodeType":"YulTypedName","src":"1231:6:75","type":""}],"src":"1148:477:75"},{"body":{"nativeSrc":"1749:297:75","nodeType":"YulBlock","src":"1749:297:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1766:9:75","nodeType":"YulIdentifier","src":"1766:9:75"},{"kind":"number","nativeSrc":"1777:2:75","nodeType":"YulLiteral","src":"1777:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1759:6:75","nodeType":"YulIdentifier","src":"1759:6:75"},"nativeSrc":"1759:21:75","nodeType":"YulFunctionCall","src":"1759:21:75"},"nativeSrc":"1759:21:75","nodeType":"YulExpressionStatement","src":"1759:21:75"},{"nativeSrc":"1789:27:75","nodeType":"YulVariableDeclaration","src":"1789:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"1809:6:75","nodeType":"YulIdentifier","src":"1809:6:75"}],"functionName":{"name":"mload","nativeSrc":"1803:5:75","nodeType":"YulIdentifier","src":"1803:5:75"},"nativeSrc":"1803:13:75","nodeType":"YulFunctionCall","src":"1803:13:75"},"variables":[{"name":"length","nativeSrc":"1793:6:75","nodeType":"YulTypedName","src":"1793:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1836:9:75","nodeType":"YulIdentifier","src":"1836:9:75"},{"kind":"number","nativeSrc":"1847:2:75","nodeType":"YulLiteral","src":"1847:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1832:3:75","nodeType":"YulIdentifier","src":"1832:3:75"},"nativeSrc":"1832:18:75","nodeType":"YulFunctionCall","src":"1832:18:75"},{"name":"length","nativeSrc":"1852:6:75","nodeType":"YulIdentifier","src":"1852:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1825:6:75","nodeType":"YulIdentifier","src":"1825:6:75"},"nativeSrc":"1825:34:75","nodeType":"YulFunctionCall","src":"1825:34:75"},"nativeSrc":"1825:34:75","nodeType":"YulExpressionStatement","src":"1825:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1878:9:75","nodeType":"YulIdentifier","src":"1878:9:75"},{"kind":"number","nativeSrc":"1889:2:75","nodeType":"YulLiteral","src":"1889:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1874:3:75","nodeType":"YulIdentifier","src":"1874:3:75"},"nativeSrc":"1874:18:75","nodeType":"YulFunctionCall","src":"1874:18:75"},{"arguments":[{"name":"value0","nativeSrc":"1898:6:75","nodeType":"YulIdentifier","src":"1898:6:75"},{"kind":"number","nativeSrc":"1906:2:75","nodeType":"YulLiteral","src":"1906:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1894:3:75","nodeType":"YulIdentifier","src":"1894:3:75"},"nativeSrc":"1894:15:75","nodeType":"YulFunctionCall","src":"1894:15:75"},{"name":"length","nativeSrc":"1911:6:75","nodeType":"YulIdentifier","src":"1911:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1868:5:75","nodeType":"YulIdentifier","src":"1868:5:75"},"nativeSrc":"1868:50:75","nodeType":"YulFunctionCall","src":"1868:50:75"},"nativeSrc":"1868:50:75","nodeType":"YulExpressionStatement","src":"1868:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1942:9:75","nodeType":"YulIdentifier","src":"1942:9:75"},{"name":"length","nativeSrc":"1953:6:75","nodeType":"YulIdentifier","src":"1953:6:75"}],"functionName":{"name":"add","nativeSrc":"1938:3:75","nodeType":"YulIdentifier","src":"1938:3:75"},"nativeSrc":"1938:22:75","nodeType":"YulFunctionCall","src":"1938:22:75"},{"kind":"number","nativeSrc":"1962:2:75","nodeType":"YulLiteral","src":"1962:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1934:3:75","nodeType":"YulIdentifier","src":"1934:3:75"},"nativeSrc":"1934:31:75","nodeType":"YulFunctionCall","src":"1934:31:75"},{"kind":"number","nativeSrc":"1967:1:75","nodeType":"YulLiteral","src":"1967:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1927:6:75","nodeType":"YulIdentifier","src":"1927:6:75"},"nativeSrc":"1927:42:75","nodeType":"YulFunctionCall","src":"1927:42:75"},"nativeSrc":"1927:42:75","nodeType":"YulExpressionStatement","src":"1927:42:75"},{"nativeSrc":"1978:62:75","nodeType":"YulAssignment","src":"1978:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1994:9:75","nodeType":"YulIdentifier","src":"1994:9:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2013:6:75","nodeType":"YulIdentifier","src":"2013:6:75"},{"kind":"number","nativeSrc":"2021:2:75","nodeType":"YulLiteral","src":"2021:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2009:3:75","nodeType":"YulIdentifier","src":"2009:3:75"},"nativeSrc":"2009:15:75","nodeType":"YulFunctionCall","src":"2009:15:75"},{"arguments":[{"kind":"number","nativeSrc":"2030:2:75","nodeType":"YulLiteral","src":"2030:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2026:3:75","nodeType":"YulIdentifier","src":"2026:3:75"},"nativeSrc":"2026:7:75","nodeType":"YulFunctionCall","src":"2026:7:75"}],"functionName":{"name":"and","nativeSrc":"2005:3:75","nodeType":"YulIdentifier","src":"2005:3:75"},"nativeSrc":"2005:29:75","nodeType":"YulFunctionCall","src":"2005:29:75"}],"functionName":{"name":"add","nativeSrc":"1990:3:75","nodeType":"YulIdentifier","src":"1990:3:75"},"nativeSrc":"1990:45:75","nodeType":"YulFunctionCall","src":"1990:45:75"},{"kind":"number","nativeSrc":"2037:2:75","nodeType":"YulLiteral","src":"2037:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1986:3:75","nodeType":"YulIdentifier","src":"1986:3:75"},"nativeSrc":"1986:54:75","nodeType":"YulFunctionCall","src":"1986:54:75"},"variableNames":[{"name":"tail","nativeSrc":"1978:4:75","nodeType":"YulIdentifier","src":"1978:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1630:416:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1718:9:75","nodeType":"YulTypedName","src":"1718:9:75","type":""},{"name":"value0","nativeSrc":"1729:6:75","nodeType":"YulTypedName","src":"1729:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1740:4:75","nodeType":"YulTypedName","src":"1740:4:75","type":""}],"src":"1630:416:75"},{"body":{"nativeSrc":"2121:110:75","nodeType":"YulBlock","src":"2121:110:75","statements":[{"body":{"nativeSrc":"2167:16:75","nodeType":"YulBlock","src":"2167:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2176:1:75","nodeType":"YulLiteral","src":"2176:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2179:1:75","nodeType":"YulLiteral","src":"2179:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2169:6:75","nodeType":"YulIdentifier","src":"2169:6:75"},"nativeSrc":"2169:12:75","nodeType":"YulFunctionCall","src":"2169:12:75"},"nativeSrc":"2169:12:75","nodeType":"YulExpressionStatement","src":"2169:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2142:7:75","nodeType":"YulIdentifier","src":"2142:7:75"},{"name":"headStart","nativeSrc":"2151:9:75","nodeType":"YulIdentifier","src":"2151:9:75"}],"functionName":{"name":"sub","nativeSrc":"2138:3:75","nodeType":"YulIdentifier","src":"2138:3:75"},"nativeSrc":"2138:23:75","nodeType":"YulFunctionCall","src":"2138:23:75"},{"kind":"number","nativeSrc":"2163:2:75","nodeType":"YulLiteral","src":"2163:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2134:3:75","nodeType":"YulIdentifier","src":"2134:3:75"},"nativeSrc":"2134:32:75","nodeType":"YulFunctionCall","src":"2134:32:75"},"nativeSrc":"2131:52:75","nodeType":"YulIf","src":"2131:52:75"},{"nativeSrc":"2192:33:75","nodeType":"YulAssignment","src":"2192:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2215:9:75","nodeType":"YulIdentifier","src":"2215:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2202:12:75","nodeType":"YulIdentifier","src":"2202:12:75"},"nativeSrc":"2202:23:75","nodeType":"YulFunctionCall","src":"2202:23:75"},"variableNames":[{"name":"value0","nativeSrc":"2192:6:75","nodeType":"YulIdentifier","src":"2192:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2051:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2087:9:75","nodeType":"YulTypedName","src":"2087:9:75","type":""},{"name":"dataEnd","nativeSrc":"2098:7:75","nodeType":"YulTypedName","src":"2098:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2110:6:75","nodeType":"YulTypedName","src":"2110:6:75","type":""}],"src":"2051:180:75"},{"body":{"nativeSrc":"2281:86:75","nodeType":"YulBlock","src":"2281:86:75","statements":[{"body":{"nativeSrc":"2345:16:75","nodeType":"YulBlock","src":"2345:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2354:1:75","nodeType":"YulLiteral","src":"2354:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2357:1:75","nodeType":"YulLiteral","src":"2357:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2347:6:75","nodeType":"YulIdentifier","src":"2347:6:75"},"nativeSrc":"2347:12:75","nodeType":"YulFunctionCall","src":"2347:12:75"},"nativeSrc":"2347:12:75","nodeType":"YulExpressionStatement","src":"2347:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2304:5:75","nodeType":"YulIdentifier","src":"2304:5:75"},{"arguments":[{"name":"value","nativeSrc":"2315:5:75","nodeType":"YulIdentifier","src":"2315:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2330:3:75","nodeType":"YulLiteral","src":"2330:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2335:1:75","nodeType":"YulLiteral","src":"2335:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2326:3:75","nodeType":"YulIdentifier","src":"2326:3:75"},"nativeSrc":"2326:11:75","nodeType":"YulFunctionCall","src":"2326:11:75"},{"kind":"number","nativeSrc":"2339:1:75","nodeType":"YulLiteral","src":"2339:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2322:3:75","nodeType":"YulIdentifier","src":"2322:3:75"},"nativeSrc":"2322:19:75","nodeType":"YulFunctionCall","src":"2322:19:75"}],"functionName":{"name":"and","nativeSrc":"2311:3:75","nodeType":"YulIdentifier","src":"2311:3:75"},"nativeSrc":"2311:31:75","nodeType":"YulFunctionCall","src":"2311:31:75"}],"functionName":{"name":"eq","nativeSrc":"2301:2:75","nodeType":"YulIdentifier","src":"2301:2:75"},"nativeSrc":"2301:42:75","nodeType":"YulFunctionCall","src":"2301:42:75"}],"functionName":{"name":"iszero","nativeSrc":"2294:6:75","nodeType":"YulIdentifier","src":"2294:6:75"},"nativeSrc":"2294:50:75","nodeType":"YulFunctionCall","src":"2294:50:75"},"nativeSrc":"2291:70:75","nodeType":"YulIf","src":"2291:70:75"}]},"name":"validator_revert_address","nativeSrc":"2236:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2270:5:75","nodeType":"YulTypedName","src":"2270:5:75","type":""}],"src":"2236:131:75"},{"body":{"nativeSrc":"2442:177:75","nodeType":"YulBlock","src":"2442:177:75","statements":[{"body":{"nativeSrc":"2488:16:75","nodeType":"YulBlock","src":"2488:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2497:1:75","nodeType":"YulLiteral","src":"2497:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2500:1:75","nodeType":"YulLiteral","src":"2500:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2490:6:75","nodeType":"YulIdentifier","src":"2490:6:75"},"nativeSrc":"2490:12:75","nodeType":"YulFunctionCall","src":"2490:12:75"},"nativeSrc":"2490:12:75","nodeType":"YulExpressionStatement","src":"2490:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2463:7:75","nodeType":"YulIdentifier","src":"2463:7:75"},{"name":"headStart","nativeSrc":"2472:9:75","nodeType":"YulIdentifier","src":"2472:9:75"}],"functionName":{"name":"sub","nativeSrc":"2459:3:75","nodeType":"YulIdentifier","src":"2459:3:75"},"nativeSrc":"2459:23:75","nodeType":"YulFunctionCall","src":"2459:23:75"},{"kind":"number","nativeSrc":"2484:2:75","nodeType":"YulLiteral","src":"2484:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2455:3:75","nodeType":"YulIdentifier","src":"2455:3:75"},"nativeSrc":"2455:32:75","nodeType":"YulFunctionCall","src":"2455:32:75"},"nativeSrc":"2452:52:75","nodeType":"YulIf","src":"2452:52:75"},{"nativeSrc":"2513:36:75","nodeType":"YulVariableDeclaration","src":"2513:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2539:9:75","nodeType":"YulIdentifier","src":"2539:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2526:12:75","nodeType":"YulIdentifier","src":"2526:12:75"},"nativeSrc":"2526:23:75","nodeType":"YulFunctionCall","src":"2526:23:75"},"variables":[{"name":"value","nativeSrc":"2517:5:75","nodeType":"YulTypedName","src":"2517:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2583:5:75","nodeType":"YulIdentifier","src":"2583:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2558:24:75","nodeType":"YulIdentifier","src":"2558:24:75"},"nativeSrc":"2558:31:75","nodeType":"YulFunctionCall","src":"2558:31:75"},"nativeSrc":"2558:31:75","nodeType":"YulExpressionStatement","src":"2558:31:75"},{"nativeSrc":"2598:15:75","nodeType":"YulAssignment","src":"2598:15:75","value":{"name":"value","nativeSrc":"2608:5:75","nodeType":"YulIdentifier","src":"2608:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2598:6:75","nodeType":"YulIdentifier","src":"2598:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2372:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2408:9:75","nodeType":"YulTypedName","src":"2408:9:75","type":""},{"name":"dataEnd","nativeSrc":"2419:7:75","nodeType":"YulTypedName","src":"2419:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2431:6:75","nodeType":"YulTypedName","src":"2431:6:75","type":""}],"src":"2372:247:75"},{"body":{"nativeSrc":"2725:76:75","nodeType":"YulBlock","src":"2725:76:75","statements":[{"nativeSrc":"2735:26:75","nodeType":"YulAssignment","src":"2735:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2747:9:75","nodeType":"YulIdentifier","src":"2747:9:75"},{"kind":"number","nativeSrc":"2758:2:75","nodeType":"YulLiteral","src":"2758:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2743:3:75","nodeType":"YulIdentifier","src":"2743:3:75"},"nativeSrc":"2743:18:75","nodeType":"YulFunctionCall","src":"2743:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2735:4:75","nodeType":"YulIdentifier","src":"2735:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2777:9:75","nodeType":"YulIdentifier","src":"2777:9:75"},{"name":"value0","nativeSrc":"2788:6:75","nodeType":"YulIdentifier","src":"2788:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2770:6:75","nodeType":"YulIdentifier","src":"2770:6:75"},"nativeSrc":"2770:25:75","nodeType":"YulFunctionCall","src":"2770:25:75"},"nativeSrc":"2770:25:75","nodeType":"YulExpressionStatement","src":"2770:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2624:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2694:9:75","nodeType":"YulTypedName","src":"2694:9:75","type":""},{"name":"value0","nativeSrc":"2705:6:75","nodeType":"YulTypedName","src":"2705:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2716:4:75","nodeType":"YulTypedName","src":"2716:4:75","type":""}],"src":"2624:177:75"},{"body":{"nativeSrc":"2848:76:75","nodeType":"YulBlock","src":"2848:76:75","statements":[{"body":{"nativeSrc":"2902:16:75","nodeType":"YulBlock","src":"2902:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2911:1:75","nodeType":"YulLiteral","src":"2911:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2914:1:75","nodeType":"YulLiteral","src":"2914:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2904:6:75","nodeType":"YulIdentifier","src":"2904:6:75"},"nativeSrc":"2904:12:75","nodeType":"YulFunctionCall","src":"2904:12:75"},"nativeSrc":"2904:12:75","nodeType":"YulExpressionStatement","src":"2904:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2871:5:75","nodeType":"YulIdentifier","src":"2871:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2892:5:75","nodeType":"YulIdentifier","src":"2892:5:75"}],"functionName":{"name":"iszero","nativeSrc":"2885:6:75","nodeType":"YulIdentifier","src":"2885:6:75"},"nativeSrc":"2885:13:75","nodeType":"YulFunctionCall","src":"2885:13:75"}],"functionName":{"name":"iszero","nativeSrc":"2878:6:75","nodeType":"YulIdentifier","src":"2878:6:75"},"nativeSrc":"2878:21:75","nodeType":"YulFunctionCall","src":"2878:21:75"}],"functionName":{"name":"eq","nativeSrc":"2868:2:75","nodeType":"YulIdentifier","src":"2868:2:75"},"nativeSrc":"2868:32:75","nodeType":"YulFunctionCall","src":"2868:32:75"}],"functionName":{"name":"iszero","nativeSrc":"2861:6:75","nodeType":"YulIdentifier","src":"2861:6:75"},"nativeSrc":"2861:40:75","nodeType":"YulFunctionCall","src":"2861:40:75"},"nativeSrc":"2858:60:75","nodeType":"YulIf","src":"2858:60:75"}]},"name":"validator_revert_bool","nativeSrc":"2806:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2837:5:75","nodeType":"YulTypedName","src":"2837:5:75","type":""}],"src":"2806:118:75"},{"body":{"nativeSrc":"2996:174:75","nodeType":"YulBlock","src":"2996:174:75","statements":[{"body":{"nativeSrc":"3042:16:75","nodeType":"YulBlock","src":"3042:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3051:1:75","nodeType":"YulLiteral","src":"3051:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3054:1:75","nodeType":"YulLiteral","src":"3054:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3044:6:75","nodeType":"YulIdentifier","src":"3044:6:75"},"nativeSrc":"3044:12:75","nodeType":"YulFunctionCall","src":"3044:12:75"},"nativeSrc":"3044:12:75","nodeType":"YulExpressionStatement","src":"3044:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3017:7:75","nodeType":"YulIdentifier","src":"3017:7:75"},{"name":"headStart","nativeSrc":"3026:9:75","nodeType":"YulIdentifier","src":"3026:9:75"}],"functionName":{"name":"sub","nativeSrc":"3013:3:75","nodeType":"YulIdentifier","src":"3013:3:75"},"nativeSrc":"3013:23:75","nodeType":"YulFunctionCall","src":"3013:23:75"},{"kind":"number","nativeSrc":"3038:2:75","nodeType":"YulLiteral","src":"3038:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3009:3:75","nodeType":"YulIdentifier","src":"3009:3:75"},"nativeSrc":"3009:32:75","nodeType":"YulFunctionCall","src":"3009:32:75"},"nativeSrc":"3006:52:75","nodeType":"YulIf","src":"3006:52:75"},{"nativeSrc":"3067:36:75","nodeType":"YulVariableDeclaration","src":"3067:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3093:9:75","nodeType":"YulIdentifier","src":"3093:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3080:12:75","nodeType":"YulIdentifier","src":"3080:12:75"},"nativeSrc":"3080:23:75","nodeType":"YulFunctionCall","src":"3080:23:75"},"variables":[{"name":"value","nativeSrc":"3071:5:75","nodeType":"YulTypedName","src":"3071:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3134:5:75","nodeType":"YulIdentifier","src":"3134:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"3112:21:75","nodeType":"YulIdentifier","src":"3112:21:75"},"nativeSrc":"3112:28:75","nodeType":"YulFunctionCall","src":"3112:28:75"},"nativeSrc":"3112:28:75","nodeType":"YulExpressionStatement","src":"3112:28:75"},{"nativeSrc":"3149:15:75","nodeType":"YulAssignment","src":"3149:15:75","value":{"name":"value","nativeSrc":"3159:5:75","nodeType":"YulIdentifier","src":"3159:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3149:6:75","nodeType":"YulIdentifier","src":"3149:6:75"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2929:241:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2962:9:75","nodeType":"YulTypedName","src":"2962:9:75","type":""},{"name":"dataEnd","nativeSrc":"2973:7:75","nodeType":"YulTypedName","src":"2973:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2985:6:75","nodeType":"YulTypedName","src":"2985:6:75","type":""}],"src":"2929:241:75"},{"body":{"nativeSrc":"3276:76:75","nodeType":"YulBlock","src":"3276:76:75","statements":[{"nativeSrc":"3286:26:75","nodeType":"YulAssignment","src":"3286:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3298:9:75","nodeType":"YulIdentifier","src":"3298:9:75"},{"kind":"number","nativeSrc":"3309:2:75","nodeType":"YulLiteral","src":"3309:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3294:3:75","nodeType":"YulIdentifier","src":"3294:3:75"},"nativeSrc":"3294:18:75","nodeType":"YulFunctionCall","src":"3294:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3286:4:75","nodeType":"YulIdentifier","src":"3286:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3328:9:75","nodeType":"YulIdentifier","src":"3328:9:75"},{"name":"value0","nativeSrc":"3339:6:75","nodeType":"YulIdentifier","src":"3339:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3321:6:75","nodeType":"YulIdentifier","src":"3321:6:75"},"nativeSrc":"3321:25:75","nodeType":"YulFunctionCall","src":"3321:25:75"},"nativeSrc":"3321:25:75","nodeType":"YulExpressionStatement","src":"3321:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3175:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3245:9:75","nodeType":"YulTypedName","src":"3245:9:75","type":""},{"name":"value0","nativeSrc":"3256:6:75","nodeType":"YulTypedName","src":"3256:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3267:4:75","nodeType":"YulTypedName","src":"3267:4:75","type":""}],"src":"3175:177:75"},{"body":{"nativeSrc":"3458:102:75","nodeType":"YulBlock","src":"3458:102:75","statements":[{"nativeSrc":"3468:26:75","nodeType":"YulAssignment","src":"3468:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3480:9:75","nodeType":"YulIdentifier","src":"3480:9:75"},{"kind":"number","nativeSrc":"3491:2:75","nodeType":"YulLiteral","src":"3491:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3476:3:75","nodeType":"YulIdentifier","src":"3476:3:75"},"nativeSrc":"3476:18:75","nodeType":"YulFunctionCall","src":"3476:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3468:4:75","nodeType":"YulIdentifier","src":"3468:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3510:9:75","nodeType":"YulIdentifier","src":"3510:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3525:6:75","nodeType":"YulIdentifier","src":"3525:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3541:3:75","nodeType":"YulLiteral","src":"3541:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3546:1:75","nodeType":"YulLiteral","src":"3546:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3537:3:75","nodeType":"YulIdentifier","src":"3537:3:75"},"nativeSrc":"3537:11:75","nodeType":"YulFunctionCall","src":"3537:11:75"},{"kind":"number","nativeSrc":"3550:1:75","nodeType":"YulLiteral","src":"3550:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3533:3:75","nodeType":"YulIdentifier","src":"3533:3:75"},"nativeSrc":"3533:19:75","nodeType":"YulFunctionCall","src":"3533:19:75"}],"functionName":{"name":"and","nativeSrc":"3521:3:75","nodeType":"YulIdentifier","src":"3521:3:75"},"nativeSrc":"3521:32:75","nodeType":"YulFunctionCall","src":"3521:32:75"}],"functionName":{"name":"mstore","nativeSrc":"3503:6:75","nodeType":"YulIdentifier","src":"3503:6:75"},"nativeSrc":"3503:51:75","nodeType":"YulFunctionCall","src":"3503:51:75"},"nativeSrc":"3503:51:75","nodeType":"YulExpressionStatement","src":"3503:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3357:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3427:9:75","nodeType":"YulTypedName","src":"3427:9:75","type":""},{"name":"value0","nativeSrc":"3438:6:75","nodeType":"YulTypedName","src":"3438:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3449:4:75","nodeType":"YulTypedName","src":"3449:4:75","type":""}],"src":"3357:203:75"},{"body":{"nativeSrc":"3644:241:75","nodeType":"YulBlock","src":"3644:241:75","statements":[{"body":{"nativeSrc":"3690:16:75","nodeType":"YulBlock","src":"3690:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3699:1:75","nodeType":"YulLiteral","src":"3699:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3702:1:75","nodeType":"YulLiteral","src":"3702:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3692:6:75","nodeType":"YulIdentifier","src":"3692:6:75"},"nativeSrc":"3692:12:75","nodeType":"YulFunctionCall","src":"3692:12:75"},"nativeSrc":"3692:12:75","nodeType":"YulExpressionStatement","src":"3692:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3665:7:75","nodeType":"YulIdentifier","src":"3665:7:75"},{"name":"headStart","nativeSrc":"3674:9:75","nodeType":"YulIdentifier","src":"3674:9:75"}],"functionName":{"name":"sub","nativeSrc":"3661:3:75","nodeType":"YulIdentifier","src":"3661:3:75"},"nativeSrc":"3661:23:75","nodeType":"YulFunctionCall","src":"3661:23:75"},{"kind":"number","nativeSrc":"3686:2:75","nodeType":"YulLiteral","src":"3686:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3657:3:75","nodeType":"YulIdentifier","src":"3657:3:75"},"nativeSrc":"3657:32:75","nodeType":"YulFunctionCall","src":"3657:32:75"},"nativeSrc":"3654:52:75","nodeType":"YulIf","src":"3654:52:75"},{"nativeSrc":"3715:37:75","nodeType":"YulVariableDeclaration","src":"3715:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3742:9:75","nodeType":"YulIdentifier","src":"3742:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3729:12:75","nodeType":"YulIdentifier","src":"3729:12:75"},"nativeSrc":"3729:23:75","nodeType":"YulFunctionCall","src":"3729:23:75"},"variables":[{"name":"offset","nativeSrc":"3719:6:75","nodeType":"YulTypedName","src":"3719:6:75","type":""}]},{"body":{"nativeSrc":"3795:16:75","nodeType":"YulBlock","src":"3795:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3804:1:75","nodeType":"YulLiteral","src":"3804:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3807:1:75","nodeType":"YulLiteral","src":"3807:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3797:6:75","nodeType":"YulIdentifier","src":"3797:6:75"},"nativeSrc":"3797:12:75","nodeType":"YulFunctionCall","src":"3797:12:75"},"nativeSrc":"3797:12:75","nodeType":"YulExpressionStatement","src":"3797:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3767:6:75","nodeType":"YulIdentifier","src":"3767:6:75"},{"kind":"number","nativeSrc":"3775:18:75","nodeType":"YulLiteral","src":"3775:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3764:2:75","nodeType":"YulIdentifier","src":"3764:2:75"},"nativeSrc":"3764:30:75","nodeType":"YulFunctionCall","src":"3764:30:75"},"nativeSrc":"3761:50:75","nodeType":"YulIf","src":"3761:50:75"},{"nativeSrc":"3820:59:75","nodeType":"YulAssignment","src":"3820:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3851:9:75","nodeType":"YulIdentifier","src":"3851:9:75"},{"name":"offset","nativeSrc":"3862:6:75","nodeType":"YulIdentifier","src":"3862:6:75"}],"functionName":{"name":"add","nativeSrc":"3847:3:75","nodeType":"YulIdentifier","src":"3847:3:75"},"nativeSrc":"3847:22:75","nodeType":"YulFunctionCall","src":"3847:22:75"},{"name":"dataEnd","nativeSrc":"3871:7:75","nodeType":"YulIdentifier","src":"3871:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"3830:16:75","nodeType":"YulIdentifier","src":"3830:16:75"},"nativeSrc":"3830:49:75","nodeType":"YulFunctionCall","src":"3830:49:75"},"variableNames":[{"name":"value0","nativeSrc":"3820:6:75","nodeType":"YulIdentifier","src":"3820:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3565:320:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3610:9:75","nodeType":"YulTypedName","src":"3610:9:75","type":""},{"name":"dataEnd","nativeSrc":"3621:7:75","nodeType":"YulTypedName","src":"3621:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3633:6:75","nodeType":"YulTypedName","src":"3633:6:75","type":""}],"src":"3565:320:75"},{"body":{"nativeSrc":"4047:214:75","nodeType":"YulBlock","src":"4047:214:75","statements":[{"nativeSrc":"4057:26:75","nodeType":"YulAssignment","src":"4057:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4069:9:75","nodeType":"YulIdentifier","src":"4069:9:75"},{"kind":"number","nativeSrc":"4080:2:75","nodeType":"YulLiteral","src":"4080:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4065:3:75","nodeType":"YulIdentifier","src":"4065:3:75"},"nativeSrc":"4065:18:75","nodeType":"YulFunctionCall","src":"4065:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4057:4:75","nodeType":"YulIdentifier","src":"4057:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4099:9:75","nodeType":"YulIdentifier","src":"4099:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4114:6:75","nodeType":"YulIdentifier","src":"4114:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4130:3:75","nodeType":"YulLiteral","src":"4130:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4135:1:75","nodeType":"YulLiteral","src":"4135:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4126:3:75","nodeType":"YulIdentifier","src":"4126:3:75"},"nativeSrc":"4126:11:75","nodeType":"YulFunctionCall","src":"4126:11:75"},{"kind":"number","nativeSrc":"4139:1:75","nodeType":"YulLiteral","src":"4139:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4122:3:75","nodeType":"YulIdentifier","src":"4122:3:75"},"nativeSrc":"4122:19:75","nodeType":"YulFunctionCall","src":"4122:19:75"}],"functionName":{"name":"and","nativeSrc":"4110:3:75","nodeType":"YulIdentifier","src":"4110:3:75"},"nativeSrc":"4110:32:75","nodeType":"YulFunctionCall","src":"4110:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4092:6:75","nodeType":"YulIdentifier","src":"4092:6:75"},"nativeSrc":"4092:51:75","nodeType":"YulFunctionCall","src":"4092:51:75"},"nativeSrc":"4092:51:75","nodeType":"YulExpressionStatement","src":"4092:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4163:9:75","nodeType":"YulIdentifier","src":"4163:9:75"},{"kind":"number","nativeSrc":"4174:2:75","nodeType":"YulLiteral","src":"4174:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4159:3:75","nodeType":"YulIdentifier","src":"4159:3:75"},"nativeSrc":"4159:18:75","nodeType":"YulFunctionCall","src":"4159:18:75"},{"name":"value1","nativeSrc":"4179:6:75","nodeType":"YulIdentifier","src":"4179:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4152:6:75","nodeType":"YulIdentifier","src":"4152:6:75"},"nativeSrc":"4152:34:75","nodeType":"YulFunctionCall","src":"4152:34:75"},"nativeSrc":"4152:34:75","nodeType":"YulExpressionStatement","src":"4152:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4206:9:75","nodeType":"YulIdentifier","src":"4206:9:75"},{"kind":"number","nativeSrc":"4217:2:75","nodeType":"YulLiteral","src":"4217:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4202:3:75","nodeType":"YulIdentifier","src":"4202:3:75"},"nativeSrc":"4202:18:75","nodeType":"YulFunctionCall","src":"4202:18:75"},{"arguments":[{"name":"value2","nativeSrc":"4226:6:75","nodeType":"YulIdentifier","src":"4226:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4242:3:75","nodeType":"YulLiteral","src":"4242:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4247:1:75","nodeType":"YulLiteral","src":"4247:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4238:3:75","nodeType":"YulIdentifier","src":"4238:3:75"},"nativeSrc":"4238:11:75","nodeType":"YulFunctionCall","src":"4238:11:75"},{"kind":"number","nativeSrc":"4251:1:75","nodeType":"YulLiteral","src":"4251:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4234:3:75","nodeType":"YulIdentifier","src":"4234:3:75"},"nativeSrc":"4234:19:75","nodeType":"YulFunctionCall","src":"4234:19:75"}],"functionName":{"name":"and","nativeSrc":"4222:3:75","nodeType":"YulIdentifier","src":"4222:3:75"},"nativeSrc":"4222:32:75","nodeType":"YulFunctionCall","src":"4222:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4195:6:75","nodeType":"YulIdentifier","src":"4195:6:75"},"nativeSrc":"4195:60:75","nodeType":"YulFunctionCall","src":"4195:60:75"},"nativeSrc":"4195:60:75","nodeType":"YulExpressionStatement","src":"4195:60:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"3890:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4000:9:75","nodeType":"YulTypedName","src":"4000:9:75","type":""},{"name":"value2","nativeSrc":"4011:6:75","nodeType":"YulTypedName","src":"4011:6:75","type":""},{"name":"value1","nativeSrc":"4019:6:75","nodeType":"YulTypedName","src":"4019:6:75","type":""},{"name":"value0","nativeSrc":"4027:6:75","nodeType":"YulTypedName","src":"4027:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4038:4:75","nodeType":"YulTypedName","src":"4038:4:75","type":""}],"src":"3890:371:75"},{"body":{"nativeSrc":"4347:149:75","nodeType":"YulBlock","src":"4347:149:75","statements":[{"body":{"nativeSrc":"4393:16:75","nodeType":"YulBlock","src":"4393:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4402:1:75","nodeType":"YulLiteral","src":"4402:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4405:1:75","nodeType":"YulLiteral","src":"4405:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4395:6:75","nodeType":"YulIdentifier","src":"4395:6:75"},"nativeSrc":"4395:12:75","nodeType":"YulFunctionCall","src":"4395:12:75"},"nativeSrc":"4395:12:75","nodeType":"YulExpressionStatement","src":"4395:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4368:7:75","nodeType":"YulIdentifier","src":"4368:7:75"},{"name":"headStart","nativeSrc":"4377:9:75","nodeType":"YulIdentifier","src":"4377:9:75"}],"functionName":{"name":"sub","nativeSrc":"4364:3:75","nodeType":"YulIdentifier","src":"4364:3:75"},"nativeSrc":"4364:23:75","nodeType":"YulFunctionCall","src":"4364:23:75"},{"kind":"number","nativeSrc":"4389:2:75","nodeType":"YulLiteral","src":"4389:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4360:3:75","nodeType":"YulIdentifier","src":"4360:3:75"},"nativeSrc":"4360:32:75","nodeType":"YulFunctionCall","src":"4360:32:75"},"nativeSrc":"4357:52:75","nodeType":"YulIf","src":"4357:52:75"},{"nativeSrc":"4418:14:75","nodeType":"YulVariableDeclaration","src":"4418:14:75","value":{"kind":"number","nativeSrc":"4431:1:75","nodeType":"YulLiteral","src":"4431:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4422:5:75","nodeType":"YulTypedName","src":"4422:5:75","type":""}]},{"nativeSrc":"4441:25:75","nodeType":"YulAssignment","src":"4441:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4456:9:75","nodeType":"YulIdentifier","src":"4456:9:75"}],"functionName":{"name":"mload","nativeSrc":"4450:5:75","nodeType":"YulIdentifier","src":"4450:5:75"},"nativeSrc":"4450:16:75","nodeType":"YulFunctionCall","src":"4450:16:75"},"variableNames":[{"name":"value","nativeSrc":"4441:5:75","nodeType":"YulIdentifier","src":"4441:5:75"}]},{"nativeSrc":"4475:15:75","nodeType":"YulAssignment","src":"4475:15:75","value":{"name":"value","nativeSrc":"4485:5:75","nodeType":"YulIdentifier","src":"4485:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4475:6:75","nodeType":"YulIdentifier","src":"4475:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"4266:230:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4313:9:75","nodeType":"YulTypedName","src":"4313:9:75","type":""},{"name":"dataEnd","nativeSrc":"4324:7:75","nodeType":"YulTypedName","src":"4324:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4336:6:75","nodeType":"YulTypedName","src":"4336:6:75","type":""}],"src":"4266:230:75"},{"body":{"nativeSrc":"4592:407:75","nodeType":"YulBlock","src":"4592:407:75","statements":[{"body":{"nativeSrc":"4636:16:75","nodeType":"YulBlock","src":"4636:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4645:1:75","nodeType":"YulLiteral","src":"4645:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4648:1:75","nodeType":"YulLiteral","src":"4648:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4638:6:75","nodeType":"YulIdentifier","src":"4638:6:75"},"nativeSrc":"4638:12:75","nodeType":"YulFunctionCall","src":"4638:12:75"},"nativeSrc":"4638:12:75","nodeType":"YulExpressionStatement","src":"4638:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"4613:3:75","nodeType":"YulIdentifier","src":"4613:3:75"},{"name":"headStart","nativeSrc":"4618:9:75","nodeType":"YulIdentifier","src":"4618:9:75"}],"functionName":{"name":"sub","nativeSrc":"4609:3:75","nodeType":"YulIdentifier","src":"4609:3:75"},"nativeSrc":"4609:19:75","nodeType":"YulFunctionCall","src":"4609:19:75"},{"kind":"number","nativeSrc":"4630:4:75","nodeType":"YulLiteral","src":"4630:4:75","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"4605:3:75","nodeType":"YulIdentifier","src":"4605:3:75"},"nativeSrc":"4605:30:75","nodeType":"YulFunctionCall","src":"4605:30:75"},"nativeSrc":"4602:50:75","nodeType":"YulIf","src":"4602:50:75"},{"nativeSrc":"4661:15:75","nodeType":"YulVariableDeclaration","src":"4661:15:75","value":{"kind":"number","nativeSrc":"4675:1:75","nodeType":"YulLiteral","src":"4675:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"4665:6:75","nodeType":"YulTypedName","src":"4665:6:75","type":""}]},{"nativeSrc":"4685:19:75","nodeType":"YulAssignment","src":"4685:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"4701:2:75","nodeType":"YulLiteral","src":"4701:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4695:5:75","nodeType":"YulIdentifier","src":"4695:5:75"},"nativeSrc":"4695:9:75","nodeType":"YulFunctionCall","src":"4695:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"4685:6:75","nodeType":"YulIdentifier","src":"4685:6:75"}]},{"nativeSrc":"4713:35:75","nodeType":"YulVariableDeclaration","src":"4713:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"4735:6:75","nodeType":"YulIdentifier","src":"4735:6:75"},{"kind":"number","nativeSrc":"4743:4:75","nodeType":"YulLiteral","src":"4743:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4731:3:75","nodeType":"YulIdentifier","src":"4731:3:75"},"nativeSrc":"4731:17:75","nodeType":"YulFunctionCall","src":"4731:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"4717:10:75","nodeType":"YulTypedName","src":"4717:10:75","type":""}]},{"body":{"nativeSrc":"4823:22:75","nodeType":"YulBlock","src":"4823:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4825:16:75","nodeType":"YulIdentifier","src":"4825:16:75"},"nativeSrc":"4825:18:75","nodeType":"YulFunctionCall","src":"4825:18:75"},"nativeSrc":"4825:18:75","nodeType":"YulExpressionStatement","src":"4825:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4766:10:75","nodeType":"YulIdentifier","src":"4766:10:75"},{"kind":"number","nativeSrc":"4778:18:75","nodeType":"YulLiteral","src":"4778:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4763:2:75","nodeType":"YulIdentifier","src":"4763:2:75"},"nativeSrc":"4763:34:75","nodeType":"YulFunctionCall","src":"4763:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4802:10:75","nodeType":"YulIdentifier","src":"4802:10:75"},{"name":"memPtr","nativeSrc":"4814:6:75","nodeType":"YulIdentifier","src":"4814:6:75"}],"functionName":{"name":"lt","nativeSrc":"4799:2:75","nodeType":"YulIdentifier","src":"4799:2:75"},"nativeSrc":"4799:22:75","nodeType":"YulFunctionCall","src":"4799:22:75"}],"functionName":{"name":"or","nativeSrc":"4760:2:75","nodeType":"YulIdentifier","src":"4760:2:75"},"nativeSrc":"4760:62:75","nodeType":"YulFunctionCall","src":"4760:62:75"},"nativeSrc":"4757:88:75","nodeType":"YulIf","src":"4757:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4861:2:75","nodeType":"YulLiteral","src":"4861:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4865:10:75","nodeType":"YulIdentifier","src":"4865:10:75"}],"functionName":{"name":"mstore","nativeSrc":"4854:6:75","nodeType":"YulIdentifier","src":"4854:6:75"},"nativeSrc":"4854:22:75","nodeType":"YulFunctionCall","src":"4854:22:75"},"nativeSrc":"4854:22:75","nodeType":"YulExpressionStatement","src":"4854:22:75"},{"nativeSrc":"4885:15:75","nodeType":"YulAssignment","src":"4885:15:75","value":{"name":"memPtr","nativeSrc":"4894:6:75","nodeType":"YulIdentifier","src":"4894:6:75"},"variableNames":[{"name":"value","nativeSrc":"4885:5:75","nodeType":"YulIdentifier","src":"4885:5:75"}]},{"nativeSrc":"4909:16:75","nodeType":"YulVariableDeclaration","src":"4909:16:75","value":{"kind":"number","nativeSrc":"4924:1:75","nodeType":"YulLiteral","src":"4924:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"4913:7:75","nodeType":"YulTypedName","src":"4913:7:75","type":""}]},{"nativeSrc":"4934:27:75","nodeType":"YulAssignment","src":"4934:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4951:9:75","nodeType":"YulIdentifier","src":"4951:9:75"}],"functionName":{"name":"mload","nativeSrc":"4945:5:75","nodeType":"YulIdentifier","src":"4945:5:75"},"nativeSrc":"4945:16:75","nodeType":"YulFunctionCall","src":"4945:16:75"},"variableNames":[{"name":"value_1","nativeSrc":"4934:7:75","nodeType":"YulIdentifier","src":"4934:7:75"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4977:6:75","nodeType":"YulIdentifier","src":"4977:6:75"},{"name":"value_1","nativeSrc":"4985:7:75","nodeType":"YulIdentifier","src":"4985:7:75"}],"functionName":{"name":"mstore","nativeSrc":"4970:6:75","nodeType":"YulIdentifier","src":"4970:6:75"},"nativeSrc":"4970:23:75","nodeType":"YulFunctionCall","src":"4970:23:75"},"nativeSrc":"4970:23:75","nodeType":"YulExpressionStatement","src":"4970:23:75"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"4501:498:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4563:9:75","nodeType":"YulTypedName","src":"4563:9:75","type":""},{"name":"end","nativeSrc":"4574:3:75","nodeType":"YulTypedName","src":"4574:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"4582:5:75","nodeType":"YulTypedName","src":"4582:5:75","type":""}],"src":"4501:498:75"},{"body":{"nativeSrc":"5064:132:75","nodeType":"YulBlock","src":"5064:132:75","statements":[{"nativeSrc":"5074:22:75","nodeType":"YulAssignment","src":"5074:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"5089:6:75","nodeType":"YulIdentifier","src":"5089:6:75"}],"functionName":{"name":"mload","nativeSrc":"5083:5:75","nodeType":"YulIdentifier","src":"5083:5:75"},"nativeSrc":"5083:13:75","nodeType":"YulFunctionCall","src":"5083:13:75"},"variableNames":[{"name":"value","nativeSrc":"5074:5:75","nodeType":"YulIdentifier","src":"5074:5:75"}]},{"body":{"nativeSrc":"5174:16:75","nodeType":"YulBlock","src":"5174:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5183:1:75","nodeType":"YulLiteral","src":"5183:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5186:1:75","nodeType":"YulLiteral","src":"5186:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5176:6:75","nodeType":"YulIdentifier","src":"5176:6:75"},"nativeSrc":"5176:12:75","nodeType":"YulFunctionCall","src":"5176:12:75"},"nativeSrc":"5176:12:75","nodeType":"YulExpressionStatement","src":"5176:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5118:5:75","nodeType":"YulIdentifier","src":"5118:5:75"},{"arguments":[{"name":"value","nativeSrc":"5129:5:75","nodeType":"YulIdentifier","src":"5129:5:75"},{"kind":"number","nativeSrc":"5136:34:75","nodeType":"YulLiteral","src":"5136:34:75","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5125:3:75","nodeType":"YulIdentifier","src":"5125:3:75"},"nativeSrc":"5125:46:75","nodeType":"YulFunctionCall","src":"5125:46:75"}],"functionName":{"name":"eq","nativeSrc":"5115:2:75","nodeType":"YulIdentifier","src":"5115:2:75"},"nativeSrc":"5115:57:75","nodeType":"YulFunctionCall","src":"5115:57:75"}],"functionName":{"name":"iszero","nativeSrc":"5108:6:75","nodeType":"YulIdentifier","src":"5108:6:75"},"nativeSrc":"5108:65:75","nodeType":"YulFunctionCall","src":"5108:65:75"},"nativeSrc":"5105:85:75","nodeType":"YulIf","src":"5105:85:75"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"5004:192:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5043:6:75","nodeType":"YulTypedName","src":"5043:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5054:5:75","nodeType":"YulTypedName","src":"5054:5:75","type":""}],"src":"5004:192:75"},{"body":{"nativeSrc":"5260:110:75","nodeType":"YulBlock","src":"5260:110:75","statements":[{"nativeSrc":"5270:22:75","nodeType":"YulAssignment","src":"5270:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"5285:6:75","nodeType":"YulIdentifier","src":"5285:6:75"}],"functionName":{"name":"mload","nativeSrc":"5279:5:75","nodeType":"YulIdentifier","src":"5279:5:75"},"nativeSrc":"5279:13:75","nodeType":"YulFunctionCall","src":"5279:13:75"},"variableNames":[{"name":"value","nativeSrc":"5270:5:75","nodeType":"YulIdentifier","src":"5270:5:75"}]},{"body":{"nativeSrc":"5348:16:75","nodeType":"YulBlock","src":"5348:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5357:1:75","nodeType":"YulLiteral","src":"5357:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5360:1:75","nodeType":"YulLiteral","src":"5360:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5350:6:75","nodeType":"YulIdentifier","src":"5350:6:75"},"nativeSrc":"5350:12:75","nodeType":"YulFunctionCall","src":"5350:12:75"},"nativeSrc":"5350:12:75","nodeType":"YulExpressionStatement","src":"5350:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5314:5:75","nodeType":"YulIdentifier","src":"5314:5:75"},{"arguments":[{"name":"value","nativeSrc":"5325:5:75","nodeType":"YulIdentifier","src":"5325:5:75"},{"kind":"number","nativeSrc":"5332:12:75","nodeType":"YulLiteral","src":"5332:12:75","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"5321:3:75","nodeType":"YulIdentifier","src":"5321:3:75"},"nativeSrc":"5321:24:75","nodeType":"YulFunctionCall","src":"5321:24:75"}],"functionName":{"name":"eq","nativeSrc":"5311:2:75","nodeType":"YulIdentifier","src":"5311:2:75"},"nativeSrc":"5311:35:75","nodeType":"YulFunctionCall","src":"5311:35:75"}],"functionName":{"name":"iszero","nativeSrc":"5304:6:75","nodeType":"YulIdentifier","src":"5304:6:75"},"nativeSrc":"5304:43:75","nodeType":"YulFunctionCall","src":"5304:43:75"},"nativeSrc":"5301:63:75","nodeType":"YulIf","src":"5301:63:75"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"5201:169:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5239:6:75","nodeType":"YulTypedName","src":"5239:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5250:5:75","nodeType":"YulTypedName","src":"5250:5:75","type":""}],"src":"5201:169:75"},{"body":{"nativeSrc":"5434:104:75","nodeType":"YulBlock","src":"5434:104:75","statements":[{"nativeSrc":"5444:22:75","nodeType":"YulAssignment","src":"5444:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"5459:6:75","nodeType":"YulIdentifier","src":"5459:6:75"}],"functionName":{"name":"mload","nativeSrc":"5453:5:75","nodeType":"YulIdentifier","src":"5453:5:75"},"nativeSrc":"5453:13:75","nodeType":"YulFunctionCall","src":"5453:13:75"},"variableNames":[{"name":"value","nativeSrc":"5444:5:75","nodeType":"YulIdentifier","src":"5444:5:75"}]},{"body":{"nativeSrc":"5516:16:75","nodeType":"YulBlock","src":"5516:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5525:1:75","nodeType":"YulLiteral","src":"5525:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5528:1:75","nodeType":"YulLiteral","src":"5528:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5518:6:75","nodeType":"YulIdentifier","src":"5518:6:75"},"nativeSrc":"5518:12:75","nodeType":"YulFunctionCall","src":"5518:12:75"},"nativeSrc":"5518:12:75","nodeType":"YulExpressionStatement","src":"5518:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"5488:5:75","nodeType":"YulIdentifier","src":"5488:5:75"},{"arguments":[{"name":"value","nativeSrc":"5499:5:75","nodeType":"YulIdentifier","src":"5499:5:75"},{"kind":"number","nativeSrc":"5506:6:75","nodeType":"YulLiteral","src":"5506:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"5495:3:75","nodeType":"YulIdentifier","src":"5495:3:75"},"nativeSrc":"5495:18:75","nodeType":"YulFunctionCall","src":"5495:18:75"}],"functionName":{"name":"eq","nativeSrc":"5485:2:75","nodeType":"YulIdentifier","src":"5485:2:75"},"nativeSrc":"5485:29:75","nodeType":"YulFunctionCall","src":"5485:29:75"}],"functionName":{"name":"iszero","nativeSrc":"5478:6:75","nodeType":"YulIdentifier","src":"5478:6:75"},"nativeSrc":"5478:37:75","nodeType":"YulFunctionCall","src":"5478:37:75"},"nativeSrc":"5475:57:75","nodeType":"YulIf","src":"5475:57:75"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"5375:163:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5413:6:75","nodeType":"YulTypedName","src":"5413:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5424:5:75","nodeType":"YulTypedName","src":"5424:5:75","type":""}],"src":"5375:163:75"},{"body":{"nativeSrc":"5603:78:75","nodeType":"YulBlock","src":"5603:78:75","statements":[{"nativeSrc":"5613:22:75","nodeType":"YulAssignment","src":"5613:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"5628:6:75","nodeType":"YulIdentifier","src":"5628:6:75"}],"functionName":{"name":"mload","nativeSrc":"5622:5:75","nodeType":"YulIdentifier","src":"5622:5:75"},"nativeSrc":"5622:13:75","nodeType":"YulFunctionCall","src":"5622:13:75"},"variableNames":[{"name":"value","nativeSrc":"5613:5:75","nodeType":"YulIdentifier","src":"5613:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5669:5:75","nodeType":"YulIdentifier","src":"5669:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5644:24:75","nodeType":"YulIdentifier","src":"5644:24:75"},"nativeSrc":"5644:31:75","nodeType":"YulFunctionCall","src":"5644:31:75"},"nativeSrc":"5644:31:75","nodeType":"YulExpressionStatement","src":"5644:31:75"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"5543:138:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5582:6:75","nodeType":"YulTypedName","src":"5582:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"5593:5:75","nodeType":"YulTypedName","src":"5593:5:75","type":""}],"src":"5543:138:75"},{"body":{"nativeSrc":"5797:1433:75","nodeType":"YulBlock","src":"5797:1433:75","statements":[{"nativeSrc":"5807:43:75","nodeType":"YulVariableDeclaration","src":"5807:43:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5825:7:75","nodeType":"YulIdentifier","src":"5825:7:75"},{"name":"headStart","nativeSrc":"5834:9:75","nodeType":"YulIdentifier","src":"5834:9:75"}],"functionName":{"name":"sub","nativeSrc":"5821:3:75","nodeType":"YulIdentifier","src":"5821:3:75"},"nativeSrc":"5821:23:75","nodeType":"YulFunctionCall","src":"5821:23:75"},{"kind":"number","nativeSrc":"5846:3:75","nodeType":"YulLiteral","src":"5846:3:75","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"5817:3:75","nodeType":"YulIdentifier","src":"5817:3:75"},"nativeSrc":"5817:33:75","nodeType":"YulFunctionCall","src":"5817:33:75"},"variables":[{"name":"_1","nativeSrc":"5811:2:75","nodeType":"YulTypedName","src":"5811:2:75","type":""}]},{"body":{"nativeSrc":"5865:16:75","nodeType":"YulBlock","src":"5865:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5874:1:75","nodeType":"YulLiteral","src":"5874:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5877:1:75","nodeType":"YulLiteral","src":"5877:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5867:6:75","nodeType":"YulIdentifier","src":"5867:6:75"},"nativeSrc":"5867:12:75","nodeType":"YulFunctionCall","src":"5867:12:75"},"nativeSrc":"5867:12:75","nodeType":"YulExpressionStatement","src":"5867:12:75"}]},"condition":{"name":"_1","nativeSrc":"5862:2:75","nodeType":"YulIdentifier","src":"5862:2:75"},"nativeSrc":"5859:22:75","nodeType":"YulIf","src":"5859:22:75"},{"nativeSrc":"5890:7:75","nodeType":"YulAssignment","src":"5890:7:75","value":{"kind":"number","nativeSrc":"5896:1:75","nodeType":"YulLiteral","src":"5896:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"5890:2:75","nodeType":"YulIdentifier","src":"5890:2:75"}]},{"nativeSrc":"5906:30:75","nodeType":"YulVariableDeclaration","src":"5906:30:75","value":{"arguments":[],"functionName":{"name":"allocate_memory","nativeSrc":"5919:15:75","nodeType":"YulIdentifier","src":"5919:15:75"},"nativeSrc":"5919:17:75","nodeType":"YulFunctionCall","src":"5919:17:75"},"variables":[{"name":"value","nativeSrc":"5910:5:75","nodeType":"YulTypedName","src":"5910:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5952:5:75","nodeType":"YulIdentifier","src":"5952:5:75"},{"arguments":[{"name":"headStart","nativeSrc":"6012:9:75","nodeType":"YulIdentifier","src":"6012:9:75"},{"name":"dataEnd","nativeSrc":"6023:7:75","nodeType":"YulIdentifier","src":"6023:7:75"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"5959:52:75","nodeType":"YulIdentifier","src":"5959:52:75"},"nativeSrc":"5959:72:75","nodeType":"YulFunctionCall","src":"5959:72:75"}],"functionName":{"name":"mstore","nativeSrc":"5945:6:75","nodeType":"YulIdentifier","src":"5945:6:75"},"nativeSrc":"5945:87:75","nodeType":"YulFunctionCall","src":"5945:87:75"},"nativeSrc":"5945:87:75","nodeType":"YulExpressionStatement","src":"5945:87:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6052:5:75","nodeType":"YulIdentifier","src":"6052:5:75"},{"kind":"number","nativeSrc":"6059:2:75","nodeType":"YulLiteral","src":"6059:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6048:3:75","nodeType":"YulIdentifier","src":"6048:3:75"},"nativeSrc":"6048:14:75","nodeType":"YulFunctionCall","src":"6048:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6098:9:75","nodeType":"YulIdentifier","src":"6098:9:75"},{"kind":"number","nativeSrc":"6109:2:75","nodeType":"YulLiteral","src":"6109:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6094:3:75","nodeType":"YulIdentifier","src":"6094:3:75"},"nativeSrc":"6094:18:75","nodeType":"YulFunctionCall","src":"6094:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6064:29:75","nodeType":"YulIdentifier","src":"6064:29:75"},"nativeSrc":"6064:49:75","nodeType":"YulFunctionCall","src":"6064:49:75"}],"functionName":{"name":"mstore","nativeSrc":"6041:6:75","nodeType":"YulIdentifier","src":"6041:6:75"},"nativeSrc":"6041:73:75","nodeType":"YulFunctionCall","src":"6041:73:75"},"nativeSrc":"6041:73:75","nodeType":"YulExpressionStatement","src":"6041:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6134:5:75","nodeType":"YulIdentifier","src":"6134:5:75"},{"kind":"number","nativeSrc":"6141:2:75","nodeType":"YulLiteral","src":"6141:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6130:3:75","nodeType":"YulIdentifier","src":"6130:3:75"},"nativeSrc":"6130:14:75","nodeType":"YulFunctionCall","src":"6130:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6180:9:75","nodeType":"YulIdentifier","src":"6180:9:75"},{"kind":"number","nativeSrc":"6191:2:75","nodeType":"YulLiteral","src":"6191:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6176:3:75","nodeType":"YulIdentifier","src":"6176:3:75"},"nativeSrc":"6176:18:75","nodeType":"YulFunctionCall","src":"6176:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6146:29:75","nodeType":"YulIdentifier","src":"6146:29:75"},"nativeSrc":"6146:49:75","nodeType":"YulFunctionCall","src":"6146:49:75"}],"functionName":{"name":"mstore","nativeSrc":"6123:6:75","nodeType":"YulIdentifier","src":"6123:6:75"},"nativeSrc":"6123:73:75","nodeType":"YulFunctionCall","src":"6123:73:75"},"nativeSrc":"6123:73:75","nodeType":"YulExpressionStatement","src":"6123:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6216:5:75","nodeType":"YulIdentifier","src":"6216:5:75"},{"kind":"number","nativeSrc":"6223:2:75","nodeType":"YulLiteral","src":"6223:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6212:3:75","nodeType":"YulIdentifier","src":"6212:3:75"},"nativeSrc":"6212:14:75","nodeType":"YulFunctionCall","src":"6212:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6262:9:75","nodeType":"YulIdentifier","src":"6262:9:75"},{"kind":"number","nativeSrc":"6273:2:75","nodeType":"YulLiteral","src":"6273:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6258:3:75","nodeType":"YulIdentifier","src":"6258:3:75"},"nativeSrc":"6258:18:75","nodeType":"YulFunctionCall","src":"6258:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6228:29:75","nodeType":"YulIdentifier","src":"6228:29:75"},"nativeSrc":"6228:49:75","nodeType":"YulFunctionCall","src":"6228:49:75"}],"functionName":{"name":"mstore","nativeSrc":"6205:6:75","nodeType":"YulIdentifier","src":"6205:6:75"},"nativeSrc":"6205:73:75","nodeType":"YulFunctionCall","src":"6205:73:75"},"nativeSrc":"6205:73:75","nodeType":"YulExpressionStatement","src":"6205:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6298:5:75","nodeType":"YulIdentifier","src":"6298:5:75"},{"kind":"number","nativeSrc":"6305:3:75","nodeType":"YulLiteral","src":"6305:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6294:3:75","nodeType":"YulIdentifier","src":"6294:3:75"},"nativeSrc":"6294:15:75","nodeType":"YulFunctionCall","src":"6294:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6345:9:75","nodeType":"YulIdentifier","src":"6345:9:75"},{"kind":"number","nativeSrc":"6356:3:75","nodeType":"YulLiteral","src":"6356:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6341:3:75","nodeType":"YulIdentifier","src":"6341:3:75"},"nativeSrc":"6341:19:75","nodeType":"YulFunctionCall","src":"6341:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6311:29:75","nodeType":"YulIdentifier","src":"6311:29:75"},"nativeSrc":"6311:50:75","nodeType":"YulFunctionCall","src":"6311:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6287:6:75","nodeType":"YulIdentifier","src":"6287:6:75"},"nativeSrc":"6287:75:75","nodeType":"YulFunctionCall","src":"6287:75:75"},"nativeSrc":"6287:75:75","nodeType":"YulExpressionStatement","src":"6287:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6382:5:75","nodeType":"YulIdentifier","src":"6382:5:75"},{"kind":"number","nativeSrc":"6389:3:75","nodeType":"YulLiteral","src":"6389:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6378:3:75","nodeType":"YulIdentifier","src":"6378:3:75"},"nativeSrc":"6378:15:75","nodeType":"YulFunctionCall","src":"6378:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6429:9:75","nodeType":"YulIdentifier","src":"6429:9:75"},{"kind":"number","nativeSrc":"6440:3:75","nodeType":"YulLiteral","src":"6440:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"6425:3:75","nodeType":"YulIdentifier","src":"6425:3:75"},"nativeSrc":"6425:19:75","nodeType":"YulFunctionCall","src":"6425:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6395:29:75","nodeType":"YulIdentifier","src":"6395:29:75"},"nativeSrc":"6395:50:75","nodeType":"YulFunctionCall","src":"6395:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6371:6:75","nodeType":"YulIdentifier","src":"6371:6:75"},"nativeSrc":"6371:75:75","nodeType":"YulFunctionCall","src":"6371:75:75"},"nativeSrc":"6371:75:75","nodeType":"YulExpressionStatement","src":"6371:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6466:5:75","nodeType":"YulIdentifier","src":"6466:5:75"},{"kind":"number","nativeSrc":"6473:3:75","nodeType":"YulLiteral","src":"6473:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"6462:3:75","nodeType":"YulIdentifier","src":"6462:3:75"},"nativeSrc":"6462:15:75","nodeType":"YulFunctionCall","src":"6462:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6512:9:75","nodeType":"YulIdentifier","src":"6512:9:75"},{"kind":"number","nativeSrc":"6523:3:75","nodeType":"YulLiteral","src":"6523:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"6508:3:75","nodeType":"YulIdentifier","src":"6508:3:75"},"nativeSrc":"6508:19:75","nodeType":"YulFunctionCall","src":"6508:19:75"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"6479:28:75","nodeType":"YulIdentifier","src":"6479:28:75"},"nativeSrc":"6479:49:75","nodeType":"YulFunctionCall","src":"6479:49:75"}],"functionName":{"name":"mstore","nativeSrc":"6455:6:75","nodeType":"YulIdentifier","src":"6455:6:75"},"nativeSrc":"6455:74:75","nodeType":"YulFunctionCall","src":"6455:74:75"},"nativeSrc":"6455:74:75","nodeType":"YulExpressionStatement","src":"6455:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6549:5:75","nodeType":"YulIdentifier","src":"6549:5:75"},{"kind":"number","nativeSrc":"6556:3:75","nodeType":"YulLiteral","src":"6556:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"6545:3:75","nodeType":"YulIdentifier","src":"6545:3:75"},"nativeSrc":"6545:15:75","nodeType":"YulFunctionCall","src":"6545:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6595:9:75","nodeType":"YulIdentifier","src":"6595:9:75"},{"kind":"number","nativeSrc":"6606:3:75","nodeType":"YulLiteral","src":"6606:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"6591:3:75","nodeType":"YulIdentifier","src":"6591:3:75"},"nativeSrc":"6591:19:75","nodeType":"YulFunctionCall","src":"6591:19:75"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"6562:28:75","nodeType":"YulIdentifier","src":"6562:28:75"},"nativeSrc":"6562:49:75","nodeType":"YulFunctionCall","src":"6562:49:75"}],"functionName":{"name":"mstore","nativeSrc":"6538:6:75","nodeType":"YulIdentifier","src":"6538:6:75"},"nativeSrc":"6538:74:75","nodeType":"YulFunctionCall","src":"6538:74:75"},"nativeSrc":"6538:74:75","nodeType":"YulExpressionStatement","src":"6538:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6632:5:75","nodeType":"YulIdentifier","src":"6632:5:75"},{"kind":"number","nativeSrc":"6639:3:75","nodeType":"YulLiteral","src":"6639:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6628:3:75","nodeType":"YulIdentifier","src":"6628:3:75"},"nativeSrc":"6628:15:75","nodeType":"YulFunctionCall","src":"6628:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6679:9:75","nodeType":"YulIdentifier","src":"6679:9:75"},{"kind":"number","nativeSrc":"6690:3:75","nodeType":"YulLiteral","src":"6690:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"6675:3:75","nodeType":"YulIdentifier","src":"6675:3:75"},"nativeSrc":"6675:19:75","nodeType":"YulFunctionCall","src":"6675:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6645:29:75","nodeType":"YulIdentifier","src":"6645:29:75"},"nativeSrc":"6645:50:75","nodeType":"YulFunctionCall","src":"6645:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6621:6:75","nodeType":"YulIdentifier","src":"6621:6:75"},"nativeSrc":"6621:75:75","nodeType":"YulFunctionCall","src":"6621:75:75"},"nativeSrc":"6621:75:75","nodeType":"YulExpressionStatement","src":"6621:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6716:5:75","nodeType":"YulIdentifier","src":"6716:5:75"},{"kind":"number","nativeSrc":"6723:3:75","nodeType":"YulLiteral","src":"6723:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"6712:3:75","nodeType":"YulIdentifier","src":"6712:3:75"},"nativeSrc":"6712:15:75","nodeType":"YulFunctionCall","src":"6712:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6763:9:75","nodeType":"YulIdentifier","src":"6763:9:75"},{"kind":"number","nativeSrc":"6774:3:75","nodeType":"YulLiteral","src":"6774:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"6759:3:75","nodeType":"YulIdentifier","src":"6759:3:75"},"nativeSrc":"6759:19:75","nodeType":"YulFunctionCall","src":"6759:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6729:29:75","nodeType":"YulIdentifier","src":"6729:29:75"},"nativeSrc":"6729:50:75","nodeType":"YulFunctionCall","src":"6729:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6705:6:75","nodeType":"YulIdentifier","src":"6705:6:75"},"nativeSrc":"6705:75:75","nodeType":"YulFunctionCall","src":"6705:75:75"},"nativeSrc":"6705:75:75","nodeType":"YulExpressionStatement","src":"6705:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6800:5:75","nodeType":"YulIdentifier","src":"6800:5:75"},{"kind":"number","nativeSrc":"6807:3:75","nodeType":"YulLiteral","src":"6807:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"6796:3:75","nodeType":"YulIdentifier","src":"6796:3:75"},"nativeSrc":"6796:15:75","nodeType":"YulFunctionCall","src":"6796:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6847:9:75","nodeType":"YulIdentifier","src":"6847:9:75"},{"kind":"number","nativeSrc":"6858:3:75","nodeType":"YulLiteral","src":"6858:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"6843:3:75","nodeType":"YulIdentifier","src":"6843:3:75"},"nativeSrc":"6843:19:75","nodeType":"YulFunctionCall","src":"6843:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6813:29:75","nodeType":"YulIdentifier","src":"6813:29:75"},"nativeSrc":"6813:50:75","nodeType":"YulFunctionCall","src":"6813:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6789:6:75","nodeType":"YulIdentifier","src":"6789:6:75"},"nativeSrc":"6789:75:75","nodeType":"YulFunctionCall","src":"6789:75:75"},"nativeSrc":"6789:75:75","nodeType":"YulExpressionStatement","src":"6789:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6884:5:75","nodeType":"YulIdentifier","src":"6884:5:75"},{"kind":"number","nativeSrc":"6891:3:75","nodeType":"YulLiteral","src":"6891:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"6880:3:75","nodeType":"YulIdentifier","src":"6880:3:75"},"nativeSrc":"6880:15:75","nodeType":"YulFunctionCall","src":"6880:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6931:9:75","nodeType":"YulIdentifier","src":"6931:9:75"},{"kind":"number","nativeSrc":"6942:3:75","nodeType":"YulLiteral","src":"6942:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"6927:3:75","nodeType":"YulIdentifier","src":"6927:3:75"},"nativeSrc":"6927:19:75","nodeType":"YulFunctionCall","src":"6927:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"6897:29:75","nodeType":"YulIdentifier","src":"6897:29:75"},"nativeSrc":"6897:50:75","nodeType":"YulFunctionCall","src":"6897:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6873:6:75","nodeType":"YulIdentifier","src":"6873:6:75"},"nativeSrc":"6873:75:75","nodeType":"YulFunctionCall","src":"6873:75:75"},"nativeSrc":"6873:75:75","nodeType":"YulExpressionStatement","src":"6873:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6968:5:75","nodeType":"YulIdentifier","src":"6968:5:75"},{"kind":"number","nativeSrc":"6975:3:75","nodeType":"YulLiteral","src":"6975:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"6964:3:75","nodeType":"YulIdentifier","src":"6964:3:75"},"nativeSrc":"6964:15:75","nodeType":"YulFunctionCall","src":"6964:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7015:9:75","nodeType":"YulIdentifier","src":"7015:9:75"},{"kind":"number","nativeSrc":"7026:3:75","nodeType":"YulLiteral","src":"7026:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"7011:3:75","nodeType":"YulIdentifier","src":"7011:3:75"},"nativeSrc":"7011:19:75","nodeType":"YulFunctionCall","src":"7011:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"6981:29:75","nodeType":"YulIdentifier","src":"6981:29:75"},"nativeSrc":"6981:50:75","nodeType":"YulFunctionCall","src":"6981:50:75"}],"functionName":{"name":"mstore","nativeSrc":"6957:6:75","nodeType":"YulIdentifier","src":"6957:6:75"},"nativeSrc":"6957:75:75","nodeType":"YulFunctionCall","src":"6957:75:75"},"nativeSrc":"6957:75:75","nodeType":"YulExpressionStatement","src":"6957:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7052:5:75","nodeType":"YulIdentifier","src":"7052:5:75"},{"kind":"number","nativeSrc":"7059:3:75","nodeType":"YulLiteral","src":"7059:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"7048:3:75","nodeType":"YulIdentifier","src":"7048:3:75"},"nativeSrc":"7048:15:75","nodeType":"YulFunctionCall","src":"7048:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7099:9:75","nodeType":"YulIdentifier","src":"7099:9:75"},{"kind":"number","nativeSrc":"7110:3:75","nodeType":"YulLiteral","src":"7110:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"7095:3:75","nodeType":"YulIdentifier","src":"7095:3:75"},"nativeSrc":"7095:19:75","nodeType":"YulFunctionCall","src":"7095:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"7065:29:75","nodeType":"YulIdentifier","src":"7065:29:75"},"nativeSrc":"7065:50:75","nodeType":"YulFunctionCall","src":"7065:50:75"}],"functionName":{"name":"mstore","nativeSrc":"7041:6:75","nodeType":"YulIdentifier","src":"7041:6:75"},"nativeSrc":"7041:75:75","nodeType":"YulFunctionCall","src":"7041:75:75"},"nativeSrc":"7041:75:75","nodeType":"YulExpressionStatement","src":"7041:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7136:5:75","nodeType":"YulIdentifier","src":"7136:5:75"},{"kind":"number","nativeSrc":"7143:3:75","nodeType":"YulLiteral","src":"7143:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"7132:3:75","nodeType":"YulIdentifier","src":"7132:3:75"},"nativeSrc":"7132:15:75","nodeType":"YulFunctionCall","src":"7132:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7183:9:75","nodeType":"YulIdentifier","src":"7183:9:75"},{"kind":"number","nativeSrc":"7194:3:75","nodeType":"YulLiteral","src":"7194:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"7179:3:75","nodeType":"YulIdentifier","src":"7179:3:75"},"nativeSrc":"7179:19:75","nodeType":"YulFunctionCall","src":"7179:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"7149:29:75","nodeType":"YulIdentifier","src":"7149:29:75"},"nativeSrc":"7149:50:75","nodeType":"YulFunctionCall","src":"7149:50:75"}],"functionName":{"name":"mstore","nativeSrc":"7125:6:75","nodeType":"YulIdentifier","src":"7125:6:75"},"nativeSrc":"7125:75:75","nodeType":"YulFunctionCall","src":"7125:75:75"},"nativeSrc":"7125:75:75","nodeType":"YulExpressionStatement","src":"7125:75:75"},{"nativeSrc":"7209:15:75","nodeType":"YulAssignment","src":"7209:15:75","value":{"name":"value","nativeSrc":"7219:5:75","nodeType":"YulIdentifier","src":"7219:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7209:6:75","nodeType":"YulIdentifier","src":"7209:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$19475_memory_ptr_fromMemory","nativeSrc":"5686:1544:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5763:9:75","nodeType":"YulTypedName","src":"5763:9:75","type":""},{"name":"dataEnd","nativeSrc":"5774:7:75","nodeType":"YulTypedName","src":"5774:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5786:6:75","nodeType":"YulTypedName","src":"5786:6:75","type":""}],"src":"5686:1544:75"},{"body":{"nativeSrc":"7364:145:75","nodeType":"YulBlock","src":"7364:145:75","statements":[{"nativeSrc":"7374:26:75","nodeType":"YulAssignment","src":"7374:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7386:9:75","nodeType":"YulIdentifier","src":"7386:9:75"},{"kind":"number","nativeSrc":"7397:2:75","nodeType":"YulLiteral","src":"7397:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7382:3:75","nodeType":"YulIdentifier","src":"7382:3:75"},"nativeSrc":"7382:18:75","nodeType":"YulFunctionCall","src":"7382:18:75"},"variableNames":[{"name":"tail","nativeSrc":"7374:4:75","nodeType":"YulIdentifier","src":"7374:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7416:9:75","nodeType":"YulIdentifier","src":"7416:9:75"},{"arguments":[{"name":"value0","nativeSrc":"7431:6:75","nodeType":"YulIdentifier","src":"7431:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7447:3:75","nodeType":"YulLiteral","src":"7447:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7452:1:75","nodeType":"YulLiteral","src":"7452:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7443:3:75","nodeType":"YulIdentifier","src":"7443:3:75"},"nativeSrc":"7443:11:75","nodeType":"YulFunctionCall","src":"7443:11:75"},{"kind":"number","nativeSrc":"7456:1:75","nodeType":"YulLiteral","src":"7456:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7439:3:75","nodeType":"YulIdentifier","src":"7439:3:75"},"nativeSrc":"7439:19:75","nodeType":"YulFunctionCall","src":"7439:19:75"}],"functionName":{"name":"and","nativeSrc":"7427:3:75","nodeType":"YulIdentifier","src":"7427:3:75"},"nativeSrc":"7427:32:75","nodeType":"YulFunctionCall","src":"7427:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7409:6:75","nodeType":"YulIdentifier","src":"7409:6:75"},"nativeSrc":"7409:51:75","nodeType":"YulFunctionCall","src":"7409:51:75"},"nativeSrc":"7409:51:75","nodeType":"YulExpressionStatement","src":"7409:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7480:9:75","nodeType":"YulIdentifier","src":"7480:9:75"},{"kind":"number","nativeSrc":"7491:2:75","nodeType":"YulLiteral","src":"7491:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7476:3:75","nodeType":"YulIdentifier","src":"7476:3:75"},"nativeSrc":"7476:18:75","nodeType":"YulFunctionCall","src":"7476:18:75"},{"name":"value1","nativeSrc":"7496:6:75","nodeType":"YulIdentifier","src":"7496:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7469:6:75","nodeType":"YulIdentifier","src":"7469:6:75"},"nativeSrc":"7469:34:75","nodeType":"YulFunctionCall","src":"7469:34:75"},"nativeSrc":"7469:34:75","nodeType":"YulExpressionStatement","src":"7469:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"7235:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7325:9:75","nodeType":"YulTypedName","src":"7325:9:75","type":""},{"name":"value1","nativeSrc":"7336:6:75","nodeType":"YulTypedName","src":"7336:6:75","type":""},{"name":"value0","nativeSrc":"7344:6:75","nodeType":"YulTypedName","src":"7344:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7355:4:75","nodeType":"YulTypedName","src":"7355:4:75","type":""}],"src":"7235:274:75"},{"body":{"nativeSrc":"7592:167:75","nodeType":"YulBlock","src":"7592:167:75","statements":[{"body":{"nativeSrc":"7638:16:75","nodeType":"YulBlock","src":"7638:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7647:1:75","nodeType":"YulLiteral","src":"7647:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7650:1:75","nodeType":"YulLiteral","src":"7650:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7640:6:75","nodeType":"YulIdentifier","src":"7640:6:75"},"nativeSrc":"7640:12:75","nodeType":"YulFunctionCall","src":"7640:12:75"},"nativeSrc":"7640:12:75","nodeType":"YulExpressionStatement","src":"7640:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7613:7:75","nodeType":"YulIdentifier","src":"7613:7:75"},{"name":"headStart","nativeSrc":"7622:9:75","nodeType":"YulIdentifier","src":"7622:9:75"}],"functionName":{"name":"sub","nativeSrc":"7609:3:75","nodeType":"YulIdentifier","src":"7609:3:75"},"nativeSrc":"7609:23:75","nodeType":"YulFunctionCall","src":"7609:23:75"},{"kind":"number","nativeSrc":"7634:2:75","nodeType":"YulLiteral","src":"7634:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7605:3:75","nodeType":"YulIdentifier","src":"7605:3:75"},"nativeSrc":"7605:32:75","nodeType":"YulFunctionCall","src":"7605:32:75"},"nativeSrc":"7602:52:75","nodeType":"YulIf","src":"7602:52:75"},{"nativeSrc":"7663:29:75","nodeType":"YulVariableDeclaration","src":"7663:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7682:9:75","nodeType":"YulIdentifier","src":"7682:9:75"}],"functionName":{"name":"mload","nativeSrc":"7676:5:75","nodeType":"YulIdentifier","src":"7676:5:75"},"nativeSrc":"7676:16:75","nodeType":"YulFunctionCall","src":"7676:16:75"},"variables":[{"name":"value","nativeSrc":"7667:5:75","nodeType":"YulTypedName","src":"7667:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7723:5:75","nodeType":"YulIdentifier","src":"7723:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7701:21:75","nodeType":"YulIdentifier","src":"7701:21:75"},"nativeSrc":"7701:28:75","nodeType":"YulFunctionCall","src":"7701:28:75"},"nativeSrc":"7701:28:75","nodeType":"YulExpressionStatement","src":"7701:28:75"},{"nativeSrc":"7738:15:75","nodeType":"YulAssignment","src":"7738:15:75","value":{"name":"value","nativeSrc":"7748:5:75","nodeType":"YulIdentifier","src":"7748:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7738:6:75","nodeType":"YulIdentifier","src":"7738:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"7514:245:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7558:9:75","nodeType":"YulTypedName","src":"7558:9:75","type":""},{"name":"dataEnd","nativeSrc":"7569:7:75","nodeType":"YulTypedName","src":"7569:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7581:6:75","nodeType":"YulTypedName","src":"7581:6:75","type":""}],"src":"7514:245:75"},{"body":{"nativeSrc":"7956:271:75","nodeType":"YulBlock","src":"7956:271:75","statements":[{"nativeSrc":"7966:27:75","nodeType":"YulAssignment","src":"7966:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7978:9:75","nodeType":"YulIdentifier","src":"7978:9:75"},{"kind":"number","nativeSrc":"7989:3:75","nodeType":"YulLiteral","src":"7989:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7974:3:75","nodeType":"YulIdentifier","src":"7974:3:75"},"nativeSrc":"7974:19:75","nodeType":"YulFunctionCall","src":"7974:19:75"},"variableNames":[{"name":"tail","nativeSrc":"7966:4:75","nodeType":"YulIdentifier","src":"7966:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8009:9:75","nodeType":"YulIdentifier","src":"8009:9:75"},{"arguments":[{"name":"value0","nativeSrc":"8024:6:75","nodeType":"YulIdentifier","src":"8024:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8040:3:75","nodeType":"YulLiteral","src":"8040:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"8045:1:75","nodeType":"YulLiteral","src":"8045:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8036:3:75","nodeType":"YulIdentifier","src":"8036:3:75"},"nativeSrc":"8036:11:75","nodeType":"YulFunctionCall","src":"8036:11:75"},{"kind":"number","nativeSrc":"8049:1:75","nodeType":"YulLiteral","src":"8049:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8032:3:75","nodeType":"YulIdentifier","src":"8032:3:75"},"nativeSrc":"8032:19:75","nodeType":"YulFunctionCall","src":"8032:19:75"}],"functionName":{"name":"and","nativeSrc":"8020:3:75","nodeType":"YulIdentifier","src":"8020:3:75"},"nativeSrc":"8020:32:75","nodeType":"YulFunctionCall","src":"8020:32:75"}],"functionName":{"name":"mstore","nativeSrc":"8002:6:75","nodeType":"YulIdentifier","src":"8002:6:75"},"nativeSrc":"8002:51:75","nodeType":"YulFunctionCall","src":"8002:51:75"},"nativeSrc":"8002:51:75","nodeType":"YulExpressionStatement","src":"8002:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8073:9:75","nodeType":"YulIdentifier","src":"8073:9:75"},{"kind":"number","nativeSrc":"8084:2:75","nodeType":"YulLiteral","src":"8084:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8069:3:75","nodeType":"YulIdentifier","src":"8069:3:75"},"nativeSrc":"8069:18:75","nodeType":"YulFunctionCall","src":"8069:18:75"},{"name":"value1","nativeSrc":"8089:6:75","nodeType":"YulIdentifier","src":"8089:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8062:6:75","nodeType":"YulIdentifier","src":"8062:6:75"},"nativeSrc":"8062:34:75","nodeType":"YulFunctionCall","src":"8062:34:75"},"nativeSrc":"8062:34:75","nodeType":"YulExpressionStatement","src":"8062:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8116:9:75","nodeType":"YulIdentifier","src":"8116:9:75"},{"kind":"number","nativeSrc":"8127:2:75","nodeType":"YulLiteral","src":"8127:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8112:3:75","nodeType":"YulIdentifier","src":"8112:3:75"},"nativeSrc":"8112:18:75","nodeType":"YulFunctionCall","src":"8112:18:75"},{"arguments":[{"name":"value2","nativeSrc":"8136:6:75","nodeType":"YulIdentifier","src":"8136:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8152:3:75","nodeType":"YulLiteral","src":"8152:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"8157:1:75","nodeType":"YulLiteral","src":"8157:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8148:3:75","nodeType":"YulIdentifier","src":"8148:3:75"},"nativeSrc":"8148:11:75","nodeType":"YulFunctionCall","src":"8148:11:75"},{"kind":"number","nativeSrc":"8161:1:75","nodeType":"YulLiteral","src":"8161:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8144:3:75","nodeType":"YulIdentifier","src":"8144:3:75"},"nativeSrc":"8144:19:75","nodeType":"YulFunctionCall","src":"8144:19:75"}],"functionName":{"name":"and","nativeSrc":"8132:3:75","nodeType":"YulIdentifier","src":"8132:3:75"},"nativeSrc":"8132:32:75","nodeType":"YulFunctionCall","src":"8132:32:75"}],"functionName":{"name":"mstore","nativeSrc":"8105:6:75","nodeType":"YulIdentifier","src":"8105:6:75"},"nativeSrc":"8105:60:75","nodeType":"YulFunctionCall","src":"8105:60:75"},"nativeSrc":"8105:60:75","nodeType":"YulExpressionStatement","src":"8105:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8185:9:75","nodeType":"YulIdentifier","src":"8185:9:75"},{"kind":"number","nativeSrc":"8196:2:75","nodeType":"YulLiteral","src":"8196:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8181:3:75","nodeType":"YulIdentifier","src":"8181:3:75"},"nativeSrc":"8181:18:75","nodeType":"YulFunctionCall","src":"8181:18:75"},{"arguments":[{"name":"value3","nativeSrc":"8205:6:75","nodeType":"YulIdentifier","src":"8205:6:75"},{"kind":"number","nativeSrc":"8213:6:75","nodeType":"YulLiteral","src":"8213:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"8201:3:75","nodeType":"YulIdentifier","src":"8201:3:75"},"nativeSrc":"8201:19:75","nodeType":"YulFunctionCall","src":"8201:19:75"}],"functionName":{"name":"mstore","nativeSrc":"8174:6:75","nodeType":"YulIdentifier","src":"8174:6:75"},"nativeSrc":"8174:47:75","nodeType":"YulFunctionCall","src":"8174:47:75"},"nativeSrc":"8174:47:75","nodeType":"YulExpressionStatement","src":"8174:47:75"}]},"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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7901:9:75","nodeType":"YulTypedName","src":"7901:9:75","type":""},{"name":"value3","nativeSrc":"7912:6:75","nodeType":"YulTypedName","src":"7912:6:75","type":""},{"name":"value2","nativeSrc":"7920:6:75","nodeType":"YulTypedName","src":"7920:6:75","type":""},{"name":"value1","nativeSrc":"7928:6:75","nodeType":"YulTypedName","src":"7928:6:75","type":""},{"name":"value0","nativeSrc":"7936:6:75","nodeType":"YulTypedName","src":"7936:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7947:4:75","nodeType":"YulTypedName","src":"7947:4:75","type":""}],"src":"7764:463:75"}]},"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_$19475_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"13489":[{"length":32,"start":475},{"length":32,"start":548},{"length":32,"start":899},{"length":32,"start":1132},{"length":32,"start":1237}],"13495":[{"length":32,"start":278}],"13498":[{"length":32,"start":693},{"length":32,"start":1802},{"length":32,"start":1936},{"length":32,"start":2172}],"13501":[{"length":32,"start":329},{"length":32,"start":640},{"length":32,"start":1762},{"length":32,"start":1983},{"length":32,"start":2113}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80639c4667a2116100635780639c4667a2146101385780639cd4712814610183578063b6b55f2514610196578063ce96cb77146101a9578063f3e0ffbf146101bc575f5ffd5b80630981b1c21461009f5780632e1a7d4d146100c8578063402d267d146100dd5780635a117456146100fe5780635b9a4c3514610111575b5f5ffd5b6100b26100ad36600461099f565b6101cf565b6040516100bf91906109f1565b60405180910390f35b6100db6100d6366004610a26565b61021a565b005b6100f06100eb366004610a51565b610324565b6040519081526020016100bf565b6100db61010c366004610a79565b610379565b6100f07f000000000000000000000000000000000000000000000000000000000000000081565b61016b610146366004610a51565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100bf565b6100db610191366004610a94565b610462565b6100db6101a4366004610a26565b6104cb565b6100f06101b7366004610a51565b610523565b6100f06101ca366004610a51565b6105cf565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361009b57604051632abf118b60e21b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361026357604051632abf118b60e21b815260040160405180910390fd5b801561032157604051631a4ca37b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156102fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031f9190610ace565b505b50565b5f5f61032e61064c565b805151909150600160381b16158061034d57508051516001603c1b1615155b8061036357508051516702000000000000001615155b1561037057505f92915050565b505f1992915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103c257604051632abf118b60e21b815260040160405180910390fd5b5f6103cb61064c565b610100015190508115801561044457506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561041d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104419190610ace565b15155b1561031f576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ab57604051632abf118b60e21b815260040160405180910390fd5b805115610321576040516350701b6160e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361051457604051632abf118b60e21b815260040160405180910390fd5b80156103215761032181610779565b5f5f61052d61064c565b805151909150600160381b16158061054c57508051516001603c1b1615155b1561055957505f92915050565b6101008101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156105a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105c89190610ace565b9392505050565b5f6105d861064c565b61010001516040516370a0823160e01b81526001600160a01b038481166004830152909116906370a0823190602401602060405180830381865afa158015610622573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106469190610ace565b92915050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015610750573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107749190610b79565b905090565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190610ca3565b5060405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b1580156108bd575f5ffd5b505af11580156108cf573d5f5f3e3d5ffd5b5050505050565b634e487b7160e01b5f52604160045260245ffd5b6040516101e0810167ffffffffffffffff8111828210171561090e5761090e6108d6565b60405290565b5f82601f830112610923575f5ffd5b813567ffffffffffffffff81111561093d5761093d6108d6565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561096c5761096c6108d6565b604052818152838201602001851015610983575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b0575f5ffd5b823560ff811681146109c0575f5ffd5b9150602083013567ffffffffffffffff8111156109db575f5ffd5b6109e785828601610914565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610a36575f5ffd5b5035919050565b6001600160a01b0381168114610321575f5ffd5b5f60208284031215610a61575f5ffd5b81356105c881610a3d565b8015158114610321575f5ffd5b5f60208284031215610a89575f5ffd5b81356105c881610a6c565b5f60208284031215610aa4575f5ffd5b813567ffffffffffffffff811115610aba575f5ffd5b610ac684828501610914565b949350505050565b5f60208284031215610ade575f5ffd5b5051919050565b5f60208284031215610af5575f5ffd5b6040516020810167ffffffffffffffff81118282101715610b1857610b186108d6565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114610b44575f5ffd5b919050565b805164ffffffffff81168114610b44575f5ffd5b805161ffff81168114610b44575f5ffd5b8051610b4481610a3d565b5f6101e0828403128015610b8b575f5ffd5b50610b946108ea565b610b9e8484610ae5565b8152610bac60208401610b25565b6020820152610bbd60408401610b25565b6040820152610bce60608401610b25565b6060820152610bdf60808401610b25565b6080820152610bf060a08401610b25565b60a0820152610c0160c08401610b49565b60c0820152610c1260e08401610b5d565b60e0820152610c246101008401610b6e565b610100820152610c376101208401610b6e565b610120820152610c4a6101408401610b6e565b610140820152610c5d6101608401610b6e565b610160820152610c706101808401610b25565b610180820152610c836101a08401610b25565b6101a0820152610c966101c08401610b25565b6101c08201529392505050565b5f60208284031215610cb3575f5ffd5b81516105c881610a6c56fea264697066735822122029a377fd9d1563b2fcd907da31487aaed22d666fdb497ebc1f40f2cfd3d4f0a964736f6c634300081c0033","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 0x29 LOG3 PUSH24 0xFD9D1563B2FCD907DA31487AAED22D666FDB497EBC1F40F2 0xCF 0xD3 0xD4 CREATE 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"660:3183:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3658:183;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3146:156;;;;;;:::i;:::-;;:::i;:::-;;2415:344;;;;;;:::i;:::-;;:::i;:::-;;;2770:25:75;;;2758:2;2743:18;2415:344:47;2624:177:75;1806:228:47;;;;;;:::i;:::-;;:::i;834:81::-;;;;;2797:104;;;;;;:::i;:::-;-1:-1:-1;2889:6:47;;2797:104;;;;-1:-1:-1;;;;;3521:32:75;;;3503:51;;3491:2;3476:18;2797:104:47;3357:203:75;1624:144:47;;;;;;:::i;:::-;;:::i;3340:116::-;;;;;;:::i;:::-;;:::i;2072:305::-;;;;;;:::i;:::-;;:::i;2939:169::-;;;;;;:::i;:::-;;:::i;3658:183::-;3743:12;-1:-1:-1;;;;;1191:6:47;1174:23;1182:4;1174:23;1170:72;;1206:36;;-1:-1:-1;;;1206:36:47;;;;;;;;;;;3146:156;-1:-1:-1;;;;;1191:6:47;1174:23;1182:4;1174:23;1170:72;;1206:36;;-1:-1:-1;;;1206:36:47;;;;;;;;;;;1170:72;3230:11;;3226:71:::1;;3243:54;::::0;-1:-1:-1;;;3243:54:47;;-1:-1:-1;;;;;3266:6:47::1;4110:32:75::0;;3243:54:47::1;::::0;::::1;4092:51:75::0;4159:18;;;4152:34;;;3291:4:47::1;4202:18:75::0;;;4195:60;3243:5:47::1;:14;::::0;::::1;::::0;4065:18:75;;3243:54:47::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3226:71;3146:156:::0;:::o;2415:344::-;2496:7;2511:36;2550:14;:12;:14::i;:::-;2575:21;;9029:9:63;2575:21:47;;-1:-1:-1;;;;9029:24:63;9028:31;;2574:71:47;;-1:-1:-1;2612:21:47;;10311:9:63;-1:-1:-1;;;10311:24:63;10310:31;;2612:33:47;2574:108;;;-1:-1:-1;2649:21:47;;9670:9:63;9682:12;9670:24;9669:31;;2649:33:47;2570:128;;;-1:-1:-1;2697:1:47;;2415:344;-1:-1:-1;;2415:344:47:o;2570:128::-;-1:-1:-1;;;2737:17:47;2415:344;-1:-1:-1;;2415:344:47:o;1806:228::-;-1:-1:-1;;;;;1191:6:47;1174:23;1182:4;1174:23;1170:72;;1206:36;;-1:-1:-1;;;1206:36:47;;;;;;;;;;;1170:72;1884:13:::1;1907:14;:12;:14::i;:::-;:28;;;1884:52;;1947:5;1946:6;:46;;;;-1:-1:-1::0;1956:31:47::1;::::0;-1:-1:-1;;;1956:31:47;;1981:4:::1;1956:31;::::0;::::1;3503:51:75::0;-1:-1:-1;;;;;1956:16:47;::::1;::::0;::::1;::::0;3476:18:75;;1956:31:47::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1946:46;1942:87;;;2001:28;;-1:-1:-1::0;;;2001:28:47::1;;;;;;;;;;;1624:144:::0;-1:-1:-1;;;;;1191:6:47;1174:23;1182:4;1174:23;1170:72;;1206:36;;-1:-1:-1;;;1206:36:47;;;;;;;;;;;1170:72;1714:15;;:20;1710:53:::1;;1743:20;;-1:-1:-1::0;;;1743:20:47::1;;;;;;;;;;;3340:116:::0;-1:-1:-1;;;;;1191:6:47;1174:23;1182:4;1174:23;1170:72;;1206:36;;-1:-1:-1;;;1206:36:47;;;;;;;;;;;1170:72;3423:11;;3419:32:::1;;3436:15;3444:6;3436:7;:15::i;2072:305::-:0;2150:7;2165:36;2204:14;:12;:14::i;:::-;2229:21;;9029:9:63;2229:21:47;;-1:-1:-1;;;;9029:24:63;9028:31;;2228:71:47;;-1:-1:-1;2266:21:47;;10311:9:63;-1:-1:-1;;;10311:24:63;10310:31;;2266:33:47;2224:85;;;-1:-1:-1;2308:1:47;;2072:305;-1:-1:-1;;2072:305:47:o;2224:85::-;2329:21;;;;2322:50;;-1:-1:-1;;;2322:50:47;;-1:-1:-1;;;;;3521:32:75;;;2322:50:47;;;3503:51:75;2322:39:47;;;;;;3476:18:75;;2322:50:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2315:57;2072:305;-1:-1:-1;;;2072:305:47:o;2939:169::-;3017:14;3053;:12;:14::i;:::-;:28;;;3046:57;;-1:-1:-1;;;3046:57:47;;-1:-1:-1;;;;;3521:32:75;;;3046:57:47;;;3503:51:75;3046:46:47;;;;;;3476:18:75;;3046:57:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3039:64;2939:169;-1:-1:-1;;2939:169:47:o;1454:132::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1544:37:47;;-1:-1:-1;;;1544:37:47;;-1:-1:-1;;;;;1573:6:47;3521:32:75;;1544:37:47;;;3503:51:75;1544:5:47;:20;;;;3476:18:75;;1544:37:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1537:44;;1454:132;:::o;3460:160::-;3508:46;;-1:-1:-1;;;3508:46:47;;-1:-1:-1;;;;;3539:5:47;7427:32:75;;3508:46:47;;;7409:51:75;7476:18;;;7469:34;;;3515:6:47;3508:22;;;;7382:18:75;;3508:46:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3560:55:47;;-1:-1:-1;;;3560:55:47;;-1:-1:-1;;;;;3581:6:47;8020:32:75;;3560:55:47;;;8002:51:75;8069:18;;;8062:34;;;3606:4:47;8112:18:75;;;8105:60;-1:-1:-1;8181:18:75;;;8174:47;3560:5:47;:12;;;;7974:19:75;;3560:55:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3460:160;:::o;14:127:75:-;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:75;;;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:75;;;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:75: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:75;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:75;;2051:180;-1:-1:-1;2051:180:75:o;2236:131::-;-1:-1:-1;;;;;2311:31:75;;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:75: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:75;;4266:230;-1:-1:-1;4266:230:75: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:75;4501:498;-1:-1:-1;4501:498:75: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:75;;:::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:75: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.28+commit.7893614a\"},\"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/AaveV3InvestStrategy.sol\":\"AaveV3InvestStrategy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"contracts/AaveV3InvestStrategy.sol\":{\"keccak256\":\"0xd12a76c28bb88f2d090c2025bba1c3cc1ecea68a161ac92ea8ff041a29338d46\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b77e5f1a6c379989c7cc544e0f61243b26a2bc6ded2d37c755dc928509c140ab\",\"dweb:/ipfs/QmZsnrFswQN1HkCf7i6Mobg791jjaS2PzJH9JJZ9fHJnHe\"]},\"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\"]}},\"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":"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":{"@_13871":{"entryPoint":null,"id":13871,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_2832":{"entryPoint":33,"id":2832,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"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:75","nodeType":"YulBlock","src":"0:216:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"113:101:75","nodeType":"YulBlock","src":"113:101:75","statements":[{"nativeSrc":"123:26:75","nodeType":"YulAssignment","src":"123:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:75","nodeType":"YulIdentifier","src":"135:9:75"},{"kind":"number","nativeSrc":"146:2:75","nodeType":"YulLiteral","src":"146:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:75","nodeType":"YulIdentifier","src":"131:3:75"},"nativeSrc":"131:18:75","nodeType":"YulFunctionCall","src":"131:18:75"},"variableNames":[{"name":"tail","nativeSrc":"123:4:75","nodeType":"YulIdentifier","src":"123:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:75","nodeType":"YulIdentifier","src":"165:9:75"},{"arguments":[{"name":"value0","nativeSrc":"180:6:75","nodeType":"YulIdentifier","src":"180:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:75","nodeType":"YulLiteral","src":"196:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:75","nodeType":"YulLiteral","src":"200:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:75","nodeType":"YulIdentifier","src":"192:3:75"},"nativeSrc":"192:10:75","nodeType":"YulFunctionCall","src":"192:10:75"},{"kind":"number","nativeSrc":"204:1:75","nodeType":"YulLiteral","src":"204:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:75","nodeType":"YulIdentifier","src":"188:3:75"},"nativeSrc":"188:18:75","nodeType":"YulFunctionCall","src":"188:18:75"}],"functionName":{"name":"and","nativeSrc":"176:3:75","nodeType":"YulIdentifier","src":"176:3:75"},"nativeSrc":"176:31:75","nodeType":"YulFunctionCall","src":"176:31:75"}],"functionName":{"name":"mstore","nativeSrc":"158:6:75","nodeType":"YulIdentifier","src":"158:6:75"},"nativeSrc":"158:50:75","nodeType":"YulFunctionCall","src":"158:50:75"},"nativeSrc":"158:50:75","nodeType":"YulExpressionStatement","src":"158:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:75","nodeType":"YulTypedName","src":"82:9:75","type":""},{"name":"value0","nativeSrc":"93:6:75","nodeType":"YulTypedName","src":"93:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:75","nodeType":"YulTypedName","src":"104:4:75","type":""}],"src":"14:200:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614a956100f95f395f81816123bc015281816123e501526125210152614a955ff3fe608060405260043610610249575f3560e01c80638cdf48a811610134578063ba087652116100b3578063d905777e11610078578063d905777e146106d4578063d9f9027f146106f3578063dd62ed3e14610714578063e682324d14610733578063ef8b30f714610696578063f617eecc14610752575f5ffd5b8063ba08765214610639578063bd577eb614610658578063c63d75b614610677578063c6e6f59214610696578063ce96cb77146106b5575f5ffd5b8063a7ded2ea116100f9578063a7ded2ea1461058d578063a9059cbb146105ac578063ad3cb1cc146105cb578063b3d7f6b9146105fb578063b460af941461061a575f5ffd5b80638cdf48a8146104e4578063914abf4f1461051c57806394bf804d1461053b57806395d89b411461055a57806396da35da1461056e575f5ffd5b8063402d267d116101cb57806352d1902d1161019057806352d1902d146104405780636e553f651461045457806370a0823114610473578063767f06ae146104925780637ac445a7146104a65780637aeedf2a146104c5575f5ffd5b8063402d267d146103cc57806347e57533146103eb5780634cdad506146102955780634f1ef2861461040a57806351a2d6d11461041f575f5ffd5b806318160ddd1161021157806318160ddd1461030257806323b872dd14610335578063313ce5671461035457806338d52e0f1461037a5780633aaf9048146103ad575f5ffd5b806301e1d1141461024d57806306fdde031461027457806307a2d13a14610295578063095ea7b3146102b45780630a28a477146102e3575b5f5ffd5b348015610258575f5ffd5b50610261610766565b6040519081526020015b60405180910390f35b34801561027f575f5ffd5b50610288610774565b60405161026b9190613edb565b3480156102a0575f5ffd5b506102616102af366004613eed565b610834565b3480156102bf575f5ffd5b506102d36102ce366004613f18565b610845565b604051901515815260200161026b565b3480156102ee575f5ffd5b506102616102fd366004613eed565b61085c565b34801561030d575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610261565b348015610340575f5ffd5b506102d361034f366004613f42565b610868565b34801561035f575f5ffd5b5061036861088d565b60405160ff909116815260200161026b565b348015610385575f5ffd5b505f516020614a405f395f51905f52546040516001600160a01b03909116815260200161026b565b3480156103b8575f5ffd5b506102886103c736600461404a565b6108bc565b3480156103d7575f5ffd5b506102616103e63660046140a3565b610941565b3480156103f6575f5ffd5b50610288610405366004613eed565b61094a565b61041d6104183660046140be565b610aca565b005b34801561042a575f5ffd5b50610433610ae0565b60405161026b919061410a565b34801561044b575f5ffd5b50610261610b38565b34801561045f575f5ffd5b5061026161046e36600461413e565b610b53565b34801561047e575f5ffd5b5061026161048d3660046140a3565b610bb0565b34801561049d575f5ffd5b50610368602081565b3480156104b1575f5ffd5b5061041d6104c0366004614179565b610bd6565b3480156104d0575f5ffd5b5061041d6104df3660046140be565b610d0f565b3480156104ef575f5ffd5b506105036104fe3660046141e7565b610f14565b6040516001600160e01b0319909116815260200161026b565b348015610527575f5ffd5b5061041d6105363660046142ab565b610f73565b348015610546575f5ffd5b5061026161055536600461413e565b6111d2565b348015610565575f5ffd5b5061028861121e565b348015610579575f5ffd5b5061041d6105883660046142dc565b61125c565b348015610598575f5ffd5b5061041d6105a73660046143f3565b611873565b3480156105b7575f5ffd5b506102d36105c6366004613f18565b61198b565b3480156105d6575f5ffd5b50610288604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610606575f5ffd5b50610261610615366004613eed565b611998565b348015610625575f5ffd5b5061026161063436600461450a565b6119a4565b348015610644575f5ffd5b5061026161065336600461450a565b6119f1565b348015610663575f5ffd5b5061041d6106723660046142ab565b611a3e565b348015610682575f5ffd5b506102616106913660046140a3565b611c8a565b3480156106a1575f5ffd5b506102616106b0366004613eed565b611cb6565b3480156106c0575f5ffd5b506102616106cf3660046140a3565b611cc1565b3480156106df575f5ffd5b506102616106ee3660046140a3565b611cd7565b3480156106fe575f5ffd5b50610707611d1c565b60405161026b9190614549565b34801561071f575f5ffd5b5061026161072e36600461457a565b611d62565b34801561073e575f5ffd5b5061026161074d3660046145a6565b611dab565b34801561075d575f5ffd5b50610433611f9b565b5f61076f611fd6565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614a005f395f51905f52916107b2906145cf565b80601f01602080910402602001604051908101604052809291908181526020018280546107de906145cf565b80156108295780601f1061080057610100808354040283529160200191610829565b820191905f5260205f20905b81548152906001019060200180831161080c57829003601f168201915b505050505091505090565b5f61083f825f612051565b92915050565b5f336108528185856120a8565b5060019392505050565b5f61083f8260016120ba565b5f33610875858285612108565b610880858585612158565b60019150505b9392505050565b5f805f516020614a405f395f51905f5290505f81546108b69190600160a01b900460ff1661461b565b91505090565b60606108c98484846121b5565b5f60028560ff16602081106108e0576108e0614634565b01546001600160a01b031690508061090b57604051632711b74d60e11b815260040160405180910390fd5b610938848460028860ff166020811061092657610926614634565b01546001600160a01b031691906122d3565b95945050505050565b5f61083f612325565b60605f5b5f6002826020811061096257610962614634565b01546001600160a01b03161480159061097b5750602081105b15610ab0576002816020811061099357610993614634565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a069190614648565b8303610aa057825483908190610a1b906145cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a47906145cf565b8015610a925780601f10610a6957610100808354040283529160200191610a92565b820191905f5260205f20905b815481529060010190602001808311610a7557829003601f168201915b505050505092505050919050565b610aa98161465f565b905061094e565b5060405163213109dd60e11b815260040160405180910390fd5b610ad26123b1565b610adc828261245a565b5050565b610ae8613e8e565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b005790505050505050905090565b5f610b41612516565b505f516020614a205f395f51905f5290565b5f5f610b5e83610941565b905080841115610b9057828482604051633c8097d960e11b8152600401610b8793929190614677565b60405180910390fd5b5f610b9a85611cb6565b9050610ba83385878461255f565b949350505050565b6001600160a01b03165f9081525f516020614a005f395f51905f52602052604090205490565b5f60028560ff1660208110610bed57610bed614634565b01546001600160a01b0316905080610c1857604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610c4757505f60028260208110610c3957610c39614634565b01546001600160a01b031614155b15610cbd57846001600160a01b031660028260208110610c6957610c69614634565b01546001600160a01b0316148015610c8457508560ff168114155b15610cad5760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610b87565b610cb68161465f565b9050610c1a565b50610cd2818585610ccc612574565b86612593565b8360028660ff1660208110610ce957610ce9614634565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610d3657604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610d6557505f60028260208110610d5757610d57614634565b01546001600160a01b031614155b15610dcb57826001600160a01b031660028260208110610d8757610d87614634565b01546001600160a01b031603610dbb5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610b87565b610dc48161465f565b9050610d38565b601f198101610df057604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110610e0457610e04614634565b0180546001600160a01b0319166001600160a01b0392909216919091179055610e2e816001614698565b5f8260208110610e4057610e40614634565b602091828204019190066101000a81548160ff021916908360ff160217905550806001610e6d9190614698565b60018260208110610e8057610e80614634565b602091828204019190066101000a81548160ff021916908360ff160217905550610ebb610eab612574565b6001600160a01b038516906126e1565b610ece6001600160a01b03841683612773565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff1660208110610f2c57610f2c614634565b0154604080516001600160a01b039092166020830181905260ff86169183019190915291506060016040516020818303038152906040528051906020012091505092915050565b610f7b613e8e565b81515f9060201015610fa05760405163a29b1f1160e01b815260040160405180910390fd5b825181101561114b57602060ff16838281518110610fc057610fc0614634565b602002602001015160ff1610158061101957505f6001600160a01b03166002848381518110610ff157610ff1614634565b602002602001015160ff166020811061100c5761100c614634565b01546001600160a01b0316145b156110375760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061104a5761104a614634565b602002602001015160ff166020811061106557611065614634565b6020020151156110ac5782818151811061108157611081614634565b602002602001015160405163c41fdbb960e01b8152600401610b87919060ff91909116815260200190565b6001828483815181106110c1576110c1614634565b602002602001015160ff16602081106110dc576110dc614634565b9115156020909202015282518390829081106110fa576110fa614634565b6020026020010151600161110e919061461b565b5f826020811061112057611120614634565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050610fa0565b60208110801561117857505f6002826020811061116a5761116a614634565b01546001600160a01b031614155b1561119657604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec836040516111c591906146ab565b60405180910390a1505050565b5f5f6111dd83611c8a565b9050808411156112065782848260405163284ff66760e01b8152600401610b8793929190614677565b5f61121085611998565b9050610ba83385838861255f565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614a005f395f51905f52916107b2906145cf565b602060ff83161061128057604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061129757611297614634565b01546001600160a01b03169050806112c257604051632711b74d60e11b815260040160405180910390fd5b811580156112e057506112dd816001600160a01b03166127c1565b15155b156112fe576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561131857506003546001600160a01b0316155b1561133957604051600162ad1fab60e01b0319815260040160405180910390fd5b5f61134584600161461b565b60ff1690505b60208110801561137857505f6002826020811061136a5761136a614634565b01546001600160a01b031614155b156113e7576002816020811061139057611390614634565b01546001600160a01b031660026113a86001846146f0565b602081106113b8576113b8614634565b0180546001600160a01b0319166001600160a01b03929092169190911790556113e08161465f565b905061134b565b5f60026113f56001846146f0565b6020811061140557611405614634565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061143c5761143c614634565b602081049091015460ff601f9092166101000a900416158015906114605750602083105b156117925780156115245761147686600161461b565b60ff166001846020811061148c5761148c614634565b602081049091015460ff601f9092166101000a900416116114ad575f6114b0565b60015b600184602081106114c3576114c3614634565b602091828204019190069054906101000a900460ff166114e39190614703565b60016114ef81866146f0565b602081106114ff576114ff614634565b602091828204019190066101000a81548160ff021916908360ff1602179055506115f5565b61152f86600161461b565b60ff166001846020811061154557611545614634565b602081049091015460ff601f9092166101000a90041603611568575060016115f5565b61157386600161461b565b60ff166001846020811061158957611589614634565b602081049091015460ff601f9092166101000a90041611156115f55760018084602081106115b9576115b9614634565b602091828204019190068282829054906101000a900460ff166115dc9190614703565b92506101000a81548160ff021916908360ff1602179055505b81156116b25761160686600161461b565b60ff165f846020811061161b5761161b614634565b602081049091015460ff601f9092166101000a9004161161163c575f61163f565b60015b5f846020811061165157611651614634565b602091828204019190069054906101000a900460ff166116719190614703565b5f61167d6001866146f0565b6020811061168d5761168d614634565b602091828204019190066101000a81548160ff021916908360ff160217905550611782565b6116bd86600161461b565b60ff165f84602081106116d2576116d2614634565b602081049091015460ff601f9092166101000a900416036116f65760019150611782565b61170186600161461b565b60ff165f846020811061171657611716614634565b602081049091015460ff601f9092166101000a90041611156117825760015f846020811061174657611746614634565b602091828204019190068282829054906101000a900460ff166117699190614703565b92506101000a81548160ff021916908360ff1602179055505b61178b8361465f565b9250611429565b5f8061179f6001866146f0565b602081106117af576117af614634565b602091828204019190066101000a81548160ff021916908360ff1602179055505f600180856117de91906146f0565b602081106117ee576117ee614634565b602091828204019190066101000a81548160ff021916908360ff16021790555061182a85856001600160a01b031661282a90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118b75750825b90505f826001600160401b031660011480156118d25750303b155b9050811580156118e0575080155b156118fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561192857845460ff60401b1916600160401b1785555b6119378c8c8c8c8c8c8c61294f565b831561197d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f33610852818585612158565b5f61083f826001612051565b5f5f6119af83611cc1565b9050808511156119d857828582604051633fa733bb60e21b8152600401610b8793929190614677565b5f6119e28661085c565b90506109383386868985612987565b5f5f6119fc83611cd7565b905080851115611a2557828582604051632e52afbb60e21b8152600401610b8793929190614677565b5f611a2f86610834565b9050610938338686848a612987565b611a46613e8e565b81515f9060201015611a6b5760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611c0a57602060ff16838260ff1681518110611a9157611a91614634565b602002602001015160ff16101580611aed57505f6001600160a01b03166002848360ff1681518110611ac557611ac5614634565b602002602001015160ff1660208110611ae057611ae0614634565b01546001600160a01b0316145b15611b0b5760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611b2157611b21614634565b602002602001015160ff1660208110611b3c57611b3c614634565b602002015115611b5b57828160ff168151811061108157611081614634565b600182848360ff1681518110611b7357611b73614634565b602002602001015160ff1660208110611b8e57611b8e614634565b911515602090920201528251839060ff8316908110611baf57611baf614634565b60200260200101516001611bc3919061461b565b60018260ff1660208110611bd957611bd9614634565b602091828204019190066101000a81548160ff021916908360ff16021790555080611c039061471c565b9050611a6b565b602060ff8216108015611c3d57505f600260ff831660208110611c2f57611c2f614634565b01546001600160a01b031614155b15611c5b57604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516111c591906146ab565b5f5f611c94612325565b90505f198114611cad57611ca8815f6120ba565b610886565b5f199392505050565b5f61083f825f6120ba565b5f5f611ccc8361299d565b9050610886816129b0565b5f5f611ce283612a45565b90505f611cef825f612051565b90505f611cfb826129b0565b9050818114611d1357611d0e815f6120ba565b610938565b50909392505050565b611d24613e8e565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611d3b575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff8516101580611dc35750602060ff841610155b15611de157604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110611df857611df8614634565b01546001600160a01b031690505f600260ff861660208110611e1c57611e1c614634565b01546001600160a01b03908116915082161580611e4057506001600160a01b038116155b15611e5e57604051632711b74d60e11b815260040160405180910390fd5b5f198403611e7b57611e78826001600160a01b03166127c1565b93505b835f03611e8c575f92505050610886565b611e9e826001600160a01b0316612a4f565b841115611ed357611eb7826001600160a01b0316612a4f565b604051633ce011d560e01b8152600401610b8791815260200190565b611ee5816001600160a01b0316612a7d565b841115611f1a57611efe816001600160a01b0316612a7d565b6040516350a3e37560e11b8152600401610b8791815260200190565b611f2e6001600160a01b038316855f612aab565b50611f436001600160a01b038216855f612be7565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051611f8991815260200190565b60405180910390a35091949350505050565b611fa3613e8e565b604080516104008101918290525f805460ff1682529091602090826001838601808411610b005790505050505050905090565b5f5f5b5f60028260208110611fed57611fed614634565b01546001600160a01b0316148015906120065750602081105b1561204d576120316002826020811061202157612021614634565b01546001600160a01b03166127c1565b61203b9083614698565b91506120468161465f565b9050611fd9565b5090565b5f61088661205d610766565b612068906001614698565b6120735f600a61481d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461209f9190614698565b85919085612d08565b6120b58383836001612d4a565b505050565b5f6108866120c982600a61481d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546120f59190614698565b6120fd610766565b61209f906001614698565b5f6121138484611d62565b90505f198114612152578181101561214457828183604051637dc7a0d960e11b8152600401610b8793929190614677565b61215284848484035f612d4a565b50505050565b6001600160a01b03831661218157604051634b637e8f60e11b81525f6004820152602401610b87565b6001600160a01b0382166121aa5760405163ec442f0560e01b81525f6004820152602401610b87565b6120b5838383612e2d565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612216919061482b565b90505f816001600160a01b031663b700961333306122348989610f14565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015612286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190614846565b509050806122cc5760405162d1953b60e31b8152336004820152602401610b87565b5050505050565b6060610ba883836040516024016122eb92919061487b565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690612f53565b5f5f5f5b5f6002826020811061233d5761233d614634565b01546001600160a01b0316148015906123565750602081105b156123ac5761238a836123856002846020811061237557612375614634565b01546001600160a01b0316612a7d565b612fbc565b935091508161239c575f199250505090565b6123a58161465f565b9050612329565b505090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061243757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661242b5f516020614a205f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156124555760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156124b4575060408051601f3d908101601f191682019092526124b191810190614648565b60015b6124dc57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b87565b5f516020614a205f395f51905f52811461250c57604051632a87526960e21b815260048101829052602401610b87565b6120b58383612fe3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124555760405163703e46dd60e11b815260040160405180910390fd5b61256b84848484613038565b612152826130b5565b5f61076f5f516020614a405f395f51905f52546001600160a01b031690565b61259d84836126e1565b60405163f3e0ffbf60e01b815230600482015261260f9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156125e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126099190614648565b83612aab565b5061261a858261282a565b6126248484612773565b6040516370a0823160e01b81523060048201526126969085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561266c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126909190614648565b83612be7565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612728573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274c919061482b565b6001600160a01b031614610adc5760405163e76673ef60e01b815260040160405180910390fd5b6120b5816040516024016127879190613edb565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690612f53565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083f9190614648565b801561290557604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516128819190614896565b5f60405180830381855af49150503d805f81146128b9576040519150601f19603f3d011682016040523d82523d5f602084013e6128be565b606091505b509150915081612152577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8816040516128f79190613edb565b60405180910390a150505050565b6040515f60248201526120b59060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690612f53565b6129576131cc565b61295f613215565b6129688561321d565b612972878761322e565b61297e84848484613240565b50505050505050565b612990826137c1565b6122cc85858585856138d4565b5f61083f6129aa83610bb0565b5f612051565b5f5f5f5b5f600282602081106129c8576129c8614634565b01546001600160a01b0316148015906129e15750602081105b15612a3e57612a108361238560028460208110612a0057612a00614634565b01546001600160a01b0316612a4f565b93509150811580612a215750838310155b15612a2e57509192915050565b612a378161465f565b90506129b4565b5050919050565b5f61083f82610bb0565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb77906024016127eb565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d906024016127eb565b5f8115612b8d575f5f856001600160a01b031685604051602401612ad191815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612b069190614896565b5f60405180830381855af49150503d805f8114612b3e576040519150601f19603f3d011682016040523d82523d5f602084013e612b43565b606091505b509150915081612b85577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612b7c9190613edb565b60405180910390a15b509050610886565b612bdd83604051602401612ba391815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690612f53565b5060019050610886565b5f8115612cb8575f5f856001600160a01b031685604051602401612c0d91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251612c429190614896565b5f60405180830381855af49150503d805f8114612c7a576040519150601f19603f3d011682016040523d82523d5f602084013e612c7f565b606091505b509150915081612b85577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612b7c9190613edb565b612bdd83604051602401612cce91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690612f53565b5f612d35612d1583613988565b8015612d3057505f8480612d2b57612d2b6148ac565b868809115b151590565b612d408686866139b4565b6109389190614698565b5f516020614a005f395f51905f526001600160a01b038516612d815760405163e602df0560e01b81525f6004820152602401610b87565b6001600160a01b038416612daa57604051634a1406b160e11b81525f6004820152602401610b87565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156122cc57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612e1e91815260200190565b60405180910390a35050505050565b5f516020614a005f395f51905f526001600160a01b038416612e675781816002015f828254612e5c9190614698565b90915550612ec49050565b6001600160a01b0384165f9081526020829052604090205482811015612ea65784818460405163391434e360e21b8152600401610b8793929190614677565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612ee2576002810180548390039055612f00565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f4591815260200190565b60405180910390a350505050565b60605f5f846001600160a01b031684604051612f6f9190614896565b5f60405180830381855af49150503d805f8114612fa7576040519150601f19603f3d011682016040523d82523d5f602084013e612fac565b606091505b5091509150610938858383613a6a565b5f8083830184811015612fd5575f5f9250925050612fdc565b6001925090505b9250929050565b612fec82613ac1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613030576120b58282612f53565b610adc613b24565b5f516020614a405f395f51905f52805461305d906001600160a01b0316863086613b43565b6130678483613baa565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612e1e929190918252602082015260400190565b805f5b81158015906130ed57505f81602081106130d4576130d4614634565b602081049091015460ff601f9092166101000a90041615155b80156130f95750602081105b156131ac575f600260015f846020811061311557613115614634565b602091828204019190069054906101000a900460ff166131359190614703565b60ff166020811061314857613148614634565b01546001600160a01b031690505f6131688461316384612a7d565b613bde565b9050805f0361317857505061319c565b61318c6001600160a01b038316825f612be7565b5061319781856146f0565b935050505b6131a58161465f565b90506130b8565b508015610adc5760405163285a546d60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661245557604051631afcd79f60e31b815260040160405180910390fd5b6124556131cc565b6132256131cc565b61245781613bed565b6132366131cc565b610adc8282613c5d565b8351158061324f575083516020105b8061325c57508251845114155b8061326957508151845114155b8061327657508051845114155b1561329757604051600162ad1fab60e01b0319815260040160405180910390fd5b61329f613e8e565b6132a7613e8e565b5f5b865181101561374a575f6001600160a01b03168782815181106132ce576132ce614634565b60200260200101516001600160a01b0316036132fd57604051632711b74d60e11b815260040160405180910390fd5b613339613308612574565b88838151811061331a5761331a614634565b60200260200101516001600160a01b03166126e190919063ffffffff16565b5f5b818110156133d95787818151811061335557613355614634565b60200260200101516001600160a01b031688838151811061337857613378614634565b60200260200101516001600160a01b0316036133d1578782815181106133a0576133a0614634565b602002602001015160405163b5a9314f60e01b8152600401610b8791906001600160a01b0391909116815260200190565b60010161333b565b5086518582815181106133ee576133ee614634565b602002602001015160ff1610158061343557508285828151811061341457613414614634565b602002602001015160ff166020811061342f5761342f614634565b60200201515b156134775784818151811061344c5761344c614634565b602002602001015160405163306ccd5d60e11b8152600401610b87919060ff91909116815260200190565b865184828151811061348b5761348b614634565b602002602001015160ff161015806134d25750818482815181106134b1576134b1614634565b602002602001015160ff16602081106134cc576134cc614634565b60200201515b15613514578381815181106134e9576134e9614634565b6020026020010151604051632776924160e11b8152600401610b87919060ff91909116815260200190565b60018386838151811061352957613529614634565b602002602001015160ff166020811061354457613544614634565b60200201901515908115158152505060018285838151811061356857613568614634565b602002602001015160ff166020811061358357613583614634565b9115156020909202015286518790829081106135a1576135a1614634565b6020026020010151600282602081106135bc576135bc614634565b015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508481815181106135f2576135f2614634565b60200260200101516001613606919061461b565b5f826020811061361857613618614634565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061364a5761364a614634565b6020026020010151600161365e919061461b565b6001826020811061367157613671614634565b602091828204019190066101000a81548160ff021916908360ff1602179055506136df8682815181106136a6576136a6614634565b60200260200101518883815181106136c0576136c0614634565b60200260200101516001600160a01b031661277390919063ffffffff16565b8681815181106136f1576136f1614634565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161373a919060ff91909116815260200190565b60405180910390a26001016132a9565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec8460405161377a91906146ab565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516137b191906146ab565b60405180910390a1505050505050565b805f5b81158015906137fa5750600181602081106137e1576137e1614634565b602081049091015460ff601f9092166101000a90041615155b80156138065750602081105b156138b4575f6002600180846020811061382257613822614634565b602091828204019190069054906101000a900460ff166138429190614703565b60ff166020811061385557613855614634565b01546001600160a01b031690505f6138708461316384612a4f565b9050805f036138805750506138a4565b6138946001600160a01b038316825f612aab565b5061389f81856146f0565b935050505b6138ad8161465f565b90506137c4565b508015610adc5760405163351dc55d60e21b815260040160405180910390fd5b5f516020614a405f395f51905f526001600160a01b038681169085161461390057613900848784612108565b61390a8483613cad565b8054613920906001600160a01b03168685613ce1565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051613978929190918252602082015260400190565b60405180910390a4505050505050565b5f600282600381111561399d5761399d6148c0565b6139a791906148d4565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036139e8578382816139de576139de6148ac565b0492505050610886565b8084116139ff576139ff6003851502601118613d12565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606082613a7a57611ca882613d23565b8151158015613a9157506001600160a01b0384163b155b15613aba57604051639996b31560e01b81526001600160a01b0385166004820152602401610b87565b5080610886565b806001600160a01b03163b5f03613af657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b87565b5f516020614a205f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156124555760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526121529186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d4c565b6001600160a01b038216613bd35760405163ec442f0560e01b81525f6004820152602401610b87565b610adc5f8383612e2d565b5f828218828410028218610886565b613bf56131cc565b5f516020614a405f395f51905f525f80613c0e84613db8565b9150915081613c1e576012613c20565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613c656131cc565b5f516020614a005f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613c9e8482614945565b50600481016121528382614945565b6001600160a01b038216613cd657604051634b637e8f60e11b81525f6004820152602401610b87565b610adc825f83612e2d565b6040516001600160a01b038381166024830152604482018390526120b591859182169063a9059cbb90606401613b78565b634e487b715f52806020526024601cfd5b805115613d335780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af180613d6b576040513d5f823e3d81fd5b50505f513d91508115613d82578060011415613d8f565b6001600160a01b0384163b155b1561215257604051635274afe760e01b81526001600160a01b0385166004820152602401610b87565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691613dfe91614896565b5f60405180830381855afa9150503d805f8114613e36576040519150601f19603f3d011682016040523d82523d5f602084013e613e3b565b606091505b5091509150818015613e4f57506020815110155b15613e82575f81806020019051810190613e699190614648565b905060ff8111613e80576001969095509350505050565b505b505f9485945092505050565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108866020830184613ead565b5f60208284031215613efd575f5ffd5b5035919050565b6001600160a01b0381168114612457575f5ffd5b5f5f60408385031215613f29575f5ffd5b8235613f3481613f04565b946020939093013593505050565b5f5f5f60608486031215613f54575f5ffd5b8335613f5f81613f04565b92506020840135613f6f81613f04565b929592945050506040919091013590565b803560ff81168114613f90575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613fd157613fd1613f95565b604052919050565b5f82601f830112613fe8575f5ffd5b8135602083015f5f6001600160401b0384111561400757614007613f95565b50601f8301601f191660200161401c81613fa9565b915050828152858383011115614030575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561405c575f5ffd5b61406584613f80565b925061407360208501613f80565b915060408401356001600160401b0381111561408d575f5ffd5b61409986828701613fd9565b9150509250925092565b5f602082840312156140b3575f5ffd5b813561088681613f04565b5f5f604083850312156140cf575f5ffd5b82356140da81613f04565b915060208301356001600160401b038111156140f4575f5ffd5b61410085828601613fd9565b9150509250929050565b610400810181835f5b602081101561413557815160ff16835260209283019290910190600101614113565b50505092915050565b5f5f6040838503121561414f575f5ffd5b82359150602083013561416181613f04565b809150509250929050565b8015158114612457575f5ffd5b5f5f5f5f6080858703121561418c575f5ffd5b61419585613f80565b935060208501356141a581613f04565b925060408501356001600160401b038111156141bf575f5ffd5b6141cb87828801613fd9565b92505060608501356141dc8161416c565b939692955090935050565b5f5f604083850312156141f8575f5ffd5b61420183613f80565b915061420f60208401613f80565b90509250929050565b5f6001600160401b0382111561423057614230613f95565b5060051b60200190565b5f82601f830112614249575f5ffd5b813561425c61425782614218565b613fa9565b8082825260208201915060208360051b86010192508583111561427d575f5ffd5b602085015b838110156142a15761429381613f80565b835260209283019201614282565b5095945050505050565b5f602082840312156142bb575f5ffd5b81356001600160401b038111156142d0575f5ffd5b610ba88482850161423a565b5f5f604083850312156142ed575f5ffd5b6142f683613f80565b915060208301356141618161416c565b8035613f9081613f04565b5f82601f830112614320575f5ffd5b813561432e61425782614218565b8082825260208201915060208360051b86010192508583111561434f575f5ffd5b602085015b838110156142a157803561436781613f04565b835260209283019201614354565b5f82601f830112614384575f5ffd5b813561439261425782614218565b8082825260208201915060208360051b8601019250858311156143b3575f5ffd5b602085015b838110156142a15780356001600160401b038111156143d5575f5ffd5b6143e4886020838a0101613fd9565b845250602092830192016143b8565b5f5f5f5f5f5f5f60e0888a031215614409575f5ffd5b87356001600160401b0381111561441e575f5ffd5b61442a8a828b01613fd9565b97505060208801356001600160401b03811115614445575f5ffd5b6144518a828b01613fd9565b96505061446060408901614306565b945060608801356001600160401b0381111561447a575f5ffd5b6144868a828b01614311565b94505060808801356001600160401b038111156144a1575f5ffd5b6144ad8a828b01614375565b93505060a08801356001600160401b038111156144c8575f5ffd5b6144d48a828b0161423a565b92505060c08801356001600160401b038111156144ef575f5ffd5b6144fb8a828b0161423a565b91505092959891949750929550565b5f5f5f6060848603121561451c575f5ffd5b83359250602084013561452e81613f04565b9150604084013561453e81613f04565b809150509250925092565b610400810181835f5b60208110156141355781516001600160a01b0316835260209283019290910190600101614552565b5f5f6040838503121561458b575f5ffd5b823561459681613f04565b9150602083013561416181613f04565b5f5f5f606084860312156145b8575f5ffd5b6145c184613f80565b9250613f6f60208501613f80565b600181811c908216806145e357607f821691505b60208210810361460157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561083f5761083f614607565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614658575f5ffd5b5051919050565b5f6001820161467057614670614607565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561083f5761083f614607565b602080825282518282018190525f918401906040840190835b818110156146e557835160ff168352602093840193909201916001016146c4565b509095945050505050565b8181038181111561083f5761083f614607565b60ff828116828216039081111561083f5761083f614607565b5f60ff821660ff810361473157614731614607565b60010192915050565b6001815b60018411156147755780850481111561475957614759614607565b600184161561476757908102905b60019390931c92800261473e565b935093915050565b5f8261478b5750600161083f565b8161479757505f61083f565b81600181146147ad57600281146147b7576147d3565b600191505061083f565b60ff8411156147c8576147c8614607565b50506001821b61083f565b5060208310610133831016604e8410600b84101617156147f6575081810a61083f565b6148025f19848461473a565b805f190482111561481557614815614607565b029392505050565b5f61088660ff84168361477d565b5f6020828403121561483b575f5ffd5b815161088681613f04565b5f5f60408385031215614857575f5ffd5b82516148628161416c565b602084015190925063ffffffff81168114614161575f5ffd5b60ff83168152604060208201525f610ba86040830184613ead565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff8316806148f257634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f8211156120b557805f5260205f20601f840160051c810160208510156149265750805b601f840160051c820191505b818110156122cc575f8155600101614932565b81516001600160401b0381111561495e5761495e613f95565b6149728161496c84546145cf565b84614901565b6020601f8211600181146149a4575f831561498d5750848201515b5f19600385901b1c1916600184901b1784556122cc565b5f84815260208120601f198516915b828110156149d357878501518255602094850194600190920191016149b3565b50848210156149f057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220f120263ca4c30a21649806e490da2ea832e63ae4218befe4ac689e259a743ad564736f6c634300081c0033","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 0x4A95 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x23BC ADD MSTORE DUP2 DUP2 PUSH2 0x23E5 ADD MSTORE PUSH2 0x2521 ADD MSTORE PUSH2 0x4A95 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x249 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CDF48A8 GT PUSH2 0x134 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x696 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x752 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x639 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x658 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x696 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA7DED2EA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x61A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x4C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x41F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x211 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2E3 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x766 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 0x27F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x774 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x2CE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F18 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x2FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x85C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x261 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x340 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x34F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F42 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x368 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x404A JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x3E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x941 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH2 0x41D PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x40BE JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x410A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0xB38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x46E CALLDATASIZE PUSH1 0x4 PUSH2 0x413E JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x48D CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0xBB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x368 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x4C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0xBD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x40BE JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x41E7 JUMP JUMPDEST PUSH2 0xF14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x42AB JUMP JUMPDEST PUSH2 0xF73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x413E JUMP JUMPDEST PUSH2 0x11D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x565 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x121E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x125C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x5A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x43F3 JUMP JUMPDEST PUSH2 0x1873 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x5C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F18 JUMP JUMPDEST PUSH2 0x198B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 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 0x606 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x19A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x644 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x653 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x663 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x672 CALLDATASIZE PUSH1 0x4 PUSH2 0x42AB JUMP JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x682 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x691 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1CB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1CC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x707 PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x457A JUMP JUMPDEST PUSH2 0x1D62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x45A6 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1F9B JUMP JUMPDEST PUSH0 PUSH2 0x76F PUSH2 0x1FD6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7B2 SWAP1 PUSH2 0x45CF 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 0x7DE SWAP1 PUSH2 0x45CF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x800 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x829 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 0x80C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH0 PUSH2 0x2051 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x852 DUP2 DUP6 DUP6 PUSH2 0x20A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH1 0x1 PUSH2 0x20BA JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP6 DUP3 DUP6 PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x880 DUP6 DUP6 DUP6 PUSH2 0x2158 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x8B6 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8C9 DUP5 DUP5 DUP5 PUSH2 0x21B5 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x8E0 JUMPI PUSH2 0x8E0 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x90B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x938 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x926 JUMPI PUSH2 0x926 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F PUSH2 0x2325 JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x962 JUMPI PUSH2 0x962 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x97B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x993 JUMPI PUSH2 0x993 PUSH2 0x4634 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 0x9E2 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 0xA06 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 SUB PUSH2 0xAA0 JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xA1B SWAP1 PUSH2 0x45CF 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 0xA47 SWAP1 PUSH2 0x45CF JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA69 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA92 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 0xA75 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 0xAA9 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x94E 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 0xAD2 PUSH2 0x23B1 JUMP JUMPDEST PUSH2 0xADC DUP3 DUP3 PUSH2 0x245A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x3E8E 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 0xB00 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB41 PUSH2 0x2516 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB5E DUP4 PUSH2 0x941 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xB90 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB9A DUP6 PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 POP PUSH2 0xBA8 CALLER DUP6 DUP8 DUP5 PUSH2 0x255F 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 0x4A00 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 0xBED JUMPI PUSH2 0xBED PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xC18 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 0xC47 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xC39 JUMPI PUSH2 0xC39 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCBD JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xC69 JUMPI PUSH2 0xC69 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xC84 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xCAD 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 0xB87 JUMP JUMPDEST PUSH2 0xCB6 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0xC1A JUMP JUMPDEST POP PUSH2 0xCD2 DUP2 DUP6 DUP6 PUSH2 0xCCC PUSH2 0x2574 JUMP JUMPDEST DUP7 PUSH2 0x2593 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xCE9 JUMPI PUSH2 0xCE9 PUSH2 0x4634 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 0xD36 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 0xD65 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xD57 JUMPI PUSH2 0xD57 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xDCB JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xD87 JUMPI PUSH2 0xD87 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xDBB 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 0xB87 JUMP JUMPDEST PUSH2 0xDC4 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0xDF0 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 0xE04 JUMPI PUSH2 0xE04 PUSH2 0x4634 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 0xE2E DUP2 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE40 JUMPI PUSH2 0xE40 PUSH2 0x4634 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 0xE6D SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE80 JUMPI PUSH2 0xE80 PUSH2 0x4634 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 0xEBB PUSH2 0xEAB PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH2 0xECE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2773 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 0xF2C JUMPI PUSH2 0xF2C PUSH2 0x4634 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 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF7B PUSH2 0x3E8E JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0xFA0 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 0x114B JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFC0 JUMPI PUSH2 0xFC0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1019 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xFF1 JUMPI PUSH2 0xFF1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x100C JUMPI PUSH2 0x100C PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1037 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 0x104A JUMPI PUSH2 0x104A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1065 JUMPI PUSH2 0x1065 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x10AC JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI PUSH2 0x1081 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x10C1 JUMPI PUSH2 0x10C1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x10DC JUMPI PUSH2 0x10DC PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x10FA JUMPI PUSH2 0x10FA PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x110E SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x1120 PUSH2 0x4634 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 0xFA0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1178 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x116A JUMPI PUSH2 0x116A PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1196 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 0x11C5 SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x11DD DUP4 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1206 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x1210 DUP6 PUSH2 0x1998 JUMP JUMPDEST SWAP1 POP PUSH2 0xBA8 CALLER DUP6 DUP4 DUP9 PUSH2 0x255F JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7B2 SWAP1 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x1280 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 0x1297 JUMPI PUSH2 0x1297 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x12C2 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 0x12E0 JUMPI POP PUSH2 0x12DD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x12FE 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 0x1318 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1339 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 0x1345 DUP5 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1378 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x136A JUMPI PUSH2 0x136A PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x13E7 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x1390 JUMPI PUSH2 0x1390 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x13A8 PUSH1 0x1 DUP5 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x13B8 JUMPI PUSH2 0x13B8 PUSH2 0x4634 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 0x13E0 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x134B JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x13F5 PUSH1 0x1 DUP5 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1405 JUMPI PUSH2 0x1405 PUSH2 0x4634 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 0x143C JUMPI PUSH2 0x143C PUSH2 0x4634 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 0x1460 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1792 JUMPI DUP1 ISZERO PUSH2 0x1524 JUMPI PUSH2 0x1476 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x148C JUMPI PUSH2 0x148C PUSH2 0x4634 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 0x14AD JUMPI PUSH0 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x14C3 JUMPI PUSH2 0x14C3 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x14E3 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x14EF DUP2 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x14FF JUMPI PUSH2 0x14FF PUSH2 0x4634 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 0x15F5 JUMP JUMPDEST PUSH2 0x152F DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1545 JUMPI PUSH2 0x1545 PUSH2 0x4634 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 0x1568 JUMPI POP PUSH1 0x1 PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x1573 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1589 JUMPI PUSH2 0x1589 PUSH2 0x4634 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 0x15F5 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15B9 JUMPI PUSH2 0x15B9 PUSH2 0x4634 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 0x15DC SWAP2 SWAP1 PUSH2 0x4703 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 0x16B2 JUMPI PUSH2 0x1606 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x161B JUMPI PUSH2 0x161B PUSH2 0x4634 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 0x163C JUMPI PUSH0 PUSH2 0x163F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1651 JUMPI PUSH2 0x1651 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1671 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH0 PUSH2 0x167D PUSH1 0x1 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x168D JUMPI PUSH2 0x168D PUSH2 0x4634 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 0x1782 JUMP JUMPDEST PUSH2 0x16BD DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16D2 JUMPI PUSH2 0x16D2 PUSH2 0x4634 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 0x16F6 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x1701 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1716 JUMPI PUSH2 0x1716 PUSH2 0x4634 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 0x1782 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1746 JUMPI PUSH2 0x1746 PUSH2 0x4634 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 0x1769 SWAP2 SWAP1 PUSH2 0x4703 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 0x178B DUP4 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP PUSH2 0x1429 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x179F PUSH1 0x1 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17AF JUMPI PUSH2 0x17AF PUSH2 0x4634 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 0x17DE SWAP2 SWAP1 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17EE JUMPI PUSH2 0x17EE PUSH2 0x4634 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 0x182A DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x282A 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x18B7 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x18D2 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18FE 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 0x1928 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1937 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x294F JUMP JUMPDEST DUP4 ISZERO PUSH2 0x197D 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 0x852 DUP2 DUP6 DUP6 PUSH2 0x2158 JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH1 0x1 PUSH2 0x2051 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x19AF DUP4 PUSH2 0x1CC1 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x19D8 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x19E2 DUP7 PUSH2 0x85C JUMP JUMPDEST SWAP1 POP PUSH2 0x938 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2987 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x19FC DUP4 PUSH2 0x1CD7 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A25 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x1A2F DUP7 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP PUSH2 0x938 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x1A46 PUSH2 0x3E8E JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1A6B 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 0x1C0A JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1A91 JUMPI PUSH2 0x1A91 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1AED JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1AC5 JUMPI PUSH2 0x1AC5 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1AE0 JUMPI PUSH2 0x1AE0 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1B0B 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 0x1B21 JUMPI PUSH2 0x1B21 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B3C JUMPI PUSH2 0x1B3C PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1B5B JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI PUSH2 0x1081 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B73 JUMPI PUSH2 0x1B73 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B8E JUMPI PUSH2 0x1B8E PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1BAF JUMPI PUSH2 0x1BAF PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1BC3 SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1BD9 JUMPI PUSH2 0x1BD9 PUSH2 0x4634 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 0x1C03 SWAP1 PUSH2 0x471C JUMP JUMPDEST SWAP1 POP PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1C3D JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1C2F JUMPI PUSH2 0x1C2F PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C5B 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 0x11C5 SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C94 PUSH2 0x2325 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1CAD JUMPI PUSH2 0x1CA8 DUP2 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CCC DUP4 PUSH2 0x299D JUMP JUMPDEST SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x29B0 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CE2 DUP4 PUSH2 0x2A45 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1CEF DUP3 PUSH0 PUSH2 0x2051 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1CFB DUP3 PUSH2 0x29B0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D13 JUMPI PUSH2 0x1D0E DUP2 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH2 0x938 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1D24 PUSH2 0x3E8E 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 0x1D3B 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 0x1DC3 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x1DE1 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 0x1DF8 JUMPI PUSH2 0x1DF8 PUSH2 0x4634 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 0x1E1C JUMPI PUSH2 0x1E1C PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x1E40 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x1E5E 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 0x1E7B JUMPI PUSH2 0x1E78 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x1E8C JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x886 JUMP JUMPDEST PUSH2 0x1E9E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1ED3 JUMPI PUSH2 0x1EB7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EE5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F1A JUMPI PUSH2 0x1EFE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F2E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x1F43 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2BE7 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 0x1F89 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 0x1FA3 PUSH2 0x3E8E 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 0xB00 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 0x1FED JUMPI PUSH2 0x1FED PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2006 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x204D JUMPI PUSH2 0x2031 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2021 JUMPI PUSH2 0x2021 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST PUSH2 0x203B SWAP1 DUP4 PUSH2 0x4698 JUMP JUMPDEST SWAP2 POP PUSH2 0x2046 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x1FD9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH2 0x205D PUSH2 0x766 JUMP JUMPDEST PUSH2 0x2068 SWAP1 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH2 0x2073 PUSH0 PUSH1 0xA PUSH2 0x481D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x209F SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2D08 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2D4A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH2 0x20C9 DUP3 PUSH1 0xA PUSH2 0x481D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x20F5 SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH2 0x20FD PUSH2 0x766 JUMP JUMPDEST PUSH2 0x209F SWAP1 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 PUSH2 0x2113 DUP5 DUP5 PUSH2 0x1D62 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x2152 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2144 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH2 0x2152 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2D4A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2181 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 DUP4 PUSH2 0x2E2D 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 0x21F2 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 0x2216 SWAP2 SWAP1 PUSH2 0x482B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x2234 DUP10 DUP10 PUSH2 0xF14 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 0x2286 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 0x22AA SWAP2 SWAP1 PUSH2 0x4846 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x22CC JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBA8 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x22EB SWAP3 SWAP2 SWAP1 PUSH2 0x487B 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 0x2F53 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x233D JUMPI PUSH2 0x233D PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2356 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x23AC JUMPI PUSH2 0x238A DUP4 PUSH2 0x2385 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2375 JUMPI PUSH2 0x2375 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST PUSH2 0x2FBC JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x239C JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x23A5 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x2329 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2437 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242B PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 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 0x2455 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 0x24B4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x24B1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4648 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x24DC 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 0xB87 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x250C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 PUSH2 0x2FE3 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x256B DUP5 DUP5 DUP5 DUP5 PUSH2 0x3038 JUMP JUMPDEST PUSH2 0x2152 DUP3 PUSH2 0x30B5 JUMP JUMPDEST PUSH0 PUSH2 0x76F PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x259D DUP5 DUP4 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x260F 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 0x25E5 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 0x2609 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x261A DUP6 DUP3 PUSH2 0x282A JUMP JUMPDEST PUSH2 0x2624 DUP5 DUP5 PUSH2 0x2773 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2696 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 0x266C 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 0x2690 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 PUSH2 0x2BE7 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 0x2728 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 0x274C SWAP2 SWAP1 PUSH2 0x482B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x20B5 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2787 SWAP2 SWAP1 PUSH2 0x3EDB 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 0x2F53 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 0x2806 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 0x83F SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2905 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 0x2881 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x28B9 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 0x28BE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2152 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x28F7 SWAP2 SWAP1 PUSH2 0x3EDB 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 0x20B5 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 0x2F53 JUMP JUMPDEST PUSH2 0x2957 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x295F PUSH2 0x3215 JUMP JUMPDEST PUSH2 0x2968 DUP6 PUSH2 0x321D JUMP JUMPDEST PUSH2 0x2972 DUP8 DUP8 PUSH2 0x322E JUMP JUMPDEST PUSH2 0x297E DUP5 DUP5 DUP5 DUP5 PUSH2 0x3240 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2990 DUP3 PUSH2 0x37C1 JUMP JUMPDEST PUSH2 0x22CC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x38D4 JUMP JUMPDEST PUSH0 PUSH2 0x83F PUSH2 0x29AA DUP4 PUSH2 0xBB0 JUMP JUMPDEST PUSH0 PUSH2 0x2051 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x29C8 JUMPI PUSH2 0x29C8 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x29E1 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2A3E JUMPI PUSH2 0x2A10 DUP4 PUSH2 0x2385 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2A00 JUMPI PUSH2 0x2A00 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2A21 JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2A2E JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2A37 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x29B4 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH2 0xBB0 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 0x27EB 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 0x27EB JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2B8D JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD1 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 0x2B06 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2B3E 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 0x2B43 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2B85 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2B7C SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x886 JUMP JUMPDEST PUSH2 0x2BDD DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2BA3 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 0x2F53 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x886 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2CB8 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0D 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 0x2C42 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2C7A 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 0x2C7F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2B85 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2B7C SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH2 0x2BDD DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2CCE 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 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x2D35 PUSH2 0x2D15 DUP4 PUSH2 0x3988 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D30 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2D2B JUMPI PUSH2 0x2D2B PUSH2 0x48AC JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D40 DUP7 DUP7 DUP7 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2D81 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2DAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 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 0x22CC 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 0x2E1E 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 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2E67 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2E5C SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2EC4 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 0x2EA6 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 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 0x2EE2 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x2F00 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 0x2F45 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2F6F SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2FA7 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 0x2FAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x938 DUP6 DUP4 DUP4 PUSH2 0x3A6A JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x2FD5 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x2FDC JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2FEC DUP3 PUSH2 0x3AC1 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 0x3030 JUMPI PUSH2 0x20B5 DUP3 DUP3 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0xADC PUSH2 0x3B24 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x305D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x3B43 JUMP JUMPDEST PUSH2 0x3067 DUP5 DUP4 PUSH2 0x3BAA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E1E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x30ED JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x30D4 JUMPI PUSH2 0x30D4 PUSH2 0x4634 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 0x30F9 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x31AC JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3115 JUMPI PUSH2 0x3115 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3135 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3148 JUMPI PUSH2 0x3148 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3168 DUP5 PUSH2 0x3163 DUP5 PUSH2 0x2A7D JUMP JUMPDEST PUSH2 0x3BDE JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3178 JUMPI POP POP PUSH2 0x319C JUMP JUMPDEST PUSH2 0x318C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2BE7 JUMP JUMPDEST POP PUSH2 0x3197 DUP2 DUP6 PUSH2 0x46F0 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x31A5 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x30B8 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2455 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x3225 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x2457 DUP2 PUSH2 0x3BED JUMP JUMPDEST PUSH2 0x3236 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0xADC DUP3 DUP3 PUSH2 0x3C5D JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x324F JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x325C JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3269 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3276 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x3297 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 0x329F PUSH2 0x3E8E JUMP JUMPDEST PUSH2 0x32A7 PUSH2 0x3E8E JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x374A JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x32CE JUMPI PUSH2 0x32CE PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x32FD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3339 PUSH2 0x3308 PUSH2 0x2574 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x331A JUMPI PUSH2 0x331A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x33D9 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3355 JUMPI PUSH2 0x3355 PUSH2 0x4634 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 0x3378 JUMPI PUSH2 0x3378 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x33D1 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33A0 JUMPI PUSH2 0x33A0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x333B JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33EE JUMPI PUSH2 0x33EE PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3435 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3414 JUMPI PUSH2 0x3414 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x342F JUMPI PUSH2 0x342F PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3477 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x344C JUMPI PUSH2 0x344C PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x348B JUMPI PUSH2 0x348B PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x34D2 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34B1 JUMPI PUSH2 0x34B1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x34CC JUMPI PUSH2 0x34CC PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3514 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x34E9 JUMPI PUSH2 0x34E9 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x3529 JUMPI PUSH2 0x3529 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3544 JUMPI PUSH2 0x3544 PUSH2 0x4634 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 0x3568 JUMPI PUSH2 0x3568 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3583 JUMPI PUSH2 0x3583 PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x35A1 JUMPI PUSH2 0x35A1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x35BC JUMPI PUSH2 0x35BC PUSH2 0x4634 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 0x35F2 JUMPI PUSH2 0x35F2 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3618 JUMPI PUSH2 0x3618 PUSH2 0x4634 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 0x364A JUMPI PUSH2 0x364A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x365E SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3671 JUMPI PUSH2 0x3671 PUSH2 0x4634 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 0x36DF DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36A6 JUMPI PUSH2 0x36A6 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x36C0 JUMPI PUSH2 0x36C0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2773 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36F1 JUMPI PUSH2 0x36F1 PUSH2 0x4634 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 0x373A 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 0x32A9 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x377A SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x37B1 SWAP2 SWAP1 PUSH2 0x46AB 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 0x37FA JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x37E1 JUMPI PUSH2 0x37E1 PUSH2 0x4634 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 0x3806 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x38B4 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3822 JUMPI PUSH2 0x3822 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3842 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3855 JUMPI PUSH2 0x3855 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3870 DUP5 PUSH2 0x3163 DUP5 PUSH2 0x2A4F JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3880 JUMPI POP POP PUSH2 0x38A4 JUMP JUMPDEST PUSH2 0x3894 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x389F DUP2 DUP6 PUSH2 0x46F0 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x38AD DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x37C4 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3900 JUMPI PUSH2 0x3900 DUP5 DUP8 DUP5 PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x390A DUP5 DUP4 PUSH2 0x3CAD JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3920 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x3CE1 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3978 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 POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x399D JUMPI PUSH2 0x399D PUSH2 0x48C0 JUMP JUMPDEST PUSH2 0x39A7 SWAP2 SWAP1 PUSH2 0x48D4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x39E8 JUMPI DUP4 DUP3 DUP2 PUSH2 0x39DE JUMPI PUSH2 0x39DE PUSH2 0x48AC JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x886 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x39FF JUMPI PUSH2 0x39FF PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x3D12 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3A7A JUMPI PUSH2 0x1CA8 DUP3 PUSH2 0x3D23 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3A91 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3ABA 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 0xB87 JUMP JUMPDEST POP DUP1 PUSH2 0x886 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3AF6 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 0xB87 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 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 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x2152 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3D4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3BD3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0xADC PUSH0 DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x886 JUMP JUMPDEST PUSH2 0x3BF5 PUSH2 0x31CC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x3C0E DUP5 PUSH2 0x3DB8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3C1E JUMPI PUSH1 0x12 PUSH2 0x3C20 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 0x3C65 PUSH2 0x31CC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3C9E DUP5 DUP3 PUSH2 0x4945 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x2152 DUP4 DUP3 PUSH2 0x4945 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CD6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0xADC DUP3 PUSH0 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x20B5 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x3B78 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3D33 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x3D6B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x3D82 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x3D8F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2152 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 0xB87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x3DFE SWAP2 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E36 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 0x3E3B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3E4F JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x3E82 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3E69 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x3E80 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 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 0x886 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3EAD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EFD 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 0x2457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F34 DUP2 PUSH2 0x3F04 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 0x3F54 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F5F DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3F6F DUP2 PUSH2 0x3F04 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 0x3F90 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 0x3FD1 JUMPI PUSH2 0x3FD1 PUSH2 0x3F95 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3FE8 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 0x4007 JUMPI PUSH2 0x4007 PUSH2 0x3F95 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x401C DUP2 PUSH2 0x3FA9 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4030 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 0x405C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4065 DUP5 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP PUSH2 0x4073 PUSH1 0x20 DUP6 ADD PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x408D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4099 DUP7 DUP3 DUP8 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x886 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x40DA DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4100 DUP6 DUP3 DUP7 ADD PUSH2 0x3FD9 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 0x4135 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4113 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x414F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x3F04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x418C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4195 DUP6 PUSH2 0x3F80 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41A5 DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41CB DUP8 DUP3 DUP9 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x41DC DUP2 PUSH2 0x416C JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4201 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x420F PUSH1 0x20 DUP5 ADD PUSH2 0x3F80 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4230 JUMPI PUSH2 0x4230 PUSH2 0x3F95 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4249 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x425C PUSH2 0x4257 DUP3 PUSH2 0x4218 JUMP JUMPDEST PUSH2 0x3FA9 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 0x427D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI PUSH2 0x4293 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4282 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBA8 DUP5 DUP3 DUP6 ADD PUSH2 0x423A JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x42F6 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x416C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F90 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4320 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x432E PUSH2 0x4257 DUP3 PUSH2 0x4218 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 0x434F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI DUP1 CALLDATALOAD PUSH2 0x4367 DUP2 PUSH2 0x3F04 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4354 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4384 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4392 PUSH2 0x4257 DUP3 PUSH2 0x4218 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 0x43B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x43E4 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x3FD9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x43B8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4409 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x442A DUP11 DUP3 DUP12 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4445 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4451 DUP11 DUP3 DUP12 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4460 PUSH1 0x40 DUP10 ADD PUSH2 0x4306 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x447A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4486 DUP11 DUP3 DUP12 ADD PUSH2 0x4311 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44AD DUP11 DUP3 DUP12 ADD PUSH2 0x4375 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44D4 DUP11 DUP3 DUP12 ADD PUSH2 0x423A JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44FB DUP11 DUP3 DUP12 ADD PUSH2 0x423A 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 0x451C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x452E DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x453E DUP2 PUSH2 0x3F04 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 0x4135 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 0x4552 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x458B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4596 DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45C1 DUP5 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP PUSH2 0x3F6F PUSH1 0x20 DUP6 ADD PUSH2 0x3F80 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x45E3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4601 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 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 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 0x4658 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4670 JUMPI PUSH2 0x4670 PUSH2 0x4607 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 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 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 0x46E5 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x46C4 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4731 JUMPI PUSH2 0x4731 PUSH2 0x4607 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4775 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4759 JUMPI PUSH2 0x4759 PUSH2 0x4607 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4767 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x473E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x478B JUMPI POP PUSH1 0x1 PUSH2 0x83F JUMP JUMPDEST DUP2 PUSH2 0x4797 JUMPI POP PUSH0 PUSH2 0x83F JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x47AD JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x47B7 JUMPI PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x83F JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x47C8 JUMPI PUSH2 0x47C8 PUSH2 0x4607 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x83F JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x47F6 JUMPI POP DUP2 DUP2 EXP PUSH2 0x83F JUMP JUMPDEST PUSH2 0x4802 PUSH0 NOT DUP5 DUP5 PUSH2 0x473A JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4815 JUMPI PUSH2 0x4815 PUSH2 0x4607 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x477D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x483B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x886 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4862 DUP2 PUSH2 0x416C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4161 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xBA8 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3EAD 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 0x48F2 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 0x20B5 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4926 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22CC JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4932 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x495E JUMPI PUSH2 0x495E PUSH2 0x3F95 JUMP JUMPDEST PUSH2 0x4972 DUP2 PUSH2 0x496C DUP5 SLOAD PUSH2 0x45CF JUMP JUMPDEST DUP5 PUSH2 0x4901 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x49A4 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x498D 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 0x22CC JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49D3 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x49B3 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x49F0 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0773E532DFEDE91F04B12A PUSH20 0xD3D2ACD361424F41F76B4FB79F090161E36B4E00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL KECCAK256 0x26 EXTCODECOPY LOG4 0xC3 EXP 0x21 PUSH5 0x9806E490DA 0x2E 0xA8 ORIGIN 0xE6 GASPRICE 0xE4 0x21 DUP12 0xEF 0xE4 0xAC PUSH9 0x9E259A743AD564736F PUSH13 0x634300081C0033000000000000 ","sourceMap":"1355:5497:48:-:0;;;1171:4:8;1128:48;;1484:47:48;;;;;;;;;-1:-1:-1;1504:22:48;:20;:22::i;:::-;1355:5497;;7711:422:7;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:7;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:7;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:7;-1:-1:-1;;;;;8035:33:7;;;;;8087:29;;158:50:75;;;8087:29:7;;146:2:75;131:18;8087:29:7;;;;;;;7981:146;7760:373;7711:422::o;14:200:75:-;1355:5497:48;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_STRATEGIES_15799":{"entryPoint":null,"id":15799,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@__AccessManagedMSV_init_13953":{"entryPoint":10575,"id":13953,"parameterSlots":7,"returnSlots":0},"@__ERC20_init_3114":{"entryPoint":12846,"id":3114,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3142":{"entryPoint":15453,"id":3142,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3757":{"entryPoint":12829,"id":3757,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3795":{"entryPoint":15341,"id":3795,"parameterSlots":1,"returnSlots":0},"@__MSVBase_init_unchained_16143":{"entryPoint":12864,"id":16143,"parameterSlots":4,"returnSlots":0},"@__UUPSUpgradeable_init_2918":{"entryPoint":12821,"id":2918,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":8360,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":11594,"id":3614,"parameterSlots":4,"returnSlots":0},"@_asset_13970":{"entryPoint":9588,"id":13970,"parameterSlots":0,"returnSlots":1},"@_authorizeUpgrade_13960":{"entryPoint":9303,"id":13960,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":15533,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":15692,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkForwardToStrategy_14236":{"entryPoint":8629,"id":14236,"parameterSlots":3,"returnSlots":0},"@_checkInitializing_2786":{"entryPoint":12748,"id":2786,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":15140,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":9494,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":9137,"id":2978,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":8273,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":8378,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_depositToStrategies_16450":{"entryPoint":12469,"id":16450,"parameterSlots":1,"returnSlots":0},"@_deposit_14152":{"entryPoint":9567,"id":14152,"parameterSlots":4,"returnSlots":0},"@_deposit_4364":{"entryPoint":12344,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"@_isInitializing_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":1},"@_maxDepositable_16260":{"entryPoint":8997,"id":16260,"parameterSlots":0,"returnSlots":1},"@_maxWithdrawable_16202":{"entryPoint":10672,"id":16202,"parameterSlots":1,"returnSlots":1},"@_mint_3495":{"entryPoint":15274,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":15651,"id":9351,"parameterSlots":1,"returnSlots":0},"@_setImplementation_7796":{"entryPoint":15041,"id":7796,"parameterSlots":1,"returnSlots":0},"@_spendAllowance_3662":{"entryPoint":8456,"id":3662,"parameterSlots":3,"returnSlots":0},"@_totalAssets_16298":{"entryPoint":8150,"id":16298,"parameterSlots":0,"returnSlots":1},"@_transfer_3370":{"entryPoint":8536,"id":3370,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3862":{"entryPoint":15800,"id":3862,"parameterSlots":1,"returnSlots":2},"@_update_3462":{"entryPoint":11821,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":9306,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdrawFromStrategies_16374":{"entryPoint":14273,"id":16374,"parameterSlots":1,"returnSlots":0},"@_withdraw_14125":{"entryPoint":10631,"id":14125,"parameterSlots":5,"returnSlots":0},"@_withdraw_4418":{"entryPoint":14548,"id":4418,"parameterSlots":5,"returnSlots":0},"@addStrategy_16764":{"entryPoint":3343,"id":16764,"parameterSlots":2,"returnSlots":0},"@allowance_3267":{"entryPoint":7522,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2117,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":null,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":2992,"id":3219,"parameterSlots":1,"returnSlots":1},"@changeDepositQueue_17158":{"entryPoint":3955,"id":17158,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17270":{"entryPoint":6718,"id":17270,"parameterSlots":1,"returnSlots":0},"@checkAsset_15637":{"entryPoint":9953,"id":15637,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3957":{"entryPoint":2100,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":7350,"id":3941,"parameterSlots":1,"returnSlots":1},"@dcConnect_15416":{"entryPoint":10099,"id":15416,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15585":{"entryPoint":11239,"id":15585,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15467":{"entryPoint":10282,"id":15467,"parameterSlots":2,"returnSlots":0},"@dcForward_15614":{"entryPoint":8915,"id":15614,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15526":{"entryPoint":10923,"id":15526,"parameterSlots":3,"returnSlots":1},"@decimals_3884":{"entryPoint":2189,"id":3884,"parameterSlots":0,"returnSlots":1},"@depositQueue_17420":{"entryPoint":8091,"id":17420,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":2899,"id":4126,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_16564":{"entryPoint":2236,"id":16564,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":12115,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_16507":{"entryPoint":2378,"id":16507,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getForwardToStrategySelector_14183":{"entryPoint":3860,"id":14183,"parameterSlots":2,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@initialize_13908":{"entryPoint":6259,"id":13908,"parameterSlots":7,"returnSlots":0},"@maxDeposit_14049":{"entryPoint":2369,"id":14049,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15756":{"entryPoint":10877,"id":15756,"parameterSlots":1,"returnSlots":1},"@maxMint_14084":{"entryPoint":7306,"id":14084,"parameterSlots":1,"returnSlots":1},"@maxRedeem_14036":{"entryPoint":7383,"id":14036,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":10821,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_13991":{"entryPoint":7361,"id":13991,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15774":{"entryPoint":10831,"id":15774,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":10653,"id":4005,"parameterSlots":1,"returnSlots":1},"@min_9938":{"entryPoint":15326,"id":9938,"parameterSlots":2,"returnSlots":1},"@mint_4170":{"entryPoint":4562,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":14772,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":11528,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":1908,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":15634,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":6552,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2140,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":2872,"id":2936,"parameterSlots":0,"returnSlots":1},"@rebalance_17397":{"entryPoint":7595,"id":17397,"parameterSlots":3,"returnSlots":1},"@redeem_4264":{"entryPoint":6641,"id":4264,"parameterSlots":3,"returnSlots":1},"@removeStrategy_17046":{"entryPoint":4700,"id":17046,"parameterSlots":2,"returnSlots":0},"@replaceStrategy_16653":{"entryPoint":3030,"id":16653,"parameterSlots":4,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":15171,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":15585,"id":8729,"parameterSlots":3,"returnSlots":0},"@strategies_17409":{"entryPoint":7452,"id":17409,"parameterSlots":0,"returnSlots":1},"@strategyChange_15702":{"entryPoint":9619,"id":15702,"parameterSlots":5,"returnSlots":0},"@symbol_3174":{"entryPoint":4638,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_14095":{"entryPoint":1894,"id":14095,"parameterSlots":0,"returnSlots":1},"@totalAssets_15738":{"entryPoint":10177,"id":15738,"parameterSlots":1,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":2152,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":6539,"id":3243,"parameterSlots":2,"returnSlots":1},"@tryAdd_9747":{"entryPoint":12220,"id":9747,"parameterSlots":2,"returnSlots":2},"@unsignedRoundsUp_11308":{"entryPoint":14728,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":2762,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":12259,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":14954,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdrawQueue_17431":{"entryPoint":2784,"id":17431,"parameterSlots":0,"returnSlots":1},"@withdraw_4217":{"entryPoint":6564,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_array_bytes_dyn":{"entryPoint":17269,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IInvestStrategy_dyn":{"entryPoint":17169,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8_dyn":{"entryPoint":16954,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":16345,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":17158,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":16547,"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":17786,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":16194,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":16574,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":16152,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17067,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":18502,"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":17992,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IAccessManager_$7253_fromMemory":{"entryPoint":18475,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17395,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_uint256":{"entryPoint":16109,"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":16702,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":17674,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_bool":{"entryPoint":17116,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool":{"entryPoint":16761,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8t_uint8":{"entryPoint":16871,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr":{"entryPoint":16458,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_uint8t_uint256":{"entryPoint":17830,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint8":{"entryPoint":16256,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":16045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":18582,"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_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":18039,"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_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed":{"entryPoint":17737,"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":16650,"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":18091,"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_$22374__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__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":16091,"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":18555,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":16297,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint8_dyn":{"entryPoint":16920,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":18072,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":17947,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":18234,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":18461,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":18301,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":18160,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":18179,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":18689,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":18757,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":17871,"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":18015,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint8":{"entryPoint":18204,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":18644,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":17927,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":18604,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":18624,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":17972,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":16277,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":16132,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":16748,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:25797:75","nodeType":"YulBlock","src":"0:25797:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"246:239:75","nodeType":"YulBlock","src":"246:239:75","statements":[{"nativeSrc":"256:26:75","nodeType":"YulVariableDeclaration","src":"256:26:75","value":{"arguments":[{"name":"value","nativeSrc":"276:5:75","nodeType":"YulIdentifier","src":"276:5:75"}],"functionName":{"name":"mload","nativeSrc":"270:5:75","nodeType":"YulIdentifier","src":"270:5:75"},"nativeSrc":"270:12:75","nodeType":"YulFunctionCall","src":"270:12:75"},"variables":[{"name":"length","nativeSrc":"260:6:75","nodeType":"YulTypedName","src":"260:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"298:3:75","nodeType":"YulIdentifier","src":"298:3:75"},{"name":"length","nativeSrc":"303:6:75","nodeType":"YulIdentifier","src":"303:6:75"}],"functionName":{"name":"mstore","nativeSrc":"291:6:75","nodeType":"YulIdentifier","src":"291:6:75"},"nativeSrc":"291:19:75","nodeType":"YulFunctionCall","src":"291:19:75"},"nativeSrc":"291:19:75","nodeType":"YulExpressionStatement","src":"291:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"329:3:75","nodeType":"YulIdentifier","src":"329:3:75"},{"kind":"number","nativeSrc":"334:4:75","nodeType":"YulLiteral","src":"334:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"325:3:75","nodeType":"YulIdentifier","src":"325:3:75"},"nativeSrc":"325:14:75","nodeType":"YulFunctionCall","src":"325:14:75"},{"arguments":[{"name":"value","nativeSrc":"345:5:75","nodeType":"YulIdentifier","src":"345:5:75"},{"kind":"number","nativeSrc":"352:4:75","nodeType":"YulLiteral","src":"352:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"341:3:75","nodeType":"YulIdentifier","src":"341:3:75"},"nativeSrc":"341:16:75","nodeType":"YulFunctionCall","src":"341:16:75"},{"name":"length","nativeSrc":"359:6:75","nodeType":"YulIdentifier","src":"359:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"319:5:75","nodeType":"YulIdentifier","src":"319:5:75"},"nativeSrc":"319:47:75","nodeType":"YulFunctionCall","src":"319:47:75"},"nativeSrc":"319:47:75","nodeType":"YulExpressionStatement","src":"319:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"390:3:75","nodeType":"YulIdentifier","src":"390:3:75"},{"name":"length","nativeSrc":"395:6:75","nodeType":"YulIdentifier","src":"395:6:75"}],"functionName":{"name":"add","nativeSrc":"386:3:75","nodeType":"YulIdentifier","src":"386:3:75"},"nativeSrc":"386:16:75","nodeType":"YulFunctionCall","src":"386:16:75"},{"kind":"number","nativeSrc":"404:4:75","nodeType":"YulLiteral","src":"404:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"382:3:75","nodeType":"YulIdentifier","src":"382:3:75"},"nativeSrc":"382:27:75","nodeType":"YulFunctionCall","src":"382:27:75"},{"kind":"number","nativeSrc":"411:1:75","nodeType":"YulLiteral","src":"411:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"375:6:75","nodeType":"YulIdentifier","src":"375:6:75"},"nativeSrc":"375:38:75","nodeType":"YulFunctionCall","src":"375:38:75"},"nativeSrc":"375:38:75","nodeType":"YulExpressionStatement","src":"375:38:75"},{"nativeSrc":"422:57:75","nodeType":"YulAssignment","src":"422:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"437:3:75","nodeType":"YulIdentifier","src":"437:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"450:6:75","nodeType":"YulIdentifier","src":"450:6:75"},{"kind":"number","nativeSrc":"458:2:75","nodeType":"YulLiteral","src":"458:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"446:3:75","nodeType":"YulIdentifier","src":"446:3:75"},"nativeSrc":"446:15:75","nodeType":"YulFunctionCall","src":"446:15:75"},{"arguments":[{"kind":"number","nativeSrc":"467:2:75","nodeType":"YulLiteral","src":"467:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"463:3:75","nodeType":"YulIdentifier","src":"463:3:75"},"nativeSrc":"463:7:75","nodeType":"YulFunctionCall","src":"463:7:75"}],"functionName":{"name":"and","nativeSrc":"442:3:75","nodeType":"YulIdentifier","src":"442:3:75"},"nativeSrc":"442:29:75","nodeType":"YulFunctionCall","src":"442:29:75"}],"functionName":{"name":"add","nativeSrc":"433:3:75","nodeType":"YulIdentifier","src":"433:3:75"},"nativeSrc":"433:39:75","nodeType":"YulFunctionCall","src":"433:39:75"},{"kind":"number","nativeSrc":"474:4:75","nodeType":"YulLiteral","src":"474:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"429:3:75","nodeType":"YulIdentifier","src":"429:3:75"},"nativeSrc":"429:50:75","nodeType":"YulFunctionCall","src":"429:50:75"},"variableNames":[{"name":"end","nativeSrc":"422:3:75","nodeType":"YulIdentifier","src":"422:3:75"}]}]},"name":"abi_encode_string","nativeSrc":"196:289:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"223:5:75","nodeType":"YulTypedName","src":"223:5:75","type":""},{"name":"pos","nativeSrc":"230:3:75","nodeType":"YulTypedName","src":"230:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"238:3:75","nodeType":"YulTypedName","src":"238:3:75","type":""}],"src":"196:289:75"},{"body":{"nativeSrc":"611:99:75","nodeType":"YulBlock","src":"611:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"628:9:75","nodeType":"YulIdentifier","src":"628:9:75"},{"kind":"number","nativeSrc":"639:2:75","nodeType":"YulLiteral","src":"639:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"621:6:75","nodeType":"YulIdentifier","src":"621:6:75"},"nativeSrc":"621:21:75","nodeType":"YulFunctionCall","src":"621:21:75"},"nativeSrc":"621:21:75","nodeType":"YulExpressionStatement","src":"621:21:75"},{"nativeSrc":"651:53:75","nodeType":"YulAssignment","src":"651:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"677:6:75","nodeType":"YulIdentifier","src":"677:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"689:9:75","nodeType":"YulIdentifier","src":"689:9:75"},{"kind":"number","nativeSrc":"700:2:75","nodeType":"YulLiteral","src":"700:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"685:3:75","nodeType":"YulIdentifier","src":"685:3:75"},"nativeSrc":"685:18:75","nodeType":"YulFunctionCall","src":"685:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"659:17:75","nodeType":"YulIdentifier","src":"659:17:75"},"nativeSrc":"659:45:75","nodeType":"YulFunctionCall","src":"659:45:75"},"variableNames":[{"name":"tail","nativeSrc":"651:4:75","nodeType":"YulIdentifier","src":"651:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"490:220:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"580:9:75","nodeType":"YulTypedName","src":"580:9:75","type":""},{"name":"value0","nativeSrc":"591:6:75","nodeType":"YulTypedName","src":"591:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"602:4:75","nodeType":"YulTypedName","src":"602:4:75","type":""}],"src":"490:220:75"},{"body":{"nativeSrc":"785:156:75","nodeType":"YulBlock","src":"785:156:75","statements":[{"body":{"nativeSrc":"831:16:75","nodeType":"YulBlock","src":"831:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"840:1:75","nodeType":"YulLiteral","src":"840:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"843:1:75","nodeType":"YulLiteral","src":"843:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"833:6:75","nodeType":"YulIdentifier","src":"833:6:75"},"nativeSrc":"833:12:75","nodeType":"YulFunctionCall","src":"833:12:75"},"nativeSrc":"833:12:75","nodeType":"YulExpressionStatement","src":"833:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"806:7:75","nodeType":"YulIdentifier","src":"806:7:75"},{"name":"headStart","nativeSrc":"815:9:75","nodeType":"YulIdentifier","src":"815:9:75"}],"functionName":{"name":"sub","nativeSrc":"802:3:75","nodeType":"YulIdentifier","src":"802:3:75"},"nativeSrc":"802:23:75","nodeType":"YulFunctionCall","src":"802:23:75"},{"kind":"number","nativeSrc":"827:2:75","nodeType":"YulLiteral","src":"827:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"798:3:75","nodeType":"YulIdentifier","src":"798:3:75"},"nativeSrc":"798:32:75","nodeType":"YulFunctionCall","src":"798:32:75"},"nativeSrc":"795:52:75","nodeType":"YulIf","src":"795:52:75"},{"nativeSrc":"856:14:75","nodeType":"YulVariableDeclaration","src":"856:14:75","value":{"kind":"number","nativeSrc":"869:1:75","nodeType":"YulLiteral","src":"869:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"860:5:75","nodeType":"YulTypedName","src":"860:5:75","type":""}]},{"nativeSrc":"879:32:75","nodeType":"YulAssignment","src":"879:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"901:9:75","nodeType":"YulIdentifier","src":"901:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"888:12:75","nodeType":"YulIdentifier","src":"888:12:75"},"nativeSrc":"888:23:75","nodeType":"YulFunctionCall","src":"888:23:75"},"variableNames":[{"name":"value","nativeSrc":"879:5:75","nodeType":"YulIdentifier","src":"879:5:75"}]},{"nativeSrc":"920:15:75","nodeType":"YulAssignment","src":"920:15:75","value":{"name":"value","nativeSrc":"930:5:75","nodeType":"YulIdentifier","src":"930:5:75"},"variableNames":[{"name":"value0","nativeSrc":"920:6:75","nodeType":"YulIdentifier","src":"920:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"715:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"751:9:75","nodeType":"YulTypedName","src":"751:9:75","type":""},{"name":"dataEnd","nativeSrc":"762:7:75","nodeType":"YulTypedName","src":"762:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"774:6:75","nodeType":"YulTypedName","src":"774:6:75","type":""}],"src":"715:226:75"},{"body":{"nativeSrc":"991:86:75","nodeType":"YulBlock","src":"991:86:75","statements":[{"body":{"nativeSrc":"1055:16:75","nodeType":"YulBlock","src":"1055:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1064:1:75","nodeType":"YulLiteral","src":"1064:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1067:1:75","nodeType":"YulLiteral","src":"1067:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1057:6:75","nodeType":"YulIdentifier","src":"1057:6:75"},"nativeSrc":"1057:12:75","nodeType":"YulFunctionCall","src":"1057:12:75"},"nativeSrc":"1057:12:75","nodeType":"YulExpressionStatement","src":"1057:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1014:5:75","nodeType":"YulIdentifier","src":"1014:5:75"},{"arguments":[{"name":"value","nativeSrc":"1025:5:75","nodeType":"YulIdentifier","src":"1025:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1040:3:75","nodeType":"YulLiteral","src":"1040:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1045:1:75","nodeType":"YulLiteral","src":"1045:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1036:3:75","nodeType":"YulIdentifier","src":"1036:3:75"},"nativeSrc":"1036:11:75","nodeType":"YulFunctionCall","src":"1036:11:75"},{"kind":"number","nativeSrc":"1049:1:75","nodeType":"YulLiteral","src":"1049:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1032:3:75","nodeType":"YulIdentifier","src":"1032:3:75"},"nativeSrc":"1032:19:75","nodeType":"YulFunctionCall","src":"1032:19:75"}],"functionName":{"name":"and","nativeSrc":"1021:3:75","nodeType":"YulIdentifier","src":"1021:3:75"},"nativeSrc":"1021:31:75","nodeType":"YulFunctionCall","src":"1021:31:75"}],"functionName":{"name":"eq","nativeSrc":"1011:2:75","nodeType":"YulIdentifier","src":"1011:2:75"},"nativeSrc":"1011:42:75","nodeType":"YulFunctionCall","src":"1011:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1004:6:75","nodeType":"YulIdentifier","src":"1004:6:75"},"nativeSrc":"1004:50:75","nodeType":"YulFunctionCall","src":"1004:50:75"},"nativeSrc":"1001:70:75","nodeType":"YulIf","src":"1001:70:75"}]},"name":"validator_revert_address","nativeSrc":"946:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"980:5:75","nodeType":"YulTypedName","src":"980:5:75","type":""}],"src":"946:131:75"},{"body":{"nativeSrc":"1169:280:75","nodeType":"YulBlock","src":"1169:280:75","statements":[{"body":{"nativeSrc":"1215:16:75","nodeType":"YulBlock","src":"1215:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1224:1:75","nodeType":"YulLiteral","src":"1224:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1227:1:75","nodeType":"YulLiteral","src":"1227:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1217:6:75","nodeType":"YulIdentifier","src":"1217:6:75"},"nativeSrc":"1217:12:75","nodeType":"YulFunctionCall","src":"1217:12:75"},"nativeSrc":"1217:12:75","nodeType":"YulExpressionStatement","src":"1217:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1190:7:75","nodeType":"YulIdentifier","src":"1190:7:75"},{"name":"headStart","nativeSrc":"1199:9:75","nodeType":"YulIdentifier","src":"1199:9:75"}],"functionName":{"name":"sub","nativeSrc":"1186:3:75","nodeType":"YulIdentifier","src":"1186:3:75"},"nativeSrc":"1186:23:75","nodeType":"YulFunctionCall","src":"1186:23:75"},{"kind":"number","nativeSrc":"1211:2:75","nodeType":"YulLiteral","src":"1211:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1182:3:75","nodeType":"YulIdentifier","src":"1182:3:75"},"nativeSrc":"1182:32:75","nodeType":"YulFunctionCall","src":"1182:32:75"},"nativeSrc":"1179:52:75","nodeType":"YulIf","src":"1179:52:75"},{"nativeSrc":"1240:36:75","nodeType":"YulVariableDeclaration","src":"1240:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1266:9:75","nodeType":"YulIdentifier","src":"1266:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1253:12:75","nodeType":"YulIdentifier","src":"1253:12:75"},"nativeSrc":"1253:23:75","nodeType":"YulFunctionCall","src":"1253:23:75"},"variables":[{"name":"value","nativeSrc":"1244:5:75","nodeType":"YulTypedName","src":"1244:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1310:5:75","nodeType":"YulIdentifier","src":"1310:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1285:24:75","nodeType":"YulIdentifier","src":"1285:24:75"},"nativeSrc":"1285:31:75","nodeType":"YulFunctionCall","src":"1285:31:75"},"nativeSrc":"1285:31:75","nodeType":"YulExpressionStatement","src":"1285:31:75"},{"nativeSrc":"1325:15:75","nodeType":"YulAssignment","src":"1325:15:75","value":{"name":"value","nativeSrc":"1335:5:75","nodeType":"YulIdentifier","src":"1335:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1325:6:75","nodeType":"YulIdentifier","src":"1325:6:75"}]},{"nativeSrc":"1349:16:75","nodeType":"YulVariableDeclaration","src":"1349:16:75","value":{"kind":"number","nativeSrc":"1364:1:75","nodeType":"YulLiteral","src":"1364:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1353:7:75","nodeType":"YulTypedName","src":"1353:7:75","type":""}]},{"nativeSrc":"1374:43:75","nodeType":"YulAssignment","src":"1374:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1402:9:75","nodeType":"YulIdentifier","src":"1402:9:75"},{"kind":"number","nativeSrc":"1413:2:75","nodeType":"YulLiteral","src":"1413:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1398:3:75","nodeType":"YulIdentifier","src":"1398:3:75"},"nativeSrc":"1398:18:75","nodeType":"YulFunctionCall","src":"1398:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1385:12:75","nodeType":"YulIdentifier","src":"1385:12:75"},"nativeSrc":"1385:32:75","nodeType":"YulFunctionCall","src":"1385:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"1374:7:75","nodeType":"YulIdentifier","src":"1374:7:75"}]},{"nativeSrc":"1426:17:75","nodeType":"YulAssignment","src":"1426:17:75","value":{"name":"value_1","nativeSrc":"1436:7:75","nodeType":"YulIdentifier","src":"1436:7:75"},"variableNames":[{"name":"value1","nativeSrc":"1426:6:75","nodeType":"YulIdentifier","src":"1426:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1082:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1127:9:75","nodeType":"YulTypedName","src":"1127:9:75","type":""},{"name":"dataEnd","nativeSrc":"1138:7:75","nodeType":"YulTypedName","src":"1138:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1150:6:75","nodeType":"YulTypedName","src":"1150:6:75","type":""},{"name":"value1","nativeSrc":"1158:6:75","nodeType":"YulTypedName","src":"1158:6:75","type":""}],"src":"1082:367:75"},{"body":{"nativeSrc":"1549:92:75","nodeType":"YulBlock","src":"1549:92:75","statements":[{"nativeSrc":"1559:26:75","nodeType":"YulAssignment","src":"1559:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1571:9:75","nodeType":"YulIdentifier","src":"1571:9:75"},{"kind":"number","nativeSrc":"1582:2:75","nodeType":"YulLiteral","src":"1582:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1567:3:75","nodeType":"YulIdentifier","src":"1567:3:75"},"nativeSrc":"1567:18:75","nodeType":"YulFunctionCall","src":"1567:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1559:4:75","nodeType":"YulIdentifier","src":"1559:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1601:9:75","nodeType":"YulIdentifier","src":"1601:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1626:6:75","nodeType":"YulIdentifier","src":"1626:6:75"}],"functionName":{"name":"iszero","nativeSrc":"1619:6:75","nodeType":"YulIdentifier","src":"1619:6:75"},"nativeSrc":"1619:14:75","nodeType":"YulFunctionCall","src":"1619:14:75"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:75","nodeType":"YulIdentifier","src":"1612:6:75"},"nativeSrc":"1612:22:75","nodeType":"YulFunctionCall","src":"1612:22:75"}],"functionName":{"name":"mstore","nativeSrc":"1594:6:75","nodeType":"YulIdentifier","src":"1594:6:75"},"nativeSrc":"1594:41:75","nodeType":"YulFunctionCall","src":"1594:41:75"},"nativeSrc":"1594:41:75","nodeType":"YulExpressionStatement","src":"1594:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1454:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1518:9:75","nodeType":"YulTypedName","src":"1518:9:75","type":""},{"name":"value0","nativeSrc":"1529:6:75","nodeType":"YulTypedName","src":"1529:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1540:4:75","nodeType":"YulTypedName","src":"1540:4:75","type":""}],"src":"1454:187:75"},{"body":{"nativeSrc":"1750:404:75","nodeType":"YulBlock","src":"1750:404:75","statements":[{"body":{"nativeSrc":"1796:16:75","nodeType":"YulBlock","src":"1796:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1805:1:75","nodeType":"YulLiteral","src":"1805:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1808:1:75","nodeType":"YulLiteral","src":"1808:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1798:6:75","nodeType":"YulIdentifier","src":"1798:6:75"},"nativeSrc":"1798:12:75","nodeType":"YulFunctionCall","src":"1798:12:75"},"nativeSrc":"1798:12:75","nodeType":"YulExpressionStatement","src":"1798:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1771:7:75","nodeType":"YulIdentifier","src":"1771:7:75"},{"name":"headStart","nativeSrc":"1780:9:75","nodeType":"YulIdentifier","src":"1780:9:75"}],"functionName":{"name":"sub","nativeSrc":"1767:3:75","nodeType":"YulIdentifier","src":"1767:3:75"},"nativeSrc":"1767:23:75","nodeType":"YulFunctionCall","src":"1767:23:75"},{"kind":"number","nativeSrc":"1792:2:75","nodeType":"YulLiteral","src":"1792:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"1763:3:75","nodeType":"YulIdentifier","src":"1763:3:75"},"nativeSrc":"1763:32:75","nodeType":"YulFunctionCall","src":"1763:32:75"},"nativeSrc":"1760:52:75","nodeType":"YulIf","src":"1760:52:75"},{"nativeSrc":"1821:36:75","nodeType":"YulVariableDeclaration","src":"1821:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1847:9:75","nodeType":"YulIdentifier","src":"1847:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1834:12:75","nodeType":"YulIdentifier","src":"1834:12:75"},"nativeSrc":"1834:23:75","nodeType":"YulFunctionCall","src":"1834:23:75"},"variables":[{"name":"value","nativeSrc":"1825:5:75","nodeType":"YulTypedName","src":"1825:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1891:5:75","nodeType":"YulIdentifier","src":"1891:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1866:24:75","nodeType":"YulIdentifier","src":"1866:24:75"},"nativeSrc":"1866:31:75","nodeType":"YulFunctionCall","src":"1866:31:75"},"nativeSrc":"1866:31:75","nodeType":"YulExpressionStatement","src":"1866:31:75"},{"nativeSrc":"1906:15:75","nodeType":"YulAssignment","src":"1906:15:75","value":{"name":"value","nativeSrc":"1916:5:75","nodeType":"YulIdentifier","src":"1916:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1906:6:75","nodeType":"YulIdentifier","src":"1906:6:75"}]},{"nativeSrc":"1930:47:75","nodeType":"YulVariableDeclaration","src":"1930:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1962:9:75","nodeType":"YulIdentifier","src":"1962:9:75"},{"kind":"number","nativeSrc":"1973:2:75","nodeType":"YulLiteral","src":"1973:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1958:3:75","nodeType":"YulIdentifier","src":"1958:3:75"},"nativeSrc":"1958:18:75","nodeType":"YulFunctionCall","src":"1958:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1945:12:75","nodeType":"YulIdentifier","src":"1945:12:75"},"nativeSrc":"1945:32:75","nodeType":"YulFunctionCall","src":"1945:32:75"},"variables":[{"name":"value_1","nativeSrc":"1934:7:75","nodeType":"YulTypedName","src":"1934:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2011:7:75","nodeType":"YulIdentifier","src":"2011:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1986:24:75","nodeType":"YulIdentifier","src":"1986:24:75"},"nativeSrc":"1986:33:75","nodeType":"YulFunctionCall","src":"1986:33:75"},"nativeSrc":"1986:33:75","nodeType":"YulExpressionStatement","src":"1986:33:75"},{"nativeSrc":"2028:17:75","nodeType":"YulAssignment","src":"2028:17:75","value":{"name":"value_1","nativeSrc":"2038:7:75","nodeType":"YulIdentifier","src":"2038:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2028:6:75","nodeType":"YulIdentifier","src":"2028:6:75"}]},{"nativeSrc":"2054:16:75","nodeType":"YulVariableDeclaration","src":"2054:16:75","value":{"kind":"number","nativeSrc":"2069:1:75","nodeType":"YulLiteral","src":"2069:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"2058:7:75","nodeType":"YulTypedName","src":"2058:7:75","type":""}]},{"nativeSrc":"2079:43:75","nodeType":"YulAssignment","src":"2079:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2107:9:75","nodeType":"YulIdentifier","src":"2107:9:75"},{"kind":"number","nativeSrc":"2118:2:75","nodeType":"YulLiteral","src":"2118:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2103:3:75","nodeType":"YulIdentifier","src":"2103:3:75"},"nativeSrc":"2103:18:75","nodeType":"YulFunctionCall","src":"2103:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2090:12:75","nodeType":"YulIdentifier","src":"2090:12:75"},"nativeSrc":"2090:32:75","nodeType":"YulFunctionCall","src":"2090:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"2079:7:75","nodeType":"YulIdentifier","src":"2079:7:75"}]},{"nativeSrc":"2131:17:75","nodeType":"YulAssignment","src":"2131:17:75","value":{"name":"value_2","nativeSrc":"2141:7:75","nodeType":"YulIdentifier","src":"2141:7:75"},"variableNames":[{"name":"value2","nativeSrc":"2131:6:75","nodeType":"YulIdentifier","src":"2131:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1646:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1700:9:75","nodeType":"YulTypedName","src":"1700:9:75","type":""},{"name":"dataEnd","nativeSrc":"1711:7:75","nodeType":"YulTypedName","src":"1711:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1723:6:75","nodeType":"YulTypedName","src":"1723:6:75","type":""},{"name":"value1","nativeSrc":"1731:6:75","nodeType":"YulTypedName","src":"1731:6:75","type":""},{"name":"value2","nativeSrc":"1739:6:75","nodeType":"YulTypedName","src":"1739:6:75","type":""}],"src":"1646:508:75"},{"body":{"nativeSrc":"2256:87:75","nodeType":"YulBlock","src":"2256:87:75","statements":[{"nativeSrc":"2266:26:75","nodeType":"YulAssignment","src":"2266:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2278:9:75","nodeType":"YulIdentifier","src":"2278:9:75"},{"kind":"number","nativeSrc":"2289:2:75","nodeType":"YulLiteral","src":"2289:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2274:3:75","nodeType":"YulIdentifier","src":"2274:3:75"},"nativeSrc":"2274:18:75","nodeType":"YulFunctionCall","src":"2274:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2266:4:75","nodeType":"YulIdentifier","src":"2266:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2308:9:75","nodeType":"YulIdentifier","src":"2308:9:75"},{"arguments":[{"name":"value0","nativeSrc":"2323:6:75","nodeType":"YulIdentifier","src":"2323:6:75"},{"kind":"number","nativeSrc":"2331:4:75","nodeType":"YulLiteral","src":"2331:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2319:3:75","nodeType":"YulIdentifier","src":"2319:3:75"},"nativeSrc":"2319:17:75","nodeType":"YulFunctionCall","src":"2319:17:75"}],"functionName":{"name":"mstore","nativeSrc":"2301:6:75","nodeType":"YulIdentifier","src":"2301:6:75"},"nativeSrc":"2301:36:75","nodeType":"YulFunctionCall","src":"2301:36:75"},"nativeSrc":"2301:36:75","nodeType":"YulExpressionStatement","src":"2301:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2159:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2225:9:75","nodeType":"YulTypedName","src":"2225:9:75","type":""},{"name":"value0","nativeSrc":"2236:6:75","nodeType":"YulTypedName","src":"2236:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2247:4:75","nodeType":"YulTypedName","src":"2247:4:75","type":""}],"src":"2159:184:75"},{"body":{"nativeSrc":"2449:102:75","nodeType":"YulBlock","src":"2449:102:75","statements":[{"nativeSrc":"2459:26:75","nodeType":"YulAssignment","src":"2459:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2471:9:75","nodeType":"YulIdentifier","src":"2471:9:75"},{"kind":"number","nativeSrc":"2482:2:75","nodeType":"YulLiteral","src":"2482:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2467:3:75","nodeType":"YulIdentifier","src":"2467:3:75"},"nativeSrc":"2467:18:75","nodeType":"YulFunctionCall","src":"2467:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2459:4:75","nodeType":"YulIdentifier","src":"2459:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2501:9:75","nodeType":"YulIdentifier","src":"2501:9:75"},{"arguments":[{"name":"value0","nativeSrc":"2516:6:75","nodeType":"YulIdentifier","src":"2516:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2532:3:75","nodeType":"YulLiteral","src":"2532:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2537:1:75","nodeType":"YulLiteral","src":"2537:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2528:3:75","nodeType":"YulIdentifier","src":"2528:3:75"},"nativeSrc":"2528:11:75","nodeType":"YulFunctionCall","src":"2528:11:75"},{"kind":"number","nativeSrc":"2541:1:75","nodeType":"YulLiteral","src":"2541:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2524:3:75","nodeType":"YulIdentifier","src":"2524:3:75"},"nativeSrc":"2524:19:75","nodeType":"YulFunctionCall","src":"2524:19:75"}],"functionName":{"name":"and","nativeSrc":"2512:3:75","nodeType":"YulIdentifier","src":"2512:3:75"},"nativeSrc":"2512:32:75","nodeType":"YulFunctionCall","src":"2512:32:75"}],"functionName":{"name":"mstore","nativeSrc":"2494:6:75","nodeType":"YulIdentifier","src":"2494:6:75"},"nativeSrc":"2494:51:75","nodeType":"YulFunctionCall","src":"2494:51:75"},"nativeSrc":"2494:51:75","nodeType":"YulExpressionStatement","src":"2494:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2348:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2418:9:75","nodeType":"YulTypedName","src":"2418:9:75","type":""},{"name":"value0","nativeSrc":"2429:6:75","nodeType":"YulTypedName","src":"2429:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2440:4:75","nodeType":"YulTypedName","src":"2440:4:75","type":""}],"src":"2348:203:75"},{"body":{"nativeSrc":"2603:109:75","nodeType":"YulBlock","src":"2603:109:75","statements":[{"nativeSrc":"2613:29:75","nodeType":"YulAssignment","src":"2613:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"2635:6:75","nodeType":"YulIdentifier","src":"2635:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"2622:12:75","nodeType":"YulIdentifier","src":"2622:12:75"},"nativeSrc":"2622:20:75","nodeType":"YulFunctionCall","src":"2622:20:75"},"variableNames":[{"name":"value","nativeSrc":"2613:5:75","nodeType":"YulIdentifier","src":"2613:5:75"}]},{"body":{"nativeSrc":"2690:16:75","nodeType":"YulBlock","src":"2690:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2699:1:75","nodeType":"YulLiteral","src":"2699:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2702:1:75","nodeType":"YulLiteral","src":"2702:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2692:6:75","nodeType":"YulIdentifier","src":"2692:6:75"},"nativeSrc":"2692:12:75","nodeType":"YulFunctionCall","src":"2692:12:75"},"nativeSrc":"2692:12:75","nodeType":"YulExpressionStatement","src":"2692:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2664:5:75","nodeType":"YulIdentifier","src":"2664:5:75"},{"arguments":[{"name":"value","nativeSrc":"2675:5:75","nodeType":"YulIdentifier","src":"2675:5:75"},{"kind":"number","nativeSrc":"2682:4:75","nodeType":"YulLiteral","src":"2682:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2671:3:75","nodeType":"YulIdentifier","src":"2671:3:75"},"nativeSrc":"2671:16:75","nodeType":"YulFunctionCall","src":"2671:16:75"}],"functionName":{"name":"eq","nativeSrc":"2661:2:75","nodeType":"YulIdentifier","src":"2661:2:75"},"nativeSrc":"2661:27:75","nodeType":"YulFunctionCall","src":"2661:27:75"}],"functionName":{"name":"iszero","nativeSrc":"2654:6:75","nodeType":"YulIdentifier","src":"2654:6:75"},"nativeSrc":"2654:35:75","nodeType":"YulFunctionCall","src":"2654:35:75"},"nativeSrc":"2651:55:75","nodeType":"YulIf","src":"2651:55:75"}]},"name":"abi_decode_uint8","nativeSrc":"2556:156:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2582:6:75","nodeType":"YulTypedName","src":"2582:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2593:5:75","nodeType":"YulTypedName","src":"2593:5:75","type":""}],"src":"2556:156:75"},{"body":{"nativeSrc":"2749:95:75","nodeType":"YulBlock","src":"2749:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2766:1:75","nodeType":"YulLiteral","src":"2766:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2773:3:75","nodeType":"YulLiteral","src":"2773:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"2778:10:75","nodeType":"YulLiteral","src":"2778:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2769:3:75","nodeType":"YulIdentifier","src":"2769:3:75"},"nativeSrc":"2769:20:75","nodeType":"YulFunctionCall","src":"2769:20:75"}],"functionName":{"name":"mstore","nativeSrc":"2759:6:75","nodeType":"YulIdentifier","src":"2759:6:75"},"nativeSrc":"2759:31:75","nodeType":"YulFunctionCall","src":"2759:31:75"},"nativeSrc":"2759:31:75","nodeType":"YulExpressionStatement","src":"2759:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2806:1:75","nodeType":"YulLiteral","src":"2806:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"2809:4:75","nodeType":"YulLiteral","src":"2809:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"2799:6:75","nodeType":"YulIdentifier","src":"2799:6:75"},"nativeSrc":"2799:15:75","nodeType":"YulFunctionCall","src":"2799:15:75"},"nativeSrc":"2799:15:75","nodeType":"YulExpressionStatement","src":"2799:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2830:1:75","nodeType":"YulLiteral","src":"2830:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2833:4:75","nodeType":"YulLiteral","src":"2833:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2823:6:75","nodeType":"YulIdentifier","src":"2823:6:75"},"nativeSrc":"2823:15:75","nodeType":"YulFunctionCall","src":"2823:15:75"},"nativeSrc":"2823:15:75","nodeType":"YulExpressionStatement","src":"2823:15:75"}]},"name":"panic_error_0x41","nativeSrc":"2717:127:75","nodeType":"YulFunctionDefinition","src":"2717:127:75"},{"body":{"nativeSrc":"2894:230:75","nodeType":"YulBlock","src":"2894:230:75","statements":[{"nativeSrc":"2904:19:75","nodeType":"YulAssignment","src":"2904:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"2920:2:75","nodeType":"YulLiteral","src":"2920:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"2914:5:75","nodeType":"YulIdentifier","src":"2914:5:75"},"nativeSrc":"2914:9:75","nodeType":"YulFunctionCall","src":"2914:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"2904:6:75","nodeType":"YulIdentifier","src":"2904:6:75"}]},{"nativeSrc":"2932:58:75","nodeType":"YulVariableDeclaration","src":"2932:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"2954:6:75","nodeType":"YulIdentifier","src":"2954:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"2970:4:75","nodeType":"YulIdentifier","src":"2970:4:75"},{"kind":"number","nativeSrc":"2976:2:75","nodeType":"YulLiteral","src":"2976:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2966:3:75","nodeType":"YulIdentifier","src":"2966:3:75"},"nativeSrc":"2966:13:75","nodeType":"YulFunctionCall","src":"2966:13:75"},{"arguments":[{"kind":"number","nativeSrc":"2985:2:75","nodeType":"YulLiteral","src":"2985:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2981:3:75","nodeType":"YulIdentifier","src":"2981:3:75"},"nativeSrc":"2981:7:75","nodeType":"YulFunctionCall","src":"2981:7:75"}],"functionName":{"name":"and","nativeSrc":"2962:3:75","nodeType":"YulIdentifier","src":"2962:3:75"},"nativeSrc":"2962:27:75","nodeType":"YulFunctionCall","src":"2962:27:75"}],"functionName":{"name":"add","nativeSrc":"2950:3:75","nodeType":"YulIdentifier","src":"2950:3:75"},"nativeSrc":"2950:40:75","nodeType":"YulFunctionCall","src":"2950:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"2936:10:75","nodeType":"YulTypedName","src":"2936:10:75","type":""}]},{"body":{"nativeSrc":"3065:22:75","nodeType":"YulBlock","src":"3065:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3067:16:75","nodeType":"YulIdentifier","src":"3067:16:75"},"nativeSrc":"3067:18:75","nodeType":"YulFunctionCall","src":"3067:18:75"},"nativeSrc":"3067:18:75","nodeType":"YulExpressionStatement","src":"3067:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3008:10:75","nodeType":"YulIdentifier","src":"3008:10:75"},{"kind":"number","nativeSrc":"3020:18:75","nodeType":"YulLiteral","src":"3020:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3005:2:75","nodeType":"YulIdentifier","src":"3005:2:75"},"nativeSrc":"3005:34:75","nodeType":"YulFunctionCall","src":"3005:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3044:10:75","nodeType":"YulIdentifier","src":"3044:10:75"},{"name":"memPtr","nativeSrc":"3056:6:75","nodeType":"YulIdentifier","src":"3056:6:75"}],"functionName":{"name":"lt","nativeSrc":"3041:2:75","nodeType":"YulIdentifier","src":"3041:2:75"},"nativeSrc":"3041:22:75","nodeType":"YulFunctionCall","src":"3041:22:75"}],"functionName":{"name":"or","nativeSrc":"3002:2:75","nodeType":"YulIdentifier","src":"3002:2:75"},"nativeSrc":"3002:62:75","nodeType":"YulFunctionCall","src":"3002:62:75"},"nativeSrc":"2999:88:75","nodeType":"YulIf","src":"2999:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3103:2:75","nodeType":"YulLiteral","src":"3103:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3107:10:75","nodeType":"YulIdentifier","src":"3107:10:75"}],"functionName":{"name":"mstore","nativeSrc":"3096:6:75","nodeType":"YulIdentifier","src":"3096:6:75"},"nativeSrc":"3096:22:75","nodeType":"YulFunctionCall","src":"3096:22:75"},"nativeSrc":"3096:22:75","nodeType":"YulExpressionStatement","src":"3096:22:75"}]},"name":"allocate_memory","nativeSrc":"2849:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"2874:4:75","nodeType":"YulTypedName","src":"2874:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"2883:6:75","nodeType":"YulTypedName","src":"2883:6:75","type":""}],"src":"2849:275:75"},{"body":{"nativeSrc":"3181:577:75","nodeType":"YulBlock","src":"3181:577:75","statements":[{"body":{"nativeSrc":"3230:16:75","nodeType":"YulBlock","src":"3230:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3239:1:75","nodeType":"YulLiteral","src":"3239:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3242:1:75","nodeType":"YulLiteral","src":"3242:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3232:6:75","nodeType":"YulIdentifier","src":"3232:6:75"},"nativeSrc":"3232:12:75","nodeType":"YulFunctionCall","src":"3232:12:75"},"nativeSrc":"3232:12:75","nodeType":"YulExpressionStatement","src":"3232:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3209:6:75","nodeType":"YulIdentifier","src":"3209:6:75"},{"kind":"number","nativeSrc":"3217:4:75","nodeType":"YulLiteral","src":"3217:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3205:3:75","nodeType":"YulIdentifier","src":"3205:3:75"},"nativeSrc":"3205:17:75","nodeType":"YulFunctionCall","src":"3205:17:75"},{"name":"end","nativeSrc":"3224:3:75","nodeType":"YulIdentifier","src":"3224:3:75"}],"functionName":{"name":"slt","nativeSrc":"3201:3:75","nodeType":"YulIdentifier","src":"3201:3:75"},"nativeSrc":"3201:27:75","nodeType":"YulFunctionCall","src":"3201:27:75"}],"functionName":{"name":"iszero","nativeSrc":"3194:6:75","nodeType":"YulIdentifier","src":"3194:6:75"},"nativeSrc":"3194:35:75","nodeType":"YulFunctionCall","src":"3194:35:75"},"nativeSrc":"3191:55:75","nodeType":"YulIf","src":"3191:55:75"},{"nativeSrc":"3255:34:75","nodeType":"YulVariableDeclaration","src":"3255:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"3282:6:75","nodeType":"YulIdentifier","src":"3282:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"3269:12:75","nodeType":"YulIdentifier","src":"3269:12:75"},"nativeSrc":"3269:20:75","nodeType":"YulFunctionCall","src":"3269:20:75"},"variables":[{"name":"length","nativeSrc":"3259:6:75","nodeType":"YulTypedName","src":"3259:6:75","type":""}]},{"nativeSrc":"3298:28:75","nodeType":"YulVariableDeclaration","src":"3298:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"3313:6:75","nodeType":"YulIdentifier","src":"3313:6:75"},{"kind":"number","nativeSrc":"3321:4:75","nodeType":"YulLiteral","src":"3321:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3309:3:75","nodeType":"YulIdentifier","src":"3309:3:75"},"nativeSrc":"3309:17:75","nodeType":"YulFunctionCall","src":"3309:17:75"},"variables":[{"name":"src","nativeSrc":"3302:3:75","nodeType":"YulTypedName","src":"3302:3:75","type":""}]},{"nativeSrc":"3335:16:75","nodeType":"YulVariableDeclaration","src":"3335:16:75","value":{"kind":"number","nativeSrc":"3350:1:75","nodeType":"YulLiteral","src":"3350:1:75","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"3339:7:75","nodeType":"YulTypedName","src":"3339:7:75","type":""}]},{"nativeSrc":"3360:13:75","nodeType":"YulVariableDeclaration","src":"3360:13:75","value":{"kind":"number","nativeSrc":"3372:1:75","nodeType":"YulLiteral","src":"3372:1:75","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3364:4:75","nodeType":"YulTypedName","src":"3364:4:75","type":""}]},{"body":{"nativeSrc":"3416:22:75","nodeType":"YulBlock","src":"3416:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3418:16:75","nodeType":"YulIdentifier","src":"3418:16:75"},"nativeSrc":"3418:18:75","nodeType":"YulFunctionCall","src":"3418:18:75"},"nativeSrc":"3418:18:75","nodeType":"YulExpressionStatement","src":"3418:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3388:6:75","nodeType":"YulIdentifier","src":"3388:6:75"},{"kind":"number","nativeSrc":"3396:18:75","nodeType":"YulLiteral","src":"3396:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3385:2:75","nodeType":"YulIdentifier","src":"3385:2:75"},"nativeSrc":"3385:30:75","nodeType":"YulFunctionCall","src":"3385:30:75"},"nativeSrc":"3382:56:75","nodeType":"YulIf","src":"3382:56:75"},{"nativeSrc":"3447:48:75","nodeType":"YulAssignment","src":"3447:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3467:6:75","nodeType":"YulIdentifier","src":"3467:6:75"},{"kind":"number","nativeSrc":"3475:2:75","nodeType":"YulLiteral","src":"3475:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3463:3:75","nodeType":"YulIdentifier","src":"3463:3:75"},"nativeSrc":"3463:15:75","nodeType":"YulFunctionCall","src":"3463:15:75"},{"arguments":[{"kind":"number","nativeSrc":"3484:2:75","nodeType":"YulLiteral","src":"3484:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3480:3:75","nodeType":"YulIdentifier","src":"3480:3:75"},"nativeSrc":"3480:7:75","nodeType":"YulFunctionCall","src":"3480:7:75"}],"functionName":{"name":"and","nativeSrc":"3459:3:75","nodeType":"YulIdentifier","src":"3459:3:75"},"nativeSrc":"3459:29:75","nodeType":"YulFunctionCall","src":"3459:29:75"},{"kind":"number","nativeSrc":"3490:4:75","nodeType":"YulLiteral","src":"3490:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3455:3:75","nodeType":"YulIdentifier","src":"3455:3:75"},"nativeSrc":"3455:40:75","nodeType":"YulFunctionCall","src":"3455:40:75"},"variableNames":[{"name":"size","nativeSrc":"3447:4:75","nodeType":"YulIdentifier","src":"3447:4:75"}]},{"nativeSrc":"3504:32:75","nodeType":"YulAssignment","src":"3504:32:75","value":{"arguments":[{"name":"size","nativeSrc":"3531:4:75","nodeType":"YulIdentifier","src":"3531:4:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"3515:15:75","nodeType":"YulIdentifier","src":"3515:15:75"},"nativeSrc":"3515:21:75","nodeType":"YulFunctionCall","src":"3515:21:75"},"variableNames":[{"name":"array_1","nativeSrc":"3504:7:75","nodeType":"YulIdentifier","src":"3504:7:75"}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"3552:7:75","nodeType":"YulIdentifier","src":"3552:7:75"},{"name":"length","nativeSrc":"3561:6:75","nodeType":"YulIdentifier","src":"3561:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3545:6:75","nodeType":"YulIdentifier","src":"3545:6:75"},"nativeSrc":"3545:23:75","nodeType":"YulFunctionCall","src":"3545:23:75"},"nativeSrc":"3545:23:75","nodeType":"YulExpressionStatement","src":"3545:23:75"},{"body":{"nativeSrc":"3606:16:75","nodeType":"YulBlock","src":"3606:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3615:1:75","nodeType":"YulLiteral","src":"3615:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3618:1:75","nodeType":"YulLiteral","src":"3618:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3608:6:75","nodeType":"YulIdentifier","src":"3608:6:75"},"nativeSrc":"3608:12:75","nodeType":"YulFunctionCall","src":"3608:12:75"},"nativeSrc":"3608:12:75","nodeType":"YulExpressionStatement","src":"3608:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3587:3:75","nodeType":"YulIdentifier","src":"3587:3:75"},{"name":"length","nativeSrc":"3592:6:75","nodeType":"YulIdentifier","src":"3592:6:75"}],"functionName":{"name":"add","nativeSrc":"3583:3:75","nodeType":"YulIdentifier","src":"3583:3:75"},"nativeSrc":"3583:16:75","nodeType":"YulFunctionCall","src":"3583:16:75"},{"name":"end","nativeSrc":"3601:3:75","nodeType":"YulIdentifier","src":"3601:3:75"}],"functionName":{"name":"gt","nativeSrc":"3580:2:75","nodeType":"YulIdentifier","src":"3580:2:75"},"nativeSrc":"3580:25:75","nodeType":"YulFunctionCall","src":"3580:25:75"},"nativeSrc":"3577:45:75","nodeType":"YulIf","src":"3577:45:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3648:7:75","nodeType":"YulIdentifier","src":"3648:7:75"},{"kind":"number","nativeSrc":"3657:4:75","nodeType":"YulLiteral","src":"3657:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3644:3:75","nodeType":"YulIdentifier","src":"3644:3:75"},"nativeSrc":"3644:18:75","nodeType":"YulFunctionCall","src":"3644:18:75"},{"name":"src","nativeSrc":"3664:3:75","nodeType":"YulIdentifier","src":"3664:3:75"},{"name":"length","nativeSrc":"3669:6:75","nodeType":"YulIdentifier","src":"3669:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"3631:12:75","nodeType":"YulIdentifier","src":"3631:12:75"},"nativeSrc":"3631:45:75","nodeType":"YulFunctionCall","src":"3631:45:75"},"nativeSrc":"3631:45:75","nodeType":"YulExpressionStatement","src":"3631:45:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3700:7:75","nodeType":"YulIdentifier","src":"3700:7:75"},{"name":"length","nativeSrc":"3709:6:75","nodeType":"YulIdentifier","src":"3709:6:75"}],"functionName":{"name":"add","nativeSrc":"3696:3:75","nodeType":"YulIdentifier","src":"3696:3:75"},"nativeSrc":"3696:20:75","nodeType":"YulFunctionCall","src":"3696:20:75"},{"kind":"number","nativeSrc":"3718:4:75","nodeType":"YulLiteral","src":"3718:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3692:3:75","nodeType":"YulIdentifier","src":"3692:3:75"},"nativeSrc":"3692:31:75","nodeType":"YulFunctionCall","src":"3692:31:75"},{"kind":"number","nativeSrc":"3725:1:75","nodeType":"YulLiteral","src":"3725:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3685:6:75","nodeType":"YulIdentifier","src":"3685:6:75"},"nativeSrc":"3685:42:75","nodeType":"YulFunctionCall","src":"3685:42:75"},"nativeSrc":"3685:42:75","nodeType":"YulExpressionStatement","src":"3685:42:75"},{"nativeSrc":"3736:16:75","nodeType":"YulAssignment","src":"3736:16:75","value":{"name":"array_1","nativeSrc":"3745:7:75","nodeType":"YulIdentifier","src":"3745:7:75"},"variableNames":[{"name":"array","nativeSrc":"3736:5:75","nodeType":"YulIdentifier","src":"3736:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"3129:629:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3155:6:75","nodeType":"YulTypedName","src":"3155:6:75","type":""},{"name":"end","nativeSrc":"3163:3:75","nodeType":"YulTypedName","src":"3163:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3171:5:75","nodeType":"YulTypedName","src":"3171:5:75","type":""}],"src":"3129:629:75"},{"body":{"nativeSrc":"3872:351:75","nodeType":"YulBlock","src":"3872:351:75","statements":[{"body":{"nativeSrc":"3918:16:75","nodeType":"YulBlock","src":"3918:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3927:1:75","nodeType":"YulLiteral","src":"3927:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3930:1:75","nodeType":"YulLiteral","src":"3930:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3920:6:75","nodeType":"YulIdentifier","src":"3920:6:75"},"nativeSrc":"3920:12:75","nodeType":"YulFunctionCall","src":"3920:12:75"},"nativeSrc":"3920:12:75","nodeType":"YulExpressionStatement","src":"3920:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3893:7:75","nodeType":"YulIdentifier","src":"3893:7:75"},{"name":"headStart","nativeSrc":"3902:9:75","nodeType":"YulIdentifier","src":"3902:9:75"}],"functionName":{"name":"sub","nativeSrc":"3889:3:75","nodeType":"YulIdentifier","src":"3889:3:75"},"nativeSrc":"3889:23:75","nodeType":"YulFunctionCall","src":"3889:23:75"},{"kind":"number","nativeSrc":"3914:2:75","nodeType":"YulLiteral","src":"3914:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3885:3:75","nodeType":"YulIdentifier","src":"3885:3:75"},"nativeSrc":"3885:32:75","nodeType":"YulFunctionCall","src":"3885:32:75"},"nativeSrc":"3882:52:75","nodeType":"YulIf","src":"3882:52:75"},{"nativeSrc":"3943:37:75","nodeType":"YulAssignment","src":"3943:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3970:9:75","nodeType":"YulIdentifier","src":"3970:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"3953:16:75","nodeType":"YulIdentifier","src":"3953:16:75"},"nativeSrc":"3953:27:75","nodeType":"YulFunctionCall","src":"3953:27:75"},"variableNames":[{"name":"value0","nativeSrc":"3943:6:75","nodeType":"YulIdentifier","src":"3943:6:75"}]},{"nativeSrc":"3989:46:75","nodeType":"YulAssignment","src":"3989:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4020:9:75","nodeType":"YulIdentifier","src":"4020:9:75"},{"kind":"number","nativeSrc":"4031:2:75","nodeType":"YulLiteral","src":"4031:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4016:3:75","nodeType":"YulIdentifier","src":"4016:3:75"},"nativeSrc":"4016:18:75","nodeType":"YulFunctionCall","src":"4016:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"3999:16:75","nodeType":"YulIdentifier","src":"3999:16:75"},"nativeSrc":"3999:36:75","nodeType":"YulFunctionCall","src":"3999:36:75"},"variableNames":[{"name":"value1","nativeSrc":"3989:6:75","nodeType":"YulIdentifier","src":"3989:6:75"}]},{"nativeSrc":"4044:46:75","nodeType":"YulVariableDeclaration","src":"4044:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4075:9:75","nodeType":"YulIdentifier","src":"4075:9:75"},{"kind":"number","nativeSrc":"4086:2:75","nodeType":"YulLiteral","src":"4086:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4071:3:75","nodeType":"YulIdentifier","src":"4071:3:75"},"nativeSrc":"4071:18:75","nodeType":"YulFunctionCall","src":"4071:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4058:12:75","nodeType":"YulIdentifier","src":"4058:12:75"},"nativeSrc":"4058:32:75","nodeType":"YulFunctionCall","src":"4058:32:75"},"variables":[{"name":"offset","nativeSrc":"4048:6:75","nodeType":"YulTypedName","src":"4048:6:75","type":""}]},{"body":{"nativeSrc":"4133:16:75","nodeType":"YulBlock","src":"4133:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4142:1:75","nodeType":"YulLiteral","src":"4142:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4145:1:75","nodeType":"YulLiteral","src":"4145:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4135:6:75","nodeType":"YulIdentifier","src":"4135:6:75"},"nativeSrc":"4135:12:75","nodeType":"YulFunctionCall","src":"4135:12:75"},"nativeSrc":"4135:12:75","nodeType":"YulExpressionStatement","src":"4135:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4105:6:75","nodeType":"YulIdentifier","src":"4105:6:75"},{"kind":"number","nativeSrc":"4113:18:75","nodeType":"YulLiteral","src":"4113:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4102:2:75","nodeType":"YulIdentifier","src":"4102:2:75"},"nativeSrc":"4102:30:75","nodeType":"YulFunctionCall","src":"4102:30:75"},"nativeSrc":"4099:50:75","nodeType":"YulIf","src":"4099:50:75"},{"nativeSrc":"4158:59:75","nodeType":"YulAssignment","src":"4158:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4189:9:75","nodeType":"YulIdentifier","src":"4189:9:75"},{"name":"offset","nativeSrc":"4200:6:75","nodeType":"YulIdentifier","src":"4200:6:75"}],"functionName":{"name":"add","nativeSrc":"4185:3:75","nodeType":"YulIdentifier","src":"4185:3:75"},"nativeSrc":"4185:22:75","nodeType":"YulFunctionCall","src":"4185:22:75"},{"name":"dataEnd","nativeSrc":"4209:7:75","nodeType":"YulIdentifier","src":"4209:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4168:16:75","nodeType":"YulIdentifier","src":"4168:16:75"},"nativeSrc":"4168:49:75","nodeType":"YulFunctionCall","src":"4168:49:75"},"variableNames":[{"name":"value2","nativeSrc":"4158:6:75","nodeType":"YulIdentifier","src":"4158:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr","nativeSrc":"3763:460:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3822:9:75","nodeType":"YulTypedName","src":"3822:9:75","type":""},{"name":"dataEnd","nativeSrc":"3833:7:75","nodeType":"YulTypedName","src":"3833:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3845:6:75","nodeType":"YulTypedName","src":"3845:6:75","type":""},{"name":"value1","nativeSrc":"3853:6:75","nodeType":"YulTypedName","src":"3853:6:75","type":""},{"name":"value2","nativeSrc":"3861:6:75","nodeType":"YulTypedName","src":"3861:6:75","type":""}],"src":"3763:460:75"},{"body":{"nativeSrc":"4347:99:75","nodeType":"YulBlock","src":"4347:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4364:9:75","nodeType":"YulIdentifier","src":"4364:9:75"},{"kind":"number","nativeSrc":"4375:2:75","nodeType":"YulLiteral","src":"4375:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4357:6:75","nodeType":"YulIdentifier","src":"4357:6:75"},"nativeSrc":"4357:21:75","nodeType":"YulFunctionCall","src":"4357:21:75"},"nativeSrc":"4357:21:75","nodeType":"YulExpressionStatement","src":"4357:21:75"},{"nativeSrc":"4387:53:75","nodeType":"YulAssignment","src":"4387:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"4413:6:75","nodeType":"YulIdentifier","src":"4413:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"4425:9:75","nodeType":"YulIdentifier","src":"4425:9:75"},{"kind":"number","nativeSrc":"4436:2:75","nodeType":"YulLiteral","src":"4436:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4421:3:75","nodeType":"YulIdentifier","src":"4421:3:75"},"nativeSrc":"4421:18:75","nodeType":"YulFunctionCall","src":"4421:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"4395:17:75","nodeType":"YulIdentifier","src":"4395:17:75"},"nativeSrc":"4395:45:75","nodeType":"YulFunctionCall","src":"4395:45:75"},"variableNames":[{"name":"tail","nativeSrc":"4387:4:75","nodeType":"YulIdentifier","src":"4387:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"4228:218:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4316:9:75","nodeType":"YulTypedName","src":"4316:9:75","type":""},{"name":"value0","nativeSrc":"4327:6:75","nodeType":"YulTypedName","src":"4327:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4338:4:75","nodeType":"YulTypedName","src":"4338:4:75","type":""}],"src":"4228:218:75"},{"body":{"nativeSrc":"4521:177:75","nodeType":"YulBlock","src":"4521:177:75","statements":[{"body":{"nativeSrc":"4567:16:75","nodeType":"YulBlock","src":"4567:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4576:1:75","nodeType":"YulLiteral","src":"4576:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4579:1:75","nodeType":"YulLiteral","src":"4579:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4569:6:75","nodeType":"YulIdentifier","src":"4569:6:75"},"nativeSrc":"4569:12:75","nodeType":"YulFunctionCall","src":"4569:12:75"},"nativeSrc":"4569:12:75","nodeType":"YulExpressionStatement","src":"4569:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4542:7:75","nodeType":"YulIdentifier","src":"4542:7:75"},{"name":"headStart","nativeSrc":"4551:9:75","nodeType":"YulIdentifier","src":"4551:9:75"}],"functionName":{"name":"sub","nativeSrc":"4538:3:75","nodeType":"YulIdentifier","src":"4538:3:75"},"nativeSrc":"4538:23:75","nodeType":"YulFunctionCall","src":"4538:23:75"},{"kind":"number","nativeSrc":"4563:2:75","nodeType":"YulLiteral","src":"4563:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4534:3:75","nodeType":"YulIdentifier","src":"4534:3:75"},"nativeSrc":"4534:32:75","nodeType":"YulFunctionCall","src":"4534:32:75"},"nativeSrc":"4531:52:75","nodeType":"YulIf","src":"4531:52:75"},{"nativeSrc":"4592:36:75","nodeType":"YulVariableDeclaration","src":"4592:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4618:9:75","nodeType":"YulIdentifier","src":"4618:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4605:12:75","nodeType":"YulIdentifier","src":"4605:12:75"},"nativeSrc":"4605:23:75","nodeType":"YulFunctionCall","src":"4605:23:75"},"variables":[{"name":"value","nativeSrc":"4596:5:75","nodeType":"YulTypedName","src":"4596:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4662:5:75","nodeType":"YulIdentifier","src":"4662:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4637:24:75","nodeType":"YulIdentifier","src":"4637:24:75"},"nativeSrc":"4637:31:75","nodeType":"YulFunctionCall","src":"4637:31:75"},"nativeSrc":"4637:31:75","nodeType":"YulExpressionStatement","src":"4637:31:75"},{"nativeSrc":"4677:15:75","nodeType":"YulAssignment","src":"4677:15:75","value":{"name":"value","nativeSrc":"4687:5:75","nodeType":"YulIdentifier","src":"4687:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4677:6:75","nodeType":"YulIdentifier","src":"4677:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4451:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4487:9:75","nodeType":"YulTypedName","src":"4487:9:75","type":""},{"name":"dataEnd","nativeSrc":"4498:7:75","nodeType":"YulTypedName","src":"4498:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4510:6:75","nodeType":"YulTypedName","src":"4510:6:75","type":""}],"src":"4451:247:75"},{"body":{"nativeSrc":"4773:110:75","nodeType":"YulBlock","src":"4773:110:75","statements":[{"body":{"nativeSrc":"4819:16:75","nodeType":"YulBlock","src":"4819:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4828:1:75","nodeType":"YulLiteral","src":"4828:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4831:1:75","nodeType":"YulLiteral","src":"4831:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4821:6:75","nodeType":"YulIdentifier","src":"4821:6:75"},"nativeSrc":"4821:12:75","nodeType":"YulFunctionCall","src":"4821:12:75"},"nativeSrc":"4821:12:75","nodeType":"YulExpressionStatement","src":"4821:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4794:7:75","nodeType":"YulIdentifier","src":"4794:7:75"},{"name":"headStart","nativeSrc":"4803:9:75","nodeType":"YulIdentifier","src":"4803:9:75"}],"functionName":{"name":"sub","nativeSrc":"4790:3:75","nodeType":"YulIdentifier","src":"4790:3:75"},"nativeSrc":"4790:23:75","nodeType":"YulFunctionCall","src":"4790:23:75"},{"kind":"number","nativeSrc":"4815:2:75","nodeType":"YulLiteral","src":"4815:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4786:3:75","nodeType":"YulIdentifier","src":"4786:3:75"},"nativeSrc":"4786:32:75","nodeType":"YulFunctionCall","src":"4786:32:75"},"nativeSrc":"4783:52:75","nodeType":"YulIf","src":"4783:52:75"},{"nativeSrc":"4844:33:75","nodeType":"YulAssignment","src":"4844:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4867:9:75","nodeType":"YulIdentifier","src":"4867:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4854:12:75","nodeType":"YulIdentifier","src":"4854:12:75"},"nativeSrc":"4854:23:75","nodeType":"YulFunctionCall","src":"4854:23:75"},"variableNames":[{"name":"value0","nativeSrc":"4844:6:75","nodeType":"YulIdentifier","src":"4844:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"4703:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4739:9:75","nodeType":"YulTypedName","src":"4739:9:75","type":""},{"name":"dataEnd","nativeSrc":"4750:7:75","nodeType":"YulTypedName","src":"4750:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4762:6:75","nodeType":"YulTypedName","src":"4762:6:75","type":""}],"src":"4703:180:75"},{"body":{"nativeSrc":"4984:359:75","nodeType":"YulBlock","src":"4984:359:75","statements":[{"body":{"nativeSrc":"5030:16:75","nodeType":"YulBlock","src":"5030:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5039:1:75","nodeType":"YulLiteral","src":"5039:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5042:1:75","nodeType":"YulLiteral","src":"5042:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5032:6:75","nodeType":"YulIdentifier","src":"5032:6:75"},"nativeSrc":"5032:12:75","nodeType":"YulFunctionCall","src":"5032:12:75"},"nativeSrc":"5032:12:75","nodeType":"YulExpressionStatement","src":"5032:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5005:7:75","nodeType":"YulIdentifier","src":"5005:7:75"},{"name":"headStart","nativeSrc":"5014:9:75","nodeType":"YulIdentifier","src":"5014:9:75"}],"functionName":{"name":"sub","nativeSrc":"5001:3:75","nodeType":"YulIdentifier","src":"5001:3:75"},"nativeSrc":"5001:23:75","nodeType":"YulFunctionCall","src":"5001:23:75"},{"kind":"number","nativeSrc":"5026:2:75","nodeType":"YulLiteral","src":"5026:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4997:3:75","nodeType":"YulIdentifier","src":"4997:3:75"},"nativeSrc":"4997:32:75","nodeType":"YulFunctionCall","src":"4997:32:75"},"nativeSrc":"4994:52:75","nodeType":"YulIf","src":"4994:52:75"},{"nativeSrc":"5055:36:75","nodeType":"YulVariableDeclaration","src":"5055:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5081:9:75","nodeType":"YulIdentifier","src":"5081:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5068:12:75","nodeType":"YulIdentifier","src":"5068:12:75"},"nativeSrc":"5068:23:75","nodeType":"YulFunctionCall","src":"5068:23:75"},"variables":[{"name":"value","nativeSrc":"5059:5:75","nodeType":"YulTypedName","src":"5059:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5125:5:75","nodeType":"YulIdentifier","src":"5125:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5100:24:75","nodeType":"YulIdentifier","src":"5100:24:75"},"nativeSrc":"5100:31:75","nodeType":"YulFunctionCall","src":"5100:31:75"},"nativeSrc":"5100:31:75","nodeType":"YulExpressionStatement","src":"5100:31:75"},{"nativeSrc":"5140:15:75","nodeType":"YulAssignment","src":"5140:15:75","value":{"name":"value","nativeSrc":"5150:5:75","nodeType":"YulIdentifier","src":"5150:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5140:6:75","nodeType":"YulIdentifier","src":"5140:6:75"}]},{"nativeSrc":"5164:46:75","nodeType":"YulVariableDeclaration","src":"5164:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5195:9:75","nodeType":"YulIdentifier","src":"5195:9:75"},{"kind":"number","nativeSrc":"5206:2:75","nodeType":"YulLiteral","src":"5206:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5191:3:75","nodeType":"YulIdentifier","src":"5191:3:75"},"nativeSrc":"5191:18:75","nodeType":"YulFunctionCall","src":"5191:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"5178:12:75","nodeType":"YulIdentifier","src":"5178:12:75"},"nativeSrc":"5178:32:75","nodeType":"YulFunctionCall","src":"5178:32:75"},"variables":[{"name":"offset","nativeSrc":"5168:6:75","nodeType":"YulTypedName","src":"5168:6:75","type":""}]},{"body":{"nativeSrc":"5253:16:75","nodeType":"YulBlock","src":"5253:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5262:1:75","nodeType":"YulLiteral","src":"5262:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5265:1:75","nodeType":"YulLiteral","src":"5265:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5255:6:75","nodeType":"YulIdentifier","src":"5255:6:75"},"nativeSrc":"5255:12:75","nodeType":"YulFunctionCall","src":"5255:12:75"},"nativeSrc":"5255:12:75","nodeType":"YulExpressionStatement","src":"5255:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5225:6:75","nodeType":"YulIdentifier","src":"5225:6:75"},{"kind":"number","nativeSrc":"5233:18:75","nodeType":"YulLiteral","src":"5233:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5222:2:75","nodeType":"YulIdentifier","src":"5222:2:75"},"nativeSrc":"5222:30:75","nodeType":"YulFunctionCall","src":"5222:30:75"},"nativeSrc":"5219:50:75","nodeType":"YulIf","src":"5219:50:75"},{"nativeSrc":"5278:59:75","nodeType":"YulAssignment","src":"5278:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5309:9:75","nodeType":"YulIdentifier","src":"5309:9:75"},{"name":"offset","nativeSrc":"5320:6:75","nodeType":"YulIdentifier","src":"5320:6:75"}],"functionName":{"name":"add","nativeSrc":"5305:3:75","nodeType":"YulIdentifier","src":"5305:3:75"},"nativeSrc":"5305:22:75","nodeType":"YulFunctionCall","src":"5305:22:75"},{"name":"dataEnd","nativeSrc":"5329:7:75","nodeType":"YulIdentifier","src":"5329:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5288:16:75","nodeType":"YulIdentifier","src":"5288:16:75"},"nativeSrc":"5288:49:75","nodeType":"YulFunctionCall","src":"5288:49:75"},"variableNames":[{"name":"value1","nativeSrc":"5278:6:75","nodeType":"YulIdentifier","src":"5278:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"4888:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4942:9:75","nodeType":"YulTypedName","src":"4942:9:75","type":""},{"name":"dataEnd","nativeSrc":"4953:7:75","nodeType":"YulTypedName","src":"4953:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4965:6:75","nodeType":"YulTypedName","src":"4965:6:75","type":""},{"name":"value1","nativeSrc":"4973:6:75","nodeType":"YulTypedName","src":"4973:6:75","type":""}],"src":"4888:455:75"},{"body":{"nativeSrc":"5493:337:75","nodeType":"YulBlock","src":"5493:337:75","statements":[{"nativeSrc":"5503:28:75","nodeType":"YulAssignment","src":"5503:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5515:9:75","nodeType":"YulIdentifier","src":"5515:9:75"},{"kind":"number","nativeSrc":"5526:4:75","nodeType":"YulLiteral","src":"5526:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"5511:3:75","nodeType":"YulIdentifier","src":"5511:3:75"},"nativeSrc":"5511:20:75","nodeType":"YulFunctionCall","src":"5511:20:75"},"variableNames":[{"name":"tail","nativeSrc":"5503:4:75","nodeType":"YulIdentifier","src":"5503:4:75"}]},{"nativeSrc":"5540:20:75","nodeType":"YulVariableDeclaration","src":"5540:20:75","value":{"name":"headStart","nativeSrc":"5551:9:75","nodeType":"YulIdentifier","src":"5551:9:75"},"variables":[{"name":"pos","nativeSrc":"5544:3:75","nodeType":"YulTypedName","src":"5544:3:75","type":""}]},{"nativeSrc":"5569:16:75","nodeType":"YulAssignment","src":"5569:16:75","value":{"name":"headStart","nativeSrc":"5576:9:75","nodeType":"YulIdentifier","src":"5576:9:75"},"variableNames":[{"name":"pos","nativeSrc":"5569:3:75","nodeType":"YulIdentifier","src":"5569:3:75"}]},{"nativeSrc":"5594:20:75","nodeType":"YulVariableDeclaration","src":"5594:20:75","value":{"name":"value0","nativeSrc":"5608:6:75","nodeType":"YulIdentifier","src":"5608:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"5598:6:75","nodeType":"YulTypedName","src":"5598:6:75","type":""}]},{"nativeSrc":"5623:10:75","nodeType":"YulVariableDeclaration","src":"5623:10:75","value":{"kind":"number","nativeSrc":"5632:1:75","nodeType":"YulLiteral","src":"5632:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5627:1:75","nodeType":"YulTypedName","src":"5627:1:75","type":""}]},{"body":{"nativeSrc":"5689:135:75","nodeType":"YulBlock","src":"5689:135:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"5710:3:75","nodeType":"YulIdentifier","src":"5710:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"5725:6:75","nodeType":"YulIdentifier","src":"5725:6:75"}],"functionName":{"name":"mload","nativeSrc":"5719:5:75","nodeType":"YulIdentifier","src":"5719:5:75"},"nativeSrc":"5719:13:75","nodeType":"YulFunctionCall","src":"5719:13:75"},{"kind":"number","nativeSrc":"5734:4:75","nodeType":"YulLiteral","src":"5734:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5715:3:75","nodeType":"YulIdentifier","src":"5715:3:75"},"nativeSrc":"5715:24:75","nodeType":"YulFunctionCall","src":"5715:24:75"}],"functionName":{"name":"mstore","nativeSrc":"5703:6:75","nodeType":"YulIdentifier","src":"5703:6:75"},"nativeSrc":"5703:37:75","nodeType":"YulFunctionCall","src":"5703:37:75"},"nativeSrc":"5703:37:75","nodeType":"YulExpressionStatement","src":"5703:37:75"},{"nativeSrc":"5753:21:75","nodeType":"YulAssignment","src":"5753:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"5764:3:75","nodeType":"YulIdentifier","src":"5764:3:75"},{"kind":"number","nativeSrc":"5769:4:75","nodeType":"YulLiteral","src":"5769:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5760:3:75","nodeType":"YulIdentifier","src":"5760:3:75"},"nativeSrc":"5760:14:75","nodeType":"YulFunctionCall","src":"5760:14:75"},"variableNames":[{"name":"pos","nativeSrc":"5753:3:75","nodeType":"YulIdentifier","src":"5753:3:75"}]},{"nativeSrc":"5787:27:75","nodeType":"YulAssignment","src":"5787:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"5801:6:75","nodeType":"YulIdentifier","src":"5801:6:75"},{"kind":"number","nativeSrc":"5809:4:75","nodeType":"YulLiteral","src":"5809:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5797:3:75","nodeType":"YulIdentifier","src":"5797:3:75"},"nativeSrc":"5797:17:75","nodeType":"YulFunctionCall","src":"5797:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"5787:6:75","nodeType":"YulIdentifier","src":"5787:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5653:1:75","nodeType":"YulIdentifier","src":"5653:1:75"},{"kind":"number","nativeSrc":"5656:4:75","nodeType":"YulLiteral","src":"5656:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"5650:2:75","nodeType":"YulIdentifier","src":"5650:2:75"},"nativeSrc":"5650:11:75","nodeType":"YulFunctionCall","src":"5650:11:75"},"nativeSrc":"5642:182:75","nodeType":"YulForLoop","post":{"nativeSrc":"5662:18:75","nodeType":"YulBlock","src":"5662:18:75","statements":[{"nativeSrc":"5664:14:75","nodeType":"YulAssignment","src":"5664:14:75","value":{"arguments":[{"name":"i","nativeSrc":"5673:1:75","nodeType":"YulIdentifier","src":"5673:1:75"},{"kind":"number","nativeSrc":"5676:1:75","nodeType":"YulLiteral","src":"5676:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5669:3:75","nodeType":"YulIdentifier","src":"5669:3:75"},"nativeSrc":"5669:9:75","nodeType":"YulFunctionCall","src":"5669:9:75"},"variableNames":[{"name":"i","nativeSrc":"5664:1:75","nodeType":"YulIdentifier","src":"5664:1:75"}]}]},"pre":{"nativeSrc":"5646:3:75","nodeType":"YulBlock","src":"5646:3:75","statements":[]},"src":"5642:182:75"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed","nativeSrc":"5348:482:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5462:9:75","nodeType":"YulTypedName","src":"5462:9:75","type":""},{"name":"value0","nativeSrc":"5473:6:75","nodeType":"YulTypedName","src":"5473:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5484:4:75","nodeType":"YulTypedName","src":"5484:4:75","type":""}],"src":"5348:482:75"},{"body":{"nativeSrc":"5936:76:75","nodeType":"YulBlock","src":"5936:76:75","statements":[{"nativeSrc":"5946:26:75","nodeType":"YulAssignment","src":"5946:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5958:9:75","nodeType":"YulIdentifier","src":"5958:9:75"},{"kind":"number","nativeSrc":"5969:2:75","nodeType":"YulLiteral","src":"5969:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5954:3:75","nodeType":"YulIdentifier","src":"5954:3:75"},"nativeSrc":"5954:18:75","nodeType":"YulFunctionCall","src":"5954:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5946:4:75","nodeType":"YulIdentifier","src":"5946:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5988:9:75","nodeType":"YulIdentifier","src":"5988:9:75"},{"name":"value0","nativeSrc":"5999:6:75","nodeType":"YulIdentifier","src":"5999:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5981:6:75","nodeType":"YulIdentifier","src":"5981:6:75"},"nativeSrc":"5981:25:75","nodeType":"YulFunctionCall","src":"5981:25:75"},"nativeSrc":"5981:25:75","nodeType":"YulExpressionStatement","src":"5981:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"5835:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5905:9:75","nodeType":"YulTypedName","src":"5905:9:75","type":""},{"name":"value0","nativeSrc":"5916:6:75","nodeType":"YulTypedName","src":"5916:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5927:4:75","nodeType":"YulTypedName","src":"5927:4:75","type":""}],"src":"5835:177:75"},{"body":{"nativeSrc":"6104:280:75","nodeType":"YulBlock","src":"6104:280:75","statements":[{"body":{"nativeSrc":"6150:16:75","nodeType":"YulBlock","src":"6150:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6159:1:75","nodeType":"YulLiteral","src":"6159:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6162:1:75","nodeType":"YulLiteral","src":"6162:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6152:6:75","nodeType":"YulIdentifier","src":"6152:6:75"},"nativeSrc":"6152:12:75","nodeType":"YulFunctionCall","src":"6152:12:75"},"nativeSrc":"6152:12:75","nodeType":"YulExpressionStatement","src":"6152:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6125:7:75","nodeType":"YulIdentifier","src":"6125:7:75"},{"name":"headStart","nativeSrc":"6134:9:75","nodeType":"YulIdentifier","src":"6134:9:75"}],"functionName":{"name":"sub","nativeSrc":"6121:3:75","nodeType":"YulIdentifier","src":"6121:3:75"},"nativeSrc":"6121:23:75","nodeType":"YulFunctionCall","src":"6121:23:75"},{"kind":"number","nativeSrc":"6146:2:75","nodeType":"YulLiteral","src":"6146:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6117:3:75","nodeType":"YulIdentifier","src":"6117:3:75"},"nativeSrc":"6117:32:75","nodeType":"YulFunctionCall","src":"6117:32:75"},"nativeSrc":"6114:52:75","nodeType":"YulIf","src":"6114:52:75"},{"nativeSrc":"6175:14:75","nodeType":"YulVariableDeclaration","src":"6175:14:75","value":{"kind":"number","nativeSrc":"6188:1:75","nodeType":"YulLiteral","src":"6188:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6179:5:75","nodeType":"YulTypedName","src":"6179:5:75","type":""}]},{"nativeSrc":"6198:32:75","nodeType":"YulAssignment","src":"6198:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:75","nodeType":"YulIdentifier","src":"6220:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6207:12:75","nodeType":"YulIdentifier","src":"6207:12:75"},"nativeSrc":"6207:23:75","nodeType":"YulFunctionCall","src":"6207:23:75"},"variableNames":[{"name":"value","nativeSrc":"6198:5:75","nodeType":"YulIdentifier","src":"6198:5:75"}]},{"nativeSrc":"6239:15:75","nodeType":"YulAssignment","src":"6239:15:75","value":{"name":"value","nativeSrc":"6249:5:75","nodeType":"YulIdentifier","src":"6249:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6239:6:75","nodeType":"YulIdentifier","src":"6239:6:75"}]},{"nativeSrc":"6263:47:75","nodeType":"YulVariableDeclaration","src":"6263:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6295:9:75","nodeType":"YulIdentifier","src":"6295:9:75"},{"kind":"number","nativeSrc":"6306:2:75","nodeType":"YulLiteral","src":"6306:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6291:3:75","nodeType":"YulIdentifier","src":"6291:3:75"},"nativeSrc":"6291:18:75","nodeType":"YulFunctionCall","src":"6291:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6278:12:75","nodeType":"YulIdentifier","src":"6278:12:75"},"nativeSrc":"6278:32:75","nodeType":"YulFunctionCall","src":"6278:32:75"},"variables":[{"name":"value_1","nativeSrc":"6267:7:75","nodeType":"YulTypedName","src":"6267:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6344:7:75","nodeType":"YulIdentifier","src":"6344:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6319:24:75","nodeType":"YulIdentifier","src":"6319:24:75"},"nativeSrc":"6319:33:75","nodeType":"YulFunctionCall","src":"6319:33:75"},"nativeSrc":"6319:33:75","nodeType":"YulExpressionStatement","src":"6319:33:75"},{"nativeSrc":"6361:17:75","nodeType":"YulAssignment","src":"6361:17:75","value":{"name":"value_1","nativeSrc":"6371:7:75","nodeType":"YulIdentifier","src":"6371:7:75"},"variableNames":[{"name":"value1","nativeSrc":"6361:6:75","nodeType":"YulIdentifier","src":"6361:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6017:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6062:9:75","nodeType":"YulTypedName","src":"6062:9:75","type":""},{"name":"dataEnd","nativeSrc":"6073:7:75","nodeType":"YulTypedName","src":"6073:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6085:6:75","nodeType":"YulTypedName","src":"6085:6:75","type":""},{"name":"value1","nativeSrc":"6093:6:75","nodeType":"YulTypedName","src":"6093:6:75","type":""}],"src":"6017:367:75"},{"body":{"nativeSrc":"6431:76:75","nodeType":"YulBlock","src":"6431:76:75","statements":[{"body":{"nativeSrc":"6485:16:75","nodeType":"YulBlock","src":"6485:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6494:1:75","nodeType":"YulLiteral","src":"6494:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6497:1:75","nodeType":"YulLiteral","src":"6497:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6487:6:75","nodeType":"YulIdentifier","src":"6487:6:75"},"nativeSrc":"6487:12:75","nodeType":"YulFunctionCall","src":"6487:12:75"},"nativeSrc":"6487:12:75","nodeType":"YulExpressionStatement","src":"6487:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6454:5:75","nodeType":"YulIdentifier","src":"6454:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6475:5:75","nodeType":"YulIdentifier","src":"6475:5:75"}],"functionName":{"name":"iszero","nativeSrc":"6468:6:75","nodeType":"YulIdentifier","src":"6468:6:75"},"nativeSrc":"6468:13:75","nodeType":"YulFunctionCall","src":"6468:13:75"}],"functionName":{"name":"iszero","nativeSrc":"6461:6:75","nodeType":"YulIdentifier","src":"6461:6:75"},"nativeSrc":"6461:21:75","nodeType":"YulFunctionCall","src":"6461:21:75"}],"functionName":{"name":"eq","nativeSrc":"6451:2:75","nodeType":"YulIdentifier","src":"6451:2:75"},"nativeSrc":"6451:32:75","nodeType":"YulFunctionCall","src":"6451:32:75"}],"functionName":{"name":"iszero","nativeSrc":"6444:6:75","nodeType":"YulIdentifier","src":"6444:6:75"},"nativeSrc":"6444:40:75","nodeType":"YulFunctionCall","src":"6444:40:75"},"nativeSrc":"6441:60:75","nodeType":"YulIf","src":"6441:60:75"}]},"name":"validator_revert_bool","nativeSrc":"6389:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6420:5:75","nodeType":"YulTypedName","src":"6420:5:75","type":""}],"src":"6389:118:75"},{"body":{"nativeSrc":"6662:536:75","nodeType":"YulBlock","src":"6662:536:75","statements":[{"body":{"nativeSrc":"6709:16:75","nodeType":"YulBlock","src":"6709:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6718:1:75","nodeType":"YulLiteral","src":"6718:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6721:1:75","nodeType":"YulLiteral","src":"6721:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6711:6:75","nodeType":"YulIdentifier","src":"6711:6:75"},"nativeSrc":"6711:12:75","nodeType":"YulFunctionCall","src":"6711:12:75"},"nativeSrc":"6711:12:75","nodeType":"YulExpressionStatement","src":"6711:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6683:7:75","nodeType":"YulIdentifier","src":"6683:7:75"},{"name":"headStart","nativeSrc":"6692:9:75","nodeType":"YulIdentifier","src":"6692:9:75"}],"functionName":{"name":"sub","nativeSrc":"6679:3:75","nodeType":"YulIdentifier","src":"6679:3:75"},"nativeSrc":"6679:23:75","nodeType":"YulFunctionCall","src":"6679:23:75"},{"kind":"number","nativeSrc":"6704:3:75","nodeType":"YulLiteral","src":"6704:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"6675:3:75","nodeType":"YulIdentifier","src":"6675:3:75"},"nativeSrc":"6675:33:75","nodeType":"YulFunctionCall","src":"6675:33:75"},"nativeSrc":"6672:53:75","nodeType":"YulIf","src":"6672:53:75"},{"nativeSrc":"6734:37:75","nodeType":"YulAssignment","src":"6734:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6761:9:75","nodeType":"YulIdentifier","src":"6761:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"6744:16:75","nodeType":"YulIdentifier","src":"6744:16:75"},"nativeSrc":"6744:27:75","nodeType":"YulFunctionCall","src":"6744:27:75"},"variableNames":[{"name":"value0","nativeSrc":"6734:6:75","nodeType":"YulIdentifier","src":"6734:6:75"}]},{"nativeSrc":"6780:45:75","nodeType":"YulVariableDeclaration","src":"6780:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6810:9:75","nodeType":"YulIdentifier","src":"6810:9:75"},{"kind":"number","nativeSrc":"6821:2:75","nodeType":"YulLiteral","src":"6821:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6806:3:75","nodeType":"YulIdentifier","src":"6806:3:75"},"nativeSrc":"6806:18:75","nodeType":"YulFunctionCall","src":"6806:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6793:12:75","nodeType":"YulIdentifier","src":"6793:12:75"},"nativeSrc":"6793:32:75","nodeType":"YulFunctionCall","src":"6793:32:75"},"variables":[{"name":"value","nativeSrc":"6784:5:75","nodeType":"YulTypedName","src":"6784:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6859:5:75","nodeType":"YulIdentifier","src":"6859:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6834:24:75","nodeType":"YulIdentifier","src":"6834:24:75"},"nativeSrc":"6834:31:75","nodeType":"YulFunctionCall","src":"6834:31:75"},"nativeSrc":"6834:31:75","nodeType":"YulExpressionStatement","src":"6834:31:75"},{"nativeSrc":"6874:15:75","nodeType":"YulAssignment","src":"6874:15:75","value":{"name":"value","nativeSrc":"6884:5:75","nodeType":"YulIdentifier","src":"6884:5:75"},"variableNames":[{"name":"value1","nativeSrc":"6874:6:75","nodeType":"YulIdentifier","src":"6874:6:75"}]},{"nativeSrc":"6898:46:75","nodeType":"YulVariableDeclaration","src":"6898:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6929:9:75","nodeType":"YulIdentifier","src":"6929:9:75"},{"kind":"number","nativeSrc":"6940:2:75","nodeType":"YulLiteral","src":"6940:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6925:3:75","nodeType":"YulIdentifier","src":"6925:3:75"},"nativeSrc":"6925:18:75","nodeType":"YulFunctionCall","src":"6925:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6912:12:75","nodeType":"YulIdentifier","src":"6912:12:75"},"nativeSrc":"6912:32:75","nodeType":"YulFunctionCall","src":"6912:32:75"},"variables":[{"name":"offset","nativeSrc":"6902:6:75","nodeType":"YulTypedName","src":"6902:6:75","type":""}]},{"body":{"nativeSrc":"6987:16:75","nodeType":"YulBlock","src":"6987:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6996:1:75","nodeType":"YulLiteral","src":"6996:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6999:1:75","nodeType":"YulLiteral","src":"6999:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6989:6:75","nodeType":"YulIdentifier","src":"6989:6:75"},"nativeSrc":"6989:12:75","nodeType":"YulFunctionCall","src":"6989:12:75"},"nativeSrc":"6989:12:75","nodeType":"YulExpressionStatement","src":"6989:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6959:6:75","nodeType":"YulIdentifier","src":"6959:6:75"},{"kind":"number","nativeSrc":"6967:18:75","nodeType":"YulLiteral","src":"6967:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6956:2:75","nodeType":"YulIdentifier","src":"6956:2:75"},"nativeSrc":"6956:30:75","nodeType":"YulFunctionCall","src":"6956:30:75"},"nativeSrc":"6953:50:75","nodeType":"YulIf","src":"6953:50:75"},{"nativeSrc":"7012:59:75","nodeType":"YulAssignment","src":"7012:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7043:9:75","nodeType":"YulIdentifier","src":"7043:9:75"},{"name":"offset","nativeSrc":"7054:6:75","nodeType":"YulIdentifier","src":"7054:6:75"}],"functionName":{"name":"add","nativeSrc":"7039:3:75","nodeType":"YulIdentifier","src":"7039:3:75"},"nativeSrc":"7039:22:75","nodeType":"YulFunctionCall","src":"7039:22:75"},{"name":"dataEnd","nativeSrc":"7063:7:75","nodeType":"YulIdentifier","src":"7063:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7022:16:75","nodeType":"YulIdentifier","src":"7022:16:75"},"nativeSrc":"7022:49:75","nodeType":"YulFunctionCall","src":"7022:49:75"},"variableNames":[{"name":"value2","nativeSrc":"7012:6:75","nodeType":"YulIdentifier","src":"7012:6:75"}]},{"nativeSrc":"7080:47:75","nodeType":"YulVariableDeclaration","src":"7080:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7112:9:75","nodeType":"YulIdentifier","src":"7112:9:75"},{"kind":"number","nativeSrc":"7123:2:75","nodeType":"YulLiteral","src":"7123:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7108:3:75","nodeType":"YulIdentifier","src":"7108:3:75"},"nativeSrc":"7108:18:75","nodeType":"YulFunctionCall","src":"7108:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7095:12:75","nodeType":"YulIdentifier","src":"7095:12:75"},"nativeSrc":"7095:32:75","nodeType":"YulFunctionCall","src":"7095:32:75"},"variables":[{"name":"value_1","nativeSrc":"7084:7:75","nodeType":"YulTypedName","src":"7084:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7158:7:75","nodeType":"YulIdentifier","src":"7158:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7136:21:75","nodeType":"YulIdentifier","src":"7136:21:75"},"nativeSrc":"7136:30:75","nodeType":"YulFunctionCall","src":"7136:30:75"},"nativeSrc":"7136:30:75","nodeType":"YulExpressionStatement","src":"7136:30:75"},{"nativeSrc":"7175:17:75","nodeType":"YulAssignment","src":"7175:17:75","value":{"name":"value_1","nativeSrc":"7185:7:75","nodeType":"YulIdentifier","src":"7185:7:75"},"variableNames":[{"name":"value3","nativeSrc":"7175:6:75","nodeType":"YulIdentifier","src":"7175:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool","nativeSrc":"6512:686:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6604:9:75","nodeType":"YulTypedName","src":"6604:9:75","type":""},{"name":"dataEnd","nativeSrc":"6615:7:75","nodeType":"YulTypedName","src":"6615:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6627:6:75","nodeType":"YulTypedName","src":"6627:6:75","type":""},{"name":"value1","nativeSrc":"6635:6:75","nodeType":"YulTypedName","src":"6635:6:75","type":""},{"name":"value2","nativeSrc":"6643:6:75","nodeType":"YulTypedName","src":"6643:6:75","type":""},{"name":"value3","nativeSrc":"6651:6:75","nodeType":"YulTypedName","src":"6651:6:75","type":""}],"src":"6512:686:75"},{"body":{"nativeSrc":"7324:359:75","nodeType":"YulBlock","src":"7324:359:75","statements":[{"body":{"nativeSrc":"7370:16:75","nodeType":"YulBlock","src":"7370:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7379:1:75","nodeType":"YulLiteral","src":"7379:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7382:1:75","nodeType":"YulLiteral","src":"7382:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7372:6:75","nodeType":"YulIdentifier","src":"7372:6:75"},"nativeSrc":"7372:12:75","nodeType":"YulFunctionCall","src":"7372:12:75"},"nativeSrc":"7372:12:75","nodeType":"YulExpressionStatement","src":"7372:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7345:7:75","nodeType":"YulIdentifier","src":"7345:7:75"},{"name":"headStart","nativeSrc":"7354:9:75","nodeType":"YulIdentifier","src":"7354:9:75"}],"functionName":{"name":"sub","nativeSrc":"7341:3:75","nodeType":"YulIdentifier","src":"7341:3:75"},"nativeSrc":"7341:23:75","nodeType":"YulFunctionCall","src":"7341:23:75"},{"kind":"number","nativeSrc":"7366:2:75","nodeType":"YulLiteral","src":"7366:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7337:3:75","nodeType":"YulIdentifier","src":"7337:3:75"},"nativeSrc":"7337:32:75","nodeType":"YulFunctionCall","src":"7337:32:75"},"nativeSrc":"7334:52:75","nodeType":"YulIf","src":"7334:52:75"},{"nativeSrc":"7395:36:75","nodeType":"YulVariableDeclaration","src":"7395:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7421:9:75","nodeType":"YulIdentifier","src":"7421:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7408:12:75","nodeType":"YulIdentifier","src":"7408:12:75"},"nativeSrc":"7408:23:75","nodeType":"YulFunctionCall","src":"7408:23:75"},"variables":[{"name":"value","nativeSrc":"7399:5:75","nodeType":"YulTypedName","src":"7399:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7465:5:75","nodeType":"YulIdentifier","src":"7465:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7440:24:75","nodeType":"YulIdentifier","src":"7440:24:75"},"nativeSrc":"7440:31:75","nodeType":"YulFunctionCall","src":"7440:31:75"},"nativeSrc":"7440:31:75","nodeType":"YulExpressionStatement","src":"7440:31:75"},{"nativeSrc":"7480:15:75","nodeType":"YulAssignment","src":"7480:15:75","value":{"name":"value","nativeSrc":"7490:5:75","nodeType":"YulIdentifier","src":"7490:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7480:6:75","nodeType":"YulIdentifier","src":"7480:6:75"}]},{"nativeSrc":"7504:46:75","nodeType":"YulVariableDeclaration","src":"7504:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7535:9:75","nodeType":"YulIdentifier","src":"7535:9:75"},{"kind":"number","nativeSrc":"7546:2:75","nodeType":"YulLiteral","src":"7546:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7531:3:75","nodeType":"YulIdentifier","src":"7531:3:75"},"nativeSrc":"7531:18:75","nodeType":"YulFunctionCall","src":"7531:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7518:12:75","nodeType":"YulIdentifier","src":"7518:12:75"},"nativeSrc":"7518:32:75","nodeType":"YulFunctionCall","src":"7518:32:75"},"variables":[{"name":"offset","nativeSrc":"7508:6:75","nodeType":"YulTypedName","src":"7508:6:75","type":""}]},{"body":{"nativeSrc":"7593:16:75","nodeType":"YulBlock","src":"7593:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7602:1:75","nodeType":"YulLiteral","src":"7602:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7605:1:75","nodeType":"YulLiteral","src":"7605:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7595:6:75","nodeType":"YulIdentifier","src":"7595:6:75"},"nativeSrc":"7595:12:75","nodeType":"YulFunctionCall","src":"7595:12:75"},"nativeSrc":"7595:12:75","nodeType":"YulExpressionStatement","src":"7595:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7565:6:75","nodeType":"YulIdentifier","src":"7565:6:75"},{"kind":"number","nativeSrc":"7573:18:75","nodeType":"YulLiteral","src":"7573:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7562:2:75","nodeType":"YulIdentifier","src":"7562:2:75"},"nativeSrc":"7562:30:75","nodeType":"YulFunctionCall","src":"7562:30:75"},"nativeSrc":"7559:50:75","nodeType":"YulIf","src":"7559:50:75"},{"nativeSrc":"7618:59:75","nodeType":"YulAssignment","src":"7618:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7649:9:75","nodeType":"YulIdentifier","src":"7649:9:75"},{"name":"offset","nativeSrc":"7660:6:75","nodeType":"YulIdentifier","src":"7660:6:75"}],"functionName":{"name":"add","nativeSrc":"7645:3:75","nodeType":"YulIdentifier","src":"7645:3:75"},"nativeSrc":"7645:22:75","nodeType":"YulFunctionCall","src":"7645:22:75"},{"name":"dataEnd","nativeSrc":"7669:7:75","nodeType":"YulIdentifier","src":"7669:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7628:16:75","nodeType":"YulIdentifier","src":"7628:16:75"},"nativeSrc":"7628:49:75","nodeType":"YulFunctionCall","src":"7628:49:75"},"variableNames":[{"name":"value1","nativeSrc":"7618:6:75","nodeType":"YulIdentifier","src":"7618:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr","nativeSrc":"7203:480:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7282:9:75","nodeType":"YulTypedName","src":"7282:9:75","type":""},{"name":"dataEnd","nativeSrc":"7293:7:75","nodeType":"YulTypedName","src":"7293:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7305:6:75","nodeType":"YulTypedName","src":"7305:6:75","type":""},{"name":"value1","nativeSrc":"7313:6:75","nodeType":"YulTypedName","src":"7313:6:75","type":""}],"src":"7203:480:75"},{"body":{"nativeSrc":"7771:169:75","nodeType":"YulBlock","src":"7771:169:75","statements":[{"body":{"nativeSrc":"7817:16:75","nodeType":"YulBlock","src":"7817:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7826:1:75","nodeType":"YulLiteral","src":"7826:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7829:1:75","nodeType":"YulLiteral","src":"7829:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7819:6:75","nodeType":"YulIdentifier","src":"7819:6:75"},"nativeSrc":"7819:12:75","nodeType":"YulFunctionCall","src":"7819:12:75"},"nativeSrc":"7819:12:75","nodeType":"YulExpressionStatement","src":"7819:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7792:7:75","nodeType":"YulIdentifier","src":"7792:7:75"},{"name":"headStart","nativeSrc":"7801:9:75","nodeType":"YulIdentifier","src":"7801:9:75"}],"functionName":{"name":"sub","nativeSrc":"7788:3:75","nodeType":"YulIdentifier","src":"7788:3:75"},"nativeSrc":"7788:23:75","nodeType":"YulFunctionCall","src":"7788:23:75"},{"kind":"number","nativeSrc":"7813:2:75","nodeType":"YulLiteral","src":"7813:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7784:3:75","nodeType":"YulIdentifier","src":"7784:3:75"},"nativeSrc":"7784:32:75","nodeType":"YulFunctionCall","src":"7784:32:75"},"nativeSrc":"7781:52:75","nodeType":"YulIf","src":"7781:52:75"},{"nativeSrc":"7842:37:75","nodeType":"YulAssignment","src":"7842:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7869:9:75","nodeType":"YulIdentifier","src":"7869:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7852:16:75","nodeType":"YulIdentifier","src":"7852:16:75"},"nativeSrc":"7852:27:75","nodeType":"YulFunctionCall","src":"7852:27:75"},"variableNames":[{"name":"value0","nativeSrc":"7842:6:75","nodeType":"YulIdentifier","src":"7842:6:75"}]},{"nativeSrc":"7888:46:75","nodeType":"YulAssignment","src":"7888:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7919:9:75","nodeType":"YulIdentifier","src":"7919:9:75"},{"kind":"number","nativeSrc":"7930:2:75","nodeType":"YulLiteral","src":"7930:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7915:3:75","nodeType":"YulIdentifier","src":"7915:3:75"},"nativeSrc":"7915:18:75","nodeType":"YulFunctionCall","src":"7915:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7898:16:75","nodeType":"YulIdentifier","src":"7898:16:75"},"nativeSrc":"7898:36:75","nodeType":"YulFunctionCall","src":"7898:36:75"},"variableNames":[{"name":"value1","nativeSrc":"7888:6:75","nodeType":"YulIdentifier","src":"7888:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8","nativeSrc":"7688:252:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7729:9:75","nodeType":"YulTypedName","src":"7729:9:75","type":""},{"name":"dataEnd","nativeSrc":"7740:7:75","nodeType":"YulTypedName","src":"7740:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7752:6:75","nodeType":"YulTypedName","src":"7752:6:75","type":""},{"name":"value1","nativeSrc":"7760:6:75","nodeType":"YulTypedName","src":"7760:6:75","type":""}],"src":"7688:252:75"},{"body":{"nativeSrc":"8044:103:75","nodeType":"YulBlock","src":"8044:103:75","statements":[{"nativeSrc":"8054:26:75","nodeType":"YulAssignment","src":"8054:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8066:9:75","nodeType":"YulIdentifier","src":"8066:9:75"},{"kind":"number","nativeSrc":"8077:2:75","nodeType":"YulLiteral","src":"8077:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8062:3:75","nodeType":"YulIdentifier","src":"8062:3:75"},"nativeSrc":"8062:18:75","nodeType":"YulFunctionCall","src":"8062:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8054:4:75","nodeType":"YulIdentifier","src":"8054:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8096:9:75","nodeType":"YulIdentifier","src":"8096:9:75"},{"arguments":[{"name":"value0","nativeSrc":"8111:6:75","nodeType":"YulIdentifier","src":"8111:6:75"},{"arguments":[{"kind":"number","nativeSrc":"8123:3:75","nodeType":"YulLiteral","src":"8123:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"8128:10:75","nodeType":"YulLiteral","src":"8128:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8119:3:75","nodeType":"YulIdentifier","src":"8119:3:75"},"nativeSrc":"8119:20:75","nodeType":"YulFunctionCall","src":"8119:20:75"}],"functionName":{"name":"and","nativeSrc":"8107:3:75","nodeType":"YulIdentifier","src":"8107:3:75"},"nativeSrc":"8107:33:75","nodeType":"YulFunctionCall","src":"8107:33:75"}],"functionName":{"name":"mstore","nativeSrc":"8089:6:75","nodeType":"YulIdentifier","src":"8089:6:75"},"nativeSrc":"8089:52:75","nodeType":"YulFunctionCall","src":"8089:52:75"},"nativeSrc":"8089:52:75","nodeType":"YulExpressionStatement","src":"8089:52:75"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"7945:202:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8013:9:75","nodeType":"YulTypedName","src":"8013:9:75","type":""},{"name":"value0","nativeSrc":"8024:6:75","nodeType":"YulTypedName","src":"8024:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8035:4:75","nodeType":"YulTypedName","src":"8035:4:75","type":""}],"src":"7945:202:75"},{"body":{"nativeSrc":"8219:114:75","nodeType":"YulBlock","src":"8219:114:75","statements":[{"body":{"nativeSrc":"8263:22:75","nodeType":"YulBlock","src":"8263:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"8265:16:75","nodeType":"YulIdentifier","src":"8265:16:75"},"nativeSrc":"8265:18:75","nodeType":"YulFunctionCall","src":"8265:18:75"},"nativeSrc":"8265:18:75","nodeType":"YulExpressionStatement","src":"8265:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"8235:6:75","nodeType":"YulIdentifier","src":"8235:6:75"},{"kind":"number","nativeSrc":"8243:18:75","nodeType":"YulLiteral","src":"8243:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8232:2:75","nodeType":"YulIdentifier","src":"8232:2:75"},"nativeSrc":"8232:30:75","nodeType":"YulFunctionCall","src":"8232:30:75"},"nativeSrc":"8229:56:75","nodeType":"YulIf","src":"8229:56:75"},{"nativeSrc":"8294:33:75","nodeType":"YulAssignment","src":"8294:33:75","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8310:1:75","nodeType":"YulLiteral","src":"8310:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"8313:6:75","nodeType":"YulIdentifier","src":"8313:6:75"}],"functionName":{"name":"shl","nativeSrc":"8306:3:75","nodeType":"YulIdentifier","src":"8306:3:75"},"nativeSrc":"8306:14:75","nodeType":"YulFunctionCall","src":"8306:14:75"},{"kind":"number","nativeSrc":"8322:4:75","nodeType":"YulLiteral","src":"8322:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8302:3:75","nodeType":"YulIdentifier","src":"8302:3:75"},"nativeSrc":"8302:25:75","nodeType":"YulFunctionCall","src":"8302:25:75"},"variableNames":[{"name":"size","nativeSrc":"8294:4:75","nodeType":"YulIdentifier","src":"8294:4:75"}]}]},"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"8152:181:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"8199:6:75","nodeType":"YulTypedName","src":"8199:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"8210:4:75","nodeType":"YulTypedName","src":"8210:4:75","type":""}],"src":"8152:181:75"},{"body":{"nativeSrc":"8400:607:75","nodeType":"YulBlock","src":"8400:607:75","statements":[{"body":{"nativeSrc":"8449:16:75","nodeType":"YulBlock","src":"8449:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8458:1:75","nodeType":"YulLiteral","src":"8458:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8461:1:75","nodeType":"YulLiteral","src":"8461:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8451:6:75","nodeType":"YulIdentifier","src":"8451:6:75"},"nativeSrc":"8451:12:75","nodeType":"YulFunctionCall","src":"8451:12:75"},"nativeSrc":"8451:12:75","nodeType":"YulExpressionStatement","src":"8451:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8428:6:75","nodeType":"YulIdentifier","src":"8428:6:75"},{"kind":"number","nativeSrc":"8436:4:75","nodeType":"YulLiteral","src":"8436:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8424:3:75","nodeType":"YulIdentifier","src":"8424:3:75"},"nativeSrc":"8424:17:75","nodeType":"YulFunctionCall","src":"8424:17:75"},{"name":"end","nativeSrc":"8443:3:75","nodeType":"YulIdentifier","src":"8443:3:75"}],"functionName":{"name":"slt","nativeSrc":"8420:3:75","nodeType":"YulIdentifier","src":"8420:3:75"},"nativeSrc":"8420:27:75","nodeType":"YulFunctionCall","src":"8420:27:75"}],"functionName":{"name":"iszero","nativeSrc":"8413:6:75","nodeType":"YulIdentifier","src":"8413:6:75"},"nativeSrc":"8413:35:75","nodeType":"YulFunctionCall","src":"8413:35:75"},"nativeSrc":"8410:55:75","nodeType":"YulIf","src":"8410:55:75"},{"nativeSrc":"8474:34:75","nodeType":"YulVariableDeclaration","src":"8474:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"8501:6:75","nodeType":"YulIdentifier","src":"8501:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"8488:12:75","nodeType":"YulIdentifier","src":"8488:12:75"},"nativeSrc":"8488:20:75","nodeType":"YulFunctionCall","src":"8488:20:75"},"variables":[{"name":"length","nativeSrc":"8478:6:75","nodeType":"YulTypedName","src":"8478:6:75","type":""}]},{"nativeSrc":"8517:73:75","nodeType":"YulVariableDeclaration","src":"8517:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8582:6:75","nodeType":"YulIdentifier","src":"8582:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"8544:37:75","nodeType":"YulIdentifier","src":"8544:37:75"},"nativeSrc":"8544:45:75","nodeType":"YulFunctionCall","src":"8544:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"8528:15:75","nodeType":"YulIdentifier","src":"8528:15:75"},"nativeSrc":"8528:62:75","nodeType":"YulFunctionCall","src":"8528:62:75"},"variables":[{"name":"dst","nativeSrc":"8521:3:75","nodeType":"YulTypedName","src":"8521:3:75","type":""}]},{"nativeSrc":"8599:18:75","nodeType":"YulVariableDeclaration","src":"8599:18:75","value":{"name":"dst","nativeSrc":"8614:3:75","nodeType":"YulIdentifier","src":"8614:3:75"},"variables":[{"name":"array_1","nativeSrc":"8603:7:75","nodeType":"YulTypedName","src":"8603:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"8633:3:75","nodeType":"YulIdentifier","src":"8633:3:75"},{"name":"length","nativeSrc":"8638:6:75","nodeType":"YulIdentifier","src":"8638:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8626:6:75","nodeType":"YulIdentifier","src":"8626:6:75"},"nativeSrc":"8626:19:75","nodeType":"YulFunctionCall","src":"8626:19:75"},"nativeSrc":"8626:19:75","nodeType":"YulExpressionStatement","src":"8626:19:75"},{"nativeSrc":"8654:21:75","nodeType":"YulAssignment","src":"8654:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"8665:3:75","nodeType":"YulIdentifier","src":"8665:3:75"},{"kind":"number","nativeSrc":"8670:4:75","nodeType":"YulLiteral","src":"8670:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8661:3:75","nodeType":"YulIdentifier","src":"8661:3:75"},"nativeSrc":"8661:14:75","nodeType":"YulFunctionCall","src":"8661:14:75"},"variableNames":[{"name":"dst","nativeSrc":"8654:3:75","nodeType":"YulIdentifier","src":"8654:3:75"}]},{"nativeSrc":"8684:52:75","nodeType":"YulVariableDeclaration","src":"8684:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8706:6:75","nodeType":"YulIdentifier","src":"8706:6:75"},{"arguments":[{"kind":"number","nativeSrc":"8718:1:75","nodeType":"YulLiteral","src":"8718:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"8721:6:75","nodeType":"YulIdentifier","src":"8721:6:75"}],"functionName":{"name":"shl","nativeSrc":"8714:3:75","nodeType":"YulIdentifier","src":"8714:3:75"},"nativeSrc":"8714:14:75","nodeType":"YulFunctionCall","src":"8714:14:75"}],"functionName":{"name":"add","nativeSrc":"8702:3:75","nodeType":"YulIdentifier","src":"8702:3:75"},"nativeSrc":"8702:27:75","nodeType":"YulFunctionCall","src":"8702:27:75"},{"kind":"number","nativeSrc":"8731:4:75","nodeType":"YulLiteral","src":"8731:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8698:3:75","nodeType":"YulIdentifier","src":"8698:3:75"},"nativeSrc":"8698:38:75","nodeType":"YulFunctionCall","src":"8698:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"8688:6:75","nodeType":"YulTypedName","src":"8688:6:75","type":""}]},{"body":{"nativeSrc":"8764:16:75","nodeType":"YulBlock","src":"8764:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8773:1:75","nodeType":"YulLiteral","src":"8773:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8776:1:75","nodeType":"YulLiteral","src":"8776:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8766:6:75","nodeType":"YulIdentifier","src":"8766:6:75"},"nativeSrc":"8766:12:75","nodeType":"YulFunctionCall","src":"8766:12:75"},"nativeSrc":"8766:12:75","nodeType":"YulExpressionStatement","src":"8766:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"8751:6:75","nodeType":"YulIdentifier","src":"8751:6:75"},{"name":"end","nativeSrc":"8759:3:75","nodeType":"YulIdentifier","src":"8759:3:75"}],"functionName":{"name":"gt","nativeSrc":"8748:2:75","nodeType":"YulIdentifier","src":"8748:2:75"},"nativeSrc":"8748:15:75","nodeType":"YulFunctionCall","src":"8748:15:75"},"nativeSrc":"8745:35:75","nodeType":"YulIf","src":"8745:35:75"},{"nativeSrc":"8789:28:75","nodeType":"YulVariableDeclaration","src":"8789:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"8804:6:75","nodeType":"YulIdentifier","src":"8804:6:75"},{"kind":"number","nativeSrc":"8812:4:75","nodeType":"YulLiteral","src":"8812:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8800:3:75","nodeType":"YulIdentifier","src":"8800:3:75"},"nativeSrc":"8800:17:75","nodeType":"YulFunctionCall","src":"8800:17:75"},"variables":[{"name":"src","nativeSrc":"8793:3:75","nodeType":"YulTypedName","src":"8793:3:75","type":""}]},{"body":{"nativeSrc":"8884:92:75","nodeType":"YulBlock","src":"8884:92:75","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"8905:3:75","nodeType":"YulIdentifier","src":"8905:3:75"},{"arguments":[{"name":"src","nativeSrc":"8927:3:75","nodeType":"YulIdentifier","src":"8927:3:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8910:16:75","nodeType":"YulIdentifier","src":"8910:16:75"},"nativeSrc":"8910:21:75","nodeType":"YulFunctionCall","src":"8910:21:75"}],"functionName":{"name":"mstore","nativeSrc":"8898:6:75","nodeType":"YulIdentifier","src":"8898:6:75"},"nativeSrc":"8898:34:75","nodeType":"YulFunctionCall","src":"8898:34:75"},"nativeSrc":"8898:34:75","nodeType":"YulExpressionStatement","src":"8898:34:75"},{"nativeSrc":"8945:21:75","nodeType":"YulAssignment","src":"8945:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"8956:3:75","nodeType":"YulIdentifier","src":"8956:3:75"},{"kind":"number","nativeSrc":"8961:4:75","nodeType":"YulLiteral","src":"8961:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8952:3:75","nodeType":"YulIdentifier","src":"8952:3:75"},"nativeSrc":"8952:14:75","nodeType":"YulFunctionCall","src":"8952:14:75"},"variableNames":[{"name":"dst","nativeSrc":"8945:3:75","nodeType":"YulIdentifier","src":"8945:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"8837:3:75","nodeType":"YulIdentifier","src":"8837:3:75"},{"name":"srcEnd","nativeSrc":"8842:6:75","nodeType":"YulIdentifier","src":"8842:6:75"}],"functionName":{"name":"lt","nativeSrc":"8834:2:75","nodeType":"YulIdentifier","src":"8834:2:75"},"nativeSrc":"8834:15:75","nodeType":"YulFunctionCall","src":"8834:15:75"},"nativeSrc":"8826:150:75","nodeType":"YulForLoop","post":{"nativeSrc":"8850:25:75","nodeType":"YulBlock","src":"8850:25:75","statements":[{"nativeSrc":"8852:21:75","nodeType":"YulAssignment","src":"8852:21:75","value":{"arguments":[{"name":"src","nativeSrc":"8863:3:75","nodeType":"YulIdentifier","src":"8863:3:75"},{"kind":"number","nativeSrc":"8868:4:75","nodeType":"YulLiteral","src":"8868:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8859:3:75","nodeType":"YulIdentifier","src":"8859:3:75"},"nativeSrc":"8859:14:75","nodeType":"YulFunctionCall","src":"8859:14:75"},"variableNames":[{"name":"src","nativeSrc":"8852:3:75","nodeType":"YulIdentifier","src":"8852:3:75"}]}]},"pre":{"nativeSrc":"8830:3:75","nodeType":"YulBlock","src":"8830:3:75","statements":[]},"src":"8826:150:75"},{"nativeSrc":"8985:16:75","nodeType":"YulAssignment","src":"8985:16:75","value":{"name":"array_1","nativeSrc":"8994:7:75","nodeType":"YulIdentifier","src":"8994:7:75"},"variableNames":[{"name":"array","nativeSrc":"8985:5:75","nodeType":"YulIdentifier","src":"8985:5:75"}]}]},"name":"abi_decode_array_uint8_dyn","nativeSrc":"8338:669:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8374:6:75","nodeType":"YulTypedName","src":"8374:6:75","type":""},{"name":"end","nativeSrc":"8382:3:75","nodeType":"YulTypedName","src":"8382:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"8390:5:75","nodeType":"YulTypedName","src":"8390:5:75","type":""}],"src":"8338:669:75"},{"body":{"nativeSrc":"9105:251:75","nodeType":"YulBlock","src":"9105:251:75","statements":[{"body":{"nativeSrc":"9151:16:75","nodeType":"YulBlock","src":"9151:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9160:1:75","nodeType":"YulLiteral","src":"9160:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9163:1:75","nodeType":"YulLiteral","src":"9163:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9153:6:75","nodeType":"YulIdentifier","src":"9153:6:75"},"nativeSrc":"9153:12:75","nodeType":"YulFunctionCall","src":"9153:12:75"},"nativeSrc":"9153:12:75","nodeType":"YulExpressionStatement","src":"9153:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9126:7:75","nodeType":"YulIdentifier","src":"9126:7:75"},{"name":"headStart","nativeSrc":"9135:9:75","nodeType":"YulIdentifier","src":"9135:9:75"}],"functionName":{"name":"sub","nativeSrc":"9122:3:75","nodeType":"YulIdentifier","src":"9122:3:75"},"nativeSrc":"9122:23:75","nodeType":"YulFunctionCall","src":"9122:23:75"},{"kind":"number","nativeSrc":"9147:2:75","nodeType":"YulLiteral","src":"9147:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9118:3:75","nodeType":"YulIdentifier","src":"9118:3:75"},"nativeSrc":"9118:32:75","nodeType":"YulFunctionCall","src":"9118:32:75"},"nativeSrc":"9115:52:75","nodeType":"YulIf","src":"9115:52:75"},{"nativeSrc":"9176:37:75","nodeType":"YulVariableDeclaration","src":"9176:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9203:9:75","nodeType":"YulIdentifier","src":"9203:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"9190:12:75","nodeType":"YulIdentifier","src":"9190:12:75"},"nativeSrc":"9190:23:75","nodeType":"YulFunctionCall","src":"9190:23:75"},"variables":[{"name":"offset","nativeSrc":"9180:6:75","nodeType":"YulTypedName","src":"9180:6:75","type":""}]},{"body":{"nativeSrc":"9256:16:75","nodeType":"YulBlock","src":"9256:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9265:1:75","nodeType":"YulLiteral","src":"9265:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9268:1:75","nodeType":"YulLiteral","src":"9268:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9258:6:75","nodeType":"YulIdentifier","src":"9258:6:75"},"nativeSrc":"9258:12:75","nodeType":"YulFunctionCall","src":"9258:12:75"},"nativeSrc":"9258:12:75","nodeType":"YulExpressionStatement","src":"9258:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9228:6:75","nodeType":"YulIdentifier","src":"9228:6:75"},{"kind":"number","nativeSrc":"9236:18:75","nodeType":"YulLiteral","src":"9236:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9225:2:75","nodeType":"YulIdentifier","src":"9225:2:75"},"nativeSrc":"9225:30:75","nodeType":"YulFunctionCall","src":"9225:30:75"},"nativeSrc":"9222:50:75","nodeType":"YulIf","src":"9222:50:75"},{"nativeSrc":"9281:69:75","nodeType":"YulAssignment","src":"9281:69:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9322:9:75","nodeType":"YulIdentifier","src":"9322:9:75"},{"name":"offset","nativeSrc":"9333:6:75","nodeType":"YulIdentifier","src":"9333:6:75"}],"functionName":{"name":"add","nativeSrc":"9318:3:75","nodeType":"YulIdentifier","src":"9318:3:75"},"nativeSrc":"9318:22:75","nodeType":"YulFunctionCall","src":"9318:22:75"},{"name":"dataEnd","nativeSrc":"9342:7:75","nodeType":"YulIdentifier","src":"9342:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"9291:26:75","nodeType":"YulIdentifier","src":"9291:26:75"},"nativeSrc":"9291:59:75","nodeType":"YulFunctionCall","src":"9291:59:75"},"variableNames":[{"name":"value0","nativeSrc":"9281:6:75","nodeType":"YulIdentifier","src":"9281:6:75"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"9012:344:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9071:9:75","nodeType":"YulTypedName","src":"9071:9:75","type":""},{"name":"dataEnd","nativeSrc":"9082:7:75","nodeType":"YulTypedName","src":"9082:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9094:6:75","nodeType":"YulTypedName","src":"9094:6:75","type":""}],"src":"9012:344:75"},{"body":{"nativeSrc":"9443:229:75","nodeType":"YulBlock","src":"9443:229:75","statements":[{"body":{"nativeSrc":"9489:16:75","nodeType":"YulBlock","src":"9489:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9498:1:75","nodeType":"YulLiteral","src":"9498:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9501:1:75","nodeType":"YulLiteral","src":"9501:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9491:6:75","nodeType":"YulIdentifier","src":"9491:6:75"},"nativeSrc":"9491:12:75","nodeType":"YulFunctionCall","src":"9491:12:75"},"nativeSrc":"9491:12:75","nodeType":"YulExpressionStatement","src":"9491:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9464:7:75","nodeType":"YulIdentifier","src":"9464:7:75"},{"name":"headStart","nativeSrc":"9473:9:75","nodeType":"YulIdentifier","src":"9473:9:75"}],"functionName":{"name":"sub","nativeSrc":"9460:3:75","nodeType":"YulIdentifier","src":"9460:3:75"},"nativeSrc":"9460:23:75","nodeType":"YulFunctionCall","src":"9460:23:75"},{"kind":"number","nativeSrc":"9485:2:75","nodeType":"YulLiteral","src":"9485:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9456:3:75","nodeType":"YulIdentifier","src":"9456:3:75"},"nativeSrc":"9456:32:75","nodeType":"YulFunctionCall","src":"9456:32:75"},"nativeSrc":"9453:52:75","nodeType":"YulIf","src":"9453:52:75"},{"nativeSrc":"9514:37:75","nodeType":"YulAssignment","src":"9514:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9541:9:75","nodeType":"YulIdentifier","src":"9541:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"9524:16:75","nodeType":"YulIdentifier","src":"9524:16:75"},"nativeSrc":"9524:27:75","nodeType":"YulFunctionCall","src":"9524:27:75"},"variableNames":[{"name":"value0","nativeSrc":"9514:6:75","nodeType":"YulIdentifier","src":"9514:6:75"}]},{"nativeSrc":"9560:45:75","nodeType":"YulVariableDeclaration","src":"9560:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9590:9:75","nodeType":"YulIdentifier","src":"9590:9:75"},{"kind":"number","nativeSrc":"9601:2:75","nodeType":"YulLiteral","src":"9601:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9586:3:75","nodeType":"YulIdentifier","src":"9586:3:75"},"nativeSrc":"9586:18:75","nodeType":"YulFunctionCall","src":"9586:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9573:12:75","nodeType":"YulIdentifier","src":"9573:12:75"},"nativeSrc":"9573:32:75","nodeType":"YulFunctionCall","src":"9573:32:75"},"variables":[{"name":"value","nativeSrc":"9564:5:75","nodeType":"YulTypedName","src":"9564:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9636:5:75","nodeType":"YulIdentifier","src":"9636:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"9614:21:75","nodeType":"YulIdentifier","src":"9614:21:75"},"nativeSrc":"9614:28:75","nodeType":"YulFunctionCall","src":"9614:28:75"},"nativeSrc":"9614:28:75","nodeType":"YulExpressionStatement","src":"9614:28:75"},{"nativeSrc":"9651:15:75","nodeType":"YulAssignment","src":"9651:15:75","value":{"name":"value","nativeSrc":"9661:5:75","nodeType":"YulIdentifier","src":"9661:5:75"},"variableNames":[{"name":"value1","nativeSrc":"9651:6:75","nodeType":"YulIdentifier","src":"9651:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bool","nativeSrc":"9361:311:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9401:9:75","nodeType":"YulTypedName","src":"9401:9:75","type":""},{"name":"dataEnd","nativeSrc":"9412:7:75","nodeType":"YulTypedName","src":"9412:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9424:6:75","nodeType":"YulTypedName","src":"9424:6:75","type":""},{"name":"value1","nativeSrc":"9432:6:75","nodeType":"YulTypedName","src":"9432:6:75","type":""}],"src":"9361:311:75"},{"body":{"nativeSrc":"9734:85:75","nodeType":"YulBlock","src":"9734:85:75","statements":[{"nativeSrc":"9744:29:75","nodeType":"YulAssignment","src":"9744:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"9766:6:75","nodeType":"YulIdentifier","src":"9766:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"9753:12:75","nodeType":"YulIdentifier","src":"9753:12:75"},"nativeSrc":"9753:20:75","nodeType":"YulFunctionCall","src":"9753:20:75"},"variableNames":[{"name":"value","nativeSrc":"9744:5:75","nodeType":"YulIdentifier","src":"9744:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9807:5:75","nodeType":"YulIdentifier","src":"9807:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9782:24:75","nodeType":"YulIdentifier","src":"9782:24:75"},"nativeSrc":"9782:31:75","nodeType":"YulFunctionCall","src":"9782:31:75"},"nativeSrc":"9782:31:75","nodeType":"YulExpressionStatement","src":"9782:31:75"}]},"name":"abi_decode_contract_IERC20","nativeSrc":"9677:142:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9713:6:75","nodeType":"YulTypedName","src":"9713:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"9724:5:75","nodeType":"YulTypedName","src":"9724:5:75","type":""}],"src":"9677:142:75"},{"body":{"nativeSrc":"9905:678:75","nodeType":"YulBlock","src":"9905:678:75","statements":[{"body":{"nativeSrc":"9954:16:75","nodeType":"YulBlock","src":"9954:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9963:1:75","nodeType":"YulLiteral","src":"9963:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9966:1:75","nodeType":"YulLiteral","src":"9966:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9956:6:75","nodeType":"YulIdentifier","src":"9956:6:75"},"nativeSrc":"9956:12:75","nodeType":"YulFunctionCall","src":"9956:12:75"},"nativeSrc":"9956:12:75","nodeType":"YulExpressionStatement","src":"9956:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9933:6:75","nodeType":"YulIdentifier","src":"9933:6:75"},{"kind":"number","nativeSrc":"9941:4:75","nodeType":"YulLiteral","src":"9941:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9929:3:75","nodeType":"YulIdentifier","src":"9929:3:75"},"nativeSrc":"9929:17:75","nodeType":"YulFunctionCall","src":"9929:17:75"},{"name":"end","nativeSrc":"9948:3:75","nodeType":"YulIdentifier","src":"9948:3:75"}],"functionName":{"name":"slt","nativeSrc":"9925:3:75","nodeType":"YulIdentifier","src":"9925:3:75"},"nativeSrc":"9925:27:75","nodeType":"YulFunctionCall","src":"9925:27:75"}],"functionName":{"name":"iszero","nativeSrc":"9918:6:75","nodeType":"YulIdentifier","src":"9918:6:75"},"nativeSrc":"9918:35:75","nodeType":"YulFunctionCall","src":"9918:35:75"},"nativeSrc":"9915:55:75","nodeType":"YulIf","src":"9915:55:75"},{"nativeSrc":"9979:34:75","nodeType":"YulVariableDeclaration","src":"9979:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"10006:6:75","nodeType":"YulIdentifier","src":"10006:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"9993:12:75","nodeType":"YulIdentifier","src":"9993:12:75"},"nativeSrc":"9993:20:75","nodeType":"YulFunctionCall","src":"9993:20:75"},"variables":[{"name":"length","nativeSrc":"9983:6:75","nodeType":"YulTypedName","src":"9983:6:75","type":""}]},{"nativeSrc":"10022:73:75","nodeType":"YulVariableDeclaration","src":"10022:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10087:6:75","nodeType":"YulIdentifier","src":"10087:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10049:37:75","nodeType":"YulIdentifier","src":"10049:37:75"},"nativeSrc":"10049:45:75","nodeType":"YulFunctionCall","src":"10049:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"10033:15:75","nodeType":"YulIdentifier","src":"10033:15:75"},"nativeSrc":"10033:62:75","nodeType":"YulFunctionCall","src":"10033:62:75"},"variables":[{"name":"dst","nativeSrc":"10026:3:75","nodeType":"YulTypedName","src":"10026:3:75","type":""}]},{"nativeSrc":"10104:18:75","nodeType":"YulVariableDeclaration","src":"10104:18:75","value":{"name":"dst","nativeSrc":"10119:3:75","nodeType":"YulIdentifier","src":"10119:3:75"},"variables":[{"name":"array_1","nativeSrc":"10108:7:75","nodeType":"YulTypedName","src":"10108:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10138:3:75","nodeType":"YulIdentifier","src":"10138:3:75"},{"name":"length","nativeSrc":"10143:6:75","nodeType":"YulIdentifier","src":"10143:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10131:6:75","nodeType":"YulIdentifier","src":"10131:6:75"},"nativeSrc":"10131:19:75","nodeType":"YulFunctionCall","src":"10131:19:75"},"nativeSrc":"10131:19:75","nodeType":"YulExpressionStatement","src":"10131:19:75"},{"nativeSrc":"10159:21:75","nodeType":"YulAssignment","src":"10159:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"10170:3:75","nodeType":"YulIdentifier","src":"10170:3:75"},{"kind":"number","nativeSrc":"10175:4:75","nodeType":"YulLiteral","src":"10175:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10166:3:75","nodeType":"YulIdentifier","src":"10166:3:75"},"nativeSrc":"10166:14:75","nodeType":"YulFunctionCall","src":"10166:14:75"},"variableNames":[{"name":"dst","nativeSrc":"10159:3:75","nodeType":"YulIdentifier","src":"10159:3:75"}]},{"nativeSrc":"10189:52:75","nodeType":"YulVariableDeclaration","src":"10189:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10211:6:75","nodeType":"YulIdentifier","src":"10211:6:75"},{"arguments":[{"kind":"number","nativeSrc":"10223:1:75","nodeType":"YulLiteral","src":"10223:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"10226:6:75","nodeType":"YulIdentifier","src":"10226:6:75"}],"functionName":{"name":"shl","nativeSrc":"10219:3:75","nodeType":"YulIdentifier","src":"10219:3:75"},"nativeSrc":"10219:14:75","nodeType":"YulFunctionCall","src":"10219:14:75"}],"functionName":{"name":"add","nativeSrc":"10207:3:75","nodeType":"YulIdentifier","src":"10207:3:75"},"nativeSrc":"10207:27:75","nodeType":"YulFunctionCall","src":"10207:27:75"},{"kind":"number","nativeSrc":"10236:4:75","nodeType":"YulLiteral","src":"10236:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10203:3:75","nodeType":"YulIdentifier","src":"10203:3:75"},"nativeSrc":"10203:38:75","nodeType":"YulFunctionCall","src":"10203:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"10193:6:75","nodeType":"YulTypedName","src":"10193:6:75","type":""}]},{"body":{"nativeSrc":"10269:16:75","nodeType":"YulBlock","src":"10269:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10278:1:75","nodeType":"YulLiteral","src":"10278:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10281:1:75","nodeType":"YulLiteral","src":"10281:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10271:6:75","nodeType":"YulIdentifier","src":"10271:6:75"},"nativeSrc":"10271:12:75","nodeType":"YulFunctionCall","src":"10271:12:75"},"nativeSrc":"10271:12:75","nodeType":"YulExpressionStatement","src":"10271:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"10256:6:75","nodeType":"YulIdentifier","src":"10256:6:75"},{"name":"end","nativeSrc":"10264:3:75","nodeType":"YulIdentifier","src":"10264:3:75"}],"functionName":{"name":"gt","nativeSrc":"10253:2:75","nodeType":"YulIdentifier","src":"10253:2:75"},"nativeSrc":"10253:15:75","nodeType":"YulFunctionCall","src":"10253:15:75"},"nativeSrc":"10250:35:75","nodeType":"YulIf","src":"10250:35:75"},{"nativeSrc":"10294:28:75","nodeType":"YulVariableDeclaration","src":"10294:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"10309:6:75","nodeType":"YulIdentifier","src":"10309:6:75"},{"kind":"number","nativeSrc":"10317:4:75","nodeType":"YulLiteral","src":"10317:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10305:3:75","nodeType":"YulIdentifier","src":"10305:3:75"},"nativeSrc":"10305:17:75","nodeType":"YulFunctionCall","src":"10305:17:75"},"variables":[{"name":"src","nativeSrc":"10298:3:75","nodeType":"YulTypedName","src":"10298:3:75","type":""}]},{"body":{"nativeSrc":"10389:163:75","nodeType":"YulBlock","src":"10389:163:75","statements":[{"nativeSrc":"10403:30:75","nodeType":"YulVariableDeclaration","src":"10403:30:75","value":{"arguments":[{"name":"src","nativeSrc":"10429:3:75","nodeType":"YulIdentifier","src":"10429:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"10416:12:75","nodeType":"YulIdentifier","src":"10416:12:75"},"nativeSrc":"10416:17:75","nodeType":"YulFunctionCall","src":"10416:17:75"},"variables":[{"name":"value","nativeSrc":"10407:5:75","nodeType":"YulTypedName","src":"10407:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10471:5:75","nodeType":"YulIdentifier","src":"10471:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10446:24:75","nodeType":"YulIdentifier","src":"10446:24:75"},"nativeSrc":"10446:31:75","nodeType":"YulFunctionCall","src":"10446:31:75"},"nativeSrc":"10446:31:75","nodeType":"YulExpressionStatement","src":"10446:31:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10497:3:75","nodeType":"YulIdentifier","src":"10497:3:75"},{"name":"value","nativeSrc":"10502:5:75","nodeType":"YulIdentifier","src":"10502:5:75"}],"functionName":{"name":"mstore","nativeSrc":"10490:6:75","nodeType":"YulIdentifier","src":"10490:6:75"},"nativeSrc":"10490:18:75","nodeType":"YulFunctionCall","src":"10490:18:75"},"nativeSrc":"10490:18:75","nodeType":"YulExpressionStatement","src":"10490:18:75"},{"nativeSrc":"10521:21:75","nodeType":"YulAssignment","src":"10521:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"10532:3:75","nodeType":"YulIdentifier","src":"10532:3:75"},{"kind":"number","nativeSrc":"10537:4:75","nodeType":"YulLiteral","src":"10537:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10528:3:75","nodeType":"YulIdentifier","src":"10528:3:75"},"nativeSrc":"10528:14:75","nodeType":"YulFunctionCall","src":"10528:14:75"},"variableNames":[{"name":"dst","nativeSrc":"10521:3:75","nodeType":"YulIdentifier","src":"10521:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"10342:3:75","nodeType":"YulIdentifier","src":"10342:3:75"},{"name":"srcEnd","nativeSrc":"10347:6:75","nodeType":"YulIdentifier","src":"10347:6:75"}],"functionName":{"name":"lt","nativeSrc":"10339:2:75","nodeType":"YulIdentifier","src":"10339:2:75"},"nativeSrc":"10339:15:75","nodeType":"YulFunctionCall","src":"10339:15:75"},"nativeSrc":"10331:221:75","nodeType":"YulForLoop","post":{"nativeSrc":"10355:25:75","nodeType":"YulBlock","src":"10355:25:75","statements":[{"nativeSrc":"10357:21:75","nodeType":"YulAssignment","src":"10357:21:75","value":{"arguments":[{"name":"src","nativeSrc":"10368:3:75","nodeType":"YulIdentifier","src":"10368:3:75"},{"kind":"number","nativeSrc":"10373:4:75","nodeType":"YulLiteral","src":"10373:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10364:3:75","nodeType":"YulIdentifier","src":"10364:3:75"},"nativeSrc":"10364:14:75","nodeType":"YulFunctionCall","src":"10364:14:75"},"variableNames":[{"name":"src","nativeSrc":"10357:3:75","nodeType":"YulIdentifier","src":"10357:3:75"}]}]},"pre":{"nativeSrc":"10335:3:75","nodeType":"YulBlock","src":"10335:3:75","statements":[]},"src":"10331:221:75"},{"nativeSrc":"10561:16:75","nodeType":"YulAssignment","src":"10561:16:75","value":{"name":"array_1","nativeSrc":"10570:7:75","nodeType":"YulIdentifier","src":"10570:7:75"},"variableNames":[{"name":"array","nativeSrc":"10561:5:75","nodeType":"YulIdentifier","src":"10561:5:75"}]}]},"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"9824:759:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9879:6:75","nodeType":"YulTypedName","src":"9879:6:75","type":""},{"name":"end","nativeSrc":"9887:3:75","nodeType":"YulTypedName","src":"9887:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"9895:5:75","nodeType":"YulTypedName","src":"9895:5:75","type":""}],"src":"9824:759:75"},{"body":{"nativeSrc":"10650:761:75","nodeType":"YulBlock","src":"10650:761:75","statements":[{"body":{"nativeSrc":"10699:16:75","nodeType":"YulBlock","src":"10699:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10708:1:75","nodeType":"YulLiteral","src":"10708:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10711:1:75","nodeType":"YulLiteral","src":"10711:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10701:6:75","nodeType":"YulIdentifier","src":"10701:6:75"},"nativeSrc":"10701:12:75","nodeType":"YulFunctionCall","src":"10701:12:75"},"nativeSrc":"10701:12:75","nodeType":"YulExpressionStatement","src":"10701:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10678:6:75","nodeType":"YulIdentifier","src":"10678:6:75"},{"kind":"number","nativeSrc":"10686:4:75","nodeType":"YulLiteral","src":"10686:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10674:3:75","nodeType":"YulIdentifier","src":"10674:3:75"},"nativeSrc":"10674:17:75","nodeType":"YulFunctionCall","src":"10674:17:75"},{"name":"end","nativeSrc":"10693:3:75","nodeType":"YulIdentifier","src":"10693:3:75"}],"functionName":{"name":"slt","nativeSrc":"10670:3:75","nodeType":"YulIdentifier","src":"10670:3:75"},"nativeSrc":"10670:27:75","nodeType":"YulFunctionCall","src":"10670:27:75"}],"functionName":{"name":"iszero","nativeSrc":"10663:6:75","nodeType":"YulIdentifier","src":"10663:6:75"},"nativeSrc":"10663:35:75","nodeType":"YulFunctionCall","src":"10663:35:75"},"nativeSrc":"10660:55:75","nodeType":"YulIf","src":"10660:55:75"},{"nativeSrc":"10724:34:75","nodeType":"YulVariableDeclaration","src":"10724:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"10751:6:75","nodeType":"YulIdentifier","src":"10751:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"10738:12:75","nodeType":"YulIdentifier","src":"10738:12:75"},"nativeSrc":"10738:20:75","nodeType":"YulFunctionCall","src":"10738:20:75"},"variables":[{"name":"length","nativeSrc":"10728:6:75","nodeType":"YulTypedName","src":"10728:6:75","type":""}]},{"nativeSrc":"10767:73:75","nodeType":"YulVariableDeclaration","src":"10767:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10832:6:75","nodeType":"YulIdentifier","src":"10832:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10794:37:75","nodeType":"YulIdentifier","src":"10794:37:75"},"nativeSrc":"10794:45:75","nodeType":"YulFunctionCall","src":"10794:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"10778:15:75","nodeType":"YulIdentifier","src":"10778:15:75"},"nativeSrc":"10778:62:75","nodeType":"YulFunctionCall","src":"10778:62:75"},"variables":[{"name":"dst","nativeSrc":"10771:3:75","nodeType":"YulTypedName","src":"10771:3:75","type":""}]},{"nativeSrc":"10849:18:75","nodeType":"YulVariableDeclaration","src":"10849:18:75","value":{"name":"dst","nativeSrc":"10864:3:75","nodeType":"YulIdentifier","src":"10864:3:75"},"variables":[{"name":"array_1","nativeSrc":"10853:7:75","nodeType":"YulTypedName","src":"10853:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10883:3:75","nodeType":"YulIdentifier","src":"10883:3:75"},{"name":"length","nativeSrc":"10888:6:75","nodeType":"YulIdentifier","src":"10888:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10876:6:75","nodeType":"YulIdentifier","src":"10876:6:75"},"nativeSrc":"10876:19:75","nodeType":"YulFunctionCall","src":"10876:19:75"},"nativeSrc":"10876:19:75","nodeType":"YulExpressionStatement","src":"10876:19:75"},{"nativeSrc":"10904:21:75","nodeType":"YulAssignment","src":"10904:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"10915:3:75","nodeType":"YulIdentifier","src":"10915:3:75"},{"kind":"number","nativeSrc":"10920:4:75","nodeType":"YulLiteral","src":"10920:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10911:3:75","nodeType":"YulIdentifier","src":"10911:3:75"},"nativeSrc":"10911:14:75","nodeType":"YulFunctionCall","src":"10911:14:75"},"variableNames":[{"name":"dst","nativeSrc":"10904:3:75","nodeType":"YulIdentifier","src":"10904:3:75"}]},{"nativeSrc":"10934:52:75","nodeType":"YulVariableDeclaration","src":"10934:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10956:6:75","nodeType":"YulIdentifier","src":"10956:6:75"},{"arguments":[{"kind":"number","nativeSrc":"10968:1:75","nodeType":"YulLiteral","src":"10968:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"10971:6:75","nodeType":"YulIdentifier","src":"10971:6:75"}],"functionName":{"name":"shl","nativeSrc":"10964:3:75","nodeType":"YulIdentifier","src":"10964:3:75"},"nativeSrc":"10964:14:75","nodeType":"YulFunctionCall","src":"10964:14:75"}],"functionName":{"name":"add","nativeSrc":"10952:3:75","nodeType":"YulIdentifier","src":"10952:3:75"},"nativeSrc":"10952:27:75","nodeType":"YulFunctionCall","src":"10952:27:75"},{"kind":"number","nativeSrc":"10981:4:75","nodeType":"YulLiteral","src":"10981:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10948:3:75","nodeType":"YulIdentifier","src":"10948:3:75"},"nativeSrc":"10948:38:75","nodeType":"YulFunctionCall","src":"10948:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"10938:6:75","nodeType":"YulTypedName","src":"10938:6:75","type":""}]},{"body":{"nativeSrc":"11014:16:75","nodeType":"YulBlock","src":"11014:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11023:1:75","nodeType":"YulLiteral","src":"11023:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11026:1:75","nodeType":"YulLiteral","src":"11026:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11016:6:75","nodeType":"YulIdentifier","src":"11016:6:75"},"nativeSrc":"11016:12:75","nodeType":"YulFunctionCall","src":"11016:12:75"},"nativeSrc":"11016:12:75","nodeType":"YulExpressionStatement","src":"11016:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"11001:6:75","nodeType":"YulIdentifier","src":"11001:6:75"},{"name":"end","nativeSrc":"11009:3:75","nodeType":"YulIdentifier","src":"11009:3:75"}],"functionName":{"name":"gt","nativeSrc":"10998:2:75","nodeType":"YulIdentifier","src":"10998:2:75"},"nativeSrc":"10998:15:75","nodeType":"YulFunctionCall","src":"10998:15:75"},"nativeSrc":"10995:35:75","nodeType":"YulIf","src":"10995:35:75"},{"nativeSrc":"11039:28:75","nodeType":"YulVariableDeclaration","src":"11039:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"11054:6:75","nodeType":"YulIdentifier","src":"11054:6:75"},{"kind":"number","nativeSrc":"11062:4:75","nodeType":"YulLiteral","src":"11062:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11050:3:75","nodeType":"YulIdentifier","src":"11050:3:75"},"nativeSrc":"11050:17:75","nodeType":"YulFunctionCall","src":"11050:17:75"},"variables":[{"name":"src","nativeSrc":"11043:3:75","nodeType":"YulTypedName","src":"11043:3:75","type":""}]},{"body":{"nativeSrc":"11134:246:75","nodeType":"YulBlock","src":"11134:246:75","statements":[{"nativeSrc":"11148:36:75","nodeType":"YulVariableDeclaration","src":"11148:36:75","value":{"arguments":[{"name":"src","nativeSrc":"11180:3:75","nodeType":"YulIdentifier","src":"11180:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"11167:12:75","nodeType":"YulIdentifier","src":"11167:12:75"},"nativeSrc":"11167:17:75","nodeType":"YulFunctionCall","src":"11167:17:75"},"variables":[{"name":"innerOffset","nativeSrc":"11152:11:75","nodeType":"YulTypedName","src":"11152:11:75","type":""}]},{"body":{"nativeSrc":"11236:16:75","nodeType":"YulBlock","src":"11236:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11245:1:75","nodeType":"YulLiteral","src":"11245:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11248:1:75","nodeType":"YulLiteral","src":"11248:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11238:6:75","nodeType":"YulIdentifier","src":"11238:6:75"},"nativeSrc":"11238:12:75","nodeType":"YulFunctionCall","src":"11238:12:75"},"nativeSrc":"11238:12:75","nodeType":"YulExpressionStatement","src":"11238:12:75"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"11203:11:75","nodeType":"YulIdentifier","src":"11203:11:75"},{"kind":"number","nativeSrc":"11216:18:75","nodeType":"YulLiteral","src":"11216:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11200:2:75","nodeType":"YulIdentifier","src":"11200:2:75"},"nativeSrc":"11200:35:75","nodeType":"YulFunctionCall","src":"11200:35:75"},"nativeSrc":"11197:55:75","nodeType":"YulIf","src":"11197:55:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"11272:3:75","nodeType":"YulIdentifier","src":"11272:3:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11302:6:75","nodeType":"YulIdentifier","src":"11302:6:75"},{"name":"innerOffset","nativeSrc":"11310:11:75","nodeType":"YulIdentifier","src":"11310:11:75"}],"functionName":{"name":"add","nativeSrc":"11298:3:75","nodeType":"YulIdentifier","src":"11298:3:75"},"nativeSrc":"11298:24:75","nodeType":"YulFunctionCall","src":"11298:24:75"},{"kind":"number","nativeSrc":"11324:4:75","nodeType":"YulLiteral","src":"11324:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11294:3:75","nodeType":"YulIdentifier","src":"11294:3:75"},"nativeSrc":"11294:35:75","nodeType":"YulFunctionCall","src":"11294:35:75"},{"name":"end","nativeSrc":"11331:3:75","nodeType":"YulIdentifier","src":"11331:3:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"11277:16:75","nodeType":"YulIdentifier","src":"11277:16:75"},"nativeSrc":"11277:58:75","nodeType":"YulFunctionCall","src":"11277:58:75"}],"functionName":{"name":"mstore","nativeSrc":"11265:6:75","nodeType":"YulIdentifier","src":"11265:6:75"},"nativeSrc":"11265:71:75","nodeType":"YulFunctionCall","src":"11265:71:75"},"nativeSrc":"11265:71:75","nodeType":"YulExpressionStatement","src":"11265:71:75"},{"nativeSrc":"11349:21:75","nodeType":"YulAssignment","src":"11349:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"11360:3:75","nodeType":"YulIdentifier","src":"11360:3:75"},{"kind":"number","nativeSrc":"11365:4:75","nodeType":"YulLiteral","src":"11365:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11356:3:75","nodeType":"YulIdentifier","src":"11356:3:75"},"nativeSrc":"11356:14:75","nodeType":"YulFunctionCall","src":"11356:14:75"},"variableNames":[{"name":"dst","nativeSrc":"11349:3:75","nodeType":"YulIdentifier","src":"11349:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"11087:3:75","nodeType":"YulIdentifier","src":"11087:3:75"},{"name":"srcEnd","nativeSrc":"11092:6:75","nodeType":"YulIdentifier","src":"11092:6:75"}],"functionName":{"name":"lt","nativeSrc":"11084:2:75","nodeType":"YulIdentifier","src":"11084:2:75"},"nativeSrc":"11084:15:75","nodeType":"YulFunctionCall","src":"11084:15:75"},"nativeSrc":"11076:304:75","nodeType":"YulForLoop","post":{"nativeSrc":"11100:25:75","nodeType":"YulBlock","src":"11100:25:75","statements":[{"nativeSrc":"11102:21:75","nodeType":"YulAssignment","src":"11102:21:75","value":{"arguments":[{"name":"src","nativeSrc":"11113:3:75","nodeType":"YulIdentifier","src":"11113:3:75"},{"kind":"number","nativeSrc":"11118:4:75","nodeType":"YulLiteral","src":"11118:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11109:3:75","nodeType":"YulIdentifier","src":"11109:3:75"},"nativeSrc":"11109:14:75","nodeType":"YulFunctionCall","src":"11109:14:75"},"variableNames":[{"name":"src","nativeSrc":"11102:3:75","nodeType":"YulIdentifier","src":"11102:3:75"}]}]},"pre":{"nativeSrc":"11080:3:75","nodeType":"YulBlock","src":"11080:3:75","statements":[]},"src":"11076:304:75"},{"nativeSrc":"11389:16:75","nodeType":"YulAssignment","src":"11389:16:75","value":{"name":"array_1","nativeSrc":"11398:7:75","nodeType":"YulIdentifier","src":"11398:7:75"},"variableNames":[{"name":"array","nativeSrc":"11389:5:75","nodeType":"YulIdentifier","src":"11389:5:75"}]}]},"name":"abi_decode_array_bytes_dyn","nativeSrc":"10588:823:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10624:6:75","nodeType":"YulTypedName","src":"10624:6:75","type":""},{"name":"end","nativeSrc":"10632:3:75","nodeType":"YulTypedName","src":"10632:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"10640:5:75","nodeType":"YulTypedName","src":"10640:5:75","type":""}],"src":"10588:823:75"},{"body":{"nativeSrc":"11753:1309:75","nodeType":"YulBlock","src":"11753:1309:75","statements":[{"body":{"nativeSrc":"11800:16:75","nodeType":"YulBlock","src":"11800:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11809:1:75","nodeType":"YulLiteral","src":"11809:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11812:1:75","nodeType":"YulLiteral","src":"11812:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11802:6:75","nodeType":"YulIdentifier","src":"11802:6:75"},"nativeSrc":"11802:12:75","nodeType":"YulFunctionCall","src":"11802:12:75"},"nativeSrc":"11802:12:75","nodeType":"YulExpressionStatement","src":"11802:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11774:7:75","nodeType":"YulIdentifier","src":"11774:7:75"},{"name":"headStart","nativeSrc":"11783:9:75","nodeType":"YulIdentifier","src":"11783:9:75"}],"functionName":{"name":"sub","nativeSrc":"11770:3:75","nodeType":"YulIdentifier","src":"11770:3:75"},"nativeSrc":"11770:23:75","nodeType":"YulFunctionCall","src":"11770:23:75"},{"kind":"number","nativeSrc":"11795:3:75","nodeType":"YulLiteral","src":"11795:3:75","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"11766:3:75","nodeType":"YulIdentifier","src":"11766:3:75"},"nativeSrc":"11766:33:75","nodeType":"YulFunctionCall","src":"11766:33:75"},"nativeSrc":"11763:53:75","nodeType":"YulIf","src":"11763:53:75"},{"nativeSrc":"11825:37:75","nodeType":"YulVariableDeclaration","src":"11825:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11852:9:75","nodeType":"YulIdentifier","src":"11852:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"11839:12:75","nodeType":"YulIdentifier","src":"11839:12:75"},"nativeSrc":"11839:23:75","nodeType":"YulFunctionCall","src":"11839:23:75"},"variables":[{"name":"offset","nativeSrc":"11829:6:75","nodeType":"YulTypedName","src":"11829:6:75","type":""}]},{"body":{"nativeSrc":"11905:16:75","nodeType":"YulBlock","src":"11905:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11914:1:75","nodeType":"YulLiteral","src":"11914:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11917:1:75","nodeType":"YulLiteral","src":"11917:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11907:6:75","nodeType":"YulIdentifier","src":"11907:6:75"},"nativeSrc":"11907:12:75","nodeType":"YulFunctionCall","src":"11907:12:75"},"nativeSrc":"11907:12:75","nodeType":"YulExpressionStatement","src":"11907:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11877:6:75","nodeType":"YulIdentifier","src":"11877:6:75"},{"kind":"number","nativeSrc":"11885:18:75","nodeType":"YulLiteral","src":"11885:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11874:2:75","nodeType":"YulIdentifier","src":"11874:2:75"},"nativeSrc":"11874:30:75","nodeType":"YulFunctionCall","src":"11874:30:75"},"nativeSrc":"11871:50:75","nodeType":"YulIf","src":"11871:50:75"},{"nativeSrc":"11930:59:75","nodeType":"YulAssignment","src":"11930:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11961:9:75","nodeType":"YulIdentifier","src":"11961:9:75"},{"name":"offset","nativeSrc":"11972:6:75","nodeType":"YulIdentifier","src":"11972:6:75"}],"functionName":{"name":"add","nativeSrc":"11957:3:75","nodeType":"YulIdentifier","src":"11957:3:75"},"nativeSrc":"11957:22:75","nodeType":"YulFunctionCall","src":"11957:22:75"},{"name":"dataEnd","nativeSrc":"11981:7:75","nodeType":"YulIdentifier","src":"11981:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"11940:16:75","nodeType":"YulIdentifier","src":"11940:16:75"},"nativeSrc":"11940:49:75","nodeType":"YulFunctionCall","src":"11940:49:75"},"variableNames":[{"name":"value0","nativeSrc":"11930:6:75","nodeType":"YulIdentifier","src":"11930:6:75"}]},{"nativeSrc":"11998:48:75","nodeType":"YulVariableDeclaration","src":"11998:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12031:9:75","nodeType":"YulIdentifier","src":"12031:9:75"},{"kind":"number","nativeSrc":"12042:2:75","nodeType":"YulLiteral","src":"12042:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12027:3:75","nodeType":"YulIdentifier","src":"12027:3:75"},"nativeSrc":"12027:18:75","nodeType":"YulFunctionCall","src":"12027:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"12014:12:75","nodeType":"YulIdentifier","src":"12014:12:75"},"nativeSrc":"12014:32:75","nodeType":"YulFunctionCall","src":"12014:32:75"},"variables":[{"name":"offset_1","nativeSrc":"12002:8:75","nodeType":"YulTypedName","src":"12002:8:75","type":""}]},{"body":{"nativeSrc":"12091:16:75","nodeType":"YulBlock","src":"12091:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12100:1:75","nodeType":"YulLiteral","src":"12100:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12103:1:75","nodeType":"YulLiteral","src":"12103:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12093:6:75","nodeType":"YulIdentifier","src":"12093:6:75"},"nativeSrc":"12093:12:75","nodeType":"YulFunctionCall","src":"12093:12:75"},"nativeSrc":"12093:12:75","nodeType":"YulExpressionStatement","src":"12093:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"12061:8:75","nodeType":"YulIdentifier","src":"12061:8:75"},{"kind":"number","nativeSrc":"12071:18:75","nodeType":"YulLiteral","src":"12071:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12058:2:75","nodeType":"YulIdentifier","src":"12058:2:75"},"nativeSrc":"12058:32:75","nodeType":"YulFunctionCall","src":"12058:32:75"},"nativeSrc":"12055:52:75","nodeType":"YulIf","src":"12055:52:75"},{"nativeSrc":"12116:61:75","nodeType":"YulAssignment","src":"12116:61:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12147:9:75","nodeType":"YulIdentifier","src":"12147:9:75"},{"name":"offset_1","nativeSrc":"12158:8:75","nodeType":"YulIdentifier","src":"12158:8:75"}],"functionName":{"name":"add","nativeSrc":"12143:3:75","nodeType":"YulIdentifier","src":"12143:3:75"},"nativeSrc":"12143:24:75","nodeType":"YulFunctionCall","src":"12143:24:75"},{"name":"dataEnd","nativeSrc":"12169:7:75","nodeType":"YulIdentifier","src":"12169:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"12126:16:75","nodeType":"YulIdentifier","src":"12126:16:75"},"nativeSrc":"12126:51:75","nodeType":"YulFunctionCall","src":"12126:51:75"},"variableNames":[{"name":"value1","nativeSrc":"12116:6:75","nodeType":"YulIdentifier","src":"12116:6:75"}]},{"nativeSrc":"12186:56:75","nodeType":"YulAssignment","src":"12186:56:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12227:9:75","nodeType":"YulIdentifier","src":"12227:9:75"},{"kind":"number","nativeSrc":"12238:2:75","nodeType":"YulLiteral","src":"12238:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12223:3:75","nodeType":"YulIdentifier","src":"12223:3:75"},"nativeSrc":"12223:18:75","nodeType":"YulFunctionCall","src":"12223:18:75"}],"functionName":{"name":"abi_decode_contract_IERC20","nativeSrc":"12196:26:75","nodeType":"YulIdentifier","src":"12196:26:75"},"nativeSrc":"12196:46:75","nodeType":"YulFunctionCall","src":"12196:46:75"},"variableNames":[{"name":"value2","nativeSrc":"12186:6:75","nodeType":"YulIdentifier","src":"12186:6:75"}]},{"nativeSrc":"12251:48:75","nodeType":"YulVariableDeclaration","src":"12251:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12284:9:75","nodeType":"YulIdentifier","src":"12284:9:75"},{"kind":"number","nativeSrc":"12295:2:75","nodeType":"YulLiteral","src":"12295:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12280:3:75","nodeType":"YulIdentifier","src":"12280:3:75"},"nativeSrc":"12280:18:75","nodeType":"YulFunctionCall","src":"12280:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"12267:12:75","nodeType":"YulIdentifier","src":"12267:12:75"},"nativeSrc":"12267:32:75","nodeType":"YulFunctionCall","src":"12267:32:75"},"variables":[{"name":"offset_2","nativeSrc":"12255:8:75","nodeType":"YulTypedName","src":"12255:8:75","type":""}]},{"body":{"nativeSrc":"12344:16:75","nodeType":"YulBlock","src":"12344:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12353:1:75","nodeType":"YulLiteral","src":"12353:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12356:1:75","nodeType":"YulLiteral","src":"12356:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12346:6:75","nodeType":"YulIdentifier","src":"12346:6:75"},"nativeSrc":"12346:12:75","nodeType":"YulFunctionCall","src":"12346:12:75"},"nativeSrc":"12346:12:75","nodeType":"YulExpressionStatement","src":"12346:12:75"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"12314:8:75","nodeType":"YulIdentifier","src":"12314:8:75"},{"kind":"number","nativeSrc":"12324:18:75","nodeType":"YulLiteral","src":"12324:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12311:2:75","nodeType":"YulIdentifier","src":"12311:2:75"},"nativeSrc":"12311:32:75","nodeType":"YulFunctionCall","src":"12311:32:75"},"nativeSrc":"12308:52:75","nodeType":"YulIf","src":"12308:52:75"},{"nativeSrc":"12369:90:75","nodeType":"YulAssignment","src":"12369:90:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12429:9:75","nodeType":"YulIdentifier","src":"12429:9:75"},{"name":"offset_2","nativeSrc":"12440:8:75","nodeType":"YulIdentifier","src":"12440:8:75"}],"functionName":{"name":"add","nativeSrc":"12425:3:75","nodeType":"YulIdentifier","src":"12425:3:75"},"nativeSrc":"12425:24:75","nodeType":"YulFunctionCall","src":"12425:24:75"},{"name":"dataEnd","nativeSrc":"12451:7:75","nodeType":"YulIdentifier","src":"12451:7:75"}],"functionName":{"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"12379:45:75","nodeType":"YulIdentifier","src":"12379:45:75"},"nativeSrc":"12379:80:75","nodeType":"YulFunctionCall","src":"12379:80:75"},"variableNames":[{"name":"value3","nativeSrc":"12369:6:75","nodeType":"YulIdentifier","src":"12369:6:75"}]},{"nativeSrc":"12468:49:75","nodeType":"YulVariableDeclaration","src":"12468:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12501:9:75","nodeType":"YulIdentifier","src":"12501:9:75"},{"kind":"number","nativeSrc":"12512:3:75","nodeType":"YulLiteral","src":"12512:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"12497:3:75","nodeType":"YulIdentifier","src":"12497:3:75"},"nativeSrc":"12497:19:75","nodeType":"YulFunctionCall","src":"12497:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"12484:12:75","nodeType":"YulIdentifier","src":"12484:12:75"},"nativeSrc":"12484:33:75","nodeType":"YulFunctionCall","src":"12484:33:75"},"variables":[{"name":"offset_3","nativeSrc":"12472:8:75","nodeType":"YulTypedName","src":"12472:8:75","type":""}]},{"body":{"nativeSrc":"12562:16:75","nodeType":"YulBlock","src":"12562:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12571:1:75","nodeType":"YulLiteral","src":"12571:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12574:1:75","nodeType":"YulLiteral","src":"12574:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12564:6:75","nodeType":"YulIdentifier","src":"12564:6:75"},"nativeSrc":"12564:12:75","nodeType":"YulFunctionCall","src":"12564:12:75"},"nativeSrc":"12564:12:75","nodeType":"YulExpressionStatement","src":"12564:12:75"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"12532:8:75","nodeType":"YulIdentifier","src":"12532:8:75"},{"kind":"number","nativeSrc":"12542:18:75","nodeType":"YulLiteral","src":"12542:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12529:2:75","nodeType":"YulIdentifier","src":"12529:2:75"},"nativeSrc":"12529:32:75","nodeType":"YulFunctionCall","src":"12529:32:75"},"nativeSrc":"12526:52:75","nodeType":"YulIf","src":"12526:52:75"},{"nativeSrc":"12587:71:75","nodeType":"YulAssignment","src":"12587:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12628:9:75","nodeType":"YulIdentifier","src":"12628:9:75"},{"name":"offset_3","nativeSrc":"12639:8:75","nodeType":"YulIdentifier","src":"12639:8:75"}],"functionName":{"name":"add","nativeSrc":"12624:3:75","nodeType":"YulIdentifier","src":"12624:3:75"},"nativeSrc":"12624:24:75","nodeType":"YulFunctionCall","src":"12624:24:75"},{"name":"dataEnd","nativeSrc":"12650:7:75","nodeType":"YulIdentifier","src":"12650:7:75"}],"functionName":{"name":"abi_decode_array_bytes_dyn","nativeSrc":"12597:26:75","nodeType":"YulIdentifier","src":"12597:26:75"},"nativeSrc":"12597:61:75","nodeType":"YulFunctionCall","src":"12597:61:75"},"variableNames":[{"name":"value4","nativeSrc":"12587:6:75","nodeType":"YulIdentifier","src":"12587:6:75"}]},{"nativeSrc":"12667:49:75","nodeType":"YulVariableDeclaration","src":"12667:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12700:9:75","nodeType":"YulIdentifier","src":"12700:9:75"},{"kind":"number","nativeSrc":"12711:3:75","nodeType":"YulLiteral","src":"12711:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"12696:3:75","nodeType":"YulIdentifier","src":"12696:3:75"},"nativeSrc":"12696:19:75","nodeType":"YulFunctionCall","src":"12696:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"12683:12:75","nodeType":"YulIdentifier","src":"12683:12:75"},"nativeSrc":"12683:33:75","nodeType":"YulFunctionCall","src":"12683:33:75"},"variables":[{"name":"offset_4","nativeSrc":"12671:8:75","nodeType":"YulTypedName","src":"12671:8:75","type":""}]},{"body":{"nativeSrc":"12761:16:75","nodeType":"YulBlock","src":"12761:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12770:1:75","nodeType":"YulLiteral","src":"12770:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12773:1:75","nodeType":"YulLiteral","src":"12773:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12763:6:75","nodeType":"YulIdentifier","src":"12763:6:75"},"nativeSrc":"12763:12:75","nodeType":"YulFunctionCall","src":"12763:12:75"},"nativeSrc":"12763:12:75","nodeType":"YulExpressionStatement","src":"12763:12:75"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"12731:8:75","nodeType":"YulIdentifier","src":"12731:8:75"},{"kind":"number","nativeSrc":"12741:18:75","nodeType":"YulLiteral","src":"12741:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12728:2:75","nodeType":"YulIdentifier","src":"12728:2:75"},"nativeSrc":"12728:32:75","nodeType":"YulFunctionCall","src":"12728:32:75"},"nativeSrc":"12725:52:75","nodeType":"YulIf","src":"12725:52:75"},{"nativeSrc":"12786:71:75","nodeType":"YulAssignment","src":"12786:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12827:9:75","nodeType":"YulIdentifier","src":"12827:9:75"},{"name":"offset_4","nativeSrc":"12838:8:75","nodeType":"YulIdentifier","src":"12838:8:75"}],"functionName":{"name":"add","nativeSrc":"12823:3:75","nodeType":"YulIdentifier","src":"12823:3:75"},"nativeSrc":"12823:24:75","nodeType":"YulFunctionCall","src":"12823:24:75"},{"name":"dataEnd","nativeSrc":"12849:7:75","nodeType":"YulIdentifier","src":"12849:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"12796:26:75","nodeType":"YulIdentifier","src":"12796:26:75"},"nativeSrc":"12796:61:75","nodeType":"YulFunctionCall","src":"12796:61:75"},"variableNames":[{"name":"value5","nativeSrc":"12786:6:75","nodeType":"YulIdentifier","src":"12786:6:75"}]},{"nativeSrc":"12866:49:75","nodeType":"YulVariableDeclaration","src":"12866:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12899:9:75","nodeType":"YulIdentifier","src":"12899:9:75"},{"kind":"number","nativeSrc":"12910:3:75","nodeType":"YulLiteral","src":"12910:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"12895:3:75","nodeType":"YulIdentifier","src":"12895:3:75"},"nativeSrc":"12895:19:75","nodeType":"YulFunctionCall","src":"12895:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"12882:12:75","nodeType":"YulIdentifier","src":"12882:12:75"},"nativeSrc":"12882:33:75","nodeType":"YulFunctionCall","src":"12882:33:75"},"variables":[{"name":"offset_5","nativeSrc":"12870:8:75","nodeType":"YulTypedName","src":"12870:8:75","type":""}]},{"body":{"nativeSrc":"12960:16:75","nodeType":"YulBlock","src":"12960:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12969:1:75","nodeType":"YulLiteral","src":"12969:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12972:1:75","nodeType":"YulLiteral","src":"12972:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12962:6:75","nodeType":"YulIdentifier","src":"12962:6:75"},"nativeSrc":"12962:12:75","nodeType":"YulFunctionCall","src":"12962:12:75"},"nativeSrc":"12962:12:75","nodeType":"YulExpressionStatement","src":"12962:12:75"}]},"condition":{"arguments":[{"name":"offset_5","nativeSrc":"12930:8:75","nodeType":"YulIdentifier","src":"12930:8:75"},{"kind":"number","nativeSrc":"12940:18:75","nodeType":"YulLiteral","src":"12940:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12927:2:75","nodeType":"YulIdentifier","src":"12927:2:75"},"nativeSrc":"12927:32:75","nodeType":"YulFunctionCall","src":"12927:32:75"},"nativeSrc":"12924:52:75","nodeType":"YulIf","src":"12924:52:75"},{"nativeSrc":"12985:71:75","nodeType":"YulAssignment","src":"12985:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13026:9:75","nodeType":"YulIdentifier","src":"13026:9:75"},{"name":"offset_5","nativeSrc":"13037:8:75","nodeType":"YulIdentifier","src":"13037:8:75"}],"functionName":{"name":"add","nativeSrc":"13022:3:75","nodeType":"YulIdentifier","src":"13022:3:75"},"nativeSrc":"13022:24:75","nodeType":"YulFunctionCall","src":"13022:24:75"},{"name":"dataEnd","nativeSrc":"13048:7:75","nodeType":"YulIdentifier","src":"13048:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"12995:26:75","nodeType":"YulIdentifier","src":"12995:26:75"},"nativeSrc":"12995:61:75","nodeType":"YulFunctionCall","src":"12995:61:75"},"variableNames":[{"name":"value6","nativeSrc":"12985:6:75","nodeType":"YulIdentifier","src":"12985:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11671:9:75","nodeType":"YulTypedName","src":"11671:9:75","type":""},{"name":"dataEnd","nativeSrc":"11682:7:75","nodeType":"YulTypedName","src":"11682:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11694:6:75","nodeType":"YulTypedName","src":"11694:6:75","type":""},{"name":"value1","nativeSrc":"11702:6:75","nodeType":"YulTypedName","src":"11702:6:75","type":""},{"name":"value2","nativeSrc":"11710:6:75","nodeType":"YulTypedName","src":"11710:6:75","type":""},{"name":"value3","nativeSrc":"11718:6:75","nodeType":"YulTypedName","src":"11718:6:75","type":""},{"name":"value4","nativeSrc":"11726:6:75","nodeType":"YulTypedName","src":"11726:6:75","type":""},{"name":"value5","nativeSrc":"11734:6:75","nodeType":"YulTypedName","src":"11734:6:75","type":""},{"name":"value6","nativeSrc":"11742:6:75","nodeType":"YulTypedName","src":"11742:6:75","type":""}],"src":"11416:1646:75"},{"body":{"nativeSrc":"13171:404:75","nodeType":"YulBlock","src":"13171:404:75","statements":[{"body":{"nativeSrc":"13217:16:75","nodeType":"YulBlock","src":"13217:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13226:1:75","nodeType":"YulLiteral","src":"13226:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13229:1:75","nodeType":"YulLiteral","src":"13229:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13219:6:75","nodeType":"YulIdentifier","src":"13219:6:75"},"nativeSrc":"13219:12:75","nodeType":"YulFunctionCall","src":"13219:12:75"},"nativeSrc":"13219:12:75","nodeType":"YulExpressionStatement","src":"13219:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13192:7:75","nodeType":"YulIdentifier","src":"13192:7:75"},{"name":"headStart","nativeSrc":"13201:9:75","nodeType":"YulIdentifier","src":"13201:9:75"}],"functionName":{"name":"sub","nativeSrc":"13188:3:75","nodeType":"YulIdentifier","src":"13188:3:75"},"nativeSrc":"13188:23:75","nodeType":"YulFunctionCall","src":"13188:23:75"},{"kind":"number","nativeSrc":"13213:2:75","nodeType":"YulLiteral","src":"13213:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"13184:3:75","nodeType":"YulIdentifier","src":"13184:3:75"},"nativeSrc":"13184:32:75","nodeType":"YulFunctionCall","src":"13184:32:75"},"nativeSrc":"13181:52:75","nodeType":"YulIf","src":"13181:52:75"},{"nativeSrc":"13242:14:75","nodeType":"YulVariableDeclaration","src":"13242:14:75","value":{"kind":"number","nativeSrc":"13255:1:75","nodeType":"YulLiteral","src":"13255:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"13246:5:75","nodeType":"YulTypedName","src":"13246:5:75","type":""}]},{"nativeSrc":"13265:32:75","nodeType":"YulAssignment","src":"13265:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13287:9:75","nodeType":"YulIdentifier","src":"13287:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"13274:12:75","nodeType":"YulIdentifier","src":"13274:12:75"},"nativeSrc":"13274:23:75","nodeType":"YulFunctionCall","src":"13274:23:75"},"variableNames":[{"name":"value","nativeSrc":"13265:5:75","nodeType":"YulIdentifier","src":"13265:5:75"}]},{"nativeSrc":"13306:15:75","nodeType":"YulAssignment","src":"13306:15:75","value":{"name":"value","nativeSrc":"13316:5:75","nodeType":"YulIdentifier","src":"13316:5:75"},"variableNames":[{"name":"value0","nativeSrc":"13306:6:75","nodeType":"YulIdentifier","src":"13306:6:75"}]},{"nativeSrc":"13330:47:75","nodeType":"YulVariableDeclaration","src":"13330:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13362:9:75","nodeType":"YulIdentifier","src":"13362:9:75"},{"kind":"number","nativeSrc":"13373:2:75","nodeType":"YulLiteral","src":"13373:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13358:3:75","nodeType":"YulIdentifier","src":"13358:3:75"},"nativeSrc":"13358:18:75","nodeType":"YulFunctionCall","src":"13358:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"13345:12:75","nodeType":"YulIdentifier","src":"13345:12:75"},"nativeSrc":"13345:32:75","nodeType":"YulFunctionCall","src":"13345:32:75"},"variables":[{"name":"value_1","nativeSrc":"13334:7:75","nodeType":"YulTypedName","src":"13334:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"13411:7:75","nodeType":"YulIdentifier","src":"13411:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13386:24:75","nodeType":"YulIdentifier","src":"13386:24:75"},"nativeSrc":"13386:33:75","nodeType":"YulFunctionCall","src":"13386:33:75"},"nativeSrc":"13386:33:75","nodeType":"YulExpressionStatement","src":"13386:33:75"},{"nativeSrc":"13428:17:75","nodeType":"YulAssignment","src":"13428:17:75","value":{"name":"value_1","nativeSrc":"13438:7:75","nodeType":"YulIdentifier","src":"13438:7:75"},"variableNames":[{"name":"value1","nativeSrc":"13428:6:75","nodeType":"YulIdentifier","src":"13428:6:75"}]},{"nativeSrc":"13454:47:75","nodeType":"YulVariableDeclaration","src":"13454:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13486:9:75","nodeType":"YulIdentifier","src":"13486:9:75"},{"kind":"number","nativeSrc":"13497:2:75","nodeType":"YulLiteral","src":"13497:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13482:3:75","nodeType":"YulIdentifier","src":"13482:3:75"},"nativeSrc":"13482:18:75","nodeType":"YulFunctionCall","src":"13482:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"13469:12:75","nodeType":"YulIdentifier","src":"13469:12:75"},"nativeSrc":"13469:32:75","nodeType":"YulFunctionCall","src":"13469:32:75"},"variables":[{"name":"value_2","nativeSrc":"13458:7:75","nodeType":"YulTypedName","src":"13458:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"13535:7:75","nodeType":"YulIdentifier","src":"13535:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13510:24:75","nodeType":"YulIdentifier","src":"13510:24:75"},"nativeSrc":"13510:33:75","nodeType":"YulFunctionCall","src":"13510:33:75"},"nativeSrc":"13510:33:75","nodeType":"YulExpressionStatement","src":"13510:33:75"},{"nativeSrc":"13552:17:75","nodeType":"YulAssignment","src":"13552:17:75","value":{"name":"value_2","nativeSrc":"13562:7:75","nodeType":"YulIdentifier","src":"13562:7:75"},"variableNames":[{"name":"value2","nativeSrc":"13552:6:75","nodeType":"YulIdentifier","src":"13552:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"13067:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13121:9:75","nodeType":"YulTypedName","src":"13121:9:75","type":""},{"name":"dataEnd","nativeSrc":"13132:7:75","nodeType":"YulTypedName","src":"13132:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13144:6:75","nodeType":"YulTypedName","src":"13144:6:75","type":""},{"name":"value1","nativeSrc":"13152:6:75","nodeType":"YulTypedName","src":"13152:6:75","type":""},{"name":"value2","nativeSrc":"13160:6:75","nodeType":"YulTypedName","src":"13160:6:75","type":""}],"src":"13067:508:75"},{"body":{"nativeSrc":"13754:352:75","nodeType":"YulBlock","src":"13754:352:75","statements":[{"nativeSrc":"13764:28:75","nodeType":"YulAssignment","src":"13764:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13776:9:75","nodeType":"YulIdentifier","src":"13776:9:75"},{"kind":"number","nativeSrc":"13787:4:75","nodeType":"YulLiteral","src":"13787:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"13772:3:75","nodeType":"YulIdentifier","src":"13772:3:75"},"nativeSrc":"13772:20:75","nodeType":"YulFunctionCall","src":"13772:20:75"},"variableNames":[{"name":"tail","nativeSrc":"13764:4:75","nodeType":"YulIdentifier","src":"13764:4:75"}]},{"nativeSrc":"13801:20:75","nodeType":"YulVariableDeclaration","src":"13801:20:75","value":{"name":"headStart","nativeSrc":"13812:9:75","nodeType":"YulIdentifier","src":"13812:9:75"},"variables":[{"name":"pos","nativeSrc":"13805:3:75","nodeType":"YulTypedName","src":"13805:3:75","type":""}]},{"nativeSrc":"13830:16:75","nodeType":"YulAssignment","src":"13830:16:75","value":{"name":"headStart","nativeSrc":"13837:9:75","nodeType":"YulIdentifier","src":"13837:9:75"},"variableNames":[{"name":"pos","nativeSrc":"13830:3:75","nodeType":"YulIdentifier","src":"13830:3:75"}]},{"nativeSrc":"13855:20:75","nodeType":"YulVariableDeclaration","src":"13855:20:75","value":{"name":"value0","nativeSrc":"13869:6:75","nodeType":"YulIdentifier","src":"13869:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"13859:6:75","nodeType":"YulTypedName","src":"13859:6:75","type":""}]},{"nativeSrc":"13884:10:75","nodeType":"YulVariableDeclaration","src":"13884:10:75","value":{"kind":"number","nativeSrc":"13893:1:75","nodeType":"YulLiteral","src":"13893:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"13888:1:75","nodeType":"YulTypedName","src":"13888:1:75","type":""}]},{"body":{"nativeSrc":"13950:150:75","nodeType":"YulBlock","src":"13950:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"13971:3:75","nodeType":"YulIdentifier","src":"13971:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"13986:6:75","nodeType":"YulIdentifier","src":"13986:6:75"}],"functionName":{"name":"mload","nativeSrc":"13980:5:75","nodeType":"YulIdentifier","src":"13980:5:75"},"nativeSrc":"13980:13:75","nodeType":"YulFunctionCall","src":"13980:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14003:3:75","nodeType":"YulLiteral","src":"14003:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"14008:1:75","nodeType":"YulLiteral","src":"14008:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13999:3:75","nodeType":"YulIdentifier","src":"13999:3:75"},"nativeSrc":"13999:11:75","nodeType":"YulFunctionCall","src":"13999:11:75"},{"kind":"number","nativeSrc":"14012:1:75","nodeType":"YulLiteral","src":"14012:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13995:3:75","nodeType":"YulIdentifier","src":"13995:3:75"},"nativeSrc":"13995:19:75","nodeType":"YulFunctionCall","src":"13995:19:75"}],"functionName":{"name":"and","nativeSrc":"13976:3:75","nodeType":"YulIdentifier","src":"13976:3:75"},"nativeSrc":"13976:39:75","nodeType":"YulFunctionCall","src":"13976:39:75"}],"functionName":{"name":"mstore","nativeSrc":"13964:6:75","nodeType":"YulIdentifier","src":"13964:6:75"},"nativeSrc":"13964:52:75","nodeType":"YulFunctionCall","src":"13964:52:75"},"nativeSrc":"13964:52:75","nodeType":"YulExpressionStatement","src":"13964:52:75"},{"nativeSrc":"14029:21:75","nodeType":"YulAssignment","src":"14029:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"14040:3:75","nodeType":"YulIdentifier","src":"14040:3:75"},{"kind":"number","nativeSrc":"14045:4:75","nodeType":"YulLiteral","src":"14045:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14036:3:75","nodeType":"YulIdentifier","src":"14036:3:75"},"nativeSrc":"14036:14:75","nodeType":"YulFunctionCall","src":"14036:14:75"},"variableNames":[{"name":"pos","nativeSrc":"14029:3:75","nodeType":"YulIdentifier","src":"14029:3:75"}]},{"nativeSrc":"14063:27:75","nodeType":"YulAssignment","src":"14063:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14077:6:75","nodeType":"YulIdentifier","src":"14077:6:75"},{"kind":"number","nativeSrc":"14085:4:75","nodeType":"YulLiteral","src":"14085:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14073:3:75","nodeType":"YulIdentifier","src":"14073:3:75"},"nativeSrc":"14073:17:75","nodeType":"YulFunctionCall","src":"14073:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"14063:6:75","nodeType":"YulIdentifier","src":"14063:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"13914:1:75","nodeType":"YulIdentifier","src":"13914:1:75"},{"kind":"number","nativeSrc":"13917:4:75","nodeType":"YulLiteral","src":"13917:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"13911:2:75","nodeType":"YulIdentifier","src":"13911:2:75"},"nativeSrc":"13911:11:75","nodeType":"YulFunctionCall","src":"13911:11:75"},"nativeSrc":"13903:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"13923:18:75","nodeType":"YulBlock","src":"13923:18:75","statements":[{"nativeSrc":"13925:14:75","nodeType":"YulAssignment","src":"13925:14:75","value":{"arguments":[{"name":"i","nativeSrc":"13934:1:75","nodeType":"YulIdentifier","src":"13934:1:75"},{"kind":"number","nativeSrc":"13937:1:75","nodeType":"YulLiteral","src":"13937:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13930:3:75","nodeType":"YulIdentifier","src":"13930:3:75"},"nativeSrc":"13930:9:75","nodeType":"YulFunctionCall","src":"13930:9:75"},"variableNames":[{"name":"i","nativeSrc":"13925:1:75","nodeType":"YulIdentifier","src":"13925:1:75"}]}]},"pre":{"nativeSrc":"13907:3:75","nodeType":"YulBlock","src":"13907:3:75","statements":[]},"src":"13903:197:75"}]},"name":"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed","nativeSrc":"13580:526:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13723:9:75","nodeType":"YulTypedName","src":"13723:9:75","type":""},{"name":"value0","nativeSrc":"13734:6:75","nodeType":"YulTypedName","src":"13734:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13745:4:75","nodeType":"YulTypedName","src":"13745:4:75","type":""}],"src":"13580:526:75"},{"body":{"nativeSrc":"14198:301:75","nodeType":"YulBlock","src":"14198:301:75","statements":[{"body":{"nativeSrc":"14244:16:75","nodeType":"YulBlock","src":"14244:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14253:1:75","nodeType":"YulLiteral","src":"14253:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14256:1:75","nodeType":"YulLiteral","src":"14256:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14246:6:75","nodeType":"YulIdentifier","src":"14246:6:75"},"nativeSrc":"14246:12:75","nodeType":"YulFunctionCall","src":"14246:12:75"},"nativeSrc":"14246:12:75","nodeType":"YulExpressionStatement","src":"14246:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14219:7:75","nodeType":"YulIdentifier","src":"14219:7:75"},{"name":"headStart","nativeSrc":"14228:9:75","nodeType":"YulIdentifier","src":"14228:9:75"}],"functionName":{"name":"sub","nativeSrc":"14215:3:75","nodeType":"YulIdentifier","src":"14215:3:75"},"nativeSrc":"14215:23:75","nodeType":"YulFunctionCall","src":"14215:23:75"},{"kind":"number","nativeSrc":"14240:2:75","nodeType":"YulLiteral","src":"14240:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14211:3:75","nodeType":"YulIdentifier","src":"14211:3:75"},"nativeSrc":"14211:32:75","nodeType":"YulFunctionCall","src":"14211:32:75"},"nativeSrc":"14208:52:75","nodeType":"YulIf","src":"14208:52:75"},{"nativeSrc":"14269:36:75","nodeType":"YulVariableDeclaration","src":"14269:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14295:9:75","nodeType":"YulIdentifier","src":"14295:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"14282:12:75","nodeType":"YulIdentifier","src":"14282:12:75"},"nativeSrc":"14282:23:75","nodeType":"YulFunctionCall","src":"14282:23:75"},"variables":[{"name":"value","nativeSrc":"14273:5:75","nodeType":"YulTypedName","src":"14273:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14339:5:75","nodeType":"YulIdentifier","src":"14339:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14314:24:75","nodeType":"YulIdentifier","src":"14314:24:75"},"nativeSrc":"14314:31:75","nodeType":"YulFunctionCall","src":"14314:31:75"},"nativeSrc":"14314:31:75","nodeType":"YulExpressionStatement","src":"14314:31:75"},{"nativeSrc":"14354:15:75","nodeType":"YulAssignment","src":"14354:15:75","value":{"name":"value","nativeSrc":"14364:5:75","nodeType":"YulIdentifier","src":"14364:5:75"},"variableNames":[{"name":"value0","nativeSrc":"14354:6:75","nodeType":"YulIdentifier","src":"14354:6:75"}]},{"nativeSrc":"14378:47:75","nodeType":"YulVariableDeclaration","src":"14378:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14410:9:75","nodeType":"YulIdentifier","src":"14410:9:75"},{"kind":"number","nativeSrc":"14421:2:75","nodeType":"YulLiteral","src":"14421:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14406:3:75","nodeType":"YulIdentifier","src":"14406:3:75"},"nativeSrc":"14406:18:75","nodeType":"YulFunctionCall","src":"14406:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"14393:12:75","nodeType":"YulIdentifier","src":"14393:12:75"},"nativeSrc":"14393:32:75","nodeType":"YulFunctionCall","src":"14393:32:75"},"variables":[{"name":"value_1","nativeSrc":"14382:7:75","nodeType":"YulTypedName","src":"14382:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14459:7:75","nodeType":"YulIdentifier","src":"14459:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14434:24:75","nodeType":"YulIdentifier","src":"14434:24:75"},"nativeSrc":"14434:33:75","nodeType":"YulFunctionCall","src":"14434:33:75"},"nativeSrc":"14434:33:75","nodeType":"YulExpressionStatement","src":"14434:33:75"},{"nativeSrc":"14476:17:75","nodeType":"YulAssignment","src":"14476:17:75","value":{"name":"value_1","nativeSrc":"14486:7:75","nodeType":"YulIdentifier","src":"14486:7:75"},"variableNames":[{"name":"value1","nativeSrc":"14476:6:75","nodeType":"YulIdentifier","src":"14476:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"14111:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14156:9:75","nodeType":"YulTypedName","src":"14156:9:75","type":""},{"name":"dataEnd","nativeSrc":"14167:7:75","nodeType":"YulTypedName","src":"14167:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14179:6:75","nodeType":"YulTypedName","src":"14179:6:75","type":""},{"name":"value1","nativeSrc":"14187:6:75","nodeType":"YulTypedName","src":"14187:6:75","type":""}],"src":"14111:388:75"},{"body":{"nativeSrc":"14604:266:75","nodeType":"YulBlock","src":"14604:266:75","statements":[{"body":{"nativeSrc":"14650:16:75","nodeType":"YulBlock","src":"14650:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14659:1:75","nodeType":"YulLiteral","src":"14659:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14662:1:75","nodeType":"YulLiteral","src":"14662:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14652:6:75","nodeType":"YulIdentifier","src":"14652:6:75"},"nativeSrc":"14652:12:75","nodeType":"YulFunctionCall","src":"14652:12:75"},"nativeSrc":"14652:12:75","nodeType":"YulExpressionStatement","src":"14652:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14625:7:75","nodeType":"YulIdentifier","src":"14625:7:75"},{"name":"headStart","nativeSrc":"14634:9:75","nodeType":"YulIdentifier","src":"14634:9:75"}],"functionName":{"name":"sub","nativeSrc":"14621:3:75","nodeType":"YulIdentifier","src":"14621:3:75"},"nativeSrc":"14621:23:75","nodeType":"YulFunctionCall","src":"14621:23:75"},{"kind":"number","nativeSrc":"14646:2:75","nodeType":"YulLiteral","src":"14646:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14617:3:75","nodeType":"YulIdentifier","src":"14617:3:75"},"nativeSrc":"14617:32:75","nodeType":"YulFunctionCall","src":"14617:32:75"},"nativeSrc":"14614:52:75","nodeType":"YulIf","src":"14614:52:75"},{"nativeSrc":"14675:37:75","nodeType":"YulAssignment","src":"14675:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14702:9:75","nodeType":"YulIdentifier","src":"14702:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"14685:16:75","nodeType":"YulIdentifier","src":"14685:16:75"},"nativeSrc":"14685:27:75","nodeType":"YulFunctionCall","src":"14685:27:75"},"variableNames":[{"name":"value0","nativeSrc":"14675:6:75","nodeType":"YulIdentifier","src":"14675:6:75"}]},{"nativeSrc":"14721:46:75","nodeType":"YulAssignment","src":"14721:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14752:9:75","nodeType":"YulIdentifier","src":"14752:9:75"},{"kind":"number","nativeSrc":"14763:2:75","nodeType":"YulLiteral","src":"14763:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14748:3:75","nodeType":"YulIdentifier","src":"14748:3:75"},"nativeSrc":"14748:18:75","nodeType":"YulFunctionCall","src":"14748:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"14731:16:75","nodeType":"YulIdentifier","src":"14731:16:75"},"nativeSrc":"14731:36:75","nodeType":"YulFunctionCall","src":"14731:36:75"},"variableNames":[{"name":"value1","nativeSrc":"14721:6:75","nodeType":"YulIdentifier","src":"14721:6:75"}]},{"nativeSrc":"14776:14:75","nodeType":"YulVariableDeclaration","src":"14776:14:75","value":{"kind":"number","nativeSrc":"14789:1:75","nodeType":"YulLiteral","src":"14789:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"14780:5:75","nodeType":"YulTypedName","src":"14780:5:75","type":""}]},{"nativeSrc":"14799:41:75","nodeType":"YulAssignment","src":"14799:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14825:9:75","nodeType":"YulIdentifier","src":"14825:9:75"},{"kind":"number","nativeSrc":"14836:2:75","nodeType":"YulLiteral","src":"14836:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14821:3:75","nodeType":"YulIdentifier","src":"14821:3:75"},"nativeSrc":"14821:18:75","nodeType":"YulFunctionCall","src":"14821:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"14808:12:75","nodeType":"YulIdentifier","src":"14808:12:75"},"nativeSrc":"14808:32:75","nodeType":"YulFunctionCall","src":"14808:32:75"},"variableNames":[{"name":"value","nativeSrc":"14799:5:75","nodeType":"YulIdentifier","src":"14799:5:75"}]},{"nativeSrc":"14849:15:75","nodeType":"YulAssignment","src":"14849:15:75","value":{"name":"value","nativeSrc":"14859:5:75","nodeType":"YulIdentifier","src":"14859:5:75"},"variableNames":[{"name":"value2","nativeSrc":"14849:6:75","nodeType":"YulIdentifier","src":"14849:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_uint256","nativeSrc":"14504:366:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14554:9:75","nodeType":"YulTypedName","src":"14554:9:75","type":""},{"name":"dataEnd","nativeSrc":"14565:7:75","nodeType":"YulTypedName","src":"14565:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14577:6:75","nodeType":"YulTypedName","src":"14577:6:75","type":""},{"name":"value1","nativeSrc":"14585:6:75","nodeType":"YulTypedName","src":"14585:6:75","type":""},{"name":"value2","nativeSrc":"14593:6:75","nodeType":"YulTypedName","src":"14593:6:75","type":""}],"src":"14504:366:75"},{"body":{"nativeSrc":"14930:325:75","nodeType":"YulBlock","src":"14930:325:75","statements":[{"nativeSrc":"14940:22:75","nodeType":"YulAssignment","src":"14940:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"14954:1:75","nodeType":"YulLiteral","src":"14954:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"14957:4:75","nodeType":"YulIdentifier","src":"14957:4:75"}],"functionName":{"name":"shr","nativeSrc":"14950:3:75","nodeType":"YulIdentifier","src":"14950:3:75"},"nativeSrc":"14950:12:75","nodeType":"YulFunctionCall","src":"14950:12:75"},"variableNames":[{"name":"length","nativeSrc":"14940:6:75","nodeType":"YulIdentifier","src":"14940:6:75"}]},{"nativeSrc":"14971:38:75","nodeType":"YulVariableDeclaration","src":"14971:38:75","value":{"arguments":[{"name":"data","nativeSrc":"15001:4:75","nodeType":"YulIdentifier","src":"15001:4:75"},{"kind":"number","nativeSrc":"15007:1:75","nodeType":"YulLiteral","src":"15007:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14997:3:75","nodeType":"YulIdentifier","src":"14997:3:75"},"nativeSrc":"14997:12:75","nodeType":"YulFunctionCall","src":"14997:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"14975:18:75","nodeType":"YulTypedName","src":"14975:18:75","type":""}]},{"body":{"nativeSrc":"15048:31:75","nodeType":"YulBlock","src":"15048:31:75","statements":[{"nativeSrc":"15050:27:75","nodeType":"YulAssignment","src":"15050:27:75","value":{"arguments":[{"name":"length","nativeSrc":"15064:6:75","nodeType":"YulIdentifier","src":"15064:6:75"},{"kind":"number","nativeSrc":"15072:4:75","nodeType":"YulLiteral","src":"15072:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"15060:3:75","nodeType":"YulIdentifier","src":"15060:3:75"},"nativeSrc":"15060:17:75","nodeType":"YulFunctionCall","src":"15060:17:75"},"variableNames":[{"name":"length","nativeSrc":"15050:6:75","nodeType":"YulIdentifier","src":"15050:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15028:18:75","nodeType":"YulIdentifier","src":"15028:18:75"}],"functionName":{"name":"iszero","nativeSrc":"15021:6:75","nodeType":"YulIdentifier","src":"15021:6:75"},"nativeSrc":"15021:26:75","nodeType":"YulFunctionCall","src":"15021:26:75"},"nativeSrc":"15018:61:75","nodeType":"YulIf","src":"15018:61:75"},{"body":{"nativeSrc":"15138:111:75","nodeType":"YulBlock","src":"15138:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15159:1:75","nodeType":"YulLiteral","src":"15159:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15166:3:75","nodeType":"YulLiteral","src":"15166:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15171:10:75","nodeType":"YulLiteral","src":"15171:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15162:3:75","nodeType":"YulIdentifier","src":"15162:3:75"},"nativeSrc":"15162:20:75","nodeType":"YulFunctionCall","src":"15162:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15152:6:75","nodeType":"YulIdentifier","src":"15152:6:75"},"nativeSrc":"15152:31:75","nodeType":"YulFunctionCall","src":"15152:31:75"},"nativeSrc":"15152:31:75","nodeType":"YulExpressionStatement","src":"15152:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15203:1:75","nodeType":"YulLiteral","src":"15203:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15206:4:75","nodeType":"YulLiteral","src":"15206:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"15196:6:75","nodeType":"YulIdentifier","src":"15196:6:75"},"nativeSrc":"15196:15:75","nodeType":"YulFunctionCall","src":"15196:15:75"},"nativeSrc":"15196:15:75","nodeType":"YulExpressionStatement","src":"15196:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15231:1:75","nodeType":"YulLiteral","src":"15231:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15234:4:75","nodeType":"YulLiteral","src":"15234:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15224:6:75","nodeType":"YulIdentifier","src":"15224:6:75"},"nativeSrc":"15224:15:75","nodeType":"YulFunctionCall","src":"15224:15:75"},"nativeSrc":"15224:15:75","nodeType":"YulExpressionStatement","src":"15224:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15094:18:75","nodeType":"YulIdentifier","src":"15094:18:75"},{"arguments":[{"name":"length","nativeSrc":"15117:6:75","nodeType":"YulIdentifier","src":"15117:6:75"},{"kind":"number","nativeSrc":"15125:2:75","nodeType":"YulLiteral","src":"15125:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"15114:2:75","nodeType":"YulIdentifier","src":"15114:2:75"},"nativeSrc":"15114:14:75","nodeType":"YulFunctionCall","src":"15114:14:75"}],"functionName":{"name":"eq","nativeSrc":"15091:2:75","nodeType":"YulIdentifier","src":"15091:2:75"},"nativeSrc":"15091:38:75","nodeType":"YulFunctionCall","src":"15091:38:75"},"nativeSrc":"15088:161:75","nodeType":"YulIf","src":"15088:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"14875:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14910:4:75","nodeType":"YulTypedName","src":"14910:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"14919:6:75","nodeType":"YulTypedName","src":"14919:6:75","type":""}],"src":"14875:380:75"},{"body":{"nativeSrc":"15292:95:75","nodeType":"YulBlock","src":"15292:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15309:1:75","nodeType":"YulLiteral","src":"15309:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15316:3:75","nodeType":"YulLiteral","src":"15316:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15321:10:75","nodeType":"YulLiteral","src":"15321:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15312:3:75","nodeType":"YulIdentifier","src":"15312:3:75"},"nativeSrc":"15312:20:75","nodeType":"YulFunctionCall","src":"15312:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15302:6:75","nodeType":"YulIdentifier","src":"15302:6:75"},"nativeSrc":"15302:31:75","nodeType":"YulFunctionCall","src":"15302:31:75"},"nativeSrc":"15302:31:75","nodeType":"YulExpressionStatement","src":"15302:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15349:1:75","nodeType":"YulLiteral","src":"15349:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15352:4:75","nodeType":"YulLiteral","src":"15352:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15342:6:75","nodeType":"YulIdentifier","src":"15342:6:75"},"nativeSrc":"15342:15:75","nodeType":"YulFunctionCall","src":"15342:15:75"},"nativeSrc":"15342:15:75","nodeType":"YulExpressionStatement","src":"15342:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15373:1:75","nodeType":"YulLiteral","src":"15373:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15376:4:75","nodeType":"YulLiteral","src":"15376:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15366:6:75","nodeType":"YulIdentifier","src":"15366:6:75"},"nativeSrc":"15366:15:75","nodeType":"YulFunctionCall","src":"15366:15:75"},"nativeSrc":"15366:15:75","nodeType":"YulExpressionStatement","src":"15366:15:75"}]},"name":"panic_error_0x11","nativeSrc":"15260:127:75","nodeType":"YulFunctionDefinition","src":"15260:127:75"},{"body":{"nativeSrc":"15438:102:75","nodeType":"YulBlock","src":"15438:102:75","statements":[{"nativeSrc":"15448:38:75","nodeType":"YulAssignment","src":"15448:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"15463:1:75","nodeType":"YulIdentifier","src":"15463:1:75"},{"kind":"number","nativeSrc":"15466:4:75","nodeType":"YulLiteral","src":"15466:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15459:3:75","nodeType":"YulIdentifier","src":"15459:3:75"},"nativeSrc":"15459:12:75","nodeType":"YulFunctionCall","src":"15459:12:75"},{"arguments":[{"name":"y","nativeSrc":"15477:1:75","nodeType":"YulIdentifier","src":"15477:1:75"},{"kind":"number","nativeSrc":"15480:4:75","nodeType":"YulLiteral","src":"15480:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15473:3:75","nodeType":"YulIdentifier","src":"15473:3:75"},"nativeSrc":"15473:12:75","nodeType":"YulFunctionCall","src":"15473:12:75"}],"functionName":{"name":"add","nativeSrc":"15455:3:75","nodeType":"YulIdentifier","src":"15455:3:75"},"nativeSrc":"15455:31:75","nodeType":"YulFunctionCall","src":"15455:31:75"},"variableNames":[{"name":"sum","nativeSrc":"15448:3:75","nodeType":"YulIdentifier","src":"15448:3:75"}]},{"body":{"nativeSrc":"15512:22:75","nodeType":"YulBlock","src":"15512:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15514:16:75","nodeType":"YulIdentifier","src":"15514:16:75"},"nativeSrc":"15514:18:75","nodeType":"YulFunctionCall","src":"15514:18:75"},"nativeSrc":"15514:18:75","nodeType":"YulExpressionStatement","src":"15514:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"15501:3:75","nodeType":"YulIdentifier","src":"15501:3:75"},{"kind":"number","nativeSrc":"15506:4:75","nodeType":"YulLiteral","src":"15506:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"15498:2:75","nodeType":"YulIdentifier","src":"15498:2:75"},"nativeSrc":"15498:13:75","nodeType":"YulFunctionCall","src":"15498:13:75"},"nativeSrc":"15495:39:75","nodeType":"YulIf","src":"15495:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"15392:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15421:1:75","nodeType":"YulTypedName","src":"15421:1:75","type":""},{"name":"y","nativeSrc":"15424:1:75","nodeType":"YulTypedName","src":"15424:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"15430:3:75","nodeType":"YulTypedName","src":"15430:3:75","type":""}],"src":"15392:148:75"},{"body":{"nativeSrc":"15577:95:75","nodeType":"YulBlock","src":"15577:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15594:1:75","nodeType":"YulLiteral","src":"15594:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15601:3:75","nodeType":"YulLiteral","src":"15601:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15606:10:75","nodeType":"YulLiteral","src":"15606:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15597:3:75","nodeType":"YulIdentifier","src":"15597:3:75"},"nativeSrc":"15597:20:75","nodeType":"YulFunctionCall","src":"15597:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15587:6:75","nodeType":"YulIdentifier","src":"15587:6:75"},"nativeSrc":"15587:31:75","nodeType":"YulFunctionCall","src":"15587:31:75"},"nativeSrc":"15587:31:75","nodeType":"YulExpressionStatement","src":"15587:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15634:1:75","nodeType":"YulLiteral","src":"15634:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15637:4:75","nodeType":"YulLiteral","src":"15637:4:75","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"15627:6:75","nodeType":"YulIdentifier","src":"15627:6:75"},"nativeSrc":"15627:15:75","nodeType":"YulFunctionCall","src":"15627:15:75"},"nativeSrc":"15627:15:75","nodeType":"YulExpressionStatement","src":"15627:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15658:1:75","nodeType":"YulLiteral","src":"15658:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15661:4:75","nodeType":"YulLiteral","src":"15661:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15651:6:75","nodeType":"YulIdentifier","src":"15651:6:75"},"nativeSrc":"15651:15:75","nodeType":"YulFunctionCall","src":"15651:15:75"},"nativeSrc":"15651:15:75","nodeType":"YulExpressionStatement","src":"15651:15:75"}]},"name":"panic_error_0x32","nativeSrc":"15545:127:75","nodeType":"YulFunctionDefinition","src":"15545:127:75"},{"body":{"nativeSrc":"15758:103:75","nodeType":"YulBlock","src":"15758:103:75","statements":[{"body":{"nativeSrc":"15804:16:75","nodeType":"YulBlock","src":"15804:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15813:1:75","nodeType":"YulLiteral","src":"15813:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15816:1:75","nodeType":"YulLiteral","src":"15816:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15806:6:75","nodeType":"YulIdentifier","src":"15806:6:75"},"nativeSrc":"15806:12:75","nodeType":"YulFunctionCall","src":"15806:12:75"},"nativeSrc":"15806:12:75","nodeType":"YulExpressionStatement","src":"15806:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15779:7:75","nodeType":"YulIdentifier","src":"15779:7:75"},{"name":"headStart","nativeSrc":"15788:9:75","nodeType":"YulIdentifier","src":"15788:9:75"}],"functionName":{"name":"sub","nativeSrc":"15775:3:75","nodeType":"YulIdentifier","src":"15775:3:75"},"nativeSrc":"15775:23:75","nodeType":"YulFunctionCall","src":"15775:23:75"},{"kind":"number","nativeSrc":"15800:2:75","nodeType":"YulLiteral","src":"15800:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15771:3:75","nodeType":"YulIdentifier","src":"15771:3:75"},"nativeSrc":"15771:32:75","nodeType":"YulFunctionCall","src":"15771:32:75"},"nativeSrc":"15768:52:75","nodeType":"YulIf","src":"15768:52:75"},{"nativeSrc":"15829:26:75","nodeType":"YulAssignment","src":"15829:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15845:9:75","nodeType":"YulIdentifier","src":"15845:9:75"}],"functionName":{"name":"mload","nativeSrc":"15839:5:75","nodeType":"YulIdentifier","src":"15839:5:75"},"nativeSrc":"15839:16:75","nodeType":"YulFunctionCall","src":"15839:16:75"},"variableNames":[{"name":"value0","nativeSrc":"15829:6:75","nodeType":"YulIdentifier","src":"15829:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"15677:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15724:9:75","nodeType":"YulTypedName","src":"15724:9:75","type":""},{"name":"dataEnd","nativeSrc":"15735:7:75","nodeType":"YulTypedName","src":"15735:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15747:6:75","nodeType":"YulTypedName","src":"15747:6:75","type":""}],"src":"15677:184:75"},{"body":{"nativeSrc":"15913:88:75","nodeType":"YulBlock","src":"15913:88:75","statements":[{"body":{"nativeSrc":"15944:22:75","nodeType":"YulBlock","src":"15944:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15946:16:75","nodeType":"YulIdentifier","src":"15946:16:75"},"nativeSrc":"15946:18:75","nodeType":"YulFunctionCall","src":"15946:18:75"},"nativeSrc":"15946:18:75","nodeType":"YulExpressionStatement","src":"15946:18:75"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"15929:5:75","nodeType":"YulIdentifier","src":"15929:5:75"},{"arguments":[{"kind":"number","nativeSrc":"15940:1:75","nodeType":"YulLiteral","src":"15940:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15936:3:75","nodeType":"YulIdentifier","src":"15936:3:75"},"nativeSrc":"15936:6:75","nodeType":"YulFunctionCall","src":"15936:6:75"}],"functionName":{"name":"eq","nativeSrc":"15926:2:75","nodeType":"YulIdentifier","src":"15926:2:75"},"nativeSrc":"15926:17:75","nodeType":"YulFunctionCall","src":"15926:17:75"},"nativeSrc":"15923:43:75","nodeType":"YulIf","src":"15923:43:75"},{"nativeSrc":"15975:20:75","nodeType":"YulAssignment","src":"15975:20:75","value":{"arguments":[{"name":"value","nativeSrc":"15986:5:75","nodeType":"YulIdentifier","src":"15986:5:75"},{"kind":"number","nativeSrc":"15993:1:75","nodeType":"YulLiteral","src":"15993:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15982:3:75","nodeType":"YulIdentifier","src":"15982:3:75"},"nativeSrc":"15982:13:75","nodeType":"YulFunctionCall","src":"15982:13:75"},"variableNames":[{"name":"ret","nativeSrc":"15975:3:75","nodeType":"YulIdentifier","src":"15975:3:75"}]}]},"name":"increment_t_uint256","nativeSrc":"15866:135:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15895:5:75","nodeType":"YulTypedName","src":"15895:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"15905:3:75","nodeType":"YulTypedName","src":"15905:3:75","type":""}],"src":"15866:135:75"},{"body":{"nativeSrc":"16163:188:75","nodeType":"YulBlock","src":"16163:188:75","statements":[{"nativeSrc":"16173:26:75","nodeType":"YulAssignment","src":"16173:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16185:9:75","nodeType":"YulIdentifier","src":"16185:9:75"},{"kind":"number","nativeSrc":"16196:2:75","nodeType":"YulLiteral","src":"16196:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16181:3:75","nodeType":"YulIdentifier","src":"16181:3:75"},"nativeSrc":"16181:18:75","nodeType":"YulFunctionCall","src":"16181:18:75"},"variableNames":[{"name":"tail","nativeSrc":"16173:4:75","nodeType":"YulIdentifier","src":"16173:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16215:9:75","nodeType":"YulIdentifier","src":"16215:9:75"},{"arguments":[{"name":"value0","nativeSrc":"16230:6:75","nodeType":"YulIdentifier","src":"16230:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16246:3:75","nodeType":"YulLiteral","src":"16246:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16251:1:75","nodeType":"YulLiteral","src":"16251:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16242:3:75","nodeType":"YulIdentifier","src":"16242:3:75"},"nativeSrc":"16242:11:75","nodeType":"YulFunctionCall","src":"16242:11:75"},{"kind":"number","nativeSrc":"16255:1:75","nodeType":"YulLiteral","src":"16255:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16238:3:75","nodeType":"YulIdentifier","src":"16238:3:75"},"nativeSrc":"16238:19:75","nodeType":"YulFunctionCall","src":"16238:19:75"}],"functionName":{"name":"and","nativeSrc":"16226:3:75","nodeType":"YulIdentifier","src":"16226:3:75"},"nativeSrc":"16226:32:75","nodeType":"YulFunctionCall","src":"16226:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16208:6:75","nodeType":"YulIdentifier","src":"16208:6:75"},"nativeSrc":"16208:51:75","nodeType":"YulFunctionCall","src":"16208:51:75"},"nativeSrc":"16208:51:75","nodeType":"YulExpressionStatement","src":"16208:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16279:9:75","nodeType":"YulIdentifier","src":"16279:9:75"},{"kind":"number","nativeSrc":"16290:2:75","nodeType":"YulLiteral","src":"16290:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16275:3:75","nodeType":"YulIdentifier","src":"16275:3:75"},"nativeSrc":"16275:18:75","nodeType":"YulFunctionCall","src":"16275:18:75"},{"name":"value1","nativeSrc":"16295:6:75","nodeType":"YulIdentifier","src":"16295:6:75"}],"functionName":{"name":"mstore","nativeSrc":"16268:6:75","nodeType":"YulIdentifier","src":"16268:6:75"},"nativeSrc":"16268:34:75","nodeType":"YulFunctionCall","src":"16268:34:75"},"nativeSrc":"16268:34:75","nodeType":"YulExpressionStatement","src":"16268:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16322:9:75","nodeType":"YulIdentifier","src":"16322:9:75"},{"kind":"number","nativeSrc":"16333:2:75","nodeType":"YulLiteral","src":"16333:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16318:3:75","nodeType":"YulIdentifier","src":"16318:3:75"},"nativeSrc":"16318:18:75","nodeType":"YulFunctionCall","src":"16318:18:75"},{"name":"value2","nativeSrc":"16338:6:75","nodeType":"YulIdentifier","src":"16338:6:75"}],"functionName":{"name":"mstore","nativeSrc":"16311:6:75","nodeType":"YulIdentifier","src":"16311:6:75"},"nativeSrc":"16311:34:75","nodeType":"YulFunctionCall","src":"16311:34:75"},"nativeSrc":"16311:34:75","nodeType":"YulExpressionStatement","src":"16311:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"16006:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16116:9:75","nodeType":"YulTypedName","src":"16116:9:75","type":""},{"name":"value2","nativeSrc":"16127:6:75","nodeType":"YulTypedName","src":"16127:6:75","type":""},{"name":"value1","nativeSrc":"16135:6:75","nodeType":"YulTypedName","src":"16135:6:75","type":""},{"name":"value0","nativeSrc":"16143:6:75","nodeType":"YulTypedName","src":"16143:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16154:4:75","nodeType":"YulTypedName","src":"16154:4:75","type":""}],"src":"16006:345:75"},{"body":{"nativeSrc":"16482:102:75","nodeType":"YulBlock","src":"16482:102:75","statements":[{"nativeSrc":"16492:26:75","nodeType":"YulAssignment","src":"16492:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16504:9:75","nodeType":"YulIdentifier","src":"16504:9:75"},{"kind":"number","nativeSrc":"16515:2:75","nodeType":"YulLiteral","src":"16515:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16500:3:75","nodeType":"YulIdentifier","src":"16500:3:75"},"nativeSrc":"16500:18:75","nodeType":"YulFunctionCall","src":"16500:18:75"},"variableNames":[{"name":"tail","nativeSrc":"16492:4:75","nodeType":"YulIdentifier","src":"16492:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16534:9:75","nodeType":"YulIdentifier","src":"16534:9:75"},{"arguments":[{"name":"value0","nativeSrc":"16549:6:75","nodeType":"YulIdentifier","src":"16549:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16565:3:75","nodeType":"YulLiteral","src":"16565:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16570:1:75","nodeType":"YulLiteral","src":"16570:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16561:3:75","nodeType":"YulIdentifier","src":"16561:3:75"},"nativeSrc":"16561:11:75","nodeType":"YulFunctionCall","src":"16561:11:75"},{"kind":"number","nativeSrc":"16574:1:75","nodeType":"YulLiteral","src":"16574:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16557:3:75","nodeType":"YulIdentifier","src":"16557:3:75"},"nativeSrc":"16557:19:75","nodeType":"YulFunctionCall","src":"16557:19:75"}],"functionName":{"name":"and","nativeSrc":"16545:3:75","nodeType":"YulIdentifier","src":"16545:3:75"},"nativeSrc":"16545:32:75","nodeType":"YulFunctionCall","src":"16545:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16527:6:75","nodeType":"YulIdentifier","src":"16527:6:75"},"nativeSrc":"16527:51:75","nodeType":"YulFunctionCall","src":"16527:51:75"},"nativeSrc":"16527:51:75","nodeType":"YulExpressionStatement","src":"16527:51:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374__to_t_address__fromStack_reversed","nativeSrc":"16356:228:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16451:9:75","nodeType":"YulTypedName","src":"16451:9:75","type":""},{"name":"value0","nativeSrc":"16462:6:75","nodeType":"YulTypedName","src":"16462:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16473:4:75","nodeType":"YulTypedName","src":"16473:4:75","type":""}],"src":"16356:228:75"},{"body":{"nativeSrc":"16637:77:75","nodeType":"YulBlock","src":"16637:77:75","statements":[{"nativeSrc":"16647:16:75","nodeType":"YulAssignment","src":"16647:16:75","value":{"arguments":[{"name":"x","nativeSrc":"16658:1:75","nodeType":"YulIdentifier","src":"16658:1:75"},{"name":"y","nativeSrc":"16661:1:75","nodeType":"YulIdentifier","src":"16661:1:75"}],"functionName":{"name":"add","nativeSrc":"16654:3:75","nodeType":"YulIdentifier","src":"16654:3:75"},"nativeSrc":"16654:9:75","nodeType":"YulFunctionCall","src":"16654:9:75"},"variableNames":[{"name":"sum","nativeSrc":"16647:3:75","nodeType":"YulIdentifier","src":"16647:3:75"}]},{"body":{"nativeSrc":"16686:22:75","nodeType":"YulBlock","src":"16686:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16688:16:75","nodeType":"YulIdentifier","src":"16688:16:75"},"nativeSrc":"16688:18:75","nodeType":"YulFunctionCall","src":"16688:18:75"},"nativeSrc":"16688:18:75","nodeType":"YulExpressionStatement","src":"16688:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"16678:1:75","nodeType":"YulIdentifier","src":"16678:1:75"},{"name":"sum","nativeSrc":"16681:3:75","nodeType":"YulIdentifier","src":"16681:3:75"}],"functionName":{"name":"gt","nativeSrc":"16675:2:75","nodeType":"YulIdentifier","src":"16675:2:75"},"nativeSrc":"16675:10:75","nodeType":"YulFunctionCall","src":"16675:10:75"},"nativeSrc":"16672:36:75","nodeType":"YulIf","src":"16672:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"16589:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16620:1:75","nodeType":"YulTypedName","src":"16620:1:75","type":""},{"name":"y","nativeSrc":"16623:1:75","nodeType":"YulTypedName","src":"16623:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16629:3:75","nodeType":"YulTypedName","src":"16629:3:75","type":""}],"src":"16589:125:75"},{"body":{"nativeSrc":"16844:156:75","nodeType":"YulBlock","src":"16844:156:75","statements":[{"nativeSrc":"16854:26:75","nodeType":"YulAssignment","src":"16854:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16866:9:75","nodeType":"YulIdentifier","src":"16866:9:75"},{"kind":"number","nativeSrc":"16877:2:75","nodeType":"YulLiteral","src":"16877:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16862:3:75","nodeType":"YulIdentifier","src":"16862:3:75"},"nativeSrc":"16862:18:75","nodeType":"YulFunctionCall","src":"16862:18:75"},"variableNames":[{"name":"tail","nativeSrc":"16854:4:75","nodeType":"YulIdentifier","src":"16854:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16896:9:75","nodeType":"YulIdentifier","src":"16896:9:75"},{"arguments":[{"name":"value0","nativeSrc":"16911:6:75","nodeType":"YulIdentifier","src":"16911:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16927:3:75","nodeType":"YulLiteral","src":"16927:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"16932:1:75","nodeType":"YulLiteral","src":"16932:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16923:3:75","nodeType":"YulIdentifier","src":"16923:3:75"},"nativeSrc":"16923:11:75","nodeType":"YulFunctionCall","src":"16923:11:75"},{"kind":"number","nativeSrc":"16936:1:75","nodeType":"YulLiteral","src":"16936:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16919:3:75","nodeType":"YulIdentifier","src":"16919:3:75"},"nativeSrc":"16919:19:75","nodeType":"YulFunctionCall","src":"16919:19:75"}],"functionName":{"name":"and","nativeSrc":"16907:3:75","nodeType":"YulIdentifier","src":"16907:3:75"},"nativeSrc":"16907:32:75","nodeType":"YulFunctionCall","src":"16907:32:75"}],"functionName":{"name":"mstore","nativeSrc":"16889:6:75","nodeType":"YulIdentifier","src":"16889:6:75"},"nativeSrc":"16889:51:75","nodeType":"YulFunctionCall","src":"16889:51:75"},"nativeSrc":"16889:51:75","nodeType":"YulExpressionStatement","src":"16889:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16960:9:75","nodeType":"YulIdentifier","src":"16960:9:75"},{"kind":"number","nativeSrc":"16971:2:75","nodeType":"YulLiteral","src":"16971:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16956:3:75","nodeType":"YulIdentifier","src":"16956:3:75"},"nativeSrc":"16956:18:75","nodeType":"YulFunctionCall","src":"16956:18:75"},{"arguments":[{"name":"value1","nativeSrc":"16980:6:75","nodeType":"YulIdentifier","src":"16980:6:75"},{"kind":"number","nativeSrc":"16988:4:75","nodeType":"YulLiteral","src":"16988:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16976:3:75","nodeType":"YulIdentifier","src":"16976:3:75"},"nativeSrc":"16976:17:75","nodeType":"YulFunctionCall","src":"16976:17:75"}],"functionName":{"name":"mstore","nativeSrc":"16949:6:75","nodeType":"YulIdentifier","src":"16949:6:75"},"nativeSrc":"16949:45:75","nodeType":"YulFunctionCall","src":"16949:45:75"},"nativeSrc":"16949:45:75","nodeType":"YulExpressionStatement","src":"16949:45:75"}]},"name":"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"16719:281:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16805:9:75","nodeType":"YulTypedName","src":"16805:9:75","type":""},{"name":"value1","nativeSrc":"16816:6:75","nodeType":"YulTypedName","src":"16816:6:75","type":""},{"name":"value0","nativeSrc":"16824:6:75","nodeType":"YulTypedName","src":"16824:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16835:4:75","nodeType":"YulTypedName","src":"16835:4:75","type":""}],"src":"16719:281:75"},{"body":{"nativeSrc":"17152:471:75","nodeType":"YulBlock","src":"17152:471:75","statements":[{"nativeSrc":"17162:32:75","nodeType":"YulVariableDeclaration","src":"17162:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17180:9:75","nodeType":"YulIdentifier","src":"17180:9:75"},{"kind":"number","nativeSrc":"17191:2:75","nodeType":"YulLiteral","src":"17191:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17176:3:75","nodeType":"YulIdentifier","src":"17176:3:75"},"nativeSrc":"17176:18:75","nodeType":"YulFunctionCall","src":"17176:18:75"},"variables":[{"name":"tail_1","nativeSrc":"17166:6:75","nodeType":"YulTypedName","src":"17166:6:75","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17210:9:75","nodeType":"YulIdentifier","src":"17210:9:75"},{"kind":"number","nativeSrc":"17221:2:75","nodeType":"YulLiteral","src":"17221:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"17203:6:75","nodeType":"YulIdentifier","src":"17203:6:75"},"nativeSrc":"17203:21:75","nodeType":"YulFunctionCall","src":"17203:21:75"},"nativeSrc":"17203:21:75","nodeType":"YulExpressionStatement","src":"17203:21:75"},{"nativeSrc":"17233:17:75","nodeType":"YulVariableDeclaration","src":"17233:17:75","value":{"name":"tail_1","nativeSrc":"17244:6:75","nodeType":"YulIdentifier","src":"17244:6:75"},"variables":[{"name":"pos","nativeSrc":"17237:3:75","nodeType":"YulTypedName","src":"17237:3:75","type":""}]},{"nativeSrc":"17259:27:75","nodeType":"YulVariableDeclaration","src":"17259:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"17279:6:75","nodeType":"YulIdentifier","src":"17279:6:75"}],"functionName":{"name":"mload","nativeSrc":"17273:5:75","nodeType":"YulIdentifier","src":"17273:5:75"},"nativeSrc":"17273:13:75","nodeType":"YulFunctionCall","src":"17273:13:75"},"variables":[{"name":"length","nativeSrc":"17263:6:75","nodeType":"YulTypedName","src":"17263:6:75","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"17302:6:75","nodeType":"YulIdentifier","src":"17302:6:75"},{"name":"length","nativeSrc":"17310:6:75","nodeType":"YulIdentifier","src":"17310:6:75"}],"functionName":{"name":"mstore","nativeSrc":"17295:6:75","nodeType":"YulIdentifier","src":"17295:6:75"},"nativeSrc":"17295:22:75","nodeType":"YulFunctionCall","src":"17295:22:75"},"nativeSrc":"17295:22:75","nodeType":"YulExpressionStatement","src":"17295:22:75"},{"nativeSrc":"17326:25:75","nodeType":"YulAssignment","src":"17326:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17337:9:75","nodeType":"YulIdentifier","src":"17337:9:75"},{"kind":"number","nativeSrc":"17348:2:75","nodeType":"YulLiteral","src":"17348:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17333:3:75","nodeType":"YulIdentifier","src":"17333:3:75"},"nativeSrc":"17333:18:75","nodeType":"YulFunctionCall","src":"17333:18:75"},"variableNames":[{"name":"pos","nativeSrc":"17326:3:75","nodeType":"YulIdentifier","src":"17326:3:75"}]},{"nativeSrc":"17360:29:75","nodeType":"YulVariableDeclaration","src":"17360:29:75","value":{"arguments":[{"name":"value0","nativeSrc":"17378:6:75","nodeType":"YulIdentifier","src":"17378:6:75"},{"kind":"number","nativeSrc":"17386:2:75","nodeType":"YulLiteral","src":"17386:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17374:3:75","nodeType":"YulIdentifier","src":"17374:3:75"},"nativeSrc":"17374:15:75","nodeType":"YulFunctionCall","src":"17374:15:75"},"variables":[{"name":"srcPtr","nativeSrc":"17364:6:75","nodeType":"YulTypedName","src":"17364:6:75","type":""}]},{"nativeSrc":"17398:10:75","nodeType":"YulVariableDeclaration","src":"17398:10:75","value":{"kind":"number","nativeSrc":"17407:1:75","nodeType":"YulLiteral","src":"17407:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"17402:1:75","nodeType":"YulTypedName","src":"17402:1:75","type":""}]},{"body":{"nativeSrc":"17466:131:75","nodeType":"YulBlock","src":"17466:131:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"17487:3:75","nodeType":"YulIdentifier","src":"17487:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"17502:6:75","nodeType":"YulIdentifier","src":"17502:6:75"}],"functionName":{"name":"mload","nativeSrc":"17496:5:75","nodeType":"YulIdentifier","src":"17496:5:75"},"nativeSrc":"17496:13:75","nodeType":"YulFunctionCall","src":"17496:13:75"},{"kind":"number","nativeSrc":"17511:4:75","nodeType":"YulLiteral","src":"17511:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17492:3:75","nodeType":"YulIdentifier","src":"17492:3:75"},"nativeSrc":"17492:24:75","nodeType":"YulFunctionCall","src":"17492:24:75"}],"functionName":{"name":"mstore","nativeSrc":"17480:6:75","nodeType":"YulIdentifier","src":"17480:6:75"},"nativeSrc":"17480:37:75","nodeType":"YulFunctionCall","src":"17480:37:75"},"nativeSrc":"17480:37:75","nodeType":"YulExpressionStatement","src":"17480:37:75"},{"nativeSrc":"17530:19:75","nodeType":"YulAssignment","src":"17530:19:75","value":{"arguments":[{"name":"pos","nativeSrc":"17541:3:75","nodeType":"YulIdentifier","src":"17541:3:75"},{"kind":"number","nativeSrc":"17546:2:75","nodeType":"YulLiteral","src":"17546:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17537:3:75","nodeType":"YulIdentifier","src":"17537:3:75"},"nativeSrc":"17537:12:75","nodeType":"YulFunctionCall","src":"17537:12:75"},"variableNames":[{"name":"pos","nativeSrc":"17530:3:75","nodeType":"YulIdentifier","src":"17530:3:75"}]},{"nativeSrc":"17562:25:75","nodeType":"YulAssignment","src":"17562:25:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"17576:6:75","nodeType":"YulIdentifier","src":"17576:6:75"},{"kind":"number","nativeSrc":"17584:2:75","nodeType":"YulLiteral","src":"17584:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17572:3:75","nodeType":"YulIdentifier","src":"17572:3:75"},"nativeSrc":"17572:15:75","nodeType":"YulFunctionCall","src":"17572:15:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"17562:6:75","nodeType":"YulIdentifier","src":"17562:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"17428:1:75","nodeType":"YulIdentifier","src":"17428:1:75"},{"name":"length","nativeSrc":"17431:6:75","nodeType":"YulIdentifier","src":"17431:6:75"}],"functionName":{"name":"lt","nativeSrc":"17425:2:75","nodeType":"YulIdentifier","src":"17425:2:75"},"nativeSrc":"17425:13:75","nodeType":"YulFunctionCall","src":"17425:13:75"},"nativeSrc":"17417:180:75","nodeType":"YulForLoop","post":{"nativeSrc":"17439:18:75","nodeType":"YulBlock","src":"17439:18:75","statements":[{"nativeSrc":"17441:14:75","nodeType":"YulAssignment","src":"17441:14:75","value":{"arguments":[{"name":"i","nativeSrc":"17450:1:75","nodeType":"YulIdentifier","src":"17450:1:75"},{"kind":"number","nativeSrc":"17453:1:75","nodeType":"YulLiteral","src":"17453:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17446:3:75","nodeType":"YulIdentifier","src":"17446:3:75"},"nativeSrc":"17446:9:75","nodeType":"YulFunctionCall","src":"17446:9:75"},"variableNames":[{"name":"i","nativeSrc":"17441:1:75","nodeType":"YulIdentifier","src":"17441:1:75"}]}]},"pre":{"nativeSrc":"17421:3:75","nodeType":"YulBlock","src":"17421:3:75","statements":[]},"src":"17417:180:75"},{"nativeSrc":"17606:11:75","nodeType":"YulAssignment","src":"17606:11:75","value":{"name":"pos","nativeSrc":"17614:3:75","nodeType":"YulIdentifier","src":"17614:3:75"},"variableNames":[{"name":"tail","nativeSrc":"17606:4:75","nodeType":"YulIdentifier","src":"17606:4:75"}]}]},"name":"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"17005:618:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17121:9:75","nodeType":"YulTypedName","src":"17121:9:75","type":""},{"name":"value0","nativeSrc":"17132:6:75","nodeType":"YulTypedName","src":"17132:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17143:4:75","nodeType":"YulTypedName","src":"17143:4:75","type":""}],"src":"17005:618:75"},{"body":{"nativeSrc":"17677:79:75","nodeType":"YulBlock","src":"17677:79:75","statements":[{"nativeSrc":"17687:17:75","nodeType":"YulAssignment","src":"17687:17:75","value":{"arguments":[{"name":"x","nativeSrc":"17699:1:75","nodeType":"YulIdentifier","src":"17699:1:75"},{"name":"y","nativeSrc":"17702:1:75","nodeType":"YulIdentifier","src":"17702:1:75"}],"functionName":{"name":"sub","nativeSrc":"17695:3:75","nodeType":"YulIdentifier","src":"17695:3:75"},"nativeSrc":"17695:9:75","nodeType":"YulFunctionCall","src":"17695:9:75"},"variableNames":[{"name":"diff","nativeSrc":"17687:4:75","nodeType":"YulIdentifier","src":"17687:4:75"}]},{"body":{"nativeSrc":"17728:22:75","nodeType":"YulBlock","src":"17728:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17730:16:75","nodeType":"YulIdentifier","src":"17730:16:75"},"nativeSrc":"17730:18:75","nodeType":"YulFunctionCall","src":"17730:18:75"},"nativeSrc":"17730:18:75","nodeType":"YulExpressionStatement","src":"17730:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"17719:4:75","nodeType":"YulIdentifier","src":"17719:4:75"},{"name":"x","nativeSrc":"17725:1:75","nodeType":"YulIdentifier","src":"17725:1:75"}],"functionName":{"name":"gt","nativeSrc":"17716:2:75","nodeType":"YulIdentifier","src":"17716:2:75"},"nativeSrc":"17716:11:75","nodeType":"YulFunctionCall","src":"17716:11:75"},"nativeSrc":"17713:37:75","nodeType":"YulIf","src":"17713:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"17628:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17659:1:75","nodeType":"YulTypedName","src":"17659:1:75","type":""},{"name":"y","nativeSrc":"17662:1:75","nodeType":"YulTypedName","src":"17662:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"17668:4:75","nodeType":"YulTypedName","src":"17668:4:75","type":""}],"src":"17628:128:75"},{"body":{"nativeSrc":"17808:104:75","nodeType":"YulBlock","src":"17808:104:75","statements":[{"nativeSrc":"17818:39:75","nodeType":"YulAssignment","src":"17818:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"17834:1:75","nodeType":"YulIdentifier","src":"17834:1:75"},{"kind":"number","nativeSrc":"17837:4:75","nodeType":"YulLiteral","src":"17837:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17830:3:75","nodeType":"YulIdentifier","src":"17830:3:75"},"nativeSrc":"17830:12:75","nodeType":"YulFunctionCall","src":"17830:12:75"},{"arguments":[{"name":"y","nativeSrc":"17848:1:75","nodeType":"YulIdentifier","src":"17848:1:75"},{"kind":"number","nativeSrc":"17851:4:75","nodeType":"YulLiteral","src":"17851:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17844:3:75","nodeType":"YulIdentifier","src":"17844:3:75"},"nativeSrc":"17844:12:75","nodeType":"YulFunctionCall","src":"17844:12:75"}],"functionName":{"name":"sub","nativeSrc":"17826:3:75","nodeType":"YulIdentifier","src":"17826:3:75"},"nativeSrc":"17826:31:75","nodeType":"YulFunctionCall","src":"17826:31:75"},"variableNames":[{"name":"diff","nativeSrc":"17818:4:75","nodeType":"YulIdentifier","src":"17818:4:75"}]},{"body":{"nativeSrc":"17884:22:75","nodeType":"YulBlock","src":"17884:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17886:16:75","nodeType":"YulIdentifier","src":"17886:16:75"},"nativeSrc":"17886:18:75","nodeType":"YulFunctionCall","src":"17886:18:75"},"nativeSrc":"17886:18:75","nodeType":"YulExpressionStatement","src":"17886:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"17872:4:75","nodeType":"YulIdentifier","src":"17872:4:75"},{"kind":"number","nativeSrc":"17878:4:75","nodeType":"YulLiteral","src":"17878:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"17869:2:75","nodeType":"YulIdentifier","src":"17869:2:75"},"nativeSrc":"17869:14:75","nodeType":"YulFunctionCall","src":"17869:14:75"},"nativeSrc":"17866:40:75","nodeType":"YulIf","src":"17866:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"17761:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17790:1:75","nodeType":"YulTypedName","src":"17790:1:75","type":""},{"name":"y","nativeSrc":"17793:1:75","nodeType":"YulTypedName","src":"17793:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"17799:4:75","nodeType":"YulTypedName","src":"17799:4:75","type":""}],"src":"17761:151:75"},{"body":{"nativeSrc":"18025:101:75","nodeType":"YulBlock","src":"18025:101:75","statements":[{"nativeSrc":"18035:26:75","nodeType":"YulAssignment","src":"18035:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18047:9:75","nodeType":"YulIdentifier","src":"18047:9:75"},{"kind":"number","nativeSrc":"18058:2:75","nodeType":"YulLiteral","src":"18058:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18043:3:75","nodeType":"YulIdentifier","src":"18043:3:75"},"nativeSrc":"18043:18:75","nodeType":"YulFunctionCall","src":"18043:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18035:4:75","nodeType":"YulIdentifier","src":"18035:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18077:9:75","nodeType":"YulIdentifier","src":"18077:9:75"},{"arguments":[{"name":"value0","nativeSrc":"18092:6:75","nodeType":"YulIdentifier","src":"18092:6:75"},{"kind":"number","nativeSrc":"18100:18:75","nodeType":"YulLiteral","src":"18100:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"18088:3:75","nodeType":"YulIdentifier","src":"18088:3:75"},"nativeSrc":"18088:31:75","nodeType":"YulFunctionCall","src":"18088:31:75"}],"functionName":{"name":"mstore","nativeSrc":"18070:6:75","nodeType":"YulIdentifier","src":"18070:6:75"},"nativeSrc":"18070:50:75","nodeType":"YulFunctionCall","src":"18070:50:75"},"nativeSrc":"18070:50:75","nodeType":"YulExpressionStatement","src":"18070:50:75"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"17917:209:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17994:9:75","nodeType":"YulTypedName","src":"17994:9:75","type":""},{"name":"value0","nativeSrc":"18005:6:75","nodeType":"YulTypedName","src":"18005:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18016:4:75","nodeType":"YulTypedName","src":"18016:4:75","type":""}],"src":"17917:209:75"},{"body":{"nativeSrc":"18176:130:75","nodeType":"YulBlock","src":"18176:130:75","statements":[{"nativeSrc":"18186:31:75","nodeType":"YulVariableDeclaration","src":"18186:31:75","value":{"arguments":[{"name":"value","nativeSrc":"18205:5:75","nodeType":"YulIdentifier","src":"18205:5:75"},{"kind":"number","nativeSrc":"18212:4:75","nodeType":"YulLiteral","src":"18212:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"18201:3:75","nodeType":"YulIdentifier","src":"18201:3:75"},"nativeSrc":"18201:16:75","nodeType":"YulFunctionCall","src":"18201:16:75"},"variables":[{"name":"value_1","nativeSrc":"18190:7:75","nodeType":"YulTypedName","src":"18190:7:75","type":""}]},{"body":{"nativeSrc":"18247:22:75","nodeType":"YulBlock","src":"18247:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18249:16:75","nodeType":"YulIdentifier","src":"18249:16:75"},"nativeSrc":"18249:18:75","nodeType":"YulFunctionCall","src":"18249:18:75"},"nativeSrc":"18249:18:75","nodeType":"YulExpressionStatement","src":"18249:18:75"}]},"condition":{"arguments":[{"name":"value_1","nativeSrc":"18232:7:75","nodeType":"YulIdentifier","src":"18232:7:75"},{"kind":"number","nativeSrc":"18241:4:75","nodeType":"YulLiteral","src":"18241:4:75","type":"","value":"0xff"}],"functionName":{"name":"eq","nativeSrc":"18229:2:75","nodeType":"YulIdentifier","src":"18229:2:75"},"nativeSrc":"18229:17:75","nodeType":"YulFunctionCall","src":"18229:17:75"},"nativeSrc":"18226:43:75","nodeType":"YulIf","src":"18226:43:75"},{"nativeSrc":"18278:22:75","nodeType":"YulAssignment","src":"18278:22:75","value":{"arguments":[{"name":"value_1","nativeSrc":"18289:7:75","nodeType":"YulIdentifier","src":"18289:7:75"},{"kind":"number","nativeSrc":"18298:1:75","nodeType":"YulLiteral","src":"18298:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18285:3:75","nodeType":"YulIdentifier","src":"18285:3:75"},"nativeSrc":"18285:15:75","nodeType":"YulFunctionCall","src":"18285:15:75"},"variableNames":[{"name":"ret","nativeSrc":"18278:3:75","nodeType":"YulIdentifier","src":"18278:3:75"}]}]},"name":"increment_t_uint8","nativeSrc":"18131:175:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"18158:5:75","nodeType":"YulTypedName","src":"18158:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"18168:3:75","nodeType":"YulTypedName","src":"18168:3:75","type":""}],"src":"18131:175:75"},{"body":{"nativeSrc":"18380:306:75","nodeType":"YulBlock","src":"18380:306:75","statements":[{"nativeSrc":"18390:10:75","nodeType":"YulAssignment","src":"18390:10:75","value":{"kind":"number","nativeSrc":"18399:1:75","nodeType":"YulLiteral","src":"18399:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18390:5:75","nodeType":"YulIdentifier","src":"18390:5:75"}]},{"nativeSrc":"18409:13:75","nodeType":"YulAssignment","src":"18409:13:75","value":{"name":"_base","nativeSrc":"18417:5:75","nodeType":"YulIdentifier","src":"18417:5:75"},"variableNames":[{"name":"base","nativeSrc":"18409:4:75","nodeType":"YulIdentifier","src":"18409:4:75"}]},{"body":{"nativeSrc":"18467:213:75","nodeType":"YulBlock","src":"18467:213:75","statements":[{"body":{"nativeSrc":"18509:22:75","nodeType":"YulBlock","src":"18509:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18511:16:75","nodeType":"YulIdentifier","src":"18511:16:75"},"nativeSrc":"18511:18:75","nodeType":"YulFunctionCall","src":"18511:18:75"},"nativeSrc":"18511:18:75","nodeType":"YulExpressionStatement","src":"18511:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"18487:4:75","nodeType":"YulIdentifier","src":"18487:4:75"},{"arguments":[{"name":"max","nativeSrc":"18497:3:75","nodeType":"YulIdentifier","src":"18497:3:75"},{"name":"base","nativeSrc":"18502:4:75","nodeType":"YulIdentifier","src":"18502:4:75"}],"functionName":{"name":"div","nativeSrc":"18493:3:75","nodeType":"YulIdentifier","src":"18493:3:75"},"nativeSrc":"18493:14:75","nodeType":"YulFunctionCall","src":"18493:14:75"}],"functionName":{"name":"gt","nativeSrc":"18484:2:75","nodeType":"YulIdentifier","src":"18484:2:75"},"nativeSrc":"18484:24:75","nodeType":"YulFunctionCall","src":"18484:24:75"},"nativeSrc":"18481:50:75","nodeType":"YulIf","src":"18481:50:75"},{"body":{"nativeSrc":"18564:29:75","nodeType":"YulBlock","src":"18564:29:75","statements":[{"nativeSrc":"18566:25:75","nodeType":"YulAssignment","src":"18566:25:75","value":{"arguments":[{"name":"power","nativeSrc":"18579:5:75","nodeType":"YulIdentifier","src":"18579:5:75"},{"name":"base","nativeSrc":"18586:4:75","nodeType":"YulIdentifier","src":"18586:4:75"}],"functionName":{"name":"mul","nativeSrc":"18575:3:75","nodeType":"YulIdentifier","src":"18575:3:75"},"nativeSrc":"18575:16:75","nodeType":"YulFunctionCall","src":"18575:16:75"},"variableNames":[{"name":"power","nativeSrc":"18566:5:75","nodeType":"YulIdentifier","src":"18566:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18551:8:75","nodeType":"YulIdentifier","src":"18551:8:75"},{"kind":"number","nativeSrc":"18561:1:75","nodeType":"YulLiteral","src":"18561:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"18547:3:75","nodeType":"YulIdentifier","src":"18547:3:75"},"nativeSrc":"18547:16:75","nodeType":"YulFunctionCall","src":"18547:16:75"},"nativeSrc":"18544:49:75","nodeType":"YulIf","src":"18544:49:75"},{"nativeSrc":"18606:23:75","nodeType":"YulAssignment","src":"18606:23:75","value":{"arguments":[{"name":"base","nativeSrc":"18618:4:75","nodeType":"YulIdentifier","src":"18618:4:75"},{"name":"base","nativeSrc":"18624:4:75","nodeType":"YulIdentifier","src":"18624:4:75"}],"functionName":{"name":"mul","nativeSrc":"18614:3:75","nodeType":"YulIdentifier","src":"18614:3:75"},"nativeSrc":"18614:15:75","nodeType":"YulFunctionCall","src":"18614:15:75"},"variableNames":[{"name":"base","nativeSrc":"18606:4:75","nodeType":"YulIdentifier","src":"18606:4:75"}]},{"nativeSrc":"18642:28:75","nodeType":"YulAssignment","src":"18642:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"18658:1:75","nodeType":"YulLiteral","src":"18658:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"18661:8:75","nodeType":"YulIdentifier","src":"18661:8:75"}],"functionName":{"name":"shr","nativeSrc":"18654:3:75","nodeType":"YulIdentifier","src":"18654:3:75"},"nativeSrc":"18654:16:75","nodeType":"YulFunctionCall","src":"18654:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"18642:8:75","nodeType":"YulIdentifier","src":"18642:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18442:8:75","nodeType":"YulIdentifier","src":"18442:8:75"},{"kind":"number","nativeSrc":"18452:1:75","nodeType":"YulLiteral","src":"18452:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"18439:2:75","nodeType":"YulIdentifier","src":"18439:2:75"},"nativeSrc":"18439:15:75","nodeType":"YulFunctionCall","src":"18439:15:75"},"nativeSrc":"18431:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"18455:3:75","nodeType":"YulBlock","src":"18455:3:75","statements":[]},"pre":{"nativeSrc":"18435:3:75","nodeType":"YulBlock","src":"18435:3:75","statements":[]},"src":"18431:249:75"}]},"name":"checked_exp_helper","nativeSrc":"18311:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"18339:5:75","nodeType":"YulTypedName","src":"18339:5:75","type":""},{"name":"exponent","nativeSrc":"18346:8:75","nodeType":"YulTypedName","src":"18346:8:75","type":""},{"name":"max","nativeSrc":"18356:3:75","nodeType":"YulTypedName","src":"18356:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18364:5:75","nodeType":"YulTypedName","src":"18364:5:75","type":""},{"name":"base","nativeSrc":"18371:4:75","nodeType":"YulTypedName","src":"18371:4:75","type":""}],"src":"18311:375:75"},{"body":{"nativeSrc":"18750:843:75","nodeType":"YulBlock","src":"18750:843:75","statements":[{"body":{"nativeSrc":"18788:52:75","nodeType":"YulBlock","src":"18788:52:75","statements":[{"nativeSrc":"18802:10:75","nodeType":"YulAssignment","src":"18802:10:75","value":{"kind":"number","nativeSrc":"18811:1:75","nodeType":"YulLiteral","src":"18811:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18802:5:75","nodeType":"YulIdentifier","src":"18802:5:75"}]},{"nativeSrc":"18825:5:75","nodeType":"YulLeave","src":"18825:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18770:8:75","nodeType":"YulIdentifier","src":"18770:8:75"}],"functionName":{"name":"iszero","nativeSrc":"18763:6:75","nodeType":"YulIdentifier","src":"18763:6:75"},"nativeSrc":"18763:16:75","nodeType":"YulFunctionCall","src":"18763:16:75"},"nativeSrc":"18760:80:75","nodeType":"YulIf","src":"18760:80:75"},{"body":{"nativeSrc":"18873:52:75","nodeType":"YulBlock","src":"18873:52:75","statements":[{"nativeSrc":"18887:10:75","nodeType":"YulAssignment","src":"18887:10:75","value":{"kind":"number","nativeSrc":"18896:1:75","nodeType":"YulLiteral","src":"18896:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"18887:5:75","nodeType":"YulIdentifier","src":"18887:5:75"}]},{"nativeSrc":"18910:5:75","nodeType":"YulLeave","src":"18910:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"18859:4:75","nodeType":"YulIdentifier","src":"18859:4:75"}],"functionName":{"name":"iszero","nativeSrc":"18852:6:75","nodeType":"YulIdentifier","src":"18852:6:75"},"nativeSrc":"18852:12:75","nodeType":"YulFunctionCall","src":"18852:12:75"},"nativeSrc":"18849:76:75","nodeType":"YulIf","src":"18849:76:75"},{"cases":[{"body":{"nativeSrc":"18961:52:75","nodeType":"YulBlock","src":"18961:52:75","statements":[{"nativeSrc":"18975:10:75","nodeType":"YulAssignment","src":"18975:10:75","value":{"kind":"number","nativeSrc":"18984:1:75","nodeType":"YulLiteral","src":"18984:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18975:5:75","nodeType":"YulIdentifier","src":"18975:5:75"}]},{"nativeSrc":"18998:5:75","nodeType":"YulLeave","src":"18998:5:75"}]},"nativeSrc":"18954:59:75","nodeType":"YulCase","src":"18954:59:75","value":{"kind":"number","nativeSrc":"18959:1:75","nodeType":"YulLiteral","src":"18959:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"19029:167:75","nodeType":"YulBlock","src":"19029:167:75","statements":[{"body":{"nativeSrc":"19064:22:75","nodeType":"YulBlock","src":"19064:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19066:16:75","nodeType":"YulIdentifier","src":"19066:16:75"},"nativeSrc":"19066:18:75","nodeType":"YulFunctionCall","src":"19066:18:75"},"nativeSrc":"19066:18:75","nodeType":"YulExpressionStatement","src":"19066:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"19049:8:75","nodeType":"YulIdentifier","src":"19049:8:75"},{"kind":"number","nativeSrc":"19059:3:75","nodeType":"YulLiteral","src":"19059:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"19046:2:75","nodeType":"YulIdentifier","src":"19046:2:75"},"nativeSrc":"19046:17:75","nodeType":"YulFunctionCall","src":"19046:17:75"},"nativeSrc":"19043:43:75","nodeType":"YulIf","src":"19043:43:75"},{"nativeSrc":"19099:25:75","nodeType":"YulAssignment","src":"19099:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"19112:8:75","nodeType":"YulIdentifier","src":"19112:8:75"},{"kind":"number","nativeSrc":"19122:1:75","nodeType":"YulLiteral","src":"19122:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19108:3:75","nodeType":"YulIdentifier","src":"19108:3:75"},"nativeSrc":"19108:16:75","nodeType":"YulFunctionCall","src":"19108:16:75"},"variableNames":[{"name":"power","nativeSrc":"19099:5:75","nodeType":"YulIdentifier","src":"19099:5:75"}]},{"nativeSrc":"19137:11:75","nodeType":"YulVariableDeclaration","src":"19137:11:75","value":{"kind":"number","nativeSrc":"19147:1:75","nodeType":"YulLiteral","src":"19147:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"19141:2:75","nodeType":"YulTypedName","src":"19141:2:75","type":""}]},{"nativeSrc":"19161:7:75","nodeType":"YulAssignment","src":"19161:7:75","value":{"kind":"number","nativeSrc":"19167:1:75","nodeType":"YulLiteral","src":"19167:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"19161:2:75","nodeType":"YulIdentifier","src":"19161:2:75"}]},{"nativeSrc":"19181:5:75","nodeType":"YulLeave","src":"19181:5:75"}]},"nativeSrc":"19022:174:75","nodeType":"YulCase","src":"19022:174:75","value":{"kind":"number","nativeSrc":"19027:1:75","nodeType":"YulLiteral","src":"19027:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"18941:4:75","nodeType":"YulIdentifier","src":"18941:4:75"},"nativeSrc":"18934:262:75","nodeType":"YulSwitch","src":"18934:262:75"},{"body":{"nativeSrc":"19294:114:75","nodeType":"YulBlock","src":"19294:114:75","statements":[{"nativeSrc":"19308:28:75","nodeType":"YulAssignment","src":"19308:28:75","value":{"arguments":[{"name":"base","nativeSrc":"19321:4:75","nodeType":"YulIdentifier","src":"19321:4:75"},{"name":"exponent","nativeSrc":"19327:8:75","nodeType":"YulIdentifier","src":"19327:8:75"}],"functionName":{"name":"exp","nativeSrc":"19317:3:75","nodeType":"YulIdentifier","src":"19317:3:75"},"nativeSrc":"19317:19:75","nodeType":"YulFunctionCall","src":"19317:19:75"},"variableNames":[{"name":"power","nativeSrc":"19308:5:75","nodeType":"YulIdentifier","src":"19308:5:75"}]},{"nativeSrc":"19349:11:75","nodeType":"YulVariableDeclaration","src":"19349:11:75","value":{"kind":"number","nativeSrc":"19359:1:75","nodeType":"YulLiteral","src":"19359:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"19353:2:75","nodeType":"YulTypedName","src":"19353:2:75","type":""}]},{"nativeSrc":"19373:7:75","nodeType":"YulAssignment","src":"19373:7:75","value":{"kind":"number","nativeSrc":"19379:1:75","nodeType":"YulLiteral","src":"19379:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"19373:2:75","nodeType":"YulIdentifier","src":"19373:2:75"}]},{"nativeSrc":"19393:5:75","nodeType":"YulLeave","src":"19393:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"19218:4:75","nodeType":"YulIdentifier","src":"19218:4:75"},{"kind":"number","nativeSrc":"19224:2:75","nodeType":"YulLiteral","src":"19224:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"19215:2:75","nodeType":"YulIdentifier","src":"19215:2:75"},"nativeSrc":"19215:12:75","nodeType":"YulFunctionCall","src":"19215:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"19232:8:75","nodeType":"YulIdentifier","src":"19232:8:75"},{"kind":"number","nativeSrc":"19242:2:75","nodeType":"YulLiteral","src":"19242:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"19229:2:75","nodeType":"YulIdentifier","src":"19229:2:75"},"nativeSrc":"19229:16:75","nodeType":"YulFunctionCall","src":"19229:16:75"}],"functionName":{"name":"and","nativeSrc":"19211:3:75","nodeType":"YulIdentifier","src":"19211:3:75"},"nativeSrc":"19211:35:75","nodeType":"YulFunctionCall","src":"19211:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"19255:4:75","nodeType":"YulIdentifier","src":"19255:4:75"},{"kind":"number","nativeSrc":"19261:3:75","nodeType":"YulLiteral","src":"19261:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"19252:2:75","nodeType":"YulIdentifier","src":"19252:2:75"},"nativeSrc":"19252:13:75","nodeType":"YulFunctionCall","src":"19252:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"19270:8:75","nodeType":"YulIdentifier","src":"19270:8:75"},{"kind":"number","nativeSrc":"19280:2:75","nodeType":"YulLiteral","src":"19280:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"19267:2:75","nodeType":"YulIdentifier","src":"19267:2:75"},"nativeSrc":"19267:16:75","nodeType":"YulFunctionCall","src":"19267:16:75"}],"functionName":{"name":"and","nativeSrc":"19248:3:75","nodeType":"YulIdentifier","src":"19248:3:75"},"nativeSrc":"19248:36:75","nodeType":"YulFunctionCall","src":"19248:36:75"}],"functionName":{"name":"or","nativeSrc":"19208:2:75","nodeType":"YulIdentifier","src":"19208:2:75"},"nativeSrc":"19208:77:75","nodeType":"YulFunctionCall","src":"19208:77:75"},"nativeSrc":"19205:203:75","nodeType":"YulIf","src":"19205:203:75"},{"nativeSrc":"19417:65:75","nodeType":"YulVariableDeclaration","src":"19417:65:75","value":{"arguments":[{"name":"base","nativeSrc":"19459:4:75","nodeType":"YulIdentifier","src":"19459:4:75"},{"name":"exponent","nativeSrc":"19465:8:75","nodeType":"YulIdentifier","src":"19465:8:75"},{"arguments":[{"kind":"number","nativeSrc":"19479:1:75","nodeType":"YulLiteral","src":"19479:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"19475:3:75","nodeType":"YulIdentifier","src":"19475:3:75"},"nativeSrc":"19475:6:75","nodeType":"YulFunctionCall","src":"19475:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"19440:18:75","nodeType":"YulIdentifier","src":"19440:18:75"},"nativeSrc":"19440:42:75","nodeType":"YulFunctionCall","src":"19440:42:75"},"variables":[{"name":"power_1","nativeSrc":"19421:7:75","nodeType":"YulTypedName","src":"19421:7:75","type":""},{"name":"base_1","nativeSrc":"19430:6:75","nodeType":"YulTypedName","src":"19430:6:75","type":""}]},{"body":{"nativeSrc":"19527:22:75","nodeType":"YulBlock","src":"19527:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19529:16:75","nodeType":"YulIdentifier","src":"19529:16:75"},"nativeSrc":"19529:18:75","nodeType":"YulFunctionCall","src":"19529:18:75"},"nativeSrc":"19529:18:75","nodeType":"YulExpressionStatement","src":"19529:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"19497:7:75","nodeType":"YulIdentifier","src":"19497:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19514:1:75","nodeType":"YulLiteral","src":"19514:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"19510:3:75","nodeType":"YulIdentifier","src":"19510:3:75"},"nativeSrc":"19510:6:75","nodeType":"YulFunctionCall","src":"19510:6:75"},{"name":"base_1","nativeSrc":"19518:6:75","nodeType":"YulIdentifier","src":"19518:6:75"}],"functionName":{"name":"div","nativeSrc":"19506:3:75","nodeType":"YulIdentifier","src":"19506:3:75"},"nativeSrc":"19506:19:75","nodeType":"YulFunctionCall","src":"19506:19:75"}],"functionName":{"name":"gt","nativeSrc":"19494:2:75","nodeType":"YulIdentifier","src":"19494:2:75"},"nativeSrc":"19494:32:75","nodeType":"YulFunctionCall","src":"19494:32:75"},"nativeSrc":"19491:58:75","nodeType":"YulIf","src":"19491:58:75"},{"nativeSrc":"19558:29:75","nodeType":"YulAssignment","src":"19558:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"19571:7:75","nodeType":"YulIdentifier","src":"19571:7:75"},{"name":"base_1","nativeSrc":"19580:6:75","nodeType":"YulIdentifier","src":"19580:6:75"}],"functionName":{"name":"mul","nativeSrc":"19567:3:75","nodeType":"YulIdentifier","src":"19567:3:75"},"nativeSrc":"19567:20:75","nodeType":"YulFunctionCall","src":"19567:20:75"},"variableNames":[{"name":"power","nativeSrc":"19558:5:75","nodeType":"YulIdentifier","src":"19558:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"18691:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"18721:4:75","nodeType":"YulTypedName","src":"18721:4:75","type":""},{"name":"exponent","nativeSrc":"18727:8:75","nodeType":"YulTypedName","src":"18727:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18740:5:75","nodeType":"YulTypedName","src":"18740:5:75","type":""}],"src":"18691:902:75"},{"body":{"nativeSrc":"19666:72:75","nodeType":"YulBlock","src":"19666:72:75","statements":[{"nativeSrc":"19676:56:75","nodeType":"YulAssignment","src":"19676:56:75","value":{"arguments":[{"name":"base","nativeSrc":"19706:4:75","nodeType":"YulIdentifier","src":"19706:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"19716:8:75","nodeType":"YulIdentifier","src":"19716:8:75"},{"kind":"number","nativeSrc":"19726:4:75","nodeType":"YulLiteral","src":"19726:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19712:3:75","nodeType":"YulIdentifier","src":"19712:3:75"},"nativeSrc":"19712:19:75","nodeType":"YulFunctionCall","src":"19712:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"19685:20:75","nodeType":"YulIdentifier","src":"19685:20:75"},"nativeSrc":"19685:47:75","nodeType":"YulFunctionCall","src":"19685:47:75"},"variableNames":[{"name":"power","nativeSrc":"19676:5:75","nodeType":"YulIdentifier","src":"19676:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"19598:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"19637:4:75","nodeType":"YulTypedName","src":"19637:4:75","type":""},{"name":"exponent","nativeSrc":"19643:8:75","nodeType":"YulTypedName","src":"19643:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"19656:5:75","nodeType":"YulTypedName","src":"19656:5:75","type":""}],"src":"19598:140:75"},{"body":{"nativeSrc":"19847:170:75","nodeType":"YulBlock","src":"19847:170:75","statements":[{"body":{"nativeSrc":"19893:16:75","nodeType":"YulBlock","src":"19893:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19902:1:75","nodeType":"YulLiteral","src":"19902:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19905:1:75","nodeType":"YulLiteral","src":"19905:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19895:6:75","nodeType":"YulIdentifier","src":"19895:6:75"},"nativeSrc":"19895:12:75","nodeType":"YulFunctionCall","src":"19895:12:75"},"nativeSrc":"19895:12:75","nodeType":"YulExpressionStatement","src":"19895:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"19868:7:75","nodeType":"YulIdentifier","src":"19868:7:75"},{"name":"headStart","nativeSrc":"19877:9:75","nodeType":"YulIdentifier","src":"19877:9:75"}],"functionName":{"name":"sub","nativeSrc":"19864:3:75","nodeType":"YulIdentifier","src":"19864:3:75"},"nativeSrc":"19864:23:75","nodeType":"YulFunctionCall","src":"19864:23:75"},{"kind":"number","nativeSrc":"19889:2:75","nodeType":"YulLiteral","src":"19889:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"19860:3:75","nodeType":"YulIdentifier","src":"19860:3:75"},"nativeSrc":"19860:32:75","nodeType":"YulFunctionCall","src":"19860:32:75"},"nativeSrc":"19857:52:75","nodeType":"YulIf","src":"19857:52:75"},{"nativeSrc":"19918:29:75","nodeType":"YulVariableDeclaration","src":"19918:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19937:9:75","nodeType":"YulIdentifier","src":"19937:9:75"}],"functionName":{"name":"mload","nativeSrc":"19931:5:75","nodeType":"YulIdentifier","src":"19931:5:75"},"nativeSrc":"19931:16:75","nodeType":"YulFunctionCall","src":"19931:16:75"},"variables":[{"name":"value","nativeSrc":"19922:5:75","nodeType":"YulTypedName","src":"19922:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"19981:5:75","nodeType":"YulIdentifier","src":"19981:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"19956:24:75","nodeType":"YulIdentifier","src":"19956:24:75"},"nativeSrc":"19956:31:75","nodeType":"YulFunctionCall","src":"19956:31:75"},"nativeSrc":"19956:31:75","nodeType":"YulExpressionStatement","src":"19956:31:75"},{"nativeSrc":"19996:15:75","nodeType":"YulAssignment","src":"19996:15:75","value":{"name":"value","nativeSrc":"20006:5:75","nodeType":"YulIdentifier","src":"20006:5:75"},"variableNames":[{"name":"value0","nativeSrc":"19996:6:75","nodeType":"YulIdentifier","src":"19996:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IAccessManager_$7253_fromMemory","nativeSrc":"19743:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19813:9:75","nodeType":"YulTypedName","src":"19813:9:75","type":""},{"name":"dataEnd","nativeSrc":"19824:7:75","nodeType":"YulTypedName","src":"19824:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"19836:6:75","nodeType":"YulTypedName","src":"19836:6:75","type":""}],"src":"19743:274:75"},{"body":{"nativeSrc":"20177:241:75","nodeType":"YulBlock","src":"20177:241:75","statements":[{"nativeSrc":"20187:26:75","nodeType":"YulAssignment","src":"20187:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20199:9:75","nodeType":"YulIdentifier","src":"20199:9:75"},{"kind":"number","nativeSrc":"20210:2:75","nodeType":"YulLiteral","src":"20210:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"20195:3:75","nodeType":"YulIdentifier","src":"20195:3:75"},"nativeSrc":"20195:18:75","nodeType":"YulFunctionCall","src":"20195:18:75"},"variableNames":[{"name":"tail","nativeSrc":"20187:4:75","nodeType":"YulIdentifier","src":"20187:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20229:9:75","nodeType":"YulIdentifier","src":"20229:9:75"},{"arguments":[{"name":"value0","nativeSrc":"20244:6:75","nodeType":"YulIdentifier","src":"20244:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"20260:3:75","nodeType":"YulLiteral","src":"20260:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"20265:1:75","nodeType":"YulLiteral","src":"20265:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"20256:3:75","nodeType":"YulIdentifier","src":"20256:3:75"},"nativeSrc":"20256:11:75","nodeType":"YulFunctionCall","src":"20256:11:75"},{"kind":"number","nativeSrc":"20269:1:75","nodeType":"YulLiteral","src":"20269:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"20252:3:75","nodeType":"YulIdentifier","src":"20252:3:75"},"nativeSrc":"20252:19:75","nodeType":"YulFunctionCall","src":"20252:19:75"}],"functionName":{"name":"and","nativeSrc":"20240:3:75","nodeType":"YulIdentifier","src":"20240:3:75"},"nativeSrc":"20240:32:75","nodeType":"YulFunctionCall","src":"20240:32:75"}],"functionName":{"name":"mstore","nativeSrc":"20222:6:75","nodeType":"YulIdentifier","src":"20222:6:75"},"nativeSrc":"20222:51:75","nodeType":"YulFunctionCall","src":"20222:51:75"},"nativeSrc":"20222:51:75","nodeType":"YulExpressionStatement","src":"20222:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20293:9:75","nodeType":"YulIdentifier","src":"20293:9:75"},{"kind":"number","nativeSrc":"20304:2:75","nodeType":"YulLiteral","src":"20304:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20289:3:75","nodeType":"YulIdentifier","src":"20289:3:75"},"nativeSrc":"20289:18:75","nodeType":"YulFunctionCall","src":"20289:18:75"},{"arguments":[{"name":"value1","nativeSrc":"20313:6:75","nodeType":"YulIdentifier","src":"20313:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"20329:3:75","nodeType":"YulLiteral","src":"20329:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"20334:1:75","nodeType":"YulLiteral","src":"20334:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"20325:3:75","nodeType":"YulIdentifier","src":"20325:3:75"},"nativeSrc":"20325:11:75","nodeType":"YulFunctionCall","src":"20325:11:75"},{"kind":"number","nativeSrc":"20338:1:75","nodeType":"YulLiteral","src":"20338:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"20321:3:75","nodeType":"YulIdentifier","src":"20321:3:75"},"nativeSrc":"20321:19:75","nodeType":"YulFunctionCall","src":"20321:19:75"}],"functionName":{"name":"and","nativeSrc":"20309:3:75","nodeType":"YulIdentifier","src":"20309:3:75"},"nativeSrc":"20309:32:75","nodeType":"YulFunctionCall","src":"20309:32:75"}],"functionName":{"name":"mstore","nativeSrc":"20282:6:75","nodeType":"YulIdentifier","src":"20282:6:75"},"nativeSrc":"20282:60:75","nodeType":"YulFunctionCall","src":"20282:60:75"},"nativeSrc":"20282:60:75","nodeType":"YulExpressionStatement","src":"20282:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20362:9:75","nodeType":"YulIdentifier","src":"20362:9:75"},{"kind":"number","nativeSrc":"20373:2:75","nodeType":"YulLiteral","src":"20373:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20358:3:75","nodeType":"YulIdentifier","src":"20358:3:75"},"nativeSrc":"20358:18:75","nodeType":"YulFunctionCall","src":"20358:18:75"},{"arguments":[{"name":"value2","nativeSrc":"20382:6:75","nodeType":"YulIdentifier","src":"20382:6:75"},{"arguments":[{"kind":"number","nativeSrc":"20394:3:75","nodeType":"YulLiteral","src":"20394:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"20399:10:75","nodeType":"YulLiteral","src":"20399:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"20390:3:75","nodeType":"YulIdentifier","src":"20390:3:75"},"nativeSrc":"20390:20:75","nodeType":"YulFunctionCall","src":"20390:20:75"}],"functionName":{"name":"and","nativeSrc":"20378:3:75","nodeType":"YulIdentifier","src":"20378:3:75"},"nativeSrc":"20378:33:75","nodeType":"YulFunctionCall","src":"20378:33:75"}],"functionName":{"name":"mstore","nativeSrc":"20351:6:75","nodeType":"YulIdentifier","src":"20351:6:75"},"nativeSrc":"20351:61:75","nodeType":"YulFunctionCall","src":"20351:61:75"},"nativeSrc":"20351:61:75","nodeType":"YulExpressionStatement","src":"20351:61:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"20022:396:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20130:9:75","nodeType":"YulTypedName","src":"20130:9:75","type":""},{"name":"value2","nativeSrc":"20141:6:75","nodeType":"YulTypedName","src":"20141:6:75","type":""},{"name":"value1","nativeSrc":"20149:6:75","nodeType":"YulTypedName","src":"20149:6:75","type":""},{"name":"value0","nativeSrc":"20157:6:75","nodeType":"YulTypedName","src":"20157:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20168:4:75","nodeType":"YulTypedName","src":"20168:4:75","type":""}],"src":"20022:396:75"},{"body":{"nativeSrc":"20517:316:75","nodeType":"YulBlock","src":"20517:316:75","statements":[{"body":{"nativeSrc":"20563:16:75","nodeType":"YulBlock","src":"20563:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20572:1:75","nodeType":"YulLiteral","src":"20572:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"20575:1:75","nodeType":"YulLiteral","src":"20575:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20565:6:75","nodeType":"YulIdentifier","src":"20565:6:75"},"nativeSrc":"20565:12:75","nodeType":"YulFunctionCall","src":"20565:12:75"},"nativeSrc":"20565:12:75","nodeType":"YulExpressionStatement","src":"20565:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"20538:7:75","nodeType":"YulIdentifier","src":"20538:7:75"},{"name":"headStart","nativeSrc":"20547:9:75","nodeType":"YulIdentifier","src":"20547:9:75"}],"functionName":{"name":"sub","nativeSrc":"20534:3:75","nodeType":"YulIdentifier","src":"20534:3:75"},"nativeSrc":"20534:23:75","nodeType":"YulFunctionCall","src":"20534:23:75"},{"kind":"number","nativeSrc":"20559:2:75","nodeType":"YulLiteral","src":"20559:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"20530:3:75","nodeType":"YulIdentifier","src":"20530:3:75"},"nativeSrc":"20530:32:75","nodeType":"YulFunctionCall","src":"20530:32:75"},"nativeSrc":"20527:52:75","nodeType":"YulIf","src":"20527:52:75"},{"nativeSrc":"20588:29:75","nodeType":"YulVariableDeclaration","src":"20588:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20607:9:75","nodeType":"YulIdentifier","src":"20607:9:75"}],"functionName":{"name":"mload","nativeSrc":"20601:5:75","nodeType":"YulIdentifier","src":"20601:5:75"},"nativeSrc":"20601:16:75","nodeType":"YulFunctionCall","src":"20601:16:75"},"variables":[{"name":"value","nativeSrc":"20592:5:75","nodeType":"YulTypedName","src":"20592:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"20648:5:75","nodeType":"YulIdentifier","src":"20648:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"20626:21:75","nodeType":"YulIdentifier","src":"20626:21:75"},"nativeSrc":"20626:28:75","nodeType":"YulFunctionCall","src":"20626:28:75"},"nativeSrc":"20626:28:75","nodeType":"YulExpressionStatement","src":"20626:28:75"},{"nativeSrc":"20663:15:75","nodeType":"YulAssignment","src":"20663:15:75","value":{"name":"value","nativeSrc":"20673:5:75","nodeType":"YulIdentifier","src":"20673:5:75"},"variableNames":[{"name":"value0","nativeSrc":"20663:6:75","nodeType":"YulIdentifier","src":"20663:6:75"}]},{"nativeSrc":"20687:40:75","nodeType":"YulVariableDeclaration","src":"20687:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"20712:9:75","nodeType":"YulIdentifier","src":"20712:9:75"},{"kind":"number","nativeSrc":"20723:2:75","nodeType":"YulLiteral","src":"20723:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20708:3:75","nodeType":"YulIdentifier","src":"20708:3:75"},"nativeSrc":"20708:18:75","nodeType":"YulFunctionCall","src":"20708:18:75"}],"functionName":{"name":"mload","nativeSrc":"20702:5:75","nodeType":"YulIdentifier","src":"20702:5:75"},"nativeSrc":"20702:25:75","nodeType":"YulFunctionCall","src":"20702:25:75"},"variables":[{"name":"value_1","nativeSrc":"20691:7:75","nodeType":"YulTypedName","src":"20691:7:75","type":""}]},{"body":{"nativeSrc":"20785:16:75","nodeType":"YulBlock","src":"20785:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20794:1:75","nodeType":"YulLiteral","src":"20794:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"20797:1:75","nodeType":"YulLiteral","src":"20797:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20787:6:75","nodeType":"YulIdentifier","src":"20787:6:75"},"nativeSrc":"20787:12:75","nodeType":"YulFunctionCall","src":"20787:12:75"},"nativeSrc":"20787:12:75","nodeType":"YulExpressionStatement","src":"20787:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"20749:7:75","nodeType":"YulIdentifier","src":"20749:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"20762:7:75","nodeType":"YulIdentifier","src":"20762:7:75"},{"kind":"number","nativeSrc":"20771:10:75","nodeType":"YulLiteral","src":"20771:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"20758:3:75","nodeType":"YulIdentifier","src":"20758:3:75"},"nativeSrc":"20758:24:75","nodeType":"YulFunctionCall","src":"20758:24:75"}],"functionName":{"name":"eq","nativeSrc":"20746:2:75","nodeType":"YulIdentifier","src":"20746:2:75"},"nativeSrc":"20746:37:75","nodeType":"YulFunctionCall","src":"20746:37:75"}],"functionName":{"name":"iszero","nativeSrc":"20739:6:75","nodeType":"YulIdentifier","src":"20739:6:75"},"nativeSrc":"20739:45:75","nodeType":"YulFunctionCall","src":"20739:45:75"},"nativeSrc":"20736:65:75","nodeType":"YulIf","src":"20736:65:75"},{"nativeSrc":"20810:17:75","nodeType":"YulAssignment","src":"20810:17:75","value":{"name":"value_1","nativeSrc":"20820:7:75","nodeType":"YulIdentifier","src":"20820:7:75"},"variableNames":[{"name":"value1","nativeSrc":"20810:6:75","nodeType":"YulIdentifier","src":"20810:6:75"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"20423:410:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20475:9:75","nodeType":"YulTypedName","src":"20475:9:75","type":""},{"name":"dataEnd","nativeSrc":"20486:7:75","nodeType":"YulTypedName","src":"20486:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"20498:6:75","nodeType":"YulTypedName","src":"20498:6:75","type":""},{"name":"value1","nativeSrc":"20506:6:75","nodeType":"YulTypedName","src":"20506:6:75","type":""}],"src":"20423:410:75"},{"body":{"nativeSrc":"20981:153:75","nodeType":"YulBlock","src":"20981:153:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20998:9:75","nodeType":"YulIdentifier","src":"20998:9:75"},{"arguments":[{"name":"value0","nativeSrc":"21013:6:75","nodeType":"YulIdentifier","src":"21013:6:75"},{"kind":"number","nativeSrc":"21021:4:75","nodeType":"YulLiteral","src":"21021:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"21009:3:75","nodeType":"YulIdentifier","src":"21009:3:75"},"nativeSrc":"21009:17:75","nodeType":"YulFunctionCall","src":"21009:17:75"}],"functionName":{"name":"mstore","nativeSrc":"20991:6:75","nodeType":"YulIdentifier","src":"20991:6:75"},"nativeSrc":"20991:36:75","nodeType":"YulFunctionCall","src":"20991:36:75"},"nativeSrc":"20991:36:75","nodeType":"YulExpressionStatement","src":"20991:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21047:9:75","nodeType":"YulIdentifier","src":"21047:9:75"},{"kind":"number","nativeSrc":"21058:2:75","nodeType":"YulLiteral","src":"21058:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21043:3:75","nodeType":"YulIdentifier","src":"21043:3:75"},"nativeSrc":"21043:18:75","nodeType":"YulFunctionCall","src":"21043:18:75"},{"kind":"number","nativeSrc":"21063:2:75","nodeType":"YulLiteral","src":"21063:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"21036:6:75","nodeType":"YulIdentifier","src":"21036:6:75"},"nativeSrc":"21036:30:75","nodeType":"YulFunctionCall","src":"21036:30:75"},"nativeSrc":"21036:30:75","nodeType":"YulExpressionStatement","src":"21036:30:75"},{"nativeSrc":"21075:53:75","nodeType":"YulAssignment","src":"21075:53:75","value":{"arguments":[{"name":"value1","nativeSrc":"21101:6:75","nodeType":"YulIdentifier","src":"21101:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"21113:9:75","nodeType":"YulIdentifier","src":"21113:9:75"},{"kind":"number","nativeSrc":"21124:2:75","nodeType":"YulLiteral","src":"21124:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21109:3:75","nodeType":"YulIdentifier","src":"21109:3:75"},"nativeSrc":"21109:18:75","nodeType":"YulFunctionCall","src":"21109:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"21083:17:75","nodeType":"YulIdentifier","src":"21083:17:75"},"nativeSrc":"21083:45:75","nodeType":"YulFunctionCall","src":"21083:45:75"},"variableNames":[{"name":"tail","nativeSrc":"21075:4:75","nodeType":"YulIdentifier","src":"21075:4:75"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"20838:296:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20942:9:75","nodeType":"YulTypedName","src":"20942:9:75","type":""},{"name":"value1","nativeSrc":"20953:6:75","nodeType":"YulTypedName","src":"20953:6:75","type":""},{"name":"value0","nativeSrc":"20961:6:75","nodeType":"YulTypedName","src":"20961:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20972:4:75","nodeType":"YulTypedName","src":"20972:4:75","type":""}],"src":"20838:296:75"},{"body":{"nativeSrc":"21220:103:75","nodeType":"YulBlock","src":"21220:103:75","statements":[{"body":{"nativeSrc":"21266:16:75","nodeType":"YulBlock","src":"21266:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21275:1:75","nodeType":"YulLiteral","src":"21275:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"21278:1:75","nodeType":"YulLiteral","src":"21278:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21268:6:75","nodeType":"YulIdentifier","src":"21268:6:75"},"nativeSrc":"21268:12:75","nodeType":"YulFunctionCall","src":"21268:12:75"},"nativeSrc":"21268:12:75","nodeType":"YulExpressionStatement","src":"21268:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21241:7:75","nodeType":"YulIdentifier","src":"21241:7:75"},{"name":"headStart","nativeSrc":"21250:9:75","nodeType":"YulIdentifier","src":"21250:9:75"}],"functionName":{"name":"sub","nativeSrc":"21237:3:75","nodeType":"YulIdentifier","src":"21237:3:75"},"nativeSrc":"21237:23:75","nodeType":"YulFunctionCall","src":"21237:23:75"},{"kind":"number","nativeSrc":"21262:2:75","nodeType":"YulLiteral","src":"21262:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21233:3:75","nodeType":"YulIdentifier","src":"21233:3:75"},"nativeSrc":"21233:32:75","nodeType":"YulFunctionCall","src":"21233:32:75"},"nativeSrc":"21230:52:75","nodeType":"YulIf","src":"21230:52:75"},{"nativeSrc":"21291:26:75","nodeType":"YulAssignment","src":"21291:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21307:9:75","nodeType":"YulIdentifier","src":"21307:9:75"}],"functionName":{"name":"mload","nativeSrc":"21301:5:75","nodeType":"YulIdentifier","src":"21301:5:75"},"nativeSrc":"21301:16:75","nodeType":"YulFunctionCall","src":"21301:16:75"},"variableNames":[{"name":"value0","nativeSrc":"21291:6:75","nodeType":"YulIdentifier","src":"21291:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"21139:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21186:9:75","nodeType":"YulTypedName","src":"21186:9:75","type":""},{"name":"dataEnd","nativeSrc":"21197:7:75","nodeType":"YulTypedName","src":"21197:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21209:6:75","nodeType":"YulTypedName","src":"21209:6:75","type":""}],"src":"21139:184:75"},{"body":{"nativeSrc":"21507:171:75","nodeType":"YulBlock","src":"21507:171:75","statements":[{"nativeSrc":"21517:26:75","nodeType":"YulAssignment","src":"21517:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21529:9:75","nodeType":"YulIdentifier","src":"21529:9:75"},{"kind":"number","nativeSrc":"21540:2:75","nodeType":"YulLiteral","src":"21540:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21525:3:75","nodeType":"YulIdentifier","src":"21525:3:75"},"nativeSrc":"21525:18:75","nodeType":"YulFunctionCall","src":"21525:18:75"},"variableNames":[{"name":"tail","nativeSrc":"21517:4:75","nodeType":"YulIdentifier","src":"21517:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21559:9:75","nodeType":"YulIdentifier","src":"21559:9:75"},{"arguments":[{"name":"value0","nativeSrc":"21574:6:75","nodeType":"YulIdentifier","src":"21574:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21590:3:75","nodeType":"YulLiteral","src":"21590:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"21595:1:75","nodeType":"YulLiteral","src":"21595:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21586:3:75","nodeType":"YulIdentifier","src":"21586:3:75"},"nativeSrc":"21586:11:75","nodeType":"YulFunctionCall","src":"21586:11:75"},{"kind":"number","nativeSrc":"21599:1:75","nodeType":"YulLiteral","src":"21599:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21582:3:75","nodeType":"YulIdentifier","src":"21582:3:75"},"nativeSrc":"21582:19:75","nodeType":"YulFunctionCall","src":"21582:19:75"}],"functionName":{"name":"and","nativeSrc":"21570:3:75","nodeType":"YulIdentifier","src":"21570:3:75"},"nativeSrc":"21570:32:75","nodeType":"YulFunctionCall","src":"21570:32:75"}],"functionName":{"name":"mstore","nativeSrc":"21552:6:75","nodeType":"YulIdentifier","src":"21552:6:75"},"nativeSrc":"21552:51:75","nodeType":"YulFunctionCall","src":"21552:51:75"},"nativeSrc":"21552:51:75","nodeType":"YulExpressionStatement","src":"21552:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21623:9:75","nodeType":"YulIdentifier","src":"21623:9:75"},{"kind":"number","nativeSrc":"21634:2:75","nodeType":"YulLiteral","src":"21634:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21619:3:75","nodeType":"YulIdentifier","src":"21619:3:75"},"nativeSrc":"21619:18:75","nodeType":"YulFunctionCall","src":"21619:18:75"},{"arguments":[{"name":"value1","nativeSrc":"21643:6:75","nodeType":"YulIdentifier","src":"21643:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21659:3:75","nodeType":"YulLiteral","src":"21659:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"21664:1:75","nodeType":"YulLiteral","src":"21664:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21655:3:75","nodeType":"YulIdentifier","src":"21655:3:75"},"nativeSrc":"21655:11:75","nodeType":"YulFunctionCall","src":"21655:11:75"},{"kind":"number","nativeSrc":"21668:1:75","nodeType":"YulLiteral","src":"21668:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21651:3:75","nodeType":"YulIdentifier","src":"21651:3:75"},"nativeSrc":"21651:19:75","nodeType":"YulFunctionCall","src":"21651:19:75"}],"functionName":{"name":"and","nativeSrc":"21639:3:75","nodeType":"YulIdentifier","src":"21639:3:75"},"nativeSrc":"21639:32:75","nodeType":"YulFunctionCall","src":"21639:32:75"}],"functionName":{"name":"mstore","nativeSrc":"21612:6:75","nodeType":"YulIdentifier","src":"21612:6:75"},"nativeSrc":"21612:60:75","nodeType":"YulFunctionCall","src":"21612:60:75"},"nativeSrc":"21612:60:75","nodeType":"YulExpressionStatement","src":"21612:60:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__to_t_address_t_address__fromStack_reversed","nativeSrc":"21328:350:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21468:9:75","nodeType":"YulTypedName","src":"21468:9:75","type":""},{"name":"value1","nativeSrc":"21479:6:75","nodeType":"YulTypedName","src":"21479:6:75","type":""},{"name":"value0","nativeSrc":"21487:6:75","nodeType":"YulTypedName","src":"21487:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21498:4:75","nodeType":"YulTypedName","src":"21498:4:75","type":""}],"src":"21328:350:75"},{"body":{"nativeSrc":"21764:170:75","nodeType":"YulBlock","src":"21764:170:75","statements":[{"body":{"nativeSrc":"21810:16:75","nodeType":"YulBlock","src":"21810:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21819:1:75","nodeType":"YulLiteral","src":"21819:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"21822:1:75","nodeType":"YulLiteral","src":"21822:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21812:6:75","nodeType":"YulIdentifier","src":"21812:6:75"},"nativeSrc":"21812:12:75","nodeType":"YulFunctionCall","src":"21812:12:75"},"nativeSrc":"21812:12:75","nodeType":"YulExpressionStatement","src":"21812:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21785:7:75","nodeType":"YulIdentifier","src":"21785:7:75"},{"name":"headStart","nativeSrc":"21794:9:75","nodeType":"YulIdentifier","src":"21794:9:75"}],"functionName":{"name":"sub","nativeSrc":"21781:3:75","nodeType":"YulIdentifier","src":"21781:3:75"},"nativeSrc":"21781:23:75","nodeType":"YulFunctionCall","src":"21781:23:75"},{"kind":"number","nativeSrc":"21806:2:75","nodeType":"YulLiteral","src":"21806:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21777:3:75","nodeType":"YulIdentifier","src":"21777:3:75"},"nativeSrc":"21777:32:75","nodeType":"YulFunctionCall","src":"21777:32:75"},"nativeSrc":"21774:52:75","nodeType":"YulIf","src":"21774:52:75"},{"nativeSrc":"21835:29:75","nodeType":"YulVariableDeclaration","src":"21835:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21854:9:75","nodeType":"YulIdentifier","src":"21854:9:75"}],"functionName":{"name":"mload","nativeSrc":"21848:5:75","nodeType":"YulIdentifier","src":"21848:5:75"},"nativeSrc":"21848:16:75","nodeType":"YulFunctionCall","src":"21848:16:75"},"variables":[{"name":"value","nativeSrc":"21839:5:75","nodeType":"YulTypedName","src":"21839:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"21898:5:75","nodeType":"YulIdentifier","src":"21898:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"21873:24:75","nodeType":"YulIdentifier","src":"21873:24:75"},"nativeSrc":"21873:31:75","nodeType":"YulFunctionCall","src":"21873:31:75"},"nativeSrc":"21873:31:75","nodeType":"YulExpressionStatement","src":"21873:31:75"},{"nativeSrc":"21913:15:75","nodeType":"YulAssignment","src":"21913:15:75","value":{"name":"value","nativeSrc":"21923:5:75","nodeType":"YulIdentifier","src":"21923:5:75"},"variableNames":[{"name":"value0","nativeSrc":"21913:6:75","nodeType":"YulIdentifier","src":"21913:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"21683:251:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21730:9:75","nodeType":"YulTypedName","src":"21730:9:75","type":""},{"name":"dataEnd","nativeSrc":"21741:7:75","nodeType":"YulTypedName","src":"21741:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21753:6:75","nodeType":"YulTypedName","src":"21753:6:75","type":""}],"src":"21683:251:75"},{"body":{"nativeSrc":"22076:164:75","nodeType":"YulBlock","src":"22076:164:75","statements":[{"nativeSrc":"22086:27:75","nodeType":"YulVariableDeclaration","src":"22086:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"22106:6:75","nodeType":"YulIdentifier","src":"22106:6:75"}],"functionName":{"name":"mload","nativeSrc":"22100:5:75","nodeType":"YulIdentifier","src":"22100:5:75"},"nativeSrc":"22100:13:75","nodeType":"YulFunctionCall","src":"22100:13:75"},"variables":[{"name":"length","nativeSrc":"22090:6:75","nodeType":"YulTypedName","src":"22090:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"22128:3:75","nodeType":"YulIdentifier","src":"22128:3:75"},{"arguments":[{"name":"value0","nativeSrc":"22137:6:75","nodeType":"YulIdentifier","src":"22137:6:75"},{"kind":"number","nativeSrc":"22145:4:75","nodeType":"YulLiteral","src":"22145:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"22133:3:75","nodeType":"YulIdentifier","src":"22133:3:75"},"nativeSrc":"22133:17:75","nodeType":"YulFunctionCall","src":"22133:17:75"},{"name":"length","nativeSrc":"22152:6:75","nodeType":"YulIdentifier","src":"22152:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"22122:5:75","nodeType":"YulIdentifier","src":"22122:5:75"},"nativeSrc":"22122:37:75","nodeType":"YulFunctionCall","src":"22122:37:75"},"nativeSrc":"22122:37:75","nodeType":"YulExpressionStatement","src":"22122:37:75"},{"nativeSrc":"22168:26:75","nodeType":"YulVariableDeclaration","src":"22168:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"22182:3:75","nodeType":"YulIdentifier","src":"22182:3:75"},{"name":"length","nativeSrc":"22187:6:75","nodeType":"YulIdentifier","src":"22187:6:75"}],"functionName":{"name":"add","nativeSrc":"22178:3:75","nodeType":"YulIdentifier","src":"22178:3:75"},"nativeSrc":"22178:16:75","nodeType":"YulFunctionCall","src":"22178:16:75"},"variables":[{"name":"_1","nativeSrc":"22172:2:75","nodeType":"YulTypedName","src":"22172:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"22210:2:75","nodeType":"YulIdentifier","src":"22210:2:75"},{"kind":"number","nativeSrc":"22214:1:75","nodeType":"YulLiteral","src":"22214:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"22203:6:75","nodeType":"YulIdentifier","src":"22203:6:75"},"nativeSrc":"22203:13:75","nodeType":"YulFunctionCall","src":"22203:13:75"},"nativeSrc":"22203:13:75","nodeType":"YulExpressionStatement","src":"22203:13:75"},{"nativeSrc":"22225:9:75","nodeType":"YulAssignment","src":"22225:9:75","value":{"name":"_1","nativeSrc":"22232:2:75","nodeType":"YulIdentifier","src":"22232:2:75"},"variableNames":[{"name":"end","nativeSrc":"22225:3:75","nodeType":"YulIdentifier","src":"22225:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"21939:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"22052:3:75","nodeType":"YulTypedName","src":"22052:3:75","type":""},{"name":"value0","nativeSrc":"22057:6:75","nodeType":"YulTypedName","src":"22057:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"22068:3:75","nodeType":"YulTypedName","src":"22068:3:75","type":""}],"src":"21939:301:75"},{"body":{"nativeSrc":"22277:95:75","nodeType":"YulBlock","src":"22277:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22294:1:75","nodeType":"YulLiteral","src":"22294:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22301:3:75","nodeType":"YulLiteral","src":"22301:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22306:10:75","nodeType":"YulLiteral","src":"22306:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22297:3:75","nodeType":"YulIdentifier","src":"22297:3:75"},"nativeSrc":"22297:20:75","nodeType":"YulFunctionCall","src":"22297:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22287:6:75","nodeType":"YulIdentifier","src":"22287:6:75"},"nativeSrc":"22287:31:75","nodeType":"YulFunctionCall","src":"22287:31:75"},"nativeSrc":"22287:31:75","nodeType":"YulExpressionStatement","src":"22287:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22334:1:75","nodeType":"YulLiteral","src":"22334:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22337:4:75","nodeType":"YulLiteral","src":"22337:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22327:6:75","nodeType":"YulIdentifier","src":"22327:6:75"},"nativeSrc":"22327:15:75","nodeType":"YulFunctionCall","src":"22327:15:75"},"nativeSrc":"22327:15:75","nodeType":"YulExpressionStatement","src":"22327:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22358:1:75","nodeType":"YulLiteral","src":"22358:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22361:4:75","nodeType":"YulLiteral","src":"22361:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22351:6:75","nodeType":"YulIdentifier","src":"22351:6:75"},"nativeSrc":"22351:15:75","nodeType":"YulFunctionCall","src":"22351:15:75"},"nativeSrc":"22351:15:75","nodeType":"YulExpressionStatement","src":"22351:15:75"}]},"name":"panic_error_0x12","nativeSrc":"22245:127:75","nodeType":"YulFunctionDefinition","src":"22245:127:75"},{"body":{"nativeSrc":"22506:119:75","nodeType":"YulBlock","src":"22506:119:75","statements":[{"nativeSrc":"22516:26:75","nodeType":"YulAssignment","src":"22516:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22528:9:75","nodeType":"YulIdentifier","src":"22528:9:75"},{"kind":"number","nativeSrc":"22539:2:75","nodeType":"YulLiteral","src":"22539:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22524:3:75","nodeType":"YulIdentifier","src":"22524:3:75"},"nativeSrc":"22524:18:75","nodeType":"YulFunctionCall","src":"22524:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22516:4:75","nodeType":"YulIdentifier","src":"22516:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22558:9:75","nodeType":"YulIdentifier","src":"22558:9:75"},{"name":"value0","nativeSrc":"22569:6:75","nodeType":"YulIdentifier","src":"22569:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22551:6:75","nodeType":"YulIdentifier","src":"22551:6:75"},"nativeSrc":"22551:25:75","nodeType":"YulFunctionCall","src":"22551:25:75"},"nativeSrc":"22551:25:75","nodeType":"YulExpressionStatement","src":"22551:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22596:9:75","nodeType":"YulIdentifier","src":"22596:9:75"},{"kind":"number","nativeSrc":"22607:2:75","nodeType":"YulLiteral","src":"22607:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22592:3:75","nodeType":"YulIdentifier","src":"22592:3:75"},"nativeSrc":"22592:18:75","nodeType":"YulFunctionCall","src":"22592:18:75"},{"name":"value1","nativeSrc":"22612:6:75","nodeType":"YulIdentifier","src":"22612:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22585:6:75","nodeType":"YulIdentifier","src":"22585:6:75"},"nativeSrc":"22585:34:75","nodeType":"YulFunctionCall","src":"22585:34:75"},"nativeSrc":"22585:34:75","nodeType":"YulExpressionStatement","src":"22585:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"22377:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22467:9:75","nodeType":"YulTypedName","src":"22467:9:75","type":""},{"name":"value1","nativeSrc":"22478:6:75","nodeType":"YulTypedName","src":"22478:6:75","type":""},{"name":"value0","nativeSrc":"22486:6:75","nodeType":"YulTypedName","src":"22486:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22497:4:75","nodeType":"YulTypedName","src":"22497:4:75","type":""}],"src":"22377:248:75"},{"body":{"nativeSrc":"22662:95:75","nodeType":"YulBlock","src":"22662:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22679:1:75","nodeType":"YulLiteral","src":"22679:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22686:3:75","nodeType":"YulLiteral","src":"22686:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22691:10:75","nodeType":"YulLiteral","src":"22691:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22682:3:75","nodeType":"YulIdentifier","src":"22682:3:75"},"nativeSrc":"22682:20:75","nodeType":"YulFunctionCall","src":"22682:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22672:6:75","nodeType":"YulIdentifier","src":"22672:6:75"},"nativeSrc":"22672:31:75","nodeType":"YulFunctionCall","src":"22672:31:75"},"nativeSrc":"22672:31:75","nodeType":"YulExpressionStatement","src":"22672:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22719:1:75","nodeType":"YulLiteral","src":"22719:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22722:4:75","nodeType":"YulLiteral","src":"22722:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"22712:6:75","nodeType":"YulIdentifier","src":"22712:6:75"},"nativeSrc":"22712:15:75","nodeType":"YulFunctionCall","src":"22712:15:75"},"nativeSrc":"22712:15:75","nodeType":"YulExpressionStatement","src":"22712:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22743:1:75","nodeType":"YulLiteral","src":"22743:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22746:4:75","nodeType":"YulLiteral","src":"22746:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22736:6:75","nodeType":"YulIdentifier","src":"22736:6:75"},"nativeSrc":"22736:15:75","nodeType":"YulFunctionCall","src":"22736:15:75"},"nativeSrc":"22736:15:75","nodeType":"YulExpressionStatement","src":"22736:15:75"}]},"name":"panic_error_0x21","nativeSrc":"22630:127:75","nodeType":"YulFunctionDefinition","src":"22630:127:75"},{"body":{"nativeSrc":"22798:218:75","nodeType":"YulBlock","src":"22798:218:75","statements":[{"nativeSrc":"22808:23:75","nodeType":"YulVariableDeclaration","src":"22808:23:75","value":{"arguments":[{"name":"y","nativeSrc":"22823:1:75","nodeType":"YulIdentifier","src":"22823:1:75"},{"kind":"number","nativeSrc":"22826:4:75","nodeType":"YulLiteral","src":"22826:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22819:3:75","nodeType":"YulIdentifier","src":"22819:3:75"},"nativeSrc":"22819:12:75","nodeType":"YulFunctionCall","src":"22819:12:75"},"variables":[{"name":"y_1","nativeSrc":"22812:3:75","nodeType":"YulTypedName","src":"22812:3:75","type":""}]},{"body":{"nativeSrc":"22863:111:75","nodeType":"YulBlock","src":"22863:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22884:1:75","nodeType":"YulLiteral","src":"22884:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22891:3:75","nodeType":"YulLiteral","src":"22891:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22896:10:75","nodeType":"YulLiteral","src":"22896:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22887:3:75","nodeType":"YulIdentifier","src":"22887:3:75"},"nativeSrc":"22887:20:75","nodeType":"YulFunctionCall","src":"22887:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22877:6:75","nodeType":"YulIdentifier","src":"22877:6:75"},"nativeSrc":"22877:31:75","nodeType":"YulFunctionCall","src":"22877:31:75"},"nativeSrc":"22877:31:75","nodeType":"YulExpressionStatement","src":"22877:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22928:1:75","nodeType":"YulLiteral","src":"22928:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22931:4:75","nodeType":"YulLiteral","src":"22931:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22921:6:75","nodeType":"YulIdentifier","src":"22921:6:75"},"nativeSrc":"22921:15:75","nodeType":"YulFunctionCall","src":"22921:15:75"},"nativeSrc":"22921:15:75","nodeType":"YulExpressionStatement","src":"22921:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22956:1:75","nodeType":"YulLiteral","src":"22956:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22959:4:75","nodeType":"YulLiteral","src":"22959:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22949:6:75","nodeType":"YulIdentifier","src":"22949:6:75"},"nativeSrc":"22949:15:75","nodeType":"YulFunctionCall","src":"22949:15:75"},"nativeSrc":"22949:15:75","nodeType":"YulExpressionStatement","src":"22949:15:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"22850:3:75","nodeType":"YulIdentifier","src":"22850:3:75"}],"functionName":{"name":"iszero","nativeSrc":"22843:6:75","nodeType":"YulIdentifier","src":"22843:6:75"},"nativeSrc":"22843:11:75","nodeType":"YulFunctionCall","src":"22843:11:75"},"nativeSrc":"22840:134:75","nodeType":"YulIf","src":"22840:134:75"},{"nativeSrc":"22983:27:75","nodeType":"YulAssignment","src":"22983:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"22996:1:75","nodeType":"YulIdentifier","src":"22996:1:75"},{"kind":"number","nativeSrc":"22999:4:75","nodeType":"YulLiteral","src":"22999:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22992:3:75","nodeType":"YulIdentifier","src":"22992:3:75"},"nativeSrc":"22992:12:75","nodeType":"YulFunctionCall","src":"22992:12:75"},{"name":"y_1","nativeSrc":"23006:3:75","nodeType":"YulIdentifier","src":"23006:3:75"}],"functionName":{"name":"mod","nativeSrc":"22988:3:75","nodeType":"YulIdentifier","src":"22988:3:75"},"nativeSrc":"22988:22:75","nodeType":"YulFunctionCall","src":"22988:22:75"},"variableNames":[{"name":"r","nativeSrc":"22983:1:75","nodeType":"YulIdentifier","src":"22983:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"22762:254:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"22783:1:75","nodeType":"YulTypedName","src":"22783:1:75","type":""},{"name":"y","nativeSrc":"22786:1:75","nodeType":"YulTypedName","src":"22786:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"22792:1:75","nodeType":"YulTypedName","src":"22792:1:75","type":""}],"src":"22762:254:75"},{"body":{"nativeSrc":"23178:214:75","nodeType":"YulBlock","src":"23178:214:75","statements":[{"nativeSrc":"23188:26:75","nodeType":"YulAssignment","src":"23188:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23200:9:75","nodeType":"YulIdentifier","src":"23200:9:75"},{"kind":"number","nativeSrc":"23211:2:75","nodeType":"YulLiteral","src":"23211:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"23196:3:75","nodeType":"YulIdentifier","src":"23196:3:75"},"nativeSrc":"23196:18:75","nodeType":"YulFunctionCall","src":"23196:18:75"},"variableNames":[{"name":"tail","nativeSrc":"23188:4:75","nodeType":"YulIdentifier","src":"23188:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23230:9:75","nodeType":"YulIdentifier","src":"23230:9:75"},{"arguments":[{"name":"value0","nativeSrc":"23245:6:75","nodeType":"YulIdentifier","src":"23245:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23261:3:75","nodeType":"YulLiteral","src":"23261:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23266:1:75","nodeType":"YulLiteral","src":"23266:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23257:3:75","nodeType":"YulIdentifier","src":"23257:3:75"},"nativeSrc":"23257:11:75","nodeType":"YulFunctionCall","src":"23257:11:75"},{"kind":"number","nativeSrc":"23270:1:75","nodeType":"YulLiteral","src":"23270:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23253:3:75","nodeType":"YulIdentifier","src":"23253:3:75"},"nativeSrc":"23253:19:75","nodeType":"YulFunctionCall","src":"23253:19:75"}],"functionName":{"name":"and","nativeSrc":"23241:3:75","nodeType":"YulIdentifier","src":"23241:3:75"},"nativeSrc":"23241:32:75","nodeType":"YulFunctionCall","src":"23241:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23223:6:75","nodeType":"YulIdentifier","src":"23223:6:75"},"nativeSrc":"23223:51:75","nodeType":"YulFunctionCall","src":"23223:51:75"},"nativeSrc":"23223:51:75","nodeType":"YulExpressionStatement","src":"23223:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23294:9:75","nodeType":"YulIdentifier","src":"23294:9:75"},{"kind":"number","nativeSrc":"23305:2:75","nodeType":"YulLiteral","src":"23305:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23290:3:75","nodeType":"YulIdentifier","src":"23290:3:75"},"nativeSrc":"23290:18:75","nodeType":"YulFunctionCall","src":"23290:18:75"},{"arguments":[{"name":"value1","nativeSrc":"23314:6:75","nodeType":"YulIdentifier","src":"23314:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23330:3:75","nodeType":"YulLiteral","src":"23330:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23335:1:75","nodeType":"YulLiteral","src":"23335:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23326:3:75","nodeType":"YulIdentifier","src":"23326:3:75"},"nativeSrc":"23326:11:75","nodeType":"YulFunctionCall","src":"23326:11:75"},{"kind":"number","nativeSrc":"23339:1:75","nodeType":"YulLiteral","src":"23339:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23322:3:75","nodeType":"YulIdentifier","src":"23322:3:75"},"nativeSrc":"23322:19:75","nodeType":"YulFunctionCall","src":"23322:19:75"}],"functionName":{"name":"and","nativeSrc":"23310:3:75","nodeType":"YulIdentifier","src":"23310:3:75"},"nativeSrc":"23310:32:75","nodeType":"YulFunctionCall","src":"23310:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23283:6:75","nodeType":"YulIdentifier","src":"23283:6:75"},"nativeSrc":"23283:60:75","nodeType":"YulFunctionCall","src":"23283:60:75"},"nativeSrc":"23283:60:75","nodeType":"YulExpressionStatement","src":"23283:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23363:9:75","nodeType":"YulIdentifier","src":"23363:9:75"},{"kind":"number","nativeSrc":"23374:2:75","nodeType":"YulLiteral","src":"23374:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23359:3:75","nodeType":"YulIdentifier","src":"23359:3:75"},"nativeSrc":"23359:18:75","nodeType":"YulFunctionCall","src":"23359:18:75"},{"name":"value2","nativeSrc":"23379:6:75","nodeType":"YulIdentifier","src":"23379:6:75"}],"functionName":{"name":"mstore","nativeSrc":"23352:6:75","nodeType":"YulIdentifier","src":"23352:6:75"},"nativeSrc":"23352:34:75","nodeType":"YulFunctionCall","src":"23352:34:75"},"nativeSrc":"23352:34:75","nodeType":"YulExpressionStatement","src":"23352:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"23021:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23131:9:75","nodeType":"YulTypedName","src":"23131:9:75","type":""},{"name":"value2","nativeSrc":"23142:6:75","nodeType":"YulTypedName","src":"23142:6:75","type":""},{"name":"value1","nativeSrc":"23150:6:75","nodeType":"YulTypedName","src":"23150:6:75","type":""},{"name":"value0","nativeSrc":"23158:6:75","nodeType":"YulTypedName","src":"23158:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23169:4:75","nodeType":"YulTypedName","src":"23169:4:75","type":""}],"src":"23021:371:75"},{"body":{"nativeSrc":"23453:65:75","nodeType":"YulBlock","src":"23453:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23470:1:75","nodeType":"YulLiteral","src":"23470:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"23473:3:75","nodeType":"YulIdentifier","src":"23473:3:75"}],"functionName":{"name":"mstore","nativeSrc":"23463:6:75","nodeType":"YulIdentifier","src":"23463:6:75"},"nativeSrc":"23463:14:75","nodeType":"YulFunctionCall","src":"23463:14:75"},"nativeSrc":"23463:14:75","nodeType":"YulExpressionStatement","src":"23463:14:75"},{"nativeSrc":"23486:26:75","nodeType":"YulAssignment","src":"23486:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"23504:1:75","nodeType":"YulLiteral","src":"23504:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23507:4:75","nodeType":"YulLiteral","src":"23507:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23494:9:75","nodeType":"YulIdentifier","src":"23494:9:75"},"nativeSrc":"23494:18:75","nodeType":"YulFunctionCall","src":"23494:18:75"},"variableNames":[{"name":"data","nativeSrc":"23486:4:75","nodeType":"YulIdentifier","src":"23486:4:75"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"23397:121:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"23436:3:75","nodeType":"YulTypedName","src":"23436:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"23444:4:75","nodeType":"YulTypedName","src":"23444:4:75","type":""}],"src":"23397:121:75"},{"body":{"nativeSrc":"23604:437:75","nodeType":"YulBlock","src":"23604:437:75","statements":[{"body":{"nativeSrc":"23637:398:75","nodeType":"YulBlock","src":"23637:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23658:1:75","nodeType":"YulLiteral","src":"23658:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"23661:5:75","nodeType":"YulIdentifier","src":"23661:5:75"}],"functionName":{"name":"mstore","nativeSrc":"23651:6:75","nodeType":"YulIdentifier","src":"23651:6:75"},"nativeSrc":"23651:16:75","nodeType":"YulFunctionCall","src":"23651:16:75"},"nativeSrc":"23651:16:75","nodeType":"YulExpressionStatement","src":"23651:16:75"},{"nativeSrc":"23680:30:75","nodeType":"YulVariableDeclaration","src":"23680:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"23702:1:75","nodeType":"YulLiteral","src":"23702:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23705:4:75","nodeType":"YulLiteral","src":"23705:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23692:9:75","nodeType":"YulIdentifier","src":"23692:9:75"},"nativeSrc":"23692:18:75","nodeType":"YulFunctionCall","src":"23692:18:75"},"variables":[{"name":"data","nativeSrc":"23684:4:75","nodeType":"YulTypedName","src":"23684:4:75","type":""}]},{"nativeSrc":"23723:57:75","nodeType":"YulVariableDeclaration","src":"23723:57:75","value":{"arguments":[{"name":"data","nativeSrc":"23746:4:75","nodeType":"YulIdentifier","src":"23746:4:75"},{"arguments":[{"kind":"number","nativeSrc":"23756:1:75","nodeType":"YulLiteral","src":"23756:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"23763:10:75","nodeType":"YulIdentifier","src":"23763:10:75"},{"kind":"number","nativeSrc":"23775:2:75","nodeType":"YulLiteral","src":"23775:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23759:3:75","nodeType":"YulIdentifier","src":"23759:3:75"},"nativeSrc":"23759:19:75","nodeType":"YulFunctionCall","src":"23759:19:75"}],"functionName":{"name":"shr","nativeSrc":"23752:3:75","nodeType":"YulIdentifier","src":"23752:3:75"},"nativeSrc":"23752:27:75","nodeType":"YulFunctionCall","src":"23752:27:75"}],"functionName":{"name":"add","nativeSrc":"23742:3:75","nodeType":"YulIdentifier","src":"23742:3:75"},"nativeSrc":"23742:38:75","nodeType":"YulFunctionCall","src":"23742:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"23727:11:75","nodeType":"YulTypedName","src":"23727:11:75","type":""}]},{"body":{"nativeSrc":"23817:23:75","nodeType":"YulBlock","src":"23817:23:75","statements":[{"nativeSrc":"23819:19:75","nodeType":"YulAssignment","src":"23819:19:75","value":{"name":"data","nativeSrc":"23834:4:75","nodeType":"YulIdentifier","src":"23834:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"23819:11:75","nodeType":"YulIdentifier","src":"23819:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"23799:10:75","nodeType":"YulIdentifier","src":"23799:10:75"},{"kind":"number","nativeSrc":"23811:4:75","nodeType":"YulLiteral","src":"23811:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"23796:2:75","nodeType":"YulIdentifier","src":"23796:2:75"},"nativeSrc":"23796:20:75","nodeType":"YulFunctionCall","src":"23796:20:75"},"nativeSrc":"23793:47:75","nodeType":"YulIf","src":"23793:47:75"},{"nativeSrc":"23853:41:75","nodeType":"YulVariableDeclaration","src":"23853:41:75","value":{"arguments":[{"name":"data","nativeSrc":"23867:4:75","nodeType":"YulIdentifier","src":"23867:4:75"},{"arguments":[{"kind":"number","nativeSrc":"23877:1:75","nodeType":"YulLiteral","src":"23877:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"23884:3:75","nodeType":"YulIdentifier","src":"23884:3:75"},{"kind":"number","nativeSrc":"23889:2:75","nodeType":"YulLiteral","src":"23889:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23880:3:75","nodeType":"YulIdentifier","src":"23880:3:75"},"nativeSrc":"23880:12:75","nodeType":"YulFunctionCall","src":"23880:12:75"}],"functionName":{"name":"shr","nativeSrc":"23873:3:75","nodeType":"YulIdentifier","src":"23873:3:75"},"nativeSrc":"23873:20:75","nodeType":"YulFunctionCall","src":"23873:20:75"}],"functionName":{"name":"add","nativeSrc":"23863:3:75","nodeType":"YulIdentifier","src":"23863:3:75"},"nativeSrc":"23863:31:75","nodeType":"YulFunctionCall","src":"23863:31:75"},"variables":[{"name":"_1","nativeSrc":"23857:2:75","nodeType":"YulTypedName","src":"23857:2:75","type":""}]},{"nativeSrc":"23907:24:75","nodeType":"YulVariableDeclaration","src":"23907:24:75","value":{"name":"deleteStart","nativeSrc":"23920:11:75","nodeType":"YulIdentifier","src":"23920:11:75"},"variables":[{"name":"start","nativeSrc":"23911:5:75","nodeType":"YulTypedName","src":"23911:5:75","type":""}]},{"body":{"nativeSrc":"24005:20:75","nodeType":"YulBlock","src":"24005:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"24014:5:75","nodeType":"YulIdentifier","src":"24014:5:75"},{"kind":"number","nativeSrc":"24021:1:75","nodeType":"YulLiteral","src":"24021:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"24007:6:75","nodeType":"YulIdentifier","src":"24007:6:75"},"nativeSrc":"24007:16:75","nodeType":"YulFunctionCall","src":"24007:16:75"},"nativeSrc":"24007:16:75","nodeType":"YulExpressionStatement","src":"24007:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"23955:5:75","nodeType":"YulIdentifier","src":"23955:5:75"},{"name":"_1","nativeSrc":"23962:2:75","nodeType":"YulIdentifier","src":"23962:2:75"}],"functionName":{"name":"lt","nativeSrc":"23952:2:75","nodeType":"YulIdentifier","src":"23952:2:75"},"nativeSrc":"23952:13:75","nodeType":"YulFunctionCall","src":"23952:13:75"},"nativeSrc":"23944:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"23966:26:75","nodeType":"YulBlock","src":"23966:26:75","statements":[{"nativeSrc":"23968:22:75","nodeType":"YulAssignment","src":"23968:22:75","value":{"arguments":[{"name":"start","nativeSrc":"23981:5:75","nodeType":"YulIdentifier","src":"23981:5:75"},{"kind":"number","nativeSrc":"23988:1:75","nodeType":"YulLiteral","src":"23988:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"23977:3:75","nodeType":"YulIdentifier","src":"23977:3:75"},"nativeSrc":"23977:13:75","nodeType":"YulFunctionCall","src":"23977:13:75"},"variableNames":[{"name":"start","nativeSrc":"23968:5:75","nodeType":"YulIdentifier","src":"23968:5:75"}]}]},"pre":{"nativeSrc":"23948:3:75","nodeType":"YulBlock","src":"23948:3:75","statements":[]},"src":"23944:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"23620:3:75","nodeType":"YulIdentifier","src":"23620:3:75"},{"kind":"number","nativeSrc":"23625:2:75","nodeType":"YulLiteral","src":"23625:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"23617:2:75","nodeType":"YulIdentifier","src":"23617:2:75"},"nativeSrc":"23617:11:75","nodeType":"YulFunctionCall","src":"23617:11:75"},"nativeSrc":"23614:421:75","nodeType":"YulIf","src":"23614:421:75"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"23523:518:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"23576:5:75","nodeType":"YulTypedName","src":"23576:5:75","type":""},{"name":"len","nativeSrc":"23583:3:75","nodeType":"YulTypedName","src":"23583:3:75","type":""},{"name":"startIndex","nativeSrc":"23588:10:75","nodeType":"YulTypedName","src":"23588:10:75","type":""}],"src":"23523:518:75"},{"body":{"nativeSrc":"24131:81:75","nodeType":"YulBlock","src":"24131:81:75","statements":[{"nativeSrc":"24141:65:75","nodeType":"YulAssignment","src":"24141:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"24156:4:75","nodeType":"YulIdentifier","src":"24156:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24174:1:75","nodeType":"YulLiteral","src":"24174:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"24177:3:75","nodeType":"YulIdentifier","src":"24177:3:75"}],"functionName":{"name":"shl","nativeSrc":"24170:3:75","nodeType":"YulIdentifier","src":"24170:3:75"},"nativeSrc":"24170:11:75","nodeType":"YulFunctionCall","src":"24170:11:75"},{"arguments":[{"kind":"number","nativeSrc":"24187:1:75","nodeType":"YulLiteral","src":"24187:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"24183:3:75","nodeType":"YulIdentifier","src":"24183:3:75"},"nativeSrc":"24183:6:75","nodeType":"YulFunctionCall","src":"24183:6:75"}],"functionName":{"name":"shr","nativeSrc":"24166:3:75","nodeType":"YulIdentifier","src":"24166:3:75"},"nativeSrc":"24166:24:75","nodeType":"YulFunctionCall","src":"24166:24:75"}],"functionName":{"name":"not","nativeSrc":"24162:3:75","nodeType":"YulIdentifier","src":"24162:3:75"},"nativeSrc":"24162:29:75","nodeType":"YulFunctionCall","src":"24162:29:75"}],"functionName":{"name":"and","nativeSrc":"24152:3:75","nodeType":"YulIdentifier","src":"24152:3:75"},"nativeSrc":"24152:40:75","nodeType":"YulFunctionCall","src":"24152:40:75"},{"arguments":[{"kind":"number","nativeSrc":"24198:1:75","nodeType":"YulLiteral","src":"24198:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"24201:3:75","nodeType":"YulIdentifier","src":"24201:3:75"}],"functionName":{"name":"shl","nativeSrc":"24194:3:75","nodeType":"YulIdentifier","src":"24194:3:75"},"nativeSrc":"24194:11:75","nodeType":"YulFunctionCall","src":"24194:11:75"}],"functionName":{"name":"or","nativeSrc":"24149:2:75","nodeType":"YulIdentifier","src":"24149:2:75"},"nativeSrc":"24149:57:75","nodeType":"YulFunctionCall","src":"24149:57:75"},"variableNames":[{"name":"used","nativeSrc":"24141:4:75","nodeType":"YulIdentifier","src":"24141:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"24046:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"24108:4:75","nodeType":"YulTypedName","src":"24108:4:75","type":""},{"name":"len","nativeSrc":"24114:3:75","nodeType":"YulTypedName","src":"24114:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"24122:4:75","nodeType":"YulTypedName","src":"24122:4:75","type":""}],"src":"24046:166:75"},{"body":{"nativeSrc":"24313:1203:75","nodeType":"YulBlock","src":"24313:1203:75","statements":[{"nativeSrc":"24323:24:75","nodeType":"YulVariableDeclaration","src":"24323:24:75","value":{"arguments":[{"name":"src","nativeSrc":"24343:3:75","nodeType":"YulIdentifier","src":"24343:3:75"}],"functionName":{"name":"mload","nativeSrc":"24337:5:75","nodeType":"YulIdentifier","src":"24337:5:75"},"nativeSrc":"24337:10:75","nodeType":"YulFunctionCall","src":"24337:10:75"},"variables":[{"name":"newLen","nativeSrc":"24327:6:75","nodeType":"YulTypedName","src":"24327:6:75","type":""}]},{"body":{"nativeSrc":"24390:22:75","nodeType":"YulBlock","src":"24390:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"24392:16:75","nodeType":"YulIdentifier","src":"24392:16:75"},"nativeSrc":"24392:18:75","nodeType":"YulFunctionCall","src":"24392:18:75"},"nativeSrc":"24392:18:75","nodeType":"YulExpressionStatement","src":"24392:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"24362:6:75","nodeType":"YulIdentifier","src":"24362:6:75"},{"kind":"number","nativeSrc":"24370:18:75","nodeType":"YulLiteral","src":"24370:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"24359:2:75","nodeType":"YulIdentifier","src":"24359:2:75"},"nativeSrc":"24359:30:75","nodeType":"YulFunctionCall","src":"24359:30:75"},"nativeSrc":"24356:56:75","nodeType":"YulIf","src":"24356:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24465:4:75","nodeType":"YulIdentifier","src":"24465:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"24503:4:75","nodeType":"YulIdentifier","src":"24503:4:75"}],"functionName":{"name":"sload","nativeSrc":"24497:5:75","nodeType":"YulIdentifier","src":"24497:5:75"},"nativeSrc":"24497:11:75","nodeType":"YulFunctionCall","src":"24497:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"24471:25:75","nodeType":"YulIdentifier","src":"24471:25:75"},"nativeSrc":"24471:38:75","nodeType":"YulFunctionCall","src":"24471:38:75"},{"name":"newLen","nativeSrc":"24511:6:75","nodeType":"YulIdentifier","src":"24511:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"24421:43:75","nodeType":"YulIdentifier","src":"24421:43:75"},"nativeSrc":"24421:97:75","nodeType":"YulFunctionCall","src":"24421:97:75"},"nativeSrc":"24421:97:75","nodeType":"YulExpressionStatement","src":"24421:97:75"},{"nativeSrc":"24527:18:75","nodeType":"YulVariableDeclaration","src":"24527:18:75","value":{"kind":"number","nativeSrc":"24544:1:75","nodeType":"YulLiteral","src":"24544:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"24531:9:75","nodeType":"YulTypedName","src":"24531:9:75","type":""}]},{"nativeSrc":"24554:17:75","nodeType":"YulAssignment","src":"24554:17:75","value":{"kind":"number","nativeSrc":"24567:4:75","nodeType":"YulLiteral","src":"24567:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"24554:9:75","nodeType":"YulIdentifier","src":"24554:9:75"}]},{"cases":[{"body":{"nativeSrc":"24617:642:75","nodeType":"YulBlock","src":"24617:642:75","statements":[{"nativeSrc":"24631:35:75","nodeType":"YulVariableDeclaration","src":"24631:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"24650:6:75","nodeType":"YulIdentifier","src":"24650:6:75"},{"arguments":[{"kind":"number","nativeSrc":"24662:2:75","nodeType":"YulLiteral","src":"24662:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"24658:3:75","nodeType":"YulIdentifier","src":"24658:3:75"},"nativeSrc":"24658:7:75","nodeType":"YulFunctionCall","src":"24658:7:75"}],"functionName":{"name":"and","nativeSrc":"24646:3:75","nodeType":"YulIdentifier","src":"24646:3:75"},"nativeSrc":"24646:20:75","nodeType":"YulFunctionCall","src":"24646:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"24635:7:75","nodeType":"YulTypedName","src":"24635:7:75","type":""}]},{"nativeSrc":"24679:49:75","nodeType":"YulVariableDeclaration","src":"24679:49:75","value":{"arguments":[{"name":"slot","nativeSrc":"24723:4:75","nodeType":"YulIdentifier","src":"24723:4:75"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"24693:29:75","nodeType":"YulIdentifier","src":"24693:29:75"},"nativeSrc":"24693:35:75","nodeType":"YulFunctionCall","src":"24693:35:75"},"variables":[{"name":"dstPtr","nativeSrc":"24683:6:75","nodeType":"YulTypedName","src":"24683:6:75","type":""}]},{"nativeSrc":"24741:10:75","nodeType":"YulVariableDeclaration","src":"24741:10:75","value":{"kind":"number","nativeSrc":"24750:1:75","nodeType":"YulLiteral","src":"24750:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"24745:1:75","nodeType":"YulTypedName","src":"24745:1:75","type":""}]},{"body":{"nativeSrc":"24821:165:75","nodeType":"YulBlock","src":"24821:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24846:6:75","nodeType":"YulIdentifier","src":"24846:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24864:3:75","nodeType":"YulIdentifier","src":"24864:3:75"},{"name":"srcOffset","nativeSrc":"24869:9:75","nodeType":"YulIdentifier","src":"24869:9:75"}],"functionName":{"name":"add","nativeSrc":"24860:3:75","nodeType":"YulIdentifier","src":"24860:3:75"},"nativeSrc":"24860:19:75","nodeType":"YulFunctionCall","src":"24860:19:75"}],"functionName":{"name":"mload","nativeSrc":"24854:5:75","nodeType":"YulIdentifier","src":"24854:5:75"},"nativeSrc":"24854:26:75","nodeType":"YulFunctionCall","src":"24854:26:75"}],"functionName":{"name":"sstore","nativeSrc":"24839:6:75","nodeType":"YulIdentifier","src":"24839:6:75"},"nativeSrc":"24839:42:75","nodeType":"YulFunctionCall","src":"24839:42:75"},"nativeSrc":"24839:42:75","nodeType":"YulExpressionStatement","src":"24839:42:75"},{"nativeSrc":"24898:24:75","nodeType":"YulAssignment","src":"24898:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"24912:6:75","nodeType":"YulIdentifier","src":"24912:6:75"},{"kind":"number","nativeSrc":"24920:1:75","nodeType":"YulLiteral","src":"24920:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24908:3:75","nodeType":"YulIdentifier","src":"24908:3:75"},"nativeSrc":"24908:14:75","nodeType":"YulFunctionCall","src":"24908:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"24898:6:75","nodeType":"YulIdentifier","src":"24898:6:75"}]},{"nativeSrc":"24939:33:75","nodeType":"YulAssignment","src":"24939:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"24956:9:75","nodeType":"YulIdentifier","src":"24956:9:75"},{"kind":"number","nativeSrc":"24967:4:75","nodeType":"YulLiteral","src":"24967:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24952:3:75","nodeType":"YulIdentifier","src":"24952:3:75"},"nativeSrc":"24952:20:75","nodeType":"YulFunctionCall","src":"24952:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"24939:9:75","nodeType":"YulIdentifier","src":"24939:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"24775:1:75","nodeType":"YulIdentifier","src":"24775:1:75"},{"name":"loopEnd","nativeSrc":"24778:7:75","nodeType":"YulIdentifier","src":"24778:7:75"}],"functionName":{"name":"lt","nativeSrc":"24772:2:75","nodeType":"YulIdentifier","src":"24772:2:75"},"nativeSrc":"24772:14:75","nodeType":"YulFunctionCall","src":"24772:14:75"},"nativeSrc":"24764:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"24787:21:75","nodeType":"YulBlock","src":"24787:21:75","statements":[{"nativeSrc":"24789:17:75","nodeType":"YulAssignment","src":"24789:17:75","value":{"arguments":[{"name":"i","nativeSrc":"24798:1:75","nodeType":"YulIdentifier","src":"24798:1:75"},{"kind":"number","nativeSrc":"24801:4:75","nodeType":"YulLiteral","src":"24801:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24794:3:75","nodeType":"YulIdentifier","src":"24794:3:75"},"nativeSrc":"24794:12:75","nodeType":"YulFunctionCall","src":"24794:12:75"},"variableNames":[{"name":"i","nativeSrc":"24789:1:75","nodeType":"YulIdentifier","src":"24789:1:75"}]}]},"pre":{"nativeSrc":"24768:3:75","nodeType":"YulBlock","src":"24768:3:75","statements":[]},"src":"24764:222:75"},{"body":{"nativeSrc":"25034:166:75","nodeType":"YulBlock","src":"25034:166:75","statements":[{"nativeSrc":"25052:43:75","nodeType":"YulVariableDeclaration","src":"25052:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"25079:3:75","nodeType":"YulIdentifier","src":"25079:3:75"},{"name":"srcOffset","nativeSrc":"25084:9:75","nodeType":"YulIdentifier","src":"25084:9:75"}],"functionName":{"name":"add","nativeSrc":"25075:3:75","nodeType":"YulIdentifier","src":"25075:3:75"},"nativeSrc":"25075:19:75","nodeType":"YulFunctionCall","src":"25075:19:75"}],"functionName":{"name":"mload","nativeSrc":"25069:5:75","nodeType":"YulIdentifier","src":"25069:5:75"},"nativeSrc":"25069:26:75","nodeType":"YulFunctionCall","src":"25069:26:75"},"variables":[{"name":"lastValue","nativeSrc":"25056:9:75","nodeType":"YulTypedName","src":"25056:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"25119:6:75","nodeType":"YulIdentifier","src":"25119:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"25131:9:75","nodeType":"YulIdentifier","src":"25131:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25158:1:75","nodeType":"YulLiteral","src":"25158:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"25161:6:75","nodeType":"YulIdentifier","src":"25161:6:75"}],"functionName":{"name":"shl","nativeSrc":"25154:3:75","nodeType":"YulIdentifier","src":"25154:3:75"},"nativeSrc":"25154:14:75","nodeType":"YulFunctionCall","src":"25154:14:75"},{"kind":"number","nativeSrc":"25170:3:75","nodeType":"YulLiteral","src":"25170:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"25150:3:75","nodeType":"YulIdentifier","src":"25150:3:75"},"nativeSrc":"25150:24:75","nodeType":"YulFunctionCall","src":"25150:24:75"},{"arguments":[{"kind":"number","nativeSrc":"25180:1:75","nodeType":"YulLiteral","src":"25180:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"25176:3:75","nodeType":"YulIdentifier","src":"25176:3:75"},"nativeSrc":"25176:6:75","nodeType":"YulFunctionCall","src":"25176:6:75"}],"functionName":{"name":"shr","nativeSrc":"25146:3:75","nodeType":"YulIdentifier","src":"25146:3:75"},"nativeSrc":"25146:37:75","nodeType":"YulFunctionCall","src":"25146:37:75"}],"functionName":{"name":"not","nativeSrc":"25142:3:75","nodeType":"YulIdentifier","src":"25142:3:75"},"nativeSrc":"25142:42:75","nodeType":"YulFunctionCall","src":"25142:42:75"}],"functionName":{"name":"and","nativeSrc":"25127:3:75","nodeType":"YulIdentifier","src":"25127:3:75"},"nativeSrc":"25127:58:75","nodeType":"YulFunctionCall","src":"25127:58:75"}],"functionName":{"name":"sstore","nativeSrc":"25112:6:75","nodeType":"YulIdentifier","src":"25112:6:75"},"nativeSrc":"25112:74:75","nodeType":"YulFunctionCall","src":"25112:74:75"},"nativeSrc":"25112:74:75","nodeType":"YulExpressionStatement","src":"25112:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"25005:7:75","nodeType":"YulIdentifier","src":"25005:7:75"},{"name":"newLen","nativeSrc":"25014:6:75","nodeType":"YulIdentifier","src":"25014:6:75"}],"functionName":{"name":"lt","nativeSrc":"25002:2:75","nodeType":"YulIdentifier","src":"25002:2:75"},"nativeSrc":"25002:19:75","nodeType":"YulFunctionCall","src":"25002:19:75"},"nativeSrc":"24999:201:75","nodeType":"YulIf","src":"24999:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"25220:4:75","nodeType":"YulIdentifier","src":"25220:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25234:1:75","nodeType":"YulLiteral","src":"25234:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"25237:6:75","nodeType":"YulIdentifier","src":"25237:6:75"}],"functionName":{"name":"shl","nativeSrc":"25230:3:75","nodeType":"YulIdentifier","src":"25230:3:75"},"nativeSrc":"25230:14:75","nodeType":"YulFunctionCall","src":"25230:14:75"},{"kind":"number","nativeSrc":"25246:1:75","nodeType":"YulLiteral","src":"25246:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"25226:3:75","nodeType":"YulIdentifier","src":"25226:3:75"},"nativeSrc":"25226:22:75","nodeType":"YulFunctionCall","src":"25226:22:75"}],"functionName":{"name":"sstore","nativeSrc":"25213:6:75","nodeType":"YulIdentifier","src":"25213:6:75"},"nativeSrc":"25213:36:75","nodeType":"YulFunctionCall","src":"25213:36:75"},"nativeSrc":"25213:36:75","nodeType":"YulExpressionStatement","src":"25213:36:75"}]},"nativeSrc":"24610:649:75","nodeType":"YulCase","src":"24610:649:75","value":{"kind":"number","nativeSrc":"24615:1:75","nodeType":"YulLiteral","src":"24615:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"25276:234:75","nodeType":"YulBlock","src":"25276:234:75","statements":[{"nativeSrc":"25290:14:75","nodeType":"YulVariableDeclaration","src":"25290:14:75","value":{"kind":"number","nativeSrc":"25303:1:75","nodeType":"YulLiteral","src":"25303:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"25294:5:75","nodeType":"YulTypedName","src":"25294:5:75","type":""}]},{"body":{"nativeSrc":"25339:67:75","nodeType":"YulBlock","src":"25339:67:75","statements":[{"nativeSrc":"25357:35:75","nodeType":"YulAssignment","src":"25357:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"25376:3:75","nodeType":"YulIdentifier","src":"25376:3:75"},{"name":"srcOffset","nativeSrc":"25381:9:75","nodeType":"YulIdentifier","src":"25381:9:75"}],"functionName":{"name":"add","nativeSrc":"25372:3:75","nodeType":"YulIdentifier","src":"25372:3:75"},"nativeSrc":"25372:19:75","nodeType":"YulFunctionCall","src":"25372:19:75"}],"functionName":{"name":"mload","nativeSrc":"25366:5:75","nodeType":"YulIdentifier","src":"25366:5:75"},"nativeSrc":"25366:26:75","nodeType":"YulFunctionCall","src":"25366:26:75"},"variableNames":[{"name":"value","nativeSrc":"25357:5:75","nodeType":"YulIdentifier","src":"25357:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"25320:6:75","nodeType":"YulIdentifier","src":"25320:6:75"},"nativeSrc":"25317:89:75","nodeType":"YulIf","src":"25317:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"25426:4:75","nodeType":"YulIdentifier","src":"25426:4:75"},{"arguments":[{"name":"value","nativeSrc":"25485:5:75","nodeType":"YulIdentifier","src":"25485:5:75"},{"name":"newLen","nativeSrc":"25492:6:75","nodeType":"YulIdentifier","src":"25492:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"25432:52:75","nodeType":"YulIdentifier","src":"25432:52:75"},"nativeSrc":"25432:67:75","nodeType":"YulFunctionCall","src":"25432:67:75"}],"functionName":{"name":"sstore","nativeSrc":"25419:6:75","nodeType":"YulIdentifier","src":"25419:6:75"},"nativeSrc":"25419:81:75","nodeType":"YulFunctionCall","src":"25419:81:75"},"nativeSrc":"25419:81:75","nodeType":"YulExpressionStatement","src":"25419:81:75"}]},"nativeSrc":"25268:242:75","nodeType":"YulCase","src":"25268:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"24590:6:75","nodeType":"YulIdentifier","src":"24590:6:75"},{"kind":"number","nativeSrc":"24598:2:75","nodeType":"YulLiteral","src":"24598:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"24587:2:75","nodeType":"YulIdentifier","src":"24587:2:75"},"nativeSrc":"24587:14:75","nodeType":"YulFunctionCall","src":"24587:14:75"},"nativeSrc":"24580:930:75","nodeType":"YulSwitch","src":"24580:930:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"24217:1299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"24298:4:75","nodeType":"YulTypedName","src":"24298:4:75","type":""},{"name":"src","nativeSrc":"24304:3:75","nodeType":"YulTypedName","src":"24304:3:75","type":""}],"src":"24217:1299:75"},{"body":{"nativeSrc":"25650:145:75","nodeType":"YulBlock","src":"25650:145:75","statements":[{"nativeSrc":"25660:26:75","nodeType":"YulAssignment","src":"25660:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"25672:9:75","nodeType":"YulIdentifier","src":"25672:9:75"},{"kind":"number","nativeSrc":"25683:2:75","nodeType":"YulLiteral","src":"25683:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25668:3:75","nodeType":"YulIdentifier","src":"25668:3:75"},"nativeSrc":"25668:18:75","nodeType":"YulFunctionCall","src":"25668:18:75"},"variableNames":[{"name":"tail","nativeSrc":"25660:4:75","nodeType":"YulIdentifier","src":"25660:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25702:9:75","nodeType":"YulIdentifier","src":"25702:9:75"},{"arguments":[{"name":"value0","nativeSrc":"25717:6:75","nodeType":"YulIdentifier","src":"25717:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25733:3:75","nodeType":"YulLiteral","src":"25733:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"25738:1:75","nodeType":"YulLiteral","src":"25738:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"25729:3:75","nodeType":"YulIdentifier","src":"25729:3:75"},"nativeSrc":"25729:11:75","nodeType":"YulFunctionCall","src":"25729:11:75"},{"kind":"number","nativeSrc":"25742:1:75","nodeType":"YulLiteral","src":"25742:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"25725:3:75","nodeType":"YulIdentifier","src":"25725:3:75"},"nativeSrc":"25725:19:75","nodeType":"YulFunctionCall","src":"25725:19:75"}],"functionName":{"name":"and","nativeSrc":"25713:3:75","nodeType":"YulIdentifier","src":"25713:3:75"},"nativeSrc":"25713:32:75","nodeType":"YulFunctionCall","src":"25713:32:75"}],"functionName":{"name":"mstore","nativeSrc":"25695:6:75","nodeType":"YulIdentifier","src":"25695:6:75"},"nativeSrc":"25695:51:75","nodeType":"YulFunctionCall","src":"25695:51:75"},"nativeSrc":"25695:51:75","nodeType":"YulExpressionStatement","src":"25695:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25766:9:75","nodeType":"YulIdentifier","src":"25766:9:75"},{"kind":"number","nativeSrc":"25777:2:75","nodeType":"YulLiteral","src":"25777:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"25762:3:75","nodeType":"YulIdentifier","src":"25762:3:75"},"nativeSrc":"25762:18:75","nodeType":"YulFunctionCall","src":"25762:18:75"},{"name":"value1","nativeSrc":"25782:6:75","nodeType":"YulIdentifier","src":"25782:6:75"}],"functionName":{"name":"mstore","nativeSrc":"25755:6:75","nodeType":"YulIdentifier","src":"25755:6:75"},"nativeSrc":"25755:34:75","nodeType":"YulFunctionCall","src":"25755:34:75"},"nativeSrc":"25755:34:75","nodeType":"YulExpressionStatement","src":"25755:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"25521:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25611:9:75","nodeType":"YulTypedName","src":"25611:9:75","type":""},{"name":"value1","nativeSrc":"25622:6:75","nodeType":"YulTypedName","src":"25622:6:75","type":""},{"name":"value0","nativeSrc":"25630:6:75","nodeType":"YulTypedName","src":"25630:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25641:4:75","nodeType":"YulTypedName","src":"25641:4:75","type":""}],"src":"25521:274:75"}]},"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_$22374t_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_$22374t_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_$8656t_array$_t_contract$_IInvestStrategy_$22374_$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_$22374_$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_$22374__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_$7253_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_$22374_t_contract$_IInvestStrategy_$22374__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 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 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    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}","id":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":9148},{"length":32,"start":9189},{"length":32,"start":9505}]},"linkReferences":{},"object":"608060405260043610610249575f3560e01c80638cdf48a811610134578063ba087652116100b3578063d905777e11610078578063d905777e146106d4578063d9f9027f146106f3578063dd62ed3e14610714578063e682324d14610733578063ef8b30f714610696578063f617eecc14610752575f5ffd5b8063ba08765214610639578063bd577eb614610658578063c63d75b614610677578063c6e6f59214610696578063ce96cb77146106b5575f5ffd5b8063a7ded2ea116100f9578063a7ded2ea1461058d578063a9059cbb146105ac578063ad3cb1cc146105cb578063b3d7f6b9146105fb578063b460af941461061a575f5ffd5b80638cdf48a8146104e4578063914abf4f1461051c57806394bf804d1461053b57806395d89b411461055a57806396da35da1461056e575f5ffd5b8063402d267d116101cb57806352d1902d1161019057806352d1902d146104405780636e553f651461045457806370a0823114610473578063767f06ae146104925780637ac445a7146104a65780637aeedf2a146104c5575f5ffd5b8063402d267d146103cc57806347e57533146103eb5780634cdad506146102955780634f1ef2861461040a57806351a2d6d11461041f575f5ffd5b806318160ddd1161021157806318160ddd1461030257806323b872dd14610335578063313ce5671461035457806338d52e0f1461037a5780633aaf9048146103ad575f5ffd5b806301e1d1141461024d57806306fdde031461027457806307a2d13a14610295578063095ea7b3146102b45780630a28a477146102e3575b5f5ffd5b348015610258575f5ffd5b50610261610766565b6040519081526020015b60405180910390f35b34801561027f575f5ffd5b50610288610774565b60405161026b9190613edb565b3480156102a0575f5ffd5b506102616102af366004613eed565b610834565b3480156102bf575f5ffd5b506102d36102ce366004613f18565b610845565b604051901515815260200161026b565b3480156102ee575f5ffd5b506102616102fd366004613eed565b61085c565b34801561030d575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610261565b348015610340575f5ffd5b506102d361034f366004613f42565b610868565b34801561035f575f5ffd5b5061036861088d565b60405160ff909116815260200161026b565b348015610385575f5ffd5b505f516020614a405f395f51905f52546040516001600160a01b03909116815260200161026b565b3480156103b8575f5ffd5b506102886103c736600461404a565b6108bc565b3480156103d7575f5ffd5b506102616103e63660046140a3565b610941565b3480156103f6575f5ffd5b50610288610405366004613eed565b61094a565b61041d6104183660046140be565b610aca565b005b34801561042a575f5ffd5b50610433610ae0565b60405161026b919061410a565b34801561044b575f5ffd5b50610261610b38565b34801561045f575f5ffd5b5061026161046e36600461413e565b610b53565b34801561047e575f5ffd5b5061026161048d3660046140a3565b610bb0565b34801561049d575f5ffd5b50610368602081565b3480156104b1575f5ffd5b5061041d6104c0366004614179565b610bd6565b3480156104d0575f5ffd5b5061041d6104df3660046140be565b610d0f565b3480156104ef575f5ffd5b506105036104fe3660046141e7565b610f14565b6040516001600160e01b0319909116815260200161026b565b348015610527575f5ffd5b5061041d6105363660046142ab565b610f73565b348015610546575f5ffd5b5061026161055536600461413e565b6111d2565b348015610565575f5ffd5b5061028861121e565b348015610579575f5ffd5b5061041d6105883660046142dc565b61125c565b348015610598575f5ffd5b5061041d6105a73660046143f3565b611873565b3480156105b7575f5ffd5b506102d36105c6366004613f18565b61198b565b3480156105d6575f5ffd5b50610288604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610606575f5ffd5b50610261610615366004613eed565b611998565b348015610625575f5ffd5b5061026161063436600461450a565b6119a4565b348015610644575f5ffd5b5061026161065336600461450a565b6119f1565b348015610663575f5ffd5b5061041d6106723660046142ab565b611a3e565b348015610682575f5ffd5b506102616106913660046140a3565b611c8a565b3480156106a1575f5ffd5b506102616106b0366004613eed565b611cb6565b3480156106c0575f5ffd5b506102616106cf3660046140a3565b611cc1565b3480156106df575f5ffd5b506102616106ee3660046140a3565b611cd7565b3480156106fe575f5ffd5b50610707611d1c565b60405161026b9190614549565b34801561071f575f5ffd5b5061026161072e36600461457a565b611d62565b34801561073e575f5ffd5b5061026161074d3660046145a6565b611dab565b34801561075d575f5ffd5b50610433611f9b565b5f61076f611fd6565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614a005f395f51905f52916107b2906145cf565b80601f01602080910402602001604051908101604052809291908181526020018280546107de906145cf565b80156108295780601f1061080057610100808354040283529160200191610829565b820191905f5260205f20905b81548152906001019060200180831161080c57829003601f168201915b505050505091505090565b5f61083f825f612051565b92915050565b5f336108528185856120a8565b5060019392505050565b5f61083f8260016120ba565b5f33610875858285612108565b610880858585612158565b60019150505b9392505050565b5f805f516020614a405f395f51905f5290505f81546108b69190600160a01b900460ff1661461b565b91505090565b60606108c98484846121b5565b5f60028560ff16602081106108e0576108e0614634565b01546001600160a01b031690508061090b57604051632711b74d60e11b815260040160405180910390fd5b610938848460028860ff166020811061092657610926614634565b01546001600160a01b031691906122d3565b95945050505050565b5f61083f612325565b60605f5b5f6002826020811061096257610962614634565b01546001600160a01b03161480159061097b5750602081105b15610ab0576002816020811061099357610993614634565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a069190614648565b8303610aa057825483908190610a1b906145cf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a47906145cf565b8015610a925780601f10610a6957610100808354040283529160200191610a92565b820191905f5260205f20905b815481529060010190602001808311610a7557829003601f168201915b505050505092505050919050565b610aa98161465f565b905061094e565b5060405163213109dd60e11b815260040160405180910390fd5b610ad26123b1565b610adc828261245a565b5050565b610ae8613e8e565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b005790505050505050905090565b5f610b41612516565b505f516020614a205f395f51905f5290565b5f5f610b5e83610941565b905080841115610b9057828482604051633c8097d960e11b8152600401610b8793929190614677565b60405180910390fd5b5f610b9a85611cb6565b9050610ba83385878461255f565b949350505050565b6001600160a01b03165f9081525f516020614a005f395f51905f52602052604090205490565b5f60028560ff1660208110610bed57610bed614634565b01546001600160a01b0316905080610c1857604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610c4757505f60028260208110610c3957610c39614634565b01546001600160a01b031614155b15610cbd57846001600160a01b031660028260208110610c6957610c69614634565b01546001600160a01b0316148015610c8457508560ff168114155b15610cad5760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610b87565b610cb68161465f565b9050610c1a565b50610cd2818585610ccc612574565b86612593565b8360028660ff1660208110610ce957610ce9614634565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610d3657604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610d6557505f60028260208110610d5757610d57614634565b01546001600160a01b031614155b15610dcb57826001600160a01b031660028260208110610d8757610d87614634565b01546001600160a01b031603610dbb5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610b87565b610dc48161465f565b9050610d38565b601f198101610df057604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110610e0457610e04614634565b0180546001600160a01b0319166001600160a01b0392909216919091179055610e2e816001614698565b5f8260208110610e4057610e40614634565b602091828204019190066101000a81548160ff021916908360ff160217905550806001610e6d9190614698565b60018260208110610e8057610e80614634565b602091828204019190066101000a81548160ff021916908360ff160217905550610ebb610eab612574565b6001600160a01b038516906126e1565b610ece6001600160a01b03841683612773565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff1660208110610f2c57610f2c614634565b0154604080516001600160a01b039092166020830181905260ff86169183019190915291506060016040516020818303038152906040528051906020012091505092915050565b610f7b613e8e565b81515f9060201015610fa05760405163a29b1f1160e01b815260040160405180910390fd5b825181101561114b57602060ff16838281518110610fc057610fc0614634565b602002602001015160ff1610158061101957505f6001600160a01b03166002848381518110610ff157610ff1614634565b602002602001015160ff166020811061100c5761100c614634565b01546001600160a01b0316145b156110375760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061104a5761104a614634565b602002602001015160ff166020811061106557611065614634565b6020020151156110ac5782818151811061108157611081614634565b602002602001015160405163c41fdbb960e01b8152600401610b87919060ff91909116815260200190565b6001828483815181106110c1576110c1614634565b602002602001015160ff16602081106110dc576110dc614634565b9115156020909202015282518390829081106110fa576110fa614634565b6020026020010151600161110e919061461b565b5f826020811061112057611120614634565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050610fa0565b60208110801561117857505f6002826020811061116a5761116a614634565b01546001600160a01b031614155b1561119657604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec836040516111c591906146ab565b60405180910390a1505050565b5f5f6111dd83611c8a565b9050808411156112065782848260405163284ff66760e01b8152600401610b8793929190614677565b5f61121085611998565b9050610ba83385838861255f565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614a005f395f51905f52916107b2906145cf565b602060ff83161061128057604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff166020811061129757611297614634565b01546001600160a01b03169050806112c257604051632711b74d60e11b815260040160405180910390fd5b811580156112e057506112dd816001600160a01b03166127c1565b15155b156112fe576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561131857506003546001600160a01b0316155b1561133957604051600162ad1fab60e01b0319815260040160405180910390fd5b5f61134584600161461b565b60ff1690505b60208110801561137857505f6002826020811061136a5761136a614634565b01546001600160a01b031614155b156113e7576002816020811061139057611390614634565b01546001600160a01b031660026113a86001846146f0565b602081106113b8576113b8614634565b0180546001600160a01b0319166001600160a01b03929092169190911790556113e08161465f565b905061134b565b5f60026113f56001846146f0565b6020811061140557611405614634565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061143c5761143c614634565b602081049091015460ff601f9092166101000a900416158015906114605750602083105b156117925780156115245761147686600161461b565b60ff166001846020811061148c5761148c614634565b602081049091015460ff601f9092166101000a900416116114ad575f6114b0565b60015b600184602081106114c3576114c3614634565b602091828204019190069054906101000a900460ff166114e39190614703565b60016114ef81866146f0565b602081106114ff576114ff614634565b602091828204019190066101000a81548160ff021916908360ff1602179055506115f5565b61152f86600161461b565b60ff166001846020811061154557611545614634565b602081049091015460ff601f9092166101000a90041603611568575060016115f5565b61157386600161461b565b60ff166001846020811061158957611589614634565b602081049091015460ff601f9092166101000a90041611156115f55760018084602081106115b9576115b9614634565b602091828204019190068282829054906101000a900460ff166115dc9190614703565b92506101000a81548160ff021916908360ff1602179055505b81156116b25761160686600161461b565b60ff165f846020811061161b5761161b614634565b602081049091015460ff601f9092166101000a9004161161163c575f61163f565b60015b5f846020811061165157611651614634565b602091828204019190069054906101000a900460ff166116719190614703565b5f61167d6001866146f0565b6020811061168d5761168d614634565b602091828204019190066101000a81548160ff021916908360ff160217905550611782565b6116bd86600161461b565b60ff165f84602081106116d2576116d2614634565b602081049091015460ff601f9092166101000a900416036116f65760019150611782565b61170186600161461b565b60ff165f846020811061171657611716614634565b602081049091015460ff601f9092166101000a90041611156117825760015f846020811061174657611746614634565b602091828204019190068282829054906101000a900460ff166117699190614703565b92506101000a81548160ff021916908360ff1602179055505b61178b8361465f565b9250611429565b5f8061179f6001866146f0565b602081106117af576117af614634565b602091828204019190066101000a81548160ff021916908360ff1602179055505f600180856117de91906146f0565b602081106117ee576117ee614634565b602091828204019190066101000a81548160ff021916908360ff16021790555061182a85856001600160a01b031661282a90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118b75750825b90505f826001600160401b031660011480156118d25750303b155b9050811580156118e0575080155b156118fe5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561192857845460ff60401b1916600160401b1785555b6119378c8c8c8c8c8c8c61294f565b831561197d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f33610852818585612158565b5f61083f826001612051565b5f5f6119af83611cc1565b9050808511156119d857828582604051633fa733bb60e21b8152600401610b8793929190614677565b5f6119e28661085c565b90506109383386868985612987565b5f5f6119fc83611cd7565b905080851115611a2557828582604051632e52afbb60e21b8152600401610b8793929190614677565b5f611a2f86610834565b9050610938338686848a612987565b611a46613e8e565b81515f9060201015611a6b5760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611c0a57602060ff16838260ff1681518110611a9157611a91614634565b602002602001015160ff16101580611aed57505f6001600160a01b03166002848360ff1681518110611ac557611ac5614634565b602002602001015160ff1660208110611ae057611ae0614634565b01546001600160a01b0316145b15611b0b5760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611b2157611b21614634565b602002602001015160ff1660208110611b3c57611b3c614634565b602002015115611b5b57828160ff168151811061108157611081614634565b600182848360ff1681518110611b7357611b73614634565b602002602001015160ff1660208110611b8e57611b8e614634565b911515602090920201528251839060ff8316908110611baf57611baf614634565b60200260200101516001611bc3919061461b565b60018260ff1660208110611bd957611bd9614634565b602091828204019190066101000a81548160ff021916908360ff16021790555080611c039061471c565b9050611a6b565b602060ff8216108015611c3d57505f600260ff831660208110611c2f57611c2f614634565b01546001600160a01b031614155b15611c5b57604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516111c591906146ab565b5f5f611c94612325565b90505f198114611cad57611ca8815f6120ba565b610886565b5f199392505050565b5f61083f825f6120ba565b5f5f611ccc8361299d565b9050610886816129b0565b5f5f611ce283612a45565b90505f611cef825f612051565b90505f611cfb826129b0565b9050818114611d1357611d0e815f6120ba565b610938565b50909392505050565b611d24613e8e565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611d3b575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff8516101580611dc35750602060ff841610155b15611de157604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110611df857611df8614634565b01546001600160a01b031690505f600260ff861660208110611e1c57611e1c614634565b01546001600160a01b03908116915082161580611e4057506001600160a01b038116155b15611e5e57604051632711b74d60e11b815260040160405180910390fd5b5f198403611e7b57611e78826001600160a01b03166127c1565b93505b835f03611e8c575f92505050610886565b611e9e826001600160a01b0316612a4f565b841115611ed357611eb7826001600160a01b0316612a4f565b604051633ce011d560e01b8152600401610b8791815260200190565b611ee5816001600160a01b0316612a7d565b841115611f1a57611efe816001600160a01b0316612a7d565b6040516350a3e37560e11b8152600401610b8791815260200190565b611f2e6001600160a01b038316855f612aab565b50611f436001600160a01b038216855f612be7565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051611f8991815260200190565b60405180910390a35091949350505050565b611fa3613e8e565b604080516104008101918290525f805460ff1682529091602090826001838601808411610b005790505050505050905090565b5f5f5b5f60028260208110611fed57611fed614634565b01546001600160a01b0316148015906120065750602081105b1561204d576120316002826020811061202157612021614634565b01546001600160a01b03166127c1565b61203b9083614698565b91506120468161465f565b9050611fd9565b5090565b5f61088661205d610766565b612068906001614698565b6120735f600a61481d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461209f9190614698565b85919085612d08565b6120b58383836001612d4a565b505050565b5f6108866120c982600a61481d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546120f59190614698565b6120fd610766565b61209f906001614698565b5f6121138484611d62565b90505f198114612152578181101561214457828183604051637dc7a0d960e11b8152600401610b8793929190614677565b61215284848484035f612d4a565b50505050565b6001600160a01b03831661218157604051634b637e8f60e11b81525f6004820152602401610b87565b6001600160a01b0382166121aa5760405163ec442f0560e01b81525f6004820152602401610b87565b6120b5838383612e2d565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612216919061482b565b90505f816001600160a01b031663b700961333306122348989610f14565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015612286573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122aa9190614846565b509050806122cc5760405162d1953b60e31b8152336004820152602401610b87565b5050505050565b6060610ba883836040516024016122eb92919061487b565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690612f53565b5f5f5f5b5f6002826020811061233d5761233d614634565b01546001600160a01b0316148015906123565750602081105b156123ac5761238a836123856002846020811061237557612375614634565b01546001600160a01b0316612a7d565b612fbc565b935091508161239c575f199250505090565b6123a58161465f565b9050612329565b505090565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061243757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661242b5f516020614a205f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156124555760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156124b4575060408051601f3d908101601f191682019092526124b191810190614648565b60015b6124dc57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b87565b5f516020614a205f395f51905f52811461250c57604051632a87526960e21b815260048101829052602401610b87565b6120b58383612fe3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124555760405163703e46dd60e11b815260040160405180910390fd5b61256b84848484613038565b612152826130b5565b5f61076f5f516020614a405f395f51905f52546001600160a01b031690565b61259d84836126e1565b60405163f3e0ffbf60e01b815230600482015261260f9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156125e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126099190614648565b83612aab565b5061261a858261282a565b6126248484612773565b6040516370a0823160e01b81523060048201526126969085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561266c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126909190614648565b83612be7565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015612728573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061274c919061482b565b6001600160a01b031614610adc5760405163e76673ef60e01b815260040160405180910390fd5b6120b5816040516024016127879190613edb565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690612f53565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612806573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061083f9190614648565b801561290557604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516128819190614896565b5f60405180830381855af49150503d805f81146128b9576040519150601f19603f3d011682016040523d82523d5f602084013e6128be565b606091505b509150915081612152577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf8816040516128f79190613edb565b60405180910390a150505050565b6040515f60248201526120b59060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690612f53565b6129576131cc565b61295f613215565b6129688561321d565b612972878761322e565b61297e84848484613240565b50505050505050565b612990826137c1565b6122cc85858585856138d4565b5f61083f6129aa83610bb0565b5f612051565b5f5f5f5b5f600282602081106129c8576129c8614634565b01546001600160a01b0316148015906129e15750602081105b15612a3e57612a108361238560028460208110612a0057612a00614634565b01546001600160a01b0316612a4f565b93509150811580612a215750838310155b15612a2e57509192915050565b612a378161465f565b90506129b4565b5050919050565b5f61083f82610bb0565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb77906024016127eb565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d906024016127eb565b5f8115612b8d575f5f856001600160a01b031685604051602401612ad191815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612b069190614896565b5f60405180830381855af49150503d805f8114612b3e576040519150601f19603f3d011682016040523d82523d5f602084013e612b43565b606091505b509150915081612b85577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612b7c9190613edb565b60405180910390a15b509050610886565b612bdd83604051602401612ba391815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690612f53565b5060019050610886565b5f8115612cb8575f5f856001600160a01b031685604051602401612c0d91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251612c429190614896565b5f60405180830381855af49150503d805f8114612c7a576040519150601f19603f3d011682016040523d82523d5f602084013e612c7f565b606091505b509150915081612b85577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612b7c9190613edb565b612bdd83604051602401612cce91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690612f53565b5f612d35612d1583613988565b8015612d3057505f8480612d2b57612d2b6148ac565b868809115b151590565b612d408686866139b4565b6109389190614698565b5f516020614a005f395f51905f526001600160a01b038516612d815760405163e602df0560e01b81525f6004820152602401610b87565b6001600160a01b038416612daa57604051634a1406b160e11b81525f6004820152602401610b87565b6001600160a01b038086165f908152600183016020908152604080832093881683529290522083905581156122cc57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612e1e91815260200190565b60405180910390a35050505050565b5f516020614a005f395f51905f526001600160a01b038416612e675781816002015f828254612e5c9190614698565b90915550612ec49050565b6001600160a01b0384165f9081526020829052604090205482811015612ea65784818460405163391434e360e21b8152600401610b8793929190614677565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612ee2576002810180548390039055612f00565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f4591815260200190565b60405180910390a350505050565b60605f5f846001600160a01b031684604051612f6f9190614896565b5f60405180830381855af49150503d805f8114612fa7576040519150601f19603f3d011682016040523d82523d5f602084013e612fac565b606091505b5091509150610938858383613a6a565b5f8083830184811015612fd5575f5f9250925050612fdc565b6001925090505b9250929050565b612fec82613ac1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613030576120b58282612f53565b610adc613b24565b5f516020614a405f395f51905f52805461305d906001600160a01b0316863086613b43565b6130678483613baa565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612e1e929190918252602082015260400190565b805f5b81158015906130ed57505f81602081106130d4576130d4614634565b602081049091015460ff601f9092166101000a90041615155b80156130f95750602081105b156131ac575f600260015f846020811061311557613115614634565b602091828204019190069054906101000a900460ff166131359190614703565b60ff166020811061314857613148614634565b01546001600160a01b031690505f6131688461316384612a7d565b613bde565b9050805f0361317857505061319c565b61318c6001600160a01b038316825f612be7565b5061319781856146f0565b935050505b6131a58161465f565b90506130b8565b508015610adc5760405163285a546d60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661245557604051631afcd79f60e31b815260040160405180910390fd5b6124556131cc565b6132256131cc565b61245781613bed565b6132366131cc565b610adc8282613c5d565b8351158061324f575083516020105b8061325c57508251845114155b8061326957508151845114155b8061327657508051845114155b1561329757604051600162ad1fab60e01b0319815260040160405180910390fd5b61329f613e8e565b6132a7613e8e565b5f5b865181101561374a575f6001600160a01b03168782815181106132ce576132ce614634565b60200260200101516001600160a01b0316036132fd57604051632711b74d60e11b815260040160405180910390fd5b613339613308612574565b88838151811061331a5761331a614634565b60200260200101516001600160a01b03166126e190919063ffffffff16565b5f5b818110156133d95787818151811061335557613355614634565b60200260200101516001600160a01b031688838151811061337857613378614634565b60200260200101516001600160a01b0316036133d1578782815181106133a0576133a0614634565b602002602001015160405163b5a9314f60e01b8152600401610b8791906001600160a01b0391909116815260200190565b60010161333b565b5086518582815181106133ee576133ee614634565b602002602001015160ff1610158061343557508285828151811061341457613414614634565b602002602001015160ff166020811061342f5761342f614634565b60200201515b156134775784818151811061344c5761344c614634565b602002602001015160405163306ccd5d60e11b8152600401610b87919060ff91909116815260200190565b865184828151811061348b5761348b614634565b602002602001015160ff161015806134d25750818482815181106134b1576134b1614634565b602002602001015160ff16602081106134cc576134cc614634565b60200201515b15613514578381815181106134e9576134e9614634565b6020026020010151604051632776924160e11b8152600401610b87919060ff91909116815260200190565b60018386838151811061352957613529614634565b602002602001015160ff166020811061354457613544614634565b60200201901515908115158152505060018285838151811061356857613568614634565b602002602001015160ff166020811061358357613583614634565b9115156020909202015286518790829081106135a1576135a1614634565b6020026020010151600282602081106135bc576135bc614634565b015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508481815181106135f2576135f2614634565b60200260200101516001613606919061461b565b5f826020811061361857613618614634565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061364a5761364a614634565b6020026020010151600161365e919061461b565b6001826020811061367157613671614634565b602091828204019190066101000a81548160ff021916908360ff1602179055506136df8682815181106136a6576136a6614634565b60200260200101518883815181106136c0576136c0614634565b60200260200101516001600160a01b031661277390919063ffffffff16565b8681815181106136f1576136f1614634565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161373a919060ff91909116815260200190565b60405180910390a26001016132a9565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec8460405161377a91906146ab565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516137b191906146ab565b60405180910390a1505050505050565b805f5b81158015906137fa5750600181602081106137e1576137e1614634565b602081049091015460ff601f9092166101000a90041615155b80156138065750602081105b156138b4575f6002600180846020811061382257613822614634565b602091828204019190069054906101000a900460ff166138429190614703565b60ff166020811061385557613855614634565b01546001600160a01b031690505f6138708461316384612a4f565b9050805f036138805750506138a4565b6138946001600160a01b038316825f612aab565b5061389f81856146f0565b935050505b6138ad8161465f565b90506137c4565b508015610adc5760405163351dc55d60e21b815260040160405180910390fd5b5f516020614a405f395f51905f526001600160a01b038681169085161461390057613900848784612108565b61390a8483613cad565b8054613920906001600160a01b03168685613ce1565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051613978929190918252602082015260400190565b60405180910390a4505050505050565b5f600282600381111561399d5761399d6148c0565b6139a791906148d4565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036139e8578382816139de576139de6148ac565b0492505050610886565b8084116139ff576139ff6003851502601118613d12565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606082613a7a57611ca882613d23565b8151158015613a9157506001600160a01b0384163b155b15613aba57604051639996b31560e01b81526001600160a01b0385166004820152602401610b87565b5080610886565b806001600160a01b03163b5f03613af657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b87565b5f516020614a205f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156124555760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526121529186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613d4c565b6001600160a01b038216613bd35760405163ec442f0560e01b81525f6004820152602401610b87565b610adc5f8383612e2d565b5f828218828410028218610886565b613bf56131cc565b5f516020614a405f395f51905f525f80613c0e84613db8565b9150915081613c1e576012613c20565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613c656131cc565b5f516020614a005f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613c9e8482614945565b50600481016121528382614945565b6001600160a01b038216613cd657604051634b637e8f60e11b81525f6004820152602401610b87565b610adc825f83612e2d565b6040516001600160a01b038381166024830152604482018390526120b591859182169063a9059cbb90606401613b78565b634e487b715f52806020526024601cfd5b805115613d335780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af180613d6b576040513d5f823e3d81fd5b50505f513d91508115613d82578060011415613d8f565b6001600160a01b0384163b155b1561215257604051635274afe760e01b81526001600160a01b0385166004820152602401610b87565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691613dfe91614896565b5f60405180830381855afa9150503d805f8114613e36576040519150601f19603f3d011682016040523d82523d5f602084013e613e3b565b606091505b5091509150818015613e4f57506020815110155b15613e82575f81806020019051810190613e699190614648565b905060ff8111613e80576001969095509350505050565b505b505f9485945092505050565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108866020830184613ead565b5f60208284031215613efd575f5ffd5b5035919050565b6001600160a01b0381168114612457575f5ffd5b5f5f60408385031215613f29575f5ffd5b8235613f3481613f04565b946020939093013593505050565b5f5f5f60608486031215613f54575f5ffd5b8335613f5f81613f04565b92506020840135613f6f81613f04565b929592945050506040919091013590565b803560ff81168114613f90575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613fd157613fd1613f95565b604052919050565b5f82601f830112613fe8575f5ffd5b8135602083015f5f6001600160401b0384111561400757614007613f95565b50601f8301601f191660200161401c81613fa9565b915050828152858383011115614030575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561405c575f5ffd5b61406584613f80565b925061407360208501613f80565b915060408401356001600160401b0381111561408d575f5ffd5b61409986828701613fd9565b9150509250925092565b5f602082840312156140b3575f5ffd5b813561088681613f04565b5f5f604083850312156140cf575f5ffd5b82356140da81613f04565b915060208301356001600160401b038111156140f4575f5ffd5b61410085828601613fd9565b9150509250929050565b610400810181835f5b602081101561413557815160ff16835260209283019290910190600101614113565b50505092915050565b5f5f6040838503121561414f575f5ffd5b82359150602083013561416181613f04565b809150509250929050565b8015158114612457575f5ffd5b5f5f5f5f6080858703121561418c575f5ffd5b61419585613f80565b935060208501356141a581613f04565b925060408501356001600160401b038111156141bf575f5ffd5b6141cb87828801613fd9565b92505060608501356141dc8161416c565b939692955090935050565b5f5f604083850312156141f8575f5ffd5b61420183613f80565b915061420f60208401613f80565b90509250929050565b5f6001600160401b0382111561423057614230613f95565b5060051b60200190565b5f82601f830112614249575f5ffd5b813561425c61425782614218565b613fa9565b8082825260208201915060208360051b86010192508583111561427d575f5ffd5b602085015b838110156142a15761429381613f80565b835260209283019201614282565b5095945050505050565b5f602082840312156142bb575f5ffd5b81356001600160401b038111156142d0575f5ffd5b610ba88482850161423a565b5f5f604083850312156142ed575f5ffd5b6142f683613f80565b915060208301356141618161416c565b8035613f9081613f04565b5f82601f830112614320575f5ffd5b813561432e61425782614218565b8082825260208201915060208360051b86010192508583111561434f575f5ffd5b602085015b838110156142a157803561436781613f04565b835260209283019201614354565b5f82601f830112614384575f5ffd5b813561439261425782614218565b8082825260208201915060208360051b8601019250858311156143b3575f5ffd5b602085015b838110156142a15780356001600160401b038111156143d5575f5ffd5b6143e4886020838a0101613fd9565b845250602092830192016143b8565b5f5f5f5f5f5f5f60e0888a031215614409575f5ffd5b87356001600160401b0381111561441e575f5ffd5b61442a8a828b01613fd9565b97505060208801356001600160401b03811115614445575f5ffd5b6144518a828b01613fd9565b96505061446060408901614306565b945060608801356001600160401b0381111561447a575f5ffd5b6144868a828b01614311565b94505060808801356001600160401b038111156144a1575f5ffd5b6144ad8a828b01614375565b93505060a08801356001600160401b038111156144c8575f5ffd5b6144d48a828b0161423a565b92505060c08801356001600160401b038111156144ef575f5ffd5b6144fb8a828b0161423a565b91505092959891949750929550565b5f5f5f6060848603121561451c575f5ffd5b83359250602084013561452e81613f04565b9150604084013561453e81613f04565b809150509250925092565b610400810181835f5b60208110156141355781516001600160a01b0316835260209283019290910190600101614552565b5f5f6040838503121561458b575f5ffd5b823561459681613f04565b9150602083013561416181613f04565b5f5f5f606084860312156145b8575f5ffd5b6145c184613f80565b9250613f6f60208501613f80565b600181811c908216806145e357607f821691505b60208210810361460157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561083f5761083f614607565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614658575f5ffd5b5051919050565b5f6001820161467057614670614607565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561083f5761083f614607565b602080825282518282018190525f918401906040840190835b818110156146e557835160ff168352602093840193909201916001016146c4565b509095945050505050565b8181038181111561083f5761083f614607565b60ff828116828216039081111561083f5761083f614607565b5f60ff821660ff810361473157614731614607565b60010192915050565b6001815b60018411156147755780850481111561475957614759614607565b600184161561476757908102905b60019390931c92800261473e565b935093915050565b5f8261478b5750600161083f565b8161479757505f61083f565b81600181146147ad57600281146147b7576147d3565b600191505061083f565b60ff8411156147c8576147c8614607565b50506001821b61083f565b5060208310610133831016604e8410600b84101617156147f6575081810a61083f565b6148025f19848461473a565b805f190482111561481557614815614607565b029392505050565b5f61088660ff84168361477d565b5f6020828403121561483b575f5ffd5b815161088681613f04565b5f5f60408385031215614857575f5ffd5b82516148628161416c565b602084015190925063ffffffff81168114614161575f5ffd5b60ff83168152604060208201525f610ba86040830184613ead565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff8316806148f257634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f8211156120b557805f5260205f20601f840160051c810160208510156149265750805b601f840160051c820191505b818110156122cc575f8155600101614932565b81516001600160401b0381111561495e5761495e613f95565b6149728161496c84546145cf565b84614901565b6020601f8211600181146149a4575f831561498d5750848201515b5f19600385901b1c1916600184901b1784556122cc565b5f84815260208120601f198516915b828110156149d357878501518255602094850194600190920191016149b3565b50848210156149f057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220f120263ca4c30a21649806e490da2ea832e63ae4218befe4ac689e259a743ad564736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x249 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CDF48A8 GT PUSH2 0x134 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x6F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x696 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x752 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x639 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x658 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x677 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x696 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA7DED2EA GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x5FB JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x61A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1CB JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x190 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x454 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x4A6 JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x4C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x3EB JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x41F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x211 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x37A JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x3AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x24D JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x274 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2B4 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2E3 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x766 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 0x27F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x774 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x2AF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x834 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x2CE CALLDATASIZE PUSH1 0x4 PUSH2 0x3F18 JUMP JUMPDEST PUSH2 0x845 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x2FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x85C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x261 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x340 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x34F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F42 JUMP JUMPDEST PUSH2 0x868 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x368 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x385 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x404A JUMP JUMPDEST PUSH2 0x8BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x3E6 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x941 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST PUSH2 0x41D PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x40BE JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x410A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0xB38 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x46E CALLDATASIZE PUSH1 0x4 PUSH2 0x413E JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x48D CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0xBB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x368 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x4C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4179 JUMP JUMPDEST PUSH2 0xBD6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x4DF CALLDATASIZE PUSH1 0x4 PUSH2 0x40BE JUMP JUMPDEST PUSH2 0xD0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x503 PUSH2 0x4FE CALLDATASIZE PUSH1 0x4 PUSH2 0x41E7 JUMP JUMPDEST PUSH2 0xF14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x26B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x42AB JUMP JUMPDEST PUSH2 0xF73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x413E JUMP JUMPDEST PUSH2 0x11D2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x565 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 PUSH2 0x121E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x42DC JUMP JUMPDEST PUSH2 0x125C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x5A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x43F3 JUMP JUMPDEST PUSH2 0x1873 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D3 PUSH2 0x5C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F18 JUMP JUMPDEST PUSH2 0x198B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x288 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 0x606 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1998 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x625 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x634 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x19A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x644 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x653 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x19F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x663 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x41D PUSH2 0x672 CALLDATASIZE PUSH1 0x4 PUSH2 0x42AB JUMP JUMPDEST PUSH2 0x1A3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x682 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x691 CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1CB6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1CC1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x6EE CALLDATASIZE PUSH1 0x4 PUSH2 0x40A3 JUMP JUMPDEST PUSH2 0x1CD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x707 PUSH2 0x1D1C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x26B SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x72E CALLDATASIZE PUSH1 0x4 PUSH2 0x457A JUMP JUMPDEST PUSH2 0x1D62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x261 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x45A6 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x433 PUSH2 0x1F9B JUMP JUMPDEST PUSH0 PUSH2 0x76F PUSH2 0x1FD6 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7B2 SWAP1 PUSH2 0x45CF 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 0x7DE SWAP1 PUSH2 0x45CF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x829 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x800 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x829 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 0x80C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH0 PUSH2 0x2051 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x852 DUP2 DUP6 DUP6 PUSH2 0x20A8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH1 0x1 PUSH2 0x20BA JUMP JUMPDEST PUSH0 CALLER PUSH2 0x875 DUP6 DUP3 DUP6 PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x880 DUP6 DUP6 DUP6 PUSH2 0x2158 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x8B6 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x461B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x8C9 DUP5 DUP5 DUP5 PUSH2 0x21B5 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x8E0 JUMPI PUSH2 0x8E0 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x90B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x938 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x926 JUMPI PUSH2 0x926 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x22D3 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F PUSH2 0x2325 JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x962 JUMPI PUSH2 0x962 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x97B JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xAB0 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x993 JUMPI PUSH2 0x993 PUSH2 0x4634 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 0x9E2 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 0xA06 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 SUB PUSH2 0xAA0 JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xA1B SWAP1 PUSH2 0x45CF 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 0xA47 SWAP1 PUSH2 0x45CF JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA92 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA69 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA92 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 0xA75 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 0xAA9 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x94E 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 0xAD2 PUSH2 0x23B1 JUMP JUMPDEST PUSH2 0xADC DUP3 DUP3 PUSH2 0x245A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x3E8E 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 0xB00 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xB41 PUSH2 0x2516 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB5E DUP4 PUSH2 0x941 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xB90 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xB9A DUP6 PUSH2 0x1CB6 JUMP JUMPDEST SWAP1 POP PUSH2 0xBA8 CALLER DUP6 DUP8 DUP5 PUSH2 0x255F 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 0x4A00 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 0xBED JUMPI PUSH2 0xBED PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xC18 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 0xC47 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xC39 JUMPI PUSH2 0xC39 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xCBD JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xC69 JUMPI PUSH2 0xC69 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xC84 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xCAD 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 0xB87 JUMP JUMPDEST PUSH2 0xCB6 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0xC1A JUMP JUMPDEST POP PUSH2 0xCD2 DUP2 DUP6 DUP6 PUSH2 0xCCC PUSH2 0x2574 JUMP JUMPDEST DUP7 PUSH2 0x2593 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xCE9 JUMPI PUSH2 0xCE9 PUSH2 0x4634 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 0xD36 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 0xD65 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xD57 JUMPI PUSH2 0xD57 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xDCB JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xD87 JUMPI PUSH2 0xD87 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xDBB 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 0xB87 JUMP JUMPDEST PUSH2 0xDC4 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0xD38 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0xDF0 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 0xE04 JUMPI PUSH2 0xE04 PUSH2 0x4634 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 0xE2E DUP2 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE40 JUMPI PUSH2 0xE40 PUSH2 0x4634 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 0xE6D SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE80 JUMPI PUSH2 0xE80 PUSH2 0x4634 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 0xEBB PUSH2 0xEAB PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x26E1 JUMP JUMPDEST PUSH2 0xECE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2773 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 0xF2C JUMPI PUSH2 0xF2C PUSH2 0x4634 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 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xF7B PUSH2 0x3E8E JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0xFA0 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 0x114B JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xFC0 JUMPI PUSH2 0xFC0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1019 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xFF1 JUMPI PUSH2 0xFF1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x100C JUMPI PUSH2 0x100C PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1037 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 0x104A JUMPI PUSH2 0x104A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1065 JUMPI PUSH2 0x1065 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x10AC JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI PUSH2 0x1081 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x10C1 JUMPI PUSH2 0x10C1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x10DC JUMPI PUSH2 0x10DC PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x10FA JUMPI PUSH2 0x10FA PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x110E SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1120 JUMPI PUSH2 0x1120 PUSH2 0x4634 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 0xFA0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1178 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x116A JUMPI PUSH2 0x116A PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1196 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 0x11C5 SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x11DD DUP4 PUSH2 0x1C8A JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1206 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x1210 DUP6 PUSH2 0x1998 JUMP JUMPDEST SWAP1 POP PUSH2 0xBA8 CALLER DUP6 DUP4 DUP9 PUSH2 0x255F JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7B2 SWAP1 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x1280 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 0x1297 JUMPI PUSH2 0x1297 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x12C2 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 0x12E0 JUMPI POP PUSH2 0x12DD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x12FE 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 0x1318 JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1339 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 0x1345 DUP5 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x1378 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x136A JUMPI PUSH2 0x136A PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x13E7 JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x1390 JUMPI PUSH2 0x1390 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x13A8 PUSH1 0x1 DUP5 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x13B8 JUMPI PUSH2 0x13B8 PUSH2 0x4634 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 0x13E0 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x134B JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x13F5 PUSH1 0x1 DUP5 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1405 JUMPI PUSH2 0x1405 PUSH2 0x4634 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 0x143C JUMPI PUSH2 0x143C PUSH2 0x4634 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 0x1460 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x1792 JUMPI DUP1 ISZERO PUSH2 0x1524 JUMPI PUSH2 0x1476 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x148C JUMPI PUSH2 0x148C PUSH2 0x4634 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 0x14AD JUMPI PUSH0 PUSH2 0x14B0 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x14C3 JUMPI PUSH2 0x14C3 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x14E3 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x14EF DUP2 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x14FF JUMPI PUSH2 0x14FF PUSH2 0x4634 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 0x15F5 JUMP JUMPDEST PUSH2 0x152F DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1545 JUMPI PUSH2 0x1545 PUSH2 0x4634 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 0x1568 JUMPI POP PUSH1 0x1 PUSH2 0x15F5 JUMP JUMPDEST PUSH2 0x1573 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1589 JUMPI PUSH2 0x1589 PUSH2 0x4634 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 0x15F5 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x15B9 JUMPI PUSH2 0x15B9 PUSH2 0x4634 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 0x15DC SWAP2 SWAP1 PUSH2 0x4703 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 0x16B2 JUMPI PUSH2 0x1606 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x161B JUMPI PUSH2 0x161B PUSH2 0x4634 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 0x163C JUMPI PUSH0 PUSH2 0x163F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1651 JUMPI PUSH2 0x1651 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1671 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH0 PUSH2 0x167D PUSH1 0x1 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x168D JUMPI PUSH2 0x168D PUSH2 0x4634 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 0x1782 JUMP JUMPDEST PUSH2 0x16BD DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16D2 JUMPI PUSH2 0x16D2 PUSH2 0x4634 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 0x16F6 JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x1782 JUMP JUMPDEST PUSH2 0x1701 DUP7 PUSH1 0x1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1716 JUMPI PUSH2 0x1716 PUSH2 0x4634 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 0x1782 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1746 JUMPI PUSH2 0x1746 PUSH2 0x4634 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 0x1769 SWAP2 SWAP1 PUSH2 0x4703 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 0x178B DUP4 PUSH2 0x465F JUMP JUMPDEST SWAP3 POP PUSH2 0x1429 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x179F PUSH1 0x1 DUP7 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17AF JUMPI PUSH2 0x17AF PUSH2 0x4634 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 0x17DE SWAP2 SWAP1 PUSH2 0x46F0 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x17EE JUMPI PUSH2 0x17EE PUSH2 0x4634 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 0x182A DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x282A 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x18B7 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x18D2 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x18FE 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 0x1928 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1937 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x294F JUMP JUMPDEST DUP4 ISZERO PUSH2 0x197D 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 0x852 DUP2 DUP6 DUP6 PUSH2 0x2158 JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH1 0x1 PUSH2 0x2051 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x19AF DUP4 PUSH2 0x1CC1 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x19D8 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x19E2 DUP7 PUSH2 0x85C JUMP JUMPDEST SWAP1 POP PUSH2 0x938 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2987 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x19FC DUP4 PUSH2 0x1CD7 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1A25 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH0 PUSH2 0x1A2F DUP7 PUSH2 0x834 JUMP JUMPDEST SWAP1 POP PUSH2 0x938 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2987 JUMP JUMPDEST PUSH2 0x1A46 PUSH2 0x3E8E JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1A6B 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 0x1C0A JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1A91 JUMPI PUSH2 0x1A91 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1AED JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1AC5 JUMPI PUSH2 0x1AC5 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1AE0 JUMPI PUSH2 0x1AE0 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1B0B 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 0x1B21 JUMPI PUSH2 0x1B21 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B3C JUMPI PUSH2 0x1B3C PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1B5B JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1081 JUMPI PUSH2 0x1081 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1B73 JUMPI PUSH2 0x1B73 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1B8E JUMPI PUSH2 0x1B8E PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1BAF JUMPI PUSH2 0x1BAF PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1BC3 SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1BD9 JUMPI PUSH2 0x1BD9 PUSH2 0x4634 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 0x1C03 SWAP1 PUSH2 0x471C JUMP JUMPDEST SWAP1 POP PUSH2 0x1A6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1C3D JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1C2F JUMPI PUSH2 0x1C2F PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1C5B 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 0x11C5 SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C94 PUSH2 0x2325 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1CAD JUMPI PUSH2 0x1CA8 DUP2 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CCC DUP4 PUSH2 0x299D JUMP JUMPDEST SWAP1 POP PUSH2 0x886 DUP2 PUSH2 0x29B0 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1CE2 DUP4 PUSH2 0x2A45 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1CEF DUP3 PUSH0 PUSH2 0x2051 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1CFB DUP3 PUSH2 0x29B0 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1D13 JUMPI PUSH2 0x1D0E DUP2 PUSH0 PUSH2 0x20BA JUMP JUMPDEST PUSH2 0x938 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1D24 PUSH2 0x3E8E 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 0x1D3B 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 0x1DC3 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x1DE1 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 0x1DF8 JUMPI PUSH2 0x1DF8 PUSH2 0x4634 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 0x1E1C JUMPI PUSH2 0x1E1C PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x1E40 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x1E5E 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 0x1E7B JUMPI PUSH2 0x1E78 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x1E8C JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x886 JUMP JUMPDEST PUSH2 0x1E9E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1ED3 JUMPI PUSH2 0x1EB7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1EE5 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x1F1A JUMPI PUSH2 0x1EFE DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x1F2E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x1F43 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2BE7 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 0x1F89 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 0x1FA3 PUSH2 0x3E8E 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 0xB00 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 0x1FED JUMPI PUSH2 0x1FED PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2006 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x204D JUMPI PUSH2 0x2031 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2021 JUMPI PUSH2 0x2021 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x27C1 JUMP JUMPDEST PUSH2 0x203B SWAP1 DUP4 PUSH2 0x4698 JUMP JUMPDEST SWAP2 POP PUSH2 0x2046 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x1FD9 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH2 0x205D PUSH2 0x766 JUMP JUMPDEST PUSH2 0x2068 SWAP1 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH2 0x2073 PUSH0 PUSH1 0xA PUSH2 0x481D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x209F SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2D08 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2D4A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH2 0x20C9 DUP3 PUSH1 0xA PUSH2 0x481D JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x20F5 SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH2 0x20FD PUSH2 0x766 JUMP JUMPDEST PUSH2 0x209F SWAP1 PUSH1 0x1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 PUSH2 0x2113 DUP5 DUP5 PUSH2 0x1D62 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x2152 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2144 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 JUMP JUMPDEST PUSH2 0x2152 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2D4A JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2181 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x21AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 DUP4 PUSH2 0x2E2D 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 0x21F2 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 0x2216 SWAP2 SWAP1 PUSH2 0x482B JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x2234 DUP10 DUP10 PUSH2 0xF14 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 0x2286 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 0x22AA SWAP2 SWAP1 PUSH2 0x4846 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x22CC JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xBA8 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x22EB SWAP3 SWAP2 SWAP1 PUSH2 0x487B 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 0x2F53 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x233D JUMPI PUSH2 0x233D PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2356 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x23AC JUMPI PUSH2 0x238A DUP4 PUSH2 0x2385 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2375 JUMPI PUSH2 0x2375 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A7D JUMP JUMPDEST PUSH2 0x2FBC JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x239C JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x23A5 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x2329 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2437 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x242B PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 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 0x2455 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 0x24B4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x24B1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4648 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x24DC 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 0xB87 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x250C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0x20B5 DUP4 DUP4 PUSH2 0x2FE3 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x256B DUP5 DUP5 DUP5 DUP5 PUSH2 0x3038 JUMP JUMPDEST PUSH2 0x2152 DUP3 PUSH2 0x30B5 JUMP JUMPDEST PUSH0 PUSH2 0x76F PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x259D DUP5 DUP4 PUSH2 0x26E1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x260F 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 0x25E5 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 0x2609 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x261A DUP6 DUP3 PUSH2 0x282A JUMP JUMPDEST PUSH2 0x2624 DUP5 DUP5 PUSH2 0x2773 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x2696 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 0x266C 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 0x2690 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP4 PUSH2 0x2BE7 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 0x2728 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 0x274C SWAP2 SWAP1 PUSH2 0x482B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x20B5 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2787 SWAP2 SWAP1 PUSH2 0x3EDB 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 0x2F53 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 0x2806 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 0x83F SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2905 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 0x2881 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x28B9 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 0x28BE JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2152 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x28F7 SWAP2 SWAP1 PUSH2 0x3EDB 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 0x20B5 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 0x2F53 JUMP JUMPDEST PUSH2 0x2957 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x295F PUSH2 0x3215 JUMP JUMPDEST PUSH2 0x2968 DUP6 PUSH2 0x321D JUMP JUMPDEST PUSH2 0x2972 DUP8 DUP8 PUSH2 0x322E JUMP JUMPDEST PUSH2 0x297E DUP5 DUP5 DUP5 DUP5 PUSH2 0x3240 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2990 DUP3 PUSH2 0x37C1 JUMP JUMPDEST PUSH2 0x22CC DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x38D4 JUMP JUMPDEST PUSH0 PUSH2 0x83F PUSH2 0x29AA DUP4 PUSH2 0xBB0 JUMP JUMPDEST PUSH0 PUSH2 0x2051 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x29C8 JUMPI PUSH2 0x29C8 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x29E1 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2A3E JUMPI PUSH2 0x2A10 DUP4 PUSH2 0x2385 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2A00 JUMPI PUSH2 0x2A00 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A4F JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2A21 JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2A2E JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2A37 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x29B4 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x83F DUP3 PUSH2 0xBB0 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 0x27EB 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 0x27EB JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2B8D JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD1 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 0x2B06 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2B3E 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 0x2B43 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2B85 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2B7C SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0x886 JUMP JUMPDEST PUSH2 0x2BDD DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2BA3 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 0x2F53 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0x886 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2CB8 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0D 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 0x2C42 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2C7A 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 0x2C7F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2B85 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2B7C SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH2 0x2BDD DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2CCE 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 0x2F53 JUMP JUMPDEST PUSH0 PUSH2 0x2D35 PUSH2 0x2D15 DUP4 PUSH2 0x3988 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D30 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2D2B JUMPI PUSH2 0x2D2B PUSH2 0x48AC JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D40 DUP7 DUP7 DUP7 PUSH2 0x39B4 JUMP JUMPDEST PUSH2 0x938 SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2D81 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2DAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 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 0x22CC 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 0x2E1E 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 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2E67 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2E5C SWAP2 SWAP1 PUSH2 0x4698 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2EC4 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 0x2EA6 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4677 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 0x2EE2 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x2F00 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 0x2F45 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2F6F SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2FA7 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 0x2FAC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x938 DUP6 DUP4 DUP4 PUSH2 0x3A6A JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x2FD5 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x2FDC JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2FEC DUP3 PUSH2 0x3AC1 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 0x3030 JUMPI PUSH2 0x20B5 DUP3 DUP3 PUSH2 0x2F53 JUMP JUMPDEST PUSH2 0xADC PUSH2 0x3B24 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x305D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x3B43 JUMP JUMPDEST PUSH2 0x3067 DUP5 DUP4 PUSH2 0x3BAA JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E1E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x30ED JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x30D4 JUMPI PUSH2 0x30D4 PUSH2 0x4634 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 0x30F9 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x31AC JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3115 JUMPI PUSH2 0x3115 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3135 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3148 JUMPI PUSH2 0x3148 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3168 DUP5 PUSH2 0x3163 DUP5 PUSH2 0x2A7D JUMP JUMPDEST PUSH2 0x3BDE JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3178 JUMPI POP POP PUSH2 0x319C JUMP JUMPDEST PUSH2 0x318C PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2BE7 JUMP JUMPDEST POP PUSH2 0x3197 DUP2 DUP6 PUSH2 0x46F0 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x31A5 DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x30B8 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2455 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x3225 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0x2457 DUP2 PUSH2 0x3BED JUMP JUMPDEST PUSH2 0x3236 PUSH2 0x31CC JUMP JUMPDEST PUSH2 0xADC DUP3 DUP3 PUSH2 0x3C5D JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x324F JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x325C JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3269 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3276 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x3297 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 0x329F PUSH2 0x3E8E JUMP JUMPDEST PUSH2 0x32A7 PUSH2 0x3E8E JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x374A JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x32CE JUMPI PUSH2 0x32CE PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x32FD JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3339 PUSH2 0x3308 PUSH2 0x2574 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x331A JUMPI PUSH2 0x331A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x33D9 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3355 JUMPI PUSH2 0x3355 PUSH2 0x4634 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 0x3378 JUMPI PUSH2 0x3378 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x33D1 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33A0 JUMPI PUSH2 0x33A0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x333B JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33EE JUMPI PUSH2 0x33EE PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3435 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3414 JUMPI PUSH2 0x3414 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x342F JUMPI PUSH2 0x342F PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3477 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x344C JUMPI PUSH2 0x344C PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x348B JUMPI PUSH2 0x348B PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x34D2 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x34B1 JUMPI PUSH2 0x34B1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x34CC JUMPI PUSH2 0x34CC PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3514 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x34E9 JUMPI PUSH2 0x34E9 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB87 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 0x3529 JUMPI PUSH2 0x3529 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3544 JUMPI PUSH2 0x3544 PUSH2 0x4634 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 0x3568 JUMPI PUSH2 0x3568 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3583 JUMPI PUSH2 0x3583 PUSH2 0x4634 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x35A1 JUMPI PUSH2 0x35A1 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x35BC JUMPI PUSH2 0x35BC PUSH2 0x4634 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 0x35F2 JUMPI PUSH2 0x35F2 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3618 JUMPI PUSH2 0x3618 PUSH2 0x4634 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 0x364A JUMPI PUSH2 0x364A PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x365E SWAP2 SWAP1 PUSH2 0x461B JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3671 JUMPI PUSH2 0x3671 PUSH2 0x4634 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 0x36DF DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36A6 JUMPI PUSH2 0x36A6 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x36C0 JUMPI PUSH2 0x36C0 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2773 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36F1 JUMPI PUSH2 0x36F1 PUSH2 0x4634 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 0x373A 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 0x32A9 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x377A SWAP2 SWAP1 PUSH2 0x46AB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x37B1 SWAP2 SWAP1 PUSH2 0x46AB 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 0x37FA JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x37E1 JUMPI PUSH2 0x37E1 PUSH2 0x4634 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 0x3806 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x38B4 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3822 JUMPI PUSH2 0x3822 PUSH2 0x4634 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3842 SWAP2 SWAP1 PUSH2 0x4703 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3855 JUMPI PUSH2 0x3855 PUSH2 0x4634 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3870 DUP5 PUSH2 0x3163 DUP5 PUSH2 0x2A4F JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3880 JUMPI POP POP PUSH2 0x38A4 JUMP JUMPDEST PUSH2 0x3894 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2AAB JUMP JUMPDEST POP PUSH2 0x389F DUP2 DUP6 PUSH2 0x46F0 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x38AD DUP2 PUSH2 0x465F JUMP JUMPDEST SWAP1 POP PUSH2 0x37C4 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xADC JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3900 JUMPI PUSH2 0x3900 DUP5 DUP8 DUP5 PUSH2 0x2108 JUMP JUMPDEST PUSH2 0x390A DUP5 DUP4 PUSH2 0x3CAD JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3920 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x3CE1 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3978 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 POP JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x399D JUMPI PUSH2 0x399D PUSH2 0x48C0 JUMP JUMPDEST PUSH2 0x39A7 SWAP2 SWAP1 PUSH2 0x48D4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x39E8 JUMPI DUP4 DUP3 DUP2 PUSH2 0x39DE JUMPI PUSH2 0x39DE PUSH2 0x48AC JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x886 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x39FF JUMPI PUSH2 0x39FF PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x3D12 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3A7A JUMPI PUSH2 0x1CA8 DUP3 PUSH2 0x3D23 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3A91 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3ABA 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 0xB87 JUMP JUMPDEST POP DUP1 PUSH2 0x886 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3AF6 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 0xB87 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A20 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 0x2455 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x2152 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3D4C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3BD3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0xADC PUSH0 DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0x886 JUMP JUMPDEST PUSH2 0x3BF5 PUSH2 0x31CC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A40 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x3C0E DUP5 PUSH2 0x3DB8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3C1E JUMPI PUSH1 0x12 PUSH2 0x3C20 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 0x3C65 PUSH2 0x31CC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4A00 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3C9E DUP5 DUP3 PUSH2 0x4945 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x2152 DUP4 DUP3 PUSH2 0x4945 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3CD6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB87 JUMP JUMPDEST PUSH2 0xADC DUP3 PUSH0 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x20B5 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x3B78 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3D33 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x3D6B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x3D82 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x3D8F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2152 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 0xB87 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x3DFE SWAP2 PUSH2 0x4896 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E36 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 0x3E3B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3E4F JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x3E82 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3E69 SWAP2 SWAP1 PUSH2 0x4648 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x3E80 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 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 0x886 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3EAD JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EFD 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 0x2457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F34 DUP2 PUSH2 0x3F04 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 0x3F54 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F5F DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3F6F DUP2 PUSH2 0x3F04 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 0x3F90 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 0x3FD1 JUMPI PUSH2 0x3FD1 PUSH2 0x3F95 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3FE8 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 0x4007 JUMPI PUSH2 0x4007 PUSH2 0x3F95 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x401C DUP2 PUSH2 0x3FA9 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4030 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 0x405C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4065 DUP5 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP PUSH2 0x4073 PUSH1 0x20 DUP6 ADD PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x408D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4099 DUP7 DUP3 DUP8 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x886 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x40DA DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4100 DUP6 DUP3 DUP7 ADD PUSH2 0x3FD9 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 0x4135 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4113 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x414F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x3F04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2457 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x418C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4195 DUP6 PUSH2 0x3F80 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x41A5 DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x41BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x41CB DUP8 DUP3 DUP9 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x41DC DUP2 PUSH2 0x416C JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4201 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x420F PUSH1 0x20 DUP5 ADD PUSH2 0x3F80 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4230 JUMPI PUSH2 0x4230 PUSH2 0x3F95 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4249 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x425C PUSH2 0x4257 DUP3 PUSH2 0x4218 JUMP JUMPDEST PUSH2 0x3FA9 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 0x427D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI PUSH2 0x4293 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4282 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x42D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xBA8 DUP5 DUP3 DUP6 ADD PUSH2 0x423A JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x42F6 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x416C JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3F90 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4320 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x432E PUSH2 0x4257 DUP3 PUSH2 0x4218 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 0x434F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI DUP1 CALLDATALOAD PUSH2 0x4367 DUP2 PUSH2 0x3F04 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4354 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4384 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4392 PUSH2 0x4257 DUP3 PUSH2 0x4218 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 0x43B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42A1 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x43E4 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x3FD9 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x43B8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4409 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x441E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x442A DUP11 DUP3 DUP12 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4445 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4451 DUP11 DUP3 DUP12 ADD PUSH2 0x3FD9 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x4460 PUSH1 0x40 DUP10 ADD PUSH2 0x4306 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x447A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4486 DUP11 DUP3 DUP12 ADD PUSH2 0x4311 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44AD DUP11 DUP3 DUP12 ADD PUSH2 0x4375 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44D4 DUP11 DUP3 DUP12 ADD PUSH2 0x423A JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44FB DUP11 DUP3 DUP12 ADD PUSH2 0x423A 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 0x451C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x452E DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x453E DUP2 PUSH2 0x3F04 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 0x4135 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 0x4552 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x458B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4596 DUP2 PUSH2 0x3F04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4161 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x45B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45C1 DUP5 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP PUSH2 0x3F6F PUSH1 0x20 DUP6 ADD PUSH2 0x3F80 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x45E3 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4601 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 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 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 0x4658 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4670 JUMPI PUSH2 0x4670 PUSH2 0x4607 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 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 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 0x46E5 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x46C4 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x83F JUMPI PUSH2 0x83F PUSH2 0x4607 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4731 JUMPI PUSH2 0x4731 PUSH2 0x4607 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4775 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4759 JUMPI PUSH2 0x4759 PUSH2 0x4607 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4767 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x473E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x478B JUMPI POP PUSH1 0x1 PUSH2 0x83F JUMP JUMPDEST DUP2 PUSH2 0x4797 JUMPI POP PUSH0 PUSH2 0x83F JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x47AD JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x47B7 JUMPI PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x83F JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x47C8 JUMPI PUSH2 0x47C8 PUSH2 0x4607 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x83F JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x47F6 JUMPI POP DUP2 DUP2 EXP PUSH2 0x83F JUMP JUMPDEST PUSH2 0x4802 PUSH0 NOT DUP5 DUP5 PUSH2 0x473A JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4815 JUMPI PUSH2 0x4815 PUSH2 0x4607 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x886 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x477D JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x483B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x886 DUP2 PUSH2 0x3F04 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4862 DUP2 PUSH2 0x416C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4161 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xBA8 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3EAD 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 0x48F2 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 0x20B5 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4926 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22CC JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4932 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x495E JUMPI PUSH2 0x495E PUSH2 0x3F95 JUMP JUMPDEST PUSH2 0x4972 DUP2 PUSH2 0x496C DUP5 SLOAD PUSH2 0x45CF JUMP JUMPDEST DUP5 PUSH2 0x4901 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x49A4 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x498D 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 0x22CC JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49D3 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x49B3 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x49F0 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0773E532DFEDE91F04B12A PUSH20 0xD3D2ACD361424F41F76B4FB79F090161E36B4E00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL KECCAK256 0x26 EXTCODECOPY LOG4 0xC3 EXP 0x21 PUSH5 0x9806E490DA 0x2E 0xA8 ORIGIN 0xE6 GASPRICE 0xE4 0x21 DUP12 0xEF 0xE4 0xAC PUSH9 0x9E259A743AD564736F PUSH13 0x634300081C0033000000000000 ","sourceMap":"1355:5497:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4278:109;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;4278:109:48;;;;;;;;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;:::-;;;1619:14:75;;1612:22;1594:41;;1582:2;1567:18;5210:186:9;1454:187:75;8777:147:10;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;3896:152:9:-;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;5988:244;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;6612:221:10:-;;;;;;;;;;;;;:::i;:::-;;;2331:4:75;2319:17;;;2301:36;;2289:2;2274:18;6612:221:10;2159:184:75;6877:153:10;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;7014:8:10;6877:153;;-1:-1:-1;;;;;7014:8:10;;;2494:51:75;;2482:2;2467:18;6877:153:10;2348:203:75;9918:404:53;;;;;;;;;;-1:-1:-1;9918:404:53;;;;;:::i;:::-;;:::i;3875:115:48:-;;;;;;;;;;-1:-1:-1;3875:115:48;;;;;:::i;:::-;;:::i;8263:386:53:-;;;;;;;;;;-1:-1:-1;8263:386:53;;;;;:::i;:::-;;:::i;4161:214:8:-;;;;;;:::i;:::-;;:::i;:::-;;19698:110:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3708:134:8:-;;;;;;;;;;;;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;1743:41:53:-;;;;;;;;;;;;1782:2;1743:41;;11182:650;;;;;;;;;;-1:-1:-1;11182:650:53;;;;;:::i;:::-;;:::i;12121:662::-;;;;;;;;;;-1:-1:-1;12121:662:53;;;;;:::i;:::-;;:::i;5566:342:48:-;;;;;;;;;;-1:-1:-1;5566:342:48;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;8107:33:75;;;8089:52;;8077:2;8062:18;5566:342:48;7945:202:75;15692:733:53;;;;;;;;;;-1:-1:-1;15692:733:53;;;;;:::i;:::-;;:::i;9603:380:10:-;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;13159:2217:53:-;;;;;;;;;;-1:-1:-1;13159:2217:53;;;;;:::i;:::-;;:::i;2114:392:48:-;;;;;;;;;;-1:-1:-1;2114:392:48;;;;;:::i;:::-;;:::i;4472:178:9:-;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;10488:405::-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;16749:744:53:-;;;;;;;;;;-1:-1:-1;16749:744:53;;;;;:::i;:::-;;:::i;4021:226:48:-;;;;;;;;;;-1:-1:-1;4021:226:48;;;;;:::i;:::-;;:::i;7309:148:10:-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;3273:182:48:-;;;;;;;;;;-1:-1:-1;3273:182:48;;;;;:::i;:::-;;:::i;3486:358::-;;;;;;;;;;-1:-1:-1;3486:358:48;;;;;:::i;:::-;;:::i;19143:114:53:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;17964:1009:53:-;;;;;;;;;;-1:-1:-1;17964:1009:53;;;;;:::i;:::-;;:::i;19423:108::-;;;;;;;;;;;;;:::i;4278:109:48:-;4339:14;4368;:12;:14::i;:::-;4361:21;;4278:109;:::o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;:::-;7600:52;7511:148;-1:-1:-1;;7511:148:10:o;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;:::-;6778:48;;;6612:221;:::o;9918:404:53:-;10046:12;10066:57;10090:13;10105:6;10113:9;10066:23;:57::i;:::-;10129:24;10156:11;10168:13;10156:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10156:26:53;;-1:-1:-1;10156:26:53;10188:61;;10232:17;;-1:-1:-1;;;10232:17:53;;;;;;;;;;;10188:61;10262:55;10299:6;10307:9;10262:11;10274:13;10262:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10262:26:53;;:55;:36;:55::i;:::-;10255:62;9918:404;-1:-1:-1;;;;;9918:404:53:o;3875:115:48:-;3942:11;3968:17;:15;:17::i;8263:386:53:-;8331:12;8356:9;8351:253;8409:1;8367:11;8379:1;8367:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8367:14:53;:45;;;;:67;;-1:-1:-1;1782:2:53;8416:18;;8367:67;8351:253;;;8461:11;8473:1;8461:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8461:14:53;-1:-1:-1;;;;;8461:26:53;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8453:4;:36;8449:149;;8575:14;;8560:4;;;;8575:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8263:386;;;:::o;8449:149::-;8436:3;;;:::i;:::-;;;8351:253;;;;8616:28;;-1:-1:-1;;;8616:28:53;;;;;;;;;;;4161:214:8;2655:13;:11;:13::i;:::-;4322:46:::1;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;19698:110:53:-;19746:28;;:::i;:::-;19782:21;;;;;;;;;;;19789:14;;19782:21;;19789:14;-1:-1:-1;19782:21:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19698:110;:::o;3708:134:8:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;11182:650:53:-;11341:24;11368:11;11380:13;11368:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11368:26:53;;-1:-1:-1;11368:26:53;11400:61;;11444:17;;-1:-1:-1;;;11444:17:53;;;;;;;;;;;11400:61;11472:9;11467:200;1782:2;11483:18;;:67;;;;-1:-1:-1;11547:1:53;11505:11;11517:1;11505:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11505:14:53;:45;;11483:67;11467:200;;;11587:11;-1:-1:-1;;;;;11569:29:53;:11;11581:1;11569:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11569:14:53;:29;:51;;;;;11607:13;11602:18;;:1;:18;;11569:51;11565:95;;;11629:31;;-1:-1:-1;;;11629:31:53;;-1:-1:-1;;;;;2512:32:75;;11629:31:53;;;2494:51:75;2467:18;;11629:31:53;2348:203:75;11565:95:53;11552:3;;;:::i;:::-;;;11467:200;;;;11672:109;11708:8;11718:11;11731:16;11764:8;:6;:8::i;:::-;11775:5;11672:35;:109::i;:::-;11816:11;11787;11799:13;11787:26;;;;;;;;;:::i;:::-;;:40;;-1:-1:-1;;;;;;11787:40:53;-1:-1:-1;;;;;11787:40:53;;;;;;;;;;-1:-1:-1;;;;;11182:650:53:o;12121:662::-;-1:-1:-1;;;;;12227:34:53;;12223:64;;12270:17;;-1:-1:-1;;;12270:17:53;;;;;;;;;;;12223:64;12293:9;12308:169;1782:2;12315:18;;:67;;;;-1:-1:-1;12379:1:53;12337:11;12349:1;12337:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12337:14:53;:45;;12315:67;12308:169;;;12419:11;-1:-1:-1;;;;;12401:29:53;:11;12413:1;12401:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12401:14:53;:29;12397:73;;12439:31;;-1:-1:-1;;;12439:31:53;;-1:-1:-1;;;;;2512:32:75;;12439:31:53;;;2494:51:75;2467:18;;12439:31:53;2348:203:75;12397:73:53;12384:3;;;:::i;:::-;;;12308:169;;;-1:-1:-1;;12486:19:53;;12482:57;;12514:25;;-1:-1:-1;;;;;;12514:25:53;;;;;;;;;;;12482:57;12562:11;12545;12557:1;12545:14;;;;;;;:::i;:::-;;:28;;-1:-1:-1;;;;;;12545:28:53;-1:-1:-1;;;;;12545:28:53;;;;;;;;;;12604:5;:1;-1:-1:-1;12604:5:53;:::i;:::-;12579:13;12593:1;12579:16;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12642:1;12646;12642:5;;;;:::i;:::-;12616:14;12631:1;12616:17;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12654;12677:8;:6;:8::i;:::-;-1:-1:-1;;;;;12654:22:53;;;;:32::i;:::-;12692:39;-1:-1:-1;;;;;12692:21:53;;12714:16;12692:21;:39::i;:::-;12742:36;;2331:4:75;2319:17;;2301:36;;-1:-1:-1;;;;;12742:36:53;;;;;2289:2:75;2274:18;12742:36:53;;;;;;;12217:566;12121:662;;:::o;5566:342:48:-;5660:15;5789:16;5816:11;5828:13;5816:26;;;;;;;;;:::i;:::-;;;5873:28;;;-1:-1:-1;;;;;5816:26:48;;;5873:28;;;16889:51:75;;;16988:4;16976:17;;16956:18;;;16949:45;;;;5816:26:48;-1:-1:-1;16862:18:75;;5873:28:48;;;;;;;;;;;;5863:39;;;;;;5849:54;;;5566:342;;;;:::o;15692:733:53:-;15774:32;;:::i;:::-;15835:23;;15812:9;;1782:2;-1:-1:-1;15831:67:53;;;15884:14;;-1:-1:-1;;;15884:14:53;;;;;;;;;;;15831:67;15915:16;:23;15911:1;:27;15904:371;;;1782:2;15957:37;;:16;15974:1;15957:19;;;;;;;;:::i;:::-;;;;;;;:37;;;;:96;;;;16051:1;-1:-1:-1;;;;;15998:55:53;16006:11;16018:16;16035:1;16018:19;;;;;;;;:::i;:::-;;;;;;;16006:32;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16006:32:53;15998:55;15957:96;15953:131;;;16070:14;;-1:-1:-1;;;16070:14:53;;;;;;;;;;;15953:131;16096:4;16101:16;16118:1;16101:19;;;;;;;;:::i;:::-;;;;;;;16096:25;;;;;;;;;:::i;:::-;;;;;16092:86;;;16158:16;16175:1;16158:19;;;;;;;;:::i;:::-;;;;;;;16130:48;;-1:-1:-1;;;16130:48:53;;;;;;;2331:4:75;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;16092:86:53;16214:4;16186;16191:16;16208:1;16191:19;;;;;;;;:::i;:::-;;;;;;;16186:25;;;;;;;;;:::i;:::-;:32;;;:25;;;;;:32;16245:19;;;;16262:1;;16245:19;;;;;;:::i;:::-;;;;;;;16267:1;16245:23;;;;:::i;:::-;16226:13;16240:1;16226:16;;;;;;;:::i;:::-;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15940:3;;;;;15904:371;;;1782:2;16284:18;;:59;;;;-1:-1:-1;16341:1:53;16314:11;16326:1;16314:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16314:14:53;16306:37;;16284:59;16280:92;;;16352:20;;-1:-1:-1;;;16352:20:53;;;;;;;;;;;16280:92;16383:37;16403:16;16383:37;;;;;;:::i;:::-;;;;;;;;15768:657;;15692:733;:::o;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;13159:2217:53:-;1782:2;13241:31;;;;13237:61;;13281:17;;-1:-1:-1;;;13281:17:53;;;;;;;;;;;13237:61;13304:24;13331:11;13343:13;13331:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13331:26:53;;-1:-1:-1;13331:26:53;13363:61;;13407:17;;-1:-1:-1;;;13407:17:53;;;;;;;;;;;13363:61;13435:5;13434:6;:37;;;;;13444:22;:8;-1:-1:-1;;;;;13444:20:53;;:22::i;:::-;:27;;13434:37;13430:82;;;13480:32;;-1:-1:-1;;;13480:32:53;;;;;;;;;;;13430:82;13563:18;;;;:59;;;;-1:-1:-1;13593:14:53;;-1:-1:-1;;;;;13593:14:53;13585:37;13563:59;13559:97;;;13631:25;;-1:-1:-1;;;;;;13631:25:53;;;;;;;;;;;13559:97;13713:9;13725:17;:13;13741:1;13725:17;:::i;:::-;13713:29;;;;13748:131;1782:2;13755:18;;:67;;;;-1:-1:-1;13819:1:53;13777:11;13789:1;13777:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13777:14:53;:45;;13755:67;13748:131;;;13858:11;13870:1;13858:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13858:14:53;13837:11;13849:5;13858:14;13849:1;:5;:::i;:::-;13837:18;;;;;;;:::i;:::-;;:35;;-1:-1:-1;;;;;;13837:35:53;-1:-1:-1;;;;;13837:35:53;;;;;;;;;;13824:3;;;:::i;:::-;;;13748:131;;;13929:1;13884:11;13896:5;13900:1;13896;:5;:::i;:::-;13884:18;;;;;;;:::i;:::-;;:48;;-1:-1:-1;;;;;;13884:48:53;-1:-1:-1;;;;;13884:48:53;;;;;;;;;;-1:-1:-1;;;;14035:1191:53;14047:14;14062:1;14047:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;;;:44;;-1:-1:-1;1782:2:53;14073:18;;14047:44;14035:1191;;;14110:13;14106:544;;;14278:17;:13;14294:1;14278:17;:::i;:::-;14257:39;;:14;14272:1;14257:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14256:49;;14304:1;14256:49;;;14300:1;14256:49;14235:14;14250:1;14235:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:71;;;;:::i;:::-;14211:14;14226:5;14211:14;14226:1;:5;:::i;:::-;14211:21;;;;;;;:::i;:::-;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;14106:544;;;14357:17;:13;14373:1;14357:17;:::i;:::-;14335:40;;:14;14350:1;14335:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:40;14331:311;;-1:-1:-1;14483:4:53;14331:311;;;14529:17;:13;14545:1;14529:17;:::i;:::-;14508:39;;:14;14523:1;14508:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14504:138;;;14630:1;14609:14;14624:1;14609:17;;;;;;;:::i;:::-;;;;;;;;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14504:138;14688:12;14684:536;;;14852:17;:13;14868:1;14852:17;:::i;:::-;14832:38;;:13;14846:1;14832:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;14831:48;;14878:1;14831:48;;;14874:1;14831:48;14811:13;14825:1;14811:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:69;;;;:::i;:::-;14788:13;14802:5;14806:1;14802;:5;:::i;:::-;14788:20;;;;;;;:::i;:::-;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;14684:536;;;14930:17;:13;14946:1;14930:17;:::i;:::-;14909:39;;:13;14923:1;14909:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14905:307;;15055:4;15040:19;;14905:307;;;15100:17;:13;15116:1;15100:17;:::i;:::-;15080:38;;:13;15094:1;15080:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15076:136;;;15200:1;15180:13;15194:1;15180:16;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15076:136;14093:3;;;:::i;:::-;;;14035:1191;;;15254:1;;15245:5;15249:1;15245;:5;:::i;:::-;15231:20;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15285:1;15261:14;15280:1;15276;:5;;;;:::i;:::-;15261:21;;;;;;;:::i;:::-;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15292:28;15314:5;15292:8;-1:-1:-1;;;;;15292:21:53;;;:28;;;;:::i;:::-;15331:40;;2331:4:75;2319:17;;2301:36;;-1:-1:-1;;;;;15331:40:53;;;;;2289:2:75;2274:18;15331:40:53;;;;;;;13231:2145;;;;13159:2217;;:::o;2114:392:48:-;8870:21:7;4302:15;;-1:-1:-1;;;4302:15:7;;;;4301:16;;-1:-1:-1;;;;;4348:14:7;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:7;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:7;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:7;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:7;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:7;-1:-1:-1;;;5013:22:7;;;4979:67;2391:110:48::1;2415:5;2422:7;2431:6;2439:11;2452:17;2471:13;2486:14;2391:23;:110::i;:::-;5070:14:7::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:7;;;5142:14;;-1:-1:-1;18070:50:75;;5142:14:7;;18058:2:75;18043:18;5142:14:7;;;;;;;5066:101;4092:1081;;;;;2114:392:48;;;;;;;:::o;4472:178:9:-;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;10488:405::-;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;16749:744:53:-;16833:32;;:::i;:::-;16892:24;;16871:7;;1782:2;-1:-1:-1;16888:68:53;;;16942:14;;-1:-1:-1;;;16942:14:53;;;;;;;;;;;16888:68;16973:17;:24;16969:1;:28;;;16962:379;;;1782:2;17016:38;;:17;17034:1;17016:20;;;;;;;;;;:::i;:::-;;;;;;;:38;;;;:98;;;;17112:1;-1:-1:-1;;;;;17058:56:53;17066:11;17078:17;17096:1;17078:20;;;;;;;;;;:::i;:::-;;;;;;;17066:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17066:33:53;17058:56;17016:98;17012:133;;;17131:14;;-1:-1:-1;;;17131:14:53;;;;;;;;;;;17012:133;17157:4;17162:17;17180:1;17162:20;;;;;;;;;;:::i;:::-;;;;;;;17157:26;;;;;;;;;:::i;:::-;;;;;17153:88;;;17220:17;17238:1;17220:20;;;;;;;;;;:::i;17153:88::-;17278:4;17249;17254:17;17272:1;17254:20;;;;;;;;;;:::i;:::-;;;;;;;17249:26;;;;;;;;;:::i;:::-;:33;;;:26;;;;;:33;17310:20;;;;;;;;;;;;;;:::i;:::-;;;;;;;17333:1;17310:24;;;;:::i;:::-;17290:14;17305:1;17290:17;;;;;;;;;:::i;:::-;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;16999:3;;;;:::i;:::-;;;16962:379;;;1782:2;17350:18;;;;:59;;;;-1:-1:-1;17407:1:53;17380:11;:14;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17380:14:53;17372:37;;17350:59;17346:92;;;17418:20;;-1:-1:-1;;;17418:20:53;;;;;;;;;;;17346:92;17449:39;17470:17;17449:39;;;;;;:::i;4021:226:48:-;4085:7;4100:14;4117:17;:15;:17::i;:::-;4100:34;;-1:-1:-1;;4147:6:48;:27;:95;;4197:45;4214:6;4222:19;4197:16;:45::i;:::-;4147:95;;;-1:-1:-1;;4140:102:48;4021:226;-1:-1:-1;;;4021:226:48:o;7309:148:10:-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;3273:182:48:-;3347:7;3362:19;3384:24;3402:5;3384:17;:24::i;:::-;3362:46;;3421:29;3438:11;3421:16;:29::i;3486:358::-;3558:7;3573:14;3590:22;3606:5;3590:15;:22::i;:::-;3573:39;;3618:19;3640:45;3657:6;3665:19;3640:16;:45::i;:::-;3618:67;;3691:17;3711:29;3728:11;3711:16;:29::i;:::-;3691:49;;3767:11;3754:9;:24;3753:86;;3791:48;3808:9;3819:19;3791:16;:48::i;:::-;3753:86;;;-1:-1:-1;3782:6:48;;3746:93;-1:-1:-1;;;3486:358:48:o;19143:114:53:-;19188:38;;:::i;:::-;19234:18;;;;;;;;;;;19241:11;;19234:18;;19241:11;19234:18;;;;-1:-1:-1;;;;;19234:18:53;;;;;;;;;;;;;;;;;;;;;;19143:114;:::o;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;17964:1009:53:-;18067:7;1782:2;18086:33;;;;;;:68;;-1:-1:-1;1782:2:53;18123:31;;;;;18086:68;18082:98;;;18163:17;;-1:-1:-1;;;18163:17:53;;;;;;;;;;;18082:98;18186:28;18217:11;18229:15;18217:28;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18217:28:53;;-1:-1:-1;18217:28:53;18280:11;:26;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18280:26:53;;;;-1:-1:-1;18316:35:53;;;;:72;;-1:-1:-1;;;;;;18355:33:53;;;18316:72;18312:102;;;18397:17;;-1:-1:-1;;;18397:17:53;;;;;;;;;;;18312:102;-1:-1:-1;;18424:6:53;:27;18420:68;;18462:26;:12;-1:-1:-1;;;;;18462:24:53;;:26::i;:::-;18453:35;;18420:68;18498:6;18508:1;18498:11;18494:25;;18518:1;18511:8;;;;;;18494:25;18606:26;:12;-1:-1:-1;;;;;18606:24:53;;:26::i;:::-;18597:6;:35;18593:109;;;18675:26;:12;-1:-1:-1;;;;;18675:24:53;;:26::i;:::-;18641:61;;-1:-1:-1;;;18641:61:53;;;;;;160:25:75;;148:2;133:18;;14:177;18593:109:53;18721:23;:10;-1:-1:-1;;;;;18721:21:53;;:23::i;:::-;18712:6;:32;18708:102;;;18786:23;:10;-1:-1:-1;;;;;18786:21:53;;:23::i;:::-;18753:57;;-1:-1:-1;;;18753:57:53;;;;;;160:25:75;;148:2;133:18;;14:177;18708:102:53;18816:38;-1:-1:-1;;;;;18816:23:53;;18840:6;18848:5;18816:23;:38::i;:::-;-1:-1:-1;18860:35:53;-1:-1:-1;;;;;18860:20:53;;18881:6;18889:5;18860:20;:35::i;:::-;;18930:10;-1:-1:-1;;;;;18906:43:53;18916:12;-1:-1:-1;;;;;18906:43:53;;18942:6;18906:43;;;;160:25:75;;148:2;133:18;;14:177;18906:43:53;;;;;;;;-1:-1:-1;18962:6:53;;17964:1009;-1:-1:-1;;;;17964:1009:53:o;19423:108::-;19470:28;;:::i;:::-;19506:20;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;;;;;;;;;19423:108;:::o;6108:208::-;6155:14;6182:9;6177:135;6228:1;6201:11;6213:1;6201:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6201:14:53;6193:37;;;;:59;;-1:-1:-1;1782:2:53;6234:18;;6193:59;6177:135;;;6277:28;:11;6289:1;6277:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6277:14:53;:26;:28::i;:::-;6267:38;;;;:::i;:::-;;-1:-1:-1;6254:3:53;;;:::i;:::-;;;6177:135;;;;6108:208;:::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;:::-;10001:128;;;:::o;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;11745:477:9:-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;:::-;11834:388;11745:477;;;:::o;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;2494:51:75;2467:18;;6729:30:9;2348:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;2494:51:75;2467:18;;6822:32:9;2348:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;5938:912:48:-;6291:20;6349:4;-1:-1:-1;;;;;6314:57:48;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6291:82;;6380:14;6400:5;-1:-1:-1;;;;;6400:13:48;;6414:10;6434:4;6441:51;6470:13;6485:6;6441:28;:51::i;:::-;6400:93;;;;;;-1:-1:-1;;;;;;6400:93:48;;;;;-1:-1:-1;;;;;20240:32:75;;;6400:93:48;;;20222:51:75;20309:32;;;;20289:18;;;20282:60;20378:33;20358:18;;;20351:61;20195:18;;6400:93:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6379:114;;;6771:9;6766:79;;6789:56;;-1:-1:-1;;;6789:56:48;;6834:10;6789:56;;;2494:51:75;2467:18;;6789:56:48;2348:203:75;6766:79:48;6043:807;;5938:912;;;:::o;4743:249:52:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:52;-1:-1:-1;;;4916:70:52;;;-1:-1:-1;;;;;4877:38:52;;;;:110::i;5678:321:53:-;5728:11;5747:15;5773:9;5768:211;5819:1;5792:11;5804:1;5792:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5792:14:53;5784:37;;;;:59;;-1:-1:-1;1782:2:53;5825:18;;5784:59;5768:211;;;5878:45;5890:3;5895:27;:11;5907:1;5895:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5895:14:53;:25;:27::i;:::-;5878:11;:45::i;:::-;5858:65;-1:-1:-1;5858:65:53;-1:-1:-1;5858:65:53;5931:41;;-1:-1:-1;;5948:24:53;;;;5678:321;:::o;5931:41::-;5845:3;;;:::i;:::-;;;5768:211;;;;5984:10;5678:321;:::o;4603:312:8:-;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;3085:69:48:-;;:::o;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;2512:32:75;;6518:60:8;;;2494:51:75;2467:18;;6518:60:8;2348:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;4723:316:48;4910:48;4925:6;4933:8;4943:6;4951;4910:14;:48::i;:::-;5006:28;5027:6;5006:20;:28::i;3158:84::-;3208:7;3230;-1:-1:-1;;;;;;;;;;;7014:8:10;-1:-1:-1;;;;;7014:8:10;;6877:153;5914:843:52;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:52;;6344:4;6312:38;;;2494:51:75;6288:70:52;;6299:11;;-1:-1:-1;;;;;6312:23:52;;;;;2467:18:75;;6312:38:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:52;;6686:4;6662:30;;;2494:51:75;6639:61:52;;6649:11;;-1:-1:-1;;;;;6662:15:52;;;;;2467:18:75;;6662:30:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:52;;;-1:-1:-1;;;;;21570:32:75;;;21552:51;;21639:32;;21634:2;21619:18;;21612:60;6711:41:52;;21525:18:75;6711:41:52;;;;;;;5914:843;;;;;:::o;5181:159::-;5266:29;;-1:-1:-1;;;5266:29:52;;5289:4;5266:29;;;2494:51:75;-1:-1:-1;;;;;5266:38:52;;;;:14;;;;;;2467:18:75;;5266:29:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:52;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:52;;;;;;;;;;;1120:193;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:52;-1:-1:-1;;;1250:57:52;;;-1:-1:-1;;;;;1211:38:52;;;;:97::i;7489:132::-;7581:35;;-1:-1:-1;;;7581:35:52;;7610:4;7581:35;;;2494:51:75;7559:7:52;;-1:-1:-1;;;;;7581:20:52;;;;;2467:18:75;;7581:35:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1729:465::-;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;1594:41:75;1881:12:52;;;;-1:-1:-1;;;;;1922:30:52;;;1567:18:75;;1962:48:52;;;-1:-1:-1;;1962:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:52;-1:-1:-1;;;1962:48:52;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;4161:214:8;;:::o;1804:386:52:-;2133:49;;2176:5;2133:49;;;1594:41:75;2094:89:52;;1567:18:75;;2133:49:52;;;-1:-1:-1;;2133:49:52;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:52;-1:-1:-1;;;2133:49:52;;;-1:-1:-1;;;;;2094:38:52;;;;:89::i;2561:473:48:-;6931:20:7;:18;:20::i;:::-;2850:24:48::1;:22;:24::i;:::-;2880:22;2895:6;2880:14;:22::i;:::-;2908:28;2921:5;2928:7;2908:12;:28::i;:::-;2942:87;2967:11;2980:17;2999:13;3014:14;2942:24;:87::i;:::-;2561:473:::0;;;;;;;:::o;4428:254::-;4584:31;4608:6;4584:23;:31::i;:::-;4621:56;4637:6;4645:8;4655:5;4662:6;4670;4621:15;:56::i;8017:153:10:-;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;5166:340:53:-;5230:11;5249:15;5275:9;5270:216;5321:1;5294:11;5306:1;5294:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5294:14:53;5286:37;;;;:59;;-1:-1:-1;1782:2:53;5327:18;;5286:59;5270:216;;;5380:46;5392:3;5397:28;:11;5409:1;5397:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5397:14:53;:26;:28::i;5380:46::-;5360:66;-1:-1:-1;5360:66:53;-1:-1:-1;5438:11:53;;;:27;;;5460:5;5453:3;:12;;5438:27;5434:45;;;-1:-1:-1;5474:5:53;;5166:340;-1:-1:-1;;5166:340:53:o;5434:45::-;5347:3;;;:::i;:::-;;;5270:216;;;;5491:10;5166:340;;;:::o;8218:112:10:-;8281:7;8307:16;8317:5;8307:9;:16::i;8054:132:52:-;8146:35;;-1:-1:-1;;;8146:35:52;;8175:4;8146:35;;;2494:51:75;8124:7:52;;-1:-1:-1;;;;;8146:20:52;;;;;2467:18:75;;8146:35:52;2348:203:75;7771:130:52;7862:34;;-1:-1:-1;;;7862:34:52;;7890:4;7862:34;;;2494:51:75;7840:7:52;;-1:-1:-1;;;;;7862:19:52;;;;;2467:18:75;;7862:34:52;2348:203:75;2735:544:52;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:52;3050:6;3009:48;;;;;;160:25:75;;148:2;133:18;;14:177;3009:48:52;;;;-1:-1:-1;;3009:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:52;-1:-1:-1;;;3009:48:52;;;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:52;-1:-1:-1;3126:14:52;;2845:430;3161:88;3241:6;3200:48;;;;;;160:25:75;;148:2;133:18;;14:177;3200:48:52;;;;-1:-1:-1;;3200:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:52;-1:-1:-1;;;3200:48:52;;;-1:-1:-1;;;;;3161:38:52;;;;: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:52;4129:6;4089:47;;;;;;160:25:75;;148:2;133:18;;14:177;4089:47:52;;;;-1:-1:-1;;4089:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:52;-1:-1:-1;;;4089:47:52;;;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:75;;148:2;133:18;;14:177;4278:47:52;;;;-1:-1:-1;;4278:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:52;-1:-1:-1;;;4278:47:52;;;-1:-1:-1;;;;;4239:38:52;;;;:87::i;9351:238:42:-;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;2494:51:75;2467:18;;11183:32:9;2348:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;2494:51:75;2467:18;;11283:31:9;2348:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11415:31:9;;;;;;;;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220:1170;;;:::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;586:231:42:-;647:12;;723:5;;;746;;;742:28;;;761:5;768:1;753:17;;;;;;;742:28;792:4;;-1:-1:-1;798:1:42;-1:-1:-1;586:231:42;;;;;;:::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;11631:890:10:-;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;22551:25:75;;;22607:2;22592:18;;22585:34;22539:2;22524:18;;22377:248;7474:595:53;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:53;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:53;;-1:-1:-1;7745:33:53;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:53;;7906:9;7917:5;7887:18;:36::i;:::-;-1:-1:-1;7931:17:53;7939:9;7931:17;;:::i;:::-;;;7710:245;;7631:324;7705:3;;;:::i;:::-;;;7631:324;;;-1:-1:-1;7964:9:53;;7960:36;;7982:14;;-1:-1:-1;;;7982:14:53;;;;;;;;;;;7084:141:7;8870:21;8560:40;-1:-1:-1;;;8560:40:7;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:7;;;;;;;;;;;2970:67:8;6931:20:7;:18;:20::i;5090:114:10:-;6931:20:7;:18;:20::i;:::-;5165:32:10::1;5190:6;5165:24;:32::i;2282:147:9:-:0;6931:20:7;:18;:20::i;:::-;2384:38:9::1;2407:5;2414:7;2384:22;:38::i;3295:1867:53:-:0;3508:18;;:23;;:68;;-1:-1:-1;3541:18:53;;1782:2;-1:-1:-1;3508:68:53;: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:53;;;;;;;;;;;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:53;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3940:37:53;;3936:67;;3986:17;;-1:-1:-1;;;3986:17:53;;;;;;;;;;;3936:67;4011:35;4037:8;:6;:8::i;:::-;4011:11;4023:1;4011:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4011:25:53;;;:35;;;;:::i;:::-;4104:9;4099:126;4119:1;4115;:5;4099:126;;;4159:11;4171:1;4159:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;:11;4153:1;4141:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;;4137:79;;4201:11;4213:1;4201:14;;;;;;;;:::i;:::-;;;;;;;4182:34;;-1:-1:-1;;;4182:34:53;;;;;;;-1:-1:-1;;;;;2512:32:75;;;;2494:51;;2482:2;2467:18;;2348:203;4137:79:53;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:53;;;;;;;2331:4:75;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;4319:144:53;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:53;;;;;;;2331:4:75;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;4471:149:53;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:53;;;;;-1:-1:-1;;;;;4728:31:53;;;;;;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:53;;;:46;;;;:::i;:::-;5034:11;5046:1;5034:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5020:39:53;;5056:1;5020:39;;;;;2331:4:75;2319:17;;;;2301:36;;2289:2;2274:18;;2159:184;5020:39:53;;;;;;;;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:53;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:53;;-1:-1:-1;6835:34:53;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:53;;7001:10;7013:5;6981:19;:38::i;:::-;-1:-1:-1;7027:18:53;7035:10;7027:18;;:::i;:::-;;;6800:252;;6720:332;6795:3;;;:::i;:::-;;;6720:332;;;-1:-1:-1;7061:9:53;;7057:37;;7079:15;;-1:-1:-1;;;7079:15:53;;;;;;;;;;;12588:974:10;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;22551:25:75;;;22607:2;22592:18;;22585:34;22539:2;22524:18;;22377:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;28183:122:42:-;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;4589:408::-;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;2512:32:75;;4917:24:34;;;2494:51:75;2467:18;;4917:24:34;2348:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;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:75;;1805:47:27;;;2494:51:75;2467:18;;1805:47:27;2348:203:75;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;;;;;;;;;;;1670:188:33;1797:53;;-1:-1:-1;;;;;23241:32:75;;;1797:53:33;;;23223:51:75;23310:32;;;23290:18;;;23283:60;23359:18;;;23352:34;;;1770:81:33;;1790:5;;1812:18;;;;;23196::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;2494:51:75;2467:18;;8847:32:9;2348:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;3371:111:42:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;5210:304:10;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;5295:24:10::1;::::0;5390:28:::1;5411:6:::0;5390:20:::1;:28::i;:::-;5352:66;;;;5452:7;:28;;5478:2;5452:28;;;5462:13;5452:28;5428:52:::0;;-1:-1:-1;;;;;;5490:17:10;-1:-1:-1;;;5428:52:10::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;5490:17:10;;-1:-1:-1;;;;;5490:17:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;5210:304:10:o;2435:216:9:-;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:9;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:9::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;9259:206::-:0;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;2494:51:75;2467:18;;9373:30:9;2348:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;25713:32:75;;;1380:43:33;;;25695:51:75;25762:18;;;25755:34;;;1353:71:33;;1373:5;;1395:14;;;;;25668:18:75;;1380:43:33;25521:274:75;1776:194:38;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;5543:487:34;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;2512:32:75;;8401:40:33;;;2494:51:75;2467:18;;8401:40:33;2348:203:75;5657:550:10;5851:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5851:43:10;-1:-1:-1;;;5851:43:10;;;5811:93;;5724:7;;;;;;;;-1:-1:-1;;;;;5811:26:10;;;:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:140;;;;5918:7;:39;;;;;5955:2;5929:15;:22;:28;;5918:39;5914:260;;;5973:24;6011:15;6000:38;;;;;;;;;;;;:::i;:::-;5973:65;-1:-1:-1;6076:15:10;6056:35;;6052:112;;6119:4;;6131:16;;-1:-1:-1;5657:550:10;-1:-1:-1;;;;5657:550:10:o;6052:112::-;5959:215;5914:260;-1:-1:-1;6191:5:10;;;;-1:-1:-1;5657:550:10;-1:-1:-1;;;5657:550:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:289:75:-;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:75;;715:226;-1:-1:-1;715:226:75:o;946:131::-;-1:-1:-1;;;;;1021:31:75;;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:75: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:75;1958:18;;1945:32;1986:33;1945:32;1986:33;:::i;:::-;1646:508;;2038:7;;-1:-1:-1;;;2118:2:75;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:75;2950:40;;-1:-1:-1;;;;;3005:34:75;;3041:22;;;3002:62;2999:88;;;3067:18;;:::i;:::-;3103:2;3096:22;2849:275;;-1:-1:-1;2849:275:75: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:75;3385:30;3382:56;;;3418:18;;:::i;:::-;-1:-1:-1;3484:2:75;3463:15;;-1:-1:-1;;3459:29:75;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:75;3129:629;-1:-1:-1;;;3129:629:75: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:75;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:75;5191:18;;5178:32;-1:-1:-1;;;;;5222:30:75;;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:75;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:75;6925:18;;6912:32;-1:-1:-1;;;;;6956:30:75;;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:75;;-1:-1:-1;;6512:686:75: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:75;8232:30;8229:56;;;8265:18;;:::i;:::-;-1:-1:-1;8310:1:75;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:75;8338:669;-1:-1:-1;;;;;8338:669:75: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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;13358:18;;13345:32;13386:33;13345:32;13386:33;:::i;:::-;13438:7;-1:-1:-1;13497:2:75;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:75;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:75;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:75;;15677:184;-1:-1:-1;15677:184:75:o;15866:135::-;15905:3;15926:17;;;15923:43;;15946:18;;:::i;:::-;-1:-1:-1;15993:1:75;15982:13;;15866:135::o;16006:345::-;-1:-1:-1;;;;;16226:32:75;;;;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:75;;17005:618;-1:-1:-1;;;;;17005:618:75: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:75: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:75;18825:5;;18760:80;18859:4;18849:76;;-1:-1:-1;18896:1:75;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:75;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:75;;;19393:5;;19205:203;19440:42;-1:-1:-1;;19465:8:75;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:75: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:75;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:75;21939:301;-1:-1:-1;21939:301:75: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;23523:518::-;23625:2;23620:3;23617:11;23614:421;;;23661:5;23658:1;23651:16;23705:4;23702:1;23692:18;23775:2;23763:10;23759:19;23756:1;23752:27;23746:4;23742:38;23811:4;23799:10;23796:20;23793:47;;;-1:-1:-1;23834:4:75;23793:47;23889:2;23884:3;23880:12;23877:1;23873:20;23867:4;23863:31;23853:41;;23944:81;23962:2;23955:5;23952:13;23944:81;;;24021:1;24007:16;;23988:1;23977:13;23944:81;;24217:1299;24343:3;24337:10;-1:-1:-1;;;;;24362:6:75;24359:30;24356:56;;;24392:18;;:::i;:::-;24421:97;24511:6;24471:38;24503:4;24497:11;24471:38;:::i;:::-;24465:4;24421:97;:::i;:::-;24567:4;24598:2;24587:14;;24615:1;24610:649;;;;25303:1;25320:6;25317:89;;;-1:-1:-1;25372:19:75;;;25366:26;25317:89;-1:-1:-1;;24174:1:75;24170:11;;;24166:24;24162:29;24152:40;24198:1;24194:11;;;24149:57;25419:81;;24580:930;;24610:649;23470:1;23463:14;;;23507:4;23494:18;;-1:-1:-1;;24646:20:75;;;24764:222;24778:7;24775:1;24772:14;24764:222;;;24860:19;;;24854:26;24839:42;;24967:4;24952:20;;;;24920:1;24908:14;;;;24794:12;24764:222;;;24768:3;25014:6;25005:7;25002:19;24999:201;;;25075:19;;;25069:26;-1:-1:-1;;25158:1:75;25154:14;;;25170:3;25150:24;25146:37;25142:42;25127:58;25112:74;;24999:201;-1:-1:-1;;;;25246:1:75;25230:14;;;25226:22;25213:36;;-1:-1:-1;24217:1299:75: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","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.28+commit.7893614a\"},\"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\":\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"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\"},\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"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\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x9be2d08a326515805bc9cf6315b7953f8d1ebe88abf48c2d645fb1fa8211a0e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e750d656e37efaefbb2300051ec2c4c725db266c5ff89bc985f7ecb8d214c4f4\",\"dweb:/ipfs/QmT51FsZes2n2nrLLh3d8YkBYKY43CtwScZxixcLGzL9r6\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"contracts/AccessManagedMSV.sol\":{\"keccak256\":\"0x0bd3c73b98d8f589f198b85d0f870caa730435d74268eb89f8a928919b7ded2f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8529211a463240a672a7997009100ac1573ff417058802e24db6109d3855da00\",\"dweb:/ipfs/QmRyoGisqnPa8aWFc73dG8ekjMxevxBGfnuwvUrzd9pMXz\"]},\"contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0xaf5aa782fd0c86e1b8489abe11fdc124c81413fe76a376566dc7dde2bc53db17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12bfec7192cbd6792719056cbbe2a076c57faa40ccb088d71a345c99a4108e34\",\"dweb:/ipfs/QmQ4hnbw1JiKAwFRpJbTv3NcR1uP97hLWvauwHdwjMmFuz\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0xddb5cd69d86cd5feb1b4732aba8c745b347159ee8e500f7af3cc33e9ca305c0d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc8a0079a984750f524796152cdd4882769771fe8e8329c085bc327dc957490d\",\"dweb:/ipfs/QmcKDFDrvisgX65QJhw6aLVvLiWPxozPww7ZFXSEZAEsns\"]},\"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":15803,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15807,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15812,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)22374)32_storage"},{"astId":17436,"contract":"contracts/AccessManagedMSV.sol:AccessManagedMSV","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)22374)32_storage":{"base":"t_contract(IInvestStrategy)22374","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)22374":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/AccessManagedProxy.sol":{"AccessManagedProxy":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"contract IAccessManager","name":"manager","type":"address"}],"stateMutability":"payable","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":[{"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"},{"inputs":[],"name":"ACCESS_MANAGER","outputs":[{"internalType":"contract IAccessManager","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_14272":{"entryPoint":null,"id":14272,"parameterSlots":3,"returnSlots":0},"@_7710":{"entryPoint":null,"id":7710,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":400,"id":8016,"parameterSlots":0,"returnSlots":0},"@_revert_9351":{"entryPoint":528,"id":9351,"parameterSlots":1,"returnSlots":0},"@_setImplementation_7796":{"entryPoint":162,"id":7796,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_9269":{"entryPoint":285,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_7832":{"entryPoint":68,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":433,"id":9309,"parameterSlots":3,"returnSlots":1},"abi_decode_contract_IAccessManager_fromMemory":{"entryPoint":612,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$7253_fromMemory":{"entryPoint":628,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":839,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":592,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":572,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2143:75","nodeType":"YulBlock","src":"0:2143:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"59:86:75","nodeType":"YulBlock","src":"59:86:75","statements":[{"body":{"nativeSrc":"123:16:75","nodeType":"YulBlock","src":"123:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:75","nodeType":"YulLiteral","src":"132:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:75","nodeType":"YulLiteral","src":"135:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:75","nodeType":"YulIdentifier","src":"125:6:75"},"nativeSrc":"125:12:75","nodeType":"YulFunctionCall","src":"125:12:75"},"nativeSrc":"125:12:75","nodeType":"YulExpressionStatement","src":"125:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:75","nodeType":"YulIdentifier","src":"82:5:75"},{"arguments":[{"name":"value","nativeSrc":"93:5:75","nodeType":"YulIdentifier","src":"93:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:75","nodeType":"YulLiteral","src":"108:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:75","nodeType":"YulLiteral","src":"113:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:75","nodeType":"YulIdentifier","src":"104:3:75"},"nativeSrc":"104:11:75","nodeType":"YulFunctionCall","src":"104:11:75"},{"kind":"number","nativeSrc":"117:1:75","nodeType":"YulLiteral","src":"117:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:75","nodeType":"YulIdentifier","src":"100:3:75"},"nativeSrc":"100:19:75","nodeType":"YulFunctionCall","src":"100:19:75"}],"functionName":{"name":"and","nativeSrc":"89:3:75","nodeType":"YulIdentifier","src":"89:3:75"},"nativeSrc":"89:31:75","nodeType":"YulFunctionCall","src":"89:31:75"}],"functionName":{"name":"eq","nativeSrc":"79:2:75","nodeType":"YulIdentifier","src":"79:2:75"},"nativeSrc":"79:42:75","nodeType":"YulFunctionCall","src":"79:42:75"}],"functionName":{"name":"iszero","nativeSrc":"72:6:75","nodeType":"YulIdentifier","src":"72:6:75"},"nativeSrc":"72:50:75","nodeType":"YulFunctionCall","src":"72:50:75"},"nativeSrc":"69:70:75","nodeType":"YulIf","src":"69:70:75"}]},"name":"validator_revert_address","nativeSrc":"14:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:75","nodeType":"YulTypedName","src":"48:5:75","type":""}],"src":"14:131:75"},{"body":{"nativeSrc":"182:95:75","nodeType":"YulBlock","src":"182:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"199:1:75","nodeType":"YulLiteral","src":"199:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"206:3:75","nodeType":"YulLiteral","src":"206:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"211:10:75","nodeType":"YulLiteral","src":"211:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"202:3:75","nodeType":"YulIdentifier","src":"202:3:75"},"nativeSrc":"202:20:75","nodeType":"YulFunctionCall","src":"202:20:75"}],"functionName":{"name":"mstore","nativeSrc":"192:6:75","nodeType":"YulIdentifier","src":"192:6:75"},"nativeSrc":"192:31:75","nodeType":"YulFunctionCall","src":"192:31:75"},"nativeSrc":"192:31:75","nodeType":"YulExpressionStatement","src":"192:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"239:1:75","nodeType":"YulLiteral","src":"239:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"242:4:75","nodeType":"YulLiteral","src":"242:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"232:6:75","nodeType":"YulIdentifier","src":"232:6:75"},"nativeSrc":"232:15:75","nodeType":"YulFunctionCall","src":"232:15:75"},"nativeSrc":"232:15:75","nodeType":"YulExpressionStatement","src":"232:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:75","nodeType":"YulLiteral","src":"263:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"266:4:75","nodeType":"YulLiteral","src":"266:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"256:6:75","nodeType":"YulIdentifier","src":"256:6:75"},"nativeSrc":"256:15:75","nodeType":"YulFunctionCall","src":"256:15:75"},"nativeSrc":"256:15:75","nodeType":"YulExpressionStatement","src":"256:15:75"}]},"name":"panic_error_0x41","nativeSrc":"150:127:75","nodeType":"YulFunctionDefinition","src":"150:127:75"},{"body":{"nativeSrc":"358:78:75","nodeType":"YulBlock","src":"358:78:75","statements":[{"nativeSrc":"368:22:75","nodeType":"YulAssignment","src":"368:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"383:6:75","nodeType":"YulIdentifier","src":"383:6:75"}],"functionName":{"name":"mload","nativeSrc":"377:5:75","nodeType":"YulIdentifier","src":"377:5:75"},"nativeSrc":"377:13:75","nodeType":"YulFunctionCall","src":"377:13:75"},"variableNames":[{"name":"value","nativeSrc":"368:5:75","nodeType":"YulIdentifier","src":"368:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"424:5:75","nodeType":"YulIdentifier","src":"424:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"399:24:75","nodeType":"YulIdentifier","src":"399:24:75"},"nativeSrc":"399:31:75","nodeType":"YulFunctionCall","src":"399:31:75"},"nativeSrc":"399:31:75","nodeType":"YulExpressionStatement","src":"399:31:75"}]},"name":"abi_decode_contract_IAccessManager_fromMemory","nativeSrc":"282:154:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"337:6:75","nodeType":"YulTypedName","src":"337:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"348:5:75","nodeType":"YulTypedName","src":"348:5:75","type":""}],"src":"282:154:75"},{"body":{"nativeSrc":"588:1039:75","nodeType":"YulBlock","src":"588:1039:75","statements":[{"body":{"nativeSrc":"634:16:75","nodeType":"YulBlock","src":"634:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"643:1:75","nodeType":"YulLiteral","src":"643:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"646:1:75","nodeType":"YulLiteral","src":"646:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"636:6:75","nodeType":"YulIdentifier","src":"636:6:75"},"nativeSrc":"636:12:75","nodeType":"YulFunctionCall","src":"636:12:75"},"nativeSrc":"636:12:75","nodeType":"YulExpressionStatement","src":"636:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"609:7:75","nodeType":"YulIdentifier","src":"609:7:75"},{"name":"headStart","nativeSrc":"618:9:75","nodeType":"YulIdentifier","src":"618:9:75"}],"functionName":{"name":"sub","nativeSrc":"605:3:75","nodeType":"YulIdentifier","src":"605:3:75"},"nativeSrc":"605:23:75","nodeType":"YulFunctionCall","src":"605:23:75"},{"kind":"number","nativeSrc":"630:2:75","nodeType":"YulLiteral","src":"630:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"601:3:75","nodeType":"YulIdentifier","src":"601:3:75"},"nativeSrc":"601:32:75","nodeType":"YulFunctionCall","src":"601:32:75"},"nativeSrc":"598:52:75","nodeType":"YulIf","src":"598:52:75"},{"nativeSrc":"659:29:75","nodeType":"YulVariableDeclaration","src":"659:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"678:9:75","nodeType":"YulIdentifier","src":"678:9:75"}],"functionName":{"name":"mload","nativeSrc":"672:5:75","nodeType":"YulIdentifier","src":"672:5:75"},"nativeSrc":"672:16:75","nodeType":"YulFunctionCall","src":"672:16:75"},"variables":[{"name":"value","nativeSrc":"663:5:75","nodeType":"YulTypedName","src":"663:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"722:5:75","nodeType":"YulIdentifier","src":"722:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"697:24:75","nodeType":"YulIdentifier","src":"697:24:75"},"nativeSrc":"697:31:75","nodeType":"YulFunctionCall","src":"697:31:75"},"nativeSrc":"697:31:75","nodeType":"YulExpressionStatement","src":"697:31:75"},{"nativeSrc":"737:15:75","nodeType":"YulAssignment","src":"737:15:75","value":{"name":"value","nativeSrc":"747:5:75","nodeType":"YulIdentifier","src":"747:5:75"},"variableNames":[{"name":"value0","nativeSrc":"737:6:75","nodeType":"YulIdentifier","src":"737:6:75"}]},{"nativeSrc":"761:39:75","nodeType":"YulVariableDeclaration","src":"761:39:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"785:9:75","nodeType":"YulIdentifier","src":"785:9:75"},{"kind":"number","nativeSrc":"796:2:75","nodeType":"YulLiteral","src":"796:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"781:3:75","nodeType":"YulIdentifier","src":"781:3:75"},"nativeSrc":"781:18:75","nodeType":"YulFunctionCall","src":"781:18:75"}],"functionName":{"name":"mload","nativeSrc":"775:5:75","nodeType":"YulIdentifier","src":"775:5:75"},"nativeSrc":"775:25:75","nodeType":"YulFunctionCall","src":"775:25:75"},"variables":[{"name":"offset","nativeSrc":"765:6:75","nodeType":"YulTypedName","src":"765:6:75","type":""}]},{"body":{"nativeSrc":"843:16:75","nodeType":"YulBlock","src":"843:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"852:1:75","nodeType":"YulLiteral","src":"852:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"855:1:75","nodeType":"YulLiteral","src":"855:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"845:6:75","nodeType":"YulIdentifier","src":"845:6:75"},"nativeSrc":"845:12:75","nodeType":"YulFunctionCall","src":"845:12:75"},"nativeSrc":"845:12:75","nodeType":"YulExpressionStatement","src":"845:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"815:6:75","nodeType":"YulIdentifier","src":"815:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"831:2:75","nodeType":"YulLiteral","src":"831:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"835:1:75","nodeType":"YulLiteral","src":"835:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"827:3:75","nodeType":"YulIdentifier","src":"827:3:75"},"nativeSrc":"827:10:75","nodeType":"YulFunctionCall","src":"827:10:75"},{"kind":"number","nativeSrc":"839:1:75","nodeType":"YulLiteral","src":"839:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"823:3:75","nodeType":"YulIdentifier","src":"823:3:75"},"nativeSrc":"823:18:75","nodeType":"YulFunctionCall","src":"823:18:75"}],"functionName":{"name":"gt","nativeSrc":"812:2:75","nodeType":"YulIdentifier","src":"812:2:75"},"nativeSrc":"812:30:75","nodeType":"YulFunctionCall","src":"812:30:75"},"nativeSrc":"809:50:75","nodeType":"YulIf","src":"809:50:75"},{"nativeSrc":"868:32:75","nodeType":"YulVariableDeclaration","src":"868:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"882:9:75","nodeType":"YulIdentifier","src":"882:9:75"},{"name":"offset","nativeSrc":"893:6:75","nodeType":"YulIdentifier","src":"893:6:75"}],"functionName":{"name":"add","nativeSrc":"878:3:75","nodeType":"YulIdentifier","src":"878:3:75"},"nativeSrc":"878:22:75","nodeType":"YulFunctionCall","src":"878:22:75"},"variables":[{"name":"_1","nativeSrc":"872:2:75","nodeType":"YulTypedName","src":"872:2:75","type":""}]},{"body":{"nativeSrc":"948:16:75","nodeType":"YulBlock","src":"948:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"957:1:75","nodeType":"YulLiteral","src":"957:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"960:1:75","nodeType":"YulLiteral","src":"960:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"950:6:75","nodeType":"YulIdentifier","src":"950:6:75"},"nativeSrc":"950:12:75","nodeType":"YulFunctionCall","src":"950:12:75"},"nativeSrc":"950:12:75","nodeType":"YulExpressionStatement","src":"950:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"927:2:75","nodeType":"YulIdentifier","src":"927:2:75"},{"kind":"number","nativeSrc":"931:4:75","nodeType":"YulLiteral","src":"931:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"923:3:75","nodeType":"YulIdentifier","src":"923:3:75"},"nativeSrc":"923:13:75","nodeType":"YulFunctionCall","src":"923:13:75"},{"name":"dataEnd","nativeSrc":"938:7:75","nodeType":"YulIdentifier","src":"938:7:75"}],"functionName":{"name":"slt","nativeSrc":"919:3:75","nodeType":"YulIdentifier","src":"919:3:75"},"nativeSrc":"919:27:75","nodeType":"YulFunctionCall","src":"919:27:75"}],"functionName":{"name":"iszero","nativeSrc":"912:6:75","nodeType":"YulIdentifier","src":"912:6:75"},"nativeSrc":"912:35:75","nodeType":"YulFunctionCall","src":"912:35:75"},"nativeSrc":"909:55:75","nodeType":"YulIf","src":"909:55:75"},{"nativeSrc":"973:23:75","nodeType":"YulVariableDeclaration","src":"973:23:75","value":{"arguments":[{"name":"_1","nativeSrc":"993:2:75","nodeType":"YulIdentifier","src":"993:2:75"}],"functionName":{"name":"mload","nativeSrc":"987:5:75","nodeType":"YulIdentifier","src":"987:5:75"},"nativeSrc":"987:9:75","nodeType":"YulFunctionCall","src":"987:9:75"},"variables":[{"name":"length","nativeSrc":"977:6:75","nodeType":"YulTypedName","src":"977:6:75","type":""}]},{"body":{"nativeSrc":"1039:22:75","nodeType":"YulBlock","src":"1039:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1041:16:75","nodeType":"YulIdentifier","src":"1041:16:75"},"nativeSrc":"1041:18:75","nodeType":"YulFunctionCall","src":"1041:18:75"},"nativeSrc":"1041:18:75","nodeType":"YulExpressionStatement","src":"1041:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1011:6:75","nodeType":"YulIdentifier","src":"1011:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1027:2:75","nodeType":"YulLiteral","src":"1027:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"1031:1:75","nodeType":"YulLiteral","src":"1031:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1023:3:75","nodeType":"YulIdentifier","src":"1023:3:75"},"nativeSrc":"1023:10:75","nodeType":"YulFunctionCall","src":"1023:10:75"},{"kind":"number","nativeSrc":"1035:1:75","nodeType":"YulLiteral","src":"1035:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1019:3:75","nodeType":"YulIdentifier","src":"1019:3:75"},"nativeSrc":"1019:18:75","nodeType":"YulFunctionCall","src":"1019:18:75"}],"functionName":{"name":"gt","nativeSrc":"1008:2:75","nodeType":"YulIdentifier","src":"1008:2:75"},"nativeSrc":"1008:30:75","nodeType":"YulFunctionCall","src":"1008:30:75"},"nativeSrc":"1005:56:75","nodeType":"YulIf","src":"1005:56:75"},{"nativeSrc":"1070:23:75","nodeType":"YulVariableDeclaration","src":"1070:23:75","value":{"arguments":[{"kind":"number","nativeSrc":"1090:2:75","nodeType":"YulLiteral","src":"1090:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1084:5:75","nodeType":"YulIdentifier","src":"1084:5:75"},"nativeSrc":"1084:9:75","nodeType":"YulFunctionCall","src":"1084:9:75"},"variables":[{"name":"memPtr","nativeSrc":"1074:6:75","nodeType":"YulTypedName","src":"1074:6:75","type":""}]},{"nativeSrc":"1102:85:75","nodeType":"YulVariableDeclaration","src":"1102:85:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"1124:6:75","nodeType":"YulIdentifier","src":"1124:6:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1148:6:75","nodeType":"YulIdentifier","src":"1148:6:75"},{"kind":"number","nativeSrc":"1156:4:75","nodeType":"YulLiteral","src":"1156:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1144:3:75","nodeType":"YulIdentifier","src":"1144:3:75"},"nativeSrc":"1144:17:75","nodeType":"YulFunctionCall","src":"1144:17:75"},{"arguments":[{"kind":"number","nativeSrc":"1167:2:75","nodeType":"YulLiteral","src":"1167:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1163:3:75","nodeType":"YulIdentifier","src":"1163:3:75"},"nativeSrc":"1163:7:75","nodeType":"YulFunctionCall","src":"1163:7:75"}],"functionName":{"name":"and","nativeSrc":"1140:3:75","nodeType":"YulIdentifier","src":"1140:3:75"},"nativeSrc":"1140:31:75","nodeType":"YulFunctionCall","src":"1140:31:75"},{"kind":"number","nativeSrc":"1173:2:75","nodeType":"YulLiteral","src":"1173:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1136:3:75","nodeType":"YulIdentifier","src":"1136:3:75"},"nativeSrc":"1136:40:75","nodeType":"YulFunctionCall","src":"1136:40:75"},{"arguments":[{"kind":"number","nativeSrc":"1182:2:75","nodeType":"YulLiteral","src":"1182:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1178:3:75","nodeType":"YulIdentifier","src":"1178:3:75"},"nativeSrc":"1178:7:75","nodeType":"YulFunctionCall","src":"1178:7:75"}],"functionName":{"name":"and","nativeSrc":"1132:3:75","nodeType":"YulIdentifier","src":"1132:3:75"},"nativeSrc":"1132:54:75","nodeType":"YulFunctionCall","src":"1132:54:75"}],"functionName":{"name":"add","nativeSrc":"1120:3:75","nodeType":"YulIdentifier","src":"1120:3:75"},"nativeSrc":"1120:67:75","nodeType":"YulFunctionCall","src":"1120:67:75"},"variables":[{"name":"newFreePtr","nativeSrc":"1106:10:75","nodeType":"YulTypedName","src":"1106:10:75","type":""}]},{"body":{"nativeSrc":"1262:22:75","nodeType":"YulBlock","src":"1262:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1264:16:75","nodeType":"YulIdentifier","src":"1264:16:75"},"nativeSrc":"1264:18:75","nodeType":"YulFunctionCall","src":"1264:18:75"},"nativeSrc":"1264:18:75","nodeType":"YulExpressionStatement","src":"1264:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1205:10:75","nodeType":"YulIdentifier","src":"1205:10:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1225:2:75","nodeType":"YulLiteral","src":"1225:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"1229:1:75","nodeType":"YulLiteral","src":"1229:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1221:3:75","nodeType":"YulIdentifier","src":"1221:3:75"},"nativeSrc":"1221:10:75","nodeType":"YulFunctionCall","src":"1221:10:75"},{"kind":"number","nativeSrc":"1233:1:75","nodeType":"YulLiteral","src":"1233:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1217:3:75","nodeType":"YulIdentifier","src":"1217:3:75"},"nativeSrc":"1217:18:75","nodeType":"YulFunctionCall","src":"1217:18:75"}],"functionName":{"name":"gt","nativeSrc":"1202:2:75","nodeType":"YulIdentifier","src":"1202:2:75"},"nativeSrc":"1202:34:75","nodeType":"YulFunctionCall","src":"1202:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1241:10:75","nodeType":"YulIdentifier","src":"1241:10:75"},{"name":"memPtr","nativeSrc":"1253:6:75","nodeType":"YulIdentifier","src":"1253:6:75"}],"functionName":{"name":"lt","nativeSrc":"1238:2:75","nodeType":"YulIdentifier","src":"1238:2:75"},"nativeSrc":"1238:22:75","nodeType":"YulFunctionCall","src":"1238:22:75"}],"functionName":{"name":"or","nativeSrc":"1199:2:75","nodeType":"YulIdentifier","src":"1199:2:75"},"nativeSrc":"1199:62:75","nodeType":"YulFunctionCall","src":"1199:62:75"},"nativeSrc":"1196:88:75","nodeType":"YulIf","src":"1196:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1300:2:75","nodeType":"YulLiteral","src":"1300:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1304:10:75","nodeType":"YulIdentifier","src":"1304:10:75"}],"functionName":{"name":"mstore","nativeSrc":"1293:6:75","nodeType":"YulIdentifier","src":"1293:6:75"},"nativeSrc":"1293:22:75","nodeType":"YulFunctionCall","src":"1293:22:75"},"nativeSrc":"1293:22:75","nodeType":"YulExpressionStatement","src":"1293:22:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1331:6:75","nodeType":"YulIdentifier","src":"1331:6:75"},{"name":"length","nativeSrc":"1339:6:75","nodeType":"YulIdentifier","src":"1339:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1324:6:75","nodeType":"YulIdentifier","src":"1324:6:75"},"nativeSrc":"1324:22:75","nodeType":"YulFunctionCall","src":"1324:22:75"},"nativeSrc":"1324:22:75","nodeType":"YulExpressionStatement","src":"1324:22:75"},{"body":{"nativeSrc":"1396:16:75","nodeType":"YulBlock","src":"1396:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1405:1:75","nodeType":"YulLiteral","src":"1405:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1408:1:75","nodeType":"YulLiteral","src":"1408:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1398:6:75","nodeType":"YulIdentifier","src":"1398:6:75"},"nativeSrc":"1398:12:75","nodeType":"YulFunctionCall","src":"1398:12:75"},"nativeSrc":"1398:12:75","nodeType":"YulExpressionStatement","src":"1398:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1369:2:75","nodeType":"YulIdentifier","src":"1369:2:75"},{"name":"length","nativeSrc":"1373:6:75","nodeType":"YulIdentifier","src":"1373:6:75"}],"functionName":{"name":"add","nativeSrc":"1365:3:75","nodeType":"YulIdentifier","src":"1365:3:75"},"nativeSrc":"1365:15:75","nodeType":"YulFunctionCall","src":"1365:15:75"},{"kind":"number","nativeSrc":"1382:2:75","nodeType":"YulLiteral","src":"1382:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1361:3:75","nodeType":"YulIdentifier","src":"1361:3:75"},"nativeSrc":"1361:24:75","nodeType":"YulFunctionCall","src":"1361:24:75"},{"name":"dataEnd","nativeSrc":"1387:7:75","nodeType":"YulIdentifier","src":"1387:7:75"}],"functionName":{"name":"gt","nativeSrc":"1358:2:75","nodeType":"YulIdentifier","src":"1358:2:75"},"nativeSrc":"1358:37:75","nodeType":"YulFunctionCall","src":"1358:37:75"},"nativeSrc":"1355:57:75","nodeType":"YulIf","src":"1355:57:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1431:6:75","nodeType":"YulIdentifier","src":"1431:6:75"},{"kind":"number","nativeSrc":"1439:2:75","nodeType":"YulLiteral","src":"1439:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1427:3:75","nodeType":"YulIdentifier","src":"1427:3:75"},"nativeSrc":"1427:15:75","nodeType":"YulFunctionCall","src":"1427:15:75"},{"arguments":[{"name":"_1","nativeSrc":"1448:2:75","nodeType":"YulIdentifier","src":"1448:2:75"},{"kind":"number","nativeSrc":"1452:2:75","nodeType":"YulLiteral","src":"1452:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1444:3:75","nodeType":"YulIdentifier","src":"1444:3:75"},"nativeSrc":"1444:11:75","nodeType":"YulFunctionCall","src":"1444:11:75"},{"name":"length","nativeSrc":"1457:6:75","nodeType":"YulIdentifier","src":"1457:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1421:5:75","nodeType":"YulIdentifier","src":"1421:5:75"},"nativeSrc":"1421:43:75","nodeType":"YulFunctionCall","src":"1421:43:75"},"nativeSrc":"1421:43:75","nodeType":"YulExpressionStatement","src":"1421:43:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1488:6:75","nodeType":"YulIdentifier","src":"1488:6:75"},{"name":"length","nativeSrc":"1496:6:75","nodeType":"YulIdentifier","src":"1496:6:75"}],"functionName":{"name":"add","nativeSrc":"1484:3:75","nodeType":"YulIdentifier","src":"1484:3:75"},"nativeSrc":"1484:19:75","nodeType":"YulFunctionCall","src":"1484:19:75"},{"kind":"number","nativeSrc":"1505:2:75","nodeType":"YulLiteral","src":"1505:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1480:3:75","nodeType":"YulIdentifier","src":"1480:3:75"},"nativeSrc":"1480:28:75","nodeType":"YulFunctionCall","src":"1480:28:75"},{"kind":"number","nativeSrc":"1510:1:75","nodeType":"YulLiteral","src":"1510:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1473:6:75","nodeType":"YulIdentifier","src":"1473:6:75"},"nativeSrc":"1473:39:75","nodeType":"YulFunctionCall","src":"1473:39:75"},"nativeSrc":"1473:39:75","nodeType":"YulExpressionStatement","src":"1473:39:75"},{"nativeSrc":"1521:16:75","nodeType":"YulAssignment","src":"1521:16:75","value":{"name":"memPtr","nativeSrc":"1531:6:75","nodeType":"YulIdentifier","src":"1531:6:75"},"variableNames":[{"name":"value1","nativeSrc":"1521:6:75","nodeType":"YulIdentifier","src":"1521:6:75"}]},{"nativeSrc":"1546:75:75","nodeType":"YulAssignment","src":"1546:75:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1606:9:75","nodeType":"YulIdentifier","src":"1606:9:75"},{"kind":"number","nativeSrc":"1617:2:75","nodeType":"YulLiteral","src":"1617:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1602:3:75","nodeType":"YulIdentifier","src":"1602:3:75"},"nativeSrc":"1602:18:75","nodeType":"YulFunctionCall","src":"1602:18:75"}],"functionName":{"name":"abi_decode_contract_IAccessManager_fromMemory","nativeSrc":"1556:45:75","nodeType":"YulIdentifier","src":"1556:45:75"},"nativeSrc":"1556:65:75","nodeType":"YulFunctionCall","src":"1556:65:75"},"variableNames":[{"name":"value2","nativeSrc":"1546:6:75","nodeType":"YulIdentifier","src":"1546:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$7253_fromMemory","nativeSrc":"441:1186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"538:9:75","nodeType":"YulTypedName","src":"538:9:75","type":""},{"name":"dataEnd","nativeSrc":"549:7:75","nodeType":"YulTypedName","src":"549:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"561:6:75","nodeType":"YulTypedName","src":"561:6:75","type":""},{"name":"value1","nativeSrc":"569:6:75","nodeType":"YulTypedName","src":"569:6:75","type":""},{"name":"value2","nativeSrc":"577:6:75","nodeType":"YulTypedName","src":"577:6:75","type":""}],"src":"441:1186:75"},{"body":{"nativeSrc":"1733:102:75","nodeType":"YulBlock","src":"1733:102:75","statements":[{"nativeSrc":"1743:26:75","nodeType":"YulAssignment","src":"1743:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1755:9:75","nodeType":"YulIdentifier","src":"1755:9:75"},{"kind":"number","nativeSrc":"1766:2:75","nodeType":"YulLiteral","src":"1766:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1751:3:75","nodeType":"YulIdentifier","src":"1751:3:75"},"nativeSrc":"1751:18:75","nodeType":"YulFunctionCall","src":"1751:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1743:4:75","nodeType":"YulIdentifier","src":"1743:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1785:9:75","nodeType":"YulIdentifier","src":"1785:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1800:6:75","nodeType":"YulIdentifier","src":"1800:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1816:3:75","nodeType":"YulLiteral","src":"1816:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1821:1:75","nodeType":"YulLiteral","src":"1821:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1812:3:75","nodeType":"YulIdentifier","src":"1812:3:75"},"nativeSrc":"1812:11:75","nodeType":"YulFunctionCall","src":"1812:11:75"},{"kind":"number","nativeSrc":"1825:1:75","nodeType":"YulLiteral","src":"1825:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1808:3:75","nodeType":"YulIdentifier","src":"1808:3:75"},"nativeSrc":"1808:19:75","nodeType":"YulFunctionCall","src":"1808:19:75"}],"functionName":{"name":"and","nativeSrc":"1796:3:75","nodeType":"YulIdentifier","src":"1796:3:75"},"nativeSrc":"1796:32:75","nodeType":"YulFunctionCall","src":"1796:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1778:6:75","nodeType":"YulIdentifier","src":"1778:6:75"},"nativeSrc":"1778:51:75","nodeType":"YulFunctionCall","src":"1778:51:75"},"nativeSrc":"1778:51:75","nodeType":"YulExpressionStatement","src":"1778:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1632:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1702:9:75","nodeType":"YulTypedName","src":"1702:9:75","type":""},{"name":"value0","nativeSrc":"1713:6:75","nodeType":"YulTypedName","src":"1713:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1724:4:75","nodeType":"YulTypedName","src":"1724:4:75","type":""}],"src":"1632:203:75"},{"body":{"nativeSrc":"1977:164:75","nodeType":"YulBlock","src":"1977:164:75","statements":[{"nativeSrc":"1987:27:75","nodeType":"YulVariableDeclaration","src":"1987:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"2007:6:75","nodeType":"YulIdentifier","src":"2007:6:75"}],"functionName":{"name":"mload","nativeSrc":"2001:5:75","nodeType":"YulIdentifier","src":"2001:5:75"},"nativeSrc":"2001:13:75","nodeType":"YulFunctionCall","src":"2001:13:75"},"variables":[{"name":"length","nativeSrc":"1991:6:75","nodeType":"YulTypedName","src":"1991:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2029:3:75","nodeType":"YulIdentifier","src":"2029:3:75"},{"arguments":[{"name":"value0","nativeSrc":"2038:6:75","nodeType":"YulIdentifier","src":"2038:6:75"},{"kind":"number","nativeSrc":"2046:4:75","nodeType":"YulLiteral","src":"2046:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2034:3:75","nodeType":"YulIdentifier","src":"2034:3:75"},"nativeSrc":"2034:17:75","nodeType":"YulFunctionCall","src":"2034:17:75"},{"name":"length","nativeSrc":"2053:6:75","nodeType":"YulIdentifier","src":"2053:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"2023:5:75","nodeType":"YulIdentifier","src":"2023:5:75"},"nativeSrc":"2023:37:75","nodeType":"YulFunctionCall","src":"2023:37:75"},"nativeSrc":"2023:37:75","nodeType":"YulExpressionStatement","src":"2023:37:75"},{"nativeSrc":"2069:26:75","nodeType":"YulVariableDeclaration","src":"2069:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"2083:3:75","nodeType":"YulIdentifier","src":"2083:3:75"},{"name":"length","nativeSrc":"2088:6:75","nodeType":"YulIdentifier","src":"2088:6:75"}],"functionName":{"name":"add","nativeSrc":"2079:3:75","nodeType":"YulIdentifier","src":"2079:3:75"},"nativeSrc":"2079:16:75","nodeType":"YulFunctionCall","src":"2079:16:75"},"variables":[{"name":"_1","nativeSrc":"2073:2:75","nodeType":"YulTypedName","src":"2073:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"2111:2:75","nodeType":"YulIdentifier","src":"2111:2:75"},{"kind":"number","nativeSrc":"2115:1:75","nodeType":"YulLiteral","src":"2115:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2104:6:75","nodeType":"YulIdentifier","src":"2104:6:75"},"nativeSrc":"2104:13:75","nodeType":"YulFunctionCall","src":"2104:13:75"},"nativeSrc":"2104:13:75","nodeType":"YulExpressionStatement","src":"2104:13:75"},{"nativeSrc":"2126:9:75","nodeType":"YulAssignment","src":"2126:9:75","value":{"name":"_1","nativeSrc":"2133:2:75","nodeType":"YulIdentifier","src":"2133:2:75"},"variableNames":[{"name":"end","nativeSrc":"2126:3:75","nodeType":"YulIdentifier","src":"2126:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1840:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1953:3:75","nodeType":"YulTypedName","src":"1953:3:75","type":""},{"name":"value0","nativeSrc":"1958:6:75","nodeType":"YulTypedName","src":"1958:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1969:3:75","nodeType":"YulTypedName","src":"1969:3:75","type":""}],"src":"1840:301:75"}]},"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 abi_decode_contract_IAccessManager_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptrt_contract$_IAccessManager_$7253_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 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        value2 := abi_decode_contract_IAccessManager_fromMemory(add(headStart, 64))\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_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}","id":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405260405161062138038061062183398101604081905261002291610274565b828261002e8282610044565b50506001600160a01b03166080525061035d9050565b61004d826100a2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561009657610091828261011d565b505050565b61009e610190565b5050565b806001600160a01b03163b5f036100dc57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516101399190610347565b5f60405180830381855af49150503d805f8114610171576040519150601f19603f3d011682016040523d82523d5f602084013e610176565b606091505b5090925090506101878583836101b1565b95945050505050565b34156101af5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101c6576101c182610210565b610209565b81511580156101dd57506001600160a01b0384163b155b1561020657604051639996b31560e01b81526001600160a01b03851660048201526024016100d3565b50805b9392505050565b8051156102205780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b50565b6001600160a01b0381168114610239575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b805161026f8161023c565b919050565b5f5f5f60608486031215610286575f5ffd5b83516102918161023c565b60208501519093506001600160401b038111156102ac575f5ffd5b8401601f810186136102bc575f5ffd5b80516001600160401b038111156102d5576102d5610250565b604051601f8201601f19908116603f011681016001600160401b038111828210171561030357610303610250565b60405281815282820160200188101561031a575f5ffd5b8160208401602083015e5f6020838301015280945050505061033e60408501610264565b90509250925092565b5f82518060208501845e5f920191825250919050565b6080516102a761037a5f395f81816038015260ca01526102a75ff3fe60806040526004361061001d575f3560e01c80633a7b7a3914610027575b610025610076565b005b348015610032575f5ffd5b5061005a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610086610081610088565b6100bf565b565b5f6100ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b5f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b700961333306100fe60048636816101ce565b610107916101f5565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015610159573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017d919061022d565b509050806101a35760405162d1953b60e31b815233600482015260240160405180910390fd5b6101ac826101b0565b5050565b365f5f375f5f365f845af43d5f5f3e8080156101ca573d5ff35b3d5ffd5b5f5f858511156101dc575f5ffd5b838611156101e8575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610226576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f6040838503121561023e575f5ffd5b8251801515811461024d575f5ffd5b602084015190925063ffffffff81168114610266575f5ffd5b80915050925092905056fea2646970667358221220d535811f2fdd1ab45a87036255e096b56e0c66b796ca6e3d318408af06b014eb64736f6c634300081c0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x621 CODESIZE SUB DUP1 PUSH2 0x621 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x274 JUMP JUMPDEST DUP3 DUP3 PUSH2 0x2E DUP3 DUP3 PUSH2 0x44 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE POP PUSH2 0x35D SWAP1 POP JUMP JUMPDEST PUSH2 0x4D DUP3 PUSH2 0xA2 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 0x96 JUMPI PUSH2 0x91 DUP3 DUP3 PUSH2 0x11D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x9E PUSH2 0x190 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0xDC 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x139 SWAP2 SWAP1 PUSH2 0x347 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x171 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 0x176 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x187 DUP6 DUP4 DUP4 PUSH2 0x1B1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1AF 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 PUSH1 0x60 DUP3 PUSH2 0x1C6 JUMPI PUSH2 0x1C1 DUP3 PUSH2 0x210 JUMP JUMPDEST PUSH2 0x209 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1DD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x206 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 0xD3 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x220 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 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 DUP2 AND DUP2 EQ PUSH2 0x239 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x26F DUP2 PUSH2 0x23C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x286 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x291 DUP2 PUSH2 0x23C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x2BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D5 JUMPI PUSH2 0x2D5 PUSH2 0x250 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 0x303 JUMPI PUSH2 0x303 PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x31A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD MCOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP PUSH2 0x33E PUSH1 0x40 DUP6 ADD PUSH2 0x264 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x2A7 PUSH2 0x37A PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH1 0x38 ADD MSTORE PUSH1 0xCA ADD MSTORE PUSH2 0x2A7 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3A7B7A39 EQ PUSH2 0x27 JUMPI JUMPDEST PUSH2 0x25 PUSH2 0x76 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x86 PUSH2 0x81 PUSH2 0x88 JUMP JUMPDEST PUSH2 0xBF JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0xBA PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0xFE PUSH1 0x4 DUP7 CALLDATASIZE DUP2 PUSH2 0x1CE JUMP JUMPDEST PUSH2 0x107 SWAP2 PUSH2 0x1F5 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 0x159 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 0x17D SWAP2 SWAP1 PUSH2 0x22D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x1A3 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 0x1AC DUP3 PUSH2 0x1B0 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1E8 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 0x226 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 0x23E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x266 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CALLDATALOAD DUP2 0x1F 0x2F 0xDD BYTE 0xB4 GAS DUP8 SUB PUSH3 0x55E096 0xB5 PUSH15 0xC66B796CA6E3D318408AF06B014EB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1111:1321:49:-:0;;;1300:175;;;;;;;;;;;;;;;;;;:::i;:::-;1417:14;1433:5;1155:52:26;1417:14:49;1433:5;1155:29:26;:52::i;:::-;-1:-1:-1;;;;;;;1446:24:49::1;;::::0;-1:-1:-1;1111:1321:49;;-1:-1:-1;1111:1321:49;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;;;;;1796:32:75;;1805:47:27;;;1778:51:75;1751: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;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:34;;-1:-1:-1;4007:67:34;-1:-1:-1;4091:55:34;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;6159:70;6113:122::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;1796:32:75;;4917:24:34;;;1778:51:75;1751:18;;4917:24:34;1632:203:75;4837:119:34;-1:-1:-1;4976:10:34;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;5670:354;5543:487;:::o;14:131:75:-;-1:-1:-1;;;;;89:31:75;;79:42;;69:70;;135:1;132;125:12;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:154;377:13;;399:31;377:13;399:31;:::i;:::-;282:154;;;:::o;441:1186::-;561:6;569;577;630:2;618:9;609:7;605:23;601:32;598:52;;;646:1;643;636:12;598:52;678:9;672:16;697:31;722:5;697:31;:::i;:::-;796:2;781:18;;775:25;747:5;;-1:-1:-1;;;;;;812:30:75;;809:50;;;855:1;852;845:12;809:50;878:22;;931:4;923:13;;919:27;-1:-1:-1;909:55:75;;960:1;957;950:12;909:55;987:9;;-1:-1:-1;;;;;1008:30:75;;1005:56;;;1041:18;;:::i;:::-;1090:2;1084:9;1182:2;1144:17;;-1:-1:-1;;1140:31:75;;;1173:2;1136:40;1132:54;1120:67;;-1:-1:-1;;;;;1202:34:75;;1238:22;;;1199:62;1196:88;;;1264:18;;:::i;:::-;1300:2;1293:22;1324;;;1365:15;;;1382:2;1361:24;1358:37;-1:-1:-1;1355:57:75;;;1408:1;1405;1398:12;1355:57;1457:6;1452:2;1448;1444:11;1439:2;1431:6;1427:15;1421:43;1510:1;1505:2;1496:6;1488;1484:19;1480:28;1473:39;1531:6;1521:16;;;;;1556:65;1617:2;1606:9;1602:18;1556:65;:::i;:::-;1546:75;;441:1186;;;;;:::o;1840:301::-;1969:3;2007:6;2001:13;2053:6;2046:4;2038:6;2034:17;2029:3;2023:37;2115:1;2079:16;;2104:13;;;-1:-1:-1;2079:16:75;1840:301;-1:-1:-1;1840:301:75:o;:::-;1111:1321:49;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ACCESS_MANAGER_14249":{"entryPoint":null,"id":14249,"parameterSlots":0,"returnSlots":0},"@_8052":{"entryPoint":null,"id":8052,"parameterSlots":0,"returnSlots":0},"@_delegate_14314":{"entryPoint":191,"id":14314,"parameterSlots":1,"returnSlots":0},"@_delegate_8028":{"entryPoint":432,"id":8028,"parameterSlots":1,"returnSlots":0},"@_fallback_8044":{"entryPoint":118,"id":8044,"parameterSlots":0,"returnSlots":0},"@_implementation_7722":{"entryPoint":136,"id":7722,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":557,"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_contract$_IAccessManager_$7253__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":462,"id":null,"parameterSlots":4,"returnSlots":2},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4":{"entryPoint":501,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:1977:75","nodeType":"YulBlock","src":"0:1977:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"138:102:75","nodeType":"YulBlock","src":"138:102:75","statements":[{"nativeSrc":"148:26:75","nodeType":"YulAssignment","src":"148:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"160:9:75","nodeType":"YulIdentifier","src":"160:9:75"},{"kind":"number","nativeSrc":"171:2:75","nodeType":"YulLiteral","src":"171:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"156:3:75","nodeType":"YulIdentifier","src":"156:3:75"},"nativeSrc":"156:18:75","nodeType":"YulFunctionCall","src":"156:18:75"},"variableNames":[{"name":"tail","nativeSrc":"148:4:75","nodeType":"YulIdentifier","src":"148:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"190:9:75","nodeType":"YulIdentifier","src":"190:9:75"},{"arguments":[{"name":"value0","nativeSrc":"205:6:75","nodeType":"YulIdentifier","src":"205:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"221:3:75","nodeType":"YulLiteral","src":"221:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"226:1:75","nodeType":"YulLiteral","src":"226:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"217:3:75","nodeType":"YulIdentifier","src":"217:3:75"},"nativeSrc":"217:11:75","nodeType":"YulFunctionCall","src":"217:11:75"},{"kind":"number","nativeSrc":"230:1:75","nodeType":"YulLiteral","src":"230:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"213:3:75","nodeType":"YulIdentifier","src":"213:3:75"},"nativeSrc":"213:19:75","nodeType":"YulFunctionCall","src":"213:19:75"}],"functionName":{"name":"and","nativeSrc":"201:3:75","nodeType":"YulIdentifier","src":"201:3:75"},"nativeSrc":"201:32:75","nodeType":"YulFunctionCall","src":"201:32:75"}],"functionName":{"name":"mstore","nativeSrc":"183:6:75","nodeType":"YulIdentifier","src":"183:6:75"},"nativeSrc":"183:51:75","nodeType":"YulFunctionCall","src":"183:51:75"},"nativeSrc":"183:51:75","nodeType":"YulExpressionStatement","src":"183:51:75"}]},"name":"abi_encode_tuple_t_contract$_IAccessManager_$7253__to_t_address__fromStack_reversed","nativeSrc":"14:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"107:9:75","nodeType":"YulTypedName","src":"107:9:75","type":""},{"name":"value0","nativeSrc":"118:6:75","nodeType":"YulTypedName","src":"118:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"129:4:75","nodeType":"YulTypedName","src":"129:4:75","type":""}],"src":"14:226:75"},{"body":{"nativeSrc":"375:201:75","nodeType":"YulBlock","src":"375:201:75","statements":[{"body":{"nativeSrc":"413:16:75","nodeType":"YulBlock","src":"413:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"422:1:75","nodeType":"YulLiteral","src":"422:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"425:1:75","nodeType":"YulLiteral","src":"425:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"415:6:75","nodeType":"YulIdentifier","src":"415:6:75"},"nativeSrc":"415:12:75","nodeType":"YulFunctionCall","src":"415:12:75"},"nativeSrc":"415:12:75","nodeType":"YulExpressionStatement","src":"415:12:75"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"391:10:75","nodeType":"YulIdentifier","src":"391:10:75"},{"name":"endIndex","nativeSrc":"403:8:75","nodeType":"YulIdentifier","src":"403:8:75"}],"functionName":{"name":"gt","nativeSrc":"388:2:75","nodeType":"YulIdentifier","src":"388:2:75"},"nativeSrc":"388:24:75","nodeType":"YulFunctionCall","src":"388:24:75"},"nativeSrc":"385:44:75","nodeType":"YulIf","src":"385:44:75"},{"body":{"nativeSrc":"462:16:75","nodeType":"YulBlock","src":"462:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"471:1:75","nodeType":"YulLiteral","src":"471:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"474:1:75","nodeType":"YulLiteral","src":"474:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"464:6:75","nodeType":"YulIdentifier","src":"464:6:75"},"nativeSrc":"464:12:75","nodeType":"YulFunctionCall","src":"464:12:75"},"nativeSrc":"464:12:75","nodeType":"YulExpressionStatement","src":"464:12:75"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"444:8:75","nodeType":"YulIdentifier","src":"444:8:75"},{"name":"length","nativeSrc":"454:6:75","nodeType":"YulIdentifier","src":"454:6:75"}],"functionName":{"name":"gt","nativeSrc":"441:2:75","nodeType":"YulIdentifier","src":"441:2:75"},"nativeSrc":"441:20:75","nodeType":"YulFunctionCall","src":"441:20:75"},"nativeSrc":"438:40:75","nodeType":"YulIf","src":"438:40:75"},{"nativeSrc":"487:36:75","nodeType":"YulAssignment","src":"487:36:75","value":{"arguments":[{"name":"offset","nativeSrc":"504:6:75","nodeType":"YulIdentifier","src":"504:6:75"},{"name":"startIndex","nativeSrc":"512:10:75","nodeType":"YulIdentifier","src":"512:10:75"}],"functionName":{"name":"add","nativeSrc":"500:3:75","nodeType":"YulIdentifier","src":"500:3:75"},"nativeSrc":"500:23:75","nodeType":"YulFunctionCall","src":"500:23:75"},"variableNames":[{"name":"offsetOut","nativeSrc":"487:9:75","nodeType":"YulIdentifier","src":"487:9:75"}]},{"nativeSrc":"532:38:75","nodeType":"YulAssignment","src":"532:38:75","value":{"arguments":[{"name":"endIndex","nativeSrc":"549:8:75","nodeType":"YulIdentifier","src":"549:8:75"},{"name":"startIndex","nativeSrc":"559:10:75","nodeType":"YulIdentifier","src":"559:10:75"}],"functionName":{"name":"sub","nativeSrc":"545:3:75","nodeType":"YulIdentifier","src":"545:3:75"},"nativeSrc":"545:25:75","nodeType":"YulFunctionCall","src":"545:25:75"},"variableNames":[{"name":"lengthOut","nativeSrc":"532:9:75","nodeType":"YulIdentifier","src":"532:9:75"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"245:331:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"309:6:75","nodeType":"YulTypedName","src":"309:6:75","type":""},{"name":"length","nativeSrc":"317:6:75","nodeType":"YulTypedName","src":"317:6:75","type":""},{"name":"startIndex","nativeSrc":"325:10:75","nodeType":"YulTypedName","src":"325:10:75","type":""},{"name":"endIndex","nativeSrc":"337:8:75","nodeType":"YulTypedName","src":"337:8:75","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"350:9:75","nodeType":"YulTypedName","src":"350:9:75","type":""},{"name":"lengthOut","nativeSrc":"361:9:75","nodeType":"YulTypedName","src":"361:9:75","type":""}],"src":"245:331:75"},{"body":{"nativeSrc":"681:238:75","nodeType":"YulBlock","src":"681:238:75","statements":[{"nativeSrc":"691:29:75","nodeType":"YulVariableDeclaration","src":"691:29:75","value":{"arguments":[{"name":"array","nativeSrc":"714:5:75","nodeType":"YulIdentifier","src":"714:5:75"}],"functionName":{"name":"calldataload","nativeSrc":"701:12:75","nodeType":"YulIdentifier","src":"701:12:75"},"nativeSrc":"701:19:75","nodeType":"YulFunctionCall","src":"701:19:75"},"variables":[{"name":"_1","nativeSrc":"695:2:75","nodeType":"YulTypedName","src":"695:2:75","type":""}]},{"nativeSrc":"729:38:75","nodeType":"YulAssignment","src":"729:38:75","value":{"arguments":[{"name":"_1","nativeSrc":"742:2:75","nodeType":"YulIdentifier","src":"742:2:75"},{"arguments":[{"kind":"number","nativeSrc":"750:3:75","nodeType":"YulLiteral","src":"750:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"755:10:75","nodeType":"YulLiteral","src":"755:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"746:3:75","nodeType":"YulIdentifier","src":"746:3:75"},"nativeSrc":"746:20:75","nodeType":"YulFunctionCall","src":"746:20:75"}],"functionName":{"name":"and","nativeSrc":"738:3:75","nodeType":"YulIdentifier","src":"738:3:75"},"nativeSrc":"738:29:75","nodeType":"YulFunctionCall","src":"738:29:75"},"variableNames":[{"name":"value","nativeSrc":"729:5:75","nodeType":"YulIdentifier","src":"729:5:75"}]},{"body":{"nativeSrc":"798:115:75","nodeType":"YulBlock","src":"798:115:75","statements":[{"nativeSrc":"812:91:75","nodeType":"YulAssignment","src":"812:91:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"829:2:75","nodeType":"YulIdentifier","src":"829:2:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"841:1:75","nodeType":"YulLiteral","src":"841:1:75","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"848:1:75","nodeType":"YulLiteral","src":"848:1:75","type":"","value":"4"},{"name":"len","nativeSrc":"851:3:75","nodeType":"YulIdentifier","src":"851:3:75"}],"functionName":{"name":"sub","nativeSrc":"844:3:75","nodeType":"YulIdentifier","src":"844:3:75"},"nativeSrc":"844:11:75","nodeType":"YulFunctionCall","src":"844:11:75"}],"functionName":{"name":"shl","nativeSrc":"837:3:75","nodeType":"YulIdentifier","src":"837:3:75"},"nativeSrc":"837:19:75","nodeType":"YulFunctionCall","src":"837:19:75"},{"arguments":[{"kind":"number","nativeSrc":"862:3:75","nodeType":"YulLiteral","src":"862:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"867:10:75","nodeType":"YulLiteral","src":"867:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"858:3:75","nodeType":"YulIdentifier","src":"858:3:75"},"nativeSrc":"858:20:75","nodeType":"YulFunctionCall","src":"858:20:75"}],"functionName":{"name":"shl","nativeSrc":"833:3:75","nodeType":"YulIdentifier","src":"833:3:75"},"nativeSrc":"833:46:75","nodeType":"YulFunctionCall","src":"833:46:75"}],"functionName":{"name":"and","nativeSrc":"825:3:75","nodeType":"YulIdentifier","src":"825:3:75"},"nativeSrc":"825:55:75","nodeType":"YulFunctionCall","src":"825:55:75"},{"arguments":[{"kind":"number","nativeSrc":"886:3:75","nodeType":"YulLiteral","src":"886:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"891:10:75","nodeType":"YulLiteral","src":"891:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"882:3:75","nodeType":"YulIdentifier","src":"882:3:75"},"nativeSrc":"882:20:75","nodeType":"YulFunctionCall","src":"882:20:75"}],"functionName":{"name":"and","nativeSrc":"821:3:75","nodeType":"YulIdentifier","src":"821:3:75"},"nativeSrc":"821:82:75","nodeType":"YulFunctionCall","src":"821:82:75"},"variableNames":[{"name":"value","nativeSrc":"812:5:75","nodeType":"YulIdentifier","src":"812:5:75"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"782:3:75","nodeType":"YulIdentifier","src":"782:3:75"},{"kind":"number","nativeSrc":"787:1:75","nodeType":"YulLiteral","src":"787:1:75","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"779:2:75","nodeType":"YulIdentifier","src":"779:2:75"},"nativeSrc":"779:10:75","nodeType":"YulFunctionCall","src":"779:10:75"},"nativeSrc":"776:137:75","nodeType":"YulIf","src":"776:137:75"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes4","nativeSrc":"581:338:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"656:5:75","nodeType":"YulTypedName","src":"656:5:75","type":""},{"name":"len","nativeSrc":"663:3:75","nodeType":"YulTypedName","src":"663:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"671:5:75","nodeType":"YulTypedName","src":"671:5:75","type":""}],"src":"581:338:75"},{"body":{"nativeSrc":"1079:241:75","nodeType":"YulBlock","src":"1079:241:75","statements":[{"nativeSrc":"1089:26:75","nodeType":"YulAssignment","src":"1089:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1101:9:75","nodeType":"YulIdentifier","src":"1101:9:75"},{"kind":"number","nativeSrc":"1112:2:75","nodeType":"YulLiteral","src":"1112:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1097:3:75","nodeType":"YulIdentifier","src":"1097:3:75"},"nativeSrc":"1097:18:75","nodeType":"YulFunctionCall","src":"1097:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1089:4:75","nodeType":"YulIdentifier","src":"1089:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1131:9:75","nodeType":"YulIdentifier","src":"1131:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1146:6:75","nodeType":"YulIdentifier","src":"1146:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1162:3:75","nodeType":"YulLiteral","src":"1162:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1167:1:75","nodeType":"YulLiteral","src":"1167:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1158:3:75","nodeType":"YulIdentifier","src":"1158:3:75"},"nativeSrc":"1158:11:75","nodeType":"YulFunctionCall","src":"1158:11:75"},{"kind":"number","nativeSrc":"1171:1:75","nodeType":"YulLiteral","src":"1171:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1154:3:75","nodeType":"YulIdentifier","src":"1154:3:75"},"nativeSrc":"1154:19:75","nodeType":"YulFunctionCall","src":"1154:19:75"}],"functionName":{"name":"and","nativeSrc":"1142:3:75","nodeType":"YulIdentifier","src":"1142:3:75"},"nativeSrc":"1142:32:75","nodeType":"YulFunctionCall","src":"1142:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1124:6:75","nodeType":"YulIdentifier","src":"1124:6:75"},"nativeSrc":"1124:51:75","nodeType":"YulFunctionCall","src":"1124:51:75"},"nativeSrc":"1124:51:75","nodeType":"YulExpressionStatement","src":"1124:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1195:9:75","nodeType":"YulIdentifier","src":"1195:9:75"},{"kind":"number","nativeSrc":"1206:2:75","nodeType":"YulLiteral","src":"1206:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1191:3:75","nodeType":"YulIdentifier","src":"1191:3:75"},"nativeSrc":"1191:18:75","nodeType":"YulFunctionCall","src":"1191:18:75"},{"arguments":[{"name":"value1","nativeSrc":"1215:6:75","nodeType":"YulIdentifier","src":"1215:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1231:3:75","nodeType":"YulLiteral","src":"1231:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1236:1:75","nodeType":"YulLiteral","src":"1236:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1227:3:75","nodeType":"YulIdentifier","src":"1227:3:75"},"nativeSrc":"1227:11:75","nodeType":"YulFunctionCall","src":"1227:11:75"},{"kind":"number","nativeSrc":"1240:1:75","nodeType":"YulLiteral","src":"1240:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1223:3:75","nodeType":"YulIdentifier","src":"1223:3:75"},"nativeSrc":"1223:19:75","nodeType":"YulFunctionCall","src":"1223:19:75"}],"functionName":{"name":"and","nativeSrc":"1211:3:75","nodeType":"YulIdentifier","src":"1211:3:75"},"nativeSrc":"1211:32:75","nodeType":"YulFunctionCall","src":"1211:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1184:6:75","nodeType":"YulIdentifier","src":"1184:6:75"},"nativeSrc":"1184:60:75","nodeType":"YulFunctionCall","src":"1184:60:75"},"nativeSrc":"1184:60:75","nodeType":"YulExpressionStatement","src":"1184:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1264:9:75","nodeType":"YulIdentifier","src":"1264:9:75"},{"kind":"number","nativeSrc":"1275:2:75","nodeType":"YulLiteral","src":"1275:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1260:3:75","nodeType":"YulIdentifier","src":"1260:3:75"},"nativeSrc":"1260:18:75","nodeType":"YulFunctionCall","src":"1260:18:75"},{"arguments":[{"name":"value2","nativeSrc":"1284:6:75","nodeType":"YulIdentifier","src":"1284:6:75"},{"arguments":[{"kind":"number","nativeSrc":"1296:3:75","nodeType":"YulLiteral","src":"1296:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"1301:10:75","nodeType":"YulLiteral","src":"1301:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1292:3:75","nodeType":"YulIdentifier","src":"1292:3:75"},"nativeSrc":"1292:20:75","nodeType":"YulFunctionCall","src":"1292:20:75"}],"functionName":{"name":"and","nativeSrc":"1280:3:75","nodeType":"YulIdentifier","src":"1280:3:75"},"nativeSrc":"1280:33:75","nodeType":"YulFunctionCall","src":"1280:33:75"}],"functionName":{"name":"mstore","nativeSrc":"1253:6:75","nodeType":"YulIdentifier","src":"1253:6:75"},"nativeSrc":"1253:61:75","nodeType":"YulFunctionCall","src":"1253:61:75"},"nativeSrc":"1253:61:75","nodeType":"YulExpressionStatement","src":"1253:61:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"924:396:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1032:9:75","nodeType":"YulTypedName","src":"1032:9:75","type":""},{"name":"value2","nativeSrc":"1043:6:75","nodeType":"YulTypedName","src":"1043:6:75","type":""},{"name":"value1","nativeSrc":"1051:6:75","nodeType":"YulTypedName","src":"1051:6:75","type":""},{"name":"value0","nativeSrc":"1059:6:75","nodeType":"YulTypedName","src":"1059:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1070:4:75","nodeType":"YulTypedName","src":"1070:4:75","type":""}],"src":"924:396:75"},{"body":{"nativeSrc":"1419:348:75","nodeType":"YulBlock","src":"1419:348:75","statements":[{"body":{"nativeSrc":"1465:16:75","nodeType":"YulBlock","src":"1465:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1474:1:75","nodeType":"YulLiteral","src":"1474:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1477:1:75","nodeType":"YulLiteral","src":"1477:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1467:6:75","nodeType":"YulIdentifier","src":"1467:6:75"},"nativeSrc":"1467:12:75","nodeType":"YulFunctionCall","src":"1467:12:75"},"nativeSrc":"1467:12:75","nodeType":"YulExpressionStatement","src":"1467:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1440:7:75","nodeType":"YulIdentifier","src":"1440:7:75"},{"name":"headStart","nativeSrc":"1449:9:75","nodeType":"YulIdentifier","src":"1449:9:75"}],"functionName":{"name":"sub","nativeSrc":"1436:3:75","nodeType":"YulIdentifier","src":"1436:3:75"},"nativeSrc":"1436:23:75","nodeType":"YulFunctionCall","src":"1436:23:75"},{"kind":"number","nativeSrc":"1461:2:75","nodeType":"YulLiteral","src":"1461:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1432:3:75","nodeType":"YulIdentifier","src":"1432:3:75"},"nativeSrc":"1432:32:75","nodeType":"YulFunctionCall","src":"1432:32:75"},"nativeSrc":"1429:52:75","nodeType":"YulIf","src":"1429:52:75"},{"nativeSrc":"1490:29:75","nodeType":"YulVariableDeclaration","src":"1490:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1509:9:75","nodeType":"YulIdentifier","src":"1509:9:75"}],"functionName":{"name":"mload","nativeSrc":"1503:5:75","nodeType":"YulIdentifier","src":"1503:5:75"},"nativeSrc":"1503:16:75","nodeType":"YulFunctionCall","src":"1503:16:75"},"variables":[{"name":"value","nativeSrc":"1494:5:75","nodeType":"YulTypedName","src":"1494:5:75","type":""}]},{"body":{"nativeSrc":"1572:16:75","nodeType":"YulBlock","src":"1572:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1581:1:75","nodeType":"YulLiteral","src":"1581:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1584:1:75","nodeType":"YulLiteral","src":"1584:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1574:6:75","nodeType":"YulIdentifier","src":"1574:6:75"},"nativeSrc":"1574:12:75","nodeType":"YulFunctionCall","src":"1574:12:75"},"nativeSrc":"1574:12:75","nodeType":"YulExpressionStatement","src":"1574:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1541:5:75","nodeType":"YulIdentifier","src":"1541:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1562:5:75","nodeType":"YulIdentifier","src":"1562:5:75"}],"functionName":{"name":"iszero","nativeSrc":"1555:6:75","nodeType":"YulIdentifier","src":"1555:6:75"},"nativeSrc":"1555:13:75","nodeType":"YulFunctionCall","src":"1555:13:75"}],"functionName":{"name":"iszero","nativeSrc":"1548:6:75","nodeType":"YulIdentifier","src":"1548:6:75"},"nativeSrc":"1548:21:75","nodeType":"YulFunctionCall","src":"1548:21:75"}],"functionName":{"name":"eq","nativeSrc":"1538:2:75","nodeType":"YulIdentifier","src":"1538:2:75"},"nativeSrc":"1538:32:75","nodeType":"YulFunctionCall","src":"1538:32:75"}],"functionName":{"name":"iszero","nativeSrc":"1531:6:75","nodeType":"YulIdentifier","src":"1531:6:75"},"nativeSrc":"1531:40:75","nodeType":"YulFunctionCall","src":"1531:40:75"},"nativeSrc":"1528:60:75","nodeType":"YulIf","src":"1528:60:75"},{"nativeSrc":"1597:15:75","nodeType":"YulAssignment","src":"1597:15:75","value":{"name":"value","nativeSrc":"1607:5:75","nodeType":"YulIdentifier","src":"1607:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1597:6:75","nodeType":"YulIdentifier","src":"1597:6:75"}]},{"nativeSrc":"1621:40:75","nodeType":"YulVariableDeclaration","src":"1621:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1646:9:75","nodeType":"YulIdentifier","src":"1646:9:75"},{"kind":"number","nativeSrc":"1657:2:75","nodeType":"YulLiteral","src":"1657:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1642:3:75","nodeType":"YulIdentifier","src":"1642:3:75"},"nativeSrc":"1642:18:75","nodeType":"YulFunctionCall","src":"1642:18:75"}],"functionName":{"name":"mload","nativeSrc":"1636:5:75","nodeType":"YulIdentifier","src":"1636:5:75"},"nativeSrc":"1636:25:75","nodeType":"YulFunctionCall","src":"1636:25:75"},"variables":[{"name":"value_1","nativeSrc":"1625:7:75","nodeType":"YulTypedName","src":"1625:7:75","type":""}]},{"body":{"nativeSrc":"1719:16:75","nodeType":"YulBlock","src":"1719:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1728:1:75","nodeType":"YulLiteral","src":"1728:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1731:1:75","nodeType":"YulLiteral","src":"1731:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1721:6:75","nodeType":"YulIdentifier","src":"1721:6:75"},"nativeSrc":"1721:12:75","nodeType":"YulFunctionCall","src":"1721:12:75"},"nativeSrc":"1721:12:75","nodeType":"YulExpressionStatement","src":"1721:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"1683:7:75","nodeType":"YulIdentifier","src":"1683:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"1696:7:75","nodeType":"YulIdentifier","src":"1696:7:75"},{"kind":"number","nativeSrc":"1705:10:75","nodeType":"YulLiteral","src":"1705:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"1692:3:75","nodeType":"YulIdentifier","src":"1692:3:75"},"nativeSrc":"1692:24:75","nodeType":"YulFunctionCall","src":"1692:24:75"}],"functionName":{"name":"eq","nativeSrc":"1680:2:75","nodeType":"YulIdentifier","src":"1680:2:75"},"nativeSrc":"1680:37:75","nodeType":"YulFunctionCall","src":"1680:37:75"}],"functionName":{"name":"iszero","nativeSrc":"1673:6:75","nodeType":"YulIdentifier","src":"1673:6:75"},"nativeSrc":"1673:45:75","nodeType":"YulFunctionCall","src":"1673:45:75"},"nativeSrc":"1670:65:75","nodeType":"YulIf","src":"1670:65:75"},{"nativeSrc":"1744:17:75","nodeType":"YulAssignment","src":"1744:17:75","value":{"name":"value_1","nativeSrc":"1754:7:75","nodeType":"YulIdentifier","src":"1754:7:75"},"variableNames":[{"name":"value1","nativeSrc":"1744:6:75","nodeType":"YulIdentifier","src":"1744:6:75"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"1325:442:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1377:9:75","nodeType":"YulTypedName","src":"1377:9:75","type":""},{"name":"dataEnd","nativeSrc":"1388:7:75","nodeType":"YulTypedName","src":"1388:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1400:6:75","nodeType":"YulTypedName","src":"1400:6:75","type":""},{"name":"value1","nativeSrc":"1408:6:75","nodeType":"YulTypedName","src":"1408:6:75","type":""}],"src":"1325:442:75"},{"body":{"nativeSrc":"1873:102:75","nodeType":"YulBlock","src":"1873:102:75","statements":[{"nativeSrc":"1883:26:75","nodeType":"YulAssignment","src":"1883:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1895:9:75","nodeType":"YulIdentifier","src":"1895:9:75"},{"kind":"number","nativeSrc":"1906:2:75","nodeType":"YulLiteral","src":"1906:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1891:3:75","nodeType":"YulIdentifier","src":"1891:3:75"},"nativeSrc":"1891:18:75","nodeType":"YulFunctionCall","src":"1891:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1883:4:75","nodeType":"YulIdentifier","src":"1883:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1925:9:75","nodeType":"YulIdentifier","src":"1925:9:75"},{"arguments":[{"name":"value0","nativeSrc":"1940:6:75","nodeType":"YulIdentifier","src":"1940:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1956:3:75","nodeType":"YulLiteral","src":"1956:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1961:1:75","nodeType":"YulLiteral","src":"1961:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1952:3:75","nodeType":"YulIdentifier","src":"1952:3:75"},"nativeSrc":"1952:11:75","nodeType":"YulFunctionCall","src":"1952:11:75"},{"kind":"number","nativeSrc":"1965:1:75","nodeType":"YulLiteral","src":"1965:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1948:3:75","nodeType":"YulIdentifier","src":"1948:3:75"},"nativeSrc":"1948:19:75","nodeType":"YulFunctionCall","src":"1948:19:75"}],"functionName":{"name":"and","nativeSrc":"1936:3:75","nodeType":"YulIdentifier","src":"1936:3:75"},"nativeSrc":"1936:32:75","nodeType":"YulFunctionCall","src":"1936:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1918:6:75","nodeType":"YulIdentifier","src":"1918:6:75"},"nativeSrc":"1918:51:75","nodeType":"YulFunctionCall","src":"1918:51:75"},"nativeSrc":"1918:51:75","nodeType":"YulExpressionStatement","src":"1918:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1772:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1842:9:75","nodeType":"YulTypedName","src":"1842:9:75","type":""},{"name":"value0","nativeSrc":"1853:6:75","nodeType":"YulTypedName","src":"1853:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1864:4:75","nodeType":"YulTypedName","src":"1864:4:75","type":""}],"src":"1772:203:75"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_contract$_IAccessManager_$7253__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    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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14249":[{"length":32,"start":56},{"length":32,"start":202}]},"linkReferences":{},"object":"60806040526004361061001d575f3560e01c80633a7b7a3914610027575b610025610076565b005b348015610032575f5ffd5b5061005a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610086610081610088565b6100bf565b565b5f6100ba7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b5f6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b700961333306100fe60048636816101ce565b610107916101f5565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015610159573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017d919061022d565b509050806101a35760405162d1953b60e31b815233600482015260240160405180910390fd5b6101ac826101b0565b5050565b365f5f375f5f365f845af43d5f5f3e8080156101ca573d5ff35b3d5ffd5b5f5f858511156101dc575f5ffd5b838611156101e8575f5ffd5b5050820193919092039150565b80356001600160e01b03198116906004841015610226576001600160e01b0319600485900360031b81901b82161691505b5092915050565b5f5f6040838503121561023e575f5ffd5b8251801515811461024d575f5ffd5b602084015190925063ffffffff81168114610266575f5ffd5b80915050925092905056fea2646970667358221220d535811f2fdd1ab45a87036255e096b56e0c66b796ca6e3d318408af06b014eb64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3A7B7A39 EQ PUSH2 0x27 JUMPI JUMPDEST PUSH2 0x25 PUSH2 0x76 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x86 PUSH2 0x81 PUSH2 0x88 JUMP JUMPDEST PUSH2 0xBF JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH2 0xBA PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0xFE PUSH1 0x4 DUP7 CALLDATASIZE DUP2 PUSH2 0x1CE JUMP JUMPDEST PUSH2 0x107 SWAP2 PUSH2 0x1F5 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 0x159 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 0x17D SWAP2 SWAP1 PUSH2 0x22D JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x1A3 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 0x1AC DUP3 PUSH2 0x1B0 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLDATASIZE PUSH0 PUSH0 CALLDATACOPY PUSH0 PUSH0 CALLDATASIZE PUSH0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x1CA JUMPI RETURNDATASIZE PUSH0 RETURN JUMPDEST RETURNDATASIZE PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP6 DUP6 GT ISZERO PUSH2 0x1DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x1E8 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 0x226 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 0x23E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x24D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x266 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CALLDATALOAD DUP2 0x1F 0x2F 0xDD BYTE 0xB4 GAS DUP8 SUB PUSH3 0x55E096 0xB5 PUSH15 0xC66B796CA6E3D318408AF06B014EB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1111:1321:49:-:0;;;;;;;;;;;;;;;;;;2649:11:28;:9;:11::i;:::-;1111:1321:49;1159:46;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;201:32:75;;;183:51;;171:2;156:18;1159:46:49;;;;;;;2323:83:28;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323: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;2154:276:49:-;2230:14;-1:-1:-1;;;;;2250:14:49;:22;;2273:10;2293:4;2307:13;2318:1;2230:14;2307:8;2230:14;2307:13;:::i;:::-;2300:21;;;:::i;:::-;2250:72;;;;;;-1:-1:-1;;;;;;2250:72:49;;;;;-1:-1:-1;;;;;1142:32:75;;;2250:72:49;;;1124:51:75;1211:32;;;;1191:18;;;1184:60;1280:33;1260:18;;;1253:61;1097:18;;2250:72:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2229:93;;;2333:9;2328:60;;2351:37;;-1:-1:-1;;;2351:37:49;;2377:10;2351:37;;;183:51:75;156:18;;2351:37:49;;;;;;;2328:60;2394:31;2410:14;2394:15;:31::i;:::-;2223:207;2154:276;:::o;949:895:28:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;245:331:75;350:9;361;403:8;391:10;388:24;385:44;;;425:1;422;415:12;385:44;454:6;444:8;441:20;438:40;;;474:1;471;464:12;438:40;-1:-1:-1;;500:23:75;;;545:25;;;;;-1:-1:-1;245:331:75:o;581:338::-;701:19;;-1:-1:-1;;;;;;738:29:75;;;787:1;779:10;;776:137;;;-1:-1:-1;;;;;;848:1:75;844:11;;;841:1;837:19;833:46;;;825:55;;821:82;;-1:-1:-1;776:137:75;;581:338;;;;:::o;1325:442::-;1400:6;1408;1461:2;1449:9;1440:7;1436:23;1432:32;1429:52;;;1477:1;1474;1467:12;1429:52;1509:9;1503:16;1562:5;1555:13;1548:21;1541:5;1538:32;1528:60;;1584:1;1581;1574:12;1528:60;1657:2;1642:18;;1636:25;1607:5;;-1:-1:-1;1705:10:75;1692:24;;1680:37;;1670:65;;1731:1;1728;1721:12;1670:65;1754:7;1744:17;;;1325:442;;;;;:::o"},"methodIdentifiers":{"ACCESS_MANAGER()":"3a7b7a39"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"contract IAccessManager\",\"name\":\"manager\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"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\":[{\"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\"},{\"inputs\":[],\"name\":\"ACCESS_MANAGER\",\"outputs\":[{\"internalType\":\"contract IAccessManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Ensuro\",\"custom:security-contact\":\"security@ensuro.co\",\"details\":\"Proxy contract using IAccessManager to manage access control before delegating calls.      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.      For gas efficiency, the ACCESS_MANAGER is immutable, so take care you don't lose control of it, otherwise      it will make your contract inaccesible or other bad things will happen.      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\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"title\":\"AccessManagedProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/AccessManagedProxy.sol\":\"AccessManagedProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x9be2d08a326515805bc9cf6315b7953f8d1ebe88abf48c2d645fb1fa8211a0e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e750d656e37efaefbb2300051ec2c4c725db266c5ff89bc985f7ecb8d214c4f4\",\"dweb:/ipfs/QmT51FsZes2n2nrLLh3d8YkBYKY43CtwScZxixcLGzL9r6\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0xaf5aa782fd0c86e1b8489abe11fdc124c81413fe76a376566dc7dde2bc53db17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12bfec7192cbd6792719056cbbe2a076c57faa40ccb088d71a345c99a4108e34\",\"dweb:/ipfs/QmQ4hnbw1JiKAwFRpJbTv3NcR1uP97hLWvauwHdwjMmFuz\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/CompoundV3ERC4626.sol":{"CompoundV3ERC4626":{"abi":[{"inputs":[{"internalType":"contract ICompoundV3","name":"cToken_","type":"address"},{"internalType":"contract ICometRewards","name":"rewardsManager_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","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":[{"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":[{"internalType":"address","name":"asset","type":"address"}],"name":"InvalidAsset","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"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":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HARVEST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SWAP_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"name":"harvestRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"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":"swapConfig_","type":"tuple"}],"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"swapConfig_","type":"tuple"}],"name":"setSwapConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":{"@_14401":{"entryPoint":null,"id":14401,"parameterSlots":2,"returnSlots":0},"@_disableInitializers_2832":{"entryPoint":84,"id":2832,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"abi_decode_tuple_t_contract$_ICompoundV3_$22274t_contract$_ICometRewards_$22236_fromMemory":{"entryPoint":282,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_ICompoundV3":{"entryPoint":262,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:825:75","nodeType":"YulBlock","src":"0:825:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"72:86:75","nodeType":"YulBlock","src":"72:86:75","statements":[{"body":{"nativeSrc":"136:16:75","nodeType":"YulBlock","src":"136:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"145:1:75","nodeType":"YulLiteral","src":"145:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"148:1:75","nodeType":"YulLiteral","src":"148:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"138:6:75","nodeType":"YulIdentifier","src":"138:6:75"},"nativeSrc":"138:12:75","nodeType":"YulFunctionCall","src":"138:12:75"},"nativeSrc":"138:12:75","nodeType":"YulExpressionStatement","src":"138:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"95:5:75","nodeType":"YulIdentifier","src":"95:5:75"},{"arguments":[{"name":"value","nativeSrc":"106:5:75","nodeType":"YulIdentifier","src":"106:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"121:3:75","nodeType":"YulLiteral","src":"121:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"126:1:75","nodeType":"YulLiteral","src":"126:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"117:3:75","nodeType":"YulIdentifier","src":"117:3:75"},"nativeSrc":"117:11:75","nodeType":"YulFunctionCall","src":"117:11:75"},{"kind":"number","nativeSrc":"130:1:75","nodeType":"YulLiteral","src":"130:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"113:3:75","nodeType":"YulIdentifier","src":"113:3:75"},"nativeSrc":"113:19:75","nodeType":"YulFunctionCall","src":"113:19:75"}],"functionName":{"name":"and","nativeSrc":"102:3:75","nodeType":"YulIdentifier","src":"102:3:75"},"nativeSrc":"102:31:75","nodeType":"YulFunctionCall","src":"102:31:75"}],"functionName":{"name":"eq","nativeSrc":"92:2:75","nodeType":"YulIdentifier","src":"92:2:75"},"nativeSrc":"92:42:75","nodeType":"YulFunctionCall","src":"92:42:75"}],"functionName":{"name":"iszero","nativeSrc":"85:6:75","nodeType":"YulIdentifier","src":"85:6:75"},"nativeSrc":"85:50:75","nodeType":"YulFunctionCall","src":"85:50:75"},"nativeSrc":"82:70:75","nodeType":"YulIf","src":"82:70:75"}]},"name":"validator_revert_contract_ICompoundV3","nativeSrc":"14:144:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"61:5:75","nodeType":"YulTypedName","src":"61:5:75","type":""}],"src":"14:144:75"},{"body":{"nativeSrc":"305:313:75","nodeType":"YulBlock","src":"305:313:75","statements":[{"body":{"nativeSrc":"351:16:75","nodeType":"YulBlock","src":"351:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"360:1:75","nodeType":"YulLiteral","src":"360:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"363:1:75","nodeType":"YulLiteral","src":"363:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"353:6:75","nodeType":"YulIdentifier","src":"353:6:75"},"nativeSrc":"353:12:75","nodeType":"YulFunctionCall","src":"353:12:75"},"nativeSrc":"353:12:75","nodeType":"YulExpressionStatement","src":"353:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"326:7:75","nodeType":"YulIdentifier","src":"326:7:75"},{"name":"headStart","nativeSrc":"335:9:75","nodeType":"YulIdentifier","src":"335:9:75"}],"functionName":{"name":"sub","nativeSrc":"322:3:75","nodeType":"YulIdentifier","src":"322:3:75"},"nativeSrc":"322:23:75","nodeType":"YulFunctionCall","src":"322:23:75"},{"kind":"number","nativeSrc":"347:2:75","nodeType":"YulLiteral","src":"347:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"318:3:75","nodeType":"YulIdentifier","src":"318:3:75"},"nativeSrc":"318:32:75","nodeType":"YulFunctionCall","src":"318:32:75"},"nativeSrc":"315:52:75","nodeType":"YulIf","src":"315:52:75"},{"nativeSrc":"376:29:75","nodeType":"YulVariableDeclaration","src":"376:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"395:9:75","nodeType":"YulIdentifier","src":"395:9:75"}],"functionName":{"name":"mload","nativeSrc":"389:5:75","nodeType":"YulIdentifier","src":"389:5:75"},"nativeSrc":"389:16:75","nodeType":"YulFunctionCall","src":"389:16:75"},"variables":[{"name":"value","nativeSrc":"380:5:75","nodeType":"YulTypedName","src":"380:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"452:5:75","nodeType":"YulIdentifier","src":"452:5:75"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"414:37:75","nodeType":"YulIdentifier","src":"414:37:75"},"nativeSrc":"414:44:75","nodeType":"YulFunctionCall","src":"414:44:75"},"nativeSrc":"414:44:75","nodeType":"YulExpressionStatement","src":"414:44:75"},{"nativeSrc":"467:15:75","nodeType":"YulAssignment","src":"467:15:75","value":{"name":"value","nativeSrc":"477:5:75","nodeType":"YulIdentifier","src":"477:5:75"},"variableNames":[{"name":"value0","nativeSrc":"467:6:75","nodeType":"YulIdentifier","src":"467:6:75"}]},{"nativeSrc":"491:40:75","nodeType":"YulVariableDeclaration","src":"491:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"516:9:75","nodeType":"YulIdentifier","src":"516:9:75"},{"kind":"number","nativeSrc":"527:2:75","nodeType":"YulLiteral","src":"527:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"512:3:75","nodeType":"YulIdentifier","src":"512:3:75"},"nativeSrc":"512:18:75","nodeType":"YulFunctionCall","src":"512:18:75"}],"functionName":{"name":"mload","nativeSrc":"506:5:75","nodeType":"YulIdentifier","src":"506:5:75"},"nativeSrc":"506:25:75","nodeType":"YulFunctionCall","src":"506:25:75"},"variables":[{"name":"value_1","nativeSrc":"495:7:75","nodeType":"YulTypedName","src":"495:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"578:7:75","nodeType":"YulIdentifier","src":"578:7:75"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"540:37:75","nodeType":"YulIdentifier","src":"540:37:75"},"nativeSrc":"540:46:75","nodeType":"YulFunctionCall","src":"540:46:75"},"nativeSrc":"540:46:75","nodeType":"YulExpressionStatement","src":"540:46:75"},{"nativeSrc":"595:17:75","nodeType":"YulAssignment","src":"595:17:75","value":{"name":"value_1","nativeSrc":"605:7:75","nodeType":"YulIdentifier","src":"605:7:75"},"variableNames":[{"name":"value1","nativeSrc":"595:6:75","nodeType":"YulIdentifier","src":"595:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_ICompoundV3_$22274t_contract$_ICometRewards_$22236_fromMemory","nativeSrc":"163:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"263:9:75","nodeType":"YulTypedName","src":"263:9:75","type":""},{"name":"dataEnd","nativeSrc":"274:7:75","nodeType":"YulTypedName","src":"274:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"286:6:75","nodeType":"YulTypedName","src":"286:6:75","type":""},{"name":"value1","nativeSrc":"294:6:75","nodeType":"YulTypedName","src":"294:6:75","type":""}],"src":"163:455:75"},{"body":{"nativeSrc":"722:101:75","nodeType":"YulBlock","src":"722:101:75","statements":[{"nativeSrc":"732:26:75","nodeType":"YulAssignment","src":"732:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"744:9:75","nodeType":"YulIdentifier","src":"744:9:75"},{"kind":"number","nativeSrc":"755:2:75","nodeType":"YulLiteral","src":"755:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"740:3:75","nodeType":"YulIdentifier","src":"740:3:75"},"nativeSrc":"740:18:75","nodeType":"YulFunctionCall","src":"740:18:75"},"variableNames":[{"name":"tail","nativeSrc":"732:4:75","nodeType":"YulIdentifier","src":"732:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"774:9:75","nodeType":"YulIdentifier","src":"774:9:75"},{"arguments":[{"name":"value0","nativeSrc":"789:6:75","nodeType":"YulIdentifier","src":"789:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"805:2:75","nodeType":"YulLiteral","src":"805:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"809:1:75","nodeType":"YulLiteral","src":"809:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"801:3:75","nodeType":"YulIdentifier","src":"801:3:75"},"nativeSrc":"801:10:75","nodeType":"YulFunctionCall","src":"801:10:75"},{"kind":"number","nativeSrc":"813:1:75","nodeType":"YulLiteral","src":"813:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"797:3:75","nodeType":"YulIdentifier","src":"797:3:75"},"nativeSrc":"797:18:75","nodeType":"YulFunctionCall","src":"797:18:75"}],"functionName":{"name":"and","nativeSrc":"785:3:75","nodeType":"YulIdentifier","src":"785:3:75"},"nativeSrc":"785:31:75","nodeType":"YulFunctionCall","src":"785:31:75"}],"functionName":{"name":"mstore","nativeSrc":"767:6:75","nodeType":"YulIdentifier","src":"767:6:75"},"nativeSrc":"767:50:75","nodeType":"YulFunctionCall","src":"767:50:75"},"nativeSrc":"767:50:75","nodeType":"YulExpressionStatement","src":"767:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"623:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"691:9:75","nodeType":"YulTypedName","src":"691:9:75","type":""},{"name":"value0","nativeSrc":"702:6:75","nodeType":"YulTypedName","src":"702:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"713:4:75","nodeType":"YulTypedName","src":"713:4:75","type":""}],"src":"623:200:75"}]},"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_$22274t_contract$_ICometRewards_$22236_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_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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":4329},{"length":20,"start":5038},{"length":20,"start":9120}]}},"object":"60e060405230608052348015610013575f5ffd5b506040516135923803806135928339810160408190526100329161011a565b6001600160a01b0380831660a052811660c05261004d610054565b5050610152565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a45760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101035780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6001600160a01b0381168114610103575f5ffd5b5f5f6040838503121561012b575f5ffd5b825161013681610106565b602084015190925061014781610106565b809150509250929050565b60805160a05160c0516133c26101d05f395f8181610caf0152610d7f01525f81816107ea01528181610b7701528181610c8501528181610d4a015281816113e30152818161149501528181611a8201528181611b0001528181611baa0152611c5701525f8181611899015281816118c20152611a2501526133c25ff3fe60806040526004361061025f575f3560e01c80636e553f651161013f578063ba087652116100b3578063d547741f11610078578063d547741f14610710578063d905777e1461072f578063dd62ed3e1461074e578063e1d394501461076d578063ef8b30f7146106d2578063fbb12d07146107a0575f5ffd5b8063ba08765214610694578063c2f09e2b146106b3578063c63d75b6146104e0578063c6e6f592146106d2578063ce96cb77146106f1575f5ffd5b8063a217fddf11610104578063a217fddf146105d5578063a9059cbb146105e8578063ad3cb1cc14610607578063b3d7f6b914610637578063b460af9414610656578063b740a83f14610675575f5ffd5b80636e553f651461054557806370a082311461056457806391d148541461058357806394bf804d146105a257806395d89b41146105c1575f5ffd5b8063248a9ca3116101d657806338d52e0f1161019b57806338d52e0f146104b4578063402d267d146104e05780634cdad506146102da5780634f1ef286146104ff57806352d1902d1461051257806357126d0d14610526575f5ffd5b8063248a9ca3146103fe57806324ea54f41461041d5780632f2ff15d14610450578063313ce5671461046f57806336568abe14610495575f5ffd5b80630a28a477116102275780630a28a477146103185780630b2ce411146103375780631389c0291461035857806318160ddd1461038b5780631e4e0091146103be57806323b872dd146103df575f5ffd5b806301e1d1141461026357806301ffc9a71461028a57806306fdde03146102b957806307a2d13a146102da578063095ea7b3146102f9575b5f5ffd5b34801561026e575f5ffd5b506102776107d3565b6040519081526020015b60405180910390f35b348015610295575f5ffd5b506102a96102a43660046127d3565b610860565b6040519015158152602001610281565b3480156102c4575f5ffd5b506102cd610896565b6040516102819190612828565b3480156102e5575f5ffd5b506102776102f436600461283a565b610956565b348015610304575f5ffd5b506102a9610313366004612865565b610961565b348015610323575f5ffd5b5061027761033236600461283a565b610978565b348015610342575f5ffd5b5061034b610984565b60405161028191906128c3565b348015610363575f5ffd5b506102777f471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed1681681565b348015610396575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610277565b3480156103c9575f5ffd5b506103dd6103d83660046128f8565b610a77565b005b3480156103ea575f5ffd5b506102a96103f9366004612918565b610a90565b348015610409575f5ffd5b5061027761041836600461283a565b610ab5565b348015610428575f5ffd5b506102777f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b34801561045b575f5ffd5b506103dd61046a366004612956565b610ad5565b34801561047a575f5ffd5b50610483610af7565b60405160ff9091168152602001610281565b3480156104a0575f5ffd5b506103dd6104af366004612956565b610b26565b3480156104bf575f5ffd5b506104c8610b59565b6040516001600160a01b039091168152602001610281565b3480156104eb575f5ffd5b506102776104fa366004612984565b610b74565b6103dd61050d366004612a42565b610c0a565b34801561051d575f5ffd5b50610277610c29565b348015610531575f5ffd5b506103dd61054036600461283a565b610c44565b348015610550575f5ffd5b5061027761055f366004612956565b610fea565b34801561056f575f5ffd5b5061027761057e366004612984565b611047565b34801561058e575f5ffd5b506102a961059d366004612956565b61106d565b3480156105ad575f5ffd5b506102776105bc366004612956565b6110a3565b3480156105cc575f5ffd5b506102cd6110ef565b3480156105e0575f5ffd5b506102775f81565b3480156105f3575f5ffd5b506102a9610602366004612865565b61112d565b348015610612575f5ffd5b506102cd604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610642575f5ffd5b5061027761065136600461283a565b61113a565b348015610661575f5ffd5b50610277610670366004612a8e565b611146565b348015610680575f5ffd5b506103dd61068f366004612ae3565b61119c565b34801561069f575f5ffd5b506102776106ae366004612a8e565b611276565b3480156106be575f5ffd5b506103dd6106cd366004612b14565b6112c3565b3480156106dd575f5ffd5b506102776106ec36600461283a565b6113d5565b3480156106fc575f5ffd5b5061027761070b366004612984565b6113e0565b34801561071b575f5ffd5b506103dd61072a366004612956565b611476565b34801561073a575f5ffd5b50610277610749366004612984565b611492565b348015610759575f5ffd5b50610277610768366004612bb2565b611528565b348015610778575f5ffd5b506102777fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b3480156107ab575f5ffd5b506102777f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c81565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085b9190612bde565b905090565b5f6001600160e01b03198216637965db0b60e01b148061089057506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f51602061330d5f395f51905f52916108d490612bf5565b80601f016020809104026020016040519081016040528092919081815260200182805461090090612bf5565b801561094b5780601f106109225761010080835404028352916020019161094b565b820191905f5260205f20905b81548152906001019060200180831161092e57829003601f168201915b505050505091505090565b5f610890825f611571565b5f3361096e8185856115c8565b5060019392505050565b5f6108908260016115d5565b60408051606080820183525f80835260208301529181019190915260408051606081019091525f8054829060ff1660028111156109c3576109c361288f565b60028111156109d4576109d461288f565b8152602001600182015481526020016002820180546109f290612bf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1e90612bf5565b8015610a695780601f10610a4057610100808354040283529160200191610a69565b820191905f5260205f20905b815481529060010190602001808311610a4c57829003601f168201915b505050505081525050905090565b5f610a8181611623565b610a8b8383611630565b505050565b5f33610a9d858285611690565b610aa88585856116da565b60019150505b9392505050565b5f9081525f51602061334d5f395f51905f52602052604090206001015490565b610ade82610ab5565b610ae781611623565b610af18383611737565b50505050565b5f805f51602061336d5f395f51905f5290505f8154610b209190600160a01b900460ff16612c3b565b91505090565b6001600160a01b0381163314610b4f5760405163334bd91960e11b815260040160405180910390fd5b610a8b82826117d8565b5f51602061336d5f395f51905f52546001600160a01b031690565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190612c68565b15610c0157505f919050565b61089082611851565b610c1261188e565b610c1b82611934565b610c25828261195e565b5050565b5f610c32611a1a565b505f51602061332d5f395f51905f5290565b7f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c610c6e81611623565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af1158015610cf7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1b9190612c81565b50909150506001600160a01b038116610d3357505050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b158015610dc0575f5ffd5b505af1158015610dd2573d5f5f3e3d5ffd5b50506040516370a0823160e01b81523060048201525f92506001600160a01b03841691506370a0823190602401602060405180830381865afa158015610e1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3e9190612bde565b60408051606081019091525f8054929350918290829060ff166002811115610e6857610e6861288f565b6002811115610e7957610e7961288f565b815260200160018201548152602001600282018054610e9790612bf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390612bf5565b8015610f0e5780601f10610ee557610100808354040283529160200191610f0e565b820191905f5260205f20905b815481529060010190602001808311610ef157829003601f168201915b50505050508152505073__$acbb9ece542dcf2065f41aa3c8cca5827e$__6377566915909185610f3c610b59565b868a6040518663ffffffff1660e01b8152600401610f5e959493929190612d00565b602060405180830381865af4158015610f79573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9d9190612bde565b9050610fa881611a63565b7fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e325838383604051610fdb93929190612d3f565b60405180910390a15050505050565b5f5f610ff583610b74565b90508084111561102757828482604051633c8097d960e11b815260040161101e93929190612d3f565b60405180910390fd5b5f611031856113d5565b905061103f33858784611b93565b949350505050565b6001600160a01b03165f9081525f51602061330d5f395f51905f52602052604090205490565b5f9182525f51602061334d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f6110ae83610b74565b9050808411156110d75782848260405163284ff66760e01b815260040161101e93929190612d3f565b5f6110e18561113a565b905061103f33858388611b93565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f51602061330d5f395f51905f52916108d490612bf5565b5f3361096e8185856116da565b5f610890826001611571565b5f5f611151836113e0565b90508085111561117a57828582604051633fa733bb60e21b815260040161101e93929190612d3f565b5f61118486610978565b90506111933386868985611ba8565b95945050505050565b7f471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed168166111c681611623565b6111cf82612d6c565b604051632cbf28cb60e21b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163b2fca32c916112059190600401612de8565b5f6040518083038186803b15801561121b575f5ffd5b505af415801561122d573d5f5f3e3d5ffd5b505050507fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f85f83604051611262929190612e8e565b60405180910390a1815f610af1828261304c565b5f5f61128183611492565b9050808511156112aa57828582604051632e52afbb60e21b815260040161101e93929190612d3f565b5f6112b486610956565b9050611193338686848a611ba8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113075750825b90505f826001600160401b031660011480156113225750303b155b905081158015611330575080155b1561134e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137857845460ff60401b1916600160401b1785555b61138489898989611c47565b83156113ca57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f610890825f6115d5565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190612c68565b1561146d57505f919050565b61089082611ce3565b61147f82610ab5565b61148881611623565b610af183836117d8565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115139190612c68565b1561151f57505f919050565b61089082611cf6565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f610aae61157d6107d3565b6115889060016130dc565b6115935f600a6131d2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546115bf91906130dc565b85919085611d00565b610a8b8383836001611d42565b5f610aae6115e482600a6131d2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461161091906130dc565b6116186107d3565b6115bf9060016130dc565b61162d8133611e25565b50565b5f51602061334d5f395f51905f525f61164884610ab5565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f61169b8484611528565b90505f198114610af157818110156116cc57828183604051637dc7a0d960e11b815260040161101e93929190612d3f565b610af184848484035f611d42565b6001600160a01b03831661170357604051634b637e8f60e11b81525f600482015260240161101e565b6001600160a01b03821661172c5760405163ec442f0560e01b81525f600482015260240161101e565b610a8b838383611e5e565b5f5f51602061334d5f395f51905f52611750848461106d565b6117cf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117853390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610890565b5f915050610890565b5f5f51602061334d5f395f51905f526117f1848461106d565b156117cf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610890565b5f61187c7fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a68361106d565b61188757505f919050565b5f19610890565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061191457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119085f51602061332d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156119325760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610c2581611623565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119b8575060408051601f3d908101601f191682019092526119b591810190612bde565b60015b6119e057604051634c9c8ce360e01b81526001600160a01b038316600482015260240161101e565b5f51602061332d5f395f51905f528114611a1057604051632a87526960e21b81526004810182905260240161101e565b610a8b8383611f84565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119325760405163703e46dd60e11b815260040160405180910390fd5b611a6b610b59565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052919091169063095ea7b3906044016020604051808303815f875af1158015611ad9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611afd9190612c68565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2b9fdb8611b35610b59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015611b7a575f5ffd5b505af1158015611b8c573d5f5f3e3d5ffd5b5050505050565b611b9f84848484611fd9565b610af182611a63565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3fef3a3611bdf610b59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044015f604051808303815f87803b158015611c24575f5ffd5b505af1158015611c36573d5f5f3e3d5ffd5b50505050611b8c8585858585612056565b611c4f61210a565b611cda8484847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd591906131e0565b612153565b610af1816121b0565b5f610890611cf083611047565b5f611571565b5f61089082611047565b5f611d2d611d0d83612231565b8015611d2857505f8480611d2357611d236131fb565b868809115b151590565b611d3886868661225d565b61119391906130dc565b5f51602061330d5f395f51905f526001600160a01b038516611d795760405163e602df0560e01b81525f600482015260240161101e565b6001600160a01b038416611da257604051634a1406b160e11b81525f600482015260240161101e565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611b8c57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611e1691815260200190565b60405180910390a35050505050565b611e2f828261106d565b610c255760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161101e565b5f51602061330d5f395f51905f526001600160a01b038416611e985781816002015f828254611e8d91906130dc565b90915550611ef59050565b6001600160a01b0384165f9081526020829052604090205482811015611ed75784818460405163391434e360e21b815260040161101e93929190612d3f565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611f13576002810180548390039055611f31565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f7691815260200190565b60405180910390a350505050565b611f8d82612313565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611fd157610a8b8282612376565b610c256123df565b5f51602061336d5f395f51905f528054611ffe906001600160a01b03168630866123fe565b6120088483612465565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611e16929190918252602082015260400190565b5f51602061336d5f395f51905f526001600160a01b038681169085161461208257612082848784611690565b61208c8483612499565b80546120a2906001600160a01b031686856124cd565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db86866040516120fa929190918252602082015260400190565b60405180910390a4505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661193257604051631afcd79f60e31b815260040160405180910390fd5b61215b61210a565b6121636124fe565b61216b6124fe565b6001600160a01b038116612194576040516337bce3c560e11b81525f600482015260240161101e565b61219d81612506565b6121a78484612517565b610af182612529565b6121b861210a565b6121c181612d6c565b604051632cbf28cb60e21b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163b2fca32c916121f79190600401612de8565b5f6040518083038186803b15801561220d575f5ffd5b505af415801561221f573d5f5f3e3d5ffd5b50505050805f8181610a8b919061304c565b5f60028260038111156122465761224661288f565b612250919061320f565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f0361229157838281612287576122876131fb565b0492505050610aae565b8084116122a8576122a8600385150260111861253b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361234857604051634c9c8ce360e01b81526001600160a01b038216600482015260240161101e565b5f51602061332d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612392919061323c565b5f60405180830381855af49150503d805f81146123ca576040519150601f19603f3d011682016040523d82523d5f602084013e6123cf565b606091505b509150915061119385838361254c565b34156119325760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610af19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125a8565b6001600160a01b03821661248e5760405163ec442f0560e01b81525f600482015260240161101e565b610c255f8383611e5e565b6001600160a01b0382166124c257604051634b637e8f60e11b81525f600482015260240161101e565b610c25825f83611e5e565b6040516001600160a01b03838116602483015260448201839052610a8b91859182169063a9059cbb90606401612433565b61193261210a565b61250e61210a565b61162d81612614565b61251f61210a565b610c258282612684565b61253161210a565b610c255f82611737565b634e487b715f52806020526024601cfd5b6060826125615761255c826126d4565b610aae565b815115801561257857506001600160a01b0384163b155b156125a157604051639996b31560e01b81526001600160a01b038516600482015260240161101e565b5080610aae565b5f5f60205f8451602086015f885af1806125c7576040513d5f823e3d81fd5b50505f513d915081156125de5780600114156125eb565b6001600160a01b0384163b155b15610af157604051635274afe760e01b81526001600160a01b038516600482015260240161101e565b61261c61210a565b5f51602061336d5f395f51905f525f80612635846126fd565b9150915081612645576012612647565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b61268c61210a565b5f51602061330d5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036126c58482613252565b5060048101610af18382613252565b8051156126e45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b038716916127439161323c565b5f60405180830381855afa9150503d805f811461277b576040519150601f19603f3d011682016040523d82523d5f602084013e612780565b606091505b509150915081801561279457506020815110155b156127c7575f818060200190518101906127ae9190612bde565b905060ff81116127c5576001969095509350505050565b505b505f9485945092505050565b5f602082840312156127e3575f5ffd5b81356001600160e01b031981168114610aae575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610aae60208301846127fa565b5f6020828403121561284a575f5ffd5b5035919050565b6001600160a01b038116811461162d575f5ffd5b5f5f60408385031215612876575f5ffd5b823561288181612851565b946020939093013593505050565b634e487b7160e01b5f52602160045260245ffd5b600381106128bf57634e487b7160e01b5f52602160045260245ffd5b9052565b602081526128d56020820183516128a3565b602082015160408201525f604083015160608084015261103f60808401826127fa565b5f5f60408385031215612909575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561292a575f5ffd5b833561293581612851565b9250602084013561294581612851565b929592945050506040919091013590565b5f5f60408385031215612967575f5ffd5b82359150602083013561297981612851565b809150509250929050565b5f60208284031215612994575f5ffd5b8135610aae81612851565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126129c2575f5ffd5b8135602083015f5f6001600160401b038411156129e1576129e161299f565b50604051601f19601f85018116603f011681018181106001600160401b0382111715612a0f57612a0f61299f565b604052838152905080828401871015612a26575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f60408385031215612a53575f5ffd5b8235612a5e81612851565b915060208301356001600160401b03811115612a78575f5ffd5b612a84858286016129b3565b9150509250929050565b5f5f5f60608486031215612aa0575f5ffd5b833592506020840135612ab281612851565b91506040840135612ac281612851565b809150509250925092565b5f60608284031215612add575f5ffd5b50919050565b5f60208284031215612af3575f5ffd5b81356001600160401b03811115612b08575f5ffd5b61103f84828501612acd565b5f5f5f5f60808587031215612b27575f5ffd5b84356001600160401b03811115612b3c575f5ffd5b612b48878288016129b3565b94505060208501356001600160401b03811115612b63575f5ffd5b612b6f878288016129b3565b9350506040850135612b8081612851565b915060608501356001600160401b03811115612b9a575f5ffd5b612ba687828801612acd565b91505092959194509250565b5f5f60408385031215612bc3575f5ffd5b8235612bce81612851565b9150602083013561297981612851565b5f60208284031215612bee575f5ffd5b5051919050565b600181811c90821680612c0957607f821691505b602082108103612add57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561089057610890612c27565b80518015158114612c63575f5ffd5b919050565b5f60208284031215612c78575f5ffd5b610aae82612c54565b5f5f5f60608486031215612c93575f5ffd5b8351612c9e81612851565b60208501519093506001600160401b0381168114612cba575f5ffd5b9150612cc860408501612c54565b90509250925092565b612cdc8282516128a3565b602081015160208301525f60408201516060604085015261103f60608501826127fa565b60a081525f612d1260a0830188612cd1565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b6001600160a01b039390931683526020830191909152604082015260600190565b6003811061162d575f5ffd5b5f60608236031215612d7c575f5ffd5b604051606081016001600160401b0381118282101715612d9e57612d9e61299f565b6040528235612dac81612d60565b81526020838101359082015260408301356001600160401b03811115612dd0575f5ffd5b612ddc368286016129b3565b60408301525092915050565b602081525f610aae6020830184612cd1565b5f8135612e0681612d60565b612e1084826128a3565b5060208281013590840152604082013536839003601e19018112612e32575f5ffd5b82016020810190356001600160401b03811115612e4d575f5ffd5b803603821315612e5b575f5ffd5b60606040860152806060860152808260808701375f608082870101526080601f19601f8301168601019250505092915050565b60408152612ea36040820160ff8554166128a3565b600183015460608201525f60028401606060808401525f8154612ec581612bf5565b8060a0870152600182165f8114612ee35760018114612eff57612f30565b60ff19831660c088015260c082151560051b8801019350612f30565b845f5260205f205f5b83811015612f2757815489820160c00152600190910190602001612f08565b880160c0019450505b5050508381036020850152612f458186612dfa565b9695505050505050565b601f821115610a8b57805f5260205f20601f840160051c81016020851015612f745750805b601f840160051c820191505b81811015611b8c575f8155600101612f80565b6001600160401b03831115612faa57612faa61299f565b612fbe83612fb88354612bf5565b83612f4f565b5f601f841160018114612fef575f8515612fd85750838201355b5f19600387901b1c1916600186901b178355611b8c565b5f83815260208120601f198716915b8281101561301e5786850135825560209485019460019092019101612ffe565b508682101561303a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561305781612d60565b6003811061307357634e487b7160e01b5f52602160045260245ffd5b60ff1982541660ff8216811783555050602082013560018201556040820135601e198336030181126130a3575f5ffd5b820180356001600160401b038111156130ba575f5ffd5b6020820191508036038213156130ce575f5ffd5b610af1818360028601612f93565b8082018082111561089057610890612c27565b6001815b600184111561312a5780850481111561310e5761310e612c27565b600184161561311c57908102905b60019390931c9280026130f3565b935093915050565b5f8261314057506001610890565b8161314c57505f610890565b8160018114613162576002811461316c57613188565b6001915050610890565b60ff84111561317d5761317d612c27565b50506001821b610890565b5060208310610133831016604e8410600b84101617156131ab575081810a610890565b6131b75f1984846130ef565b805f19048211156131ca576131ca612c27565b029392505050565b5f610aae60ff841683613132565b5f602082840312156131f0575f5ffd5b8151610aae81612851565b634e487b7160e01b5f52601260045260245ffd5b5f60ff83168061322d57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f920191825250919050565b81516001600160401b0381111561326b5761326b61299f565b61327f816132798454612bf5565b84612f4f565b6020601f8211600181146132b1575f831561329a5750848201515b5f19600385901b1c1916600184901b178455611b8c565b5f84815260208120601f198516915b828110156132e057878501518255602094850194600190920191016132c0565b50848210156132fd57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220956370b520922652ce5fd0ab2fbc6dd17d3149760845197f6257148b55ec523464736f6c634300081c0033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3592 CODESIZE SUB DUP1 PUSH2 0x3592 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x32 SWAP2 PUSH2 0x11A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0xA0 MSTORE DUP2 AND PUSH1 0xC0 MSTORE PUSH2 0x4D PUSH2 0x54 JUMP JUMPDEST POP POP PUSH2 0x152 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xA4 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 0x103 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 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x103 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x136 DUP2 PUSH2 0x106 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x147 DUP2 PUSH2 0x106 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x33C2 PUSH2 0x1D0 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0xCAF ADD MSTORE PUSH2 0xD7F ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x7EA ADD MSTORE DUP2 DUP2 PUSH2 0xB77 ADD MSTORE DUP2 DUP2 PUSH2 0xC85 ADD MSTORE DUP2 DUP2 PUSH2 0xD4A ADD MSTORE DUP2 DUP2 PUSH2 0x13E3 ADD MSTORE DUP2 DUP2 PUSH2 0x1495 ADD MSTORE DUP2 DUP2 PUSH2 0x1A82 ADD MSTORE DUP2 DUP2 PUSH2 0x1B00 ADD MSTORE DUP2 DUP2 PUSH2 0x1BAA ADD MSTORE PUSH2 0x1C57 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x1899 ADD MSTORE DUP2 DUP2 PUSH2 0x18C2 ADD MSTORE PUSH2 0x1A25 ADD MSTORE PUSH2 0x33C2 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E553F65 GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xFBB12D07 EQ PUSH2 0x7A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xC2F09E2B EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA217FDDF GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xB740A83F EQ PUSH2 0x675 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x38D52E0F GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x57126D0D EQ PUSH2 0x526 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x227 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xB2CE411 EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0x1389C029 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F9 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7D3 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 0x295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D3 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x896 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x2828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x2F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x313 CALLDATASIZE PUSH1 0x4 PUSH2 0x2865 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x342 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x34B PUSH2 0x984 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x28C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x363 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x471CFE1A44BF1B786DB7D7104D51E6728ED7B90A35394AD7CC424ADF8ED16816 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x277 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F8 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0xAB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xAD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xB26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C8 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3DD PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A42 JUMP JUMPDEST PUSH2 0xC0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0xC29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xFEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x1047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x106D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x5BC CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x10A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x10EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x602 CALLDATASIZE PUSH1 0x4 PUSH2 0x2865 JUMP JUMPDEST PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD 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 0x642 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x651 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x113A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x661 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x670 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0x1146 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x680 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x68F CALLDATASIZE PUSH1 0x4 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x119C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2B14 JUMP JUMPDEST PUSH2 0x12C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6EC CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x13D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x70B CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x13E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x72A CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x1476 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x749 CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x1492 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x759 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x768 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BB2 JUMP JUMPDEST PUSH2 0x1528 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x778 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x90FF0FDC2A5E2F52090B2C8A629804C58D5C1156B5405C8437A00DA5ABBA239C DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 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 0x837 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 0x85B SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x890 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8D4 SWAP1 PUSH2 0x2BF5 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 0x900 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x922 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B 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 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH0 PUSH2 0x1571 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x96E DUP2 DUP6 DUP6 PUSH2 0x15C8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH1 0x1 PUSH2 0x15D5 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 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 SLOAD DUP3 SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9C3 JUMPI PUSH2 0x9C3 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH2 0x9D4 PUSH2 0x288F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH2 0x9F2 SWAP1 PUSH2 0x2BF5 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 0xA1E SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA69 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA40 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA69 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 0xA4C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA81 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 PUSH2 0x1630 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA9D DUP6 DUP3 DUP6 PUSH2 0x1690 JUMP JUMPDEST PUSH2 0xAA8 DUP6 DUP6 DUP6 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xADE DUP3 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0xAE7 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xAF1 DUP4 DUP4 PUSH2 0x1737 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xB20 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2C3B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB4F JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA8B DUP3 DUP3 PUSH2 0x17D8 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 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 0xBD1 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 0xBF5 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0xC01 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1851 JUMP JUMPDEST PUSH2 0xC12 PUSH2 0x188E JUMP JUMPDEST PUSH2 0xC1B DUP3 PUSH2 0x1934 JUMP JUMPDEST PUSH2 0xC25 DUP3 DUP3 PUSH2 0x195E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC32 PUSH2 0x1A1A JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH32 0x90FF0FDC2A5E2F52090B2C8A629804C58D5C1156B5405C8437A00DA5ABBA239C PUSH2 0xC6E DUP2 PUSH2 0x1623 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 0xCF7 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 0xD1B SWAP2 SWAP1 PUSH2 0x2C81 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD33 JUMPI POP 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 0xDC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD2 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1A 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 0xE3E SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 DUP3 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE68 JUMPI PUSH2 0xE68 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE79 JUMPI PUSH2 0xE79 PUSH2 0x288F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH2 0xE97 SWAP1 PUSH2 0x2BF5 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 0xEC3 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF0E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xEE5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF0E 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 0xEF1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 DUP6 PUSH2 0xF3C PUSH2 0xB59 JUMP JUMPDEST DUP7 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF5E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D00 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF79 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 0xF9D SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP PUSH2 0xFA8 DUP2 PUSH2 0x1A63 JUMP JUMPDEST PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xFDB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xFF5 DUP4 PUSH2 0xB74 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1027 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1031 DUP6 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x103F CALLER DUP6 DUP8 DUP5 PUSH2 0x1B93 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 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x10AE DUP4 PUSH2 0xB74 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x10D7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x10E1 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP1 POP PUSH2 0x103F CALLER DUP6 DUP4 DUP9 PUSH2 0x1B93 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8D4 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x96E DUP2 DUP6 DUP6 PUSH2 0x16DA JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH1 0x1 PUSH2 0x1571 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1151 DUP4 PUSH2 0x13E0 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x117A JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x1184 DUP7 PUSH2 0x978 JUMP JUMPDEST SWAP1 POP PUSH2 0x1193 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x1BA8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x471CFE1A44BF1B786DB7D7104D51E6728ED7B90A35394AD7CC424ADF8ED16816 PUSH2 0x11C6 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x11CF DUP3 PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x1205 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DE8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x122D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 PUSH0 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1262 SWAP3 SWAP2 SWAP1 PUSH2 0x2E8E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP2 PUSH0 PUSH2 0xAF1 DUP3 DUP3 PUSH2 0x304C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1281 DUP4 PUSH2 0x1492 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x12AA JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x12B4 DUP7 PUSH2 0x956 JUMP JUMPDEST SWAP1 POP PUSH2 0x1193 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x1BA8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1307 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1322 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1330 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x134E 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 0x1378 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1384 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1C47 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x13CA 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 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH0 PUSH2 0x15D5 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 0x143D 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 0x1461 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0x146D JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1CE3 JUMP JUMPDEST PUSH2 0x147F DUP3 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0x1488 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xAF1 DUP4 DUP4 PUSH2 0x17D8 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 0x14EF 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 0x1513 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0x151F JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1CF6 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 0xAAE PUSH2 0x157D PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x1588 SWAP1 PUSH1 0x1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x1593 PUSH0 PUSH1 0xA PUSH2 0x31D2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x15BF SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1D00 JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1D42 JUMP JUMPDEST PUSH0 PUSH2 0xAAE PUSH2 0x15E4 DUP3 PUSH1 0xA PUSH2 0x31D2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1610 SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x1618 PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x15BF SWAP1 PUSH1 0x1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x162D DUP2 CALLER PUSH2 0x1E25 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x1648 DUP5 PUSH2 0xAB5 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x169B DUP5 DUP5 PUSH2 0x1528 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xAF1 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x16CC JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH2 0xAF1 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1D42 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1703 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x172C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1750 DUP5 DUP5 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x17CF JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1785 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x17F1 DUP5 DUP5 PUSH2 0x106D JUMP JUMPDEST ISZERO PUSH2 0x17CF JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 PUSH2 0x187C PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x1887 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x890 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1914 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1908 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D 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 0x1932 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xC25 DUP2 PUSH2 0x1623 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 0x19B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x19B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2BDE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x19E0 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 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 PUSH2 0x1F84 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A6B PUSH2 0xB59 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 SWAP2 SWAP1 SWAP2 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 0x1AD9 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 0x1AFD SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF2B9FDB8 PUSH2 0x1B35 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B8C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B9F DUP5 DUP5 DUP5 DUP5 PUSH2 0x1FD9 JUMP JUMPDEST PUSH2 0xAF1 DUP3 PUSH2 0x1A63 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF3FEF3A3 PUSH2 0x1BDF PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C36 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2056 JUMP JUMPDEST PUSH2 0x1C4F PUSH2 0x210A JUMP JUMPDEST PUSH2 0x1CDA DUP5 DUP5 DUP5 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC55DAE63 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 0x1CB1 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 0x1CD5 SWAP2 SWAP1 PUSH2 0x31E0 JUMP JUMPDEST PUSH2 0x2153 JUMP JUMPDEST PUSH2 0xAF1 DUP2 PUSH2 0x21B0 JUMP JUMPDEST PUSH0 PUSH2 0x890 PUSH2 0x1CF0 DUP4 PUSH2 0x1047 JUMP JUMPDEST PUSH0 PUSH2 0x1571 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH2 0x1047 JUMP JUMPDEST PUSH0 PUSH2 0x1D2D PUSH2 0x1D0D DUP4 PUSH2 0x2231 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D28 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1D23 JUMPI PUSH2 0x1D23 PUSH2 0x31FB JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1D38 DUP7 DUP7 DUP7 PUSH2 0x225D JUMP JUMPDEST PUSH2 0x1193 SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1D79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1DA2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E 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 0x1B8C 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 0x1E16 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E2F DUP3 DUP3 PUSH2 0x106D JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1E98 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1E8D SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1EF5 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 0x1ED7 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F 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 0x1F13 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1F31 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 0x1F76 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1F8D DUP3 PUSH2 0x2313 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 0x1FD1 JUMPI PUSH2 0xA8B DUP3 DUP3 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0xC25 PUSH2 0x23DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1FFE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x2008 DUP5 DUP4 PUSH2 0x2465 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1E16 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x2082 JUMPI PUSH2 0x2082 DUP5 DUP8 DUP5 PUSH2 0x1690 JUMP JUMPDEST PUSH2 0x208C DUP5 DUP4 PUSH2 0x2499 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x20A2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x24CD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x20FA 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 POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x215B PUSH2 0x210A JUMP JUMPDEST PUSH2 0x2163 PUSH2 0x24FE JUMP JUMPDEST PUSH2 0x216B PUSH2 0x24FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2194 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0x219D DUP2 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x21A7 DUP5 DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH2 0xAF1 DUP3 PUSH2 0x2529 JUMP JUMPDEST PUSH2 0x21B8 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x21C1 DUP2 PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x21F7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DE8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x220D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x221F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH0 DUP2 DUP2 PUSH2 0xA8B SWAP2 SWAP1 PUSH2 0x304C JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2246 JUMPI PUSH2 0x2246 PUSH2 0x288F JUMP JUMPDEST PUSH2 0x2250 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x2291 JUMPI DUP4 DUP3 DUP2 PUSH2 0x2287 JUMPI PUSH2 0x2287 PUSH2 0x31FB JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xAAE JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x22A8 JUMPI PUSH2 0x22A8 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x253B 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x2348 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 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D 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 PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2392 SWAP2 SWAP1 PUSH2 0x323C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x23CA 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 0x23CF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1193 DUP6 DUP4 DUP4 PUSH2 0x254C JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xAF1 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x25A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x248E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xC25 PUSH0 DUP4 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xC25 DUP3 PUSH0 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xA8B SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x2433 JUMP JUMPDEST PUSH2 0x1932 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x250E PUSH2 0x210A JUMP JUMPDEST PUSH2 0x162D DUP2 PUSH2 0x2614 JUMP JUMPDEST PUSH2 0x251F PUSH2 0x210A JUMP JUMPDEST PUSH2 0xC25 DUP3 DUP3 PUSH2 0x2684 JUMP JUMPDEST PUSH2 0x2531 PUSH2 0x210A JUMP JUMPDEST PUSH2 0xC25 PUSH0 DUP3 PUSH2 0x1737 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2561 JUMPI PUSH2 0x255C DUP3 PUSH2 0x26D4 JUMP JUMPDEST PUSH2 0xAAE JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2578 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x25A1 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 0x101E JUMP JUMPDEST POP DUP1 PUSH2 0xAAE JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x25C7 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x25DE JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x25EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xAF1 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 0x101E JUMP JUMPDEST PUSH2 0x261C PUSH2 0x210A JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x2635 DUP5 PUSH2 0x26FD JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2645 JUMPI PUSH1 0x12 PUSH2 0x2647 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 0x268C PUSH2 0x210A JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x26C5 DUP5 DUP3 PUSH2 0x3252 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xAF1 DUP4 DUP3 PUSH2 0x3252 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x26E4 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x2743 SWAP2 PUSH2 0x323C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x277B 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 0x2780 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2794 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x27C7 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x27AE SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x27C5 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xAAE JUMPI PUSH0 PUSH0 REVERT 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 0xAAE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x27FA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x284A 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 0x162D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2876 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2881 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x28BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH2 0x28D5 PUSH1 0x20 DUP3 ADD DUP4 MLOAD PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH2 0x103F PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x27FA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2909 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 0x292A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2935 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2945 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2967 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2979 DUP2 PUSH2 0x2851 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2994 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAAE DUP2 PUSH2 0x2851 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 0x29C2 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 0x29E1 JUMPI PUSH2 0x29E1 PUSH2 0x299F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x2A0F JUMPI PUSH2 0x2A0F PUSH2 0x299F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x2A26 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 0x2A53 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A5E DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A84 DUP6 DUP3 DUP7 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AA0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2AB2 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2AC2 DUP2 PUSH2 0x2851 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ADD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AF3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B08 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x103F DUP5 DUP3 DUP6 ADD PUSH2 0x2ACD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B27 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B3C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2B48 DUP8 DUP3 DUP9 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B63 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2B6F DUP8 DUP3 DUP9 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2B80 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B9A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2BA6 DUP8 DUP3 DUP9 ADD PUSH2 0x2ACD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BC3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2BCE DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2979 DUP2 PUSH2 0x2851 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BEE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2C09 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2ADD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0x890 JUMPI PUSH2 0x890 PUSH2 0x2C27 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C63 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAAE DUP3 PUSH2 0x2C54 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C93 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x2C9E DUP2 PUSH2 0x2851 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2CBA JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH2 0x2CC8 PUSH1 0x40 DUP6 ADD PUSH2 0x2C54 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2CDC DUP3 DUP3 MLOAD PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x103F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x27FA JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x2D12 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x2CD1 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 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 PUSH1 0x3 DUP2 LT PUSH2 0x162D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x60 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x2D7C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D9E JUMPI PUSH2 0x2D9E PUSH2 0x299F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH2 0x2DAC DUP2 PUSH2 0x2D60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DD0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2DDC CALLDATASIZE DUP3 DUP7 ADD PUSH2 0x29B3 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xAAE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2CD1 JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD PUSH2 0x2E06 DUP2 PUSH2 0x2D60 JUMP JUMPDEST PUSH2 0x2E10 DUP5 DUP3 PUSH2 0x28A3 JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD CALLDATASIZE DUP4 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x2E32 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E4D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x2E5B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP7 ADD MSTORE DUP1 DUP3 PUSH1 0x80 DUP8 ADD CALLDATACOPY PUSH0 PUSH1 0x80 DUP3 DUP8 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP7 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH2 0x2EA3 PUSH1 0x40 DUP3 ADD PUSH1 0xFF DUP6 SLOAD AND PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH0 PUSH1 0x2 DUP5 ADD PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH0 DUP2 SLOAD PUSH2 0x2EC5 DUP2 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 DUP3 AND PUSH0 DUP2 EQ PUSH2 0x2EE3 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2EFF JUMPI PUSH2 0x2F30 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xC0 DUP3 ISZERO ISZERO PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP PUSH2 0x2F30 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F27 JUMPI DUP2 SLOAD DUP10 DUP3 ADD PUSH1 0xC0 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x2F08 JUMP JUMPDEST DUP9 ADD PUSH1 0xC0 ADD SWAP5 POP POP JUMPDEST POP POP POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x2F45 DUP2 DUP7 PUSH2 0x2DFA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xA8B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2F74 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B8C JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F80 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2FAA JUMPI PUSH2 0x2FAA PUSH2 0x299F JUMP JUMPDEST PUSH2 0x2FBE DUP4 PUSH2 0x2FB8 DUP4 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST DUP4 PUSH2 0x2F4F JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2FEF JUMPI PUSH0 DUP6 ISZERO PUSH2 0x2FD8 JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1B8C JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x301E JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2FFE JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x303A JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x2D60 JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x3073 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF NOT DUP3 SLOAD AND PUSH1 0xFF DUP3 AND DUP2 OR DUP4 SSTORE POP POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x30A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x30BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x30CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAF1 DUP2 DUP4 PUSH1 0x2 DUP7 ADD PUSH2 0x2F93 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x890 JUMPI PUSH2 0x890 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x312A JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x310E JUMPI PUSH2 0x310E PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x311C JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x30F3 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x3140 JUMPI POP PUSH1 0x1 PUSH2 0x890 JUMP JUMPDEST DUP2 PUSH2 0x314C JUMPI POP PUSH0 PUSH2 0x890 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x3162 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x316C JUMPI PUSH2 0x3188 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x317D JUMPI PUSH2 0x317D PUSH2 0x2C27 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x890 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x31AB JUMPI POP DUP2 DUP2 EXP PUSH2 0x890 JUMP JUMPDEST PUSH2 0x31B7 PUSH0 NOT DUP5 DUP5 PUSH2 0x30EF JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x31CA JUMPI PUSH2 0x31CA PUSH2 0x2C27 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAAE PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x3132 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xAAE DUP2 PUSH2 0x2851 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 0x322D 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 PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x326B JUMPI PUSH2 0x326B PUSH2 0x299F JUMP JUMPDEST PUSH2 0x327F DUP2 PUSH2 0x3279 DUP5 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST DUP5 PUSH2 0x2F4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x32B1 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x329A 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 0x1B8C JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x32E0 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x32C0 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x32FD 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 PUSH4 0x70B52092 0x26 MSTORE 0xCE PUSH0 0xD0 0xAB 0x2F 0xBC PUSH14 0xD17D3149760845197F6257148B55 0xEC MSTORE CALLVALUE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1141:4729:50:-:0;;;1171:4:8;1128:48;;1925:159:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1995:17:50;;;;;2018:33;;;;2057:22;:20;:22::i;:::-;1925:159;;1141:4729;;7711:422:7;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:7;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:7;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:7;-1:-1:-1;;;;;8035:33:7;;;;;8087:29;;767:50:75;;;8087:29:7;;755:2:75;740:18;8087:29:7;;;;;;;7981:146;7760:373;7711:422::o;14:144:75:-;-1:-1:-1;;;;;102:31:75;;92:42;;82:70;;148:1;145;138:12;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:75;506:25;540:46;:::i;:::-;605:7;595:17;;;163:455;;;;;:::o;623:200::-;1141:4729:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_2276":{"entryPoint":null,"id":2276,"parameterSlots":0,"returnSlots":0},"@GUARDIAN_ROLE_18371":{"entryPoint":null,"id":18371,"parameterSlots":0,"returnSlots":0},"@HARVEST_ROLE_14347":{"entryPoint":null,"id":14347,"parameterSlots":0,"returnSlots":0},"@LP_ROLE_18366":{"entryPoint":null,"id":18366,"parameterSlots":0,"returnSlots":0},"@SWAP_ADMIN_ROLE_14352":{"entryPoint":null,"id":14352,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@__AccessControl_init_2311":{"entryPoint":null,"id":2311,"parameterSlots":0,"returnSlots":0},"@__CompoundV3ERC4626_init_14454":{"entryPoint":7239,"id":14454,"parameterSlots":4,"returnSlots":0},"@__CompoundV3ERC4626_init_unchained_14472":{"entryPoint":8624,"id":14472,"parameterSlots":1,"returnSlots":0},"@__ERC20_init_3114":{"entryPoint":9495,"id":3114,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3142":{"entryPoint":9860,"id":3142,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3757":{"entryPoint":9478,"id":3757,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3795":{"entryPoint":9748,"id":3795,"parameterSlots":1,"returnSlots":0},"@__PermissionedERC4626_init_18426":{"entryPoint":8531,"id":18426,"parameterSlots":4,"returnSlots":0},"@__PermissionedERC4626_init_unchained_18439":{"entryPoint":9513,"id":18439,"parameterSlots":1,"returnSlots":0},"@__UUPSUpgradeable_init_2918":{"entryPoint":9470,"id":2918,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":5576,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":7490,"id":3614,"parameterSlots":4,"returnSlots":0},"@_authorizeUpgrade_18449":{"entryPoint":6452,"id":18449,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":9369,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":9640,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkInitializing_2786":{"entryPoint":8458,"id":2786,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":9183,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":6682,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":6286,"id":2978,"parameterSlots":0,"returnSlots":0},"@_checkRole_2377":{"entryPoint":5667,"id":2377,"parameterSlots":1,"returnSlots":0},"@_checkRole_2398":{"entryPoint":7717,"id":2398,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":5489,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":5589,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_deposit_14634":{"entryPoint":7059,"id":14634,"parameterSlots":4,"returnSlots":0},"@_deposit_4364":{"entryPoint":8153,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getAccessControlStorage_2294":{"entryPoint":null,"id":2294,"parameterSlots":0,"returnSlots":1},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"@_grantRole_2563":{"entryPoint":5943,"id":2563,"parameterSlots":2,"returnSlots":1},"@_isInitializing_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":1},"@_mint_3495":{"entryPoint":9317,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":9940,"id":9351,"parameterSlots":1,"returnSlots":0},"@_revokeRole_2609":{"entryPoint":6104,"id":2609,"parameterSlots":2,"returnSlots":1},"@_setImplementation_7796":{"entryPoint":8979,"id":7796,"parameterSlots":1,"returnSlots":0},"@_setRoleAdmin_2516":{"entryPoint":5680,"id":2516,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_3662":{"entryPoint":5776,"id":3662,"parameterSlots":3,"returnSlots":0},"@_supply_14663":{"entryPoint":6755,"id":14663,"parameterSlots":1,"returnSlots":0},"@_transfer_3370":{"entryPoint":5850,"id":3370,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3862":{"entryPoint":9981,"id":3862,"parameterSlots":1,"returnSlots":2},"@_update_3462":{"entryPoint":7774,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":6494,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdraw_14608":{"entryPoint":7080,"id":14608,"parameterSlots":5,"returnSlots":0},"@_withdraw_4418":{"entryPoint":8278,"id":4418,"parameterSlots":5,"returnSlots":0},"@allowance_3267":{"entryPoint":5416,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2401,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":2905,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":4167,"id":3219,"parameterSlots":1,"returnSlots":1},"@convertToAssets_3957":{"entryPoint":2390,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":5077,"id":3941,"parameterSlots":1,"returnSlots":1},"@decimals_3884":{"entryPoint":2807,"id":3884,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":4074,"id":4126,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":9078,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_2419":{"entryPoint":2741,"id":2419,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_14770":{"entryPoint":2436,"id":14770,"parameterSlots":0,"returnSlots":1},"@grantRole_2438":{"entryPoint":2773,"id":2438,"parameterSlots":2,"returnSlots":0},"@harvestRewards_14737":{"entryPoint":3140,"id":14737,"parameterSlots":1,"returnSlots":0},"@hasRole_2364":{"entryPoint":4205,"id":2364,"parameterSlots":2,"returnSlots":1},"@initialize_14424":{"entryPoint":4803,"id":14424,"parameterSlots":4,"returnSlots":0},"@maxDeposit_14535":{"entryPoint":2932,"id":14535,"parameterSlots":1,"returnSlots":1},"@maxDeposit_18488":{"entryPoint":6225,"id":18488,"parameterSlots":1,"returnSlots":1},"@maxDeposit_3972":{"entryPoint":null,"id":3972,"parameterSlots":1,"returnSlots":1},"@maxMint_14556":{"entryPoint":null,"id":14556,"parameterSlots":1,"returnSlots":1},"@maxMint_18511":{"entryPoint":null,"id":18511,"parameterSlots":1,"returnSlots":1},"@maxMint_3987":{"entryPoint":null,"id":3987,"parameterSlots":1,"returnSlots":1},"@maxRedeem_14514":{"entryPoint":5266,"id":14514,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":7414,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_14493":{"entryPoint":5088,"id":14493,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":7395,"id":4005,"parameterSlots":1,"returnSlots":1},"@mint_4170":{"entryPoint":4259,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":8797,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":7424,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":2198,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":9531,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":4410,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2424,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":3113,"id":2936,"parameterSlots":0,"returnSlots":1},"@redeem_4264":{"entryPoint":4726,"id":4264,"parameterSlots":3,"returnSlots":1},"@renounceRole_2480":{"entryPoint":2854,"id":2480,"parameterSlots":2,"returnSlots":0},"@revokeRole_2457":{"entryPoint":5238,"id":2457,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":9214,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":9421,"id":8729,"parameterSlots":3,"returnSlots":0},"@setRoleAdmin_18465":{"entryPoint":2679,"id":18465,"parameterSlots":2,"returnSlots":0},"@setSwapConfig_14761":{"entryPoint":4508,"id":14761,"parameterSlots":1,"returnSlots":0},"@supportsInterface_2339":{"entryPoint":2144,"id":2339,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4512":{"entryPoint":null,"id":4512,"parameterSlots":1,"returnSlots":1},"@symbol_3174":{"entryPoint":4335,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_14572":{"entryPoint":2003,"id":14572,"parameterSlots":0,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":2704,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":4397,"id":3243,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_11308":{"entryPoint":8753,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":3082,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":8068,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":9548,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdraw_4217":{"entryPoint":4422,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_bool_fromMemory":{"entryPoint":11348,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":10675,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_SwapConfig_calldata":{"entryPoint":10957,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":10628,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":12768,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":11186,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":10520,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":10818,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":10341,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory":{"entryPoint":11393,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":11368,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":10582,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":10488,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":10195,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_struct$_SwapConfig_$624_calldata_ptr":{"entryPoint":11028,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptr":{"entryPoint":10979,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":10298,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":11230,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":10894,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_enum_SwapProtocol":{"entryPoint":10403,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":10234,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":11473,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig_calldata":{"entryPoint":11770,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12860,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11583,"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_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":10280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed":{"entryPoint":11752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":10435,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":11520,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_storage_t_struct$_SwapConfig_$624_calldata_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":11918,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12508,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":11323,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":12527,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":12754,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":12594,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":12111,"id":null,"parameterSlots":3,"returnSlots":0},"convert_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_memory_ptr":{"entryPoint":11628,"id":null,"parameterSlots":1,"returnSlots":1},"copy_byte_array_to_storage_from_bytes_calldata_to_bytes":{"entryPoint":12179,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":12882,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":11253,"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":12815,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":11303,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":12795,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":10383,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10655,"id":null,"parameterSlots":0,"returnSlots":0},"update_storage_value_offset_0_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_storage":{"entryPoint":12364,"id":null,"parameterSlots":2,"returnSlots":0},"validator_revert_address":{"entryPoint":10321,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_enum_SwapProtocol":{"entryPoint":11616,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:24923:75","nodeType":"YulBlock","src":"0:24923:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"265:217:75","nodeType":"YulBlock","src":"265:217:75","statements":[{"body":{"nativeSrc":"311:16:75","nodeType":"YulBlock","src":"311:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"320:1:75","nodeType":"YulLiteral","src":"320:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"323:1:75","nodeType":"YulLiteral","src":"323:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"313:6:75","nodeType":"YulIdentifier","src":"313:6:75"},"nativeSrc":"313:12:75","nodeType":"YulFunctionCall","src":"313:12:75"},"nativeSrc":"313:12:75","nodeType":"YulExpressionStatement","src":"313:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"286:7:75","nodeType":"YulIdentifier","src":"286:7:75"},{"name":"headStart","nativeSrc":"295:9:75","nodeType":"YulIdentifier","src":"295:9:75"}],"functionName":{"name":"sub","nativeSrc":"282:3:75","nodeType":"YulIdentifier","src":"282:3:75"},"nativeSrc":"282:23:75","nodeType":"YulFunctionCall","src":"282:23:75"},{"kind":"number","nativeSrc":"307:2:75","nodeType":"YulLiteral","src":"307:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"278:3:75","nodeType":"YulIdentifier","src":"278:3:75"},"nativeSrc":"278:32:75","nodeType":"YulFunctionCall","src":"278:32:75"},"nativeSrc":"275:52:75","nodeType":"YulIf","src":"275:52:75"},{"nativeSrc":"336:36:75","nodeType":"YulVariableDeclaration","src":"336:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"362:9:75","nodeType":"YulIdentifier","src":"362:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"349:12:75","nodeType":"YulIdentifier","src":"349:12:75"},"nativeSrc":"349:23:75","nodeType":"YulFunctionCall","src":"349:23:75"},"variables":[{"name":"value","nativeSrc":"340:5:75","nodeType":"YulTypedName","src":"340:5:75","type":""}]},{"body":{"nativeSrc":"436:16:75","nodeType":"YulBlock","src":"436:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"445:1:75","nodeType":"YulLiteral","src":"445:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"448:1:75","nodeType":"YulLiteral","src":"448:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"438:6:75","nodeType":"YulIdentifier","src":"438:6:75"},"nativeSrc":"438:12:75","nodeType":"YulFunctionCall","src":"438:12:75"},"nativeSrc":"438:12:75","nodeType":"YulExpressionStatement","src":"438:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"394:5:75","nodeType":"YulIdentifier","src":"394:5:75"},{"arguments":[{"name":"value","nativeSrc":"405:5:75","nodeType":"YulIdentifier","src":"405:5:75"},{"arguments":[{"kind":"number","nativeSrc":"416:3:75","nodeType":"YulLiteral","src":"416:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"421:10:75","nodeType":"YulLiteral","src":"421:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"412:3:75","nodeType":"YulIdentifier","src":"412:3:75"},"nativeSrc":"412:20:75","nodeType":"YulFunctionCall","src":"412:20:75"}],"functionName":{"name":"and","nativeSrc":"401:3:75","nodeType":"YulIdentifier","src":"401:3:75"},"nativeSrc":"401:32:75","nodeType":"YulFunctionCall","src":"401:32:75"}],"functionName":{"name":"eq","nativeSrc":"391:2:75","nodeType":"YulIdentifier","src":"391:2:75"},"nativeSrc":"391:43:75","nodeType":"YulFunctionCall","src":"391:43:75"}],"functionName":{"name":"iszero","nativeSrc":"384:6:75","nodeType":"YulIdentifier","src":"384:6:75"},"nativeSrc":"384:51:75","nodeType":"YulFunctionCall","src":"384:51:75"},"nativeSrc":"381:71:75","nodeType":"YulIf","src":"381:71:75"},{"nativeSrc":"461:15:75","nodeType":"YulAssignment","src":"461:15:75","value":{"name":"value","nativeSrc":"471:5:75","nodeType":"YulIdentifier","src":"471:5:75"},"variableNames":[{"name":"value0","nativeSrc":"461:6:75","nodeType":"YulIdentifier","src":"461:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"196:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"231:9:75","nodeType":"YulTypedName","src":"231:9:75","type":""},{"name":"dataEnd","nativeSrc":"242:7:75","nodeType":"YulTypedName","src":"242:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"254:6:75","nodeType":"YulTypedName","src":"254:6:75","type":""}],"src":"196:286:75"},{"body":{"nativeSrc":"582:92:75","nodeType":"YulBlock","src":"582:92:75","statements":[{"nativeSrc":"592:26:75","nodeType":"YulAssignment","src":"592:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"604:9:75","nodeType":"YulIdentifier","src":"604:9:75"},{"kind":"number","nativeSrc":"615:2:75","nodeType":"YulLiteral","src":"615:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"600:3:75","nodeType":"YulIdentifier","src":"600:3:75"},"nativeSrc":"600:18:75","nodeType":"YulFunctionCall","src":"600:18:75"},"variableNames":[{"name":"tail","nativeSrc":"592:4:75","nodeType":"YulIdentifier","src":"592:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"634:9:75","nodeType":"YulIdentifier","src":"634:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"659:6:75","nodeType":"YulIdentifier","src":"659:6:75"}],"functionName":{"name":"iszero","nativeSrc":"652:6:75","nodeType":"YulIdentifier","src":"652:6:75"},"nativeSrc":"652:14:75","nodeType":"YulFunctionCall","src":"652:14:75"}],"functionName":{"name":"iszero","nativeSrc":"645:6:75","nodeType":"YulIdentifier","src":"645:6:75"},"nativeSrc":"645:22:75","nodeType":"YulFunctionCall","src":"645:22:75"}],"functionName":{"name":"mstore","nativeSrc":"627:6:75","nodeType":"YulIdentifier","src":"627:6:75"},"nativeSrc":"627:41:75","nodeType":"YulFunctionCall","src":"627:41:75"},"nativeSrc":"627:41:75","nodeType":"YulExpressionStatement","src":"627:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"487:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"551:9:75","nodeType":"YulTypedName","src":"551:9:75","type":""},{"name":"value0","nativeSrc":"562:6:75","nodeType":"YulTypedName","src":"562:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"573:4:75","nodeType":"YulTypedName","src":"573:4:75","type":""}],"src":"487:187:75"},{"body":{"nativeSrc":"729:239:75","nodeType":"YulBlock","src":"729:239:75","statements":[{"nativeSrc":"739:26:75","nodeType":"YulVariableDeclaration","src":"739:26:75","value":{"arguments":[{"name":"value","nativeSrc":"759:5:75","nodeType":"YulIdentifier","src":"759:5:75"}],"functionName":{"name":"mload","nativeSrc":"753:5:75","nodeType":"YulIdentifier","src":"753:5:75"},"nativeSrc":"753:12:75","nodeType":"YulFunctionCall","src":"753:12:75"},"variables":[{"name":"length","nativeSrc":"743:6:75","nodeType":"YulTypedName","src":"743:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"781:3:75","nodeType":"YulIdentifier","src":"781:3:75"},{"name":"length","nativeSrc":"786:6:75","nodeType":"YulIdentifier","src":"786:6:75"}],"functionName":{"name":"mstore","nativeSrc":"774:6:75","nodeType":"YulIdentifier","src":"774:6:75"},"nativeSrc":"774:19:75","nodeType":"YulFunctionCall","src":"774:19:75"},"nativeSrc":"774:19:75","nodeType":"YulExpressionStatement","src":"774:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"812:3:75","nodeType":"YulIdentifier","src":"812:3:75"},{"kind":"number","nativeSrc":"817:4:75","nodeType":"YulLiteral","src":"817:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"808:3:75","nodeType":"YulIdentifier","src":"808:3:75"},"nativeSrc":"808:14:75","nodeType":"YulFunctionCall","src":"808:14:75"},{"arguments":[{"name":"value","nativeSrc":"828:5:75","nodeType":"YulIdentifier","src":"828:5:75"},{"kind":"number","nativeSrc":"835:4:75","nodeType":"YulLiteral","src":"835:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"824:3:75","nodeType":"YulIdentifier","src":"824:3:75"},"nativeSrc":"824:16:75","nodeType":"YulFunctionCall","src":"824:16:75"},{"name":"length","nativeSrc":"842:6:75","nodeType":"YulIdentifier","src":"842:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"802:5:75","nodeType":"YulIdentifier","src":"802:5:75"},"nativeSrc":"802:47:75","nodeType":"YulFunctionCall","src":"802:47:75"},"nativeSrc":"802:47:75","nodeType":"YulExpressionStatement","src":"802:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"873:3:75","nodeType":"YulIdentifier","src":"873:3:75"},{"name":"length","nativeSrc":"878:6:75","nodeType":"YulIdentifier","src":"878:6:75"}],"functionName":{"name":"add","nativeSrc":"869:3:75","nodeType":"YulIdentifier","src":"869:3:75"},"nativeSrc":"869:16:75","nodeType":"YulFunctionCall","src":"869:16:75"},{"kind":"number","nativeSrc":"887:4:75","nodeType":"YulLiteral","src":"887:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"865:3:75","nodeType":"YulIdentifier","src":"865:3:75"},"nativeSrc":"865:27:75","nodeType":"YulFunctionCall","src":"865:27:75"},{"kind":"number","nativeSrc":"894:1:75","nodeType":"YulLiteral","src":"894:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"858:6:75","nodeType":"YulIdentifier","src":"858:6:75"},"nativeSrc":"858:38:75","nodeType":"YulFunctionCall","src":"858:38:75"},"nativeSrc":"858:38:75","nodeType":"YulExpressionStatement","src":"858:38:75"},{"nativeSrc":"905:57:75","nodeType":"YulAssignment","src":"905:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"920:3:75","nodeType":"YulIdentifier","src":"920:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"933:6:75","nodeType":"YulIdentifier","src":"933:6:75"},{"kind":"number","nativeSrc":"941:2:75","nodeType":"YulLiteral","src":"941:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"929:3:75","nodeType":"YulIdentifier","src":"929:3:75"},"nativeSrc":"929:15:75","nodeType":"YulFunctionCall","src":"929:15:75"},{"arguments":[{"kind":"number","nativeSrc":"950:2:75","nodeType":"YulLiteral","src":"950:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"946:3:75","nodeType":"YulIdentifier","src":"946:3:75"},"nativeSrc":"946:7:75","nodeType":"YulFunctionCall","src":"946:7:75"}],"functionName":{"name":"and","nativeSrc":"925:3:75","nodeType":"YulIdentifier","src":"925:3:75"},"nativeSrc":"925:29:75","nodeType":"YulFunctionCall","src":"925:29:75"}],"functionName":{"name":"add","nativeSrc":"916:3:75","nodeType":"YulIdentifier","src":"916:3:75"},"nativeSrc":"916:39:75","nodeType":"YulFunctionCall","src":"916:39:75"},{"kind":"number","nativeSrc":"957:4:75","nodeType":"YulLiteral","src":"957:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"912:3:75","nodeType":"YulIdentifier","src":"912:3:75"},"nativeSrc":"912:50:75","nodeType":"YulFunctionCall","src":"912:50:75"},"variableNames":[{"name":"end","nativeSrc":"905:3:75","nodeType":"YulIdentifier","src":"905:3:75"}]}]},"name":"abi_encode_string","nativeSrc":"679:289:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"706:5:75","nodeType":"YulTypedName","src":"706:5:75","type":""},{"name":"pos","nativeSrc":"713:3:75","nodeType":"YulTypedName","src":"713:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"721:3:75","nodeType":"YulTypedName","src":"721:3:75","type":""}],"src":"679:289:75"},{"body":{"nativeSrc":"1094:99:75","nodeType":"YulBlock","src":"1094:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1111:9:75","nodeType":"YulIdentifier","src":"1111:9:75"},{"kind":"number","nativeSrc":"1122:2:75","nodeType":"YulLiteral","src":"1122:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1104:6:75","nodeType":"YulIdentifier","src":"1104:6:75"},"nativeSrc":"1104:21:75","nodeType":"YulFunctionCall","src":"1104:21:75"},"nativeSrc":"1104:21:75","nodeType":"YulExpressionStatement","src":"1104:21:75"},{"nativeSrc":"1134:53:75","nodeType":"YulAssignment","src":"1134:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"1160:6:75","nodeType":"YulIdentifier","src":"1160:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"1172:9:75","nodeType":"YulIdentifier","src":"1172:9:75"},{"kind":"number","nativeSrc":"1183:2:75","nodeType":"YulLiteral","src":"1183:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1168:3:75","nodeType":"YulIdentifier","src":"1168:3:75"},"nativeSrc":"1168:18:75","nodeType":"YulFunctionCall","src":"1168:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"1142:17:75","nodeType":"YulIdentifier","src":"1142:17:75"},"nativeSrc":"1142:45:75","nodeType":"YulFunctionCall","src":"1142:45:75"},"variableNames":[{"name":"tail","nativeSrc":"1134:4:75","nodeType":"YulIdentifier","src":"1134:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"973:220:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1063:9:75","nodeType":"YulTypedName","src":"1063:9:75","type":""},{"name":"value0","nativeSrc":"1074:6:75","nodeType":"YulTypedName","src":"1074:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1085:4:75","nodeType":"YulTypedName","src":"1085:4:75","type":""}],"src":"973:220:75"},{"body":{"nativeSrc":"1268:156:75","nodeType":"YulBlock","src":"1268:156:75","statements":[{"body":{"nativeSrc":"1314:16:75","nodeType":"YulBlock","src":"1314:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:75","nodeType":"YulLiteral","src":"1323:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:75","nodeType":"YulLiteral","src":"1326:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:75","nodeType":"YulIdentifier","src":"1316:6:75"},"nativeSrc":"1316:12:75","nodeType":"YulFunctionCall","src":"1316:12:75"},"nativeSrc":"1316:12:75","nodeType":"YulExpressionStatement","src":"1316:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1289:7:75","nodeType":"YulIdentifier","src":"1289:7:75"},{"name":"headStart","nativeSrc":"1298:9:75","nodeType":"YulIdentifier","src":"1298:9:75"}],"functionName":{"name":"sub","nativeSrc":"1285:3:75","nodeType":"YulIdentifier","src":"1285:3:75"},"nativeSrc":"1285:23:75","nodeType":"YulFunctionCall","src":"1285:23:75"},{"kind":"number","nativeSrc":"1310:2:75","nodeType":"YulLiteral","src":"1310:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1281:3:75","nodeType":"YulIdentifier","src":"1281:3:75"},"nativeSrc":"1281:32:75","nodeType":"YulFunctionCall","src":"1281:32:75"},"nativeSrc":"1278:52:75","nodeType":"YulIf","src":"1278:52:75"},{"nativeSrc":"1339:14:75","nodeType":"YulVariableDeclaration","src":"1339:14:75","value":{"kind":"number","nativeSrc":"1352:1:75","nodeType":"YulLiteral","src":"1352:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1343:5:75","nodeType":"YulTypedName","src":"1343:5:75","type":""}]},{"nativeSrc":"1362:32:75","nodeType":"YulAssignment","src":"1362:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1384:9:75","nodeType":"YulIdentifier","src":"1384:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1371:12:75","nodeType":"YulIdentifier","src":"1371:12:75"},"nativeSrc":"1371:23:75","nodeType":"YulFunctionCall","src":"1371:23:75"},"variableNames":[{"name":"value","nativeSrc":"1362:5:75","nodeType":"YulIdentifier","src":"1362:5:75"}]},{"nativeSrc":"1403:15:75","nodeType":"YulAssignment","src":"1403:15:75","value":{"name":"value","nativeSrc":"1413:5:75","nodeType":"YulIdentifier","src":"1413:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1403:6:75","nodeType":"YulIdentifier","src":"1403:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1198:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1234:9:75","nodeType":"YulTypedName","src":"1234:9:75","type":""},{"name":"dataEnd","nativeSrc":"1245:7:75","nodeType":"YulTypedName","src":"1245:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1257:6:75","nodeType":"YulTypedName","src":"1257:6:75","type":""}],"src":"1198:226:75"},{"body":{"nativeSrc":"1474:86:75","nodeType":"YulBlock","src":"1474:86:75","statements":[{"body":{"nativeSrc":"1538:16:75","nodeType":"YulBlock","src":"1538:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1547:1:75","nodeType":"YulLiteral","src":"1547:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1550:1:75","nodeType":"YulLiteral","src":"1550:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1540:6:75","nodeType":"YulIdentifier","src":"1540:6:75"},"nativeSrc":"1540:12:75","nodeType":"YulFunctionCall","src":"1540:12:75"},"nativeSrc":"1540:12:75","nodeType":"YulExpressionStatement","src":"1540:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1497:5:75","nodeType":"YulIdentifier","src":"1497:5:75"},{"arguments":[{"name":"value","nativeSrc":"1508:5:75","nodeType":"YulIdentifier","src":"1508:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1523:3:75","nodeType":"YulLiteral","src":"1523:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1528:1:75","nodeType":"YulLiteral","src":"1528:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1519:3:75","nodeType":"YulIdentifier","src":"1519:3:75"},"nativeSrc":"1519:11:75","nodeType":"YulFunctionCall","src":"1519:11:75"},{"kind":"number","nativeSrc":"1532:1:75","nodeType":"YulLiteral","src":"1532:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1515:3:75","nodeType":"YulIdentifier","src":"1515:3:75"},"nativeSrc":"1515:19:75","nodeType":"YulFunctionCall","src":"1515:19:75"}],"functionName":{"name":"and","nativeSrc":"1504:3:75","nodeType":"YulIdentifier","src":"1504:3:75"},"nativeSrc":"1504:31:75","nodeType":"YulFunctionCall","src":"1504:31:75"}],"functionName":{"name":"eq","nativeSrc":"1494:2:75","nodeType":"YulIdentifier","src":"1494:2:75"},"nativeSrc":"1494:42:75","nodeType":"YulFunctionCall","src":"1494:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1487:6:75","nodeType":"YulIdentifier","src":"1487:6:75"},"nativeSrc":"1487:50:75","nodeType":"YulFunctionCall","src":"1487:50:75"},"nativeSrc":"1484:70:75","nodeType":"YulIf","src":"1484:70:75"}]},"name":"validator_revert_address","nativeSrc":"1429:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1463:5:75","nodeType":"YulTypedName","src":"1463:5:75","type":""}],"src":"1429:131:75"},{"body":{"nativeSrc":"1652:280:75","nodeType":"YulBlock","src":"1652:280:75","statements":[{"body":{"nativeSrc":"1698:16:75","nodeType":"YulBlock","src":"1698:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1707:1:75","nodeType":"YulLiteral","src":"1707:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1710:1:75","nodeType":"YulLiteral","src":"1710:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1700:6:75","nodeType":"YulIdentifier","src":"1700:6:75"},"nativeSrc":"1700:12:75","nodeType":"YulFunctionCall","src":"1700:12:75"},"nativeSrc":"1700:12:75","nodeType":"YulExpressionStatement","src":"1700:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1673:7:75","nodeType":"YulIdentifier","src":"1673:7:75"},{"name":"headStart","nativeSrc":"1682:9:75","nodeType":"YulIdentifier","src":"1682:9:75"}],"functionName":{"name":"sub","nativeSrc":"1669:3:75","nodeType":"YulIdentifier","src":"1669:3:75"},"nativeSrc":"1669:23:75","nodeType":"YulFunctionCall","src":"1669:23:75"},{"kind":"number","nativeSrc":"1694:2:75","nodeType":"YulLiteral","src":"1694:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1665:3:75","nodeType":"YulIdentifier","src":"1665:3:75"},"nativeSrc":"1665:32:75","nodeType":"YulFunctionCall","src":"1665:32:75"},"nativeSrc":"1662:52:75","nodeType":"YulIf","src":"1662:52:75"},{"nativeSrc":"1723:36:75","nodeType":"YulVariableDeclaration","src":"1723:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1749:9:75","nodeType":"YulIdentifier","src":"1749:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1736:12:75","nodeType":"YulIdentifier","src":"1736:12:75"},"nativeSrc":"1736:23:75","nodeType":"YulFunctionCall","src":"1736:23:75"},"variables":[{"name":"value","nativeSrc":"1727:5:75","nodeType":"YulTypedName","src":"1727:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1793:5:75","nodeType":"YulIdentifier","src":"1793:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1768:24:75","nodeType":"YulIdentifier","src":"1768:24:75"},"nativeSrc":"1768:31:75","nodeType":"YulFunctionCall","src":"1768:31:75"},"nativeSrc":"1768:31:75","nodeType":"YulExpressionStatement","src":"1768:31:75"},{"nativeSrc":"1808:15:75","nodeType":"YulAssignment","src":"1808:15:75","value":{"name":"value","nativeSrc":"1818:5:75","nodeType":"YulIdentifier","src":"1818:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1808:6:75","nodeType":"YulIdentifier","src":"1808:6:75"}]},{"nativeSrc":"1832:16:75","nodeType":"YulVariableDeclaration","src":"1832:16:75","value":{"kind":"number","nativeSrc":"1847:1:75","nodeType":"YulLiteral","src":"1847:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1836:7:75","nodeType":"YulTypedName","src":"1836:7:75","type":""}]},{"nativeSrc":"1857:43:75","nodeType":"YulAssignment","src":"1857:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1885:9:75","nodeType":"YulIdentifier","src":"1885:9:75"},{"kind":"number","nativeSrc":"1896:2:75","nodeType":"YulLiteral","src":"1896:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1881:3:75","nodeType":"YulIdentifier","src":"1881:3:75"},"nativeSrc":"1881:18:75","nodeType":"YulFunctionCall","src":"1881:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1868:12:75","nodeType":"YulIdentifier","src":"1868:12:75"},"nativeSrc":"1868:32:75","nodeType":"YulFunctionCall","src":"1868:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"1857:7:75","nodeType":"YulIdentifier","src":"1857:7:75"}]},{"nativeSrc":"1909:17:75","nodeType":"YulAssignment","src":"1909:17:75","value":{"name":"value_1","nativeSrc":"1919:7:75","nodeType":"YulIdentifier","src":"1919:7:75"},"variableNames":[{"name":"value1","nativeSrc":"1909:6:75","nodeType":"YulIdentifier","src":"1909:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1565:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1610:9:75","nodeType":"YulTypedName","src":"1610:9:75","type":""},{"name":"dataEnd","nativeSrc":"1621:7:75","nodeType":"YulTypedName","src":"1621:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1633:6:75","nodeType":"YulTypedName","src":"1633:6:75","type":""},{"name":"value1","nativeSrc":"1641:6:75","nodeType":"YulTypedName","src":"1641:6:75","type":""}],"src":"1565:367:75"},{"body":{"nativeSrc":"1969:95:75","nodeType":"YulBlock","src":"1969:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1986:1:75","nodeType":"YulLiteral","src":"1986:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"1993:3:75","nodeType":"YulLiteral","src":"1993:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"1998:10:75","nodeType":"YulLiteral","src":"1998:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"1989:3:75","nodeType":"YulIdentifier","src":"1989:3:75"},"nativeSrc":"1989:20:75","nodeType":"YulFunctionCall","src":"1989:20:75"}],"functionName":{"name":"mstore","nativeSrc":"1979:6:75","nodeType":"YulIdentifier","src":"1979:6:75"},"nativeSrc":"1979:31:75","nodeType":"YulFunctionCall","src":"1979:31:75"},"nativeSrc":"1979:31:75","nodeType":"YulExpressionStatement","src":"1979:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2026:1:75","nodeType":"YulLiteral","src":"2026:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"2029:4:75","nodeType":"YulLiteral","src":"2029:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"2019:6:75","nodeType":"YulIdentifier","src":"2019:6:75"},"nativeSrc":"2019:15:75","nodeType":"YulFunctionCall","src":"2019:15:75"},"nativeSrc":"2019:15:75","nodeType":"YulExpressionStatement","src":"2019:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2050:1:75","nodeType":"YulLiteral","src":"2050:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2053:4:75","nodeType":"YulLiteral","src":"2053:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2043:6:75","nodeType":"YulIdentifier","src":"2043:6:75"},"nativeSrc":"2043:15:75","nodeType":"YulFunctionCall","src":"2043:15:75"},"nativeSrc":"2043:15:75","nodeType":"YulExpressionStatement","src":"2043:15:75"}]},"name":"panic_error_0x21","nativeSrc":"1937:127:75","nodeType":"YulFunctionDefinition","src":"1937:127:75"},{"body":{"nativeSrc":"2123:186:75","nodeType":"YulBlock","src":"2123:186:75","statements":[{"body":{"nativeSrc":"2165:111:75","nodeType":"YulBlock","src":"2165:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2186:1:75","nodeType":"YulLiteral","src":"2186:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2193:3:75","nodeType":"YulLiteral","src":"2193:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"2198:10:75","nodeType":"YulLiteral","src":"2198:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2189:3:75","nodeType":"YulIdentifier","src":"2189:3:75"},"nativeSrc":"2189:20:75","nodeType":"YulFunctionCall","src":"2189:20:75"}],"functionName":{"name":"mstore","nativeSrc":"2179:6:75","nodeType":"YulIdentifier","src":"2179:6:75"},"nativeSrc":"2179:31:75","nodeType":"YulFunctionCall","src":"2179:31:75"},"nativeSrc":"2179:31:75","nodeType":"YulExpressionStatement","src":"2179:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2230:1:75","nodeType":"YulLiteral","src":"2230:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"2233:4:75","nodeType":"YulLiteral","src":"2233:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"2223:6:75","nodeType":"YulIdentifier","src":"2223:6:75"},"nativeSrc":"2223:15:75","nodeType":"YulFunctionCall","src":"2223:15:75"},"nativeSrc":"2223:15:75","nodeType":"YulExpressionStatement","src":"2223:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2258:1:75","nodeType":"YulLiteral","src":"2258:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2261:4:75","nodeType":"YulLiteral","src":"2261:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2251:6:75","nodeType":"YulIdentifier","src":"2251:6:75"},"nativeSrc":"2251:15:75","nodeType":"YulFunctionCall","src":"2251:15:75"},"nativeSrc":"2251:15:75","nodeType":"YulExpressionStatement","src":"2251:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2146:5:75","nodeType":"YulIdentifier","src":"2146:5:75"},{"kind":"number","nativeSrc":"2153:1:75","nodeType":"YulLiteral","src":"2153:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"2143:2:75","nodeType":"YulIdentifier","src":"2143:2:75"},"nativeSrc":"2143:12:75","nodeType":"YulFunctionCall","src":"2143:12:75"}],"functionName":{"name":"iszero","nativeSrc":"2136:6:75","nodeType":"YulIdentifier","src":"2136:6:75"},"nativeSrc":"2136:20:75","nodeType":"YulFunctionCall","src":"2136:20:75"},"nativeSrc":"2133:143:75","nodeType":"YulIf","src":"2133:143:75"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2292:3:75","nodeType":"YulIdentifier","src":"2292:3:75"},{"name":"value","nativeSrc":"2297:5:75","nodeType":"YulIdentifier","src":"2297:5:75"}],"functionName":{"name":"mstore","nativeSrc":"2285:6:75","nodeType":"YulIdentifier","src":"2285:6:75"},"nativeSrc":"2285:18:75","nodeType":"YulFunctionCall","src":"2285:18:75"},"nativeSrc":"2285:18:75","nodeType":"YulExpressionStatement","src":"2285:18:75"}]},"name":"abi_encode_enum_SwapProtocol","nativeSrc":"2069:240:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2107:5:75","nodeType":"YulTypedName","src":"2107:5:75","type":""},{"name":"pos","nativeSrc":"2114:3:75","nodeType":"YulTypedName","src":"2114:3:75","type":""}],"src":"2069:240:75"},{"body":{"nativeSrc":"2469:331:75","nodeType":"YulBlock","src":"2469:331:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2486:9:75","nodeType":"YulIdentifier","src":"2486:9:75"},{"kind":"number","nativeSrc":"2497:2:75","nodeType":"YulLiteral","src":"2497:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2479:6:75","nodeType":"YulIdentifier","src":"2479:6:75"},"nativeSrc":"2479:21:75","nodeType":"YulFunctionCall","src":"2479:21:75"},"nativeSrc":"2479:21:75","nodeType":"YulExpressionStatement","src":"2479:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2544:6:75","nodeType":"YulIdentifier","src":"2544:6:75"}],"functionName":{"name":"mload","nativeSrc":"2538:5:75","nodeType":"YulIdentifier","src":"2538:5:75"},"nativeSrc":"2538:13:75","nodeType":"YulFunctionCall","src":"2538:13:75"},{"arguments":[{"name":"headStart","nativeSrc":"2557:9:75","nodeType":"YulIdentifier","src":"2557:9:75"},{"kind":"number","nativeSrc":"2568:2:75","nodeType":"YulLiteral","src":"2568:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2553:3:75","nodeType":"YulIdentifier","src":"2553:3:75"},"nativeSrc":"2553:18:75","nodeType":"YulFunctionCall","src":"2553:18:75"}],"functionName":{"name":"abi_encode_enum_SwapProtocol","nativeSrc":"2509:28:75","nodeType":"YulIdentifier","src":"2509:28:75"},"nativeSrc":"2509:63:75","nodeType":"YulFunctionCall","src":"2509:63:75"},"nativeSrc":"2509:63:75","nodeType":"YulExpressionStatement","src":"2509:63:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2592:9:75","nodeType":"YulIdentifier","src":"2592:9:75"},{"kind":"number","nativeSrc":"2603:2:75","nodeType":"YulLiteral","src":"2603:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2588:3:75","nodeType":"YulIdentifier","src":"2588:3:75"},"nativeSrc":"2588:18:75","nodeType":"YulFunctionCall","src":"2588:18:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2618:6:75","nodeType":"YulIdentifier","src":"2618:6:75"},{"kind":"number","nativeSrc":"2626:2:75","nodeType":"YulLiteral","src":"2626:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2614:3:75","nodeType":"YulIdentifier","src":"2614:3:75"},"nativeSrc":"2614:15:75","nodeType":"YulFunctionCall","src":"2614:15:75"}],"functionName":{"name":"mload","nativeSrc":"2608:5:75","nodeType":"YulIdentifier","src":"2608:5:75"},"nativeSrc":"2608:22:75","nodeType":"YulFunctionCall","src":"2608:22:75"}],"functionName":{"name":"mstore","nativeSrc":"2581:6:75","nodeType":"YulIdentifier","src":"2581:6:75"},"nativeSrc":"2581:50:75","nodeType":"YulFunctionCall","src":"2581:50:75"},"nativeSrc":"2581:50:75","nodeType":"YulExpressionStatement","src":"2581:50:75"},{"nativeSrc":"2640:42:75","nodeType":"YulVariableDeclaration","src":"2640:42:75","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2670:6:75","nodeType":"YulIdentifier","src":"2670:6:75"},{"kind":"number","nativeSrc":"2678:2:75","nodeType":"YulLiteral","src":"2678:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2666:3:75","nodeType":"YulIdentifier","src":"2666:3:75"},"nativeSrc":"2666:15:75","nodeType":"YulFunctionCall","src":"2666:15:75"}],"functionName":{"name":"mload","nativeSrc":"2660:5:75","nodeType":"YulIdentifier","src":"2660:5:75"},"nativeSrc":"2660:22:75","nodeType":"YulFunctionCall","src":"2660:22:75"},"variables":[{"name":"memberValue0","nativeSrc":"2644:12:75","nodeType":"YulTypedName","src":"2644:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2702:9:75","nodeType":"YulIdentifier","src":"2702:9:75"},{"kind":"number","nativeSrc":"2713:4:75","nodeType":"YulLiteral","src":"2713:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2698:3:75","nodeType":"YulIdentifier","src":"2698:3:75"},"nativeSrc":"2698:20:75","nodeType":"YulFunctionCall","src":"2698:20:75"},{"kind":"number","nativeSrc":"2720:4:75","nodeType":"YulLiteral","src":"2720:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"2691:6:75","nodeType":"YulIdentifier","src":"2691:6:75"},"nativeSrc":"2691:34:75","nodeType":"YulFunctionCall","src":"2691:34:75"},"nativeSrc":"2691:34:75","nodeType":"YulExpressionStatement","src":"2691:34:75"},{"nativeSrc":"2734:60:75","nodeType":"YulAssignment","src":"2734:60:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"2760:12:75","nodeType":"YulIdentifier","src":"2760:12:75"},{"arguments":[{"name":"headStart","nativeSrc":"2778:9:75","nodeType":"YulIdentifier","src":"2778:9:75"},{"kind":"number","nativeSrc":"2789:3:75","nodeType":"YulLiteral","src":"2789:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2774:3:75","nodeType":"YulIdentifier","src":"2774:3:75"},"nativeSrc":"2774:19:75","nodeType":"YulFunctionCall","src":"2774:19:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"2742:17:75","nodeType":"YulIdentifier","src":"2742:17:75"},"nativeSrc":"2742:52:75","nodeType":"YulFunctionCall","src":"2742:52:75"},"variableNames":[{"name":"tail","nativeSrc":"2734:4:75","nodeType":"YulIdentifier","src":"2734:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"2314:486:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2438:9:75","nodeType":"YulTypedName","src":"2438:9:75","type":""},{"name":"value0","nativeSrc":"2449:6:75","nodeType":"YulTypedName","src":"2449:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2460:4:75","nodeType":"YulTypedName","src":"2460:4:75","type":""}],"src":"2314:486:75"},{"body":{"nativeSrc":"2906:76:75","nodeType":"YulBlock","src":"2906:76:75","statements":[{"nativeSrc":"2916:26:75","nodeType":"YulAssignment","src":"2916:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2928:9:75","nodeType":"YulIdentifier","src":"2928:9:75"},{"kind":"number","nativeSrc":"2939:2:75","nodeType":"YulLiteral","src":"2939:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2924:3:75","nodeType":"YulIdentifier","src":"2924:3:75"},"nativeSrc":"2924:18:75","nodeType":"YulFunctionCall","src":"2924:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2916:4:75","nodeType":"YulIdentifier","src":"2916:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2958:9:75","nodeType":"YulIdentifier","src":"2958:9:75"},{"name":"value0","nativeSrc":"2969:6:75","nodeType":"YulIdentifier","src":"2969:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2951:6:75","nodeType":"YulIdentifier","src":"2951:6:75"},"nativeSrc":"2951:25:75","nodeType":"YulFunctionCall","src":"2951:25:75"},"nativeSrc":"2951:25:75","nodeType":"YulExpressionStatement","src":"2951:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2805:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2875:9:75","nodeType":"YulTypedName","src":"2875:9:75","type":""},{"name":"value0","nativeSrc":"2886:6:75","nodeType":"YulTypedName","src":"2886:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2897:4:75","nodeType":"YulTypedName","src":"2897:4:75","type":""}],"src":"2805:177:75"},{"body":{"nativeSrc":"3074:259:75","nodeType":"YulBlock","src":"3074:259:75","statements":[{"body":{"nativeSrc":"3120:16:75","nodeType":"YulBlock","src":"3120:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3129:1:75","nodeType":"YulLiteral","src":"3129:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3132:1:75","nodeType":"YulLiteral","src":"3132:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3122:6:75","nodeType":"YulIdentifier","src":"3122:6:75"},"nativeSrc":"3122:12:75","nodeType":"YulFunctionCall","src":"3122:12:75"},"nativeSrc":"3122:12:75","nodeType":"YulExpressionStatement","src":"3122:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3095:7:75","nodeType":"YulIdentifier","src":"3095:7:75"},{"name":"headStart","nativeSrc":"3104:9:75","nodeType":"YulIdentifier","src":"3104:9:75"}],"functionName":{"name":"sub","nativeSrc":"3091:3:75","nodeType":"YulIdentifier","src":"3091:3:75"},"nativeSrc":"3091:23:75","nodeType":"YulFunctionCall","src":"3091:23:75"},{"kind":"number","nativeSrc":"3116:2:75","nodeType":"YulLiteral","src":"3116:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3087:3:75","nodeType":"YulIdentifier","src":"3087:3:75"},"nativeSrc":"3087:32:75","nodeType":"YulFunctionCall","src":"3087:32:75"},"nativeSrc":"3084:52:75","nodeType":"YulIf","src":"3084:52:75"},{"nativeSrc":"3145:14:75","nodeType":"YulVariableDeclaration","src":"3145:14:75","value":{"kind":"number","nativeSrc":"3158:1:75","nodeType":"YulLiteral","src":"3158:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3149:5:75","nodeType":"YulTypedName","src":"3149:5:75","type":""}]},{"nativeSrc":"3168:32:75","nodeType":"YulAssignment","src":"3168:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3190:9:75","nodeType":"YulIdentifier","src":"3190:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3177:12:75","nodeType":"YulIdentifier","src":"3177:12:75"},"nativeSrc":"3177:23:75","nodeType":"YulFunctionCall","src":"3177:23:75"},"variableNames":[{"name":"value","nativeSrc":"3168:5:75","nodeType":"YulIdentifier","src":"3168:5:75"}]},{"nativeSrc":"3209:15:75","nodeType":"YulAssignment","src":"3209:15:75","value":{"name":"value","nativeSrc":"3219:5:75","nodeType":"YulIdentifier","src":"3219:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3209:6:75","nodeType":"YulIdentifier","src":"3209:6:75"}]},{"nativeSrc":"3233:16:75","nodeType":"YulVariableDeclaration","src":"3233:16:75","value":{"kind":"number","nativeSrc":"3248:1:75","nodeType":"YulLiteral","src":"3248:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"3237:7:75","nodeType":"YulTypedName","src":"3237:7:75","type":""}]},{"nativeSrc":"3258:43:75","nodeType":"YulAssignment","src":"3258:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3286:9:75","nodeType":"YulIdentifier","src":"3286:9:75"},{"kind":"number","nativeSrc":"3297:2:75","nodeType":"YulLiteral","src":"3297:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3282:3:75","nodeType":"YulIdentifier","src":"3282:3:75"},"nativeSrc":"3282:18:75","nodeType":"YulFunctionCall","src":"3282:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3269:12:75","nodeType":"YulIdentifier","src":"3269:12:75"},"nativeSrc":"3269:32:75","nodeType":"YulFunctionCall","src":"3269:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"3258:7:75","nodeType":"YulIdentifier","src":"3258:7:75"}]},{"nativeSrc":"3310:17:75","nodeType":"YulAssignment","src":"3310:17:75","value":{"name":"value_1","nativeSrc":"3320:7:75","nodeType":"YulIdentifier","src":"3320:7:75"},"variableNames":[{"name":"value1","nativeSrc":"3310:6:75","nodeType":"YulIdentifier","src":"3310:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nativeSrc":"2987:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3032:9:75","nodeType":"YulTypedName","src":"3032:9:75","type":""},{"name":"dataEnd","nativeSrc":"3043:7:75","nodeType":"YulTypedName","src":"3043:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3055:6:75","nodeType":"YulTypedName","src":"3055:6:75","type":""},{"name":"value1","nativeSrc":"3063:6:75","nodeType":"YulTypedName","src":"3063:6:75","type":""}],"src":"2987:346:75"},{"body":{"nativeSrc":"3442:404:75","nodeType":"YulBlock","src":"3442:404:75","statements":[{"body":{"nativeSrc":"3488:16:75","nodeType":"YulBlock","src":"3488:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3497:1:75","nodeType":"YulLiteral","src":"3497:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3500:1:75","nodeType":"YulLiteral","src":"3500:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3490:6:75","nodeType":"YulIdentifier","src":"3490:6:75"},"nativeSrc":"3490:12:75","nodeType":"YulFunctionCall","src":"3490:12:75"},"nativeSrc":"3490:12:75","nodeType":"YulExpressionStatement","src":"3490:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3463:7:75","nodeType":"YulIdentifier","src":"3463:7:75"},{"name":"headStart","nativeSrc":"3472:9:75","nodeType":"YulIdentifier","src":"3472:9:75"}],"functionName":{"name":"sub","nativeSrc":"3459:3:75","nodeType":"YulIdentifier","src":"3459:3:75"},"nativeSrc":"3459:23:75","nodeType":"YulFunctionCall","src":"3459:23:75"},{"kind":"number","nativeSrc":"3484:2:75","nodeType":"YulLiteral","src":"3484:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3455:3:75","nodeType":"YulIdentifier","src":"3455:3:75"},"nativeSrc":"3455:32:75","nodeType":"YulFunctionCall","src":"3455:32:75"},"nativeSrc":"3452:52:75","nodeType":"YulIf","src":"3452:52:75"},{"nativeSrc":"3513:36:75","nodeType":"YulVariableDeclaration","src":"3513:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3539:9:75","nodeType":"YulIdentifier","src":"3539:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3526:12:75","nodeType":"YulIdentifier","src":"3526:12:75"},"nativeSrc":"3526:23:75","nodeType":"YulFunctionCall","src":"3526:23:75"},"variables":[{"name":"value","nativeSrc":"3517:5:75","nodeType":"YulTypedName","src":"3517:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3583:5:75","nodeType":"YulIdentifier","src":"3583:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3558:24:75","nodeType":"YulIdentifier","src":"3558:24:75"},"nativeSrc":"3558:31:75","nodeType":"YulFunctionCall","src":"3558:31:75"},"nativeSrc":"3558:31:75","nodeType":"YulExpressionStatement","src":"3558:31:75"},{"nativeSrc":"3598:15:75","nodeType":"YulAssignment","src":"3598:15:75","value":{"name":"value","nativeSrc":"3608:5:75","nodeType":"YulIdentifier","src":"3608:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3598:6:75","nodeType":"YulIdentifier","src":"3598:6:75"}]},{"nativeSrc":"3622:47:75","nodeType":"YulVariableDeclaration","src":"3622:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3654:9:75","nodeType":"YulIdentifier","src":"3654:9:75"},{"kind":"number","nativeSrc":"3665:2:75","nodeType":"YulLiteral","src":"3665:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3650:3:75","nodeType":"YulIdentifier","src":"3650:3:75"},"nativeSrc":"3650:18:75","nodeType":"YulFunctionCall","src":"3650:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3637:12:75","nodeType":"YulIdentifier","src":"3637:12:75"},"nativeSrc":"3637:32:75","nodeType":"YulFunctionCall","src":"3637:32:75"},"variables":[{"name":"value_1","nativeSrc":"3626:7:75","nodeType":"YulTypedName","src":"3626:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"3703:7:75","nodeType":"YulIdentifier","src":"3703:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3678:24:75","nodeType":"YulIdentifier","src":"3678:24:75"},"nativeSrc":"3678:33:75","nodeType":"YulFunctionCall","src":"3678:33:75"},"nativeSrc":"3678:33:75","nodeType":"YulExpressionStatement","src":"3678:33:75"},{"nativeSrc":"3720:17:75","nodeType":"YulAssignment","src":"3720:17:75","value":{"name":"value_1","nativeSrc":"3730:7:75","nodeType":"YulIdentifier","src":"3730:7:75"},"variableNames":[{"name":"value1","nativeSrc":"3720:6:75","nodeType":"YulIdentifier","src":"3720:6:75"}]},{"nativeSrc":"3746:16:75","nodeType":"YulVariableDeclaration","src":"3746:16:75","value":{"kind":"number","nativeSrc":"3761:1:75","nodeType":"YulLiteral","src":"3761:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"3750:7:75","nodeType":"YulTypedName","src":"3750:7:75","type":""}]},{"nativeSrc":"3771:43:75","nodeType":"YulAssignment","src":"3771:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3799:9:75","nodeType":"YulIdentifier","src":"3799:9:75"},{"kind":"number","nativeSrc":"3810:2:75","nodeType":"YulLiteral","src":"3810:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3795:3:75","nodeType":"YulIdentifier","src":"3795:3:75"},"nativeSrc":"3795:18:75","nodeType":"YulFunctionCall","src":"3795:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3782:12:75","nodeType":"YulIdentifier","src":"3782:12:75"},"nativeSrc":"3782:32:75","nodeType":"YulFunctionCall","src":"3782:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"3771:7:75","nodeType":"YulIdentifier","src":"3771:7:75"}]},{"nativeSrc":"3823:17:75","nodeType":"YulAssignment","src":"3823:17:75","value":{"name":"value_2","nativeSrc":"3833:7:75","nodeType":"YulIdentifier","src":"3833:7:75"},"variableNames":[{"name":"value2","nativeSrc":"3823:6:75","nodeType":"YulIdentifier","src":"3823:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"3338:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3392:9:75","nodeType":"YulTypedName","src":"3392:9:75","type":""},{"name":"dataEnd","nativeSrc":"3403:7:75","nodeType":"YulTypedName","src":"3403:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3415:6:75","nodeType":"YulTypedName","src":"3415:6:75","type":""},{"name":"value1","nativeSrc":"3423:6:75","nodeType":"YulTypedName","src":"3423:6:75","type":""},{"name":"value2","nativeSrc":"3431:6:75","nodeType":"YulTypedName","src":"3431:6:75","type":""}],"src":"3338:508:75"},{"body":{"nativeSrc":"3921:156:75","nodeType":"YulBlock","src":"3921:156:75","statements":[{"body":{"nativeSrc":"3967:16:75","nodeType":"YulBlock","src":"3967:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3976:1:75","nodeType":"YulLiteral","src":"3976:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3979:1:75","nodeType":"YulLiteral","src":"3979:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3969:6:75","nodeType":"YulIdentifier","src":"3969:6:75"},"nativeSrc":"3969:12:75","nodeType":"YulFunctionCall","src":"3969:12:75"},"nativeSrc":"3969:12:75","nodeType":"YulExpressionStatement","src":"3969:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3942:7:75","nodeType":"YulIdentifier","src":"3942:7:75"},{"name":"headStart","nativeSrc":"3951:9:75","nodeType":"YulIdentifier","src":"3951:9:75"}],"functionName":{"name":"sub","nativeSrc":"3938:3:75","nodeType":"YulIdentifier","src":"3938:3:75"},"nativeSrc":"3938:23:75","nodeType":"YulFunctionCall","src":"3938:23:75"},{"kind":"number","nativeSrc":"3963:2:75","nodeType":"YulLiteral","src":"3963:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3934:3:75","nodeType":"YulIdentifier","src":"3934:3:75"},"nativeSrc":"3934:32:75","nodeType":"YulFunctionCall","src":"3934:32:75"},"nativeSrc":"3931:52:75","nodeType":"YulIf","src":"3931:52:75"},{"nativeSrc":"3992:14:75","nodeType":"YulVariableDeclaration","src":"3992:14:75","value":{"kind":"number","nativeSrc":"4005:1:75","nodeType":"YulLiteral","src":"4005:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3996:5:75","nodeType":"YulTypedName","src":"3996:5:75","type":""}]},{"nativeSrc":"4015:32:75","nodeType":"YulAssignment","src":"4015:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4037:9:75","nodeType":"YulIdentifier","src":"4037:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4024:12:75","nodeType":"YulIdentifier","src":"4024:12:75"},"nativeSrc":"4024:23:75","nodeType":"YulFunctionCall","src":"4024:23:75"},"variableNames":[{"name":"value","nativeSrc":"4015:5:75","nodeType":"YulIdentifier","src":"4015:5:75"}]},{"nativeSrc":"4056:15:75","nodeType":"YulAssignment","src":"4056:15:75","value":{"name":"value","nativeSrc":"4066:5:75","nodeType":"YulIdentifier","src":"4066:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4056:6:75","nodeType":"YulIdentifier","src":"4056:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"3851:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3887:9:75","nodeType":"YulTypedName","src":"3887:9:75","type":""},{"name":"dataEnd","nativeSrc":"3898:7:75","nodeType":"YulTypedName","src":"3898:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3910:6:75","nodeType":"YulTypedName","src":"3910:6:75","type":""}],"src":"3851:226:75"},{"body":{"nativeSrc":"4169:280:75","nodeType":"YulBlock","src":"4169:280:75","statements":[{"body":{"nativeSrc":"4215:16:75","nodeType":"YulBlock","src":"4215:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4224:1:75","nodeType":"YulLiteral","src":"4224:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4227:1:75","nodeType":"YulLiteral","src":"4227:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4217:6:75","nodeType":"YulIdentifier","src":"4217:6:75"},"nativeSrc":"4217:12:75","nodeType":"YulFunctionCall","src":"4217:12:75"},"nativeSrc":"4217:12:75","nodeType":"YulExpressionStatement","src":"4217:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4190:7:75","nodeType":"YulIdentifier","src":"4190:7:75"},{"name":"headStart","nativeSrc":"4199:9:75","nodeType":"YulIdentifier","src":"4199:9:75"}],"functionName":{"name":"sub","nativeSrc":"4186:3:75","nodeType":"YulIdentifier","src":"4186:3:75"},"nativeSrc":"4186:23:75","nodeType":"YulFunctionCall","src":"4186:23:75"},{"kind":"number","nativeSrc":"4211:2:75","nodeType":"YulLiteral","src":"4211:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4182:3:75","nodeType":"YulIdentifier","src":"4182:3:75"},"nativeSrc":"4182:32:75","nodeType":"YulFunctionCall","src":"4182:32:75"},"nativeSrc":"4179:52:75","nodeType":"YulIf","src":"4179:52:75"},{"nativeSrc":"4240:14:75","nodeType":"YulVariableDeclaration","src":"4240:14:75","value":{"kind":"number","nativeSrc":"4253:1:75","nodeType":"YulLiteral","src":"4253:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4244:5:75","nodeType":"YulTypedName","src":"4244:5:75","type":""}]},{"nativeSrc":"4263:32:75","nodeType":"YulAssignment","src":"4263:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4285:9:75","nodeType":"YulIdentifier","src":"4285:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4272:12:75","nodeType":"YulIdentifier","src":"4272:12:75"},"nativeSrc":"4272:23:75","nodeType":"YulFunctionCall","src":"4272:23:75"},"variableNames":[{"name":"value","nativeSrc":"4263:5:75","nodeType":"YulIdentifier","src":"4263:5:75"}]},{"nativeSrc":"4304:15:75","nodeType":"YulAssignment","src":"4304:15:75","value":{"name":"value","nativeSrc":"4314:5:75","nodeType":"YulIdentifier","src":"4314:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4304:6:75","nodeType":"YulIdentifier","src":"4304:6:75"}]},{"nativeSrc":"4328:47:75","nodeType":"YulVariableDeclaration","src":"4328:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4360:9:75","nodeType":"YulIdentifier","src":"4360:9:75"},{"kind":"number","nativeSrc":"4371:2:75","nodeType":"YulLiteral","src":"4371:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4356:3:75","nodeType":"YulIdentifier","src":"4356:3:75"},"nativeSrc":"4356:18:75","nodeType":"YulFunctionCall","src":"4356:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4343:12:75","nodeType":"YulIdentifier","src":"4343:12:75"},"nativeSrc":"4343:32:75","nodeType":"YulFunctionCall","src":"4343:32:75"},"variables":[{"name":"value_1","nativeSrc":"4332:7:75","nodeType":"YulTypedName","src":"4332:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4409:7:75","nodeType":"YulIdentifier","src":"4409:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4384:24:75","nodeType":"YulIdentifier","src":"4384:24:75"},"nativeSrc":"4384:33:75","nodeType":"YulFunctionCall","src":"4384:33:75"},"nativeSrc":"4384:33:75","nodeType":"YulExpressionStatement","src":"4384:33:75"},{"nativeSrc":"4426:17:75","nodeType":"YulAssignment","src":"4426:17:75","value":{"name":"value_1","nativeSrc":"4436:7:75","nodeType":"YulIdentifier","src":"4436:7:75"},"variableNames":[{"name":"value1","nativeSrc":"4426:6:75","nodeType":"YulIdentifier","src":"4426:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"4082:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4127:9:75","nodeType":"YulTypedName","src":"4127:9:75","type":""},{"name":"dataEnd","nativeSrc":"4138:7:75","nodeType":"YulTypedName","src":"4138:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4150:6:75","nodeType":"YulTypedName","src":"4150:6:75","type":""},{"name":"value1","nativeSrc":"4158:6:75","nodeType":"YulTypedName","src":"4158:6:75","type":""}],"src":"4082:367:75"},{"body":{"nativeSrc":"4551:87:75","nodeType":"YulBlock","src":"4551:87:75","statements":[{"nativeSrc":"4561:26:75","nodeType":"YulAssignment","src":"4561:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4573:9:75","nodeType":"YulIdentifier","src":"4573:9:75"},{"kind":"number","nativeSrc":"4584:2:75","nodeType":"YulLiteral","src":"4584:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4569:3:75","nodeType":"YulIdentifier","src":"4569:3:75"},"nativeSrc":"4569:18:75","nodeType":"YulFunctionCall","src":"4569:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4561:4:75","nodeType":"YulIdentifier","src":"4561:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4603:9:75","nodeType":"YulIdentifier","src":"4603:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4618:6:75","nodeType":"YulIdentifier","src":"4618:6:75"},{"kind":"number","nativeSrc":"4626:4:75","nodeType":"YulLiteral","src":"4626:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"4614:3:75","nodeType":"YulIdentifier","src":"4614:3:75"},"nativeSrc":"4614:17:75","nodeType":"YulFunctionCall","src":"4614:17:75"}],"functionName":{"name":"mstore","nativeSrc":"4596:6:75","nodeType":"YulIdentifier","src":"4596:6:75"},"nativeSrc":"4596:36:75","nodeType":"YulFunctionCall","src":"4596:36:75"},"nativeSrc":"4596:36:75","nodeType":"YulExpressionStatement","src":"4596:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"4454:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4520:9:75","nodeType":"YulTypedName","src":"4520:9:75","type":""},{"name":"value0","nativeSrc":"4531:6:75","nodeType":"YulTypedName","src":"4531:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4542:4:75","nodeType":"YulTypedName","src":"4542:4:75","type":""}],"src":"4454:184:75"},{"body":{"nativeSrc":"4744:102:75","nodeType":"YulBlock","src":"4744:102:75","statements":[{"nativeSrc":"4754:26:75","nodeType":"YulAssignment","src":"4754:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4766:9:75","nodeType":"YulIdentifier","src":"4766:9:75"},{"kind":"number","nativeSrc":"4777:2:75","nodeType":"YulLiteral","src":"4777:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4762:3:75","nodeType":"YulIdentifier","src":"4762:3:75"},"nativeSrc":"4762:18:75","nodeType":"YulFunctionCall","src":"4762:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4754:4:75","nodeType":"YulIdentifier","src":"4754:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4796:9:75","nodeType":"YulIdentifier","src":"4796:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4811:6:75","nodeType":"YulIdentifier","src":"4811:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4827:3:75","nodeType":"YulLiteral","src":"4827:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4832:1:75","nodeType":"YulLiteral","src":"4832:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4823:3:75","nodeType":"YulIdentifier","src":"4823:3:75"},"nativeSrc":"4823:11:75","nodeType":"YulFunctionCall","src":"4823:11:75"},{"kind":"number","nativeSrc":"4836:1:75","nodeType":"YulLiteral","src":"4836:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4819:3:75","nodeType":"YulIdentifier","src":"4819:3:75"},"nativeSrc":"4819:19:75","nodeType":"YulFunctionCall","src":"4819:19:75"}],"functionName":{"name":"and","nativeSrc":"4807:3:75","nodeType":"YulIdentifier","src":"4807:3:75"},"nativeSrc":"4807:32:75","nodeType":"YulFunctionCall","src":"4807:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4789:6:75","nodeType":"YulIdentifier","src":"4789:6:75"},"nativeSrc":"4789:51:75","nodeType":"YulFunctionCall","src":"4789:51:75"},"nativeSrc":"4789:51:75","nodeType":"YulExpressionStatement","src":"4789:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4643:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4713:9:75","nodeType":"YulTypedName","src":"4713:9:75","type":""},{"name":"value0","nativeSrc":"4724:6:75","nodeType":"YulTypedName","src":"4724:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4735:4:75","nodeType":"YulTypedName","src":"4735:4:75","type":""}],"src":"4643:203:75"},{"body":{"nativeSrc":"4921:177:75","nodeType":"YulBlock","src":"4921:177:75","statements":[{"body":{"nativeSrc":"4967:16:75","nodeType":"YulBlock","src":"4967:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4976:1:75","nodeType":"YulLiteral","src":"4976:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4979:1:75","nodeType":"YulLiteral","src":"4979:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4969:6:75","nodeType":"YulIdentifier","src":"4969:6:75"},"nativeSrc":"4969:12:75","nodeType":"YulFunctionCall","src":"4969:12:75"},"nativeSrc":"4969:12:75","nodeType":"YulExpressionStatement","src":"4969:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4942:7:75","nodeType":"YulIdentifier","src":"4942:7:75"},{"name":"headStart","nativeSrc":"4951:9:75","nodeType":"YulIdentifier","src":"4951:9:75"}],"functionName":{"name":"sub","nativeSrc":"4938:3:75","nodeType":"YulIdentifier","src":"4938:3:75"},"nativeSrc":"4938:23:75","nodeType":"YulFunctionCall","src":"4938:23:75"},{"kind":"number","nativeSrc":"4963:2:75","nodeType":"YulLiteral","src":"4963:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4934:3:75","nodeType":"YulIdentifier","src":"4934:3:75"},"nativeSrc":"4934:32:75","nodeType":"YulFunctionCall","src":"4934:32:75"},"nativeSrc":"4931:52:75","nodeType":"YulIf","src":"4931:52:75"},{"nativeSrc":"4992:36:75","nodeType":"YulVariableDeclaration","src":"4992:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5018:9:75","nodeType":"YulIdentifier","src":"5018:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5005:12:75","nodeType":"YulIdentifier","src":"5005:12:75"},"nativeSrc":"5005:23:75","nodeType":"YulFunctionCall","src":"5005:23:75"},"variables":[{"name":"value","nativeSrc":"4996:5:75","nodeType":"YulTypedName","src":"4996:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5062:5:75","nodeType":"YulIdentifier","src":"5062:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5037:24:75","nodeType":"YulIdentifier","src":"5037:24:75"},"nativeSrc":"5037:31:75","nodeType":"YulFunctionCall","src":"5037:31:75"},"nativeSrc":"5037:31:75","nodeType":"YulExpressionStatement","src":"5037:31:75"},{"nativeSrc":"5077:15:75","nodeType":"YulAssignment","src":"5077:15:75","value":{"name":"value","nativeSrc":"5087:5:75","nodeType":"YulIdentifier","src":"5087:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5077:6:75","nodeType":"YulIdentifier","src":"5077:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4851:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4887:9:75","nodeType":"YulTypedName","src":"4887:9:75","type":""},{"name":"dataEnd","nativeSrc":"4898:7:75","nodeType":"YulTypedName","src":"4898:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4910:6:75","nodeType":"YulTypedName","src":"4910:6:75","type":""}],"src":"4851:247:75"},{"body":{"nativeSrc":"5135:95:75","nodeType":"YulBlock","src":"5135:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5152:1:75","nodeType":"YulLiteral","src":"5152:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5159:3:75","nodeType":"YulLiteral","src":"5159:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"5164:10:75","nodeType":"YulLiteral","src":"5164:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5155:3:75","nodeType":"YulIdentifier","src":"5155:3:75"},"nativeSrc":"5155:20:75","nodeType":"YulFunctionCall","src":"5155:20:75"}],"functionName":{"name":"mstore","nativeSrc":"5145:6:75","nodeType":"YulIdentifier","src":"5145:6:75"},"nativeSrc":"5145:31:75","nodeType":"YulFunctionCall","src":"5145:31:75"},"nativeSrc":"5145:31:75","nodeType":"YulExpressionStatement","src":"5145:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5192:1:75","nodeType":"YulLiteral","src":"5192:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"5195:4:75","nodeType":"YulLiteral","src":"5195:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"5185:6:75","nodeType":"YulIdentifier","src":"5185:6:75"},"nativeSrc":"5185:15:75","nodeType":"YulFunctionCall","src":"5185:15:75"},"nativeSrc":"5185:15:75","nodeType":"YulExpressionStatement","src":"5185:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5216:1:75","nodeType":"YulLiteral","src":"5216:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5219:4:75","nodeType":"YulLiteral","src":"5219:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5209:6:75","nodeType":"YulIdentifier","src":"5209:6:75"},"nativeSrc":"5209:15:75","nodeType":"YulFunctionCall","src":"5209:15:75"},"nativeSrc":"5209:15:75","nodeType":"YulExpressionStatement","src":"5209:15:75"}]},"name":"panic_error_0x41","nativeSrc":"5103:127:75","nodeType":"YulFunctionDefinition","src":"5103:127:75"},{"body":{"nativeSrc":"5287:836:75","nodeType":"YulBlock","src":"5287:836:75","statements":[{"body":{"nativeSrc":"5336:16:75","nodeType":"YulBlock","src":"5336:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5345:1:75","nodeType":"YulLiteral","src":"5345:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5348:1:75","nodeType":"YulLiteral","src":"5348:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5338:6:75","nodeType":"YulIdentifier","src":"5338:6:75"},"nativeSrc":"5338:12:75","nodeType":"YulFunctionCall","src":"5338:12:75"},"nativeSrc":"5338:12:75","nodeType":"YulExpressionStatement","src":"5338:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5315:6:75","nodeType":"YulIdentifier","src":"5315:6:75"},{"kind":"number","nativeSrc":"5323:4:75","nodeType":"YulLiteral","src":"5323:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5311:3:75","nodeType":"YulIdentifier","src":"5311:3:75"},"nativeSrc":"5311:17:75","nodeType":"YulFunctionCall","src":"5311:17:75"},{"name":"end","nativeSrc":"5330:3:75","nodeType":"YulIdentifier","src":"5330:3:75"}],"functionName":{"name":"slt","nativeSrc":"5307:3:75","nodeType":"YulIdentifier","src":"5307:3:75"},"nativeSrc":"5307:27:75","nodeType":"YulFunctionCall","src":"5307:27:75"}],"functionName":{"name":"iszero","nativeSrc":"5300:6:75","nodeType":"YulIdentifier","src":"5300:6:75"},"nativeSrc":"5300:35:75","nodeType":"YulFunctionCall","src":"5300:35:75"},"nativeSrc":"5297:55:75","nodeType":"YulIf","src":"5297:55:75"},{"nativeSrc":"5361:34:75","nodeType":"YulVariableDeclaration","src":"5361:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"5388:6:75","nodeType":"YulIdentifier","src":"5388:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"5375:12:75","nodeType":"YulIdentifier","src":"5375:12:75"},"nativeSrc":"5375:20:75","nodeType":"YulFunctionCall","src":"5375:20:75"},"variables":[{"name":"length","nativeSrc":"5365:6:75","nodeType":"YulTypedName","src":"5365:6:75","type":""}]},{"nativeSrc":"5404:28:75","nodeType":"YulVariableDeclaration","src":"5404:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"5419:6:75","nodeType":"YulIdentifier","src":"5419:6:75"},{"kind":"number","nativeSrc":"5427:4:75","nodeType":"YulLiteral","src":"5427:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5415:3:75","nodeType":"YulIdentifier","src":"5415:3:75"},"nativeSrc":"5415:17:75","nodeType":"YulFunctionCall","src":"5415:17:75"},"variables":[{"name":"src","nativeSrc":"5408:3:75","nodeType":"YulTypedName","src":"5408:3:75","type":""}]},{"nativeSrc":"5441:16:75","nodeType":"YulVariableDeclaration","src":"5441:16:75","value":{"kind":"number","nativeSrc":"5456:1:75","nodeType":"YulLiteral","src":"5456:1:75","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"5445:7:75","nodeType":"YulTypedName","src":"5445:7:75","type":""}]},{"nativeSrc":"5466:13:75","nodeType":"YulVariableDeclaration","src":"5466:13:75","value":{"kind":"number","nativeSrc":"5478:1:75","nodeType":"YulLiteral","src":"5478:1:75","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"5470:4:75","nodeType":"YulTypedName","src":"5470:4:75","type":""}]},{"body":{"nativeSrc":"5522:22:75","nodeType":"YulBlock","src":"5522:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5524:16:75","nodeType":"YulIdentifier","src":"5524:16:75"},"nativeSrc":"5524:18:75","nodeType":"YulFunctionCall","src":"5524:18:75"},"nativeSrc":"5524:18:75","nodeType":"YulExpressionStatement","src":"5524:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"5494:6:75","nodeType":"YulIdentifier","src":"5494:6:75"},{"kind":"number","nativeSrc":"5502:18:75","nodeType":"YulLiteral","src":"5502:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5491:2:75","nodeType":"YulIdentifier","src":"5491:2:75"},"nativeSrc":"5491:30:75","nodeType":"YulFunctionCall","src":"5491:30:75"},"nativeSrc":"5488:56:75","nodeType":"YulIf","src":"5488:56:75"},{"nativeSrc":"5553:43:75","nodeType":"YulVariableDeclaration","src":"5553:43:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"5575:6:75","nodeType":"YulIdentifier","src":"5575:6:75"},{"kind":"number","nativeSrc":"5583:2:75","nodeType":"YulLiteral","src":"5583:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"5571:3:75","nodeType":"YulIdentifier","src":"5571:3:75"},"nativeSrc":"5571:15:75","nodeType":"YulFunctionCall","src":"5571:15:75"},{"arguments":[{"kind":"number","nativeSrc":"5592:2:75","nodeType":"YulLiteral","src":"5592:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5588:3:75","nodeType":"YulIdentifier","src":"5588:3:75"},"nativeSrc":"5588:7:75","nodeType":"YulFunctionCall","src":"5588:7:75"}],"functionName":{"name":"and","nativeSrc":"5567:3:75","nodeType":"YulIdentifier","src":"5567:3:75"},"nativeSrc":"5567:29:75","nodeType":"YulFunctionCall","src":"5567:29:75"},"variables":[{"name":"result","nativeSrc":"5557:6:75","nodeType":"YulTypedName","src":"5557:6:75","type":""}]},{"nativeSrc":"5605:25:75","nodeType":"YulAssignment","src":"5605:25:75","value":{"arguments":[{"name":"result","nativeSrc":"5617:6:75","nodeType":"YulIdentifier","src":"5617:6:75"},{"kind":"number","nativeSrc":"5625:4:75","nodeType":"YulLiteral","src":"5625:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5613:3:75","nodeType":"YulIdentifier","src":"5613:3:75"},"nativeSrc":"5613:17:75","nodeType":"YulFunctionCall","src":"5613:17:75"},"variableNames":[{"name":"size","nativeSrc":"5605:4:75","nodeType":"YulIdentifier","src":"5605:4:75"}]},{"nativeSrc":"5639:15:75","nodeType":"YulVariableDeclaration","src":"5639:15:75","value":{"kind":"number","nativeSrc":"5653:1:75","nodeType":"YulLiteral","src":"5653:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"5643:6:75","nodeType":"YulTypedName","src":"5643:6:75","type":""}]},{"nativeSrc":"5663:19:75","nodeType":"YulAssignment","src":"5663:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"5679:2:75","nodeType":"YulLiteral","src":"5679:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"5673:5:75","nodeType":"YulIdentifier","src":"5673:5:75"},"nativeSrc":"5673:9:75","nodeType":"YulFunctionCall","src":"5673:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"5663:6:75","nodeType":"YulIdentifier","src":"5663:6:75"}]},{"nativeSrc":"5691:60:75","nodeType":"YulVariableDeclaration","src":"5691:60:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"5713:6:75","nodeType":"YulIdentifier","src":"5713:6:75"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"5729:6:75","nodeType":"YulIdentifier","src":"5729:6:75"},{"kind":"number","nativeSrc":"5737:2:75","nodeType":"YulLiteral","src":"5737:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"5725:3:75","nodeType":"YulIdentifier","src":"5725:3:75"},"nativeSrc":"5725:15:75","nodeType":"YulFunctionCall","src":"5725:15:75"},{"arguments":[{"kind":"number","nativeSrc":"5746:2:75","nodeType":"YulLiteral","src":"5746:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5742:3:75","nodeType":"YulIdentifier","src":"5742:3:75"},"nativeSrc":"5742:7:75","nodeType":"YulFunctionCall","src":"5742:7:75"}],"functionName":{"name":"and","nativeSrc":"5721:3:75","nodeType":"YulIdentifier","src":"5721:3:75"},"nativeSrc":"5721:29:75","nodeType":"YulFunctionCall","src":"5721:29:75"}],"functionName":{"name":"add","nativeSrc":"5709:3:75","nodeType":"YulIdentifier","src":"5709:3:75"},"nativeSrc":"5709:42:75","nodeType":"YulFunctionCall","src":"5709:42:75"},"variables":[{"name":"newFreePtr","nativeSrc":"5695:10:75","nodeType":"YulTypedName","src":"5695:10:75","type":""}]},{"body":{"nativeSrc":"5826:22:75","nodeType":"YulBlock","src":"5826:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5828:16:75","nodeType":"YulIdentifier","src":"5828:16:75"},"nativeSrc":"5828:18:75","nodeType":"YulFunctionCall","src":"5828:18:75"},"nativeSrc":"5828:18:75","nodeType":"YulExpressionStatement","src":"5828:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"5769:10:75","nodeType":"YulIdentifier","src":"5769:10:75"},{"kind":"number","nativeSrc":"5781:18:75","nodeType":"YulLiteral","src":"5781:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5766:2:75","nodeType":"YulIdentifier","src":"5766:2:75"},"nativeSrc":"5766:34:75","nodeType":"YulFunctionCall","src":"5766:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"5805:10:75","nodeType":"YulIdentifier","src":"5805:10:75"},{"name":"memPtr","nativeSrc":"5817:6:75","nodeType":"YulIdentifier","src":"5817:6:75"}],"functionName":{"name":"lt","nativeSrc":"5802:2:75","nodeType":"YulIdentifier","src":"5802:2:75"},"nativeSrc":"5802:22:75","nodeType":"YulFunctionCall","src":"5802:22:75"}],"functionName":{"name":"or","nativeSrc":"5763:2:75","nodeType":"YulIdentifier","src":"5763:2:75"},"nativeSrc":"5763:62:75","nodeType":"YulFunctionCall","src":"5763:62:75"},"nativeSrc":"5760:88:75","nodeType":"YulIf","src":"5760:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5864:2:75","nodeType":"YulLiteral","src":"5864:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"5868:10:75","nodeType":"YulIdentifier","src":"5868:10:75"}],"functionName":{"name":"mstore","nativeSrc":"5857:6:75","nodeType":"YulIdentifier","src":"5857:6:75"},"nativeSrc":"5857:22:75","nodeType":"YulFunctionCall","src":"5857:22:75"},"nativeSrc":"5857:22:75","nodeType":"YulExpressionStatement","src":"5857:22:75"},{"nativeSrc":"5888:17:75","nodeType":"YulAssignment","src":"5888:17:75","value":{"name":"memPtr","nativeSrc":"5899:6:75","nodeType":"YulIdentifier","src":"5899:6:75"},"variableNames":[{"name":"array_1","nativeSrc":"5888:7:75","nodeType":"YulIdentifier","src":"5888:7:75"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"5921:6:75","nodeType":"YulIdentifier","src":"5921:6:75"},{"name":"length","nativeSrc":"5929:6:75","nodeType":"YulIdentifier","src":"5929:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5914:6:75","nodeType":"YulIdentifier","src":"5914:6:75"},"nativeSrc":"5914:22:75","nodeType":"YulFunctionCall","src":"5914:22:75"},"nativeSrc":"5914:22:75","nodeType":"YulExpressionStatement","src":"5914:22:75"},{"body":{"nativeSrc":"5974:16:75","nodeType":"YulBlock","src":"5974:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5983:1:75","nodeType":"YulLiteral","src":"5983:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5986:1:75","nodeType":"YulLiteral","src":"5986:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5976:6:75","nodeType":"YulIdentifier","src":"5976:6:75"},"nativeSrc":"5976:12:75","nodeType":"YulFunctionCall","src":"5976:12:75"},"nativeSrc":"5976:12:75","nodeType":"YulExpressionStatement","src":"5976:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5955:3:75","nodeType":"YulIdentifier","src":"5955:3:75"},{"name":"length","nativeSrc":"5960:6:75","nodeType":"YulIdentifier","src":"5960:6:75"}],"functionName":{"name":"add","nativeSrc":"5951:3:75","nodeType":"YulIdentifier","src":"5951:3:75"},"nativeSrc":"5951:16:75","nodeType":"YulFunctionCall","src":"5951:16:75"},{"name":"end","nativeSrc":"5969:3:75","nodeType":"YulIdentifier","src":"5969:3:75"}],"functionName":{"name":"gt","nativeSrc":"5948:2:75","nodeType":"YulIdentifier","src":"5948:2:75"},"nativeSrc":"5948:25:75","nodeType":"YulFunctionCall","src":"5948:25:75"},"nativeSrc":"5945:45:75","nodeType":"YulIf","src":"5945:45:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6016:6:75","nodeType":"YulIdentifier","src":"6016:6:75"},{"kind":"number","nativeSrc":"6024:4:75","nodeType":"YulLiteral","src":"6024:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6012:3:75","nodeType":"YulIdentifier","src":"6012:3:75"},"nativeSrc":"6012:17:75","nodeType":"YulFunctionCall","src":"6012:17:75"},{"name":"src","nativeSrc":"6031:3:75","nodeType":"YulIdentifier","src":"6031:3:75"},{"name":"length","nativeSrc":"6036:6:75","nodeType":"YulIdentifier","src":"6036:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"5999:12:75","nodeType":"YulIdentifier","src":"5999:12:75"},"nativeSrc":"5999:44:75","nodeType":"YulFunctionCall","src":"5999:44:75"},"nativeSrc":"5999:44:75","nodeType":"YulExpressionStatement","src":"5999:44:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6067:6:75","nodeType":"YulIdentifier","src":"6067:6:75"},{"name":"length","nativeSrc":"6075:6:75","nodeType":"YulIdentifier","src":"6075:6:75"}],"functionName":{"name":"add","nativeSrc":"6063:3:75","nodeType":"YulIdentifier","src":"6063:3:75"},"nativeSrc":"6063:19:75","nodeType":"YulFunctionCall","src":"6063:19:75"},{"kind":"number","nativeSrc":"6084:4:75","nodeType":"YulLiteral","src":"6084:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6059:3:75","nodeType":"YulIdentifier","src":"6059:3:75"},"nativeSrc":"6059:30:75","nodeType":"YulFunctionCall","src":"6059:30:75"},{"kind":"number","nativeSrc":"6091:1:75","nodeType":"YulLiteral","src":"6091:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6052:6:75","nodeType":"YulIdentifier","src":"6052:6:75"},"nativeSrc":"6052:41:75","nodeType":"YulFunctionCall","src":"6052:41:75"},"nativeSrc":"6052:41:75","nodeType":"YulExpressionStatement","src":"6052:41:75"},{"nativeSrc":"6102:15:75","nodeType":"YulAssignment","src":"6102:15:75","value":{"name":"memPtr","nativeSrc":"6111:6:75","nodeType":"YulIdentifier","src":"6111:6:75"},"variableNames":[{"name":"array","nativeSrc":"6102:5:75","nodeType":"YulIdentifier","src":"6102:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"5235:888:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5261:6:75","nodeType":"YulTypedName","src":"5261:6:75","type":""},{"name":"end","nativeSrc":"5269:3:75","nodeType":"YulTypedName","src":"5269:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"5277:5:75","nodeType":"YulTypedName","src":"5277:5:75","type":""}],"src":"5235:888:75"},{"body":{"nativeSrc":"6224:359:75","nodeType":"YulBlock","src":"6224:359:75","statements":[{"body":{"nativeSrc":"6270:16:75","nodeType":"YulBlock","src":"6270:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6279:1:75","nodeType":"YulLiteral","src":"6279:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6282:1:75","nodeType":"YulLiteral","src":"6282:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6272:6:75","nodeType":"YulIdentifier","src":"6272:6:75"},"nativeSrc":"6272:12:75","nodeType":"YulFunctionCall","src":"6272:12:75"},"nativeSrc":"6272:12:75","nodeType":"YulExpressionStatement","src":"6272:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6245:7:75","nodeType":"YulIdentifier","src":"6245:7:75"},{"name":"headStart","nativeSrc":"6254:9:75","nodeType":"YulIdentifier","src":"6254:9:75"}],"functionName":{"name":"sub","nativeSrc":"6241:3:75","nodeType":"YulIdentifier","src":"6241:3:75"},"nativeSrc":"6241:23:75","nodeType":"YulFunctionCall","src":"6241:23:75"},{"kind":"number","nativeSrc":"6266:2:75","nodeType":"YulLiteral","src":"6266:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6237:3:75","nodeType":"YulIdentifier","src":"6237:3:75"},"nativeSrc":"6237:32:75","nodeType":"YulFunctionCall","src":"6237:32:75"},"nativeSrc":"6234:52:75","nodeType":"YulIf","src":"6234:52:75"},{"nativeSrc":"6295:36:75","nodeType":"YulVariableDeclaration","src":"6295:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6321:9:75","nodeType":"YulIdentifier","src":"6321:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6308:12:75","nodeType":"YulIdentifier","src":"6308:12:75"},"nativeSrc":"6308:23:75","nodeType":"YulFunctionCall","src":"6308:23:75"},"variables":[{"name":"value","nativeSrc":"6299:5:75","nodeType":"YulTypedName","src":"6299:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6365:5:75","nodeType":"YulIdentifier","src":"6365:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6340:24:75","nodeType":"YulIdentifier","src":"6340:24:75"},"nativeSrc":"6340:31:75","nodeType":"YulFunctionCall","src":"6340:31:75"},"nativeSrc":"6340:31:75","nodeType":"YulExpressionStatement","src":"6340:31:75"},{"nativeSrc":"6380:15:75","nodeType":"YulAssignment","src":"6380:15:75","value":{"name":"value","nativeSrc":"6390:5:75","nodeType":"YulIdentifier","src":"6390:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6380:6:75","nodeType":"YulIdentifier","src":"6380:6:75"}]},{"nativeSrc":"6404:46:75","nodeType":"YulVariableDeclaration","src":"6404:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6435:9:75","nodeType":"YulIdentifier","src":"6435:9:75"},{"kind":"number","nativeSrc":"6446:2:75","nodeType":"YulLiteral","src":"6446:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6431:3:75","nodeType":"YulIdentifier","src":"6431:3:75"},"nativeSrc":"6431:18:75","nodeType":"YulFunctionCall","src":"6431:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6418:12:75","nodeType":"YulIdentifier","src":"6418:12:75"},"nativeSrc":"6418:32:75","nodeType":"YulFunctionCall","src":"6418:32:75"},"variables":[{"name":"offset","nativeSrc":"6408:6:75","nodeType":"YulTypedName","src":"6408:6:75","type":""}]},{"body":{"nativeSrc":"6493:16:75","nodeType":"YulBlock","src":"6493:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6502:1:75","nodeType":"YulLiteral","src":"6502:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6505:1:75","nodeType":"YulLiteral","src":"6505:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6495:6:75","nodeType":"YulIdentifier","src":"6495:6:75"},"nativeSrc":"6495:12:75","nodeType":"YulFunctionCall","src":"6495:12:75"},"nativeSrc":"6495:12:75","nodeType":"YulExpressionStatement","src":"6495:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6465:6:75","nodeType":"YulIdentifier","src":"6465:6:75"},{"kind":"number","nativeSrc":"6473:18:75","nodeType":"YulLiteral","src":"6473:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6462:2:75","nodeType":"YulIdentifier","src":"6462:2:75"},"nativeSrc":"6462:30:75","nodeType":"YulFunctionCall","src":"6462:30:75"},"nativeSrc":"6459:50:75","nodeType":"YulIf","src":"6459:50:75"},{"nativeSrc":"6518:59:75","nodeType":"YulAssignment","src":"6518:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6549:9:75","nodeType":"YulIdentifier","src":"6549:9:75"},{"name":"offset","nativeSrc":"6560:6:75","nodeType":"YulIdentifier","src":"6560:6:75"}],"functionName":{"name":"add","nativeSrc":"6545:3:75","nodeType":"YulIdentifier","src":"6545:3:75"},"nativeSrc":"6545:22:75","nodeType":"YulFunctionCall","src":"6545:22:75"},{"name":"dataEnd","nativeSrc":"6569:7:75","nodeType":"YulIdentifier","src":"6569:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6528:16:75","nodeType":"YulIdentifier","src":"6528:16:75"},"nativeSrc":"6528:49:75","nodeType":"YulFunctionCall","src":"6528:49:75"},"variableNames":[{"name":"value1","nativeSrc":"6518:6:75","nodeType":"YulIdentifier","src":"6518:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"6128:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6182:9:75","nodeType":"YulTypedName","src":"6182:9:75","type":""},{"name":"dataEnd","nativeSrc":"6193:7:75","nodeType":"YulTypedName","src":"6193:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6205:6:75","nodeType":"YulTypedName","src":"6205:6:75","type":""},{"name":"value1","nativeSrc":"6213:6:75","nodeType":"YulTypedName","src":"6213:6:75","type":""}],"src":"6128:455:75"},{"body":{"nativeSrc":"6675:280:75","nodeType":"YulBlock","src":"6675:280:75","statements":[{"body":{"nativeSrc":"6721:16:75","nodeType":"YulBlock","src":"6721:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6730:1:75","nodeType":"YulLiteral","src":"6730:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6733:1:75","nodeType":"YulLiteral","src":"6733:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6723:6:75","nodeType":"YulIdentifier","src":"6723:6:75"},"nativeSrc":"6723:12:75","nodeType":"YulFunctionCall","src":"6723:12:75"},"nativeSrc":"6723:12:75","nodeType":"YulExpressionStatement","src":"6723:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6696:7:75","nodeType":"YulIdentifier","src":"6696:7:75"},{"name":"headStart","nativeSrc":"6705:9:75","nodeType":"YulIdentifier","src":"6705:9:75"}],"functionName":{"name":"sub","nativeSrc":"6692:3:75","nodeType":"YulIdentifier","src":"6692:3:75"},"nativeSrc":"6692:23:75","nodeType":"YulFunctionCall","src":"6692:23:75"},{"kind":"number","nativeSrc":"6717:2:75","nodeType":"YulLiteral","src":"6717:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6688:3:75","nodeType":"YulIdentifier","src":"6688:3:75"},"nativeSrc":"6688:32:75","nodeType":"YulFunctionCall","src":"6688:32:75"},"nativeSrc":"6685:52:75","nodeType":"YulIf","src":"6685:52:75"},{"nativeSrc":"6746:14:75","nodeType":"YulVariableDeclaration","src":"6746:14:75","value":{"kind":"number","nativeSrc":"6759:1:75","nodeType":"YulLiteral","src":"6759:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6750:5:75","nodeType":"YulTypedName","src":"6750:5:75","type":""}]},{"nativeSrc":"6769:32:75","nodeType":"YulAssignment","src":"6769:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6791:9:75","nodeType":"YulIdentifier","src":"6791:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6778:12:75","nodeType":"YulIdentifier","src":"6778:12:75"},"nativeSrc":"6778:23:75","nodeType":"YulFunctionCall","src":"6778:23:75"},"variableNames":[{"name":"value","nativeSrc":"6769:5:75","nodeType":"YulIdentifier","src":"6769:5:75"}]},{"nativeSrc":"6810:15:75","nodeType":"YulAssignment","src":"6810:15:75","value":{"name":"value","nativeSrc":"6820:5:75","nodeType":"YulIdentifier","src":"6820:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6810:6:75","nodeType":"YulIdentifier","src":"6810:6:75"}]},{"nativeSrc":"6834:47:75","nodeType":"YulVariableDeclaration","src":"6834:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6866:9:75","nodeType":"YulIdentifier","src":"6866:9:75"},{"kind":"number","nativeSrc":"6877:2:75","nodeType":"YulLiteral","src":"6877:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6862:3:75","nodeType":"YulIdentifier","src":"6862:3:75"},"nativeSrc":"6862:18:75","nodeType":"YulFunctionCall","src":"6862:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6849:12:75","nodeType":"YulIdentifier","src":"6849:12:75"},"nativeSrc":"6849:32:75","nodeType":"YulFunctionCall","src":"6849:32:75"},"variables":[{"name":"value_1","nativeSrc":"6838:7:75","nodeType":"YulTypedName","src":"6838:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6915:7:75","nodeType":"YulIdentifier","src":"6915:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6890:24:75","nodeType":"YulIdentifier","src":"6890:24:75"},"nativeSrc":"6890:33:75","nodeType":"YulFunctionCall","src":"6890:33:75"},"nativeSrc":"6890:33:75","nodeType":"YulExpressionStatement","src":"6890:33:75"},{"nativeSrc":"6932:17:75","nodeType":"YulAssignment","src":"6932:17:75","value":{"name":"value_1","nativeSrc":"6942:7:75","nodeType":"YulIdentifier","src":"6942:7:75"},"variableNames":[{"name":"value1","nativeSrc":"6932:6:75","nodeType":"YulIdentifier","src":"6932:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6588:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6633:9:75","nodeType":"YulTypedName","src":"6633:9:75","type":""},{"name":"dataEnd","nativeSrc":"6644:7:75","nodeType":"YulTypedName","src":"6644:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6656:6:75","nodeType":"YulTypedName","src":"6656:6:75","type":""},{"name":"value1","nativeSrc":"6664:6:75","nodeType":"YulTypedName","src":"6664:6:75","type":""}],"src":"6588:367:75"},{"body":{"nativeSrc":"7064:404:75","nodeType":"YulBlock","src":"7064:404:75","statements":[{"body":{"nativeSrc":"7110:16:75","nodeType":"YulBlock","src":"7110:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7119:1:75","nodeType":"YulLiteral","src":"7119:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7122:1:75","nodeType":"YulLiteral","src":"7122:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7112:6:75","nodeType":"YulIdentifier","src":"7112:6:75"},"nativeSrc":"7112:12:75","nodeType":"YulFunctionCall","src":"7112:12:75"},"nativeSrc":"7112:12:75","nodeType":"YulExpressionStatement","src":"7112:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7085:7:75","nodeType":"YulIdentifier","src":"7085:7:75"},{"name":"headStart","nativeSrc":"7094:9:75","nodeType":"YulIdentifier","src":"7094:9:75"}],"functionName":{"name":"sub","nativeSrc":"7081:3:75","nodeType":"YulIdentifier","src":"7081:3:75"},"nativeSrc":"7081:23:75","nodeType":"YulFunctionCall","src":"7081:23:75"},{"kind":"number","nativeSrc":"7106:2:75","nodeType":"YulLiteral","src":"7106:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7077:3:75","nodeType":"YulIdentifier","src":"7077:3:75"},"nativeSrc":"7077:32:75","nodeType":"YulFunctionCall","src":"7077:32:75"},"nativeSrc":"7074:52:75","nodeType":"YulIf","src":"7074:52:75"},{"nativeSrc":"7135:14:75","nodeType":"YulVariableDeclaration","src":"7135:14:75","value":{"kind":"number","nativeSrc":"7148:1:75","nodeType":"YulLiteral","src":"7148:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7139:5:75","nodeType":"YulTypedName","src":"7139:5:75","type":""}]},{"nativeSrc":"7158:32:75","nodeType":"YulAssignment","src":"7158:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7180:9:75","nodeType":"YulIdentifier","src":"7180:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7167:12:75","nodeType":"YulIdentifier","src":"7167:12:75"},"nativeSrc":"7167:23:75","nodeType":"YulFunctionCall","src":"7167:23:75"},"variableNames":[{"name":"value","nativeSrc":"7158:5:75","nodeType":"YulIdentifier","src":"7158:5:75"}]},{"nativeSrc":"7199:15:75","nodeType":"YulAssignment","src":"7199:15:75","value":{"name":"value","nativeSrc":"7209:5:75","nodeType":"YulIdentifier","src":"7209:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7199:6:75","nodeType":"YulIdentifier","src":"7199:6:75"}]},{"nativeSrc":"7223:47:75","nodeType":"YulVariableDeclaration","src":"7223:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7255:9:75","nodeType":"YulIdentifier","src":"7255:9:75"},{"kind":"number","nativeSrc":"7266:2:75","nodeType":"YulLiteral","src":"7266:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7251:3:75","nodeType":"YulIdentifier","src":"7251:3:75"},"nativeSrc":"7251:18:75","nodeType":"YulFunctionCall","src":"7251:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7238:12:75","nodeType":"YulIdentifier","src":"7238:12:75"},"nativeSrc":"7238:32:75","nodeType":"YulFunctionCall","src":"7238:32:75"},"variables":[{"name":"value_1","nativeSrc":"7227:7:75","nodeType":"YulTypedName","src":"7227:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7304:7:75","nodeType":"YulIdentifier","src":"7304:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7279:24:75","nodeType":"YulIdentifier","src":"7279:24:75"},"nativeSrc":"7279:33:75","nodeType":"YulFunctionCall","src":"7279:33:75"},"nativeSrc":"7279:33:75","nodeType":"YulExpressionStatement","src":"7279:33:75"},{"nativeSrc":"7321:17:75","nodeType":"YulAssignment","src":"7321:17:75","value":{"name":"value_1","nativeSrc":"7331:7:75","nodeType":"YulIdentifier","src":"7331:7:75"},"variableNames":[{"name":"value1","nativeSrc":"7321:6:75","nodeType":"YulIdentifier","src":"7321:6:75"}]},{"nativeSrc":"7347:47:75","nodeType":"YulVariableDeclaration","src":"7347:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7379:9:75","nodeType":"YulIdentifier","src":"7379:9:75"},{"kind":"number","nativeSrc":"7390:2:75","nodeType":"YulLiteral","src":"7390:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7375:3:75","nodeType":"YulIdentifier","src":"7375:3:75"},"nativeSrc":"7375:18:75","nodeType":"YulFunctionCall","src":"7375:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7362:12:75","nodeType":"YulIdentifier","src":"7362:12:75"},"nativeSrc":"7362:32:75","nodeType":"YulFunctionCall","src":"7362:32:75"},"variables":[{"name":"value_2","nativeSrc":"7351:7:75","nodeType":"YulTypedName","src":"7351:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"7428:7:75","nodeType":"YulIdentifier","src":"7428:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7403:24:75","nodeType":"YulIdentifier","src":"7403:24:75"},"nativeSrc":"7403:33:75","nodeType":"YulFunctionCall","src":"7403:33:75"},"nativeSrc":"7403:33:75","nodeType":"YulExpressionStatement","src":"7403:33:75"},{"nativeSrc":"7445:17:75","nodeType":"YulAssignment","src":"7445:17:75","value":{"name":"value_2","nativeSrc":"7455:7:75","nodeType":"YulIdentifier","src":"7455:7:75"},"variableNames":[{"name":"value2","nativeSrc":"7445:6:75","nodeType":"YulIdentifier","src":"7445:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"6960:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7014:9:75","nodeType":"YulTypedName","src":"7014:9:75","type":""},{"name":"dataEnd","nativeSrc":"7025:7:75","nodeType":"YulTypedName","src":"7025:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7037:6:75","nodeType":"YulTypedName","src":"7037:6:75","type":""},{"name":"value1","nativeSrc":"7045:6:75","nodeType":"YulTypedName","src":"7045:6:75","type":""},{"name":"value2","nativeSrc":"7053:6:75","nodeType":"YulTypedName","src":"7053:6:75","type":""}],"src":"6960:508:75"},{"body":{"nativeSrc":"7546:85:75","nodeType":"YulBlock","src":"7546:85:75","statements":[{"body":{"nativeSrc":"7585:16:75","nodeType":"YulBlock","src":"7585:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7594:1:75","nodeType":"YulLiteral","src":"7594:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7597:1:75","nodeType":"YulLiteral","src":"7597:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7587:6:75","nodeType":"YulIdentifier","src":"7587:6:75"},"nativeSrc":"7587:12:75","nodeType":"YulFunctionCall","src":"7587:12:75"},"nativeSrc":"7587:12:75","nodeType":"YulExpressionStatement","src":"7587:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"7567:3:75","nodeType":"YulIdentifier","src":"7567:3:75"},{"name":"offset","nativeSrc":"7572:6:75","nodeType":"YulIdentifier","src":"7572:6:75"}],"functionName":{"name":"sub","nativeSrc":"7563:3:75","nodeType":"YulIdentifier","src":"7563:3:75"},"nativeSrc":"7563:16:75","nodeType":"YulFunctionCall","src":"7563:16:75"},{"kind":"number","nativeSrc":"7581:2:75","nodeType":"YulLiteral","src":"7581:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7559:3:75","nodeType":"YulIdentifier","src":"7559:3:75"},"nativeSrc":"7559:25:75","nodeType":"YulFunctionCall","src":"7559:25:75"},"nativeSrc":"7556:45:75","nodeType":"YulIf","src":"7556:45:75"},{"nativeSrc":"7610:15:75","nodeType":"YulAssignment","src":"7610:15:75","value":{"name":"offset","nativeSrc":"7619:6:75","nodeType":"YulIdentifier","src":"7619:6:75"},"variableNames":[{"name":"value","nativeSrc":"7610:5:75","nodeType":"YulIdentifier","src":"7610:5:75"}]}]},"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"7473:158:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7520:6:75","nodeType":"YulTypedName","src":"7520:6:75","type":""},{"name":"end","nativeSrc":"7528:3:75","nodeType":"YulTypedName","src":"7528:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"7536:5:75","nodeType":"YulTypedName","src":"7536:5:75","type":""}],"src":"7473:158:75"},{"body":{"nativeSrc":"7735:262:75","nodeType":"YulBlock","src":"7735:262:75","statements":[{"body":{"nativeSrc":"7781:16:75","nodeType":"YulBlock","src":"7781:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7790:1:75","nodeType":"YulLiteral","src":"7790:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7793:1:75","nodeType":"YulLiteral","src":"7793:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7783:6:75","nodeType":"YulIdentifier","src":"7783:6:75"},"nativeSrc":"7783:12:75","nodeType":"YulFunctionCall","src":"7783:12:75"},"nativeSrc":"7783:12:75","nodeType":"YulExpressionStatement","src":"7783:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7756:7:75","nodeType":"YulIdentifier","src":"7756:7:75"},{"name":"headStart","nativeSrc":"7765:9:75","nodeType":"YulIdentifier","src":"7765:9:75"}],"functionName":{"name":"sub","nativeSrc":"7752:3:75","nodeType":"YulIdentifier","src":"7752:3:75"},"nativeSrc":"7752:23:75","nodeType":"YulFunctionCall","src":"7752:23:75"},{"kind":"number","nativeSrc":"7777:2:75","nodeType":"YulLiteral","src":"7777:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7748:3:75","nodeType":"YulIdentifier","src":"7748:3:75"},"nativeSrc":"7748:32:75","nodeType":"YulFunctionCall","src":"7748:32:75"},"nativeSrc":"7745:52:75","nodeType":"YulIf","src":"7745:52:75"},{"nativeSrc":"7806:37:75","nodeType":"YulVariableDeclaration","src":"7806:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7833:9:75","nodeType":"YulIdentifier","src":"7833:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7820:12:75","nodeType":"YulIdentifier","src":"7820:12:75"},"nativeSrc":"7820:23:75","nodeType":"YulFunctionCall","src":"7820:23:75"},"variables":[{"name":"offset","nativeSrc":"7810:6:75","nodeType":"YulTypedName","src":"7810:6:75","type":""}]},{"body":{"nativeSrc":"7886:16:75","nodeType":"YulBlock","src":"7886:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7895:1:75","nodeType":"YulLiteral","src":"7895:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7898:1:75","nodeType":"YulLiteral","src":"7898:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7888:6:75","nodeType":"YulIdentifier","src":"7888:6:75"},"nativeSrc":"7888:12:75","nodeType":"YulFunctionCall","src":"7888:12:75"},"nativeSrc":"7888:12:75","nodeType":"YulExpressionStatement","src":"7888:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7858:6:75","nodeType":"YulIdentifier","src":"7858:6:75"},{"kind":"number","nativeSrc":"7866:18:75","nodeType":"YulLiteral","src":"7866:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7855:2:75","nodeType":"YulIdentifier","src":"7855:2:75"},"nativeSrc":"7855:30:75","nodeType":"YulFunctionCall","src":"7855:30:75"},"nativeSrc":"7852:50:75","nodeType":"YulIf","src":"7852:50:75"},{"nativeSrc":"7911:80:75","nodeType":"YulAssignment","src":"7911:80:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7963:9:75","nodeType":"YulIdentifier","src":"7963:9:75"},{"name":"offset","nativeSrc":"7974:6:75","nodeType":"YulIdentifier","src":"7974:6:75"}],"functionName":{"name":"add","nativeSrc":"7959:3:75","nodeType":"YulIdentifier","src":"7959:3:75"},"nativeSrc":"7959:22:75","nodeType":"YulFunctionCall","src":"7959:22:75"},{"name":"dataEnd","nativeSrc":"7983:7:75","nodeType":"YulIdentifier","src":"7983:7:75"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"7921:37:75","nodeType":"YulIdentifier","src":"7921:37:75"},"nativeSrc":"7921:70:75","nodeType":"YulFunctionCall","src":"7921:70:75"},"variableNames":[{"name":"value0","nativeSrc":"7911:6:75","nodeType":"YulIdentifier","src":"7911:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_calldata_ptr","nativeSrc":"7636:361:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7701:9:75","nodeType":"YulTypedName","src":"7701:9:75","type":""},{"name":"dataEnd","nativeSrc":"7712:7:75","nodeType":"YulTypedName","src":"7712:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7724:6:75","nodeType":"YulTypedName","src":"7724:6:75","type":""}],"src":"7636:361:75"},{"body":{"nativeSrc":"8172:757:75","nodeType":"YulBlock","src":"8172:757:75","statements":[{"body":{"nativeSrc":"8219:16:75","nodeType":"YulBlock","src":"8219:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8228:1:75","nodeType":"YulLiteral","src":"8228:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8231:1:75","nodeType":"YulLiteral","src":"8231:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8221:6:75","nodeType":"YulIdentifier","src":"8221:6:75"},"nativeSrc":"8221:12:75","nodeType":"YulFunctionCall","src":"8221:12:75"},"nativeSrc":"8221:12:75","nodeType":"YulExpressionStatement","src":"8221:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8193:7:75","nodeType":"YulIdentifier","src":"8193:7:75"},{"name":"headStart","nativeSrc":"8202:9:75","nodeType":"YulIdentifier","src":"8202:9:75"}],"functionName":{"name":"sub","nativeSrc":"8189:3:75","nodeType":"YulIdentifier","src":"8189:3:75"},"nativeSrc":"8189:23:75","nodeType":"YulFunctionCall","src":"8189:23:75"},{"kind":"number","nativeSrc":"8214:3:75","nodeType":"YulLiteral","src":"8214:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"8185:3:75","nodeType":"YulIdentifier","src":"8185:3:75"},"nativeSrc":"8185:33:75","nodeType":"YulFunctionCall","src":"8185:33:75"},"nativeSrc":"8182:53:75","nodeType":"YulIf","src":"8182:53:75"},{"nativeSrc":"8244:37:75","nodeType":"YulVariableDeclaration","src":"8244:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8271:9:75","nodeType":"YulIdentifier","src":"8271:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"8258:12:75","nodeType":"YulIdentifier","src":"8258:12:75"},"nativeSrc":"8258:23:75","nodeType":"YulFunctionCall","src":"8258:23:75"},"variables":[{"name":"offset","nativeSrc":"8248:6:75","nodeType":"YulTypedName","src":"8248:6:75","type":""}]},{"body":{"nativeSrc":"8324:16:75","nodeType":"YulBlock","src":"8324:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8333:1:75","nodeType":"YulLiteral","src":"8333:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8336:1:75","nodeType":"YulLiteral","src":"8336:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8326:6:75","nodeType":"YulIdentifier","src":"8326:6:75"},"nativeSrc":"8326:12:75","nodeType":"YulFunctionCall","src":"8326:12:75"},"nativeSrc":"8326:12:75","nodeType":"YulExpressionStatement","src":"8326:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8296:6:75","nodeType":"YulIdentifier","src":"8296:6:75"},{"kind":"number","nativeSrc":"8304:18:75","nodeType":"YulLiteral","src":"8304:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8293:2:75","nodeType":"YulIdentifier","src":"8293:2:75"},"nativeSrc":"8293:30:75","nodeType":"YulFunctionCall","src":"8293:30:75"},"nativeSrc":"8290:50:75","nodeType":"YulIf","src":"8290:50:75"},{"nativeSrc":"8349:59:75","nodeType":"YulAssignment","src":"8349:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8380:9:75","nodeType":"YulIdentifier","src":"8380:9:75"},{"name":"offset","nativeSrc":"8391:6:75","nodeType":"YulIdentifier","src":"8391:6:75"}],"functionName":{"name":"add","nativeSrc":"8376:3:75","nodeType":"YulIdentifier","src":"8376:3:75"},"nativeSrc":"8376:22:75","nodeType":"YulFunctionCall","src":"8376:22:75"},{"name":"dataEnd","nativeSrc":"8400:7:75","nodeType":"YulIdentifier","src":"8400:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8359:16:75","nodeType":"YulIdentifier","src":"8359:16:75"},"nativeSrc":"8359:49:75","nodeType":"YulFunctionCall","src":"8359:49:75"},"variableNames":[{"name":"value0","nativeSrc":"8349:6:75","nodeType":"YulIdentifier","src":"8349:6:75"}]},{"nativeSrc":"8417:48:75","nodeType":"YulVariableDeclaration","src":"8417:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8450:9:75","nodeType":"YulIdentifier","src":"8450:9:75"},{"kind":"number","nativeSrc":"8461:2:75","nodeType":"YulLiteral","src":"8461:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8446:3:75","nodeType":"YulIdentifier","src":"8446:3:75"},"nativeSrc":"8446:18:75","nodeType":"YulFunctionCall","src":"8446:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8433:12:75","nodeType":"YulIdentifier","src":"8433:12:75"},"nativeSrc":"8433:32:75","nodeType":"YulFunctionCall","src":"8433:32:75"},"variables":[{"name":"offset_1","nativeSrc":"8421:8:75","nodeType":"YulTypedName","src":"8421:8:75","type":""}]},{"body":{"nativeSrc":"8510:16:75","nodeType":"YulBlock","src":"8510:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8519:1:75","nodeType":"YulLiteral","src":"8519:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8522:1:75","nodeType":"YulLiteral","src":"8522:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8512:6:75","nodeType":"YulIdentifier","src":"8512:6:75"},"nativeSrc":"8512:12:75","nodeType":"YulFunctionCall","src":"8512:12:75"},"nativeSrc":"8512:12:75","nodeType":"YulExpressionStatement","src":"8512:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"8480:8:75","nodeType":"YulIdentifier","src":"8480:8:75"},{"kind":"number","nativeSrc":"8490:18:75","nodeType":"YulLiteral","src":"8490:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8477:2:75","nodeType":"YulIdentifier","src":"8477:2:75"},"nativeSrc":"8477:32:75","nodeType":"YulFunctionCall","src":"8477:32:75"},"nativeSrc":"8474:52:75","nodeType":"YulIf","src":"8474:52:75"},{"nativeSrc":"8535:61:75","nodeType":"YulAssignment","src":"8535:61:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8566:9:75","nodeType":"YulIdentifier","src":"8566:9:75"},{"name":"offset_1","nativeSrc":"8577:8:75","nodeType":"YulIdentifier","src":"8577:8:75"}],"functionName":{"name":"add","nativeSrc":"8562:3:75","nodeType":"YulIdentifier","src":"8562:3:75"},"nativeSrc":"8562:24:75","nodeType":"YulFunctionCall","src":"8562:24:75"},{"name":"dataEnd","nativeSrc":"8588:7:75","nodeType":"YulIdentifier","src":"8588:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8545:16:75","nodeType":"YulIdentifier","src":"8545:16:75"},"nativeSrc":"8545:51:75","nodeType":"YulFunctionCall","src":"8545:51:75"},"variableNames":[{"name":"value1","nativeSrc":"8535:6:75","nodeType":"YulIdentifier","src":"8535:6:75"}]},{"nativeSrc":"8605:45:75","nodeType":"YulVariableDeclaration","src":"8605:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8635:9:75","nodeType":"YulIdentifier","src":"8635:9:75"},{"kind":"number","nativeSrc":"8646:2:75","nodeType":"YulLiteral","src":"8646:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8631:3:75","nodeType":"YulIdentifier","src":"8631:3:75"},"nativeSrc":"8631:18:75","nodeType":"YulFunctionCall","src":"8631:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8618:12:75","nodeType":"YulIdentifier","src":"8618:12:75"},"nativeSrc":"8618:32:75","nodeType":"YulFunctionCall","src":"8618:32:75"},"variables":[{"name":"value","nativeSrc":"8609:5:75","nodeType":"YulTypedName","src":"8609:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8684:5:75","nodeType":"YulIdentifier","src":"8684:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8659:24:75","nodeType":"YulIdentifier","src":"8659:24:75"},"nativeSrc":"8659:31:75","nodeType":"YulFunctionCall","src":"8659:31:75"},"nativeSrc":"8659:31:75","nodeType":"YulExpressionStatement","src":"8659:31:75"},{"nativeSrc":"8699:15:75","nodeType":"YulAssignment","src":"8699:15:75","value":{"name":"value","nativeSrc":"8709:5:75","nodeType":"YulIdentifier","src":"8709:5:75"},"variableNames":[{"name":"value2","nativeSrc":"8699:6:75","nodeType":"YulIdentifier","src":"8699:6:75"}]},{"nativeSrc":"8723:48:75","nodeType":"YulVariableDeclaration","src":"8723:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8756:9:75","nodeType":"YulIdentifier","src":"8756:9:75"},{"kind":"number","nativeSrc":"8767:2:75","nodeType":"YulLiteral","src":"8767:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8752:3:75","nodeType":"YulIdentifier","src":"8752:3:75"},"nativeSrc":"8752:18:75","nodeType":"YulFunctionCall","src":"8752:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8739:12:75","nodeType":"YulIdentifier","src":"8739:12:75"},"nativeSrc":"8739:32:75","nodeType":"YulFunctionCall","src":"8739:32:75"},"variables":[{"name":"offset_2","nativeSrc":"8727:8:75","nodeType":"YulTypedName","src":"8727:8:75","type":""}]},{"body":{"nativeSrc":"8816:16:75","nodeType":"YulBlock","src":"8816:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8825:1:75","nodeType":"YulLiteral","src":"8825:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8828:1:75","nodeType":"YulLiteral","src":"8828:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8818:6:75","nodeType":"YulIdentifier","src":"8818:6:75"},"nativeSrc":"8818:12:75","nodeType":"YulFunctionCall","src":"8818:12:75"},"nativeSrc":"8818:12:75","nodeType":"YulExpressionStatement","src":"8818:12:75"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"8786:8:75","nodeType":"YulIdentifier","src":"8786:8:75"},{"kind":"number","nativeSrc":"8796:18:75","nodeType":"YulLiteral","src":"8796:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8783:2:75","nodeType":"YulIdentifier","src":"8783:2:75"},"nativeSrc":"8783:32:75","nodeType":"YulFunctionCall","src":"8783:32:75"},"nativeSrc":"8780:52:75","nodeType":"YulIf","src":"8780:52:75"},{"nativeSrc":"8841:82:75","nodeType":"YulAssignment","src":"8841:82:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8893:9:75","nodeType":"YulIdentifier","src":"8893:9:75"},{"name":"offset_2","nativeSrc":"8904:8:75","nodeType":"YulIdentifier","src":"8904:8:75"}],"functionName":{"name":"add","nativeSrc":"8889:3:75","nodeType":"YulIdentifier","src":"8889:3:75"},"nativeSrc":"8889:24:75","nodeType":"YulFunctionCall","src":"8889:24:75"},{"name":"dataEnd","nativeSrc":"8915:7:75","nodeType":"YulIdentifier","src":"8915:7:75"}],"functionName":{"name":"abi_decode_struct_SwapConfig_calldata","nativeSrc":"8851:37:75","nodeType":"YulIdentifier","src":"8851:37:75"},"nativeSrc":"8851:72:75","nodeType":"YulFunctionCall","src":"8851:72:75"},"variableNames":[{"name":"value3","nativeSrc":"8841:6:75","nodeType":"YulIdentifier","src":"8841:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_struct$_SwapConfig_$624_calldata_ptr","nativeSrc":"8002:927:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8114:9:75","nodeType":"YulTypedName","src":"8114:9:75","type":""},{"name":"dataEnd","nativeSrc":"8125:7:75","nodeType":"YulTypedName","src":"8125:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8137:6:75","nodeType":"YulTypedName","src":"8137:6:75","type":""},{"name":"value1","nativeSrc":"8145:6:75","nodeType":"YulTypedName","src":"8145:6:75","type":""},{"name":"value2","nativeSrc":"8153:6:75","nodeType":"YulTypedName","src":"8153:6:75","type":""},{"name":"value3","nativeSrc":"8161:6:75","nodeType":"YulTypedName","src":"8161:6:75","type":""}],"src":"8002:927:75"},{"body":{"nativeSrc":"9021:301:75","nodeType":"YulBlock","src":"9021:301:75","statements":[{"body":{"nativeSrc":"9067:16:75","nodeType":"YulBlock","src":"9067:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9076:1:75","nodeType":"YulLiteral","src":"9076:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9079:1:75","nodeType":"YulLiteral","src":"9079:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9069:6:75","nodeType":"YulIdentifier","src":"9069:6:75"},"nativeSrc":"9069:12:75","nodeType":"YulFunctionCall","src":"9069:12:75"},"nativeSrc":"9069:12:75","nodeType":"YulExpressionStatement","src":"9069:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9042:7:75","nodeType":"YulIdentifier","src":"9042:7:75"},{"name":"headStart","nativeSrc":"9051:9:75","nodeType":"YulIdentifier","src":"9051:9:75"}],"functionName":{"name":"sub","nativeSrc":"9038:3:75","nodeType":"YulIdentifier","src":"9038:3:75"},"nativeSrc":"9038:23:75","nodeType":"YulFunctionCall","src":"9038:23:75"},{"kind":"number","nativeSrc":"9063:2:75","nodeType":"YulLiteral","src":"9063:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9034:3:75","nodeType":"YulIdentifier","src":"9034:3:75"},"nativeSrc":"9034:32:75","nodeType":"YulFunctionCall","src":"9034:32:75"},"nativeSrc":"9031:52:75","nodeType":"YulIf","src":"9031:52:75"},{"nativeSrc":"9092:36:75","nodeType":"YulVariableDeclaration","src":"9092:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9118:9:75","nodeType":"YulIdentifier","src":"9118:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"9105:12:75","nodeType":"YulIdentifier","src":"9105:12:75"},"nativeSrc":"9105:23:75","nodeType":"YulFunctionCall","src":"9105:23:75"},"variables":[{"name":"value","nativeSrc":"9096:5:75","nodeType":"YulTypedName","src":"9096:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9162:5:75","nodeType":"YulIdentifier","src":"9162:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9137:24:75","nodeType":"YulIdentifier","src":"9137:24:75"},"nativeSrc":"9137:31:75","nodeType":"YulFunctionCall","src":"9137:31:75"},"nativeSrc":"9137:31:75","nodeType":"YulExpressionStatement","src":"9137:31:75"},{"nativeSrc":"9177:15:75","nodeType":"YulAssignment","src":"9177:15:75","value":{"name":"value","nativeSrc":"9187:5:75","nodeType":"YulIdentifier","src":"9187:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9177:6:75","nodeType":"YulIdentifier","src":"9177:6:75"}]},{"nativeSrc":"9201:47:75","nodeType":"YulVariableDeclaration","src":"9201:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9233:9:75","nodeType":"YulIdentifier","src":"9233:9:75"},{"kind":"number","nativeSrc":"9244:2:75","nodeType":"YulLiteral","src":"9244:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9229:3:75","nodeType":"YulIdentifier","src":"9229:3:75"},"nativeSrc":"9229:18:75","nodeType":"YulFunctionCall","src":"9229:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9216:12:75","nodeType":"YulIdentifier","src":"9216:12:75"},"nativeSrc":"9216:32:75","nodeType":"YulFunctionCall","src":"9216:32:75"},"variables":[{"name":"value_1","nativeSrc":"9205:7:75","nodeType":"YulTypedName","src":"9205:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"9282:7:75","nodeType":"YulIdentifier","src":"9282:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9257:24:75","nodeType":"YulIdentifier","src":"9257:24:75"},"nativeSrc":"9257:33:75","nodeType":"YulFunctionCall","src":"9257:33:75"},"nativeSrc":"9257:33:75","nodeType":"YulExpressionStatement","src":"9257:33:75"},{"nativeSrc":"9299:17:75","nodeType":"YulAssignment","src":"9299:17:75","value":{"name":"value_1","nativeSrc":"9309:7:75","nodeType":"YulIdentifier","src":"9309:7:75"},"variableNames":[{"name":"value1","nativeSrc":"9299:6:75","nodeType":"YulIdentifier","src":"9299:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"8934:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8979:9:75","nodeType":"YulTypedName","src":"8979:9:75","type":""},{"name":"dataEnd","nativeSrc":"8990:7:75","nodeType":"YulTypedName","src":"8990:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9002:6:75","nodeType":"YulTypedName","src":"9002:6:75","type":""},{"name":"value1","nativeSrc":"9010:6:75","nodeType":"YulTypedName","src":"9010:6:75","type":""}],"src":"8934:388:75"},{"body":{"nativeSrc":"9408:103:75","nodeType":"YulBlock","src":"9408:103:75","statements":[{"body":{"nativeSrc":"9454:16:75","nodeType":"YulBlock","src":"9454:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9463:1:75","nodeType":"YulLiteral","src":"9463:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9466:1:75","nodeType":"YulLiteral","src":"9466:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9456:6:75","nodeType":"YulIdentifier","src":"9456:6:75"},"nativeSrc":"9456:12:75","nodeType":"YulFunctionCall","src":"9456:12:75"},"nativeSrc":"9456:12:75","nodeType":"YulExpressionStatement","src":"9456:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9429:7:75","nodeType":"YulIdentifier","src":"9429:7:75"},{"name":"headStart","nativeSrc":"9438:9:75","nodeType":"YulIdentifier","src":"9438:9:75"}],"functionName":{"name":"sub","nativeSrc":"9425:3:75","nodeType":"YulIdentifier","src":"9425:3:75"},"nativeSrc":"9425:23:75","nodeType":"YulFunctionCall","src":"9425:23:75"},{"kind":"number","nativeSrc":"9450:2:75","nodeType":"YulLiteral","src":"9450:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9421:3:75","nodeType":"YulIdentifier","src":"9421:3:75"},"nativeSrc":"9421:32:75","nodeType":"YulFunctionCall","src":"9421:32:75"},"nativeSrc":"9418:52:75","nodeType":"YulIf","src":"9418:52:75"},{"nativeSrc":"9479:26:75","nodeType":"YulAssignment","src":"9479:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9495:9:75","nodeType":"YulIdentifier","src":"9495:9:75"}],"functionName":{"name":"mload","nativeSrc":"9489:5:75","nodeType":"YulIdentifier","src":"9489:5:75"},"nativeSrc":"9489:16:75","nodeType":"YulFunctionCall","src":"9489:16:75"},"variableNames":[{"name":"value0","nativeSrc":"9479:6:75","nodeType":"YulIdentifier","src":"9479:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"9327:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9374:9:75","nodeType":"YulTypedName","src":"9374:9:75","type":""},{"name":"dataEnd","nativeSrc":"9385:7:75","nodeType":"YulTypedName","src":"9385:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9397:6:75","nodeType":"YulTypedName","src":"9397:6:75","type":""}],"src":"9327:184:75"},{"body":{"nativeSrc":"9571:325:75","nodeType":"YulBlock","src":"9571:325:75","statements":[{"nativeSrc":"9581:22:75","nodeType":"YulAssignment","src":"9581:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"9595:1:75","nodeType":"YulLiteral","src":"9595:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"9598:4:75","nodeType":"YulIdentifier","src":"9598:4:75"}],"functionName":{"name":"shr","nativeSrc":"9591:3:75","nodeType":"YulIdentifier","src":"9591:3:75"},"nativeSrc":"9591:12:75","nodeType":"YulFunctionCall","src":"9591:12:75"},"variableNames":[{"name":"length","nativeSrc":"9581:6:75","nodeType":"YulIdentifier","src":"9581:6:75"}]},{"nativeSrc":"9612:38:75","nodeType":"YulVariableDeclaration","src":"9612:38:75","value":{"arguments":[{"name":"data","nativeSrc":"9642:4:75","nodeType":"YulIdentifier","src":"9642:4:75"},{"kind":"number","nativeSrc":"9648:1:75","nodeType":"YulLiteral","src":"9648:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"9638:3:75","nodeType":"YulIdentifier","src":"9638:3:75"},"nativeSrc":"9638:12:75","nodeType":"YulFunctionCall","src":"9638:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"9616:18:75","nodeType":"YulTypedName","src":"9616:18:75","type":""}]},{"body":{"nativeSrc":"9689:31:75","nodeType":"YulBlock","src":"9689:31:75","statements":[{"nativeSrc":"9691:27:75","nodeType":"YulAssignment","src":"9691:27:75","value":{"arguments":[{"name":"length","nativeSrc":"9705:6:75","nodeType":"YulIdentifier","src":"9705:6:75"},{"kind":"number","nativeSrc":"9713:4:75","nodeType":"YulLiteral","src":"9713:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"9701:3:75","nodeType":"YulIdentifier","src":"9701:3:75"},"nativeSrc":"9701:17:75","nodeType":"YulFunctionCall","src":"9701:17:75"},"variableNames":[{"name":"length","nativeSrc":"9691:6:75","nodeType":"YulIdentifier","src":"9691:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"9669:18:75","nodeType":"YulIdentifier","src":"9669:18:75"}],"functionName":{"name":"iszero","nativeSrc":"9662:6:75","nodeType":"YulIdentifier","src":"9662:6:75"},"nativeSrc":"9662:26:75","nodeType":"YulFunctionCall","src":"9662:26:75"},"nativeSrc":"9659:61:75","nodeType":"YulIf","src":"9659:61:75"},{"body":{"nativeSrc":"9779:111:75","nodeType":"YulBlock","src":"9779:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9800:1:75","nodeType":"YulLiteral","src":"9800:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9807:3:75","nodeType":"YulLiteral","src":"9807:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"9812:10:75","nodeType":"YulLiteral","src":"9812:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9803:3:75","nodeType":"YulIdentifier","src":"9803:3:75"},"nativeSrc":"9803:20:75","nodeType":"YulFunctionCall","src":"9803:20:75"}],"functionName":{"name":"mstore","nativeSrc":"9793:6:75","nodeType":"YulIdentifier","src":"9793:6:75"},"nativeSrc":"9793:31:75","nodeType":"YulFunctionCall","src":"9793:31:75"},"nativeSrc":"9793:31:75","nodeType":"YulExpressionStatement","src":"9793:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9844:1:75","nodeType":"YulLiteral","src":"9844:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"9847:4:75","nodeType":"YulLiteral","src":"9847:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"9837:6:75","nodeType":"YulIdentifier","src":"9837:6:75"},"nativeSrc":"9837:15:75","nodeType":"YulFunctionCall","src":"9837:15:75"},"nativeSrc":"9837:15:75","nodeType":"YulExpressionStatement","src":"9837:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9872:1:75","nodeType":"YulLiteral","src":"9872:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9875:4:75","nodeType":"YulLiteral","src":"9875:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9865:6:75","nodeType":"YulIdentifier","src":"9865:6:75"},"nativeSrc":"9865:15:75","nodeType":"YulFunctionCall","src":"9865:15:75"},"nativeSrc":"9865:15:75","nodeType":"YulExpressionStatement","src":"9865:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"9735:18:75","nodeType":"YulIdentifier","src":"9735:18:75"},{"arguments":[{"name":"length","nativeSrc":"9758:6:75","nodeType":"YulIdentifier","src":"9758:6:75"},{"kind":"number","nativeSrc":"9766:2:75","nodeType":"YulLiteral","src":"9766:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"9755:2:75","nodeType":"YulIdentifier","src":"9755:2:75"},"nativeSrc":"9755:14:75","nodeType":"YulFunctionCall","src":"9755:14:75"}],"functionName":{"name":"eq","nativeSrc":"9732:2:75","nodeType":"YulIdentifier","src":"9732:2:75"},"nativeSrc":"9732:38:75","nodeType":"YulFunctionCall","src":"9732:38:75"},"nativeSrc":"9729:161:75","nodeType":"YulIf","src":"9729:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"9516:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9551:4:75","nodeType":"YulTypedName","src":"9551:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"9560:6:75","nodeType":"YulTypedName","src":"9560:6:75","type":""}],"src":"9516:380:75"},{"body":{"nativeSrc":"9933:95:75","nodeType":"YulBlock","src":"9933:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9950:1:75","nodeType":"YulLiteral","src":"9950:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9957:3:75","nodeType":"YulLiteral","src":"9957:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"9962:10:75","nodeType":"YulLiteral","src":"9962:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9953:3:75","nodeType":"YulIdentifier","src":"9953:3:75"},"nativeSrc":"9953:20:75","nodeType":"YulFunctionCall","src":"9953:20:75"}],"functionName":{"name":"mstore","nativeSrc":"9943:6:75","nodeType":"YulIdentifier","src":"9943:6:75"},"nativeSrc":"9943:31:75","nodeType":"YulFunctionCall","src":"9943:31:75"},"nativeSrc":"9943:31:75","nodeType":"YulExpressionStatement","src":"9943:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9990:1:75","nodeType":"YulLiteral","src":"9990:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"9993:4:75","nodeType":"YulLiteral","src":"9993:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9983:6:75","nodeType":"YulIdentifier","src":"9983:6:75"},"nativeSrc":"9983:15:75","nodeType":"YulFunctionCall","src":"9983:15:75"},"nativeSrc":"9983:15:75","nodeType":"YulExpressionStatement","src":"9983:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10014:1:75","nodeType":"YulLiteral","src":"10014:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10017:4:75","nodeType":"YulLiteral","src":"10017:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10007:6:75","nodeType":"YulIdentifier","src":"10007:6:75"},"nativeSrc":"10007:15:75","nodeType":"YulFunctionCall","src":"10007:15:75"},"nativeSrc":"10007:15:75","nodeType":"YulExpressionStatement","src":"10007:15:75"}]},"name":"panic_error_0x11","nativeSrc":"9901:127:75","nodeType":"YulFunctionDefinition","src":"9901:127:75"},{"body":{"nativeSrc":"10079:102:75","nodeType":"YulBlock","src":"10079:102:75","statements":[{"nativeSrc":"10089:38:75","nodeType":"YulAssignment","src":"10089:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"10104:1:75","nodeType":"YulIdentifier","src":"10104:1:75"},{"kind":"number","nativeSrc":"10107:4:75","nodeType":"YulLiteral","src":"10107:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10100:3:75","nodeType":"YulIdentifier","src":"10100:3:75"},"nativeSrc":"10100:12:75","nodeType":"YulFunctionCall","src":"10100:12:75"},{"arguments":[{"name":"y","nativeSrc":"10118:1:75","nodeType":"YulIdentifier","src":"10118:1:75"},{"kind":"number","nativeSrc":"10121:4:75","nodeType":"YulLiteral","src":"10121:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10114:3:75","nodeType":"YulIdentifier","src":"10114:3:75"},"nativeSrc":"10114:12:75","nodeType":"YulFunctionCall","src":"10114:12:75"}],"functionName":{"name":"add","nativeSrc":"10096:3:75","nodeType":"YulIdentifier","src":"10096:3:75"},"nativeSrc":"10096:31:75","nodeType":"YulFunctionCall","src":"10096:31:75"},"variableNames":[{"name":"sum","nativeSrc":"10089:3:75","nodeType":"YulIdentifier","src":"10089:3:75"}]},{"body":{"nativeSrc":"10153:22:75","nodeType":"YulBlock","src":"10153:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10155:16:75","nodeType":"YulIdentifier","src":"10155:16:75"},"nativeSrc":"10155:18:75","nodeType":"YulFunctionCall","src":"10155:18:75"},"nativeSrc":"10155:18:75","nodeType":"YulExpressionStatement","src":"10155:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"10142:3:75","nodeType":"YulIdentifier","src":"10142:3:75"},{"kind":"number","nativeSrc":"10147:4:75","nodeType":"YulLiteral","src":"10147:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"10139:2:75","nodeType":"YulIdentifier","src":"10139:2:75"},"nativeSrc":"10139:13:75","nodeType":"YulFunctionCall","src":"10139:13:75"},"nativeSrc":"10136:39:75","nodeType":"YulIf","src":"10136:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"10033:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10062:1:75","nodeType":"YulTypedName","src":"10062:1:75","type":""},{"name":"y","nativeSrc":"10065:1:75","nodeType":"YulTypedName","src":"10065:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"10071:3:75","nodeType":"YulTypedName","src":"10071:3:75","type":""}],"src":"10033:148:75"},{"body":{"nativeSrc":"10243:107:75","nodeType":"YulBlock","src":"10243:107:75","statements":[{"nativeSrc":"10253:22:75","nodeType":"YulAssignment","src":"10253:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"10268:6:75","nodeType":"YulIdentifier","src":"10268:6:75"}],"functionName":{"name":"mload","nativeSrc":"10262:5:75","nodeType":"YulIdentifier","src":"10262:5:75"},"nativeSrc":"10262:13:75","nodeType":"YulFunctionCall","src":"10262:13:75"},"variableNames":[{"name":"value","nativeSrc":"10253:5:75","nodeType":"YulIdentifier","src":"10253:5:75"}]},{"body":{"nativeSrc":"10328:16:75","nodeType":"YulBlock","src":"10328:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10337:1:75","nodeType":"YulLiteral","src":"10337:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10340:1:75","nodeType":"YulLiteral","src":"10340:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10330:6:75","nodeType":"YulIdentifier","src":"10330:6:75"},"nativeSrc":"10330:12:75","nodeType":"YulFunctionCall","src":"10330:12:75"},"nativeSrc":"10330:12:75","nodeType":"YulExpressionStatement","src":"10330:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10297:5:75","nodeType":"YulIdentifier","src":"10297:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10318:5:75","nodeType":"YulIdentifier","src":"10318:5:75"}],"functionName":{"name":"iszero","nativeSrc":"10311:6:75","nodeType":"YulIdentifier","src":"10311:6:75"},"nativeSrc":"10311:13:75","nodeType":"YulFunctionCall","src":"10311:13:75"}],"functionName":{"name":"iszero","nativeSrc":"10304:6:75","nodeType":"YulIdentifier","src":"10304:6:75"},"nativeSrc":"10304:21:75","nodeType":"YulFunctionCall","src":"10304:21:75"}],"functionName":{"name":"eq","nativeSrc":"10294:2:75","nodeType":"YulIdentifier","src":"10294:2:75"},"nativeSrc":"10294:32:75","nodeType":"YulFunctionCall","src":"10294:32:75"}],"functionName":{"name":"iszero","nativeSrc":"10287:6:75","nodeType":"YulIdentifier","src":"10287:6:75"},"nativeSrc":"10287:40:75","nodeType":"YulFunctionCall","src":"10287:40:75"},"nativeSrc":"10284:60:75","nodeType":"YulIf","src":"10284:60:75"}]},"name":"abi_decode_bool_fromMemory","nativeSrc":"10186:164:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10222:6:75","nodeType":"YulTypedName","src":"10222:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"10233:5:75","nodeType":"YulTypedName","src":"10233:5:75","type":""}],"src":"10186:164:75"},{"body":{"nativeSrc":"10433:124:75","nodeType":"YulBlock","src":"10433:124:75","statements":[{"body":{"nativeSrc":"10479:16:75","nodeType":"YulBlock","src":"10479:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10488:1:75","nodeType":"YulLiteral","src":"10488:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10491:1:75","nodeType":"YulLiteral","src":"10491:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10481:6:75","nodeType":"YulIdentifier","src":"10481:6:75"},"nativeSrc":"10481:12:75","nodeType":"YulFunctionCall","src":"10481:12:75"},"nativeSrc":"10481:12:75","nodeType":"YulExpressionStatement","src":"10481:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10454:7:75","nodeType":"YulIdentifier","src":"10454:7:75"},{"name":"headStart","nativeSrc":"10463:9:75","nodeType":"YulIdentifier","src":"10463:9:75"}],"functionName":{"name":"sub","nativeSrc":"10450:3:75","nodeType":"YulIdentifier","src":"10450:3:75"},"nativeSrc":"10450:23:75","nodeType":"YulFunctionCall","src":"10450:23:75"},{"kind":"number","nativeSrc":"10475:2:75","nodeType":"YulLiteral","src":"10475:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10446:3:75","nodeType":"YulIdentifier","src":"10446:3:75"},"nativeSrc":"10446:32:75","nodeType":"YulFunctionCall","src":"10446:32:75"},"nativeSrc":"10443:52:75","nodeType":"YulIf","src":"10443:52:75"},{"nativeSrc":"10504:47:75","nodeType":"YulAssignment","src":"10504:47:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10541:9:75","nodeType":"YulIdentifier","src":"10541:9:75"}],"functionName":{"name":"abi_decode_bool_fromMemory","nativeSrc":"10514:26:75","nodeType":"YulIdentifier","src":"10514:26:75"},"nativeSrc":"10514:37:75","nodeType":"YulFunctionCall","src":"10514:37:75"},"variableNames":[{"name":"value0","nativeSrc":"10504:6:75","nodeType":"YulIdentifier","src":"10504:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"10355:202:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10399:9:75","nodeType":"YulTypedName","src":"10399:9:75","type":""},{"name":"dataEnd","nativeSrc":"10410:7:75","nodeType":"YulTypedName","src":"10410:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10422:6:75","nodeType":"YulTypedName","src":"10422:6:75","type":""}],"src":"10355:202:75"},{"body":{"nativeSrc":"10673:392:75","nodeType":"YulBlock","src":"10673:392:75","statements":[{"body":{"nativeSrc":"10719:16:75","nodeType":"YulBlock","src":"10719:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10728:1:75","nodeType":"YulLiteral","src":"10728:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10731:1:75","nodeType":"YulLiteral","src":"10731:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10721:6:75","nodeType":"YulIdentifier","src":"10721:6:75"},"nativeSrc":"10721:12:75","nodeType":"YulFunctionCall","src":"10721:12:75"},"nativeSrc":"10721:12:75","nodeType":"YulExpressionStatement","src":"10721:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10694:7:75","nodeType":"YulIdentifier","src":"10694:7:75"},{"name":"headStart","nativeSrc":"10703:9:75","nodeType":"YulIdentifier","src":"10703:9:75"}],"functionName":{"name":"sub","nativeSrc":"10690:3:75","nodeType":"YulIdentifier","src":"10690:3:75"},"nativeSrc":"10690:23:75","nodeType":"YulFunctionCall","src":"10690:23:75"},{"kind":"number","nativeSrc":"10715:2:75","nodeType":"YulLiteral","src":"10715:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"10686:3:75","nodeType":"YulIdentifier","src":"10686:3:75"},"nativeSrc":"10686:32:75","nodeType":"YulFunctionCall","src":"10686:32:75"},"nativeSrc":"10683:52:75","nodeType":"YulIf","src":"10683:52:75"},{"nativeSrc":"10744:29:75","nodeType":"YulVariableDeclaration","src":"10744:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10763:9:75","nodeType":"YulIdentifier","src":"10763:9:75"}],"functionName":{"name":"mload","nativeSrc":"10757:5:75","nodeType":"YulIdentifier","src":"10757:5:75"},"nativeSrc":"10757:16:75","nodeType":"YulFunctionCall","src":"10757:16:75"},"variables":[{"name":"value","nativeSrc":"10748:5:75","nodeType":"YulTypedName","src":"10748:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10807:5:75","nodeType":"YulIdentifier","src":"10807:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10782:24:75","nodeType":"YulIdentifier","src":"10782:24:75"},"nativeSrc":"10782:31:75","nodeType":"YulFunctionCall","src":"10782:31:75"},"nativeSrc":"10782:31:75","nodeType":"YulExpressionStatement","src":"10782:31:75"},{"nativeSrc":"10822:15:75","nodeType":"YulAssignment","src":"10822:15:75","value":{"name":"value","nativeSrc":"10832:5:75","nodeType":"YulIdentifier","src":"10832:5:75"},"variableNames":[{"name":"value0","nativeSrc":"10822:6:75","nodeType":"YulIdentifier","src":"10822:6:75"}]},{"nativeSrc":"10846:40:75","nodeType":"YulVariableDeclaration","src":"10846:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10871:9:75","nodeType":"YulIdentifier","src":"10871:9:75"},{"kind":"number","nativeSrc":"10882:2:75","nodeType":"YulLiteral","src":"10882:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10867:3:75","nodeType":"YulIdentifier","src":"10867:3:75"},"nativeSrc":"10867:18:75","nodeType":"YulFunctionCall","src":"10867:18:75"}],"functionName":{"name":"mload","nativeSrc":"10861:5:75","nodeType":"YulIdentifier","src":"10861:5:75"},"nativeSrc":"10861:25:75","nodeType":"YulFunctionCall","src":"10861:25:75"},"variables":[{"name":"value_1","nativeSrc":"10850:7:75","nodeType":"YulTypedName","src":"10850:7:75","type":""}]},{"body":{"nativeSrc":"10952:16:75","nodeType":"YulBlock","src":"10952:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10961:1:75","nodeType":"YulLiteral","src":"10961:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10964:1:75","nodeType":"YulLiteral","src":"10964:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10954:6:75","nodeType":"YulIdentifier","src":"10954:6:75"},"nativeSrc":"10954:12:75","nodeType":"YulFunctionCall","src":"10954:12:75"},"nativeSrc":"10954:12:75","nodeType":"YulExpressionStatement","src":"10954:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"10908:7:75","nodeType":"YulIdentifier","src":"10908:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"10921:7:75","nodeType":"YulIdentifier","src":"10921:7:75"},{"kind":"number","nativeSrc":"10930:18:75","nodeType":"YulLiteral","src":"10930:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"10917:3:75","nodeType":"YulIdentifier","src":"10917:3:75"},"nativeSrc":"10917:32:75","nodeType":"YulFunctionCall","src":"10917:32:75"}],"functionName":{"name":"eq","nativeSrc":"10905:2:75","nodeType":"YulIdentifier","src":"10905:2:75"},"nativeSrc":"10905:45:75","nodeType":"YulFunctionCall","src":"10905:45:75"}],"functionName":{"name":"iszero","nativeSrc":"10898:6:75","nodeType":"YulIdentifier","src":"10898:6:75"},"nativeSrc":"10898:53:75","nodeType":"YulFunctionCall","src":"10898:53:75"},"nativeSrc":"10895:73:75","nodeType":"YulIf","src":"10895:73:75"},{"nativeSrc":"10977:17:75","nodeType":"YulAssignment","src":"10977:17:75","value":{"name":"value_1","nativeSrc":"10987:7:75","nodeType":"YulIdentifier","src":"10987:7:75"},"variableNames":[{"name":"value1","nativeSrc":"10977:6:75","nodeType":"YulIdentifier","src":"10977:6:75"}]},{"nativeSrc":"11003:56:75","nodeType":"YulAssignment","src":"11003:56:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11044:9:75","nodeType":"YulIdentifier","src":"11044:9:75"},{"kind":"number","nativeSrc":"11055:2:75","nodeType":"YulLiteral","src":"11055:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11040:3:75","nodeType":"YulIdentifier","src":"11040:3:75"},"nativeSrc":"11040:18:75","nodeType":"YulFunctionCall","src":"11040:18:75"}],"functionName":{"name":"abi_decode_bool_fromMemory","nativeSrc":"11013:26:75","nodeType":"YulIdentifier","src":"11013:26:75"},"nativeSrc":"11013:46:75","nodeType":"YulFunctionCall","src":"11013:46:75"},"variableNames":[{"name":"value2","nativeSrc":"11003:6:75","nodeType":"YulIdentifier","src":"11003:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory","nativeSrc":"10562:503:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10623:9:75","nodeType":"YulTypedName","src":"10623:9:75","type":""},{"name":"dataEnd","nativeSrc":"10634:7:75","nodeType":"YulTypedName","src":"10634:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10646:6:75","nodeType":"YulTypedName","src":"10646:6:75","type":""},{"name":"value1","nativeSrc":"10654:6:75","nodeType":"YulTypedName","src":"10654:6:75","type":""},{"name":"value2","nativeSrc":"10662:6:75","nodeType":"YulTypedName","src":"10662:6:75","type":""}],"src":"10562:503:75"},{"body":{"nativeSrc":"11221:230:75","nodeType":"YulBlock","src":"11221:230:75","statements":[{"nativeSrc":"11231:26:75","nodeType":"YulAssignment","src":"11231:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11243:9:75","nodeType":"YulIdentifier","src":"11243:9:75"},{"kind":"number","nativeSrc":"11254:2:75","nodeType":"YulLiteral","src":"11254:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11239:3:75","nodeType":"YulIdentifier","src":"11239:3:75"},"nativeSrc":"11239:18:75","nodeType":"YulFunctionCall","src":"11239:18:75"},"variableNames":[{"name":"tail","nativeSrc":"11231:4:75","nodeType":"YulIdentifier","src":"11231:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11273:9:75","nodeType":"YulIdentifier","src":"11273:9:75"},{"arguments":[{"name":"value0","nativeSrc":"11288:6:75","nodeType":"YulIdentifier","src":"11288:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11304:3:75","nodeType":"YulLiteral","src":"11304:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11309:1:75","nodeType":"YulLiteral","src":"11309:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11300:3:75","nodeType":"YulIdentifier","src":"11300:3:75"},"nativeSrc":"11300:11:75","nodeType":"YulFunctionCall","src":"11300:11:75"},{"kind":"number","nativeSrc":"11313:1:75","nodeType":"YulLiteral","src":"11313:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11296:3:75","nodeType":"YulIdentifier","src":"11296:3:75"},"nativeSrc":"11296:19:75","nodeType":"YulFunctionCall","src":"11296:19:75"}],"functionName":{"name":"and","nativeSrc":"11284:3:75","nodeType":"YulIdentifier","src":"11284:3:75"},"nativeSrc":"11284:32:75","nodeType":"YulFunctionCall","src":"11284:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11266:6:75","nodeType":"YulIdentifier","src":"11266:6:75"},"nativeSrc":"11266:51:75","nodeType":"YulFunctionCall","src":"11266:51:75"},"nativeSrc":"11266:51:75","nodeType":"YulExpressionStatement","src":"11266:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11337:9:75","nodeType":"YulIdentifier","src":"11337:9:75"},{"kind":"number","nativeSrc":"11348:2:75","nodeType":"YulLiteral","src":"11348:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11333:3:75","nodeType":"YulIdentifier","src":"11333:3:75"},"nativeSrc":"11333:18:75","nodeType":"YulFunctionCall","src":"11333:18:75"},{"arguments":[{"name":"value1","nativeSrc":"11357:6:75","nodeType":"YulIdentifier","src":"11357:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11373:3:75","nodeType":"YulLiteral","src":"11373:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11378:1:75","nodeType":"YulLiteral","src":"11378:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11369:3:75","nodeType":"YulIdentifier","src":"11369:3:75"},"nativeSrc":"11369:11:75","nodeType":"YulFunctionCall","src":"11369:11:75"},{"kind":"number","nativeSrc":"11382:1:75","nodeType":"YulLiteral","src":"11382:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11365:3:75","nodeType":"YulIdentifier","src":"11365:3:75"},"nativeSrc":"11365:19:75","nodeType":"YulFunctionCall","src":"11365:19:75"}],"functionName":{"name":"and","nativeSrc":"11353:3:75","nodeType":"YulIdentifier","src":"11353:3:75"},"nativeSrc":"11353:32:75","nodeType":"YulFunctionCall","src":"11353:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11326:6:75","nodeType":"YulIdentifier","src":"11326:6:75"},"nativeSrc":"11326:60:75","nodeType":"YulFunctionCall","src":"11326:60:75"},"nativeSrc":"11326:60:75","nodeType":"YulExpressionStatement","src":"11326:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11406:9:75","nodeType":"YulIdentifier","src":"11406:9:75"},{"kind":"number","nativeSrc":"11417:2:75","nodeType":"YulLiteral","src":"11417:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11402:3:75","nodeType":"YulIdentifier","src":"11402:3:75"},"nativeSrc":"11402:18:75","nodeType":"YulFunctionCall","src":"11402:18:75"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"11436:6:75","nodeType":"YulIdentifier","src":"11436:6:75"}],"functionName":{"name":"iszero","nativeSrc":"11429:6:75","nodeType":"YulIdentifier","src":"11429:6:75"},"nativeSrc":"11429:14:75","nodeType":"YulFunctionCall","src":"11429:14:75"}],"functionName":{"name":"iszero","nativeSrc":"11422:6:75","nodeType":"YulIdentifier","src":"11422:6:75"},"nativeSrc":"11422:22:75","nodeType":"YulFunctionCall","src":"11422:22:75"}],"functionName":{"name":"mstore","nativeSrc":"11395:6:75","nodeType":"YulIdentifier","src":"11395:6:75"},"nativeSrc":"11395:50:75","nodeType":"YulFunctionCall","src":"11395:50:75"},"nativeSrc":"11395:50:75","nodeType":"YulExpressionStatement","src":"11395:50:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nativeSrc":"11070:381:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11174:9:75","nodeType":"YulTypedName","src":"11174:9:75","type":""},{"name":"value2","nativeSrc":"11185:6:75","nodeType":"YulTypedName","src":"11185:6:75","type":""},{"name":"value1","nativeSrc":"11193:6:75","nodeType":"YulTypedName","src":"11193:6:75","type":""},{"name":"value0","nativeSrc":"11201:6:75","nodeType":"YulTypedName","src":"11201:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11212:4:75","nodeType":"YulTypedName","src":"11212:4:75","type":""}],"src":"11070:381:75"},{"body":{"nativeSrc":"11517:271:75","nodeType":"YulBlock","src":"11517:271:75","statements":[{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"11562:5:75","nodeType":"YulIdentifier","src":"11562:5:75"}],"functionName":{"name":"mload","nativeSrc":"11556:5:75","nodeType":"YulIdentifier","src":"11556:5:75"},"nativeSrc":"11556:12:75","nodeType":"YulFunctionCall","src":"11556:12:75"},{"name":"pos","nativeSrc":"11570:3:75","nodeType":"YulIdentifier","src":"11570:3:75"}],"functionName":{"name":"abi_encode_enum_SwapProtocol","nativeSrc":"11527:28:75","nodeType":"YulIdentifier","src":"11527:28:75"},"nativeSrc":"11527:47:75","nodeType":"YulFunctionCall","src":"11527:47:75"},"nativeSrc":"11527:47:75","nodeType":"YulExpressionStatement","src":"11527:47:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11594:3:75","nodeType":"YulIdentifier","src":"11594:3:75"},{"kind":"number","nativeSrc":"11599:4:75","nodeType":"YulLiteral","src":"11599:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11590:3:75","nodeType":"YulIdentifier","src":"11590:3:75"},"nativeSrc":"11590:14:75","nodeType":"YulFunctionCall","src":"11590:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"11616:5:75","nodeType":"YulIdentifier","src":"11616:5:75"},{"kind":"number","nativeSrc":"11623:4:75","nodeType":"YulLiteral","src":"11623:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11612:3:75","nodeType":"YulIdentifier","src":"11612:3:75"},"nativeSrc":"11612:16:75","nodeType":"YulFunctionCall","src":"11612:16:75"}],"functionName":{"name":"mload","nativeSrc":"11606:5:75","nodeType":"YulIdentifier","src":"11606:5:75"},"nativeSrc":"11606:23:75","nodeType":"YulFunctionCall","src":"11606:23:75"}],"functionName":{"name":"mstore","nativeSrc":"11583:6:75","nodeType":"YulIdentifier","src":"11583:6:75"},"nativeSrc":"11583:47:75","nodeType":"YulFunctionCall","src":"11583:47:75"},"nativeSrc":"11583:47:75","nodeType":"YulExpressionStatement","src":"11583:47:75"},{"nativeSrc":"11639:43:75","nodeType":"YulVariableDeclaration","src":"11639:43:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"11669:5:75","nodeType":"YulIdentifier","src":"11669:5:75"},{"kind":"number","nativeSrc":"11676:4:75","nodeType":"YulLiteral","src":"11676:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"11665:3:75","nodeType":"YulIdentifier","src":"11665:3:75"},"nativeSrc":"11665:16:75","nodeType":"YulFunctionCall","src":"11665:16:75"}],"functionName":{"name":"mload","nativeSrc":"11659:5:75","nodeType":"YulIdentifier","src":"11659:5:75"},"nativeSrc":"11659:23:75","nodeType":"YulFunctionCall","src":"11659:23:75"},"variables":[{"name":"memberValue0","nativeSrc":"11643:12:75","nodeType":"YulTypedName","src":"11643:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11702:3:75","nodeType":"YulIdentifier","src":"11702:3:75"},{"kind":"number","nativeSrc":"11707:4:75","nodeType":"YulLiteral","src":"11707:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"11698:3:75","nodeType":"YulIdentifier","src":"11698:3:75"},"nativeSrc":"11698:14:75","nodeType":"YulFunctionCall","src":"11698:14:75"},{"kind":"number","nativeSrc":"11714:4:75","nodeType":"YulLiteral","src":"11714:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"11691:6:75","nodeType":"YulIdentifier","src":"11691:6:75"},"nativeSrc":"11691:28:75","nodeType":"YulFunctionCall","src":"11691:28:75"},"nativeSrc":"11691:28:75","nodeType":"YulExpressionStatement","src":"11691:28:75"},{"nativeSrc":"11728:54:75","nodeType":"YulAssignment","src":"11728:54:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"11753:12:75","nodeType":"YulIdentifier","src":"11753:12:75"},{"arguments":[{"name":"pos","nativeSrc":"11771:3:75","nodeType":"YulIdentifier","src":"11771:3:75"},{"kind":"number","nativeSrc":"11776:4:75","nodeType":"YulLiteral","src":"11776:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"11767:3:75","nodeType":"YulIdentifier","src":"11767:3:75"},"nativeSrc":"11767:14:75","nodeType":"YulFunctionCall","src":"11767:14:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"11735:17:75","nodeType":"YulIdentifier","src":"11735:17:75"},"nativeSrc":"11735:47:75","nodeType":"YulFunctionCall","src":"11735:47:75"},"variableNames":[{"name":"end","nativeSrc":"11728:3:75","nodeType":"YulIdentifier","src":"11728:3:75"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"11456:332:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"11494:5:75","nodeType":"YulTypedName","src":"11494:5:75","type":""},{"name":"pos","nativeSrc":"11501:3:75","nodeType":"YulTypedName","src":"11501:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11509:3:75","nodeType":"YulTypedName","src":"11509:3:75","type":""}],"src":"11456:332:75"},{"body":{"nativeSrc":"12068:337:75","nodeType":"YulBlock","src":"12068:337:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12085:9:75","nodeType":"YulIdentifier","src":"12085:9:75"},{"kind":"number","nativeSrc":"12096:3:75","nodeType":"YulLiteral","src":"12096:3:75","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"12078:6:75","nodeType":"YulIdentifier","src":"12078:6:75"},"nativeSrc":"12078:22:75","nodeType":"YulFunctionCall","src":"12078:22:75"},"nativeSrc":"12078:22:75","nodeType":"YulExpressionStatement","src":"12078:22:75"},{"nativeSrc":"12109:65:75","nodeType":"YulAssignment","src":"12109:65:75","value":{"arguments":[{"name":"value0","nativeSrc":"12146:6:75","nodeType":"YulIdentifier","src":"12146:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"12158:9:75","nodeType":"YulIdentifier","src":"12158:9:75"},{"kind":"number","nativeSrc":"12169:3:75","nodeType":"YulLiteral","src":"12169:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"12154:3:75","nodeType":"YulIdentifier","src":"12154:3:75"},"nativeSrc":"12154:19:75","nodeType":"YulFunctionCall","src":"12154:19:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"12117:28:75","nodeType":"YulIdentifier","src":"12117:28:75"},"nativeSrc":"12117:57:75","nodeType":"YulFunctionCall","src":"12117:57:75"},"variableNames":[{"name":"tail","nativeSrc":"12109:4:75","nodeType":"YulIdentifier","src":"12109:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12194:9:75","nodeType":"YulIdentifier","src":"12194:9:75"},{"kind":"number","nativeSrc":"12205:2:75","nodeType":"YulLiteral","src":"12205:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12190:3:75","nodeType":"YulIdentifier","src":"12190:3:75"},"nativeSrc":"12190:18:75","nodeType":"YulFunctionCall","src":"12190:18:75"},{"arguments":[{"name":"value1","nativeSrc":"12214:6:75","nodeType":"YulIdentifier","src":"12214:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12230:3:75","nodeType":"YulLiteral","src":"12230:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12235:1:75","nodeType":"YulLiteral","src":"12235:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12226:3:75","nodeType":"YulIdentifier","src":"12226:3:75"},"nativeSrc":"12226:11:75","nodeType":"YulFunctionCall","src":"12226:11:75"},{"kind":"number","nativeSrc":"12239:1:75","nodeType":"YulLiteral","src":"12239:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12222:3:75","nodeType":"YulIdentifier","src":"12222:3:75"},"nativeSrc":"12222:19:75","nodeType":"YulFunctionCall","src":"12222:19:75"}],"functionName":{"name":"and","nativeSrc":"12210:3:75","nodeType":"YulIdentifier","src":"12210:3:75"},"nativeSrc":"12210:32:75","nodeType":"YulFunctionCall","src":"12210:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12183:6:75","nodeType":"YulIdentifier","src":"12183:6:75"},"nativeSrc":"12183:60:75","nodeType":"YulFunctionCall","src":"12183:60:75"},"nativeSrc":"12183:60:75","nodeType":"YulExpressionStatement","src":"12183:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12263:9:75","nodeType":"YulIdentifier","src":"12263:9:75"},{"kind":"number","nativeSrc":"12274:2:75","nodeType":"YulLiteral","src":"12274:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12259:3:75","nodeType":"YulIdentifier","src":"12259:3:75"},"nativeSrc":"12259:18:75","nodeType":"YulFunctionCall","src":"12259:18:75"},{"arguments":[{"name":"value2","nativeSrc":"12283:6:75","nodeType":"YulIdentifier","src":"12283:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12299:3:75","nodeType":"YulLiteral","src":"12299:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12304:1:75","nodeType":"YulLiteral","src":"12304:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12295:3:75","nodeType":"YulIdentifier","src":"12295:3:75"},"nativeSrc":"12295:11:75","nodeType":"YulFunctionCall","src":"12295:11:75"},{"kind":"number","nativeSrc":"12308:1:75","nodeType":"YulLiteral","src":"12308:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12291:3:75","nodeType":"YulIdentifier","src":"12291:3:75"},"nativeSrc":"12291:19:75","nodeType":"YulFunctionCall","src":"12291:19:75"}],"functionName":{"name":"and","nativeSrc":"12279:3:75","nodeType":"YulIdentifier","src":"12279:3:75"},"nativeSrc":"12279:32:75","nodeType":"YulFunctionCall","src":"12279:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12252:6:75","nodeType":"YulIdentifier","src":"12252:6:75"},"nativeSrc":"12252:60:75","nodeType":"YulFunctionCall","src":"12252:60:75"},"nativeSrc":"12252:60:75","nodeType":"YulExpressionStatement","src":"12252:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12332:9:75","nodeType":"YulIdentifier","src":"12332:9:75"},{"kind":"number","nativeSrc":"12343:2:75","nodeType":"YulLiteral","src":"12343:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12328:3:75","nodeType":"YulIdentifier","src":"12328:3:75"},"nativeSrc":"12328:18:75","nodeType":"YulFunctionCall","src":"12328:18:75"},{"name":"value3","nativeSrc":"12348:6:75","nodeType":"YulIdentifier","src":"12348:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12321:6:75","nodeType":"YulIdentifier","src":"12321:6:75"},"nativeSrc":"12321:34:75","nodeType":"YulFunctionCall","src":"12321:34:75"},"nativeSrc":"12321:34:75","nodeType":"YulExpressionStatement","src":"12321:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12375:9:75","nodeType":"YulIdentifier","src":"12375:9:75"},{"kind":"number","nativeSrc":"12386:3:75","nodeType":"YulLiteral","src":"12386:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"12371:3:75","nodeType":"YulIdentifier","src":"12371:3:75"},"nativeSrc":"12371:19:75","nodeType":"YulFunctionCall","src":"12371:19:75"},{"name":"value4","nativeSrc":"12392:6:75","nodeType":"YulIdentifier","src":"12392:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12364:6:75","nodeType":"YulIdentifier","src":"12364:6:75"},"nativeSrc":"12364:35:75","nodeType":"YulFunctionCall","src":"12364:35:75"},"nativeSrc":"12364:35:75","nodeType":"YulExpressionStatement","src":"12364:35:75"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"11793:612:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12005:9:75","nodeType":"YulTypedName","src":"12005:9:75","type":""},{"name":"value4","nativeSrc":"12016:6:75","nodeType":"YulTypedName","src":"12016:6:75","type":""},{"name":"value3","nativeSrc":"12024:6:75","nodeType":"YulTypedName","src":"12024:6:75","type":""},{"name":"value2","nativeSrc":"12032:6:75","nodeType":"YulTypedName","src":"12032:6:75","type":""},{"name":"value1","nativeSrc":"12040:6:75","nodeType":"YulTypedName","src":"12040:6:75","type":""},{"name":"value0","nativeSrc":"12048:6:75","nodeType":"YulTypedName","src":"12048:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12059:4:75","nodeType":"YulTypedName","src":"12059:4:75","type":""}],"src":"11793:612:75"},{"body":{"nativeSrc":"12567:188:75","nodeType":"YulBlock","src":"12567:188:75","statements":[{"nativeSrc":"12577:26:75","nodeType":"YulAssignment","src":"12577:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12589:9:75","nodeType":"YulIdentifier","src":"12589:9:75"},{"kind":"number","nativeSrc":"12600:2:75","nodeType":"YulLiteral","src":"12600:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12585:3:75","nodeType":"YulIdentifier","src":"12585:3:75"},"nativeSrc":"12585:18:75","nodeType":"YulFunctionCall","src":"12585:18:75"},"variableNames":[{"name":"tail","nativeSrc":"12577:4:75","nodeType":"YulIdentifier","src":"12577:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12619:9:75","nodeType":"YulIdentifier","src":"12619:9:75"},{"arguments":[{"name":"value0","nativeSrc":"12634:6:75","nodeType":"YulIdentifier","src":"12634:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12650:3:75","nodeType":"YulLiteral","src":"12650:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12655:1:75","nodeType":"YulLiteral","src":"12655:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12646:3:75","nodeType":"YulIdentifier","src":"12646:3:75"},"nativeSrc":"12646:11:75","nodeType":"YulFunctionCall","src":"12646:11:75"},{"kind":"number","nativeSrc":"12659:1:75","nodeType":"YulLiteral","src":"12659:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12642:3:75","nodeType":"YulIdentifier","src":"12642:3:75"},"nativeSrc":"12642:19:75","nodeType":"YulFunctionCall","src":"12642:19:75"}],"functionName":{"name":"and","nativeSrc":"12630:3:75","nodeType":"YulIdentifier","src":"12630:3:75"},"nativeSrc":"12630:32:75","nodeType":"YulFunctionCall","src":"12630:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12612:6:75","nodeType":"YulIdentifier","src":"12612:6:75"},"nativeSrc":"12612:51:75","nodeType":"YulFunctionCall","src":"12612:51:75"},"nativeSrc":"12612:51:75","nodeType":"YulExpressionStatement","src":"12612:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12683:9:75","nodeType":"YulIdentifier","src":"12683:9:75"},{"kind":"number","nativeSrc":"12694:2:75","nodeType":"YulLiteral","src":"12694:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12679:3:75","nodeType":"YulIdentifier","src":"12679:3:75"},"nativeSrc":"12679:18:75","nodeType":"YulFunctionCall","src":"12679:18:75"},{"name":"value1","nativeSrc":"12699:6:75","nodeType":"YulIdentifier","src":"12699:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12672:6:75","nodeType":"YulIdentifier","src":"12672:6:75"},"nativeSrc":"12672:34:75","nodeType":"YulFunctionCall","src":"12672:34:75"},"nativeSrc":"12672:34:75","nodeType":"YulExpressionStatement","src":"12672:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12726:9:75","nodeType":"YulIdentifier","src":"12726:9:75"},{"kind":"number","nativeSrc":"12737:2:75","nodeType":"YulLiteral","src":"12737:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12722:3:75","nodeType":"YulIdentifier","src":"12722:3:75"},"nativeSrc":"12722:18:75","nodeType":"YulFunctionCall","src":"12722:18:75"},{"name":"value2","nativeSrc":"12742:6:75","nodeType":"YulIdentifier","src":"12742:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12715:6:75","nodeType":"YulIdentifier","src":"12715:6:75"},"nativeSrc":"12715:34:75","nodeType":"YulFunctionCall","src":"12715:34:75"},"nativeSrc":"12715:34:75","nodeType":"YulExpressionStatement","src":"12715:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"12410:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12520:9:75","nodeType":"YulTypedName","src":"12520:9:75","type":""},{"name":"value2","nativeSrc":"12531:6:75","nodeType":"YulTypedName","src":"12531:6:75","type":""},{"name":"value1","nativeSrc":"12539:6:75","nodeType":"YulTypedName","src":"12539:6:75","type":""},{"name":"value0","nativeSrc":"12547:6:75","nodeType":"YulTypedName","src":"12547:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12558:4:75","nodeType":"YulTypedName","src":"12558:4:75","type":""}],"src":"12410:345:75"},{"body":{"nativeSrc":"12815:56:75","nodeType":"YulBlock","src":"12815:56:75","statements":[{"body":{"nativeSrc":"12849:16:75","nodeType":"YulBlock","src":"12849:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12858:1:75","nodeType":"YulLiteral","src":"12858:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12861:1:75","nodeType":"YulLiteral","src":"12861:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12851:6:75","nodeType":"YulIdentifier","src":"12851:6:75"},"nativeSrc":"12851:12:75","nodeType":"YulFunctionCall","src":"12851:12:75"},"nativeSrc":"12851:12:75","nodeType":"YulExpressionStatement","src":"12851:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"12838:5:75","nodeType":"YulIdentifier","src":"12838:5:75"},{"kind":"number","nativeSrc":"12845:1:75","nodeType":"YulLiteral","src":"12845:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"12835:2:75","nodeType":"YulIdentifier","src":"12835:2:75"},"nativeSrc":"12835:12:75","nodeType":"YulFunctionCall","src":"12835:12:75"}],"functionName":{"name":"iszero","nativeSrc":"12828:6:75","nodeType":"YulIdentifier","src":"12828:6:75"},"nativeSrc":"12828:20:75","nodeType":"YulFunctionCall","src":"12828:20:75"},"nativeSrc":"12825:40:75","nodeType":"YulIf","src":"12825:40:75"}]},"name":"validator_revert_enum_SwapProtocol","nativeSrc":"12760:111:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12804:5:75","nodeType":"YulTypedName","src":"12804:5:75","type":""}],"src":"12760:111:75"},{"body":{"nativeSrc":"12996:762:75","nodeType":"YulBlock","src":"12996:762:75","statements":[{"body":{"nativeSrc":"13047:16:75","nodeType":"YulBlock","src":"13047:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13056:1:75","nodeType":"YulLiteral","src":"13056:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13059:1:75","nodeType":"YulLiteral","src":"13059:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13049:6:75","nodeType":"YulIdentifier","src":"13049:6:75"},"nativeSrc":"13049:12:75","nodeType":"YulFunctionCall","src":"13049:12:75"},"nativeSrc":"13049:12:75","nodeType":"YulExpressionStatement","src":"13049:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"13017:12:75","nodeType":"YulIdentifier","src":"13017:12:75"},"nativeSrc":"13017:14:75","nodeType":"YulFunctionCall","src":"13017:14:75"},{"name":"value","nativeSrc":"13033:5:75","nodeType":"YulIdentifier","src":"13033:5:75"}],"functionName":{"name":"sub","nativeSrc":"13013:3:75","nodeType":"YulIdentifier","src":"13013:3:75"},"nativeSrc":"13013:26:75","nodeType":"YulFunctionCall","src":"13013:26:75"},{"kind":"number","nativeSrc":"13041:4:75","nodeType":"YulLiteral","src":"13041:4:75","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"13009:3:75","nodeType":"YulIdentifier","src":"13009:3:75"},"nativeSrc":"13009:37:75","nodeType":"YulFunctionCall","src":"13009:37:75"},"nativeSrc":"13006:57:75","nodeType":"YulIf","src":"13006:57:75"},{"nativeSrc":"13072:15:75","nodeType":"YulVariableDeclaration","src":"13072:15:75","value":{"kind":"number","nativeSrc":"13086:1:75","nodeType":"YulLiteral","src":"13086:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"13076:6:75","nodeType":"YulTypedName","src":"13076:6:75","type":""}]},{"nativeSrc":"13096:19:75","nodeType":"YulAssignment","src":"13096:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"13112:2:75","nodeType":"YulLiteral","src":"13112:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"13106:5:75","nodeType":"YulIdentifier","src":"13106:5:75"},"nativeSrc":"13106:9:75","nodeType":"YulFunctionCall","src":"13106:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"13096:6:75","nodeType":"YulIdentifier","src":"13096:6:75"}]},{"nativeSrc":"13124:35:75","nodeType":"YulVariableDeclaration","src":"13124:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"13146:6:75","nodeType":"YulIdentifier","src":"13146:6:75"},{"kind":"number","nativeSrc":"13154:4:75","nodeType":"YulLiteral","src":"13154:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"13142:3:75","nodeType":"YulIdentifier","src":"13142:3:75"},"nativeSrc":"13142:17:75","nodeType":"YulFunctionCall","src":"13142:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"13128:10:75","nodeType":"YulTypedName","src":"13128:10:75","type":""}]},{"body":{"nativeSrc":"13234:22:75","nodeType":"YulBlock","src":"13234:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"13236:16:75","nodeType":"YulIdentifier","src":"13236:16:75"},"nativeSrc":"13236:18:75","nodeType":"YulFunctionCall","src":"13236:18:75"},"nativeSrc":"13236:18:75","nodeType":"YulExpressionStatement","src":"13236:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"13177:10:75","nodeType":"YulIdentifier","src":"13177:10:75"},{"kind":"number","nativeSrc":"13189:18:75","nodeType":"YulLiteral","src":"13189:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13174:2:75","nodeType":"YulIdentifier","src":"13174:2:75"},"nativeSrc":"13174:34:75","nodeType":"YulFunctionCall","src":"13174:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"13213:10:75","nodeType":"YulIdentifier","src":"13213:10:75"},{"name":"memPtr","nativeSrc":"13225:6:75","nodeType":"YulIdentifier","src":"13225:6:75"}],"functionName":{"name":"lt","nativeSrc":"13210:2:75","nodeType":"YulIdentifier","src":"13210:2:75"},"nativeSrc":"13210:22:75","nodeType":"YulFunctionCall","src":"13210:22:75"}],"functionName":{"name":"or","nativeSrc":"13171:2:75","nodeType":"YulIdentifier","src":"13171:2:75"},"nativeSrc":"13171:62:75","nodeType":"YulFunctionCall","src":"13171:62:75"},"nativeSrc":"13168:88:75","nodeType":"YulIf","src":"13168:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13272:2:75","nodeType":"YulLiteral","src":"13272:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"13276:10:75","nodeType":"YulIdentifier","src":"13276:10:75"}],"functionName":{"name":"mstore","nativeSrc":"13265:6:75","nodeType":"YulIdentifier","src":"13265:6:75"},"nativeSrc":"13265:22:75","nodeType":"YulFunctionCall","src":"13265:22:75"},"nativeSrc":"13265:22:75","nodeType":"YulExpressionStatement","src":"13265:22:75"},{"nativeSrc":"13296:34:75","nodeType":"YulVariableDeclaration","src":"13296:34:75","value":{"arguments":[{"name":"value","nativeSrc":"13324:5:75","nodeType":"YulIdentifier","src":"13324:5:75"}],"functionName":{"name":"calldataload","nativeSrc":"13311:12:75","nodeType":"YulIdentifier","src":"13311:12:75"},"nativeSrc":"13311:19:75","nodeType":"YulFunctionCall","src":"13311:19:75"},"variables":[{"name":"value_1","nativeSrc":"13300:7:75","nodeType":"YulTypedName","src":"13300:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"13374:7:75","nodeType":"YulIdentifier","src":"13374:7:75"}],"functionName":{"name":"validator_revert_enum_SwapProtocol","nativeSrc":"13339:34:75","nodeType":"YulIdentifier","src":"13339:34:75"},"nativeSrc":"13339:43:75","nodeType":"YulFunctionCall","src":"13339:43:75"},"nativeSrc":"13339:43:75","nodeType":"YulExpressionStatement","src":"13339:43:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"13398:6:75","nodeType":"YulIdentifier","src":"13398:6:75"},{"name":"value_1","nativeSrc":"13406:7:75","nodeType":"YulIdentifier","src":"13406:7:75"}],"functionName":{"name":"mstore","nativeSrc":"13391:6:75","nodeType":"YulIdentifier","src":"13391:6:75"},"nativeSrc":"13391:23:75","nodeType":"YulFunctionCall","src":"13391:23:75"},"nativeSrc":"13391:23:75","nodeType":"YulExpressionStatement","src":"13391:23:75"},{"nativeSrc":"13423:16:75","nodeType":"YulVariableDeclaration","src":"13423:16:75","value":{"kind":"number","nativeSrc":"13438:1:75","nodeType":"YulLiteral","src":"13438:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"13427:7:75","nodeType":"YulTypedName","src":"13427:7:75","type":""}]},{"nativeSrc":"13448:39:75","nodeType":"YulAssignment","src":"13448:39:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13476:5:75","nodeType":"YulIdentifier","src":"13476:5:75"},{"kind":"number","nativeSrc":"13483:2:75","nodeType":"YulLiteral","src":"13483:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13472:3:75","nodeType":"YulIdentifier","src":"13472:3:75"},"nativeSrc":"13472:14:75","nodeType":"YulFunctionCall","src":"13472:14:75"}],"functionName":{"name":"calldataload","nativeSrc":"13459:12:75","nodeType":"YulIdentifier","src":"13459:12:75"},"nativeSrc":"13459:28:75","nodeType":"YulFunctionCall","src":"13459:28:75"},"variableNames":[{"name":"value_2","nativeSrc":"13448:7:75","nodeType":"YulIdentifier","src":"13448:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"13507:6:75","nodeType":"YulIdentifier","src":"13507:6:75"},{"kind":"number","nativeSrc":"13515:2:75","nodeType":"YulLiteral","src":"13515:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13503:3:75","nodeType":"YulIdentifier","src":"13503:3:75"},"nativeSrc":"13503:15:75","nodeType":"YulFunctionCall","src":"13503:15:75"},{"name":"value_2","nativeSrc":"13520:7:75","nodeType":"YulIdentifier","src":"13520:7:75"}],"functionName":{"name":"mstore","nativeSrc":"13496:6:75","nodeType":"YulIdentifier","src":"13496:6:75"},"nativeSrc":"13496:32:75","nodeType":"YulFunctionCall","src":"13496:32:75"},"nativeSrc":"13496:32:75","nodeType":"YulExpressionStatement","src":"13496:32:75"},{"nativeSrc":"13537:42:75","nodeType":"YulVariableDeclaration","src":"13537:42:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13568:5:75","nodeType":"YulIdentifier","src":"13568:5:75"},{"kind":"number","nativeSrc":"13575:2:75","nodeType":"YulLiteral","src":"13575:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13564:3:75","nodeType":"YulIdentifier","src":"13564:3:75"},"nativeSrc":"13564:14:75","nodeType":"YulFunctionCall","src":"13564:14:75"}],"functionName":{"name":"calldataload","nativeSrc":"13551:12:75","nodeType":"YulIdentifier","src":"13551:12:75"},"nativeSrc":"13551:28:75","nodeType":"YulFunctionCall","src":"13551:28:75"},"variables":[{"name":"offset","nativeSrc":"13541:6:75","nodeType":"YulTypedName","src":"13541:6:75","type":""}]},{"body":{"nativeSrc":"13622:16:75","nodeType":"YulBlock","src":"13622:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13631:1:75","nodeType":"YulLiteral","src":"13631:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13634:1:75","nodeType":"YulLiteral","src":"13634:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13624:6:75","nodeType":"YulIdentifier","src":"13624:6:75"},"nativeSrc":"13624:12:75","nodeType":"YulFunctionCall","src":"13624:12:75"},"nativeSrc":"13624:12:75","nodeType":"YulExpressionStatement","src":"13624:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13594:6:75","nodeType":"YulIdentifier","src":"13594:6:75"},{"kind":"number","nativeSrc":"13602:18:75","nodeType":"YulLiteral","src":"13602:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13591:2:75","nodeType":"YulIdentifier","src":"13591:2:75"},"nativeSrc":"13591:30:75","nodeType":"YulFunctionCall","src":"13591:30:75"},"nativeSrc":"13588:50:75","nodeType":"YulIf","src":"13588:50:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"13658:6:75","nodeType":"YulIdentifier","src":"13658:6:75"},{"kind":"number","nativeSrc":"13666:2:75","nodeType":"YulLiteral","src":"13666:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13654:3:75","nodeType":"YulIdentifier","src":"13654:3:75"},"nativeSrc":"13654:15:75","nodeType":"YulFunctionCall","src":"13654:15:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13692:5:75","nodeType":"YulIdentifier","src":"13692:5:75"},{"name":"offset","nativeSrc":"13699:6:75","nodeType":"YulIdentifier","src":"13699:6:75"}],"functionName":{"name":"add","nativeSrc":"13688:3:75","nodeType":"YulIdentifier","src":"13688:3:75"},"nativeSrc":"13688:18:75","nodeType":"YulFunctionCall","src":"13688:18:75"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"13708:12:75","nodeType":"YulIdentifier","src":"13708:12:75"},"nativeSrc":"13708:14:75","nodeType":"YulFunctionCall","src":"13708:14:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13671:16:75","nodeType":"YulIdentifier","src":"13671:16:75"},"nativeSrc":"13671:52:75","nodeType":"YulFunctionCall","src":"13671:52:75"}],"functionName":{"name":"mstore","nativeSrc":"13647:6:75","nodeType":"YulIdentifier","src":"13647:6:75"},"nativeSrc":"13647:77:75","nodeType":"YulFunctionCall","src":"13647:77:75"},"nativeSrc":"13647:77:75","nodeType":"YulExpressionStatement","src":"13647:77:75"},{"nativeSrc":"13733:19:75","nodeType":"YulAssignment","src":"13733:19:75","value":{"name":"memPtr","nativeSrc":"13746:6:75","nodeType":"YulIdentifier","src":"13746:6:75"},"variableNames":[{"name":"converted","nativeSrc":"13733:9:75","nodeType":"YulIdentifier","src":"13733:9:75"}]}]},"name":"convert_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_memory_ptr","nativeSrc":"12876:882:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12972:5:75","nodeType":"YulTypedName","src":"12972:5:75","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"12982:9:75","nodeType":"YulTypedName","src":"12982:9:75","type":""}],"src":"12876:882:75"},{"body":{"nativeSrc":"13926:110:75","nodeType":"YulBlock","src":"13926:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13943:9:75","nodeType":"YulIdentifier","src":"13943:9:75"},{"kind":"number","nativeSrc":"13954:2:75","nodeType":"YulLiteral","src":"13954:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13936:6:75","nodeType":"YulIdentifier","src":"13936:6:75"},"nativeSrc":"13936:21:75","nodeType":"YulFunctionCall","src":"13936:21:75"},"nativeSrc":"13936:21:75","nodeType":"YulExpressionStatement","src":"13936:21:75"},{"nativeSrc":"13966:64:75","nodeType":"YulAssignment","src":"13966:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"14003:6:75","nodeType":"YulIdentifier","src":"14003:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"14015:9:75","nodeType":"YulIdentifier","src":"14015:9:75"},{"kind":"number","nativeSrc":"14026:2:75","nodeType":"YulLiteral","src":"14026:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14011:3:75","nodeType":"YulIdentifier","src":"14011:3:75"},"nativeSrc":"14011:18:75","nodeType":"YulFunctionCall","src":"14011:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"13974:28:75","nodeType":"YulIdentifier","src":"13974:28:75"},"nativeSrc":"13974:56:75","nodeType":"YulFunctionCall","src":"13974:56:75"},"variableNames":[{"name":"tail","nativeSrc":"13966:4:75","nodeType":"YulIdentifier","src":"13966:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed","nativeSrc":"13763:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13895:9:75","nodeType":"YulTypedName","src":"13895:9:75","type":""},{"name":"value0","nativeSrc":"13906:6:75","nodeType":"YulTypedName","src":"13906:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13917:4:75","nodeType":"YulTypedName","src":"13917:4:75","type":""}],"src":"13763:273:75"},{"body":{"nativeSrc":"14096:65:75","nodeType":"YulBlock","src":"14096:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14113:1:75","nodeType":"YulLiteral","src":"14113:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"14116:3:75","nodeType":"YulIdentifier","src":"14116:3:75"}],"functionName":{"name":"mstore","nativeSrc":"14106:6:75","nodeType":"YulIdentifier","src":"14106:6:75"},"nativeSrc":"14106:14:75","nodeType":"YulFunctionCall","src":"14106:14:75"},"nativeSrc":"14106:14:75","nodeType":"YulExpressionStatement","src":"14106:14:75"},{"nativeSrc":"14129:26:75","nodeType":"YulAssignment","src":"14129:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"14147:1:75","nodeType":"YulLiteral","src":"14147:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14150:4:75","nodeType":"YulLiteral","src":"14150:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"14137:9:75","nodeType":"YulIdentifier","src":"14137:9:75"},"nativeSrc":"14137:18:75","nodeType":"YulFunctionCall","src":"14137:18:75"},"variableNames":[{"name":"data","nativeSrc":"14129:4:75","nodeType":"YulIdentifier","src":"14129:4:75"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"14041:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"14079:3:75","nodeType":"YulTypedName","src":"14079:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"14087:4:75","nodeType":"YulTypedName","src":"14087:4:75","type":""}],"src":"14041:120:75"},{"body":{"nativeSrc":"14236:944:75","nodeType":"YulBlock","src":"14236:944:75","statements":[{"nativeSrc":"14246:34:75","nodeType":"YulVariableDeclaration","src":"14246:34:75","value":{"arguments":[{"name":"value","nativeSrc":"14274:5:75","nodeType":"YulIdentifier","src":"14274:5:75"}],"functionName":{"name":"calldataload","nativeSrc":"14261:12:75","nodeType":"YulIdentifier","src":"14261:12:75"},"nativeSrc":"14261:19:75","nodeType":"YulFunctionCall","src":"14261:19:75"},"variables":[{"name":"value_1","nativeSrc":"14250:7:75","nodeType":"YulTypedName","src":"14250:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14324:7:75","nodeType":"YulIdentifier","src":"14324:7:75"}],"functionName":{"name":"validator_revert_enum_SwapProtocol","nativeSrc":"14289:34:75","nodeType":"YulIdentifier","src":"14289:34:75"},"nativeSrc":"14289:43:75","nodeType":"YulFunctionCall","src":"14289:43:75"},"nativeSrc":"14289:43:75","nodeType":"YulExpressionStatement","src":"14289:43:75"},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14370:7:75","nodeType":"YulIdentifier","src":"14370:7:75"},{"name":"pos","nativeSrc":"14379:3:75","nodeType":"YulIdentifier","src":"14379:3:75"}],"functionName":{"name":"abi_encode_enum_SwapProtocol","nativeSrc":"14341:28:75","nodeType":"YulIdentifier","src":"14341:28:75"},"nativeSrc":"14341:42:75","nodeType":"YulFunctionCall","src":"14341:42:75"},"nativeSrc":"14341:42:75","nodeType":"YulExpressionStatement","src":"14341:42:75"},{"nativeSrc":"14392:16:75","nodeType":"YulVariableDeclaration","src":"14392:16:75","value":{"kind":"number","nativeSrc":"14407:1:75","nodeType":"YulLiteral","src":"14407:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"14396:7:75","nodeType":"YulTypedName","src":"14396:7:75","type":""}]},{"nativeSrc":"14417:41:75","nodeType":"YulAssignment","src":"14417:41:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14445:5:75","nodeType":"YulIdentifier","src":"14445:5:75"},{"kind":"number","nativeSrc":"14452:4:75","nodeType":"YulLiteral","src":"14452:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14441:3:75","nodeType":"YulIdentifier","src":"14441:3:75"},"nativeSrc":"14441:16:75","nodeType":"YulFunctionCall","src":"14441:16:75"}],"functionName":{"name":"calldataload","nativeSrc":"14428:12:75","nodeType":"YulIdentifier","src":"14428:12:75"},"nativeSrc":"14428:30:75","nodeType":"YulFunctionCall","src":"14428:30:75"},"variableNames":[{"name":"value_2","nativeSrc":"14417:7:75","nodeType":"YulIdentifier","src":"14417:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14478:3:75","nodeType":"YulIdentifier","src":"14478:3:75"},{"kind":"number","nativeSrc":"14483:4:75","nodeType":"YulLiteral","src":"14483:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14474:3:75","nodeType":"YulIdentifier","src":"14474:3:75"},"nativeSrc":"14474:14:75","nodeType":"YulFunctionCall","src":"14474:14:75"},{"name":"value_2","nativeSrc":"14490:7:75","nodeType":"YulIdentifier","src":"14490:7:75"}],"functionName":{"name":"mstore","nativeSrc":"14467:6:75","nodeType":"YulIdentifier","src":"14467:6:75"},"nativeSrc":"14467:31:75","nodeType":"YulFunctionCall","src":"14467:31:75"},"nativeSrc":"14467:31:75","nodeType":"YulExpressionStatement","src":"14467:31:75"},{"nativeSrc":"14507:56:75","nodeType":"YulVariableDeclaration","src":"14507:56:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14550:5:75","nodeType":"YulIdentifier","src":"14550:5:75"},{"kind":"number","nativeSrc":"14557:4:75","nodeType":"YulLiteral","src":"14557:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"14546:3:75","nodeType":"YulIdentifier","src":"14546:3:75"},"nativeSrc":"14546:16:75","nodeType":"YulFunctionCall","src":"14546:16:75"}],"functionName":{"name":"calldataload","nativeSrc":"14533:12:75","nodeType":"YulIdentifier","src":"14533:12:75"},"nativeSrc":"14533:30:75","nodeType":"YulFunctionCall","src":"14533:30:75"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"14511:18:75","nodeType":"YulTypedName","src":"14511:18:75","type":""}]},{"body":{"nativeSrc":"14649:16:75","nodeType":"YulBlock","src":"14649:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14658:1:75","nodeType":"YulLiteral","src":"14658:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14661:1:75","nodeType":"YulLiteral","src":"14661:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14651:6:75","nodeType":"YulIdentifier","src":"14651:6:75"},"nativeSrc":"14651:12:75","nodeType":"YulFunctionCall","src":"14651:12:75"},"nativeSrc":"14651:12:75","nodeType":"YulExpressionStatement","src":"14651:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"14586:18:75","nodeType":"YulIdentifier","src":"14586:18:75"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"14614:12:75","nodeType":"YulIdentifier","src":"14614:12:75"},"nativeSrc":"14614:14:75","nodeType":"YulFunctionCall","src":"14614:14:75"},{"name":"value","nativeSrc":"14630:5:75","nodeType":"YulIdentifier","src":"14630:5:75"}],"functionName":{"name":"sub","nativeSrc":"14610:3:75","nodeType":"YulIdentifier","src":"14610:3:75"},"nativeSrc":"14610:26:75","nodeType":"YulFunctionCall","src":"14610:26:75"},{"arguments":[{"kind":"number","nativeSrc":"14642:2:75","nodeType":"YulLiteral","src":"14642:2:75","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"14638:3:75","nodeType":"YulIdentifier","src":"14638:3:75"},"nativeSrc":"14638:7:75","nodeType":"YulFunctionCall","src":"14638:7:75"}],"functionName":{"name":"add","nativeSrc":"14606:3:75","nodeType":"YulIdentifier","src":"14606:3:75"},"nativeSrc":"14606:40:75","nodeType":"YulFunctionCall","src":"14606:40:75"}],"functionName":{"name":"slt","nativeSrc":"14582:3:75","nodeType":"YulIdentifier","src":"14582:3:75"},"nativeSrc":"14582:65:75","nodeType":"YulFunctionCall","src":"14582:65:75"}],"functionName":{"name":"iszero","nativeSrc":"14575:6:75","nodeType":"YulIdentifier","src":"14575:6:75"},"nativeSrc":"14575:73:75","nodeType":"YulFunctionCall","src":"14575:73:75"},"nativeSrc":"14572:93:75","nodeType":"YulIf","src":"14572:93:75"},{"nativeSrc":"14674:45:75","nodeType":"YulVariableDeclaration","src":"14674:45:75","value":{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"14693:18:75","nodeType":"YulIdentifier","src":"14693:18:75"},{"name":"value","nativeSrc":"14713:5:75","nodeType":"YulIdentifier","src":"14713:5:75"}],"functionName":{"name":"add","nativeSrc":"14689:3:75","nodeType":"YulIdentifier","src":"14689:3:75"},"nativeSrc":"14689:30:75","nodeType":"YulFunctionCall","src":"14689:30:75"},"variables":[{"name":"value_3","nativeSrc":"14678:7:75","nodeType":"YulTypedName","src":"14678:7:75","type":""}]},{"nativeSrc":"14728:35:75","nodeType":"YulVariableDeclaration","src":"14728:35:75","value":{"arguments":[{"name":"value_3","nativeSrc":"14755:7:75","nodeType":"YulIdentifier","src":"14755:7:75"}],"functionName":{"name":"calldataload","nativeSrc":"14742:12:75","nodeType":"YulIdentifier","src":"14742:12:75"},"nativeSrc":"14742:21:75","nodeType":"YulFunctionCall","src":"14742:21:75"},"variables":[{"name":"length","nativeSrc":"14732:6:75","nodeType":"YulTypedName","src":"14732:6:75","type":""}]},{"nativeSrc":"14772:33:75","nodeType":"YulVariableDeclaration","src":"14772:33:75","value":{"arguments":[{"name":"value_3","nativeSrc":"14791:7:75","nodeType":"YulIdentifier","src":"14791:7:75"},{"kind":"number","nativeSrc":"14800:4:75","nodeType":"YulLiteral","src":"14800:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14787:3:75","nodeType":"YulIdentifier","src":"14787:3:75"},"nativeSrc":"14787:18:75","nodeType":"YulFunctionCall","src":"14787:18:75"},"variables":[{"name":"value_4","nativeSrc":"14776:7:75","nodeType":"YulTypedName","src":"14776:7:75","type":""}]},{"body":{"nativeSrc":"14848:16:75","nodeType":"YulBlock","src":"14848:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14857:1:75","nodeType":"YulLiteral","src":"14857:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14860:1:75","nodeType":"YulLiteral","src":"14860:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14850:6:75","nodeType":"YulIdentifier","src":"14850:6:75"},"nativeSrc":"14850:12:75","nodeType":"YulFunctionCall","src":"14850:12:75"},"nativeSrc":"14850:12:75","nodeType":"YulExpressionStatement","src":"14850:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"14820:6:75","nodeType":"YulIdentifier","src":"14820:6:75"},{"kind":"number","nativeSrc":"14828:18:75","nodeType":"YulLiteral","src":"14828:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14817:2:75","nodeType":"YulIdentifier","src":"14817:2:75"},"nativeSrc":"14817:30:75","nodeType":"YulFunctionCall","src":"14817:30:75"},"nativeSrc":"14814:50:75","nodeType":"YulIf","src":"14814:50:75"},{"body":{"nativeSrc":"14918:16:75","nodeType":"YulBlock","src":"14918:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14927:1:75","nodeType":"YulLiteral","src":"14927:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14930:1:75","nodeType":"YulLiteral","src":"14930:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14920:6:75","nodeType":"YulIdentifier","src":"14920:6:75"},"nativeSrc":"14920:12:75","nodeType":"YulFunctionCall","src":"14920:12:75"},"nativeSrc":"14920:12:75","nodeType":"YulExpressionStatement","src":"14920:12:75"}]},"condition":{"arguments":[{"name":"value_4","nativeSrc":"14880:7:75","nodeType":"YulIdentifier","src":"14880:7:75"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"14893:12:75","nodeType":"YulIdentifier","src":"14893:12:75"},"nativeSrc":"14893:14:75","nodeType":"YulFunctionCall","src":"14893:14:75"},{"name":"length","nativeSrc":"14909:6:75","nodeType":"YulIdentifier","src":"14909:6:75"}],"functionName":{"name":"sub","nativeSrc":"14889:3:75","nodeType":"YulIdentifier","src":"14889:3:75"},"nativeSrc":"14889:27:75","nodeType":"YulFunctionCall","src":"14889:27:75"}],"functionName":{"name":"sgt","nativeSrc":"14876:3:75","nodeType":"YulIdentifier","src":"14876:3:75"},"nativeSrc":"14876:41:75","nodeType":"YulFunctionCall","src":"14876:41:75"},"nativeSrc":"14873:61:75","nodeType":"YulIf","src":"14873:61:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14954:3:75","nodeType":"YulIdentifier","src":"14954:3:75"},{"kind":"number","nativeSrc":"14959:4:75","nodeType":"YulLiteral","src":"14959:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"14950:3:75","nodeType":"YulIdentifier","src":"14950:3:75"},"nativeSrc":"14950:14:75","nodeType":"YulFunctionCall","src":"14950:14:75"},{"kind":"number","nativeSrc":"14966:4:75","nodeType":"YulLiteral","src":"14966:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"14943:6:75","nodeType":"YulIdentifier","src":"14943:6:75"},"nativeSrc":"14943:28:75","nodeType":"YulFunctionCall","src":"14943:28:75"},"nativeSrc":"14943:28:75","nodeType":"YulExpressionStatement","src":"14943:28:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"14991:3:75","nodeType":"YulIdentifier","src":"14991:3:75"},{"kind":"number","nativeSrc":"14996:4:75","nodeType":"YulLiteral","src":"14996:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"14987:3:75","nodeType":"YulIdentifier","src":"14987:3:75"},"nativeSrc":"14987:14:75","nodeType":"YulFunctionCall","src":"14987:14:75"},{"name":"length","nativeSrc":"15003:6:75","nodeType":"YulIdentifier","src":"15003:6:75"}],"functionName":{"name":"mstore","nativeSrc":"14980:6:75","nodeType":"YulIdentifier","src":"14980:6:75"},"nativeSrc":"14980:30:75","nodeType":"YulFunctionCall","src":"14980:30:75"},"nativeSrc":"14980:30:75","nodeType":"YulExpressionStatement","src":"14980:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15036:3:75","nodeType":"YulIdentifier","src":"15036:3:75"},{"kind":"number","nativeSrc":"15041:3:75","nodeType":"YulLiteral","src":"15041:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15032:3:75","nodeType":"YulIdentifier","src":"15032:3:75"},"nativeSrc":"15032:13:75","nodeType":"YulFunctionCall","src":"15032:13:75"},{"name":"value_4","nativeSrc":"15047:7:75","nodeType":"YulIdentifier","src":"15047:7:75"},{"name":"length","nativeSrc":"15056:6:75","nodeType":"YulIdentifier","src":"15056:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"15019:12:75","nodeType":"YulIdentifier","src":"15019:12:75"},"nativeSrc":"15019:44:75","nodeType":"YulFunctionCall","src":"15019:44:75"},"nativeSrc":"15019:44:75","nodeType":"YulExpressionStatement","src":"15019:44:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15087:3:75","nodeType":"YulIdentifier","src":"15087:3:75"},{"name":"length","nativeSrc":"15092:6:75","nodeType":"YulIdentifier","src":"15092:6:75"}],"functionName":{"name":"add","nativeSrc":"15083:3:75","nodeType":"YulIdentifier","src":"15083:3:75"},"nativeSrc":"15083:16:75","nodeType":"YulFunctionCall","src":"15083:16:75"},{"kind":"number","nativeSrc":"15101:3:75","nodeType":"YulLiteral","src":"15101:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15079:3:75","nodeType":"YulIdentifier","src":"15079:3:75"},"nativeSrc":"15079:26:75","nodeType":"YulFunctionCall","src":"15079:26:75"},{"kind":"number","nativeSrc":"15107:1:75","nodeType":"YulLiteral","src":"15107:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15072:6:75","nodeType":"YulIdentifier","src":"15072:6:75"},"nativeSrc":"15072:37:75","nodeType":"YulFunctionCall","src":"15072:37:75"},"nativeSrc":"15072:37:75","nodeType":"YulExpressionStatement","src":"15072:37:75"},{"nativeSrc":"15118:56:75","nodeType":"YulAssignment","src":"15118:56:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"15133:3:75","nodeType":"YulIdentifier","src":"15133:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"15146:6:75","nodeType":"YulIdentifier","src":"15146:6:75"},{"kind":"number","nativeSrc":"15154:2:75","nodeType":"YulLiteral","src":"15154:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"15142:3:75","nodeType":"YulIdentifier","src":"15142:3:75"},"nativeSrc":"15142:15:75","nodeType":"YulFunctionCall","src":"15142:15:75"},{"arguments":[{"kind":"number","nativeSrc":"15163:2:75","nodeType":"YulLiteral","src":"15163:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"15159:3:75","nodeType":"YulIdentifier","src":"15159:3:75"},"nativeSrc":"15159:7:75","nodeType":"YulFunctionCall","src":"15159:7:75"}],"functionName":{"name":"and","nativeSrc":"15138:3:75","nodeType":"YulIdentifier","src":"15138:3:75"},"nativeSrc":"15138:29:75","nodeType":"YulFunctionCall","src":"15138:29:75"}],"functionName":{"name":"add","nativeSrc":"15129:3:75","nodeType":"YulIdentifier","src":"15129:3:75"},"nativeSrc":"15129:39:75","nodeType":"YulFunctionCall","src":"15129:39:75"},{"kind":"number","nativeSrc":"15170:3:75","nodeType":"YulLiteral","src":"15170:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15125:3:75","nodeType":"YulIdentifier","src":"15125:3:75"},"nativeSrc":"15125:49:75","nodeType":"YulFunctionCall","src":"15125:49:75"},"variableNames":[{"name":"end","nativeSrc":"15118:3:75","nodeType":"YulIdentifier","src":"15118:3:75"}]}]},"name":"abi_encode_struct_SwapConfig_calldata","nativeSrc":"14166:1014:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"14213:5:75","nodeType":"YulTypedName","src":"14213:5:75","type":""},{"name":"pos","nativeSrc":"14220:3:75","nodeType":"YulTypedName","src":"14220:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"14228:3:75","nodeType":"YulTypedName","src":"14228:3:75","type":""}],"src":"14166:1014:75"},{"body":{"nativeSrc":"15421:1147:75","nodeType":"YulBlock","src":"15421:1147:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15438:9:75","nodeType":"YulIdentifier","src":"15438:9:75"},{"kind":"number","nativeSrc":"15449:2:75","nodeType":"YulLiteral","src":"15449:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"15431:6:75","nodeType":"YulIdentifier","src":"15431:6:75"},"nativeSrc":"15431:21:75","nodeType":"YulFunctionCall","src":"15431:21:75"},"nativeSrc":"15431:21:75","nodeType":"YulExpressionStatement","src":"15431:21:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15500:6:75","nodeType":"YulIdentifier","src":"15500:6:75"}],"functionName":{"name":"sload","nativeSrc":"15494:5:75","nodeType":"YulIdentifier","src":"15494:5:75"},"nativeSrc":"15494:13:75","nodeType":"YulFunctionCall","src":"15494:13:75"},{"kind":"number","nativeSrc":"15509:4:75","nodeType":"YulLiteral","src":"15509:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15490:3:75","nodeType":"YulIdentifier","src":"15490:3:75"},"nativeSrc":"15490:24:75","nodeType":"YulFunctionCall","src":"15490:24:75"},{"arguments":[{"name":"headStart","nativeSrc":"15520:9:75","nodeType":"YulIdentifier","src":"15520:9:75"},{"kind":"number","nativeSrc":"15531:2:75","nodeType":"YulLiteral","src":"15531:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15516:3:75","nodeType":"YulIdentifier","src":"15516:3:75"},"nativeSrc":"15516:18:75","nodeType":"YulFunctionCall","src":"15516:18:75"}],"functionName":{"name":"abi_encode_enum_SwapProtocol","nativeSrc":"15461:28:75","nodeType":"YulIdentifier","src":"15461:28:75"},"nativeSrc":"15461:74:75","nodeType":"YulFunctionCall","src":"15461:74:75"},"nativeSrc":"15461:74:75","nodeType":"YulExpressionStatement","src":"15461:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15555:9:75","nodeType":"YulIdentifier","src":"15555:9:75"},{"kind":"number","nativeSrc":"15566:4:75","nodeType":"YulLiteral","src":"15566:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"15551:3:75","nodeType":"YulIdentifier","src":"15551:3:75"},"nativeSrc":"15551:20:75","nodeType":"YulFunctionCall","src":"15551:20:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"15583:6:75","nodeType":"YulIdentifier","src":"15583:6:75"},{"kind":"number","nativeSrc":"15591:4:75","nodeType":"YulLiteral","src":"15591:4:75","type":"","value":"0x01"}],"functionName":{"name":"add","nativeSrc":"15579:3:75","nodeType":"YulIdentifier","src":"15579:3:75"},"nativeSrc":"15579:17:75","nodeType":"YulFunctionCall","src":"15579:17:75"}],"functionName":{"name":"sload","nativeSrc":"15573:5:75","nodeType":"YulIdentifier","src":"15573:5:75"},"nativeSrc":"15573:24:75","nodeType":"YulFunctionCall","src":"15573:24:75"}],"functionName":{"name":"mstore","nativeSrc":"15544:6:75","nodeType":"YulIdentifier","src":"15544:6:75"},"nativeSrc":"15544:54:75","nodeType":"YulFunctionCall","src":"15544:54:75"},"nativeSrc":"15544:54:75","nodeType":"YulExpressionStatement","src":"15544:54:75"},{"nativeSrc":"15607:37:75","nodeType":"YulVariableDeclaration","src":"15607:37:75","value":{"arguments":[{"name":"value0","nativeSrc":"15631:6:75","nodeType":"YulIdentifier","src":"15631:6:75"},{"kind":"number","nativeSrc":"15639:4:75","nodeType":"YulLiteral","src":"15639:4:75","type":"","value":"0x02"}],"functionName":{"name":"add","nativeSrc":"15627:3:75","nodeType":"YulIdentifier","src":"15627:3:75"},"nativeSrc":"15627:17:75","nodeType":"YulFunctionCall","src":"15627:17:75"},"variables":[{"name":"memberValue0","nativeSrc":"15611:12:75","nodeType":"YulTypedName","src":"15611:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15664:9:75","nodeType":"YulIdentifier","src":"15664:9:75"},{"kind":"number","nativeSrc":"15675:3:75","nodeType":"YulLiteral","src":"15675:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"15660:3:75","nodeType":"YulIdentifier","src":"15660:3:75"},"nativeSrc":"15660:19:75","nodeType":"YulFunctionCall","src":"15660:19:75"},{"kind":"number","nativeSrc":"15681:4:75","nodeType":"YulLiteral","src":"15681:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"15653:6:75","nodeType":"YulIdentifier","src":"15653:6:75"},"nativeSrc":"15653:33:75","nodeType":"YulFunctionCall","src":"15653:33:75"},"nativeSrc":"15653:33:75","nodeType":"YulExpressionStatement","src":"15653:33:75"},{"nativeSrc":"15695:12:75","nodeType":"YulVariableDeclaration","src":"15695:12:75","value":{"kind":"number","nativeSrc":"15706:1:75","nodeType":"YulLiteral","src":"15706:1:75","type":"","value":"0"},"variables":[{"name":"ret","nativeSrc":"15699:3:75","nodeType":"YulTypedName","src":"15699:3:75","type":""}]},{"nativeSrc":"15716:36:75","nodeType":"YulVariableDeclaration","src":"15716:36:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"15739:12:75","nodeType":"YulIdentifier","src":"15739:12:75"}],"functionName":{"name":"sload","nativeSrc":"15733:5:75","nodeType":"YulIdentifier","src":"15733:5:75"},"nativeSrc":"15733:19:75","nodeType":"YulFunctionCall","src":"15733:19:75"},"variables":[{"name":"slotValue","nativeSrc":"15720:9:75","nodeType":"YulTypedName","src":"15720:9:75","type":""}]},{"nativeSrc":"15761:50:75","nodeType":"YulVariableDeclaration","src":"15761:50:75","value":{"arguments":[{"name":"slotValue","nativeSrc":"15801:9:75","nodeType":"YulIdentifier","src":"15801:9:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"15775:25:75","nodeType":"YulIdentifier","src":"15775:25:75"},"nativeSrc":"15775:36:75","nodeType":"YulFunctionCall","src":"15775:36:75"},"variables":[{"name":"length","nativeSrc":"15765:6:75","nodeType":"YulTypedName","src":"15765:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15831:9:75","nodeType":"YulIdentifier","src":"15831:9:75"},{"kind":"number","nativeSrc":"15842:3:75","nodeType":"YulLiteral","src":"15842:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"15827:3:75","nodeType":"YulIdentifier","src":"15827:3:75"},"nativeSrc":"15827:19:75","nodeType":"YulFunctionCall","src":"15827:19:75"},{"name":"length","nativeSrc":"15848:6:75","nodeType":"YulIdentifier","src":"15848:6:75"}],"functionName":{"name":"mstore","nativeSrc":"15820:6:75","nodeType":"YulIdentifier","src":"15820:6:75"},"nativeSrc":"15820:35:75","nodeType":"YulFunctionCall","src":"15820:35:75"},"nativeSrc":"15820:35:75","nodeType":"YulExpressionStatement","src":"15820:35:75"},{"cases":[{"body":{"nativeSrc":"15907:153:75","nodeType":"YulBlock","src":"15907:153:75","statements":[{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15932:9:75","nodeType":"YulIdentifier","src":"15932:9:75"},{"kind":"number","nativeSrc":"15943:3:75","nodeType":"YulLiteral","src":"15943:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"15928:3:75","nodeType":"YulIdentifier","src":"15928:3:75"},"nativeSrc":"15928:19:75","nodeType":"YulFunctionCall","src":"15928:19:75"},{"arguments":[{"name":"slotValue","nativeSrc":"15953:9:75","nodeType":"YulIdentifier","src":"15953:9:75"},{"arguments":[{"kind":"number","nativeSrc":"15968:3:75","nodeType":"YulLiteral","src":"15968:3:75","type":"","value":"255"}],"functionName":{"name":"not","nativeSrc":"15964:3:75","nodeType":"YulIdentifier","src":"15964:3:75"},"nativeSrc":"15964:8:75","nodeType":"YulFunctionCall","src":"15964:8:75"}],"functionName":{"name":"and","nativeSrc":"15949:3:75","nodeType":"YulIdentifier","src":"15949:3:75"},"nativeSrc":"15949:24:75","nodeType":"YulFunctionCall","src":"15949:24:75"}],"functionName":{"name":"mstore","nativeSrc":"15921:6:75","nodeType":"YulIdentifier","src":"15921:6:75"},"nativeSrc":"15921:53:75","nodeType":"YulFunctionCall","src":"15921:53:75"},"nativeSrc":"15921:53:75","nodeType":"YulExpressionStatement","src":"15921:53:75"},{"nativeSrc":"15987:63:75","nodeType":"YulAssignment","src":"15987:63:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16002:9:75","nodeType":"YulIdentifier","src":"16002:9:75"},{"arguments":[{"kind":"number","nativeSrc":"16017:1:75","nodeType":"YulLiteral","src":"16017:1:75","type":"","value":"5"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"16034:6:75","nodeType":"YulIdentifier","src":"16034:6:75"}],"functionName":{"name":"iszero","nativeSrc":"16027:6:75","nodeType":"YulIdentifier","src":"16027:6:75"},"nativeSrc":"16027:14:75","nodeType":"YulFunctionCall","src":"16027:14:75"}],"functionName":{"name":"iszero","nativeSrc":"16020:6:75","nodeType":"YulIdentifier","src":"16020:6:75"},"nativeSrc":"16020:22:75","nodeType":"YulFunctionCall","src":"16020:22:75"}],"functionName":{"name":"shl","nativeSrc":"16013:3:75","nodeType":"YulIdentifier","src":"16013:3:75"},"nativeSrc":"16013:30:75","nodeType":"YulFunctionCall","src":"16013:30:75"}],"functionName":{"name":"add","nativeSrc":"15998:3:75","nodeType":"YulIdentifier","src":"15998:3:75"},"nativeSrc":"15998:46:75","nodeType":"YulFunctionCall","src":"15998:46:75"},{"kind":"number","nativeSrc":"16046:3:75","nodeType":"YulLiteral","src":"16046:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"15994:3:75","nodeType":"YulIdentifier","src":"15994:3:75"},"nativeSrc":"15994:56:75","nodeType":"YulFunctionCall","src":"15994:56:75"},"variableNames":[{"name":"ret","nativeSrc":"15987:3:75","nodeType":"YulIdentifier","src":"15987:3:75"}]}]},"nativeSrc":"15900:160:75","nodeType":"YulCase","src":"15900:160:75","value":{"kind":"number","nativeSrc":"15905:1:75","nodeType":"YulLiteral","src":"15905:1:75","type":"","value":"0"}},{"body":{"nativeSrc":"16076:361:75","nodeType":"YulBlock","src":"16076:361:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16097:1:75","nodeType":"YulLiteral","src":"16097:1:75","type":"","value":"0"},{"name":"memberValue0","nativeSrc":"16100:12:75","nodeType":"YulIdentifier","src":"16100:12:75"}],"functionName":{"name":"mstore","nativeSrc":"16090:6:75","nodeType":"YulIdentifier","src":"16090:6:75"},"nativeSrc":"16090:23:75","nodeType":"YulFunctionCall","src":"16090:23:75"},"nativeSrc":"16090:23:75","nodeType":"YulExpressionStatement","src":"16090:23:75"},{"nativeSrc":"16126:33:75","nodeType":"YulVariableDeclaration","src":"16126:33:75","value":{"arguments":[{"kind":"number","nativeSrc":"16151:1:75","nodeType":"YulLiteral","src":"16151:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16154:4:75","nodeType":"YulLiteral","src":"16154:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"16141:9:75","nodeType":"YulIdentifier","src":"16141:9:75"},"nativeSrc":"16141:18:75","nodeType":"YulFunctionCall","src":"16141:18:75"},"variables":[{"name":"dataPos","nativeSrc":"16130:7:75","nodeType":"YulTypedName","src":"16130:7:75","type":""}]},{"nativeSrc":"16172:10:75","nodeType":"YulVariableDeclaration","src":"16172:10:75","value":{"kind":"number","nativeSrc":"16181:1:75","nodeType":"YulLiteral","src":"16181:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"16176:1:75","nodeType":"YulTypedName","src":"16176:1:75","type":""}]},{"body":{"nativeSrc":"16251:129:75","nodeType":"YulBlock","src":"16251:129:75","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16284:9:75","nodeType":"YulIdentifier","src":"16284:9:75"},{"name":"i","nativeSrc":"16295:1:75","nodeType":"YulIdentifier","src":"16295:1:75"}],"functionName":{"name":"add","nativeSrc":"16280:3:75","nodeType":"YulIdentifier","src":"16280:3:75"},"nativeSrc":"16280:17:75","nodeType":"YulFunctionCall","src":"16280:17:75"},{"kind":"number","nativeSrc":"16299:3:75","nodeType":"YulLiteral","src":"16299:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"16276:3:75","nodeType":"YulIdentifier","src":"16276:3:75"},"nativeSrc":"16276:27:75","nodeType":"YulFunctionCall","src":"16276:27:75"},{"arguments":[{"name":"dataPos","nativeSrc":"16311:7:75","nodeType":"YulIdentifier","src":"16311:7:75"}],"functionName":{"name":"sload","nativeSrc":"16305:5:75","nodeType":"YulIdentifier","src":"16305:5:75"},"nativeSrc":"16305:14:75","nodeType":"YulFunctionCall","src":"16305:14:75"}],"functionName":{"name":"mstore","nativeSrc":"16269:6:75","nodeType":"YulIdentifier","src":"16269:6:75"},"nativeSrc":"16269:51:75","nodeType":"YulFunctionCall","src":"16269:51:75"},"nativeSrc":"16269:51:75","nodeType":"YulExpressionStatement","src":"16269:51:75"},{"nativeSrc":"16337:29:75","nodeType":"YulAssignment","src":"16337:29:75","value":{"arguments":[{"name":"dataPos","nativeSrc":"16352:7:75","nodeType":"YulIdentifier","src":"16352:7:75"},{"kind":"number","nativeSrc":"16361:4:75","nodeType":"YulLiteral","src":"16361:4:75","type":"","value":"0x01"}],"functionName":{"name":"add","nativeSrc":"16348:3:75","nodeType":"YulIdentifier","src":"16348:3:75"},"nativeSrc":"16348:18:75","nodeType":"YulFunctionCall","src":"16348:18:75"},"variableNames":[{"name":"dataPos","nativeSrc":"16337:7:75","nodeType":"YulIdentifier","src":"16337:7:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"16206:1:75","nodeType":"YulIdentifier","src":"16206:1:75"},{"name":"length","nativeSrc":"16209:6:75","nodeType":"YulIdentifier","src":"16209:6:75"}],"functionName":{"name":"lt","nativeSrc":"16203:2:75","nodeType":"YulIdentifier","src":"16203:2:75"},"nativeSrc":"16203:13:75","nodeType":"YulFunctionCall","src":"16203:13:75"},"nativeSrc":"16195:185:75","nodeType":"YulForLoop","post":{"nativeSrc":"16217:21:75","nodeType":"YulBlock","src":"16217:21:75","statements":[{"nativeSrc":"16219:17:75","nodeType":"YulAssignment","src":"16219:17:75","value":{"arguments":[{"name":"i","nativeSrc":"16228:1:75","nodeType":"YulIdentifier","src":"16228:1:75"},{"kind":"number","nativeSrc":"16231:4:75","nodeType":"YulLiteral","src":"16231:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16224:3:75","nodeType":"YulIdentifier","src":"16224:3:75"},"nativeSrc":"16224:12:75","nodeType":"YulFunctionCall","src":"16224:12:75"},"variableNames":[{"name":"i","nativeSrc":"16219:1:75","nodeType":"YulIdentifier","src":"16219:1:75"}]}]},"pre":{"nativeSrc":"16199:3:75","nodeType":"YulBlock","src":"16199:3:75","statements":[]},"src":"16195:185:75"},{"nativeSrc":"16393:34:75","nodeType":"YulAssignment","src":"16393:34:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16408:9:75","nodeType":"YulIdentifier","src":"16408:9:75"},{"name":"i","nativeSrc":"16419:1:75","nodeType":"YulIdentifier","src":"16419:1:75"}],"functionName":{"name":"add","nativeSrc":"16404:3:75","nodeType":"YulIdentifier","src":"16404:3:75"},"nativeSrc":"16404:17:75","nodeType":"YulFunctionCall","src":"16404:17:75"},{"kind":"number","nativeSrc":"16423:3:75","nodeType":"YulLiteral","src":"16423:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"16400:3:75","nodeType":"YulIdentifier","src":"16400:3:75"},"nativeSrc":"16400:27:75","nodeType":"YulFunctionCall","src":"16400:27:75"},"variableNames":[{"name":"ret","nativeSrc":"16393:3:75","nodeType":"YulIdentifier","src":"16393:3:75"}]}]},"nativeSrc":"16069:368:75","nodeType":"YulCase","src":"16069:368:75","value":{"kind":"number","nativeSrc":"16074:1:75","nodeType":"YulLiteral","src":"16074:1:75","type":"","value":"1"}}],"expression":{"arguments":[{"name":"slotValue","nativeSrc":"15875:9:75","nodeType":"YulIdentifier","src":"15875:9:75"},{"kind":"number","nativeSrc":"15886:4:75","nodeType":"YulLiteral","src":"15886:4:75","type":"","value":"0x01"}],"functionName":{"name":"and","nativeSrc":"15871:3:75","nodeType":"YulIdentifier","src":"15871:3:75"},"nativeSrc":"15871:20:75","nodeType":"YulFunctionCall","src":"15871:20:75"},"nativeSrc":"15864:573:75","nodeType":"YulSwitch","src":"15864:573:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16457:9:75","nodeType":"YulIdentifier","src":"16457:9:75"},{"kind":"number","nativeSrc":"16468:4:75","nodeType":"YulLiteral","src":"16468:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16453:3:75","nodeType":"YulIdentifier","src":"16453:3:75"},"nativeSrc":"16453:20:75","nodeType":"YulFunctionCall","src":"16453:20:75"},{"arguments":[{"name":"ret","nativeSrc":"16479:3:75","nodeType":"YulIdentifier","src":"16479:3:75"},{"name":"headStart","nativeSrc":"16484:9:75","nodeType":"YulIdentifier","src":"16484:9:75"}],"functionName":{"name":"sub","nativeSrc":"16475:3:75","nodeType":"YulIdentifier","src":"16475:3:75"},"nativeSrc":"16475:19:75","nodeType":"YulFunctionCall","src":"16475:19:75"}],"functionName":{"name":"mstore","nativeSrc":"16446:6:75","nodeType":"YulIdentifier","src":"16446:6:75"},"nativeSrc":"16446:49:75","nodeType":"YulFunctionCall","src":"16446:49:75"},"nativeSrc":"16446:49:75","nodeType":"YulExpressionStatement","src":"16446:49:75"},{"nativeSrc":"16504:58:75","nodeType":"YulAssignment","src":"16504:58:75","value":{"arguments":[{"name":"value1","nativeSrc":"16550:6:75","nodeType":"YulIdentifier","src":"16550:6:75"},{"name":"ret","nativeSrc":"16558:3:75","nodeType":"YulIdentifier","src":"16558:3:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig_calldata","nativeSrc":"16512:37:75","nodeType":"YulIdentifier","src":"16512:37:75"},"nativeSrc":"16512:50:75","nodeType":"YulFunctionCall","src":"16512:50:75"},"variableNames":[{"name":"tail","nativeSrc":"16504:4:75","nodeType":"YulIdentifier","src":"16504:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_storage_t_struct$_SwapConfig_$624_calldata_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"15185:1383:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15382:9:75","nodeType":"YulTypedName","src":"15382:9:75","type":""},{"name":"value1","nativeSrc":"15393:6:75","nodeType":"YulTypedName","src":"15393:6:75","type":""},{"name":"value0","nativeSrc":"15401:6:75","nodeType":"YulTypedName","src":"15401:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15412:4:75","nodeType":"YulTypedName","src":"15412:4:75","type":""}],"src":"15185:1383:75"},{"body":{"nativeSrc":"16653:437:75","nodeType":"YulBlock","src":"16653:437:75","statements":[{"body":{"nativeSrc":"16686:398:75","nodeType":"YulBlock","src":"16686:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16707:1:75","nodeType":"YulLiteral","src":"16707:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"16710:5:75","nodeType":"YulIdentifier","src":"16710:5:75"}],"functionName":{"name":"mstore","nativeSrc":"16700:6:75","nodeType":"YulIdentifier","src":"16700:6:75"},"nativeSrc":"16700:16:75","nodeType":"YulFunctionCall","src":"16700:16:75"},"nativeSrc":"16700:16:75","nodeType":"YulExpressionStatement","src":"16700:16:75"},{"nativeSrc":"16729:30:75","nodeType":"YulVariableDeclaration","src":"16729:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"16751:1:75","nodeType":"YulLiteral","src":"16751:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16754:4:75","nodeType":"YulLiteral","src":"16754:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"16741:9:75","nodeType":"YulIdentifier","src":"16741:9:75"},"nativeSrc":"16741:18:75","nodeType":"YulFunctionCall","src":"16741:18:75"},"variables":[{"name":"data","nativeSrc":"16733:4:75","nodeType":"YulTypedName","src":"16733:4:75","type":""}]},{"nativeSrc":"16772:57:75","nodeType":"YulVariableDeclaration","src":"16772:57:75","value":{"arguments":[{"name":"data","nativeSrc":"16795:4:75","nodeType":"YulIdentifier","src":"16795:4:75"},{"arguments":[{"kind":"number","nativeSrc":"16805:1:75","nodeType":"YulLiteral","src":"16805:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"16812:10:75","nodeType":"YulIdentifier","src":"16812:10:75"},{"kind":"number","nativeSrc":"16824:2:75","nodeType":"YulLiteral","src":"16824:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16808:3:75","nodeType":"YulIdentifier","src":"16808:3:75"},"nativeSrc":"16808:19:75","nodeType":"YulFunctionCall","src":"16808:19:75"}],"functionName":{"name":"shr","nativeSrc":"16801:3:75","nodeType":"YulIdentifier","src":"16801:3:75"},"nativeSrc":"16801:27:75","nodeType":"YulFunctionCall","src":"16801:27:75"}],"functionName":{"name":"add","nativeSrc":"16791:3:75","nodeType":"YulIdentifier","src":"16791:3:75"},"nativeSrc":"16791:38:75","nodeType":"YulFunctionCall","src":"16791:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"16776:11:75","nodeType":"YulTypedName","src":"16776:11:75","type":""}]},{"body":{"nativeSrc":"16866:23:75","nodeType":"YulBlock","src":"16866:23:75","statements":[{"nativeSrc":"16868:19:75","nodeType":"YulAssignment","src":"16868:19:75","value":{"name":"data","nativeSrc":"16883:4:75","nodeType":"YulIdentifier","src":"16883:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"16868:11:75","nodeType":"YulIdentifier","src":"16868:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"16848:10:75","nodeType":"YulIdentifier","src":"16848:10:75"},{"kind":"number","nativeSrc":"16860:4:75","nodeType":"YulLiteral","src":"16860:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"16845:2:75","nodeType":"YulIdentifier","src":"16845:2:75"},"nativeSrc":"16845:20:75","nodeType":"YulFunctionCall","src":"16845:20:75"},"nativeSrc":"16842:47:75","nodeType":"YulIf","src":"16842:47:75"},{"nativeSrc":"16902:41:75","nodeType":"YulVariableDeclaration","src":"16902:41:75","value":{"arguments":[{"name":"data","nativeSrc":"16916:4:75","nodeType":"YulIdentifier","src":"16916:4:75"},{"arguments":[{"kind":"number","nativeSrc":"16926:1:75","nodeType":"YulLiteral","src":"16926:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"16933:3:75","nodeType":"YulIdentifier","src":"16933:3:75"},{"kind":"number","nativeSrc":"16938:2:75","nodeType":"YulLiteral","src":"16938:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16929:3:75","nodeType":"YulIdentifier","src":"16929:3:75"},"nativeSrc":"16929:12:75","nodeType":"YulFunctionCall","src":"16929:12:75"}],"functionName":{"name":"shr","nativeSrc":"16922:3:75","nodeType":"YulIdentifier","src":"16922:3:75"},"nativeSrc":"16922:20:75","nodeType":"YulFunctionCall","src":"16922:20:75"}],"functionName":{"name":"add","nativeSrc":"16912:3:75","nodeType":"YulIdentifier","src":"16912:3:75"},"nativeSrc":"16912:31:75","nodeType":"YulFunctionCall","src":"16912:31:75"},"variables":[{"name":"_1","nativeSrc":"16906:2:75","nodeType":"YulTypedName","src":"16906:2:75","type":""}]},{"nativeSrc":"16956:24:75","nodeType":"YulVariableDeclaration","src":"16956:24:75","value":{"name":"deleteStart","nativeSrc":"16969:11:75","nodeType":"YulIdentifier","src":"16969:11:75"},"variables":[{"name":"start","nativeSrc":"16960:5:75","nodeType":"YulTypedName","src":"16960:5:75","type":""}]},{"body":{"nativeSrc":"17054:20:75","nodeType":"YulBlock","src":"17054:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"17063:5:75","nodeType":"YulIdentifier","src":"17063:5:75"},{"kind":"number","nativeSrc":"17070:1:75","nodeType":"YulLiteral","src":"17070:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"17056:6:75","nodeType":"YulIdentifier","src":"17056:6:75"},"nativeSrc":"17056:16:75","nodeType":"YulFunctionCall","src":"17056:16:75"},"nativeSrc":"17056:16:75","nodeType":"YulExpressionStatement","src":"17056:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"17004:5:75","nodeType":"YulIdentifier","src":"17004:5:75"},{"name":"_1","nativeSrc":"17011:2:75","nodeType":"YulIdentifier","src":"17011:2:75"}],"functionName":{"name":"lt","nativeSrc":"17001:2:75","nodeType":"YulIdentifier","src":"17001:2:75"},"nativeSrc":"17001:13:75","nodeType":"YulFunctionCall","src":"17001:13:75"},"nativeSrc":"16993:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"17015:26:75","nodeType":"YulBlock","src":"17015:26:75","statements":[{"nativeSrc":"17017:22:75","nodeType":"YulAssignment","src":"17017:22:75","value":{"arguments":[{"name":"start","nativeSrc":"17030:5:75","nodeType":"YulIdentifier","src":"17030:5:75"},{"kind":"number","nativeSrc":"17037:1:75","nodeType":"YulLiteral","src":"17037:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17026:3:75","nodeType":"YulIdentifier","src":"17026:3:75"},"nativeSrc":"17026:13:75","nodeType":"YulFunctionCall","src":"17026:13:75"},"variableNames":[{"name":"start","nativeSrc":"17017:5:75","nodeType":"YulIdentifier","src":"17017:5:75"}]}]},"pre":{"nativeSrc":"16997:3:75","nodeType":"YulBlock","src":"16997:3:75","statements":[]},"src":"16993:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"16669:3:75","nodeType":"YulIdentifier","src":"16669:3:75"},{"kind":"number","nativeSrc":"16674:2:75","nodeType":"YulLiteral","src":"16674:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"16666:2:75","nodeType":"YulIdentifier","src":"16666:2:75"},"nativeSrc":"16666:11:75","nodeType":"YulFunctionCall","src":"16666:11:75"},"nativeSrc":"16663:421:75","nodeType":"YulIf","src":"16663:421:75"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"16573:517:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"16625:5:75","nodeType":"YulTypedName","src":"16625:5:75","type":""},{"name":"len","nativeSrc":"16632:3:75","nodeType":"YulTypedName","src":"16632:3:75","type":""},{"name":"startIndex","nativeSrc":"16637:10:75","nodeType":"YulTypedName","src":"16637:10:75","type":""}],"src":"16573:517:75"},{"body":{"nativeSrc":"17180:81:75","nodeType":"YulBlock","src":"17180:81:75","statements":[{"nativeSrc":"17190:65:75","nodeType":"YulAssignment","src":"17190:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"17205:4:75","nodeType":"YulIdentifier","src":"17205:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17223:1:75","nodeType":"YulLiteral","src":"17223:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"17226:3:75","nodeType":"YulIdentifier","src":"17226:3:75"}],"functionName":{"name":"shl","nativeSrc":"17219:3:75","nodeType":"YulIdentifier","src":"17219:3:75"},"nativeSrc":"17219:11:75","nodeType":"YulFunctionCall","src":"17219:11:75"},{"arguments":[{"kind":"number","nativeSrc":"17236:1:75","nodeType":"YulLiteral","src":"17236:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17232:3:75","nodeType":"YulIdentifier","src":"17232:3:75"},"nativeSrc":"17232:6:75","nodeType":"YulFunctionCall","src":"17232:6:75"}],"functionName":{"name":"shr","nativeSrc":"17215:3:75","nodeType":"YulIdentifier","src":"17215:3:75"},"nativeSrc":"17215:24:75","nodeType":"YulFunctionCall","src":"17215:24:75"}],"functionName":{"name":"not","nativeSrc":"17211:3:75","nodeType":"YulIdentifier","src":"17211:3:75"},"nativeSrc":"17211:29:75","nodeType":"YulFunctionCall","src":"17211:29:75"}],"functionName":{"name":"and","nativeSrc":"17201:3:75","nodeType":"YulIdentifier","src":"17201:3:75"},"nativeSrc":"17201:40:75","nodeType":"YulFunctionCall","src":"17201:40:75"},{"arguments":[{"kind":"number","nativeSrc":"17247:1:75","nodeType":"YulLiteral","src":"17247:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"17250:3:75","nodeType":"YulIdentifier","src":"17250:3:75"}],"functionName":{"name":"shl","nativeSrc":"17243:3:75","nodeType":"YulIdentifier","src":"17243:3:75"},"nativeSrc":"17243:11:75","nodeType":"YulFunctionCall","src":"17243:11:75"}],"functionName":{"name":"or","nativeSrc":"17198:2:75","nodeType":"YulIdentifier","src":"17198:2:75"},"nativeSrc":"17198:57:75","nodeType":"YulFunctionCall","src":"17198:57:75"},"variableNames":[{"name":"used","nativeSrc":"17190:4:75","nodeType":"YulIdentifier","src":"17190:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"17095:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"17157:4:75","nodeType":"YulTypedName","src":"17157:4:75","type":""},{"name":"len","nativeSrc":"17163:3:75","nodeType":"YulTypedName","src":"17163:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"17171:4:75","nodeType":"YulTypedName","src":"17171:4:75","type":""}],"src":"17095:166:75"},{"body":{"nativeSrc":"17351:1093:75","nodeType":"YulBlock","src":"17351:1093:75","statements":[{"body":{"nativeSrc":"17392:22:75","nodeType":"YulBlock","src":"17392:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"17394:16:75","nodeType":"YulIdentifier","src":"17394:16:75"},"nativeSrc":"17394:18:75","nodeType":"YulFunctionCall","src":"17394:18:75"},"nativeSrc":"17394:18:75","nodeType":"YulExpressionStatement","src":"17394:18:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"17367:3:75","nodeType":"YulIdentifier","src":"17367:3:75"},{"kind":"number","nativeSrc":"17372:18:75","nodeType":"YulLiteral","src":"17372:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17364:2:75","nodeType":"YulIdentifier","src":"17364:2:75"},"nativeSrc":"17364:27:75","nodeType":"YulFunctionCall","src":"17364:27:75"},"nativeSrc":"17361:53:75","nodeType":"YulIf","src":"17361:53:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"17466:4:75","nodeType":"YulIdentifier","src":"17466:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"17504:4:75","nodeType":"YulIdentifier","src":"17504:4:75"}],"functionName":{"name":"sload","nativeSrc":"17498:5:75","nodeType":"YulIdentifier","src":"17498:5:75"},"nativeSrc":"17498:11:75","nodeType":"YulFunctionCall","src":"17498:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"17472:25:75","nodeType":"YulIdentifier","src":"17472:25:75"},"nativeSrc":"17472:38:75","nodeType":"YulFunctionCall","src":"17472:38:75"},{"name":"len","nativeSrc":"17512:3:75","nodeType":"YulIdentifier","src":"17512:3:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"17423:42:75","nodeType":"YulIdentifier","src":"17423:42:75"},"nativeSrc":"17423:93:75","nodeType":"YulFunctionCall","src":"17423:93:75"},"nativeSrc":"17423:93:75","nodeType":"YulExpressionStatement","src":"17423:93:75"},{"nativeSrc":"17525:18:75","nodeType":"YulVariableDeclaration","src":"17525:18:75","value":{"kind":"number","nativeSrc":"17542:1:75","nodeType":"YulLiteral","src":"17542:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"17529:9:75","nodeType":"YulTypedName","src":"17529:9:75","type":""}]},{"cases":[{"body":{"nativeSrc":"17586:600:75","nodeType":"YulBlock","src":"17586:600:75","statements":[{"nativeSrc":"17600:32:75","nodeType":"YulVariableDeclaration","src":"17600:32:75","value":{"arguments":[{"name":"len","nativeSrc":"17619:3:75","nodeType":"YulIdentifier","src":"17619:3:75"},{"arguments":[{"kind":"number","nativeSrc":"17628:2:75","nodeType":"YulLiteral","src":"17628:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17624:3:75","nodeType":"YulIdentifier","src":"17624:3:75"},"nativeSrc":"17624:7:75","nodeType":"YulFunctionCall","src":"17624:7:75"}],"functionName":{"name":"and","nativeSrc":"17615:3:75","nodeType":"YulIdentifier","src":"17615:3:75"},"nativeSrc":"17615:17:75","nodeType":"YulFunctionCall","src":"17615:17:75"},"variables":[{"name":"loopEnd","nativeSrc":"17604:7:75","nodeType":"YulTypedName","src":"17604:7:75","type":""}]},{"nativeSrc":"17645:48:75","nodeType":"YulVariableDeclaration","src":"17645:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"17688:4:75","nodeType":"YulIdentifier","src":"17688:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"17659:28:75","nodeType":"YulIdentifier","src":"17659:28:75"},"nativeSrc":"17659:34:75","nodeType":"YulFunctionCall","src":"17659:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"17649:6:75","nodeType":"YulTypedName","src":"17649:6:75","type":""}]},{"nativeSrc":"17706:10:75","nodeType":"YulVariableDeclaration","src":"17706:10:75","value":{"kind":"number","nativeSrc":"17715:1:75","nodeType":"YulLiteral","src":"17715:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"17710:1:75","nodeType":"YulTypedName","src":"17710:1:75","type":""}]},{"body":{"nativeSrc":"17786:172:75","nodeType":"YulBlock","src":"17786:172:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"17811:6:75","nodeType":"YulIdentifier","src":"17811:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"17836:3:75","nodeType":"YulIdentifier","src":"17836:3:75"},{"name":"srcOffset","nativeSrc":"17841:9:75","nodeType":"YulIdentifier","src":"17841:9:75"}],"functionName":{"name":"add","nativeSrc":"17832:3:75","nodeType":"YulIdentifier","src":"17832:3:75"},"nativeSrc":"17832:19:75","nodeType":"YulFunctionCall","src":"17832:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"17819:12:75","nodeType":"YulIdentifier","src":"17819:12:75"},"nativeSrc":"17819:33:75","nodeType":"YulFunctionCall","src":"17819:33:75"}],"functionName":{"name":"sstore","nativeSrc":"17804:6:75","nodeType":"YulIdentifier","src":"17804:6:75"},"nativeSrc":"17804:49:75","nodeType":"YulFunctionCall","src":"17804:49:75"},"nativeSrc":"17804:49:75","nodeType":"YulExpressionStatement","src":"17804:49:75"},{"nativeSrc":"17870:24:75","nodeType":"YulAssignment","src":"17870:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"17884:6:75","nodeType":"YulIdentifier","src":"17884:6:75"},{"kind":"number","nativeSrc":"17892:1:75","nodeType":"YulLiteral","src":"17892:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17880:3:75","nodeType":"YulIdentifier","src":"17880:3:75"},"nativeSrc":"17880:14:75","nodeType":"YulFunctionCall","src":"17880:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"17870:6:75","nodeType":"YulIdentifier","src":"17870:6:75"}]},{"nativeSrc":"17911:33:75","nodeType":"YulAssignment","src":"17911:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"17928:9:75","nodeType":"YulIdentifier","src":"17928:9:75"},{"kind":"number","nativeSrc":"17939:4:75","nodeType":"YulLiteral","src":"17939:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17924:3:75","nodeType":"YulIdentifier","src":"17924:3:75"},"nativeSrc":"17924:20:75","nodeType":"YulFunctionCall","src":"17924:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"17911:9:75","nodeType":"YulIdentifier","src":"17911:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"17740:1:75","nodeType":"YulIdentifier","src":"17740:1:75"},{"name":"loopEnd","nativeSrc":"17743:7:75","nodeType":"YulIdentifier","src":"17743:7:75"}],"functionName":{"name":"lt","nativeSrc":"17737:2:75","nodeType":"YulIdentifier","src":"17737:2:75"},"nativeSrc":"17737:14:75","nodeType":"YulFunctionCall","src":"17737:14:75"},"nativeSrc":"17729:229:75","nodeType":"YulForLoop","post":{"nativeSrc":"17752:21:75","nodeType":"YulBlock","src":"17752:21:75","statements":[{"nativeSrc":"17754:17:75","nodeType":"YulAssignment","src":"17754:17:75","value":{"arguments":[{"name":"i","nativeSrc":"17763:1:75","nodeType":"YulIdentifier","src":"17763:1:75"},{"kind":"number","nativeSrc":"17766:4:75","nodeType":"YulLiteral","src":"17766:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17759:3:75","nodeType":"YulIdentifier","src":"17759:3:75"},"nativeSrc":"17759:12:75","nodeType":"YulFunctionCall","src":"17759:12:75"},"variableNames":[{"name":"i","nativeSrc":"17754:1:75","nodeType":"YulIdentifier","src":"17754:1:75"}]}]},"pre":{"nativeSrc":"17733:3:75","nodeType":"YulBlock","src":"17733:3:75","statements":[]},"src":"17729:229:75"},{"body":{"nativeSrc":"18003:127:75","nodeType":"YulBlock","src":"18003:127:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"18028:6:75","nodeType":"YulIdentifier","src":"18028:6:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"src","nativeSrc":"18057:3:75","nodeType":"YulIdentifier","src":"18057:3:75"},{"name":"srcOffset","nativeSrc":"18062:9:75","nodeType":"YulIdentifier","src":"18062:9:75"}],"functionName":{"name":"add","nativeSrc":"18053:3:75","nodeType":"YulIdentifier","src":"18053:3:75"},"nativeSrc":"18053:19:75","nodeType":"YulFunctionCall","src":"18053:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"18040:12:75","nodeType":"YulIdentifier","src":"18040:12:75"},"nativeSrc":"18040:33:75","nodeType":"YulFunctionCall","src":"18040:33:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18091:1:75","nodeType":"YulLiteral","src":"18091:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"18094:3:75","nodeType":"YulIdentifier","src":"18094:3:75"}],"functionName":{"name":"shl","nativeSrc":"18087:3:75","nodeType":"YulIdentifier","src":"18087:3:75"},"nativeSrc":"18087:11:75","nodeType":"YulFunctionCall","src":"18087:11:75"},{"kind":"number","nativeSrc":"18100:3:75","nodeType":"YulLiteral","src":"18100:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"18083:3:75","nodeType":"YulIdentifier","src":"18083:3:75"},"nativeSrc":"18083:21:75","nodeType":"YulFunctionCall","src":"18083:21:75"},{"arguments":[{"kind":"number","nativeSrc":"18110:1:75","nodeType":"YulLiteral","src":"18110:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"18106:3:75","nodeType":"YulIdentifier","src":"18106:3:75"},"nativeSrc":"18106:6:75","nodeType":"YulFunctionCall","src":"18106:6:75"}],"functionName":{"name":"shr","nativeSrc":"18079:3:75","nodeType":"YulIdentifier","src":"18079:3:75"},"nativeSrc":"18079:34:75","nodeType":"YulFunctionCall","src":"18079:34:75"}],"functionName":{"name":"not","nativeSrc":"18075:3:75","nodeType":"YulIdentifier","src":"18075:3:75"},"nativeSrc":"18075:39:75","nodeType":"YulFunctionCall","src":"18075:39:75"}],"functionName":{"name":"and","nativeSrc":"18036:3:75","nodeType":"YulIdentifier","src":"18036:3:75"},"nativeSrc":"18036:79:75","nodeType":"YulFunctionCall","src":"18036:79:75"}],"functionName":{"name":"sstore","nativeSrc":"18021:6:75","nodeType":"YulIdentifier","src":"18021:6:75"},"nativeSrc":"18021:95:75","nodeType":"YulFunctionCall","src":"18021:95:75"},"nativeSrc":"18021:95:75","nodeType":"YulExpressionStatement","src":"18021:95:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"17977:7:75","nodeType":"YulIdentifier","src":"17977:7:75"},{"name":"len","nativeSrc":"17986:3:75","nodeType":"YulIdentifier","src":"17986:3:75"}],"functionName":{"name":"lt","nativeSrc":"17974:2:75","nodeType":"YulIdentifier","src":"17974:2:75"},"nativeSrc":"17974:16:75","nodeType":"YulFunctionCall","src":"17974:16:75"},"nativeSrc":"17971:159:75","nodeType":"YulIf","src":"17971:159:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"18150:4:75","nodeType":"YulIdentifier","src":"18150:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18164:1:75","nodeType":"YulLiteral","src":"18164:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"18167:3:75","nodeType":"YulIdentifier","src":"18167:3:75"}],"functionName":{"name":"shl","nativeSrc":"18160:3:75","nodeType":"YulIdentifier","src":"18160:3:75"},"nativeSrc":"18160:11:75","nodeType":"YulFunctionCall","src":"18160:11:75"},{"kind":"number","nativeSrc":"18173:1:75","nodeType":"YulLiteral","src":"18173:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18156:3:75","nodeType":"YulIdentifier","src":"18156:3:75"},"nativeSrc":"18156:19:75","nodeType":"YulFunctionCall","src":"18156:19:75"}],"functionName":{"name":"sstore","nativeSrc":"18143:6:75","nodeType":"YulIdentifier","src":"18143:6:75"},"nativeSrc":"18143:33:75","nodeType":"YulFunctionCall","src":"18143:33:75"},"nativeSrc":"18143:33:75","nodeType":"YulExpressionStatement","src":"18143:33:75"}]},"nativeSrc":"17579:607:75","nodeType":"YulCase","src":"17579:607:75","value":{"kind":"number","nativeSrc":"17584:1:75","nodeType":"YulLiteral","src":"17584:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"18203:235:75","nodeType":"YulBlock","src":"18203:235:75","statements":[{"nativeSrc":"18217:14:75","nodeType":"YulVariableDeclaration","src":"18217:14:75","value":{"kind":"number","nativeSrc":"18230:1:75","nodeType":"YulLiteral","src":"18230:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"18221:5:75","nodeType":"YulTypedName","src":"18221:5:75","type":""}]},{"body":{"nativeSrc":"18263:74:75","nodeType":"YulBlock","src":"18263:74:75","statements":[{"nativeSrc":"18281:42:75","nodeType":"YulAssignment","src":"18281:42:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"18307:3:75","nodeType":"YulIdentifier","src":"18307:3:75"},{"name":"srcOffset","nativeSrc":"18312:9:75","nodeType":"YulIdentifier","src":"18312:9:75"}],"functionName":{"name":"add","nativeSrc":"18303:3:75","nodeType":"YulIdentifier","src":"18303:3:75"},"nativeSrc":"18303:19:75","nodeType":"YulFunctionCall","src":"18303:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"18290:12:75","nodeType":"YulIdentifier","src":"18290:12:75"},"nativeSrc":"18290:33:75","nodeType":"YulFunctionCall","src":"18290:33:75"},"variableNames":[{"name":"value","nativeSrc":"18281:5:75","nodeType":"YulIdentifier","src":"18281:5:75"}]}]},"condition":{"name":"len","nativeSrc":"18247:3:75","nodeType":"YulIdentifier","src":"18247:3:75"},"nativeSrc":"18244:93:75","nodeType":"YulIf","src":"18244:93:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"18357:4:75","nodeType":"YulIdentifier","src":"18357:4:75"},{"arguments":[{"name":"value","nativeSrc":"18416:5:75","nodeType":"YulIdentifier","src":"18416:5:75"},{"name":"len","nativeSrc":"18423:3:75","nodeType":"YulIdentifier","src":"18423:3:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"18363:52:75","nodeType":"YulIdentifier","src":"18363:52:75"},"nativeSrc":"18363:64:75","nodeType":"YulFunctionCall","src":"18363:64:75"}],"functionName":{"name":"sstore","nativeSrc":"18350:6:75","nodeType":"YulIdentifier","src":"18350:6:75"},"nativeSrc":"18350:78:75","nodeType":"YulFunctionCall","src":"18350:78:75"},"nativeSrc":"18350:78:75","nodeType":"YulExpressionStatement","src":"18350:78:75"}]},"nativeSrc":"18195:243:75","nodeType":"YulCase","src":"18195:243:75","value":"default"}],"expression":{"arguments":[{"name":"len","nativeSrc":"17562:3:75","nodeType":"YulIdentifier","src":"17562:3:75"},{"kind":"number","nativeSrc":"17567:2:75","nodeType":"YulLiteral","src":"17567:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"17559:2:75","nodeType":"YulIdentifier","src":"17559:2:75"},"nativeSrc":"17559:11:75","nodeType":"YulFunctionCall","src":"17559:11:75"},"nativeSrc":"17552:886:75","nodeType":"YulSwitch","src":"17552:886:75"}]},"name":"copy_byte_array_to_storage_from_bytes_calldata_to_bytes","nativeSrc":"17266:1178:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"17331:4:75","nodeType":"YulTypedName","src":"17331:4:75","type":""},{"name":"src","nativeSrc":"17337:3:75","nodeType":"YulTypedName","src":"17337:3:75","type":""},{"name":"len","nativeSrc":"17342:3:75","nodeType":"YulTypedName","src":"17342:3:75","type":""}],"src":"17266:1178:75"},{"body":{"nativeSrc":"18581:933:75","nodeType":"YulBlock","src":"18581:933:75","statements":[{"nativeSrc":"18591:34:75","nodeType":"YulVariableDeclaration","src":"18591:34:75","value":{"arguments":[{"name":"value","nativeSrc":"18619:5:75","nodeType":"YulIdentifier","src":"18619:5:75"}],"functionName":{"name":"calldataload","nativeSrc":"18606:12:75","nodeType":"YulIdentifier","src":"18606:12:75"},"nativeSrc":"18606:19:75","nodeType":"YulFunctionCall","src":"18606:19:75"},"variables":[{"name":"value_1","nativeSrc":"18595:7:75","nodeType":"YulTypedName","src":"18595:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"18669:7:75","nodeType":"YulIdentifier","src":"18669:7:75"}],"functionName":{"name":"validator_revert_enum_SwapProtocol","nativeSrc":"18634:34:75","nodeType":"YulIdentifier","src":"18634:34:75"},"nativeSrc":"18634:43:75","nodeType":"YulFunctionCall","src":"18634:43:75"},"nativeSrc":"18634:43:75","nodeType":"YulExpressionStatement","src":"18634:43:75"},{"body":{"nativeSrc":"18720:111:75","nodeType":"YulBlock","src":"18720:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18741:1:75","nodeType":"YulLiteral","src":"18741:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"18748:3:75","nodeType":"YulLiteral","src":"18748:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"18753:10:75","nodeType":"YulLiteral","src":"18753:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"18744:3:75","nodeType":"YulIdentifier","src":"18744:3:75"},"nativeSrc":"18744:20:75","nodeType":"YulFunctionCall","src":"18744:20:75"}],"functionName":{"name":"mstore","nativeSrc":"18734:6:75","nodeType":"YulIdentifier","src":"18734:6:75"},"nativeSrc":"18734:31:75","nodeType":"YulFunctionCall","src":"18734:31:75"},"nativeSrc":"18734:31:75","nodeType":"YulExpressionStatement","src":"18734:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18785:1:75","nodeType":"YulLiteral","src":"18785:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"18788:4:75","nodeType":"YulLiteral","src":"18788:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"18778:6:75","nodeType":"YulIdentifier","src":"18778:6:75"},"nativeSrc":"18778:15:75","nodeType":"YulFunctionCall","src":"18778:15:75"},"nativeSrc":"18778:15:75","nodeType":"YulExpressionStatement","src":"18778:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18813:1:75","nodeType":"YulLiteral","src":"18813:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"18816:4:75","nodeType":"YulLiteral","src":"18816:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"18806:6:75","nodeType":"YulIdentifier","src":"18806:6:75"},"nativeSrc":"18806:15:75","nodeType":"YulFunctionCall","src":"18806:15:75"},"nativeSrc":"18806:15:75","nodeType":"YulExpressionStatement","src":"18806:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18699:7:75","nodeType":"YulIdentifier","src":"18699:7:75"},{"kind":"number","nativeSrc":"18708:1:75","nodeType":"YulLiteral","src":"18708:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"18696:2:75","nodeType":"YulIdentifier","src":"18696:2:75"},"nativeSrc":"18696:14:75","nodeType":"YulFunctionCall","src":"18696:14:75"}],"functionName":{"name":"iszero","nativeSrc":"18689:6:75","nodeType":"YulIdentifier","src":"18689:6:75"},"nativeSrc":"18689:22:75","nodeType":"YulFunctionCall","src":"18689:22:75"},"nativeSrc":"18686:145:75","nodeType":"YulIf","src":"18686:145:75"},{"nativeSrc":"18840:41:75","nodeType":"YulVariableDeclaration","src":"18840:41:75","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"18865:4:75","nodeType":"YulIdentifier","src":"18865:4:75"}],"functionName":{"name":"sload","nativeSrc":"18859:5:75","nodeType":"YulIdentifier","src":"18859:5:75"},"nativeSrc":"18859:11:75","nodeType":"YulFunctionCall","src":"18859:11:75"},{"arguments":[{"kind":"number","nativeSrc":"18876:3:75","nodeType":"YulLiteral","src":"18876:3:75","type":"","value":"255"}],"functionName":{"name":"not","nativeSrc":"18872:3:75","nodeType":"YulIdentifier","src":"18872:3:75"},"nativeSrc":"18872:8:75","nodeType":"YulFunctionCall","src":"18872:8:75"}],"functionName":{"name":"and","nativeSrc":"18855:3:75","nodeType":"YulIdentifier","src":"18855:3:75"},"nativeSrc":"18855:26:75","nodeType":"YulFunctionCall","src":"18855:26:75"},"variables":[{"name":"value_2","nativeSrc":"18844:7:75","nodeType":"YulTypedName","src":"18844:7:75","type":""}]},{"expression":{"arguments":[{"name":"slot","nativeSrc":"18897:4:75","nodeType":"YulIdentifier","src":"18897:4:75"},{"arguments":[{"name":"value_2","nativeSrc":"18906:7:75","nodeType":"YulIdentifier","src":"18906:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"18919:7:75","nodeType":"YulIdentifier","src":"18919:7:75"},{"kind":"number","nativeSrc":"18928:3:75","nodeType":"YulLiteral","src":"18928:3:75","type":"","value":"255"}],"functionName":{"name":"and","nativeSrc":"18915:3:75","nodeType":"YulIdentifier","src":"18915:3:75"},"nativeSrc":"18915:17:75","nodeType":"YulFunctionCall","src":"18915:17:75"}],"functionName":{"name":"or","nativeSrc":"18903:2:75","nodeType":"YulIdentifier","src":"18903:2:75"},"nativeSrc":"18903:30:75","nodeType":"YulFunctionCall","src":"18903:30:75"}],"functionName":{"name":"sstore","nativeSrc":"18890:6:75","nodeType":"YulIdentifier","src":"18890:6:75"},"nativeSrc":"18890:44:75","nodeType":"YulFunctionCall","src":"18890:44:75"},"nativeSrc":"18890:44:75","nodeType":"YulExpressionStatement","src":"18890:44:75"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"18954:4:75","nodeType":"YulIdentifier","src":"18954:4:75"},{"kind":"number","nativeSrc":"18960:1:75","nodeType":"YulLiteral","src":"18960:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"18950:3:75","nodeType":"YulIdentifier","src":"18950:3:75"},"nativeSrc":"18950:12:75","nodeType":"YulFunctionCall","src":"18950:12:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"18981:5:75","nodeType":"YulIdentifier","src":"18981:5:75"},{"kind":"number","nativeSrc":"18988:2:75","nodeType":"YulLiteral","src":"18988:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18977:3:75","nodeType":"YulIdentifier","src":"18977:3:75"},"nativeSrc":"18977:14:75","nodeType":"YulFunctionCall","src":"18977:14:75"}],"functionName":{"name":"calldataload","nativeSrc":"18964:12:75","nodeType":"YulIdentifier","src":"18964:12:75"},"nativeSrc":"18964:28:75","nodeType":"YulFunctionCall","src":"18964:28:75"}],"functionName":{"name":"sstore","nativeSrc":"18943:6:75","nodeType":"YulIdentifier","src":"18943:6:75"},"nativeSrc":"18943:50:75","nodeType":"YulFunctionCall","src":"18943:50:75"},"nativeSrc":"18943:50:75","nodeType":"YulExpressionStatement","src":"18943:50:75"},{"nativeSrc":"19002:54:75","nodeType":"YulVariableDeclaration","src":"19002:54:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"19045:5:75","nodeType":"YulIdentifier","src":"19045:5:75"},{"kind":"number","nativeSrc":"19052:2:75","nodeType":"YulLiteral","src":"19052:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19041:3:75","nodeType":"YulIdentifier","src":"19041:3:75"},"nativeSrc":"19041:14:75","nodeType":"YulFunctionCall","src":"19041:14:75"}],"functionName":{"name":"calldataload","nativeSrc":"19028:12:75","nodeType":"YulIdentifier","src":"19028:12:75"},"nativeSrc":"19028:28:75","nodeType":"YulFunctionCall","src":"19028:28:75"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"19006:18:75","nodeType":"YulTypedName","src":"19006:18:75","type":""}]},{"body":{"nativeSrc":"19142:16:75","nodeType":"YulBlock","src":"19142:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19151:1:75","nodeType":"YulLiteral","src":"19151:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19154:1:75","nodeType":"YulLiteral","src":"19154:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19144:6:75","nodeType":"YulIdentifier","src":"19144:6:75"},"nativeSrc":"19144:12:75","nodeType":"YulFunctionCall","src":"19144:12:75"},"nativeSrc":"19144:12:75","nodeType":"YulExpressionStatement","src":"19144:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"19079:18:75","nodeType":"YulIdentifier","src":"19079:18:75"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"19107:12:75","nodeType":"YulIdentifier","src":"19107:12:75"},"nativeSrc":"19107:14:75","nodeType":"YulFunctionCall","src":"19107:14:75"},{"name":"value","nativeSrc":"19123:5:75","nodeType":"YulIdentifier","src":"19123:5:75"}],"functionName":{"name":"sub","nativeSrc":"19103:3:75","nodeType":"YulIdentifier","src":"19103:3:75"},"nativeSrc":"19103:26:75","nodeType":"YulFunctionCall","src":"19103:26:75"},{"arguments":[{"kind":"number","nativeSrc":"19135:2:75","nodeType":"YulLiteral","src":"19135:2:75","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"19131:3:75","nodeType":"YulIdentifier","src":"19131:3:75"},"nativeSrc":"19131:7:75","nodeType":"YulFunctionCall","src":"19131:7:75"}],"functionName":{"name":"add","nativeSrc":"19099:3:75","nodeType":"YulIdentifier","src":"19099:3:75"},"nativeSrc":"19099:40:75","nodeType":"YulFunctionCall","src":"19099:40:75"}],"functionName":{"name":"slt","nativeSrc":"19075:3:75","nodeType":"YulIdentifier","src":"19075:3:75"},"nativeSrc":"19075:65:75","nodeType":"YulFunctionCall","src":"19075:65:75"}],"functionName":{"name":"iszero","nativeSrc":"19068:6:75","nodeType":"YulIdentifier","src":"19068:6:75"},"nativeSrc":"19068:73:75","nodeType":"YulFunctionCall","src":"19068:73:75"},"nativeSrc":"19065:93:75","nodeType":"YulIf","src":"19065:93:75"},{"nativeSrc":"19167:42:75","nodeType":"YulVariableDeclaration","src":"19167:42:75","value":{"arguments":[{"name":"value","nativeSrc":"19183:5:75","nodeType":"YulIdentifier","src":"19183:5:75"},{"name":"rel_offset_of_tail","nativeSrc":"19190:18:75","nodeType":"YulIdentifier","src":"19190:18:75"}],"functionName":{"name":"add","nativeSrc":"19179:3:75","nodeType":"YulIdentifier","src":"19179:3:75"},"nativeSrc":"19179:30:75","nodeType":"YulFunctionCall","src":"19179:30:75"},"variables":[{"name":"addr","nativeSrc":"19171:4:75","nodeType":"YulTypedName","src":"19171:4:75","type":""}]},{"nativeSrc":"19218:32:75","nodeType":"YulVariableDeclaration","src":"19218:32:75","value":{"arguments":[{"name":"addr","nativeSrc":"19245:4:75","nodeType":"YulIdentifier","src":"19245:4:75"}],"functionName":{"name":"calldataload","nativeSrc":"19232:12:75","nodeType":"YulIdentifier","src":"19232:12:75"},"nativeSrc":"19232:18:75","nodeType":"YulFunctionCall","src":"19232:18:75"},"variables":[{"name":"length","nativeSrc":"19222:6:75","nodeType":"YulTypedName","src":"19222:6:75","type":""}]},{"body":{"nativeSrc":"19293:16:75","nodeType":"YulBlock","src":"19293:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19302:1:75","nodeType":"YulLiteral","src":"19302:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19305:1:75","nodeType":"YulLiteral","src":"19305:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19295:6:75","nodeType":"YulIdentifier","src":"19295:6:75"},"nativeSrc":"19295:12:75","nodeType":"YulFunctionCall","src":"19295:12:75"},"nativeSrc":"19295:12:75","nodeType":"YulExpressionStatement","src":"19295:12:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"19265:6:75","nodeType":"YulIdentifier","src":"19265:6:75"},{"kind":"number","nativeSrc":"19273:18:75","nodeType":"YulLiteral","src":"19273:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"19262:2:75","nodeType":"YulIdentifier","src":"19262:2:75"},"nativeSrc":"19262:30:75","nodeType":"YulFunctionCall","src":"19262:30:75"},"nativeSrc":"19259:50:75","nodeType":"YulIf","src":"19259:50:75"},{"nativeSrc":"19318:27:75","nodeType":"YulVariableDeclaration","src":"19318:27:75","value":{"arguments":[{"name":"addr","nativeSrc":"19336:4:75","nodeType":"YulIdentifier","src":"19336:4:75"},{"kind":"number","nativeSrc":"19342:2:75","nodeType":"YulLiteral","src":"19342:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19332:3:75","nodeType":"YulIdentifier","src":"19332:3:75"},"nativeSrc":"19332:13:75","nodeType":"YulFunctionCall","src":"19332:13:75"},"variables":[{"name":"addr_1","nativeSrc":"19322:6:75","nodeType":"YulTypedName","src":"19322:6:75","type":""}]},{"body":{"nativeSrc":"19398:16:75","nodeType":"YulBlock","src":"19398:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19407:1:75","nodeType":"YulLiteral","src":"19407:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19410:1:75","nodeType":"YulLiteral","src":"19410:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19400:6:75","nodeType":"YulIdentifier","src":"19400:6:75"},"nativeSrc":"19400:12:75","nodeType":"YulFunctionCall","src":"19400:12:75"},"nativeSrc":"19400:12:75","nodeType":"YulExpressionStatement","src":"19400:12:75"}]},"condition":{"arguments":[{"name":"addr_1","nativeSrc":"19361:6:75","nodeType":"YulIdentifier","src":"19361:6:75"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"19373:12:75","nodeType":"YulIdentifier","src":"19373:12:75"},"nativeSrc":"19373:14:75","nodeType":"YulFunctionCall","src":"19373:14:75"},{"name":"length","nativeSrc":"19389:6:75","nodeType":"YulIdentifier","src":"19389:6:75"}],"functionName":{"name":"sub","nativeSrc":"19369:3:75","nodeType":"YulIdentifier","src":"19369:3:75"},"nativeSrc":"19369:27:75","nodeType":"YulFunctionCall","src":"19369:27:75"}],"functionName":{"name":"sgt","nativeSrc":"19357:3:75","nodeType":"YulIdentifier","src":"19357:3:75"},"nativeSrc":"19357:40:75","nodeType":"YulFunctionCall","src":"19357:40:75"},"nativeSrc":"19354:60:75","nodeType":"YulIf","src":"19354:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"19483:4:75","nodeType":"YulIdentifier","src":"19483:4:75"},{"kind":"number","nativeSrc":"19489:1:75","nodeType":"YulLiteral","src":"19489:1:75","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"19479:3:75","nodeType":"YulIdentifier","src":"19479:3:75"},"nativeSrc":"19479:12:75","nodeType":"YulFunctionCall","src":"19479:12:75"},{"name":"addr_1","nativeSrc":"19493:6:75","nodeType":"YulIdentifier","src":"19493:6:75"},{"name":"length","nativeSrc":"19501:6:75","nodeType":"YulIdentifier","src":"19501:6:75"}],"functionName":{"name":"copy_byte_array_to_storage_from_bytes_calldata_to_bytes","nativeSrc":"19423:55:75","nodeType":"YulIdentifier","src":"19423:55:75"},"nativeSrc":"19423:85:75","nodeType":"YulFunctionCall","src":"19423:85:75"},"nativeSrc":"19423:85:75","nodeType":"YulExpressionStatement","src":"19423:85:75"}]},"name":"update_storage_value_offset_0_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_storage","nativeSrc":"18449:1065:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"18564:4:75","nodeType":"YulTypedName","src":"18564:4:75","type":""},{"name":"value","nativeSrc":"18570:5:75","nodeType":"YulTypedName","src":"18570:5:75","type":""}],"src":"18449:1065:75"},{"body":{"nativeSrc":"19627:101:75","nodeType":"YulBlock","src":"19627:101:75","statements":[{"nativeSrc":"19637:26:75","nodeType":"YulAssignment","src":"19637:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19649:9:75","nodeType":"YulIdentifier","src":"19649:9:75"},{"kind":"number","nativeSrc":"19660:2:75","nodeType":"YulLiteral","src":"19660:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19645:3:75","nodeType":"YulIdentifier","src":"19645:3:75"},"nativeSrc":"19645:18:75","nodeType":"YulFunctionCall","src":"19645:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19637:4:75","nodeType":"YulIdentifier","src":"19637:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19679:9:75","nodeType":"YulIdentifier","src":"19679:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19694:6:75","nodeType":"YulIdentifier","src":"19694:6:75"},{"kind":"number","nativeSrc":"19702:18:75","nodeType":"YulLiteral","src":"19702:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"19690:3:75","nodeType":"YulIdentifier","src":"19690:3:75"},"nativeSrc":"19690:31:75","nodeType":"YulFunctionCall","src":"19690:31:75"}],"functionName":{"name":"mstore","nativeSrc":"19672:6:75","nodeType":"YulIdentifier","src":"19672:6:75"},"nativeSrc":"19672:50:75","nodeType":"YulFunctionCall","src":"19672:50:75"},"nativeSrc":"19672:50:75","nodeType":"YulExpressionStatement","src":"19672:50:75"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"19519:209:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19596:9:75","nodeType":"YulTypedName","src":"19596:9:75","type":""},{"name":"value0","nativeSrc":"19607:6:75","nodeType":"YulTypedName","src":"19607:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19618:4:75","nodeType":"YulTypedName","src":"19618:4:75","type":""}],"src":"19519:209:75"},{"body":{"nativeSrc":"19781:77:75","nodeType":"YulBlock","src":"19781:77:75","statements":[{"nativeSrc":"19791:16:75","nodeType":"YulAssignment","src":"19791:16:75","value":{"arguments":[{"name":"x","nativeSrc":"19802:1:75","nodeType":"YulIdentifier","src":"19802:1:75"},{"name":"y","nativeSrc":"19805:1:75","nodeType":"YulIdentifier","src":"19805:1:75"}],"functionName":{"name":"add","nativeSrc":"19798:3:75","nodeType":"YulIdentifier","src":"19798:3:75"},"nativeSrc":"19798:9:75","nodeType":"YulFunctionCall","src":"19798:9:75"},"variableNames":[{"name":"sum","nativeSrc":"19791:3:75","nodeType":"YulIdentifier","src":"19791:3:75"}]},{"body":{"nativeSrc":"19830:22:75","nodeType":"YulBlock","src":"19830:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19832:16:75","nodeType":"YulIdentifier","src":"19832:16:75"},"nativeSrc":"19832:18:75","nodeType":"YulFunctionCall","src":"19832:18:75"},"nativeSrc":"19832:18:75","nodeType":"YulExpressionStatement","src":"19832:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"19822:1:75","nodeType":"YulIdentifier","src":"19822:1:75"},{"name":"sum","nativeSrc":"19825:3:75","nodeType":"YulIdentifier","src":"19825:3:75"}],"functionName":{"name":"gt","nativeSrc":"19819:2:75","nodeType":"YulIdentifier","src":"19819:2:75"},"nativeSrc":"19819:10:75","nodeType":"YulFunctionCall","src":"19819:10:75"},"nativeSrc":"19816:36:75","nodeType":"YulIf","src":"19816:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"19733:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19764:1:75","nodeType":"YulTypedName","src":"19764:1:75","type":""},{"name":"y","nativeSrc":"19767:1:75","nodeType":"YulTypedName","src":"19767:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"19773:3:75","nodeType":"YulTypedName","src":"19773:3:75","type":""}],"src":"19733:125:75"},{"body":{"nativeSrc":"19932:306:75","nodeType":"YulBlock","src":"19932:306:75","statements":[{"nativeSrc":"19942:10:75","nodeType":"YulAssignment","src":"19942:10:75","value":{"kind":"number","nativeSrc":"19951:1:75","nodeType":"YulLiteral","src":"19951:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"19942:5:75","nodeType":"YulIdentifier","src":"19942:5:75"}]},{"nativeSrc":"19961:13:75","nodeType":"YulAssignment","src":"19961:13:75","value":{"name":"_base","nativeSrc":"19969:5:75","nodeType":"YulIdentifier","src":"19969:5:75"},"variableNames":[{"name":"base","nativeSrc":"19961:4:75","nodeType":"YulIdentifier","src":"19961:4:75"}]},{"body":{"nativeSrc":"20019:213:75","nodeType":"YulBlock","src":"20019:213:75","statements":[{"body":{"nativeSrc":"20061:22:75","nodeType":"YulBlock","src":"20061:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20063:16:75","nodeType":"YulIdentifier","src":"20063:16:75"},"nativeSrc":"20063:18:75","nodeType":"YulFunctionCall","src":"20063:18:75"},"nativeSrc":"20063:18:75","nodeType":"YulExpressionStatement","src":"20063:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"20039:4:75","nodeType":"YulIdentifier","src":"20039:4:75"},{"arguments":[{"name":"max","nativeSrc":"20049:3:75","nodeType":"YulIdentifier","src":"20049:3:75"},{"name":"base","nativeSrc":"20054:4:75","nodeType":"YulIdentifier","src":"20054:4:75"}],"functionName":{"name":"div","nativeSrc":"20045:3:75","nodeType":"YulIdentifier","src":"20045:3:75"},"nativeSrc":"20045:14:75","nodeType":"YulFunctionCall","src":"20045:14:75"}],"functionName":{"name":"gt","nativeSrc":"20036:2:75","nodeType":"YulIdentifier","src":"20036:2:75"},"nativeSrc":"20036:24:75","nodeType":"YulFunctionCall","src":"20036:24:75"},"nativeSrc":"20033:50:75","nodeType":"YulIf","src":"20033:50:75"},{"body":{"nativeSrc":"20116:29:75","nodeType":"YulBlock","src":"20116:29:75","statements":[{"nativeSrc":"20118:25:75","nodeType":"YulAssignment","src":"20118:25:75","value":{"arguments":[{"name":"power","nativeSrc":"20131:5:75","nodeType":"YulIdentifier","src":"20131:5:75"},{"name":"base","nativeSrc":"20138:4:75","nodeType":"YulIdentifier","src":"20138:4:75"}],"functionName":{"name":"mul","nativeSrc":"20127:3:75","nodeType":"YulIdentifier","src":"20127:3:75"},"nativeSrc":"20127:16:75","nodeType":"YulFunctionCall","src":"20127:16:75"},"variableNames":[{"name":"power","nativeSrc":"20118:5:75","nodeType":"YulIdentifier","src":"20118:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"20103:8:75","nodeType":"YulIdentifier","src":"20103:8:75"},{"kind":"number","nativeSrc":"20113:1:75","nodeType":"YulLiteral","src":"20113:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"20099:3:75","nodeType":"YulIdentifier","src":"20099:3:75"},"nativeSrc":"20099:16:75","nodeType":"YulFunctionCall","src":"20099:16:75"},"nativeSrc":"20096:49:75","nodeType":"YulIf","src":"20096:49:75"},{"nativeSrc":"20158:23:75","nodeType":"YulAssignment","src":"20158:23:75","value":{"arguments":[{"name":"base","nativeSrc":"20170:4:75","nodeType":"YulIdentifier","src":"20170:4:75"},{"name":"base","nativeSrc":"20176:4:75","nodeType":"YulIdentifier","src":"20176:4:75"}],"functionName":{"name":"mul","nativeSrc":"20166:3:75","nodeType":"YulIdentifier","src":"20166:3:75"},"nativeSrc":"20166:15:75","nodeType":"YulFunctionCall","src":"20166:15:75"},"variableNames":[{"name":"base","nativeSrc":"20158:4:75","nodeType":"YulIdentifier","src":"20158:4:75"}]},{"nativeSrc":"20194:28:75","nodeType":"YulAssignment","src":"20194:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"20210:1:75","nodeType":"YulLiteral","src":"20210:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"20213:8:75","nodeType":"YulIdentifier","src":"20213:8:75"}],"functionName":{"name":"shr","nativeSrc":"20206:3:75","nodeType":"YulIdentifier","src":"20206:3:75"},"nativeSrc":"20206:16:75","nodeType":"YulFunctionCall","src":"20206:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"20194:8:75","nodeType":"YulIdentifier","src":"20194:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"19994:8:75","nodeType":"YulIdentifier","src":"19994:8:75"},{"kind":"number","nativeSrc":"20004:1:75","nodeType":"YulLiteral","src":"20004:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"19991:2:75","nodeType":"YulIdentifier","src":"19991:2:75"},"nativeSrc":"19991:15:75","nodeType":"YulFunctionCall","src":"19991:15:75"},"nativeSrc":"19983:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"20007:3:75","nodeType":"YulBlock","src":"20007:3:75","statements":[]},"pre":{"nativeSrc":"19987:3:75","nodeType":"YulBlock","src":"19987:3:75","statements":[]},"src":"19983:249:75"}]},"name":"checked_exp_helper","nativeSrc":"19863:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"19891:5:75","nodeType":"YulTypedName","src":"19891:5:75","type":""},{"name":"exponent","nativeSrc":"19898:8:75","nodeType":"YulTypedName","src":"19898:8:75","type":""},{"name":"max","nativeSrc":"19908:3:75","nodeType":"YulTypedName","src":"19908:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"19916:5:75","nodeType":"YulTypedName","src":"19916:5:75","type":""},{"name":"base","nativeSrc":"19923:4:75","nodeType":"YulTypedName","src":"19923:4:75","type":""}],"src":"19863:375:75"},{"body":{"nativeSrc":"20302:843:75","nodeType":"YulBlock","src":"20302:843:75","statements":[{"body":{"nativeSrc":"20340:52:75","nodeType":"YulBlock","src":"20340:52:75","statements":[{"nativeSrc":"20354:10:75","nodeType":"YulAssignment","src":"20354:10:75","value":{"kind":"number","nativeSrc":"20363:1:75","nodeType":"YulLiteral","src":"20363:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"20354:5:75","nodeType":"YulIdentifier","src":"20354:5:75"}]},{"nativeSrc":"20377:5:75","nodeType":"YulLeave","src":"20377:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"20322:8:75","nodeType":"YulIdentifier","src":"20322:8:75"}],"functionName":{"name":"iszero","nativeSrc":"20315:6:75","nodeType":"YulIdentifier","src":"20315:6:75"},"nativeSrc":"20315:16:75","nodeType":"YulFunctionCall","src":"20315:16:75"},"nativeSrc":"20312:80:75","nodeType":"YulIf","src":"20312:80:75"},{"body":{"nativeSrc":"20425:52:75","nodeType":"YulBlock","src":"20425:52:75","statements":[{"nativeSrc":"20439:10:75","nodeType":"YulAssignment","src":"20439:10:75","value":{"kind":"number","nativeSrc":"20448:1:75","nodeType":"YulLiteral","src":"20448:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"20439:5:75","nodeType":"YulIdentifier","src":"20439:5:75"}]},{"nativeSrc":"20462:5:75","nodeType":"YulLeave","src":"20462:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"20411:4:75","nodeType":"YulIdentifier","src":"20411:4:75"}],"functionName":{"name":"iszero","nativeSrc":"20404:6:75","nodeType":"YulIdentifier","src":"20404:6:75"},"nativeSrc":"20404:12:75","nodeType":"YulFunctionCall","src":"20404:12:75"},"nativeSrc":"20401:76:75","nodeType":"YulIf","src":"20401:76:75"},{"cases":[{"body":{"nativeSrc":"20513:52:75","nodeType":"YulBlock","src":"20513:52:75","statements":[{"nativeSrc":"20527:10:75","nodeType":"YulAssignment","src":"20527:10:75","value":{"kind":"number","nativeSrc":"20536:1:75","nodeType":"YulLiteral","src":"20536:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"20527:5:75","nodeType":"YulIdentifier","src":"20527:5:75"}]},{"nativeSrc":"20550:5:75","nodeType":"YulLeave","src":"20550:5:75"}]},"nativeSrc":"20506:59:75","nodeType":"YulCase","src":"20506:59:75","value":{"kind":"number","nativeSrc":"20511:1:75","nodeType":"YulLiteral","src":"20511:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"20581:167:75","nodeType":"YulBlock","src":"20581:167:75","statements":[{"body":{"nativeSrc":"20616:22:75","nodeType":"YulBlock","src":"20616:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20618:16:75","nodeType":"YulIdentifier","src":"20618:16:75"},"nativeSrc":"20618:18:75","nodeType":"YulFunctionCall","src":"20618:18:75"},"nativeSrc":"20618:18:75","nodeType":"YulExpressionStatement","src":"20618:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"20601:8:75","nodeType":"YulIdentifier","src":"20601:8:75"},{"kind":"number","nativeSrc":"20611:3:75","nodeType":"YulLiteral","src":"20611:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"20598:2:75","nodeType":"YulIdentifier","src":"20598:2:75"},"nativeSrc":"20598:17:75","nodeType":"YulFunctionCall","src":"20598:17:75"},"nativeSrc":"20595:43:75","nodeType":"YulIf","src":"20595:43:75"},{"nativeSrc":"20651:25:75","nodeType":"YulAssignment","src":"20651:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"20664:8:75","nodeType":"YulIdentifier","src":"20664:8:75"},{"kind":"number","nativeSrc":"20674:1:75","nodeType":"YulLiteral","src":"20674:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"20660:3:75","nodeType":"YulIdentifier","src":"20660:3:75"},"nativeSrc":"20660:16:75","nodeType":"YulFunctionCall","src":"20660:16:75"},"variableNames":[{"name":"power","nativeSrc":"20651:5:75","nodeType":"YulIdentifier","src":"20651:5:75"}]},{"nativeSrc":"20689:11:75","nodeType":"YulVariableDeclaration","src":"20689:11:75","value":{"kind":"number","nativeSrc":"20699:1:75","nodeType":"YulLiteral","src":"20699:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"20693:2:75","nodeType":"YulTypedName","src":"20693:2:75","type":""}]},{"nativeSrc":"20713:7:75","nodeType":"YulAssignment","src":"20713:7:75","value":{"kind":"number","nativeSrc":"20719:1:75","nodeType":"YulLiteral","src":"20719:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"20713:2:75","nodeType":"YulIdentifier","src":"20713:2:75"}]},{"nativeSrc":"20733:5:75","nodeType":"YulLeave","src":"20733:5:75"}]},"nativeSrc":"20574:174:75","nodeType":"YulCase","src":"20574:174:75","value":{"kind":"number","nativeSrc":"20579:1:75","nodeType":"YulLiteral","src":"20579:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"20493:4:75","nodeType":"YulIdentifier","src":"20493:4:75"},"nativeSrc":"20486:262:75","nodeType":"YulSwitch","src":"20486:262:75"},{"body":{"nativeSrc":"20846:114:75","nodeType":"YulBlock","src":"20846:114:75","statements":[{"nativeSrc":"20860:28:75","nodeType":"YulAssignment","src":"20860:28:75","value":{"arguments":[{"name":"base","nativeSrc":"20873:4:75","nodeType":"YulIdentifier","src":"20873:4:75"},{"name":"exponent","nativeSrc":"20879:8:75","nodeType":"YulIdentifier","src":"20879:8:75"}],"functionName":{"name":"exp","nativeSrc":"20869:3:75","nodeType":"YulIdentifier","src":"20869:3:75"},"nativeSrc":"20869:19:75","nodeType":"YulFunctionCall","src":"20869:19:75"},"variableNames":[{"name":"power","nativeSrc":"20860:5:75","nodeType":"YulIdentifier","src":"20860:5:75"}]},{"nativeSrc":"20901:11:75","nodeType":"YulVariableDeclaration","src":"20901:11:75","value":{"kind":"number","nativeSrc":"20911:1:75","nodeType":"YulLiteral","src":"20911:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"20905:2:75","nodeType":"YulTypedName","src":"20905:2:75","type":""}]},{"nativeSrc":"20925:7:75","nodeType":"YulAssignment","src":"20925:7:75","value":{"kind":"number","nativeSrc":"20931:1:75","nodeType":"YulLiteral","src":"20931:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"20925:2:75","nodeType":"YulIdentifier","src":"20925:2:75"}]},{"nativeSrc":"20945:5:75","nodeType":"YulLeave","src":"20945:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"20770:4:75","nodeType":"YulIdentifier","src":"20770:4:75"},{"kind":"number","nativeSrc":"20776:2:75","nodeType":"YulLiteral","src":"20776:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"20767:2:75","nodeType":"YulIdentifier","src":"20767:2:75"},"nativeSrc":"20767:12:75","nodeType":"YulFunctionCall","src":"20767:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"20784:8:75","nodeType":"YulIdentifier","src":"20784:8:75"},{"kind":"number","nativeSrc":"20794:2:75","nodeType":"YulLiteral","src":"20794:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"20781:2:75","nodeType":"YulIdentifier","src":"20781:2:75"},"nativeSrc":"20781:16:75","nodeType":"YulFunctionCall","src":"20781:16:75"}],"functionName":{"name":"and","nativeSrc":"20763:3:75","nodeType":"YulIdentifier","src":"20763:3:75"},"nativeSrc":"20763:35:75","nodeType":"YulFunctionCall","src":"20763:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"20807:4:75","nodeType":"YulIdentifier","src":"20807:4:75"},{"kind":"number","nativeSrc":"20813:3:75","nodeType":"YulLiteral","src":"20813:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"20804:2:75","nodeType":"YulIdentifier","src":"20804:2:75"},"nativeSrc":"20804:13:75","nodeType":"YulFunctionCall","src":"20804:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"20822:8:75","nodeType":"YulIdentifier","src":"20822:8:75"},{"kind":"number","nativeSrc":"20832:2:75","nodeType":"YulLiteral","src":"20832:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"20819:2:75","nodeType":"YulIdentifier","src":"20819:2:75"},"nativeSrc":"20819:16:75","nodeType":"YulFunctionCall","src":"20819:16:75"}],"functionName":{"name":"and","nativeSrc":"20800:3:75","nodeType":"YulIdentifier","src":"20800:3:75"},"nativeSrc":"20800:36:75","nodeType":"YulFunctionCall","src":"20800:36:75"}],"functionName":{"name":"or","nativeSrc":"20760:2:75","nodeType":"YulIdentifier","src":"20760:2:75"},"nativeSrc":"20760:77:75","nodeType":"YulFunctionCall","src":"20760:77:75"},"nativeSrc":"20757:203:75","nodeType":"YulIf","src":"20757:203:75"},{"nativeSrc":"20969:65:75","nodeType":"YulVariableDeclaration","src":"20969:65:75","value":{"arguments":[{"name":"base","nativeSrc":"21011:4:75","nodeType":"YulIdentifier","src":"21011:4:75"},{"name":"exponent","nativeSrc":"21017:8:75","nodeType":"YulIdentifier","src":"21017:8:75"},{"arguments":[{"kind":"number","nativeSrc":"21031:1:75","nodeType":"YulLiteral","src":"21031:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"21027:3:75","nodeType":"YulIdentifier","src":"21027:3:75"},"nativeSrc":"21027:6:75","nodeType":"YulFunctionCall","src":"21027:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"20992:18:75","nodeType":"YulIdentifier","src":"20992:18:75"},"nativeSrc":"20992:42:75","nodeType":"YulFunctionCall","src":"20992:42:75"},"variables":[{"name":"power_1","nativeSrc":"20973:7:75","nodeType":"YulTypedName","src":"20973:7:75","type":""},{"name":"base_1","nativeSrc":"20982:6:75","nodeType":"YulTypedName","src":"20982:6:75","type":""}]},{"body":{"nativeSrc":"21079:22:75","nodeType":"YulBlock","src":"21079:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21081:16:75","nodeType":"YulIdentifier","src":"21081:16:75"},"nativeSrc":"21081:18:75","nodeType":"YulFunctionCall","src":"21081:18:75"},"nativeSrc":"21081:18:75","nodeType":"YulExpressionStatement","src":"21081:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"21049:7:75","nodeType":"YulIdentifier","src":"21049:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21066:1:75","nodeType":"YulLiteral","src":"21066:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"21062:3:75","nodeType":"YulIdentifier","src":"21062:3:75"},"nativeSrc":"21062:6:75","nodeType":"YulFunctionCall","src":"21062:6:75"},{"name":"base_1","nativeSrc":"21070:6:75","nodeType":"YulIdentifier","src":"21070:6:75"}],"functionName":{"name":"div","nativeSrc":"21058:3:75","nodeType":"YulIdentifier","src":"21058:3:75"},"nativeSrc":"21058:19:75","nodeType":"YulFunctionCall","src":"21058:19:75"}],"functionName":{"name":"gt","nativeSrc":"21046:2:75","nodeType":"YulIdentifier","src":"21046:2:75"},"nativeSrc":"21046:32:75","nodeType":"YulFunctionCall","src":"21046:32:75"},"nativeSrc":"21043:58:75","nodeType":"YulIf","src":"21043:58:75"},{"nativeSrc":"21110:29:75","nodeType":"YulAssignment","src":"21110:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"21123:7:75","nodeType":"YulIdentifier","src":"21123:7:75"},{"name":"base_1","nativeSrc":"21132:6:75","nodeType":"YulIdentifier","src":"21132:6:75"}],"functionName":{"name":"mul","nativeSrc":"21119:3:75","nodeType":"YulIdentifier","src":"21119:3:75"},"nativeSrc":"21119:20:75","nodeType":"YulFunctionCall","src":"21119:20:75"},"variableNames":[{"name":"power","nativeSrc":"21110:5:75","nodeType":"YulIdentifier","src":"21110:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"20243:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"20273:4:75","nodeType":"YulTypedName","src":"20273:4:75","type":""},{"name":"exponent","nativeSrc":"20279:8:75","nodeType":"YulTypedName","src":"20279:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"20292:5:75","nodeType":"YulTypedName","src":"20292:5:75","type":""}],"src":"20243:902:75"},{"body":{"nativeSrc":"21218:72:75","nodeType":"YulBlock","src":"21218:72:75","statements":[{"nativeSrc":"21228:56:75","nodeType":"YulAssignment","src":"21228:56:75","value":{"arguments":[{"name":"base","nativeSrc":"21258:4:75","nodeType":"YulIdentifier","src":"21258:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"21268:8:75","nodeType":"YulIdentifier","src":"21268:8:75"},{"kind":"number","nativeSrc":"21278:4:75","nodeType":"YulLiteral","src":"21278:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"21264:3:75","nodeType":"YulIdentifier","src":"21264:3:75"},"nativeSrc":"21264:19:75","nodeType":"YulFunctionCall","src":"21264:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"21237:20:75","nodeType":"YulIdentifier","src":"21237:20:75"},"nativeSrc":"21237:47:75","nodeType":"YulFunctionCall","src":"21237:47:75"},"variableNames":[{"name":"power","nativeSrc":"21228:5:75","nodeType":"YulIdentifier","src":"21228:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"21150:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"21189:4:75","nodeType":"YulTypedName","src":"21189:4:75","type":""},{"name":"exponent","nativeSrc":"21195:8:75","nodeType":"YulTypedName","src":"21195:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"21208:5:75","nodeType":"YulTypedName","src":"21208:5:75","type":""}],"src":"21150:140:75"},{"body":{"nativeSrc":"21376:103:75","nodeType":"YulBlock","src":"21376:103:75","statements":[{"body":{"nativeSrc":"21422:16:75","nodeType":"YulBlock","src":"21422:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21431:1:75","nodeType":"YulLiteral","src":"21431:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"21434:1:75","nodeType":"YulLiteral","src":"21434:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21424:6:75","nodeType":"YulIdentifier","src":"21424:6:75"},"nativeSrc":"21424:12:75","nodeType":"YulFunctionCall","src":"21424:12:75"},"nativeSrc":"21424:12:75","nodeType":"YulExpressionStatement","src":"21424:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21397:7:75","nodeType":"YulIdentifier","src":"21397:7:75"},{"name":"headStart","nativeSrc":"21406:9:75","nodeType":"YulIdentifier","src":"21406:9:75"}],"functionName":{"name":"sub","nativeSrc":"21393:3:75","nodeType":"YulIdentifier","src":"21393:3:75"},"nativeSrc":"21393:23:75","nodeType":"YulFunctionCall","src":"21393:23:75"},{"kind":"number","nativeSrc":"21418:2:75","nodeType":"YulLiteral","src":"21418:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21389:3:75","nodeType":"YulIdentifier","src":"21389:3:75"},"nativeSrc":"21389:32:75","nodeType":"YulFunctionCall","src":"21389:32:75"},"nativeSrc":"21386:52:75","nodeType":"YulIf","src":"21386:52:75"},{"nativeSrc":"21447:26:75","nodeType":"YulAssignment","src":"21447:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21463:9:75","nodeType":"YulIdentifier","src":"21463:9:75"}],"functionName":{"name":"mload","nativeSrc":"21457:5:75","nodeType":"YulIdentifier","src":"21457:5:75"},"nativeSrc":"21457:16:75","nodeType":"YulFunctionCall","src":"21457:16:75"},"variableNames":[{"name":"value0","nativeSrc":"21447:6:75","nodeType":"YulIdentifier","src":"21447:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"21295:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21342:9:75","nodeType":"YulTypedName","src":"21342:9:75","type":""},{"name":"dataEnd","nativeSrc":"21353:7:75","nodeType":"YulTypedName","src":"21353:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21365:6:75","nodeType":"YulTypedName","src":"21365:6:75","type":""}],"src":"21295:184:75"},{"body":{"nativeSrc":"21613:145:75","nodeType":"YulBlock","src":"21613:145:75","statements":[{"nativeSrc":"21623:26:75","nodeType":"YulAssignment","src":"21623:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21635:9:75","nodeType":"YulIdentifier","src":"21635:9:75"},{"kind":"number","nativeSrc":"21646:2:75","nodeType":"YulLiteral","src":"21646:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21631:3:75","nodeType":"YulIdentifier","src":"21631:3:75"},"nativeSrc":"21631:18:75","nodeType":"YulFunctionCall","src":"21631:18:75"},"variableNames":[{"name":"tail","nativeSrc":"21623:4:75","nodeType":"YulIdentifier","src":"21623:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21665:9:75","nodeType":"YulIdentifier","src":"21665:9:75"},{"arguments":[{"name":"value0","nativeSrc":"21680:6:75","nodeType":"YulIdentifier","src":"21680:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21696:3:75","nodeType":"YulLiteral","src":"21696:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"21701:1:75","nodeType":"YulLiteral","src":"21701:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21692:3:75","nodeType":"YulIdentifier","src":"21692:3:75"},"nativeSrc":"21692:11:75","nodeType":"YulFunctionCall","src":"21692:11:75"},{"kind":"number","nativeSrc":"21705:1:75","nodeType":"YulLiteral","src":"21705:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21688:3:75","nodeType":"YulIdentifier","src":"21688:3:75"},"nativeSrc":"21688:19:75","nodeType":"YulFunctionCall","src":"21688:19:75"}],"functionName":{"name":"and","nativeSrc":"21676:3:75","nodeType":"YulIdentifier","src":"21676:3:75"},"nativeSrc":"21676:32:75","nodeType":"YulFunctionCall","src":"21676:32:75"}],"functionName":{"name":"mstore","nativeSrc":"21658:6:75","nodeType":"YulIdentifier","src":"21658:6:75"},"nativeSrc":"21658:51:75","nodeType":"YulFunctionCall","src":"21658:51:75"},"nativeSrc":"21658:51:75","nodeType":"YulExpressionStatement","src":"21658:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21729:9:75","nodeType":"YulIdentifier","src":"21729:9:75"},{"kind":"number","nativeSrc":"21740:2:75","nodeType":"YulLiteral","src":"21740:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21725:3:75","nodeType":"YulIdentifier","src":"21725:3:75"},"nativeSrc":"21725:18:75","nodeType":"YulFunctionCall","src":"21725:18:75"},{"name":"value1","nativeSrc":"21745:6:75","nodeType":"YulIdentifier","src":"21745:6:75"}],"functionName":{"name":"mstore","nativeSrc":"21718:6:75","nodeType":"YulIdentifier","src":"21718:6:75"},"nativeSrc":"21718:34:75","nodeType":"YulFunctionCall","src":"21718:34:75"},"nativeSrc":"21718:34:75","nodeType":"YulExpressionStatement","src":"21718:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"21484:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21574:9:75","nodeType":"YulTypedName","src":"21574:9:75","type":""},{"name":"value1","nativeSrc":"21585:6:75","nodeType":"YulTypedName","src":"21585:6:75","type":""},{"name":"value0","nativeSrc":"21593:6:75","nodeType":"YulTypedName","src":"21593:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21604:4:75","nodeType":"YulTypedName","src":"21604:4:75","type":""}],"src":"21484:274:75"},{"body":{"nativeSrc":"21844:170:75","nodeType":"YulBlock","src":"21844:170:75","statements":[{"body":{"nativeSrc":"21890:16:75","nodeType":"YulBlock","src":"21890:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21899:1:75","nodeType":"YulLiteral","src":"21899:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"21902:1:75","nodeType":"YulLiteral","src":"21902:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21892:6:75","nodeType":"YulIdentifier","src":"21892:6:75"},"nativeSrc":"21892:12:75","nodeType":"YulFunctionCall","src":"21892:12:75"},"nativeSrc":"21892:12:75","nodeType":"YulExpressionStatement","src":"21892:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"21865:7:75","nodeType":"YulIdentifier","src":"21865:7:75"},{"name":"headStart","nativeSrc":"21874:9:75","nodeType":"YulIdentifier","src":"21874:9:75"}],"functionName":{"name":"sub","nativeSrc":"21861:3:75","nodeType":"YulIdentifier","src":"21861:3:75"},"nativeSrc":"21861:23:75","nodeType":"YulFunctionCall","src":"21861:23:75"},{"kind":"number","nativeSrc":"21886:2:75","nodeType":"YulLiteral","src":"21886:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"21857:3:75","nodeType":"YulIdentifier","src":"21857:3:75"},"nativeSrc":"21857:32:75","nodeType":"YulFunctionCall","src":"21857:32:75"},"nativeSrc":"21854:52:75","nodeType":"YulIf","src":"21854:52:75"},{"nativeSrc":"21915:29:75","nodeType":"YulVariableDeclaration","src":"21915:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21934:9:75","nodeType":"YulIdentifier","src":"21934:9:75"}],"functionName":{"name":"mload","nativeSrc":"21928:5:75","nodeType":"YulIdentifier","src":"21928:5:75"},"nativeSrc":"21928:16:75","nodeType":"YulFunctionCall","src":"21928:16:75"},"variables":[{"name":"value","nativeSrc":"21919:5:75","nodeType":"YulTypedName","src":"21919:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"21978:5:75","nodeType":"YulIdentifier","src":"21978:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"21953:24:75","nodeType":"YulIdentifier","src":"21953:24:75"},"nativeSrc":"21953:31:75","nodeType":"YulFunctionCall","src":"21953:31:75"},"nativeSrc":"21953:31:75","nodeType":"YulExpressionStatement","src":"21953:31:75"},{"nativeSrc":"21993:15:75","nodeType":"YulAssignment","src":"21993:15:75","value":{"name":"value","nativeSrc":"22003:5:75","nodeType":"YulIdentifier","src":"22003:5:75"},"variableNames":[{"name":"value0","nativeSrc":"21993:6:75","nodeType":"YulIdentifier","src":"21993:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"21763:251:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21810:9:75","nodeType":"YulTypedName","src":"21810:9:75","type":""},{"name":"dataEnd","nativeSrc":"21821:7:75","nodeType":"YulTypedName","src":"21821:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"21833:6:75","nodeType":"YulTypedName","src":"21833:6:75","type":""}],"src":"21763:251:75"},{"body":{"nativeSrc":"22051:95:75","nodeType":"YulBlock","src":"22051:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22068:1:75","nodeType":"YulLiteral","src":"22068:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22075:3:75","nodeType":"YulLiteral","src":"22075:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22080:10:75","nodeType":"YulLiteral","src":"22080:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22071:3:75","nodeType":"YulIdentifier","src":"22071:3:75"},"nativeSrc":"22071:20:75","nodeType":"YulFunctionCall","src":"22071:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22061:6:75","nodeType":"YulIdentifier","src":"22061:6:75"},"nativeSrc":"22061:31:75","nodeType":"YulFunctionCall","src":"22061:31:75"},"nativeSrc":"22061:31:75","nodeType":"YulExpressionStatement","src":"22061:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22108:1:75","nodeType":"YulLiteral","src":"22108:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22111:4:75","nodeType":"YulLiteral","src":"22111:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22101:6:75","nodeType":"YulIdentifier","src":"22101:6:75"},"nativeSrc":"22101:15:75","nodeType":"YulFunctionCall","src":"22101:15:75"},"nativeSrc":"22101:15:75","nodeType":"YulExpressionStatement","src":"22101:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22132:1:75","nodeType":"YulLiteral","src":"22132:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22135:4:75","nodeType":"YulLiteral","src":"22135:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22125:6:75","nodeType":"YulIdentifier","src":"22125:6:75"},"nativeSrc":"22125:15:75","nodeType":"YulFunctionCall","src":"22125:15:75"},"nativeSrc":"22125:15:75","nodeType":"YulExpressionStatement","src":"22125:15:75"}]},"name":"panic_error_0x12","nativeSrc":"22019:127:75","nodeType":"YulFunctionDefinition","src":"22019:127:75"},{"body":{"nativeSrc":"22280:145:75","nodeType":"YulBlock","src":"22280:145:75","statements":[{"nativeSrc":"22290:26:75","nodeType":"YulAssignment","src":"22290:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22302:9:75","nodeType":"YulIdentifier","src":"22302:9:75"},{"kind":"number","nativeSrc":"22313:2:75","nodeType":"YulLiteral","src":"22313:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22298:3:75","nodeType":"YulIdentifier","src":"22298:3:75"},"nativeSrc":"22298:18:75","nodeType":"YulFunctionCall","src":"22298:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22290:4:75","nodeType":"YulIdentifier","src":"22290:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22332:9:75","nodeType":"YulIdentifier","src":"22332:9:75"},{"arguments":[{"name":"value0","nativeSrc":"22347:6:75","nodeType":"YulIdentifier","src":"22347:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22363:3:75","nodeType":"YulLiteral","src":"22363:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"22368:1:75","nodeType":"YulLiteral","src":"22368:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"22359:3:75","nodeType":"YulIdentifier","src":"22359:3:75"},"nativeSrc":"22359:11:75","nodeType":"YulFunctionCall","src":"22359:11:75"},{"kind":"number","nativeSrc":"22372:1:75","nodeType":"YulLiteral","src":"22372:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"22355:3:75","nodeType":"YulIdentifier","src":"22355:3:75"},"nativeSrc":"22355:19:75","nodeType":"YulFunctionCall","src":"22355:19:75"}],"functionName":{"name":"and","nativeSrc":"22343:3:75","nodeType":"YulIdentifier","src":"22343:3:75"},"nativeSrc":"22343:32:75","nodeType":"YulFunctionCall","src":"22343:32:75"}],"functionName":{"name":"mstore","nativeSrc":"22325:6:75","nodeType":"YulIdentifier","src":"22325:6:75"},"nativeSrc":"22325:51:75","nodeType":"YulFunctionCall","src":"22325:51:75"},"nativeSrc":"22325:51:75","nodeType":"YulExpressionStatement","src":"22325:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22396:9:75","nodeType":"YulIdentifier","src":"22396:9:75"},{"kind":"number","nativeSrc":"22407:2:75","nodeType":"YulLiteral","src":"22407:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22392:3:75","nodeType":"YulIdentifier","src":"22392:3:75"},"nativeSrc":"22392:18:75","nodeType":"YulFunctionCall","src":"22392:18:75"},{"name":"value1","nativeSrc":"22412:6:75","nodeType":"YulIdentifier","src":"22412:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22385:6:75","nodeType":"YulIdentifier","src":"22385:6:75"},"nativeSrc":"22385:34:75","nodeType":"YulFunctionCall","src":"22385:34:75"},"nativeSrc":"22385:34:75","nodeType":"YulExpressionStatement","src":"22385:34:75"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"22151:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22241:9:75","nodeType":"YulTypedName","src":"22241:9:75","type":""},{"name":"value1","nativeSrc":"22252:6:75","nodeType":"YulTypedName","src":"22252:6:75","type":""},{"name":"value0","nativeSrc":"22260:6:75","nodeType":"YulTypedName","src":"22260:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22271:4:75","nodeType":"YulTypedName","src":"22271:4:75","type":""}],"src":"22151:274:75"},{"body":{"nativeSrc":"22559:119:75","nodeType":"YulBlock","src":"22559:119:75","statements":[{"nativeSrc":"22569:26:75","nodeType":"YulAssignment","src":"22569:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22581:9:75","nodeType":"YulIdentifier","src":"22581:9:75"},{"kind":"number","nativeSrc":"22592:2:75","nodeType":"YulLiteral","src":"22592:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22577:3:75","nodeType":"YulIdentifier","src":"22577:3:75"},"nativeSrc":"22577:18:75","nodeType":"YulFunctionCall","src":"22577:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22569:4:75","nodeType":"YulIdentifier","src":"22569:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22611:9:75","nodeType":"YulIdentifier","src":"22611:9:75"},{"name":"value0","nativeSrc":"22622:6:75","nodeType":"YulIdentifier","src":"22622:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22604:6:75","nodeType":"YulIdentifier","src":"22604:6:75"},"nativeSrc":"22604:25:75","nodeType":"YulFunctionCall","src":"22604:25:75"},"nativeSrc":"22604:25:75","nodeType":"YulExpressionStatement","src":"22604:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22649:9:75","nodeType":"YulIdentifier","src":"22649:9:75"},{"kind":"number","nativeSrc":"22660:2:75","nodeType":"YulLiteral","src":"22660:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22645:3:75","nodeType":"YulIdentifier","src":"22645:3:75"},"nativeSrc":"22645:18:75","nodeType":"YulFunctionCall","src":"22645:18:75"},{"name":"value1","nativeSrc":"22665:6:75","nodeType":"YulIdentifier","src":"22665:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22638:6:75","nodeType":"YulIdentifier","src":"22638:6:75"},"nativeSrc":"22638:34:75","nodeType":"YulFunctionCall","src":"22638:34:75"},"nativeSrc":"22638:34:75","nodeType":"YulExpressionStatement","src":"22638:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"22430:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22520:9:75","nodeType":"YulTypedName","src":"22520:9:75","type":""},{"name":"value1","nativeSrc":"22531:6:75","nodeType":"YulTypedName","src":"22531:6:75","type":""},{"name":"value0","nativeSrc":"22539:6:75","nodeType":"YulTypedName","src":"22539:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22550:4:75","nodeType":"YulTypedName","src":"22550:4:75","type":""}],"src":"22430:248:75"},{"body":{"nativeSrc":"22719:218:75","nodeType":"YulBlock","src":"22719:218:75","statements":[{"nativeSrc":"22729:23:75","nodeType":"YulVariableDeclaration","src":"22729:23:75","value":{"arguments":[{"name":"y","nativeSrc":"22744:1:75","nodeType":"YulIdentifier","src":"22744:1:75"},{"kind":"number","nativeSrc":"22747:4:75","nodeType":"YulLiteral","src":"22747:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22740:3:75","nodeType":"YulIdentifier","src":"22740:3:75"},"nativeSrc":"22740:12:75","nodeType":"YulFunctionCall","src":"22740:12:75"},"variables":[{"name":"y_1","nativeSrc":"22733:3:75","nodeType":"YulTypedName","src":"22733:3:75","type":""}]},{"body":{"nativeSrc":"22784:111:75","nodeType":"YulBlock","src":"22784:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22805:1:75","nodeType":"YulLiteral","src":"22805:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22812:3:75","nodeType":"YulLiteral","src":"22812:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22817:10:75","nodeType":"YulLiteral","src":"22817:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22808:3:75","nodeType":"YulIdentifier","src":"22808:3:75"},"nativeSrc":"22808:20:75","nodeType":"YulFunctionCall","src":"22808:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22798:6:75","nodeType":"YulIdentifier","src":"22798:6:75"},"nativeSrc":"22798:31:75","nodeType":"YulFunctionCall","src":"22798:31:75"},"nativeSrc":"22798:31:75","nodeType":"YulExpressionStatement","src":"22798:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22849:1:75","nodeType":"YulLiteral","src":"22849:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22852:4:75","nodeType":"YulLiteral","src":"22852:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22842:6:75","nodeType":"YulIdentifier","src":"22842:6:75"},"nativeSrc":"22842:15:75","nodeType":"YulFunctionCall","src":"22842:15:75"},"nativeSrc":"22842:15:75","nodeType":"YulExpressionStatement","src":"22842:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22877:1:75","nodeType":"YulLiteral","src":"22877:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22880:4:75","nodeType":"YulLiteral","src":"22880:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22870:6:75","nodeType":"YulIdentifier","src":"22870:6:75"},"nativeSrc":"22870:15:75","nodeType":"YulFunctionCall","src":"22870:15:75"},"nativeSrc":"22870:15:75","nodeType":"YulExpressionStatement","src":"22870:15:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"22771:3:75","nodeType":"YulIdentifier","src":"22771:3:75"}],"functionName":{"name":"iszero","nativeSrc":"22764:6:75","nodeType":"YulIdentifier","src":"22764:6:75"},"nativeSrc":"22764:11:75","nodeType":"YulFunctionCall","src":"22764:11:75"},"nativeSrc":"22761:134:75","nodeType":"YulIf","src":"22761:134:75"},{"nativeSrc":"22904:27:75","nodeType":"YulAssignment","src":"22904:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"22917:1:75","nodeType":"YulIdentifier","src":"22917:1:75"},{"kind":"number","nativeSrc":"22920:4:75","nodeType":"YulLiteral","src":"22920:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22913:3:75","nodeType":"YulIdentifier","src":"22913:3:75"},"nativeSrc":"22913:12:75","nodeType":"YulFunctionCall","src":"22913:12:75"},{"name":"y_1","nativeSrc":"22927:3:75","nodeType":"YulIdentifier","src":"22927:3:75"}],"functionName":{"name":"mod","nativeSrc":"22909:3:75","nodeType":"YulIdentifier","src":"22909:3:75"},"nativeSrc":"22909:22:75","nodeType":"YulFunctionCall","src":"22909:22:75"},"variableNames":[{"name":"r","nativeSrc":"22904:1:75","nodeType":"YulIdentifier","src":"22904:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"22683:254:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"22704:1:75","nodeType":"YulTypedName","src":"22704:1:75","type":""},{"name":"y","nativeSrc":"22707:1:75","nodeType":"YulTypedName","src":"22707:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"22713:1:75","nodeType":"YulTypedName","src":"22713:1:75","type":""}],"src":"22683:254:75"},{"body":{"nativeSrc":"23079:164:75","nodeType":"YulBlock","src":"23079:164:75","statements":[{"nativeSrc":"23089:27:75","nodeType":"YulVariableDeclaration","src":"23089:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"23109:6:75","nodeType":"YulIdentifier","src":"23109:6:75"}],"functionName":{"name":"mload","nativeSrc":"23103:5:75","nodeType":"YulIdentifier","src":"23103:5:75"},"nativeSrc":"23103:13:75","nodeType":"YulFunctionCall","src":"23103:13:75"},"variables":[{"name":"length","nativeSrc":"23093:6:75","nodeType":"YulTypedName","src":"23093:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"23131:3:75","nodeType":"YulIdentifier","src":"23131:3:75"},{"arguments":[{"name":"value0","nativeSrc":"23140:6:75","nodeType":"YulIdentifier","src":"23140:6:75"},{"kind":"number","nativeSrc":"23148:4:75","nodeType":"YulLiteral","src":"23148:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"23136:3:75","nodeType":"YulIdentifier","src":"23136:3:75"},"nativeSrc":"23136:17:75","nodeType":"YulFunctionCall","src":"23136:17:75"},{"name":"length","nativeSrc":"23155:6:75","nodeType":"YulIdentifier","src":"23155:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"23125:5:75","nodeType":"YulIdentifier","src":"23125:5:75"},"nativeSrc":"23125:37:75","nodeType":"YulFunctionCall","src":"23125:37:75"},"nativeSrc":"23125:37:75","nodeType":"YulExpressionStatement","src":"23125:37:75"},{"nativeSrc":"23171:26:75","nodeType":"YulVariableDeclaration","src":"23171:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"23185:3:75","nodeType":"YulIdentifier","src":"23185:3:75"},{"name":"length","nativeSrc":"23190:6:75","nodeType":"YulIdentifier","src":"23190:6:75"}],"functionName":{"name":"add","nativeSrc":"23181:3:75","nodeType":"YulIdentifier","src":"23181:3:75"},"nativeSrc":"23181:16:75","nodeType":"YulFunctionCall","src":"23181:16:75"},"variables":[{"name":"_1","nativeSrc":"23175:2:75","nodeType":"YulTypedName","src":"23175:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"23213:2:75","nodeType":"YulIdentifier","src":"23213:2:75"},{"kind":"number","nativeSrc":"23217:1:75","nodeType":"YulLiteral","src":"23217:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"23206:6:75","nodeType":"YulIdentifier","src":"23206:6:75"},"nativeSrc":"23206:13:75","nodeType":"YulFunctionCall","src":"23206:13:75"},"nativeSrc":"23206:13:75","nodeType":"YulExpressionStatement","src":"23206:13:75"},{"nativeSrc":"23228:9:75","nodeType":"YulAssignment","src":"23228:9:75","value":{"name":"_1","nativeSrc":"23235:2:75","nodeType":"YulIdentifier","src":"23235:2:75"},"variableNames":[{"name":"end","nativeSrc":"23228:3:75","nodeType":"YulIdentifier","src":"23228:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"22942:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"23055:3:75","nodeType":"YulTypedName","src":"23055:3:75","type":""},{"name":"value0","nativeSrc":"23060:6:75","nodeType":"YulTypedName","src":"23060:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"23071:3:75","nodeType":"YulTypedName","src":"23071:3:75","type":""}],"src":"22942:301:75"},{"body":{"nativeSrc":"23405:214:75","nodeType":"YulBlock","src":"23405:214:75","statements":[{"nativeSrc":"23415:26:75","nodeType":"YulAssignment","src":"23415:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23427:9:75","nodeType":"YulIdentifier","src":"23427:9:75"},{"kind":"number","nativeSrc":"23438:2:75","nodeType":"YulLiteral","src":"23438:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"23423:3:75","nodeType":"YulIdentifier","src":"23423:3:75"},"nativeSrc":"23423:18:75","nodeType":"YulFunctionCall","src":"23423:18:75"},"variableNames":[{"name":"tail","nativeSrc":"23415:4:75","nodeType":"YulIdentifier","src":"23415:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23457:9:75","nodeType":"YulIdentifier","src":"23457:9:75"},{"arguments":[{"name":"value0","nativeSrc":"23472:6:75","nodeType":"YulIdentifier","src":"23472:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23488:3:75","nodeType":"YulLiteral","src":"23488:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23493:1:75","nodeType":"YulLiteral","src":"23493:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23484:3:75","nodeType":"YulIdentifier","src":"23484:3:75"},"nativeSrc":"23484:11:75","nodeType":"YulFunctionCall","src":"23484:11:75"},{"kind":"number","nativeSrc":"23497:1:75","nodeType":"YulLiteral","src":"23497:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23480:3:75","nodeType":"YulIdentifier","src":"23480:3:75"},"nativeSrc":"23480:19:75","nodeType":"YulFunctionCall","src":"23480:19:75"}],"functionName":{"name":"and","nativeSrc":"23468:3:75","nodeType":"YulIdentifier","src":"23468:3:75"},"nativeSrc":"23468:32:75","nodeType":"YulFunctionCall","src":"23468:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23450:6:75","nodeType":"YulIdentifier","src":"23450:6:75"},"nativeSrc":"23450:51:75","nodeType":"YulFunctionCall","src":"23450:51:75"},"nativeSrc":"23450:51:75","nodeType":"YulExpressionStatement","src":"23450:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23521:9:75","nodeType":"YulIdentifier","src":"23521:9:75"},{"kind":"number","nativeSrc":"23532:2:75","nodeType":"YulLiteral","src":"23532:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23517:3:75","nodeType":"YulIdentifier","src":"23517:3:75"},"nativeSrc":"23517:18:75","nodeType":"YulFunctionCall","src":"23517:18:75"},{"arguments":[{"name":"value1","nativeSrc":"23541:6:75","nodeType":"YulIdentifier","src":"23541:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23557:3:75","nodeType":"YulLiteral","src":"23557:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23562:1:75","nodeType":"YulLiteral","src":"23562:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23553:3:75","nodeType":"YulIdentifier","src":"23553:3:75"},"nativeSrc":"23553:11:75","nodeType":"YulFunctionCall","src":"23553:11:75"},{"kind":"number","nativeSrc":"23566:1:75","nodeType":"YulLiteral","src":"23566:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23549:3:75","nodeType":"YulIdentifier","src":"23549:3:75"},"nativeSrc":"23549:19:75","nodeType":"YulFunctionCall","src":"23549:19:75"}],"functionName":{"name":"and","nativeSrc":"23537:3:75","nodeType":"YulIdentifier","src":"23537:3:75"},"nativeSrc":"23537:32:75","nodeType":"YulFunctionCall","src":"23537:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23510:6:75","nodeType":"YulIdentifier","src":"23510:6:75"},"nativeSrc":"23510:60:75","nodeType":"YulFunctionCall","src":"23510:60:75"},"nativeSrc":"23510:60:75","nodeType":"YulExpressionStatement","src":"23510:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23590:9:75","nodeType":"YulIdentifier","src":"23590:9:75"},{"kind":"number","nativeSrc":"23601:2:75","nodeType":"YulLiteral","src":"23601:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23586:3:75","nodeType":"YulIdentifier","src":"23586:3:75"},"nativeSrc":"23586:18:75","nodeType":"YulFunctionCall","src":"23586:18:75"},{"name":"value2","nativeSrc":"23606:6:75","nodeType":"YulIdentifier","src":"23606:6:75"}],"functionName":{"name":"mstore","nativeSrc":"23579:6:75","nodeType":"YulIdentifier","src":"23579:6:75"},"nativeSrc":"23579:34:75","nodeType":"YulFunctionCall","src":"23579:34:75"},"nativeSrc":"23579:34:75","nodeType":"YulExpressionStatement","src":"23579:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"23248:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23358:9:75","nodeType":"YulTypedName","src":"23358:9:75","type":""},{"name":"value2","nativeSrc":"23369:6:75","nodeType":"YulTypedName","src":"23369:6:75","type":""},{"name":"value1","nativeSrc":"23377:6:75","nodeType":"YulTypedName","src":"23377:6:75","type":""},{"name":"value0","nativeSrc":"23385:6:75","nodeType":"YulTypedName","src":"23385:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23396:4:75","nodeType":"YulTypedName","src":"23396:4:75","type":""}],"src":"23248:371:75"},{"body":{"nativeSrc":"23720:1201:75","nodeType":"YulBlock","src":"23720:1201:75","statements":[{"nativeSrc":"23730:24:75","nodeType":"YulVariableDeclaration","src":"23730:24:75","value":{"arguments":[{"name":"src","nativeSrc":"23750:3:75","nodeType":"YulIdentifier","src":"23750:3:75"}],"functionName":{"name":"mload","nativeSrc":"23744:5:75","nodeType":"YulIdentifier","src":"23744:5:75"},"nativeSrc":"23744:10:75","nodeType":"YulFunctionCall","src":"23744:10:75"},"variables":[{"name":"newLen","nativeSrc":"23734:6:75","nodeType":"YulTypedName","src":"23734:6:75","type":""}]},{"body":{"nativeSrc":"23797:22:75","nodeType":"YulBlock","src":"23797:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"23799:16:75","nodeType":"YulIdentifier","src":"23799:16:75"},"nativeSrc":"23799:18:75","nodeType":"YulFunctionCall","src":"23799:18:75"},"nativeSrc":"23799:18:75","nodeType":"YulExpressionStatement","src":"23799:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"23769:6:75","nodeType":"YulIdentifier","src":"23769:6:75"},{"kind":"number","nativeSrc":"23777:18:75","nodeType":"YulLiteral","src":"23777:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"23766:2:75","nodeType":"YulIdentifier","src":"23766:2:75"},"nativeSrc":"23766:30:75","nodeType":"YulFunctionCall","src":"23766:30:75"},"nativeSrc":"23763:56:75","nodeType":"YulIf","src":"23763:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"23871:4:75","nodeType":"YulIdentifier","src":"23871:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"23909:4:75","nodeType":"YulIdentifier","src":"23909:4:75"}],"functionName":{"name":"sload","nativeSrc":"23903:5:75","nodeType":"YulIdentifier","src":"23903:5:75"},"nativeSrc":"23903:11:75","nodeType":"YulFunctionCall","src":"23903:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"23877:25:75","nodeType":"YulIdentifier","src":"23877:25:75"},"nativeSrc":"23877:38:75","nodeType":"YulFunctionCall","src":"23877:38:75"},{"name":"newLen","nativeSrc":"23917:6:75","nodeType":"YulIdentifier","src":"23917:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"23828:42:75","nodeType":"YulIdentifier","src":"23828:42:75"},"nativeSrc":"23828:96:75","nodeType":"YulFunctionCall","src":"23828:96:75"},"nativeSrc":"23828:96:75","nodeType":"YulExpressionStatement","src":"23828:96:75"},{"nativeSrc":"23933:18:75","nodeType":"YulVariableDeclaration","src":"23933:18:75","value":{"kind":"number","nativeSrc":"23950:1:75","nodeType":"YulLiteral","src":"23950:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"23937:9:75","nodeType":"YulTypedName","src":"23937:9:75","type":""}]},{"nativeSrc":"23960:17:75","nodeType":"YulAssignment","src":"23960:17:75","value":{"kind":"number","nativeSrc":"23973:4:75","nodeType":"YulLiteral","src":"23973:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"23960:9:75","nodeType":"YulIdentifier","src":"23960:9:75"}]},{"cases":[{"body":{"nativeSrc":"24023:641:75","nodeType":"YulBlock","src":"24023:641:75","statements":[{"nativeSrc":"24037:35:75","nodeType":"YulVariableDeclaration","src":"24037:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"24056:6:75","nodeType":"YulIdentifier","src":"24056:6:75"},{"arguments":[{"kind":"number","nativeSrc":"24068:2:75","nodeType":"YulLiteral","src":"24068:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"24064:3:75","nodeType":"YulIdentifier","src":"24064:3:75"},"nativeSrc":"24064:7:75","nodeType":"YulFunctionCall","src":"24064:7:75"}],"functionName":{"name":"and","nativeSrc":"24052:3:75","nodeType":"YulIdentifier","src":"24052:3:75"},"nativeSrc":"24052:20:75","nodeType":"YulFunctionCall","src":"24052:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"24041:7:75","nodeType":"YulTypedName","src":"24041:7:75","type":""}]},{"nativeSrc":"24085:48:75","nodeType":"YulVariableDeclaration","src":"24085:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"24128:4:75","nodeType":"YulIdentifier","src":"24128:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"24099:28:75","nodeType":"YulIdentifier","src":"24099:28:75"},"nativeSrc":"24099:34:75","nodeType":"YulFunctionCall","src":"24099:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"24089:6:75","nodeType":"YulTypedName","src":"24089:6:75","type":""}]},{"nativeSrc":"24146:10:75","nodeType":"YulVariableDeclaration","src":"24146:10:75","value":{"kind":"number","nativeSrc":"24155:1:75","nodeType":"YulLiteral","src":"24155:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"24150:1:75","nodeType":"YulTypedName","src":"24150:1:75","type":""}]},{"body":{"nativeSrc":"24226:165:75","nodeType":"YulBlock","src":"24226:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24251:6:75","nodeType":"YulIdentifier","src":"24251:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24269:3:75","nodeType":"YulIdentifier","src":"24269:3:75"},{"name":"srcOffset","nativeSrc":"24274:9:75","nodeType":"YulIdentifier","src":"24274:9:75"}],"functionName":{"name":"add","nativeSrc":"24265:3:75","nodeType":"YulIdentifier","src":"24265:3:75"},"nativeSrc":"24265:19:75","nodeType":"YulFunctionCall","src":"24265:19:75"}],"functionName":{"name":"mload","nativeSrc":"24259:5:75","nodeType":"YulIdentifier","src":"24259:5:75"},"nativeSrc":"24259:26:75","nodeType":"YulFunctionCall","src":"24259:26:75"}],"functionName":{"name":"sstore","nativeSrc":"24244:6:75","nodeType":"YulIdentifier","src":"24244:6:75"},"nativeSrc":"24244:42:75","nodeType":"YulFunctionCall","src":"24244:42:75"},"nativeSrc":"24244:42:75","nodeType":"YulExpressionStatement","src":"24244:42:75"},{"nativeSrc":"24303:24:75","nodeType":"YulAssignment","src":"24303:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"24317:6:75","nodeType":"YulIdentifier","src":"24317:6:75"},{"kind":"number","nativeSrc":"24325:1:75","nodeType":"YulLiteral","src":"24325:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24313:3:75","nodeType":"YulIdentifier","src":"24313:3:75"},"nativeSrc":"24313:14:75","nodeType":"YulFunctionCall","src":"24313:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"24303:6:75","nodeType":"YulIdentifier","src":"24303:6:75"}]},{"nativeSrc":"24344:33:75","nodeType":"YulAssignment","src":"24344:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"24361:9:75","nodeType":"YulIdentifier","src":"24361:9:75"},{"kind":"number","nativeSrc":"24372:4:75","nodeType":"YulLiteral","src":"24372:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24357:3:75","nodeType":"YulIdentifier","src":"24357:3:75"},"nativeSrc":"24357:20:75","nodeType":"YulFunctionCall","src":"24357:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"24344:9:75","nodeType":"YulIdentifier","src":"24344:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"24180:1:75","nodeType":"YulIdentifier","src":"24180:1:75"},{"name":"loopEnd","nativeSrc":"24183:7:75","nodeType":"YulIdentifier","src":"24183:7:75"}],"functionName":{"name":"lt","nativeSrc":"24177:2:75","nodeType":"YulIdentifier","src":"24177:2:75"},"nativeSrc":"24177:14:75","nodeType":"YulFunctionCall","src":"24177:14:75"},"nativeSrc":"24169:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"24192:21:75","nodeType":"YulBlock","src":"24192:21:75","statements":[{"nativeSrc":"24194:17:75","nodeType":"YulAssignment","src":"24194:17:75","value":{"arguments":[{"name":"i","nativeSrc":"24203:1:75","nodeType":"YulIdentifier","src":"24203:1:75"},{"kind":"number","nativeSrc":"24206:4:75","nodeType":"YulLiteral","src":"24206:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24199:3:75","nodeType":"YulIdentifier","src":"24199:3:75"},"nativeSrc":"24199:12:75","nodeType":"YulFunctionCall","src":"24199:12:75"},"variableNames":[{"name":"i","nativeSrc":"24194:1:75","nodeType":"YulIdentifier","src":"24194:1:75"}]}]},"pre":{"nativeSrc":"24173:3:75","nodeType":"YulBlock","src":"24173:3:75","statements":[]},"src":"24169:222:75"},{"body":{"nativeSrc":"24439:166:75","nodeType":"YulBlock","src":"24439:166:75","statements":[{"nativeSrc":"24457:43:75","nodeType":"YulVariableDeclaration","src":"24457:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24484:3:75","nodeType":"YulIdentifier","src":"24484:3:75"},{"name":"srcOffset","nativeSrc":"24489:9:75","nodeType":"YulIdentifier","src":"24489:9:75"}],"functionName":{"name":"add","nativeSrc":"24480:3:75","nodeType":"YulIdentifier","src":"24480:3:75"},"nativeSrc":"24480:19:75","nodeType":"YulFunctionCall","src":"24480:19:75"}],"functionName":{"name":"mload","nativeSrc":"24474:5:75","nodeType":"YulIdentifier","src":"24474:5:75"},"nativeSrc":"24474:26:75","nodeType":"YulFunctionCall","src":"24474:26:75"},"variables":[{"name":"lastValue","nativeSrc":"24461:9:75","nodeType":"YulTypedName","src":"24461:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24524:6:75","nodeType":"YulIdentifier","src":"24524:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"24536:9:75","nodeType":"YulIdentifier","src":"24536:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24563:1:75","nodeType":"YulLiteral","src":"24563:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"24566:6:75","nodeType":"YulIdentifier","src":"24566:6:75"}],"functionName":{"name":"shl","nativeSrc":"24559:3:75","nodeType":"YulIdentifier","src":"24559:3:75"},"nativeSrc":"24559:14:75","nodeType":"YulFunctionCall","src":"24559:14:75"},{"kind":"number","nativeSrc":"24575:3:75","nodeType":"YulLiteral","src":"24575:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"24555:3:75","nodeType":"YulIdentifier","src":"24555:3:75"},"nativeSrc":"24555:24:75","nodeType":"YulFunctionCall","src":"24555:24:75"},{"arguments":[{"kind":"number","nativeSrc":"24585:1:75","nodeType":"YulLiteral","src":"24585:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"24581:3:75","nodeType":"YulIdentifier","src":"24581:3:75"},"nativeSrc":"24581:6:75","nodeType":"YulFunctionCall","src":"24581:6:75"}],"functionName":{"name":"shr","nativeSrc":"24551:3:75","nodeType":"YulIdentifier","src":"24551:3:75"},"nativeSrc":"24551:37:75","nodeType":"YulFunctionCall","src":"24551:37:75"}],"functionName":{"name":"not","nativeSrc":"24547:3:75","nodeType":"YulIdentifier","src":"24547:3:75"},"nativeSrc":"24547:42:75","nodeType":"YulFunctionCall","src":"24547:42:75"}],"functionName":{"name":"and","nativeSrc":"24532:3:75","nodeType":"YulIdentifier","src":"24532:3:75"},"nativeSrc":"24532:58:75","nodeType":"YulFunctionCall","src":"24532:58:75"}],"functionName":{"name":"sstore","nativeSrc":"24517:6:75","nodeType":"YulIdentifier","src":"24517:6:75"},"nativeSrc":"24517:74:75","nodeType":"YulFunctionCall","src":"24517:74:75"},"nativeSrc":"24517:74:75","nodeType":"YulExpressionStatement","src":"24517:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"24410:7:75","nodeType":"YulIdentifier","src":"24410:7:75"},{"name":"newLen","nativeSrc":"24419:6:75","nodeType":"YulIdentifier","src":"24419:6:75"}],"functionName":{"name":"lt","nativeSrc":"24407:2:75","nodeType":"YulIdentifier","src":"24407:2:75"},"nativeSrc":"24407:19:75","nodeType":"YulFunctionCall","src":"24407:19:75"},"nativeSrc":"24404:201:75","nodeType":"YulIf","src":"24404:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24625:4:75","nodeType":"YulIdentifier","src":"24625:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24639:1:75","nodeType":"YulLiteral","src":"24639:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"24642:6:75","nodeType":"YulIdentifier","src":"24642:6:75"}],"functionName":{"name":"shl","nativeSrc":"24635:3:75","nodeType":"YulIdentifier","src":"24635:3:75"},"nativeSrc":"24635:14:75","nodeType":"YulFunctionCall","src":"24635:14:75"},{"kind":"number","nativeSrc":"24651:1:75","nodeType":"YulLiteral","src":"24651:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24631:3:75","nodeType":"YulIdentifier","src":"24631:3:75"},"nativeSrc":"24631:22:75","nodeType":"YulFunctionCall","src":"24631:22:75"}],"functionName":{"name":"sstore","nativeSrc":"24618:6:75","nodeType":"YulIdentifier","src":"24618:6:75"},"nativeSrc":"24618:36:75","nodeType":"YulFunctionCall","src":"24618:36:75"},"nativeSrc":"24618:36:75","nodeType":"YulExpressionStatement","src":"24618:36:75"}]},"nativeSrc":"24016:648:75","nodeType":"YulCase","src":"24016:648:75","value":{"kind":"number","nativeSrc":"24021:1:75","nodeType":"YulLiteral","src":"24021:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"24681:234:75","nodeType":"YulBlock","src":"24681:234:75","statements":[{"nativeSrc":"24695:14:75","nodeType":"YulVariableDeclaration","src":"24695:14:75","value":{"kind":"number","nativeSrc":"24708:1:75","nodeType":"YulLiteral","src":"24708:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"24699:5:75","nodeType":"YulTypedName","src":"24699:5:75","type":""}]},{"body":{"nativeSrc":"24744:67:75","nodeType":"YulBlock","src":"24744:67:75","statements":[{"nativeSrc":"24762:35:75","nodeType":"YulAssignment","src":"24762:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24781:3:75","nodeType":"YulIdentifier","src":"24781:3:75"},{"name":"srcOffset","nativeSrc":"24786:9:75","nodeType":"YulIdentifier","src":"24786:9:75"}],"functionName":{"name":"add","nativeSrc":"24777:3:75","nodeType":"YulIdentifier","src":"24777:3:75"},"nativeSrc":"24777:19:75","nodeType":"YulFunctionCall","src":"24777:19:75"}],"functionName":{"name":"mload","nativeSrc":"24771:5:75","nodeType":"YulIdentifier","src":"24771:5:75"},"nativeSrc":"24771:26:75","nodeType":"YulFunctionCall","src":"24771:26:75"},"variableNames":[{"name":"value","nativeSrc":"24762:5:75","nodeType":"YulIdentifier","src":"24762:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"24725:6:75","nodeType":"YulIdentifier","src":"24725:6:75"},"nativeSrc":"24722:89:75","nodeType":"YulIf","src":"24722:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24831:4:75","nodeType":"YulIdentifier","src":"24831:4:75"},{"arguments":[{"name":"value","nativeSrc":"24890:5:75","nodeType":"YulIdentifier","src":"24890:5:75"},{"name":"newLen","nativeSrc":"24897:6:75","nodeType":"YulIdentifier","src":"24897:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"24837:52:75","nodeType":"YulIdentifier","src":"24837:52:75"},"nativeSrc":"24837:67:75","nodeType":"YulFunctionCall","src":"24837:67:75"}],"functionName":{"name":"sstore","nativeSrc":"24824:6:75","nodeType":"YulIdentifier","src":"24824:6:75"},"nativeSrc":"24824:81:75","nodeType":"YulFunctionCall","src":"24824:81:75"},"nativeSrc":"24824:81:75","nodeType":"YulExpressionStatement","src":"24824:81:75"}]},"nativeSrc":"24673:242:75","nodeType":"YulCase","src":"24673:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"23996:6:75","nodeType":"YulIdentifier","src":"23996:6:75"},{"kind":"number","nativeSrc":"24004:2:75","nodeType":"YulLiteral","src":"24004:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"23993:2:75","nodeType":"YulIdentifier","src":"23993:2:75"},"nativeSrc":"23993:14:75","nodeType":"YulFunctionCall","src":"23993:14:75"},"nativeSrc":"23986:929:75","nodeType":"YulSwitch","src":"23986:929:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"23624:1297:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"23705:4:75","nodeType":"YulTypedName","src":"23705:4:75","type":""},{"name":"src","nativeSrc":"23711:3:75","nodeType":"YulTypedName","src":"23711:3:75","type":""}],"src":"23624:1297:75"}]},"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_decode_tuple_t_bytes4(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, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := 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_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 panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_enum_SwapProtocol(value, pos)\n    {\n        if iszero(lt(value, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, value)\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        abi_encode_enum_SwapProtocol(mload(value0), add(headStart, 32))\n        mstore(add(headStart, 64), mload(add(value0, 32)))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 0x60), 0x60)\n        tail := abi_encode_string(memberValue0, add(headStart, 128))\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_bytes32t_bytes32(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_decode_tuple_t_bytes32(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_bytes32t_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_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 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_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_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_struct_SwapConfig_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_SwapConfig_$624_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 abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_struct$_SwapConfig_$624_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { 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 offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_struct_SwapConfig_calldata(add(headStart, offset_2), dataEnd)\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_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 abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bool_fromMemory(headStart)\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        value2 := abi_decode_bool_fromMemory(add(headStart, 64))\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 abi_encode_struct_SwapConfig(value, pos) -> end\n    {\n        abi_encode_enum_SwapProtocol(mload(value), pos)\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_string(memberValue0, add(pos, 0x60))\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_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 validator_revert_enum_SwapProtocol(value)\n    {\n        if iszero(lt(value, 3)) { revert(0, 0) }\n    }\n    function convert_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_memory_ptr(value) -> converted\n    {\n        if slt(sub(calldatasize(), value), 0x60) { revert(0, 0) }\n        let memPtr := 0\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        let value_1 := calldataload(value)\n        validator_revert_enum_SwapProtocol(value_1)\n        mstore(memPtr, value_1)\n        let value_2 := 0\n        value_2 := calldataload(add(value, 32))\n        mstore(add(memPtr, 32), value_2)\n        let offset := calldataload(add(value, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        mstore(add(memPtr, 64), abi_decode_bytes(add(value, offset), calldatasize()))\n        converted := memPtr\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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 array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function abi_encode_struct_SwapConfig_calldata(value, pos) -> end\n    {\n        let value_1 := calldataload(value)\n        validator_revert_enum_SwapProtocol(value_1)\n        abi_encode_enum_SwapProtocol(value_1, pos)\n        let value_2 := 0\n        value_2 := calldataload(add(value, 0x20))\n        mstore(add(pos, 0x20), value_2)\n        let rel_offset_of_tail := calldataload(add(value, 0x40))\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n        let value_3 := add(rel_offset_of_tail, value)\n        let length := calldataload(value_3)\n        let value_4 := add(value_3, 0x20)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        if sgt(value_4, sub(calldatasize(), length)) { revert(0, 0) }\n        mstore(add(pos, 0x40), 0x60)\n        mstore(add(pos, 0x60), length)\n        calldatacopy(add(pos, 128), value_4, length)\n        mstore(add(add(pos, length), 128), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 128)\n    }\n    function abi_encode_tuple_t_struct$_SwapConfig_$624_storage_t_struct$_SwapConfig_$624_calldata_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        abi_encode_enum_SwapProtocol(and(sload(value0), 0xff), add(headStart, 64))\n        mstore(add(headStart, 0x60), sload(add(value0, 0x01)))\n        let memberValue0 := add(value0, 0x02)\n        mstore(add(headStart, 128), 0x60)\n        let ret := 0\n        let slotValue := sload(memberValue0)\n        let length := extract_byte_array_length(slotValue)\n        mstore(add(headStart, 160), length)\n        switch and(slotValue, 0x01)\n        case 0 {\n            mstore(add(headStart, 192), and(slotValue, not(255)))\n            ret := add(add(headStart, shl(5, iszero(iszero(length)))), 192)\n        }\n        case 1 {\n            mstore(0, memberValue0)\n            let dataPos := keccak256(0, 0x20)\n            let i := 0\n            for { } lt(i, length) { i := add(i, 0x20) }\n            {\n                mstore(add(add(headStart, i), 192), sload(dataPos))\n                dataPos := add(dataPos, 0x01)\n            }\n            ret := add(add(headStart, i), 192)\n        }\n        mstore(add(headStart, 0x20), sub(ret, headStart))\n        tail := abi_encode_struct_SwapConfig_calldata(value1, ret)\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_bytes_calldata_to_bytes(slot, src, len)\n    {\n        if gt(len, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), len)\n        let srcOffset := 0\n        switch gt(len, 31)\n        case 1 {\n            let loopEnd := and(len, 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, calldataload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, len)\n            {\n                sstore(dstPtr, and(calldataload(add(src, srcOffset)), not(shr(and(shl(3, len), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, len), 1))\n        }\n        default {\n            let value := 0\n            if len\n            {\n                value := calldataload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, len))\n        }\n    }\n    function update_storage_value_offset_0_t_struct$_SwapConfig_$624_calldata_ptr_to_t_struct$_SwapConfig_$624_storage(slot, value)\n    {\n        let value_1 := calldataload(value)\n        validator_revert_enum_SwapProtocol(value_1)\n        if iszero(lt(value_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        let value_2 := and(sload(slot), not(255))\n        sstore(slot, or(value_2, and(value_1, 255)))\n        sstore(add(slot, 1), calldataload(add(value, 32)))\n        let rel_offset_of_tail := calldataload(add(value, 64))\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), value), not(30)))) { revert(0, 0) }\n        let addr := add(value, rel_offset_of_tail)\n        let length := calldataload(addr)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        let addr_1 := add(addr, 32)\n        if sgt(addr_1, sub(calldatasize(), length)) { revert(0, 0) }\n        copy_byte_array_to_storage_from_bytes_calldata_to_bytes(add(slot, 2), addr_1, length)\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 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_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__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_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_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__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 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_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_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 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_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":6297},{"length":32,"start":6338},{"length":32,"start":6693}],"14356":[{"length":32,"start":2026},{"length":32,"start":2935},{"length":32,"start":3205},{"length":32,"start":3402},{"length":32,"start":5091},{"length":32,"start":5269},{"length":32,"start":6786},{"length":32,"start":6912},{"length":32,"start":7082},{"length":32,"start":7255}],"14360":[{"length":32,"start":3247},{"length":32,"start":3455}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":3865},{"length":20,"start":4574},{"length":20,"start":8656}]}},"object":"60806040526004361061025f575f3560e01c80636e553f651161013f578063ba087652116100b3578063d547741f11610078578063d547741f14610710578063d905777e1461072f578063dd62ed3e1461074e578063e1d394501461076d578063ef8b30f7146106d2578063fbb12d07146107a0575f5ffd5b8063ba08765214610694578063c2f09e2b146106b3578063c63d75b6146104e0578063c6e6f592146106d2578063ce96cb77146106f1575f5ffd5b8063a217fddf11610104578063a217fddf146105d5578063a9059cbb146105e8578063ad3cb1cc14610607578063b3d7f6b914610637578063b460af9414610656578063b740a83f14610675575f5ffd5b80636e553f651461054557806370a082311461056457806391d148541461058357806394bf804d146105a257806395d89b41146105c1575f5ffd5b8063248a9ca3116101d657806338d52e0f1161019b57806338d52e0f146104b4578063402d267d146104e05780634cdad506146102da5780634f1ef286146104ff57806352d1902d1461051257806357126d0d14610526575f5ffd5b8063248a9ca3146103fe57806324ea54f41461041d5780632f2ff15d14610450578063313ce5671461046f57806336568abe14610495575f5ffd5b80630a28a477116102275780630a28a477146103185780630b2ce411146103375780631389c0291461035857806318160ddd1461038b5780631e4e0091146103be57806323b872dd146103df575f5ffd5b806301e1d1141461026357806301ffc9a71461028a57806306fdde03146102b957806307a2d13a146102da578063095ea7b3146102f9575b5f5ffd5b34801561026e575f5ffd5b506102776107d3565b6040519081526020015b60405180910390f35b348015610295575f5ffd5b506102a96102a43660046127d3565b610860565b6040519015158152602001610281565b3480156102c4575f5ffd5b506102cd610896565b6040516102819190612828565b3480156102e5575f5ffd5b506102776102f436600461283a565b610956565b348015610304575f5ffd5b506102a9610313366004612865565b610961565b348015610323575f5ffd5b5061027761033236600461283a565b610978565b348015610342575f5ffd5b5061034b610984565b60405161028191906128c3565b348015610363575f5ffd5b506102777f471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed1681681565b348015610396575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610277565b3480156103c9575f5ffd5b506103dd6103d83660046128f8565b610a77565b005b3480156103ea575f5ffd5b506102a96103f9366004612918565b610a90565b348015610409575f5ffd5b5061027761041836600461283a565b610ab5565b348015610428575f5ffd5b506102777f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b34801561045b575f5ffd5b506103dd61046a366004612956565b610ad5565b34801561047a575f5ffd5b50610483610af7565b60405160ff9091168152602001610281565b3480156104a0575f5ffd5b506103dd6104af366004612956565b610b26565b3480156104bf575f5ffd5b506104c8610b59565b6040516001600160a01b039091168152602001610281565b3480156104eb575f5ffd5b506102776104fa366004612984565b610b74565b6103dd61050d366004612a42565b610c0a565b34801561051d575f5ffd5b50610277610c29565b348015610531575f5ffd5b506103dd61054036600461283a565b610c44565b348015610550575f5ffd5b5061027761055f366004612956565b610fea565b34801561056f575f5ffd5b5061027761057e366004612984565b611047565b34801561058e575f5ffd5b506102a961059d366004612956565b61106d565b3480156105ad575f5ffd5b506102776105bc366004612956565b6110a3565b3480156105cc575f5ffd5b506102cd6110ef565b3480156105e0575f5ffd5b506102775f81565b3480156105f3575f5ffd5b506102a9610602366004612865565b61112d565b348015610612575f5ffd5b506102cd604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610642575f5ffd5b5061027761065136600461283a565b61113a565b348015610661575f5ffd5b50610277610670366004612a8e565b611146565b348015610680575f5ffd5b506103dd61068f366004612ae3565b61119c565b34801561069f575f5ffd5b506102776106ae366004612a8e565b611276565b3480156106be575f5ffd5b506103dd6106cd366004612b14565b6112c3565b3480156106dd575f5ffd5b506102776106ec36600461283a565b6113d5565b3480156106fc575f5ffd5b5061027761070b366004612984565b6113e0565b34801561071b575f5ffd5b506103dd61072a366004612956565b611476565b34801561073a575f5ffd5b50610277610749366004612984565b611492565b348015610759575f5ffd5b50610277610768366004612bb2565b611528565b348015610778575f5ffd5b506102777fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b3480156107ab575f5ffd5b506102777f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c81565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610837573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061085b9190612bde565b905090565b5f6001600160e01b03198216637965db0b60e01b148061089057506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f51602061330d5f395f51905f52916108d490612bf5565b80601f016020809104026020016040519081016040528092919081815260200182805461090090612bf5565b801561094b5780601f106109225761010080835404028352916020019161094b565b820191905f5260205f20905b81548152906001019060200180831161092e57829003601f168201915b505050505091505090565b5f610890825f611571565b5f3361096e8185856115c8565b5060019392505050565b5f6108908260016115d5565b60408051606080820183525f80835260208301529181019190915260408051606081019091525f8054829060ff1660028111156109c3576109c361288f565b60028111156109d4576109d461288f565b8152602001600182015481526020016002820180546109f290612bf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1e90612bf5565b8015610a695780601f10610a4057610100808354040283529160200191610a69565b820191905f5260205f20905b815481529060010190602001808311610a4c57829003601f168201915b505050505081525050905090565b5f610a8181611623565b610a8b8383611630565b505050565b5f33610a9d858285611690565b610aa88585856116da565b60019150505b9392505050565b5f9081525f51602061334d5f395f51905f52602052604090206001015490565b610ade82610ab5565b610ae781611623565b610af18383611737565b50505050565b5f805f51602061336d5f395f51905f5290505f8154610b209190600160a01b900460ff16612c3b565b91505090565b6001600160a01b0381163314610b4f5760405163334bd91960e11b815260040160405180910390fd5b610a8b82826117d8565b5f51602061336d5f395f51905f52546001600160a01b031690565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf59190612c68565b15610c0157505f919050565b61089082611851565b610c1261188e565b610c1b82611934565b610c25828261195e565b5050565b5f610c32611a1a565b505f51602061332d5f395f51905f5290565b7f90ff0fdc2a5e2f52090b2c8a629804c58d5c1156b5405c8437a00da5abba239c610c6e81611623565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af1158015610cf7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1b9190612c81565b50909150506001600160a01b038116610d3357505050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b158015610dc0575f5ffd5b505af1158015610dd2573d5f5f3e3d5ffd5b50506040516370a0823160e01b81523060048201525f92506001600160a01b03841691506370a0823190602401602060405180830381865afa158015610e1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3e9190612bde565b60408051606081019091525f8054929350918290829060ff166002811115610e6857610e6861288f565b6002811115610e7957610e7961288f565b815260200160018201548152602001600282018054610e9790612bf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec390612bf5565b8015610f0e5780601f10610ee557610100808354040283529160200191610f0e565b820191905f5260205f20905b815481529060010190602001808311610ef157829003601f168201915b50505050508152505073__$acbb9ece542dcf2065f41aa3c8cca5827e$__6377566915909185610f3c610b59565b868a6040518663ffffffff1660e01b8152600401610f5e959493929190612d00565b602060405180830381865af4158015610f79573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9d9190612bde565b9050610fa881611a63565b7fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e325838383604051610fdb93929190612d3f565b60405180910390a15050505050565b5f5f610ff583610b74565b90508084111561102757828482604051633c8097d960e11b815260040161101e93929190612d3f565b60405180910390fd5b5f611031856113d5565b905061103f33858784611b93565b949350505050565b6001600160a01b03165f9081525f51602061330d5f395f51905f52602052604090205490565b5f9182525f51602061334d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f6110ae83610b74565b9050808411156110d75782848260405163284ff66760e01b815260040161101e93929190612d3f565b5f6110e18561113a565b905061103f33858388611b93565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f51602061330d5f395f51905f52916108d490612bf5565b5f3361096e8185856116da565b5f610890826001611571565b5f5f611151836113e0565b90508085111561117a57828582604051633fa733bb60e21b815260040161101e93929190612d3f565b5f61118486610978565b90506111933386868985611ba8565b95945050505050565b7f471cfe1a44bf1b786db7d7104d51e6728ed7b90a35394ad7cc424adf8ed168166111c681611623565b6111cf82612d6c565b604051632cbf28cb60e21b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163b2fca32c916112059190600401612de8565b5f6040518083038186803b15801561121b575f5ffd5b505af415801561122d573d5f5f3e3d5ffd5b505050507fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f85f83604051611262929190612e8e565b60405180910390a1815f610af1828261304c565b5f5f61128183611492565b9050808511156112aa57828582604051632e52afbb60e21b815260040161101e93929190612d3f565b5f6112b486610956565b9050611193338686848a611ba8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113075750825b90505f826001600160401b031660011480156113225750303b155b905081158015611330575080155b1561134e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137857845460ff60401b1916600160401b1785555b61138489898989611c47565b83156113ca57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b5f610890825f6115d5565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190612c68565b1561146d57505f919050565b61089082611ce3565b61147f82610ab5565b61148881611623565b610af183836117d8565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115139190612c68565b1561151f57505f919050565b61089082611cf6565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f610aae61157d6107d3565b6115889060016130dc565b6115935f600a6131d2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546115bf91906130dc565b85919085611d00565b610a8b8383836001611d42565b5f610aae6115e482600a6131d2565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461161091906130dc565b6116186107d3565b6115bf9060016130dc565b61162d8133611e25565b50565b5f51602061334d5f395f51905f525f61164884610ab5565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f61169b8484611528565b90505f198114610af157818110156116cc57828183604051637dc7a0d960e11b815260040161101e93929190612d3f565b610af184848484035f611d42565b6001600160a01b03831661170357604051634b637e8f60e11b81525f600482015260240161101e565b6001600160a01b03821661172c5760405163ec442f0560e01b81525f600482015260240161101e565b610a8b838383611e5e565b5f5f51602061334d5f395f51905f52611750848461106d565b6117cf575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117853390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610890565b5f915050610890565b5f5f51602061334d5f395f51905f526117f1848461106d565b156117cf575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610890565b5f61187c7fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a68361106d565b61188757505f919050565b5f19610890565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061191457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166119085f51602061332d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156119325760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610c2581611623565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119b8575060408051601f3d908101601f191682019092526119b591810190612bde565b60015b6119e057604051634c9c8ce360e01b81526001600160a01b038316600482015260240161101e565b5f51602061332d5f395f51905f528114611a1057604051632a87526960e21b81526004810182905260240161101e565b610a8b8383611f84565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119325760405163703e46dd60e11b815260040160405180910390fd5b611a6b610b59565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052919091169063095ea7b3906044016020604051808303815f875af1158015611ad9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611afd9190612c68565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2b9fdb8611b35610b59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015611b7a575f5ffd5b505af1158015611b8c573d5f5f3e3d5ffd5b5050505050565b611b9f84848484611fd9565b610af182611a63565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3fef3a3611bdf610b59565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018590526044015f604051808303815f87803b158015611c24575f5ffd5b505af1158015611c36573d5f5f3e3d5ffd5b50505050611b8c8585858585612056565b611c4f61210a565b611cda8484847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c55dae636040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd591906131e0565b612153565b610af1816121b0565b5f610890611cf083611047565b5f611571565b5f61089082611047565b5f611d2d611d0d83612231565b8015611d2857505f8480611d2357611d236131fb565b868809115b151590565b611d3886868661225d565b61119391906130dc565b5f51602061330d5f395f51905f526001600160a01b038516611d795760405163e602df0560e01b81525f600482015260240161101e565b6001600160a01b038416611da257604051634a1406b160e11b81525f600482015260240161101e565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611b8c57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611e1691815260200190565b60405180910390a35050505050565b611e2f828261106d565b610c255760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161101e565b5f51602061330d5f395f51905f526001600160a01b038416611e985781816002015f828254611e8d91906130dc565b90915550611ef59050565b6001600160a01b0384165f9081526020829052604090205482811015611ed75784818460405163391434e360e21b815260040161101e93929190612d3f565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611f13576002810180548390039055611f31565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f7691815260200190565b60405180910390a350505050565b611f8d82612313565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611fd157610a8b8282612376565b610c256123df565b5f51602061336d5f395f51905f528054611ffe906001600160a01b03168630866123fe565b6120088483612465565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611e16929190918252602082015260400190565b5f51602061336d5f395f51905f526001600160a01b038681169085161461208257612082848784611690565b61208c8483612499565b80546120a2906001600160a01b031686856124cd565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db86866040516120fa929190918252602082015260400190565b60405180910390a4505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661193257604051631afcd79f60e31b815260040160405180910390fd5b61215b61210a565b6121636124fe565b61216b6124fe565b6001600160a01b038116612194576040516337bce3c560e11b81525f600482015260240161101e565b61219d81612506565b6121a78484612517565b610af182612529565b6121b861210a565b6121c181612d6c565b604051632cbf28cb60e21b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9163b2fca32c916121f79190600401612de8565b5f6040518083038186803b15801561220d575f5ffd5b505af415801561221f573d5f5f3e3d5ffd5b50505050805f8181610a8b919061304c565b5f60028260038111156122465761224661288f565b612250919061320f565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f0361229157838281612287576122876131fb565b0492505050610aae565b8084116122a8576122a8600385150260111861253b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361234857604051634c9c8ce360e01b81526001600160a01b038216600482015260240161101e565b5f51602061332d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612392919061323c565b5f60405180830381855af49150503d805f81146123ca576040519150601f19603f3d011682016040523d82523d5f602084013e6123cf565b606091505b509150915061119385838361254c565b34156119325760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610af19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125a8565b6001600160a01b03821661248e5760405163ec442f0560e01b81525f600482015260240161101e565b610c255f8383611e5e565b6001600160a01b0382166124c257604051634b637e8f60e11b81525f600482015260240161101e565b610c25825f83611e5e565b6040516001600160a01b03838116602483015260448201839052610a8b91859182169063a9059cbb90606401612433565b61193261210a565b61250e61210a565b61162d81612614565b61251f61210a565b610c258282612684565b61253161210a565b610c255f82611737565b634e487b715f52806020526024601cfd5b6060826125615761255c826126d4565b610aae565b815115801561257857506001600160a01b0384163b155b156125a157604051639996b31560e01b81526001600160a01b038516600482015260240161101e565b5080610aae565b5f5f60205f8451602086015f885af1806125c7576040513d5f823e3d81fd5b50505f513d915081156125de5780600114156125eb565b6001600160a01b0384163b155b15610af157604051635274afe760e01b81526001600160a01b038516600482015260240161101e565b61261c61210a565b5f51602061336d5f395f51905f525f80612635846126fd565b9150915081612645576012612647565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b61268c61210a565b5f51602061330d5f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036126c58482613252565b5060048101610af18382613252565b8051156126e45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b038716916127439161323c565b5f60405180830381855afa9150503d805f811461277b576040519150601f19603f3d011682016040523d82523d5f602084013e612780565b606091505b509150915081801561279457506020815110155b156127c7575f818060200190518101906127ae9190612bde565b905060ff81116127c5576001969095509350505050565b505b505f9485945092505050565b5f602082840312156127e3575f5ffd5b81356001600160e01b031981168114610aae575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610aae60208301846127fa565b5f6020828403121561284a575f5ffd5b5035919050565b6001600160a01b038116811461162d575f5ffd5b5f5f60408385031215612876575f5ffd5b823561288181612851565b946020939093013593505050565b634e487b7160e01b5f52602160045260245ffd5b600381106128bf57634e487b7160e01b5f52602160045260245ffd5b9052565b602081526128d56020820183516128a3565b602082015160408201525f604083015160608084015261103f60808401826127fa565b5f5f60408385031215612909575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561292a575f5ffd5b833561293581612851565b9250602084013561294581612851565b929592945050506040919091013590565b5f5f60408385031215612967575f5ffd5b82359150602083013561297981612851565b809150509250929050565b5f60208284031215612994575f5ffd5b8135610aae81612851565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126129c2575f5ffd5b8135602083015f5f6001600160401b038411156129e1576129e161299f565b50604051601f19601f85018116603f011681018181106001600160401b0382111715612a0f57612a0f61299f565b604052838152905080828401871015612a26575f5ffd5b838360208301375f602085830101528094505050505092915050565b5f5f60408385031215612a53575f5ffd5b8235612a5e81612851565b915060208301356001600160401b03811115612a78575f5ffd5b612a84858286016129b3565b9150509250929050565b5f5f5f60608486031215612aa0575f5ffd5b833592506020840135612ab281612851565b91506040840135612ac281612851565b809150509250925092565b5f60608284031215612add575f5ffd5b50919050565b5f60208284031215612af3575f5ffd5b81356001600160401b03811115612b08575f5ffd5b61103f84828501612acd565b5f5f5f5f60808587031215612b27575f5ffd5b84356001600160401b03811115612b3c575f5ffd5b612b48878288016129b3565b94505060208501356001600160401b03811115612b63575f5ffd5b612b6f878288016129b3565b9350506040850135612b8081612851565b915060608501356001600160401b03811115612b9a575f5ffd5b612ba687828801612acd565b91505092959194509250565b5f5f60408385031215612bc3575f5ffd5b8235612bce81612851565b9150602083013561297981612851565b5f60208284031215612bee575f5ffd5b5051919050565b600181811c90821680612c0957607f821691505b602082108103612add57634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561089057610890612c27565b80518015158114612c63575f5ffd5b919050565b5f60208284031215612c78575f5ffd5b610aae82612c54565b5f5f5f60608486031215612c93575f5ffd5b8351612c9e81612851565b60208501519093506001600160401b0381168114612cba575f5ffd5b9150612cc860408501612c54565b90509250925092565b612cdc8282516128a3565b602081015160208301525f60408201516060604085015261103f60608501826127fa565b60a081525f612d1260a0830188612cd1565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b6001600160a01b039390931683526020830191909152604082015260600190565b6003811061162d575f5ffd5b5f60608236031215612d7c575f5ffd5b604051606081016001600160401b0381118282101715612d9e57612d9e61299f565b6040528235612dac81612d60565b81526020838101359082015260408301356001600160401b03811115612dd0575f5ffd5b612ddc368286016129b3565b60408301525092915050565b602081525f610aae6020830184612cd1565b5f8135612e0681612d60565b612e1084826128a3565b5060208281013590840152604082013536839003601e19018112612e32575f5ffd5b82016020810190356001600160401b03811115612e4d575f5ffd5b803603821315612e5b575f5ffd5b60606040860152806060860152808260808701375f608082870101526080601f19601f8301168601019250505092915050565b60408152612ea36040820160ff8554166128a3565b600183015460608201525f60028401606060808401525f8154612ec581612bf5565b8060a0870152600182165f8114612ee35760018114612eff57612f30565b60ff19831660c088015260c082151560051b8801019350612f30565b845f5260205f205f5b83811015612f2757815489820160c00152600190910190602001612f08565b880160c0019450505b5050508381036020850152612f458186612dfa565b9695505050505050565b601f821115610a8b57805f5260205f20601f840160051c81016020851015612f745750805b601f840160051c820191505b81811015611b8c575f8155600101612f80565b6001600160401b03831115612faa57612faa61299f565b612fbe83612fb88354612bf5565b83612f4f565b5f601f841160018114612fef575f8515612fd85750838201355b5f19600387901b1c1916600186901b178355611b8c565b5f83815260208120601f198716915b8281101561301e5786850135825560209485019460019092019101612ffe565b508682101561303a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561305781612d60565b6003811061307357634e487b7160e01b5f52602160045260245ffd5b60ff1982541660ff8216811783555050602082013560018201556040820135601e198336030181126130a3575f5ffd5b820180356001600160401b038111156130ba575f5ffd5b6020820191508036038213156130ce575f5ffd5b610af1818360028601612f93565b8082018082111561089057610890612c27565b6001815b600184111561312a5780850481111561310e5761310e612c27565b600184161561311c57908102905b60019390931c9280026130f3565b935093915050565b5f8261314057506001610890565b8161314c57505f610890565b8160018114613162576002811461316c57613188565b6001915050610890565b60ff84111561317d5761317d612c27565b50506001821b610890565b5060208310610133831016604e8410600b84101617156131ab575081810a610890565b6131b75f1984846130ef565b805f19048211156131ca576131ca612c27565b029392505050565b5f610aae60ff841683613132565b5f602082840312156131f0575f5ffd5b8151610aae81612851565b634e487b7160e01b5f52601260045260245ffd5b5f60ff83168061322d57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f920191825250919050565b81516001600160401b0381111561326b5761326b61299f565b61327f816132798454612bf5565b84612f4f565b6020601f8211600181146132b1575f831561329a5750848201515b5f19600385901b1c1916600184901b178455611b8c565b5f84815260208120601f198516915b828110156132e057878501518255602094850194600190920191016132c0565b50848210156132fd57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220956370b520922652ce5fd0ab2fbc6dd17d3149760845197f6257148b55ec523464736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E553F65 GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x710 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x72F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x74E JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x76D JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xFBB12D07 EQ PUSH2 0x7A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x694 JUMPI DUP1 PUSH4 0xC2F09E2B EQ PUSH2 0x6B3 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA217FDDF GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5D5 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xB740A83F EQ PUSH2 0x675 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x38D52E0F GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x4B4 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x512 JUMPI DUP1 PUSH4 0x57126D0D EQ PUSH2 0x526 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3FE JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x46F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x495 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA28A477 GT PUSH2 0x227 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x318 JUMPI DUP1 PUSH4 0xB2CE411 EQ PUSH2 0x337 JUMPI DUP1 PUSH4 0x1389C029 EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3DF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F9 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7D3 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 0x295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D3 JUMP JUMPDEST PUSH2 0x860 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x896 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x2828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x2F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x956 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x304 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x313 CALLDATASIZE PUSH1 0x4 PUSH2 0x2865 JUMP JUMPDEST PUSH2 0x961 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x332 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x342 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x34B PUSH2 0x984 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x28C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x363 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x471CFE1A44BF1B786DB7D7104D51E6728ED7B90A35394AD7CC424ADF8ED16816 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x277 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x3D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28F8 JUMP JUMPDEST PUSH2 0xA77 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x3F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x2918 JUMP JUMPDEST PUSH2 0xA90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x418 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0xAB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x46A CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xAD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x483 PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x4AF CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xB26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C8 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x4FA CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0xB74 JUMP JUMPDEST PUSH2 0x3DD PUSH2 0x50D CALLDATASIZE PUSH1 0x4 PUSH2 0x2A42 JUMP JUMPDEST PUSH2 0xC0A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0xC29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x531 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0xC44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0xFEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x1047 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x59D CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x106D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x5BC CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x10A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD PUSH2 0x10EF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x602 CALLDATASIZE PUSH1 0x4 PUSH2 0x2865 JUMP JUMPDEST PUSH2 0x112D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x612 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CD 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 0x642 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x651 CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x113A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x661 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x670 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0x1146 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x680 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x68F CALLDATASIZE PUSH1 0x4 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x119C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2A8E JUMP JUMPDEST PUSH2 0x1276 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2B14 JUMP JUMPDEST PUSH2 0x12C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6EC CALLDATASIZE PUSH1 0x4 PUSH2 0x283A JUMP JUMPDEST PUSH2 0x13D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x70B CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x13E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3DD PUSH2 0x72A CALLDATASIZE PUSH1 0x4 PUSH2 0x2956 JUMP JUMPDEST PUSH2 0x1476 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x749 CALLDATASIZE PUSH1 0x4 PUSH2 0x2984 JUMP JUMPDEST PUSH2 0x1492 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x759 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x768 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BB2 JUMP JUMPDEST PUSH2 0x1528 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x778 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x90FF0FDC2A5E2F52090B2C8A629804C58D5C1156B5405C8437A00DA5ABBA239C DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 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 0x837 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 0x85B SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x890 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8D4 SWAP1 PUSH2 0x2BF5 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 0x900 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x94B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x922 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x94B 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 0x92E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH0 PUSH2 0x1571 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x96E DUP2 DUP6 DUP6 PUSH2 0x15C8 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH1 0x1 PUSH2 0x15D5 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 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 SLOAD DUP3 SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9C3 JUMPI PUSH2 0x9C3 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x9D4 JUMPI PUSH2 0x9D4 PUSH2 0x288F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH2 0x9F2 SWAP1 PUSH2 0x2BF5 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 0xA1E SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA69 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA40 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA69 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 0xA4C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA81 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 PUSH2 0x1630 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA9D DUP6 DUP3 DUP6 PUSH2 0x1690 JUMP JUMPDEST PUSH2 0xAA8 DUP6 DUP6 DUP6 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xADE DUP3 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0xAE7 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xAF1 DUP4 DUP4 PUSH2 0x1737 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xB20 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2C3B JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB4F JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA8B DUP3 DUP3 PUSH2 0x17D8 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 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 0xBD1 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 0xBF5 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0xC01 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1851 JUMP JUMPDEST PUSH2 0xC12 PUSH2 0x188E JUMP JUMPDEST PUSH2 0xC1B DUP3 PUSH2 0x1934 JUMP JUMPDEST PUSH2 0xC25 DUP3 DUP3 PUSH2 0x195E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC32 PUSH2 0x1A1A JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH32 0x90FF0FDC2A5E2F52090B2C8A629804C58D5C1156B5405C8437A00DA5ABBA239C PUSH2 0xC6E DUP2 PUSH2 0x1623 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 0xCF7 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 0xD1B SWAP2 SWAP1 PUSH2 0x2C81 JUMP JUMPDEST POP SWAP1 SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD33 JUMPI POP 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 0xDC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD2 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1A 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 0xE3E SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH0 DUP1 SLOAD SWAP3 SWAP4 POP SWAP2 DUP3 SWAP1 DUP3 SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE68 JUMPI PUSH2 0xE68 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xE79 JUMPI PUSH2 0xE79 PUSH2 0x288F JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH2 0xE97 SWAP1 PUSH2 0x2BF5 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 0xEC3 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF0E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xEE5 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xF0E 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 0xEF1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP PUSH20 0x0 PUSH4 0x77566915 SWAP1 SWAP2 DUP6 PUSH2 0xF3C PUSH2 0xB59 JUMP JUMPDEST DUP7 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF5E SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D00 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xF79 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 0xF9D SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP PUSH2 0xFA8 DUP2 PUSH2 0x1A63 JUMP JUMPDEST PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xFDB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xFF5 DUP4 PUSH2 0xB74 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x1027 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1031 DUP6 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x103F CALLER DUP6 DUP8 DUP5 PUSH2 0x1B93 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 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x10AE DUP4 PUSH2 0xB74 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x10D7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x10E1 DUP6 PUSH2 0x113A JUMP JUMPDEST SWAP1 POP PUSH2 0x103F CALLER DUP6 DUP4 DUP9 PUSH2 0x1B93 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8D4 SWAP1 PUSH2 0x2BF5 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x96E DUP2 DUP6 DUP6 PUSH2 0x16DA JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH1 0x1 PUSH2 0x1571 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1151 DUP4 PUSH2 0x13E0 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x117A JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x1184 DUP7 PUSH2 0x978 JUMP JUMPDEST SWAP1 POP PUSH2 0x1193 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x1BA8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x471CFE1A44BF1B786DB7D7104D51E6728ED7B90A35394AD7CC424ADF8ED16816 PUSH2 0x11C6 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x11CF DUP3 PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x1205 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DE8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x121B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x122D JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH32 0xCA7F7AA563866A1D31C74DEBA224724D1DA9C35CBB6F783F2CCF0182F91E34F8 PUSH0 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1262 SWAP3 SWAP2 SWAP1 PUSH2 0x2E8E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP2 PUSH0 PUSH2 0xAF1 DUP3 DUP3 PUSH2 0x304C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1281 DUP4 PUSH2 0x1492 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x12AA JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH0 PUSH2 0x12B4 DUP7 PUSH2 0x956 JUMP JUMPDEST SWAP1 POP PUSH2 0x1193 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x1BA8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1307 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1322 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1330 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x134E 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 0x1378 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1384 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1C47 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x13CA 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 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH0 PUSH2 0x15D5 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 0x143D 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 0x1461 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0x146D JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1CE3 JUMP JUMPDEST PUSH2 0x147F DUP3 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0x1488 DUP2 PUSH2 0x1623 JUMP JUMPDEST PUSH2 0xAF1 DUP4 DUP4 PUSH2 0x17D8 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 0x14EF 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 0x1513 SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST ISZERO PUSH2 0x151F JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x890 DUP3 PUSH2 0x1CF6 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 0xAAE PUSH2 0x157D PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x1588 SWAP1 PUSH1 0x1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x1593 PUSH0 PUSH1 0xA PUSH2 0x31D2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x15BF SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1D00 JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1D42 JUMP JUMPDEST PUSH0 PUSH2 0xAAE PUSH2 0x15E4 DUP3 PUSH1 0xA PUSH2 0x31D2 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1610 SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x1618 PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x15BF SWAP1 PUSH1 0x1 PUSH2 0x30DC JUMP JUMPDEST PUSH2 0x162D DUP2 CALLER PUSH2 0x1E25 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x1648 DUP5 PUSH2 0xAB5 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x169B DUP5 DUP5 PUSH2 0x1528 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xAF1 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x16CC JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F JUMP JUMPDEST PUSH2 0xAF1 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1D42 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1703 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x172C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1750 DUP5 DUP5 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x17CF JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x1785 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x334D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x17F1 DUP5 DUP5 PUSH2 0x106D JUMP JUMPDEST ISZERO PUSH2 0x17CF JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH0 PUSH2 0x187C PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x1887 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x890 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1914 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1908 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D 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 0x1932 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xC25 DUP2 PUSH2 0x1623 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 0x19B8 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x19B5 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2BDE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x19E0 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 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xA8B DUP4 DUP4 PUSH2 0x1F84 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A6B PUSH2 0xB59 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 SWAP2 SWAP1 SWAP2 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 0x1AD9 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 0x1AFD SWAP2 SWAP1 PUSH2 0x2C68 JUMP JUMPDEST POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF2B9FDB8 PUSH2 0x1B35 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B7A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B8C JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B9F DUP5 DUP5 DUP5 DUP5 PUSH2 0x1FD9 JUMP JUMPDEST PUSH2 0xAF1 DUP3 PUSH2 0x1A63 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF3FEF3A3 PUSH2 0x1BDF PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C24 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C36 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2056 JUMP JUMPDEST PUSH2 0x1C4F PUSH2 0x210A JUMP JUMPDEST PUSH2 0x1CDA DUP5 DUP5 DUP5 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC55DAE63 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 0x1CB1 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 0x1CD5 SWAP2 SWAP1 PUSH2 0x31E0 JUMP JUMPDEST PUSH2 0x2153 JUMP JUMPDEST PUSH2 0xAF1 DUP2 PUSH2 0x21B0 JUMP JUMPDEST PUSH0 PUSH2 0x890 PUSH2 0x1CF0 DUP4 PUSH2 0x1047 JUMP JUMPDEST PUSH0 PUSH2 0x1571 JUMP JUMPDEST PUSH0 PUSH2 0x890 DUP3 PUSH2 0x1047 JUMP JUMPDEST PUSH0 PUSH2 0x1D2D PUSH2 0x1D0D DUP4 PUSH2 0x2231 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1D28 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1D23 JUMPI PUSH2 0x1D23 PUSH2 0x31FB JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1D38 DUP7 DUP7 DUP7 PUSH2 0x225D JUMP JUMPDEST PUSH2 0x1193 SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x1D79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1DA2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E 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 0x1B8C 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 0x1E16 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E2F DUP3 DUP3 PUSH2 0x106D JUMP JUMPDEST PUSH2 0xC25 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1E98 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1E8D SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1EF5 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 0x1ED7 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x101E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D3F 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 0x1F13 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1F31 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 0x1F76 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1F8D DUP3 PUSH2 0x2313 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 0x1FD1 JUMPI PUSH2 0xA8B DUP3 DUP3 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0xC25 PUSH2 0x23DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1FFE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x23FE JUMP JUMPDEST PUSH2 0x2008 DUP5 DUP4 PUSH2 0x2465 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1E16 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x2082 JUMPI PUSH2 0x2082 DUP5 DUP8 DUP5 PUSH2 0x1690 JUMP JUMPDEST PUSH2 0x208C DUP5 DUP4 PUSH2 0x2499 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x20A2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x24CD JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x20FA 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 POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x215B PUSH2 0x210A JUMP JUMPDEST PUSH2 0x2163 PUSH2 0x24FE JUMP JUMPDEST PUSH2 0x216B PUSH2 0x24FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2194 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0x219D DUP2 PUSH2 0x2506 JUMP JUMPDEST PUSH2 0x21A7 DUP5 DUP5 PUSH2 0x2517 JUMP JUMPDEST PUSH2 0xAF1 DUP3 PUSH2 0x2529 JUMP JUMPDEST PUSH2 0x21B8 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x21C1 DUP2 PUSH2 0x2D6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE PUSH20 0x0 SWAP2 PUSH4 0xB2FCA32C SWAP2 PUSH2 0x21F7 SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DE8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x220D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x221F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH0 DUP2 DUP2 PUSH2 0xA8B SWAP2 SWAP1 PUSH2 0x304C JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2246 JUMPI PUSH2 0x2246 PUSH2 0x288F JUMP JUMPDEST PUSH2 0x2250 SWAP2 SWAP1 PUSH2 0x320F JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x2291 JUMPI DUP4 DUP3 DUP2 PUSH2 0x2287 JUMPI PUSH2 0x2287 PUSH2 0x31FB JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xAAE JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x22A8 JUMPI PUSH2 0x22A8 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x253B 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x2348 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 0x101E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x332D 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 PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2392 SWAP2 SWAP1 PUSH2 0x323C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x23CA 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 0x23CF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1193 DUP6 DUP4 DUP4 PUSH2 0x254C JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xAF1 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x25A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x248E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xC25 PUSH0 DUP4 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x24C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x101E JUMP JUMPDEST PUSH2 0xC25 DUP3 PUSH0 DUP4 PUSH2 0x1E5E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xA8B SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x2433 JUMP JUMPDEST PUSH2 0x1932 PUSH2 0x210A JUMP JUMPDEST PUSH2 0x250E PUSH2 0x210A JUMP JUMPDEST PUSH2 0x162D DUP2 PUSH2 0x2614 JUMP JUMPDEST PUSH2 0x251F PUSH2 0x210A JUMP JUMPDEST PUSH2 0xC25 DUP3 DUP3 PUSH2 0x2684 JUMP JUMPDEST PUSH2 0x2531 PUSH2 0x210A JUMP JUMPDEST PUSH2 0xC25 PUSH0 DUP3 PUSH2 0x1737 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2561 JUMPI PUSH2 0x255C DUP3 PUSH2 0x26D4 JUMP JUMPDEST PUSH2 0xAAE JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2578 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x25A1 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 0x101E JUMP JUMPDEST POP DUP1 PUSH2 0xAAE JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x25C7 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x25DE JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x25EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xAF1 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 0x101E JUMP JUMPDEST PUSH2 0x261C PUSH2 0x210A JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x336D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x2635 DUP5 PUSH2 0x26FD JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2645 JUMPI PUSH1 0x12 PUSH2 0x2647 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 0x268C PUSH2 0x210A JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x330D PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x26C5 DUP5 DUP3 PUSH2 0x3252 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xAF1 DUP4 DUP3 PUSH2 0x3252 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x26E4 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x2743 SWAP2 PUSH2 0x323C JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x277B 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 0x2780 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2794 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x27C7 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x27AE SWAP2 SWAP1 PUSH2 0x2BDE JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x27C5 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xAAE JUMPI PUSH0 PUSH0 REVERT 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 0xAAE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x27FA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x284A 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 0x162D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2876 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2881 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x28BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH2 0x28D5 PUSH1 0x20 DUP3 ADD DUP4 MLOAD PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH0 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP5 ADD MSTORE PUSH2 0x103F PUSH1 0x80 DUP5 ADD DUP3 PUSH2 0x27FA JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2909 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 0x292A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2935 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2945 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2967 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2979 DUP2 PUSH2 0x2851 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2994 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAAE DUP2 PUSH2 0x2851 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 0x29C2 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 0x29E1 JUMPI PUSH2 0x29E1 PUSH2 0x299F JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x2A0F JUMPI PUSH2 0x2A0F PUSH2 0x299F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x2A26 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 0x2A53 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A5E DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A84 DUP6 DUP3 DUP7 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AA0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2AB2 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2AC2 DUP2 PUSH2 0x2851 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2ADD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AF3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B08 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x103F DUP5 DUP3 DUP6 ADD PUSH2 0x2ACD JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2B27 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B3C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2B48 DUP8 DUP3 DUP9 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B63 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2B6F DUP8 DUP3 DUP9 ADD PUSH2 0x29B3 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2B80 DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2B9A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2BA6 DUP8 DUP3 DUP9 ADD PUSH2 0x2ACD JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BC3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2BCE DUP2 PUSH2 0x2851 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2979 DUP2 PUSH2 0x2851 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BEE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2C09 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2ADD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0x890 JUMPI PUSH2 0x890 PUSH2 0x2C27 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2C63 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAAE DUP3 PUSH2 0x2C54 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C93 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x2C9E DUP2 PUSH2 0x2851 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2CBA JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH2 0x2CC8 PUSH1 0x40 DUP6 ADD PUSH2 0x2C54 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x2CDC DUP3 DUP3 MLOAD PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH0 PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x103F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x27FA JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x2D12 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x2CD1 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 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 PUSH1 0x3 DUP2 LT PUSH2 0x162D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x60 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x2D7C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2D9E JUMPI PUSH2 0x2D9E PUSH2 0x299F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 CALLDATALOAD PUSH2 0x2DAC DUP2 PUSH2 0x2D60 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DD0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2DDC CALLDATASIZE DUP3 DUP7 ADD PUSH2 0x29B3 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xAAE PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2CD1 JUMP JUMPDEST PUSH0 DUP2 CALLDATALOAD PUSH2 0x2E06 DUP2 PUSH2 0x2D60 JUMP JUMPDEST PUSH2 0x2E10 DUP5 DUP3 PUSH2 0x28A3 JUMP JUMPDEST POP PUSH1 0x20 DUP3 DUP2 ADD CALLDATALOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD CALLDATASIZE DUP4 SWAP1 SUB PUSH1 0x1E NOT ADD DUP2 SLT PUSH2 0x2E32 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E4D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x2E5B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP7 ADD MSTORE DUP1 DUP3 PUSH1 0x80 DUP8 ADD CALLDATACOPY PUSH0 PUSH1 0x80 DUP3 DUP8 ADD ADD MSTORE PUSH1 0x80 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP7 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH2 0x2EA3 PUSH1 0x40 DUP3 ADD PUSH1 0xFF DUP6 SLOAD AND PUSH2 0x28A3 JUMP JUMPDEST PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH0 PUSH1 0x2 DUP5 ADD PUSH1 0x60 PUSH1 0x80 DUP5 ADD MSTORE PUSH0 DUP2 SLOAD PUSH2 0x2EC5 DUP2 PUSH2 0x2BF5 JUMP JUMPDEST DUP1 PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 DUP3 AND PUSH0 DUP2 EQ PUSH2 0x2EE3 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x2EFF JUMPI PUSH2 0x2F30 JUMP JUMPDEST PUSH1 0xFF NOT DUP4 AND PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xC0 DUP3 ISZERO ISZERO PUSH1 0x5 SHL DUP9 ADD ADD SWAP4 POP PUSH2 0x2F30 JUMP JUMPDEST DUP5 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2F27 JUMPI DUP2 SLOAD DUP10 DUP3 ADD PUSH1 0xC0 ADD MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x2F08 JUMP JUMPDEST DUP9 ADD PUSH1 0xC0 ADD SWAP5 POP POP JUMPDEST POP POP POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0x2F45 DUP2 DUP7 PUSH2 0x2DFA JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xA8B JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2F74 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1B8C JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F80 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2FAA JUMPI PUSH2 0x2FAA PUSH2 0x299F JUMP JUMPDEST PUSH2 0x2FBE DUP4 PUSH2 0x2FB8 DUP4 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST DUP4 PUSH2 0x2F4F JUMP JUMPDEST PUSH0 PUSH1 0x1F DUP5 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2FEF JUMPI PUSH0 DUP6 ISZERO PUSH2 0x2FD8 JUMPI POP DUP4 DUP3 ADD CALLDATALOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP7 SWAP1 SHL OR DUP4 SSTORE PUSH2 0x1B8C JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP8 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x301E JUMPI DUP7 DUP6 ADD CALLDATALOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2FFE JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x303A JUMPI PUSH0 NOT PUSH1 0xF8 DUP9 PUSH1 0x3 SHL AND SHR NOT DUP5 DUP8 ADD CALLDATALOAD AND DUP2 SSTORE JUMPDEST POP POP PUSH1 0x1 DUP6 PUSH1 0x1 SHL ADD DUP4 SSTORE POP POP POP POP POP JUMP JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x2D60 JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x3073 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH1 0xFF NOT DUP3 SLOAD AND PUSH1 0xFF DUP3 AND DUP2 OR DUP4 SSTORE POP POP PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x30A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x30BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD SWAP2 POP DUP1 CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x30CE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xAF1 DUP2 DUP4 PUSH1 0x2 DUP7 ADD PUSH2 0x2F93 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x890 JUMPI PUSH2 0x890 PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x312A JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x310E JUMPI PUSH2 0x310E PUSH2 0x2C27 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x311C JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x30F3 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x3140 JUMPI POP PUSH1 0x1 PUSH2 0x890 JUMP JUMPDEST DUP2 PUSH2 0x314C JUMPI POP PUSH0 PUSH2 0x890 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x3162 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x316C JUMPI PUSH2 0x3188 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x890 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x317D JUMPI PUSH2 0x317D PUSH2 0x2C27 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x890 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x31AB JUMPI POP DUP2 DUP2 EXP PUSH2 0x890 JUMP JUMPDEST PUSH2 0x31B7 PUSH0 NOT DUP5 DUP5 PUSH2 0x30EF JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x31CA JUMPI PUSH2 0x31CA PUSH2 0x2C27 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAAE PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x3132 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xAAE DUP2 PUSH2 0x2851 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 0x322D 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 PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x326B JUMPI PUSH2 0x326B PUSH2 0x299F JUMP JUMPDEST PUSH2 0x327F DUP2 PUSH2 0x3279 DUP5 SLOAD PUSH2 0x2BF5 JUMP JUMPDEST DUP5 PUSH2 0x2F4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x32B1 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x329A 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 0x1B8C JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x32E0 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x32C0 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x32FD 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 PUSH4 0x70B52092 0x26 MSTORE 0xCE PUSH0 0xD0 0xAB 0x2F 0xBC PUSH14 0xD17D3149760845197F6257148B55 0xEC MSTORE CALLVALUE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1141:4729:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3934:127;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;3934:127:50;;;;;;;;3443:202:6;;;;;;;;;;-1:-1:-1;3443:202:6;;;;;:::i;:::-;;:::i;:::-;;;652:14:75;;645:22;627:41;;615:2;600:18;3443:202:6;487:187:75;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;8777:147:10:-;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;5483:106:50:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1350:70::-;;;;;;;;;;;;1392:28;1350:70;;3896:152:9;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;2040:134:56;;;;;;;;;;-1:-1:-1;2040:134:56;;;;;:::i;:::-;;:::i;:::-;;5988:244:9;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;4759:191:6:-;;;;;;;;;;-1:-1:-1;4759:191:6;;;;;:::i;:::-;;:::i;1136:66:56:-;;;;;;;;;;;;1176:26;1136:66;;5246:136:6;;;;;;;;;;-1:-1:-1;5246:136:6;;;;;:::i;:::-;;:::i;6612:221:10:-;;;;;;;;;;;;;:::i;:::-;;;4626:4:75;4614:17;;;4596:36;;4584:2;4569:18;6612:221:10;4454:184:75;6348:245:6;;;;;;;;;;-1:-1:-1;6348:245:6;;;;;:::i;:::-;;:::i;6877:153:10:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;4807:32:75;;;4789:51;;4777:2;4762:18;6877:153:10;4643:203:75;3502:167:50;;;;;;;;;;-1:-1:-1;3502:167:50;;;;;:::i;:::-;;:::i;4161:214:8:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;4757:497:50:-;;;;;;;;;;-1:-1:-1;4757:497:50;;;;;:::i;:::-;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;3732:207:6:-;;;;;;;;;;-1:-1:-1;3732:207:6;;;;;:::i;:::-;;:::i;9603:380:10:-;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;2317:49:6:-;;;;;;;;;;-1:-1:-1;2317:49:6;2362:4;2317:49;;4472:178:9;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;5258:221:50:-;;;;;;;;;;-1:-1:-1;5258:221:50;;;;;:::i;:::-;;:::i;10488:405:10:-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;2144:244:50:-;;;;;;;;;;-1:-1:-1;2144:244:50;;;;;:::i;:::-;;:::i;7309:148:10:-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;3059:171:50:-;;;;;;;;;;-1:-1:-1;3059:171:50;;;;;:::i;:::-;;:::i;5662:138:6:-;;;;;;;;;;-1:-1:-1;5662:138:6;;;;;:::i;:::-;;:::i;3282:167:50:-;;;;;;;;;;-1:-1:-1;3282:167:50;;;;;:::i;:::-;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;1078:54:56:-;;;;;;;;;;;;1112:20;1078:54;;1282:64:50;;;;;;;;;;;;1321:25;1282:64;;3934:127;4024:32;;-1:-1:-1;;;4024:32:50;;4050:4;4024:32;;;4789:51:75;3995:14:50;;4024:7;-1:-1:-1;;;;;4024:17:50;;;;4762:18:75;;4024:32:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4017:39;;3934:127;:::o;3443:202:6:-;3528:4;-1:-1:-1;;;;;;3551:47:6;;-1:-1:-1;;;3551:47:6;;:87;;-1:-1:-1;;;;;;;;;;1134:40:12;;;3602:36:6;3544:94;3443:202;-1:-1:-1;;3443:202:6:o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;5483:106:50:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5566:18:50;;;;;;;;;5573:11;5566:18;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5483:106;:::o;2040:134:56:-;2362:4:6;3191:16;2362:4;3191:10;:16::i;:::-;2139:30:56::1;2153:4;2159:9;2139:13;:30::i;:::-;2040:134:::0;;;:::o;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;4759:191:6:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:6;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;:::-;6778:48;;;6612:221;:::o;6348:245:6:-;-1:-1:-1;;;;;6441:34:6;;966:10:11;6441:34:6;6437:102;;6498:30;;-1:-1:-1;;;6498:30:6;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;6877:153:10:-;-1:-1:-1;;;;;;;;;;;7014:8:10;-1:-1:-1;;;;;7014:8:10;;6877:153::o;3502:167:50:-;3575:7;3594;-1:-1:-1;;;;;3594:22:50;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3590:38;;;-1:-1:-1;3627:1:50;;3502:167;-1:-1:-1;3502:167:50:o;3590:38::-;3641:23;3658:5;3641:16;:23::i;4161:214:8:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;4757:497:50:-;1321:25;3191:16:6;3202:4;3191:10;:16::i;:::-;4857:46:50::1;::::0;-1:-1:-1;;;4857:46:50;;-1:-1:-1;;;;;4894:7:50::1;4807:32:75::0;;4857:46:50::1;::::0;::::1;4789:51:75::0;-1:-1:-1;;4857:15:50::1;:28:::0;;::::1;::::0;::::1;::::0;4762:18:75;;4857:46:50::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;4834:69:50;;-1:-1:-1;;;;;;;4913:20:50;::::1;4909:33;;4935:7;4161:214:8::0;;:::o;4909:33:50:-:1;4947:60;::::0;-1:-1:-1;;;4947:60:50;;-1:-1:-1;;;;;4977:7:50::1;11284:32:75::0;;4947:60:50::1;::::0;::::1;11266:51:75::0;4995:4:50::1;11333:18:75::0;;;11326:60;5002:4:50::1;11402:18:75::0;;;11395:50;4947:15:50::1;:21;::::0;::::1;::::0;11239:18:75;;4947:60:50::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5031:47:50::1;::::0;-1:-1:-1;;;5031:47:50;;5072:4:::1;5031:47;::::0;::::1;4789:51:75::0;5014:14:50::1;::::0;-1:-1:-1;;;;;;5031:32:50;::::1;::::0;-1:-1:-1;5031:32:50::1;::::0;4762:18:75;;5031:47:50::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5109:22;::::0;;::::1;::::0;::::1;::::0;;;5084::::1;5109::::0;;5014:64;;-1:-1:-1;5084:22:50;;;5109;;::::1;;;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;5132:6;5140:7;:5;:7::i;:::-;5149:6;5157:5;5109:54;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5084:79;;5169:23;5177:14;5169:7;:23::i;:::-;5203:46;5218:6;5226;5234:14;5203:46;;;;;;;;:::i;:::-;;;;;;;;4828:426;;;4757:497:::0;;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;3732:207:6:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:6;;;;;;;;-1:-1:-1;;;;;3901:31:6;;;;;;;;;;;;;;;3732:207::o;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;4472:178::-;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;:::-;10430:6;10030:413;-1:-1:-1;;;;;10030:413:10:o;5258:221:50:-;1392:28;3191:16:6;3202:4;3191:10;:16::i;:::-;5367:20:50::1;:11:::0;:20:::1;:::i;:::-;:22;::::0;-1:-1:-1;;;5367:22:50;;:20:::1;::::0;::::1;::::0;:22:::1;::::0;:20;:22:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:43;5418:11;5431;5400:43;;;;;;;:::i;:::-;;;;;;;;5463:11:::0;5449::::1;:25;5463:11:::0;5449;:25:::1;:::i;10488:405:10:-:0;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;2144:244:50:-;8870:21:7;4302:15;;-1:-1:-1;;;4302:15:7;;;;4301:16;;-1:-1:-1;;;;;4348:14:7;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:7;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:7;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:7;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:7;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:7;-1:-1:-1;;;5013:22:7;;;4979:67;2322:61:50::1;2347:5;2354:7;2363:6;2371:11;2322:24;:61::i;:::-;5070:14:7::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:7;;;5142:14;;-1:-1:-1;19672:50:75;;5142:14:7;;19660:2:75;19645:18;5142:14:7;;;;;;;5066:101;4092:1081;;;;;2144:244:50;;;;:::o;7309:148:10:-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;3059:171:50:-;3133:7;3152;-1:-1:-1;;;;;3152:24:50;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3148:40;;;-1:-1:-1;3187:1:50;;3059:171;-1:-1:-1;3059:171:50:o;3148:40::-;3201:24;3219:5;3201:17;:24::i;5662:138:6:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;3282:167:50:-:0;3354:7;3373;-1:-1:-1;;;;;3373:24:50;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3369:40;;;-1:-1:-1;3408:1:50;;3282:167;-1:-1:-1;3282:167:50:o;3369:40::-;3422:22;3438:5;3422:15;:22::i;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;4148:103:6:-;4214:30;4225:4;966:10:11;4214::6;:30::i;:::-;4148:103;:::o;6718:318::-;-1:-1:-1;;;;;;;;;;;6801:30:6;6898:18;6911:4;6898:12;:18::i;:::-;6926:8;:14;;;;;;;;;;;:24;;:36;;;6977:52;6870:46;;-1:-1:-1;6953:9:6;;6870:46;;6935:4;;6977:52;;6926:8;6977:52;6791:245;;6718:318;;:::o;11745:477:9:-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;4789:51:75;4762:18;;6729:30:9;4643:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;4789:51:75;4762:18;;6822:32:9;4643:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;7270:387:6:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:6;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:6;;;;;;;;;:38;;-1:-1:-1;;7475:38:6;7509:4;7475:38;;;7559:12;966:10:11;;887:96;7559:12:6;-1:-1:-1;;;;;7532:40:6;7550:7;-1:-1:-1;;;;;7532:40:6;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:6;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:6;;;;;;;;;;:39;;-1:-1:-1;;8097:39:6;;;8155:40;966:10:11;;8097:14:6;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2227:167:56;2300:7;2320:23;1112:20;2337:5;2320:7;:23::i;:::-;2315:38;;-1:-1:-1;2352:1:56;;2227:167;-1:-1:-1;2227:167:56:o;2315:38::-;-1:-1:-1;;2366:23:56;7708:108:10;4603:312:8;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;1943:93:56:-;1176:26;3191:16:6;3202:4;3191:10;:16::i;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;4807:32:75;;6518:60:8;;;4789:51:75;4762:18;;6518:60:8;4643:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;4597:156:50;4660:7;:5;:7::i;:::-;4645:57;;-1:-1:-1;;;4645:57:50;;-1:-1:-1;;;;;4685:7:50;21676:32:75;;4645:57:50;;;21658:51:75;21725:18;;;21718:34;;;4645:31:50;;;;;;;21631:18:75;;4645:57:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4708:7;-1:-1:-1;;;;;4708:14:50;;4731:7;:5;:7::i;:::-;4708:40;;-1:-1:-1;;;;;;4708:40:50;;;;;;;-1:-1:-1;;;;;21676:32:75;;;4708:40:50;;;21658:51:75;21725:18;;;21718:34;;;21631:18;;4708:40:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4597:156;:::o;4334:259::-;4519:48;4534:6;4542:8;4552:6;4560;4519:14;:48::i;:::-;4573:15;4581:6;4573:7;:15::i;4065:265::-;4221:7;-1:-1:-1;;;;;4221:16:50;;4246:7;:5;:7::i;:::-;4221:42;;-1:-1:-1;;;;;;4221:42:50;;;;;;;-1:-1:-1;;;;;21676:32:75;;;4221:42:50;;;21658:51:75;21725:18;;;21718:34;;;21631:18;;4221:42:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4269:56;4285:6;4293:8;4303:5;4310:6;4318;4269:15;:56::i;2443:328::-;6931:20:7;:18;:20::i;:::-;2634:79:50::1;2661:5;2668:7;2677:6;2692:7;-1:-1:-1::0;;;;;2692:17:50::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2634:26;:79::i;:::-;2719:47;2754:11;2719:34;:47::i;8017:153:10:-:0;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;8218:112::-;8281:7;8307:16;8317:5;8307:9;:16::i;9351:238:42:-;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;4789:51:75;4762:18;;11183:32:9;4643:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;4789:51:75;4762:18;;11283:31:9;4643:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11415:31:9;;;;;;;;11074:389;10976:487;;;;:::o;4381:197:6:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:6;;-1:-1:-1;;;;;21676:32:75;;4514:47:6;;;21658:51:75;21725:18;;;21718:34;;;21631:18;;4514:47:6;21484:274:75;7220:1170:9;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220: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;11631:890:10:-;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;22604:25:75;;;22660:2;22645:18;;22638:34;22592:2;22577:18;;22430:248;12588:974:10;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;22604:25:75;;;22660:2;22645:18;;22638:34;22592:2;22577:18;;22430:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;7084:141:7:-;8870:21;8560:40;-1:-1:-1;;;8560:40:7;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:7;;;;;;;;;;;1296:404:56;6931:20:7;:18;:20::i;:::-;1459:24:56::1;:22;:24::i;:::-;1489:22;:20;:22::i;:::-;-1:-1:-1::0;;;;;1521:29:56;::::1;1517:66;;1559:24;::::0;-1:-1:-1;;;1559:24:56;;1580:1:::1;1559:24;::::0;::::1;4789:51:75::0;4762:18;;1559:24:56::1;4643:203:75::0;1517:66:56::1;1589:22;1604:6;1589:14;:22::i;:::-;1617:28;1630:5;1637:7;1617:12;:28::i;:::-;1651:44;1688:6;1651:36;:44::i;2826:179:50:-:0;6931:20:7;:18;:20::i;:::-;2947::50::1;:11:::0;:20:::1;:::i;:::-;:22;::::0;-1:-1:-1;;;2947:22:50;;:20:::1;::::0;::::1;::::0;:22:::1;::::0;:20;:22:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2989:11;2975;:25;;;;;;:::i;28183:122:42:-:0;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::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;;;;;4807:32:75;;1805:47:27;;;4789:51:75;4762:18;;1805:47:27;4643:203:75;1744:119:27;-1:-1:-1;;;;;;;;;;;1872:73:27;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;1670:188:33;1797:53;;-1:-1:-1;;;;;23468:32:75;;;1797:53:33;;;23450:51:75;23537:32;;;23517:18;;;23510:60;23586:18;;;23579:34;;;1770:81:33;;1790:5;;1812:18;;;;;23423::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;4789:51:75;4762:18;;8847:32:9;4643:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;4789:51:75;4762:18;;9373:30:9;4643:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;21676:32:75;;;1380:43:33;;;21658:51:75;21725:18;;;21718:34;;;1353:71:33;;1373:5;;1395:14;;;;;21631:18:75;;1380:43:33;21484:274:75;2970:67:8;6931:20:7;:18;:20::i;5090:114:10:-;6931:20:7;:18;:20::i;:::-;5165:32:10::1;5190:6;5165:24;:32::i;2282:147:9:-:0;6931:20:7;:18;:20::i;:::-;2384:38:9::1;2407:5;2414:7;2384:22;:38::i;1755:137:56:-:0;6931:20:7;:18;:20::i;:::-;1849:38:56::1;2362:4:6;1880:6:56::0;1849:10:::1;:38::i;1776:194:38:-:0;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;4421:582:34;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;4807:32:75;;4917:24:34;;;4789:51:75;4762:18;;4917:24:34;4643:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;4807:32:75;;8401:40:33;;;4789:51:75;4762:18;;8401:40:33;4643:203:75;5210:304:10;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;5295:24:10::1;::::0;5390:28:::1;5411:6:::0;5390:20:::1;:28::i;:::-;5352:66;;;;5452:7;:28;;5478:2;5452:28;;;5462:13;5452:28;5428:52:::0;;-1:-1:-1;;;;;;5490:17:10;-1:-1:-1;;;5428:52:10::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;5490:17:10;;-1:-1:-1;;;;;5490:17:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;5210:304:10:o;2435:216:9:-;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:9;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:9::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5543:487:34:-:0;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;5657:550:10;5851:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5851:43:10;-1:-1:-1;;;5851:43:10;;;5811:93;;5724:7;;;;;;;;-1:-1:-1;;;;;5811:26:10;;;:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:140;;;;5918:7;:39;;;;;5955:2;5929:15;:22;:28;;5918:39;5914:260;;;5973:24;6011:15;6000:38;;;;;;;;;;;;:::i;:::-;5973:65;-1:-1:-1;6076:15:10;6056:35;;6052:112;;6119:4;;6131:16;;-1:-1:-1;5657:550:10;-1:-1:-1;;;;5657:550:10:o;6052:112::-;5959:215;5914:260;-1:-1:-1;6191:5:10;;;;-1:-1:-1;5657:550:10;-1:-1:-1;;;5657:550:10:o;196:286:75:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:75;;391:43;;381:71;;448:1;445;438:12;679:289;721:3;759:5;753:12;786:6;781:3;774:19;842:6;835:4;828:5;824:16;817:4;812:3;808:14;802:47;894:1;887:4;878:6;873:3;869:16;865:27;858:38;957:4;950:2;946:7;941:2;933:6;929:15;925:29;920:3;916:39;912:50;905:57;;;679:289;;;;:::o;973:220::-;1122:2;1111:9;1104:21;1085:4;1142:45;1183:2;1172:9;1168:18;1160:6;1142:45;:::i;1198:226::-;1257:6;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;-1:-1:-1;1371:23:75;;1198:226;-1:-1:-1;1198:226:75:o;1429:131::-;-1:-1:-1;;;;;1504:31:75;;1494:42;;1484:70;;1550:1;1547;1540:12;1565:367;1633:6;1641;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;:::-;1818:5;1896:2;1881:18;;;;1868:32;;-1:-1:-1;;;1565:367:75:o;1937:127::-;1998:10;1993:3;1989:20;1986:1;1979:31;2029:4;2026:1;2019:15;2053:4;2050:1;2043:15;2069:240;2153:1;2146:5;2143:12;2133:143;;2198:10;2193:3;2189:20;2186:1;2179:31;2233:4;2230:1;2223:15;2261:4;2258:1;2251:15;2133:143;2285:18;;2069:240::o;2314:486::-;2497:2;2486:9;2479:21;2509:63;2568:2;2557:9;2553:18;2544:6;2538:13;2509:63;:::i;:::-;2626:2;2618:6;2614:15;2608:22;2603:2;2592:9;2588:18;2581:50;2460:4;2678:2;2670:6;2666:15;2660:22;2720:4;2713;2702:9;2698:20;2691:34;2742:52;2789:3;2778:9;2774:19;2760:12;2742:52;:::i;2987:346::-;3055:6;3063;3116:2;3104:9;3095:7;3091:23;3087:32;3084:52;;;3132:1;3129;3122:12;3084:52;-1:-1:-1;;3177:23:75;;;3297:2;3282:18;;;3269:32;;-1:-1:-1;2987:346:75:o;3338:508::-;3415:6;3423;3431;3484:2;3472:9;3463:7;3459:23;3455:32;3452:52;;;3500:1;3497;3490:12;3452:52;3539:9;3526:23;3558:31;3583:5;3558:31;:::i;:::-;3608:5;-1:-1:-1;3665:2:75;3650:18;;3637:32;3678:33;3637:32;3678:33;:::i;:::-;3338:508;;3730:7;;-1:-1:-1;;;3810:2:75;3795:18;;;;3782:32;;3338:508::o;4082:367::-;4150:6;4158;4211:2;4199:9;4190:7;4186:23;4182:32;4179:52;;;4227:1;4224;4217:12;4179:52;4272:23;;;-1:-1:-1;4371:2:75;4356:18;;4343:32;4384:33;4343:32;4384:33;:::i;:::-;4436:7;4426:17;;;4082:367;;;;;:::o;4851:247::-;4910:6;4963:2;4951:9;4942:7;4938:23;4934:32;4931:52;;;4979:1;4976;4969:12;4931:52;5018:9;5005:23;5037:31;5062:5;5037:31;:::i;5103:127::-;5164:10;5159:3;5155:20;5152:1;5145:31;5195:4;5192:1;5185:15;5219:4;5216:1;5209:15;5235:888;5277:5;5330:3;5323:4;5315:6;5311:17;5307:27;5297:55;;5348:1;5345;5338:12;5297:55;5388:6;5375:20;5427:4;5419:6;5415:17;5456:1;5478;-1:-1:-1;;;;;5494:6:75;5491:30;5488:56;;;5524:18;;:::i;:::-;-1:-1:-1;5679:2:75;5673:9;-1:-1:-1;;5592:2:75;5571:15;;5567:29;;5737:2;5725:15;5721:29;5709:42;;5802:22;;;-1:-1:-1;;;;;5766:34:75;;5763:62;5760:88;;;5828:18;;:::i;:::-;5864:2;5857:22;5914;;;5899:6;-1:-1:-1;5899:6:75;5951:16;;;5948:25;-1:-1:-1;5945:45:75;;;5986:1;5983;5976:12;5945:45;6036:6;6031:3;6024:4;6016:6;6012:17;5999:44;6091:1;6084:4;6075:6;6067;6063:19;6059:30;6052:41;6111:6;6102:15;;;;;;5235:888;;;;:::o;6128:455::-;6205:6;6213;6266:2;6254:9;6245:7;6241:23;6237:32;6234:52;;;6282:1;6279;6272:12;6234:52;6321:9;6308:23;6340:31;6365:5;6340:31;:::i;:::-;6390:5;-1:-1:-1;6446:2:75;6431:18;;6418:32;-1:-1:-1;;;;;6462:30:75;;6459:50;;;6505:1;6502;6495:12;6459:50;6528:49;6569:7;6560:6;6549:9;6545:22;6528:49;:::i;:::-;6518:59;;;6128:455;;;;;:::o;6960:508::-;7037:6;7045;7053;7106:2;7094:9;7085:7;7081:23;7077:32;7074:52;;;7122:1;7119;7112:12;7074:52;7167:23;;;-1:-1:-1;7266:2:75;7251:18;;7238:32;7279:33;7238:32;7279:33;:::i;:::-;7331:7;-1:-1:-1;7390:2:75;7375:18;;7362:32;7403:33;7362:32;7403:33;:::i;:::-;7455:7;7445:17;;;6960:508;;;;;:::o;7473:158::-;7536:5;7581:2;7572:6;7567:3;7563:16;7559:25;7556:45;;;7597:1;7594;7587:12;7556:45;-1:-1:-1;7619:6:75;7473:158;-1:-1:-1;7473:158:75:o;7636:361::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7833:9;7820:23;-1:-1:-1;;;;;7858:6:75;7855:30;7852:50;;;7898:1;7895;7888:12;7852:50;7921:70;7983:7;7974:6;7963:9;7959:22;7921:70;:::i;8002:927::-;8137:6;8145;8153;8161;8214:3;8202:9;8193:7;8189:23;8185:33;8182:53;;;8231:1;8228;8221:12;8182:53;8271:9;8258:23;-1:-1:-1;;;;;8296:6:75;8293:30;8290:50;;;8336:1;8333;8326:12;8290:50;8359:49;8400:7;8391:6;8380:9;8376:22;8359:49;:::i;:::-;8349:59;;;8461:2;8450:9;8446:18;8433:32;-1:-1:-1;;;;;8480:8:75;8477:32;8474:52;;;8522:1;8519;8512:12;8474:52;8545:51;8588:7;8577:8;8566:9;8562:24;8545:51;:::i;:::-;8535:61;;;8646:2;8635:9;8631:18;8618:32;8659:31;8684:5;8659:31;:::i;:::-;8709:5;-1:-1:-1;8767:2:75;8752:18;;8739:32;-1:-1:-1;;;;;8783:32:75;;8780:52;;;8828:1;8825;8818:12;8780:52;8851:72;8915:7;8904:8;8893:9;8889:24;8851:72;:::i;:::-;8841:82;;;8002:927;;;;;;;:::o;8934:388::-;9002:6;9010;9063:2;9051:9;9042:7;9038:23;9034:32;9031:52;;;9079:1;9076;9069:12;9031:52;9118:9;9105:23;9137:31;9162:5;9137:31;:::i;:::-;9187:5;-1:-1:-1;9244:2:75;9229:18;;9216:32;9257:33;9216:32;9257:33;:::i;9327:184::-;9397:6;9450:2;9438:9;9429:7;9425:23;9421:32;9418:52;;;9466:1;9463;9456:12;9418:52;-1:-1:-1;9489:16:75;;9327:184;-1:-1:-1;9327:184:75:o;9516:380::-;9595:1;9591:12;;;;9638;;;9659:61;;9713:4;9705:6;9701:17;9691:27;;9659:61;9766:2;9758:6;9755:14;9735:18;9732:38;9729:161;;9812:10;9807:3;9803:20;9800:1;9793:31;9847:4;9844:1;9837:15;9875:4;9872:1;9865:15;9901:127;9962:10;9957:3;9953:20;9950:1;9943:31;9993:4;9990:1;9983:15;10017:4;10014:1;10007:15;10033:148;10121:4;10100:12;;;10114;;;10096:31;;10139:13;;10136:39;;;10155:18;;:::i;10186:164::-;10262:13;;10311;;10304:21;10294:32;;10284:60;;10340:1;10337;10330:12;10284:60;10186:164;;;:::o;10355:202::-;10422:6;10475:2;10463:9;10454:7;10450:23;10446:32;10443:52;;;10491:1;10488;10481:12;10443:52;10514:37;10541:9;10514:37;:::i;10562:503::-;10646:6;10654;10662;10715:2;10703:9;10694:7;10690:23;10686:32;10683:52;;;10731:1;10728;10721:12;10683:52;10763:9;10757:16;10782:31;10807:5;10782:31;:::i;:::-;10882:2;10867:18;;10861:25;10832:5;;-1:-1:-1;;;;;;10917:32:75;;10905:45;;10895:73;;10964:1;10961;10954:12;10895:73;10987:7;-1:-1:-1;11013:46:75;11055:2;11040:18;;11013:46;:::i;:::-;11003:56;;10562:503;;;;;:::o;11456:332::-;11527:47;11570:3;11562:5;11556:12;11527:47;:::i;:::-;11623:4;11616:5;11612:16;11606:23;11599:4;11594:3;11590:14;11583:47;11509:3;11676:4;11669:5;11665:16;11659:23;11714:4;11707;11702:3;11698:14;11691:28;11735:47;11776:4;11771:3;11767:14;11753:12;11735:47;:::i;11793:612::-;12096:3;12085:9;12078:22;12059:4;12117:57;12169:3;12158:9;12154:19;12146:6;12117:57;:::i;:::-;-1:-1:-1;;;;;12210:32:75;;;12205:2;12190:18;;12183:60;12279:32;;;;12274:2;12259:18;;12252:60;12343:2;12328:18;;12321:34;;;;12386:3;12371:19;;;12364:35;12109:65;11793:612;-1:-1:-1;;11793:612:75:o;12410:345::-;-1:-1:-1;;;;;12630:32:75;;;;12612:51;;12694:2;12679:18;;12672:34;;;;12737:2;12722:18;;12715:34;12600:2;12585:18;;12410:345::o;12760:111::-;12845:1;12838:5;12835:12;12825:40;;12861:1;12858;12851:12;12876:882;12982:9;13041:4;13033:5;13017:14;13013:26;13009:37;13006:57;;;13059:1;13056;13049:12;13006:57;13112:2;13106:9;13154:4;13142:17;;-1:-1:-1;;;;;13174:34:75;;13210:22;;;13171:62;13168:88;;;13236:18;;:::i;:::-;13272:2;13265:22;13311:19;;13339:43;13311:19;13339:43;:::i;:::-;13391:23;;13483:2;13472:14;;;13459:28;13503:15;;;13496:32;13575:2;13564:14;;13551:28;-1:-1:-1;;;;;13591:30:75;;13588:50;;;13634:1;13631;13624:12;13588:50;13671:52;13708:14;13699:6;13692:5;13688:18;13671:52;:::i;:::-;13666:2;13654:15;;13647:77;-1:-1:-1;13658:6:75;12876:882;-1:-1:-1;;12876:882:75:o;13763:273::-;13954:2;13943:9;13936:21;13917:4;13974:56;14026:2;14015:9;14011:18;14003:6;13974:56;:::i;14166:1014::-;14228:3;14274:5;14261:19;14289:43;14324:7;14289:43;:::i;:::-;14341:42;14379:3;14370:7;14341:42;:::i;:::-;-1:-1:-1;14452:4:75;14441:16;;;14428:30;14474:14;;;14467:31;14557:4;14546:16;;14533:30;14614:14;14610:26;;;-1:-1:-1;;14606:40:75;14582:65;;14572:93;;14661:1;14658;14651:12;14572:93;14689:30;;14800:4;14787:18;;;14742:21;-1:-1:-1;;;;;14817:30:75;;14814:50;;;14860:1;14857;14850:12;14814:50;14909:6;14893:14;14889:27;14880:7;14876:41;14873:61;;;14930:1;14927;14920:12;14873:61;14966:4;14959;14954:3;14950:14;14943:28;15003:6;14996:4;14991:3;14987:14;14980:30;15056:6;15047:7;15041:3;15036;15032:13;15019:44;15107:1;15101:3;15092:6;15087:3;15083:16;15079:26;15072:37;15170:3;15163:2;15159:7;15154:2;15146:6;15142:15;15138:29;15133:3;15129:39;15125:49;15118:56;;;;14166:1014;;;;:::o;15185:1383::-;15449:2;15438:9;15431:21;15461:74;15531:2;15520:9;15516:18;15509:4;15500:6;15494:13;15490:24;15461:74;:::i;:::-;15591:4;15583:6;15579:17;15573:24;15566:4;15555:9;15551:20;15544:54;15412:4;15639;15631:6;15627:17;15681:4;15675:3;15664:9;15660:19;15653:33;15706:1;15739:12;15733:19;15775:36;15801:9;15775:36;:::i;:::-;15848:6;15842:3;15831:9;15827:19;15820:35;15886:4;15875:9;15871:20;15905:1;15900:160;;;;16074:1;16069:368;;;;15864:573;;15900:160;15968:3;15964:8;15953:9;15949:24;15943:3;15932:9;15928:19;15921:53;16046:3;16034:6;16027:14;16020:22;16017:1;16013:30;16002:9;15998:46;15994:56;15987:63;;15900:160;;16069:368;16100:12;16097:1;16090:23;16154:4;16151:1;16141:18;16181:1;16195:185;16209:6;16206:1;16203:13;16195:185;;;16305:14;;16280:17;;;16299:3;16276:27;16269:51;16361:4;16348:18;;;;16231:4;16224:12;16195:185;;;16404:17;;16423:3;16400:27;;-1:-1:-1;;15864:573:75;;;;16484:9;16479:3;16475:19;16468:4;16457:9;16453:20;16446:49;16512:50;16558:3;16550:6;16512:50;:::i;:::-;16504:58;15185:1383;-1:-1:-1;;;;;;15185:1383:75:o;16573:517::-;16674:2;16669:3;16666:11;16663:421;;;16710:5;16707:1;16700:16;16754:4;16751:1;16741:18;16824:2;16812:10;16808:19;16805:1;16801:27;16795:4;16791:38;16860:4;16848:10;16845:20;16842:47;;;-1:-1:-1;16883:4:75;16842:47;16938:2;16933:3;16929:12;16926:1;16922:20;16916:4;16912:31;16902:41;;16993:81;17011:2;17004:5;17001:13;16993:81;;;17070:1;17056:16;;17037:1;17026:13;16993:81;;17266:1178;-1:-1:-1;;;;;17367:3:75;17364:27;17361:53;;;17394:18;;:::i;:::-;17423:93;17512:3;17472:38;17504:4;17498:11;17472:38;:::i;:::-;17466:4;17423:93;:::i;:::-;17542:1;17567:2;17562:3;17559:11;17584:1;17579:607;;;;18230:1;18247:3;18244:93;;;-1:-1:-1;18303:19:75;;;18290:33;18244:93;-1:-1:-1;;17223:1:75;17219:11;;;17215:24;17211:29;17201:40;17247:1;17243:11;;;17198:57;18350:78;;17552:886;;17579:607;14113:1;14106:14;;;14150:4;14137:18;;-1:-1:-1;;17615:17:75;;;17729:229;17743:7;17740:1;17737:14;17729:229;;;17832:19;;;17819:33;17804:49;;17939:4;17924:20;;;;17892:1;17880:14;;;;17759:12;17729:229;;;17733:3;17986;17977:7;17974:16;17971:159;;;18110:1;18106:6;18100:3;18094;18091:1;18087:11;18083:21;18079:34;18075:39;18062:9;18057:3;18053:19;18040:33;18036:79;18028:6;18021:95;17971:159;;;18173:1;18167:3;18164:1;18160:11;18156:19;18150:4;18143:33;17552:886;;17266:1178;;;:::o;18449:1065::-;18619:5;18606:19;18634:43;18669:7;18634:43;:::i;:::-;18708:1;18699:7;18696:14;18686:145;;18753:10;18748:3;18744:20;18741:1;18734:31;18788:4;18785:1;18778:15;18816:4;18813:1;18806:15;18686:145;18876:3;18872:8;18865:4;18859:11;18855:26;18928:3;18919:7;18915:17;18906:7;18903:30;18897:4;18890:44;;;18988:2;18981:5;18977:14;18964:28;18960:1;18954:4;18950:12;18943:50;19052:2;19045:5;19041:14;19028:28;19135:2;19131:7;19123:5;19107:14;19103:26;19099:40;19079:18;19075:65;19065:93;;19154:1;19151;19144:12;19065:93;19179:30;;19232:18;;-1:-1:-1;;;;;19262:30:75;;19259:50;;;19305:1;19302;19295:12;19259:50;19342:2;19336:4;19332:13;19318:27;;19389:6;19373:14;19369:27;19361:6;19357:40;19354:60;;;19410:1;19407;19400:12;19354:60;19423:85;19501:6;19493;19489:1;19483:4;19479:12;19423:85;:::i;19733:125::-;19798:9;;;19819:10;;;19816:36;;;19832:18;;:::i;19863:375::-;19951:1;19969:5;19983:249;20004:1;19994:8;19991:15;19983:249;;;20054:4;20049:3;20045:14;20039:4;20036:24;20033:50;;;20063:18;;:::i;:::-;20113:1;20103:8;20099:16;20096:49;;;20127:16;;;;20096:49;20210:1;20206:16;;;;;20166:15;;19983:249;;;19863:375;;;;;;:::o;20243:902::-;20292:5;20322:8;20312:80;;-1:-1:-1;20363:1:75;20377:5;;20312:80;20411:4;20401:76;;-1:-1:-1;20448:1:75;20462:5;;20401:76;20493:4;20511:1;20506:59;;;;20579:1;20574:174;;;;20486:262;;20506:59;20536:1;20527:10;;20550:5;;;20574:174;20611:3;20601:8;20598:17;20595:43;;;20618:18;;:::i;:::-;-1:-1:-1;;20674:1:75;20660:16;;20733:5;;20486:262;;20832:2;20822:8;20819:16;20813:3;20807:4;20804:13;20800:36;20794:2;20784:8;20781:16;20776:2;20770:4;20767:12;20763:35;20760:77;20757:203;;;-1:-1:-1;20869:19:75;;;20945:5;;20757:203;20992:42;-1:-1:-1;;21017:8:75;21011:4;20992:42;:::i;:::-;21070:6;21066:1;21062:6;21058:19;21049:7;21046:32;21043:58;;;21081:18;;:::i;:::-;21119:20;;20243:902;-1:-1:-1;;;20243:902:75:o;21150:140::-;21208:5;21237:47;21278:4;21268:8;21264:19;21258:4;21237:47;:::i;21763:251::-;21833:6;21886:2;21874:9;21865:7;21861:23;21857:32;21854:52;;;21902:1;21899;21892:12;21854:52;21934:9;21928:16;21953:31;21978:5;21953:31;:::i;22019:127::-;22080:10;22075:3;22071:20;22068:1;22061:31;22111:4;22108:1;22101:15;22135:4;22132:1;22125:15;22683:254;22713:1;22747:4;22744:1;22740:12;22771:3;22761:134;;22817:10;22812:3;22808:20;22805:1;22798:31;22852:4;22849:1;22842:15;22880:4;22877:1;22870:15;22761:134;22927:3;22920:4;22917:1;22913:12;22909:22;22904:27;;;22683:254;;;;:::o;22942:301::-;23071:3;23109:6;23103:13;23155:6;23148:4;23140:6;23136:17;23131:3;23125:37;23217:1;23181:16;;23206:13;;;-1:-1:-1;23181:16:75;22942:301;-1:-1:-1;22942:301:75:o;23624:1297::-;23750:3;23744:10;-1:-1:-1;;;;;23769:6:75;23766:30;23763:56;;;23799:18;;:::i;:::-;23828:96;23917:6;23877:38;23909:4;23903:11;23877:38;:::i;:::-;23871:4;23828:96;:::i;:::-;23973:4;24004:2;23993:14;;24021:1;24016:648;;;;24708:1;24725:6;24722:89;;;-1:-1:-1;24777:19:75;;;24771:26;24722:89;-1:-1:-1;;17223:1:75;17219:11;;;17215:24;17211:29;17201:40;17247:1;17243:11;;;17198:57;24824:81;;23986:929;;24016:648;14113:1;14106:14;;;14150:4;14137:18;;-1:-1:-1;;24052:20:75;;;24169:222;24183:7;24180:1;24177:14;24169:222;;;24265:19;;;24259:26;24244:42;;24372:4;24357:20;;;;24325:1;24313:14;;;;24199:12;24169:222;;;24173:3;24419:6;24410:7;24407:19;24404:201;;;24480:19;;;24474:26;-1:-1:-1;;24563:1:75;24559:14;;;24575:3;24555:24;24551:37;24547:42;24532:58;24517:74;;24404:201;-1:-1:-1;;;;24651:1:75;24635:14;;;24631:22;24618:36;;-1:-1:-1;23624:1297:75:o"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GUARDIAN_ROLE()":"24ea54f4","HARVEST_ROLE()":"fbb12d07","LP_ROLE()":"e1d39450","SWAP_ADMIN_ROLE()":"1389c029","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","getRoleAdmin(bytes32)":"248a9ca3","getSwapConfig()":"0b2ce411","grantRole(bytes32,address)":"2f2ff15d","harvestRewards(uint256)":"57126d0d","hasRole(bytes32,address)":"91d14854","initialize(string,string,address,(uint8,uint256,bytes))":"c2f09e2b","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","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setRoleAdmin(bytes32,bytes32)":"1e4e0091","setSwapConfig((uint8,uint256,bytes))":"b740a83f","supportsInterface(bytes4)":"01ffc9a7","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.28+commit.7893614a\"},\"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\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"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\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HARVEST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LP_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"harvestRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"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\":\"swapConfig_\",\"type\":\"tuple\"}],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"adminRole\",\"type\":\"bytes32\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"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\":\"swapConfig_\",\"type\":\"tuple\"}],\"name\":\"setSwapConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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 into CompoundV3 on each deposit/withdraw. Also, has a method to claim the rewards,      swap them, and reinvests the result into CompoundV3.      Entering or exiting the vault is permissioned, requires LP_ROLE.      Use it at your own risk, this is a proof of concept, but it's not used by the authors, we prefer using the      pluggable strategies (See {CompoundV3InvestStrategy})\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(string,string,address,(uint8,uint256,bytes))\":{\"details\":\"Initializes the CompoundV3ERC4626\"},\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"}},\"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\"},\"_cToken\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"},\"_rewardsManager\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"title\":\"CompoundV3ERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CompoundV3ERC4626.sol\":\"CompoundV3ERC4626\"},\"evmVersion\":\"cancun\",\"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-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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/CompoundV3ERC4626.sol\":{\"keccak256\":\"0x61e9166e093094b8194663b5065e7b9bcd408f85a5827524bbc70c27a64129a9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a6db5944cad6fdce047f3176cf61d78dfb32ac97508477650744f77d545492d0\",\"dweb:/ipfs/QmXwRhYxWNLEKep25pBckV7QXA3BEubdD8dUYchLXDtosE\"]},\"contracts/PermissionedERC4626.sol\":{\"keccak256\":\"0x2760466f73e34bf00a2710b08a47a9ca11d36ef8e965cc2a973613da91cffd21\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d05b8b13e64ea02b37f91980a0496e04e6d50a27fd0b708dc9a785d51732c15\",\"dweb:/ipfs/QmQjNATyUL5tuheXexHwZf4bZKDNp57GkcLth9xXxg1xes\"]},\"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\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":14363,"contract":"contracts/CompoundV3ERC4626.sol:CompoundV3ERC4626","label":"_swapConfig","offset":0,"slot":"0","type":"t_struct(SwapConfig)624_storage"},{"astId":14775,"contract":"contracts/CompoundV3ERC4626.sol:CompoundV3ERC4626","label":"__gap","offset":0,"slot":"3","type":"t_array(t_uint256)47_storage"}],"types":{"t_array(t_uint256)47_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_enum(SwapProtocol)616":{"encoding":"inplace","label":"enum SwapLibrary.SwapProtocol","numberOfBytes":"1"},"t_struct(SwapConfig)624_storage":{"encoding":"inplace","label":"struct SwapLibrary.SwapConfig","members":[{"astId":619,"contract":"contracts/CompoundV3ERC4626.sol:CompoundV3ERC4626","label":"protocol","offset":0,"slot":"0","type":"t_enum(SwapProtocol)616"},{"astId":621,"contract":"contracts/CompoundV3ERC4626.sol:CompoundV3ERC4626","label":"maxSlippage","offset":0,"slot":"1","type":"t_uint256"},{"astId":623,"contract":"contracts/CompoundV3ERC4626.sol:CompoundV3ERC4626","label":"customParams","offset":0,"slot":"2","type":"t_bytes_storage"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}}},"contracts/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":{"@_14904":{"entryPoint":null,"id":14904,"parameterSlots":2,"returnSlots":0},"@makeStorageSlot_15720":{"entryPoint":null,"id":15720,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":375,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ICompoundV3_$22274t_contract$_ICometRewards_$22236_fromMemory":{"entryPoint":319,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__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:75","nodeType":"YulBlock","src":"0:1373:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"72:86:75","nodeType":"YulBlock","src":"72:86:75","statements":[{"body":{"nativeSrc":"136:16:75","nodeType":"YulBlock","src":"136:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"145:1:75","nodeType":"YulLiteral","src":"145:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"148:1:75","nodeType":"YulLiteral","src":"148:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"138:6:75","nodeType":"YulIdentifier","src":"138:6:75"},"nativeSrc":"138:12:75","nodeType":"YulFunctionCall","src":"138:12:75"},"nativeSrc":"138:12:75","nodeType":"YulExpressionStatement","src":"138:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"95:5:75","nodeType":"YulIdentifier","src":"95:5:75"},{"arguments":[{"name":"value","nativeSrc":"106:5:75","nodeType":"YulIdentifier","src":"106:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"121:3:75","nodeType":"YulLiteral","src":"121:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"126:1:75","nodeType":"YulLiteral","src":"126:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"117:3:75","nodeType":"YulIdentifier","src":"117:3:75"},"nativeSrc":"117:11:75","nodeType":"YulFunctionCall","src":"117:11:75"},{"kind":"number","nativeSrc":"130:1:75","nodeType":"YulLiteral","src":"130:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"113:3:75","nodeType":"YulIdentifier","src":"113:3:75"},"nativeSrc":"113:19:75","nodeType":"YulFunctionCall","src":"113:19:75"}],"functionName":{"name":"and","nativeSrc":"102:3:75","nodeType":"YulIdentifier","src":"102:3:75"},"nativeSrc":"102:31:75","nodeType":"YulFunctionCall","src":"102:31:75"}],"functionName":{"name":"eq","nativeSrc":"92:2:75","nodeType":"YulIdentifier","src":"92:2:75"},"nativeSrc":"92:42:75","nodeType":"YulFunctionCall","src":"92:42:75"}],"functionName":{"name":"iszero","nativeSrc":"85:6:75","nodeType":"YulIdentifier","src":"85:6:75"},"nativeSrc":"85:50:75","nodeType":"YulFunctionCall","src":"85:50:75"},"nativeSrc":"82:70:75","nodeType":"YulIf","src":"82:70:75"}]},"name":"validator_revert_contract_ICompoundV3","nativeSrc":"14:144:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"61:5:75","nodeType":"YulTypedName","src":"61:5:75","type":""}],"src":"14:144:75"},{"body":{"nativeSrc":"305:313:75","nodeType":"YulBlock","src":"305:313:75","statements":[{"body":{"nativeSrc":"351:16:75","nodeType":"YulBlock","src":"351:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"360:1:75","nodeType":"YulLiteral","src":"360:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"363:1:75","nodeType":"YulLiteral","src":"363:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"353:6:75","nodeType":"YulIdentifier","src":"353:6:75"},"nativeSrc":"353:12:75","nodeType":"YulFunctionCall","src":"353:12:75"},"nativeSrc":"353:12:75","nodeType":"YulExpressionStatement","src":"353:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"326:7:75","nodeType":"YulIdentifier","src":"326:7:75"},{"name":"headStart","nativeSrc":"335:9:75","nodeType":"YulIdentifier","src":"335:9:75"}],"functionName":{"name":"sub","nativeSrc":"322:3:75","nodeType":"YulIdentifier","src":"322:3:75"},"nativeSrc":"322:23:75","nodeType":"YulFunctionCall","src":"322:23:75"},{"kind":"number","nativeSrc":"347:2:75","nodeType":"YulLiteral","src":"347:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"318:3:75","nodeType":"YulIdentifier","src":"318:3:75"},"nativeSrc":"318:32:75","nodeType":"YulFunctionCall","src":"318:32:75"},"nativeSrc":"315:52:75","nodeType":"YulIf","src":"315:52:75"},{"nativeSrc":"376:29:75","nodeType":"YulVariableDeclaration","src":"376:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"395:9:75","nodeType":"YulIdentifier","src":"395:9:75"}],"functionName":{"name":"mload","nativeSrc":"389:5:75","nodeType":"YulIdentifier","src":"389:5:75"},"nativeSrc":"389:16:75","nodeType":"YulFunctionCall","src":"389:16:75"},"variables":[{"name":"value","nativeSrc":"380:5:75","nodeType":"YulTypedName","src":"380:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"452:5:75","nodeType":"YulIdentifier","src":"452:5:75"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"414:37:75","nodeType":"YulIdentifier","src":"414:37:75"},"nativeSrc":"414:44:75","nodeType":"YulFunctionCall","src":"414:44:75"},"nativeSrc":"414:44:75","nodeType":"YulExpressionStatement","src":"414:44:75"},{"nativeSrc":"467:15:75","nodeType":"YulAssignment","src":"467:15:75","value":{"name":"value","nativeSrc":"477:5:75","nodeType":"YulIdentifier","src":"477:5:75"},"variableNames":[{"name":"value0","nativeSrc":"467:6:75","nodeType":"YulIdentifier","src":"467:6:75"}]},{"nativeSrc":"491:40:75","nodeType":"YulVariableDeclaration","src":"491:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"516:9:75","nodeType":"YulIdentifier","src":"516:9:75"},{"kind":"number","nativeSrc":"527:2:75","nodeType":"YulLiteral","src":"527:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"512:3:75","nodeType":"YulIdentifier","src":"512:3:75"},"nativeSrc":"512:18:75","nodeType":"YulFunctionCall","src":"512:18:75"}],"functionName":{"name":"mload","nativeSrc":"506:5:75","nodeType":"YulIdentifier","src":"506:5:75"},"nativeSrc":"506:25:75","nodeType":"YulFunctionCall","src":"506:25:75"},"variables":[{"name":"value_1","nativeSrc":"495:7:75","nodeType":"YulTypedName","src":"495:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"578:7:75","nodeType":"YulIdentifier","src":"578:7:75"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"540:37:75","nodeType":"YulIdentifier","src":"540:37:75"},"nativeSrc":"540:46:75","nodeType":"YulFunctionCall","src":"540:46:75"},"nativeSrc":"540:46:75","nodeType":"YulExpressionStatement","src":"540:46:75"},{"nativeSrc":"595:17:75","nodeType":"YulAssignment","src":"595:17:75","value":{"name":"value_1","nativeSrc":"605:7:75","nodeType":"YulIdentifier","src":"605:7:75"},"variableNames":[{"name":"value1","nativeSrc":"595:6:75","nodeType":"YulIdentifier","src":"595:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_ICompoundV3_$22274t_contract$_ICometRewards_$22236_fromMemory","nativeSrc":"163:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"263:9:75","nodeType":"YulTypedName","src":"263:9:75","type":""},{"name":"dataEnd","nativeSrc":"274:7:75","nodeType":"YulTypedName","src":"274:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"286:6:75","nodeType":"YulTypedName","src":"286:6:75","type":""},{"name":"value1","nativeSrc":"294:6:75","nodeType":"YulTypedName","src":"294:6:75","type":""}],"src":"163:455:75"},{"body":{"nativeSrc":"704:183:75","nodeType":"YulBlock","src":"704:183:75","statements":[{"body":{"nativeSrc":"750:16:75","nodeType":"YulBlock","src":"750:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"759:1:75","nodeType":"YulLiteral","src":"759:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"762:1:75","nodeType":"YulLiteral","src":"762:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"752:6:75","nodeType":"YulIdentifier","src":"752:6:75"},"nativeSrc":"752:12:75","nodeType":"YulFunctionCall","src":"752:12:75"},"nativeSrc":"752:12:75","nodeType":"YulExpressionStatement","src":"752:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"725:7:75","nodeType":"YulIdentifier","src":"725:7:75"},{"name":"headStart","nativeSrc":"734:9:75","nodeType":"YulIdentifier","src":"734:9:75"}],"functionName":{"name":"sub","nativeSrc":"721:3:75","nodeType":"YulIdentifier","src":"721:3:75"},"nativeSrc":"721:23:75","nodeType":"YulFunctionCall","src":"721:23:75"},{"kind":"number","nativeSrc":"746:2:75","nodeType":"YulLiteral","src":"746:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"717:3:75","nodeType":"YulIdentifier","src":"717:3:75"},"nativeSrc":"717:32:75","nodeType":"YulFunctionCall","src":"717:32:75"},"nativeSrc":"714:52:75","nodeType":"YulIf","src":"714:52:75"},{"nativeSrc":"775:29:75","nodeType":"YulVariableDeclaration","src":"775:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"794:9:75","nodeType":"YulIdentifier","src":"794:9:75"}],"functionName":{"name":"mload","nativeSrc":"788:5:75","nodeType":"YulIdentifier","src":"788:5:75"},"nativeSrc":"788:16:75","nodeType":"YulFunctionCall","src":"788:16:75"},"variables":[{"name":"value","nativeSrc":"779:5:75","nodeType":"YulTypedName","src":"779:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"851:5:75","nodeType":"YulIdentifier","src":"851:5:75"}],"functionName":{"name":"validator_revert_contract_ICompoundV3","nativeSrc":"813:37:75","nodeType":"YulIdentifier","src":"813:37:75"},"nativeSrc":"813:44:75","nodeType":"YulFunctionCall","src":"813:44:75"},"nativeSrc":"813:44:75","nodeType":"YulExpressionStatement","src":"813:44:75"},{"nativeSrc":"866:15:75","nodeType":"YulAssignment","src":"866:15:75","value":{"name":"value","nativeSrc":"876:5:75","nodeType":"YulIdentifier","src":"876:5:75"},"variableNames":[{"name":"value0","nativeSrc":"866:6:75","nodeType":"YulIdentifier","src":"866:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"623:264:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"670:9:75","nodeType":"YulTypedName","src":"670:9:75","type":""},{"name":"dataEnd","nativeSrc":"681:7:75","nodeType":"YulTypedName","src":"681:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"693:6:75","nodeType":"YulTypedName","src":"693:6:75","type":""}],"src":"623:264:75"},{"body":{"nativeSrc":"1119:252:75","nodeType":"YulBlock","src":"1119:252:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1136:9:75","nodeType":"YulIdentifier","src":"1136:9:75"},{"kind":"number","nativeSrc":"1147:2:75","nodeType":"YulLiteral","src":"1147:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1129:6:75","nodeType":"YulIdentifier","src":"1129:6:75"},"nativeSrc":"1129:21:75","nodeType":"YulFunctionCall","src":"1129:21:75"},"nativeSrc":"1129:21:75","nodeType":"YulExpressionStatement","src":"1129:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1170:9:75","nodeType":"YulIdentifier","src":"1170:9:75"},{"kind":"number","nativeSrc":"1181:2:75","nodeType":"YulLiteral","src":"1181:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1166:3:75","nodeType":"YulIdentifier","src":"1166:3:75"},"nativeSrc":"1166:18:75","nodeType":"YulFunctionCall","src":"1166:18:75"},{"kind":"number","nativeSrc":"1186:2:75","nodeType":"YulLiteral","src":"1186:2:75","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1159:6:75","nodeType":"YulIdentifier","src":"1159:6:75"},"nativeSrc":"1159:30:75","nodeType":"YulFunctionCall","src":"1159:30:75"},"nativeSrc":"1159:30:75","nodeType":"YulExpressionStatement","src":"1159:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1209:9:75","nodeType":"YulIdentifier","src":"1209:9:75"},{"kind":"number","nativeSrc":"1220:2:75","nodeType":"YulLiteral","src":"1220:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1205:3:75","nodeType":"YulIdentifier","src":"1205:3:75"},"nativeSrc":"1205:18:75","nodeType":"YulFunctionCall","src":"1205:18:75"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1225:32:75","nodeType":"YulLiteral","src":"1225:32:75","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1198:6:75","nodeType":"YulIdentifier","src":"1198:6:75"},"nativeSrc":"1198:60:75","nodeType":"YulFunctionCall","src":"1198:60:75"},"nativeSrc":"1198:60:75","nodeType":"YulExpressionStatement","src":"1198:60:75"},{"nativeSrc":"1267:27:75","nodeType":"YulAssignment","src":"1267:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1279:9:75","nodeType":"YulIdentifier","src":"1279:9:75"},{"kind":"number","nativeSrc":"1290:3:75","nodeType":"YulLiteral","src":"1290:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1275:3:75","nodeType":"YulIdentifier","src":"1275:3:75"},"nativeSrc":"1275:19:75","nodeType":"YulFunctionCall","src":"1275:19:75"},"variableNames":[{"name":"tail","nativeSrc":"1267:4:75","nodeType":"YulIdentifier","src":"1267:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1314:9:75","nodeType":"YulIdentifier","src":"1314:9:75"},{"kind":"number","nativeSrc":"1325:4:75","nodeType":"YulLiteral","src":"1325:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1310:3:75","nodeType":"YulIdentifier","src":"1310:3:75"},"nativeSrc":"1310:20:75","nodeType":"YulFunctionCall","src":"1310:20:75"},{"arguments":[{"name":"value0","nativeSrc":"1336:6:75","nodeType":"YulIdentifier","src":"1336:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1352:3:75","nodeType":"YulLiteral","src":"1352:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1357:1:75","nodeType":"YulLiteral","src":"1357:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1348:3:75","nodeType":"YulIdentifier","src":"1348:3:75"},"nativeSrc":"1348:11:75","nodeType":"YulFunctionCall","src":"1348:11:75"},{"kind":"number","nativeSrc":"1361:1:75","nodeType":"YulLiteral","src":"1361:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1344:3:75","nodeType":"YulIdentifier","src":"1344:3:75"},"nativeSrc":"1344:19:75","nodeType":"YulFunctionCall","src":"1344:19:75"}],"functionName":{"name":"and","nativeSrc":"1332:3:75","nodeType":"YulIdentifier","src":"1332:3:75"},"nativeSrc":"1332:32:75","nodeType":"YulFunctionCall","src":"1332:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1303:6:75","nodeType":"YulIdentifier","src":"1303:6:75"},"nativeSrc":"1303:62:75","nodeType":"YulFunctionCall","src":"1303:62:75"},"nativeSrc":"1303:62:75","nodeType":"YulExpressionStatement","src":"1303:62:75"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"892:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1088:9:75","nodeType":"YulTypedName","src":"1088:9:75","type":""},{"name":"value0","nativeSrc":"1099:6:75","nodeType":"YulTypedName","src":"1099:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1110:4:75","nodeType":"YulTypedName","src":"1110:4:75","type":""}],"src":"892:479:75"}]},"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_$22274t_contract$_ICometRewards_$22236_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_$22374__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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":3521},{"length":20,"start":3989}]}},"object":"3060808181526040610140818152601e610180527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101a052610160939093526101208290526101c09052902060a05234801561005a575f5ffd5b506040516118103803806118108339810160408190526100799161013f565b6001600160a01b0381166100a05760405163a74363cd60e01b815260040160405180910390fd5b6001600160a01b0380831660c081905290821660e0526040805163c55dae6360e01b8152905163c55dae63916004808201926020929091908290030181865afa1580156100ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101139190610177565b6001600160a01b031661010052506101999050565b6001600160a01b038116811461013c575f5ffd5b50565b5f5f60408385031215610150575f5ffd5b825161015b81610128565b602084015190925061016c81610128565b809150509250929050565b5f60208284031215610187575f5ffd5b815161019281610128565b9392505050565b60805160a05160c05160e051610100516115996102775f395f81816101740152818161033c01528181610b6e01528181610e630152610ee501525f81816105be015281816108e301526109b201525f818161036b015281816103c9015281816104e80152818161058e0152818161073d015281816107e601528181610871015281816108b90152818161097d01528181610e340152610f1401525f818161014101528181610a0f01528181610c5f0152610dee01525f8181610206015281816102e60152818161048f0152818161067501526106f201526115995ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80635b9a4c351161006e5780635b9a4c351461013c5780639c4667a2146101635780639cd47128146101ae578063b6b55f25146101c1578063ce96cb77146101d4578063f3e0ffbf146101e7575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e857806342b054f0146101095780635a11745614610129575b5f5ffd5b6100bd6100b836600461102a565b6101fa565b6040516100ca91906110aa565b60405180910390f35b6100e66100e13660046110bc565b6102dc565b005b6100fb6100f63660046110e7565b6103c6565b6040519081526020016100ca565b61011c6101173660046110e7565b61045b565b6040516100ca9190611164565b6100e6610137366004611183565b610485565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101713660046110e7565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e66101bc36600461119e565b61066b565b6100e66101cf3660046110bc565b6106e8565b6100fb6101e23660046110e7565b61073a565b6100fb6101f53660046110e7565b610850565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361024557604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600181111561025b5761025b611102565b90505f81600181111561027057610270611102565b0361029b575f8380602001905181019061028a91906111d0565b9050610295816108a2565b506102c6565b60018160018111156102af576102af611102565b036100a6576102c66102c030610c35565b84610cf7565b505060408051602081019091525f815292915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032557604051632abf118b60e21b815260040160405180910390fd5b60405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f3fef3a3906044015b5f604051808303815f87803b1580156103ad575f5ffd5b505af11580156103bf573d5f5f3e3d5ffd5b5050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610423573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044791906111e7565b1561045357505f919050565b505f19919050565b60408051606080820183525f80835260208301529181019190915261047f82610c35565b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ce57604051632abf118b60e21b815260040160405180910390fd5b80610668576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610535573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055991906111d0565b15610577576040516342a176d160e11b815260040160405180910390fd5b6040516320f0656b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906341e0cad69060440160408051808303815f875af1158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190611202565b80519091506001600160a01b0316158015906106485750602081015115155b15610666576040516342a176d160e11b815260040160405180910390fd5b505b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b457604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261066890805f81526020015f815260200160405180602001604052805f81525081525082610cf7565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361073157604051632abf118b60e21b815260040160405180910390fd5b61066881610e1d565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb91906111e7565b156107c757505f919050565b6040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561082c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f91906111d0565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610811565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af115801561092b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f919061125a565b50909150506001600160a01b038116610966575050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b1580156109f3575f5ffd5b505af1158015610a05573d5f5f3e3d5ffd5b505050505f610a317f000000000000000000000000000000000000000000000000000000000000000090565b8054610a3c906112b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a68906112b0565b8015610ab35780601f10610a8a57610100808354040283529160200191610ab3565b820191905f5260205f20905b815481529060010190602001808311610a9657829003601f168201915b5050505050806020019051810190610acb9190611335565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3691906111d0565b604051637756691560e01b81529091505f9073__$acbb9ece542dcf2065f41aa3c8cca5827e$__90637756691590610b9a90869088907f00000000000000000000000000000000000000000000000000000000000000009088908c906004016113c1565b602060405180830381865af4158015610bb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd991906111d0565b9050610be481610e1d565b604080516001600160a01b0386168152602081018490529081018290527fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259060600160405180910390a15050505050565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cda9190810190611400565b905080806020019051810190610cf09190611335565b9392505050565b5f81806020019051810190610d0c9190611335565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610d46908490600401611164565b5f6040518083038186803b158015610d5c575f5ffd5b505af4158015610d6e573d5f5f3e3d5ffd5b50505050815181604051602001610d859190611164565b6040516020818303038152906040525114610db3576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610de4929190611432565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610e1783826114a8565b50505050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610ea9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd91906111e7565b50604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401610396565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610f7a57610f7a610f43565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa957610fa9610f43565b604052919050565b5f67ffffffffffffffff821115610fca57610fca610f43565b50601f01601f191660200190565b5f82601f830112610fe7575f5ffd5b8135610ffa610ff582610fb1565b610f80565b81815284602083860101111561100e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561103b575f5ffd5b823560ff8116811461104b575f5ffd5b9150602083013567ffffffffffffffff811115611066575f5ffd5b61107285828601610fd8565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cf0602083018461107c565b5f602082840312156110cc575f5ffd5b5035919050565b6001600160a01b0381168114610668575f5ffd5b5f602082840312156110f7575f5ffd5b8135610cf0816110d3565b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061113557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261115c606085018261107c565b949350505050565b602081525f610cf06020830184611116565b8015158114610668575f5ffd5b5f60208284031215611193575f5ffd5b8135610cf081611176565b5f602082840312156111ae575f5ffd5b813567ffffffffffffffff8111156111c4575f5ffd5b61115c84828501610fd8565b5f602082840312156111e0575f5ffd5b5051919050565b5f602082840312156111f7575f5ffd5b8151610cf081611176565b5f6040828403128015611213575f5ffd5b506040805190810167ffffffffffffffff8111828210171561123757611237610f43565b6040528251611245816110d3565b81526020928301519281019290925250919050565b5f5f5f6060848603121561126c575f5ffd5b8351611277816110d3565b602085015190935067ffffffffffffffff81168114611294575f5ffd5b60408501519092506112a581611176565b809150509250925092565b600181811c908216806112c457607f821691505b6020821081036112e257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f8301126112f7575f5ffd5b8151611305610ff582610fb1565b818152846020838601011115611319575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611345575f5ffd5b815167ffffffffffffffff81111561135b575f5ffd5b82016060818503121561136c575f5ffd5b611374610f57565b815160038110611382575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156113a7575f5ffd5b6113b3868285016112e8565b604083015250949350505050565b60a081525f6113d360a0830188611116565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611410575f5ffd5b815167ffffffffffffffff811115611426575f5ffd5b61115c848285016112e8565b604081525f6114446040830185611116565b82810360208401526114568185611116565b95945050505050565b601f8211156114a357805f5260205f20601f840160051c810160208510156114845750805b601f840160051c820191505b818110156103bf575f8155600101611490565b505050565b815167ffffffffffffffff8111156114c2576114c2610f43565b6114d6816114d084546112b0565b8461145f565b6020601f821160018114611508575f83156114f15750848201515b5f19600385901b1c1916600184901b1784556103bf565b5f84815260208120601f198516915b828110156115375787850151825560209485019460019092019101611517565b508482101561155457868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220a751b47974c1227ab948d5c0e6446e9e1bda4a34cceff191e2cfe150b0d88a1d64736f6c634300081c0033","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 0x1810 CODESIZE SUB DUP1 PUSH2 0x1810 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 0x1599 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 0xE63 ADD MSTORE PUSH2 0xEE5 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 0xE34 ADD MSTORE PUSH2 0xF14 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x141 ADD MSTORE DUP2 DUP2 PUSH2 0xA0F ADD MSTORE DUP2 DUP2 PUSH2 0xC5F ADD MSTORE PUSH2 0xDEE 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 0x1599 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 0x102A JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x10E7 JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x1183 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x196 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x119E JUMP JUMPDEST PUSH2 0x66B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x1102 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH2 0x270 PUSH2 0x1102 JUMP JUMPDEST SUB PUSH2 0x29B JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x11D0 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 0x1102 JUMP JUMPDEST SUB PUSH2 0xA6 JUMPI PUSH2 0x2C6 PUSH2 0x2C0 ADDRESS PUSH2 0xC35 JUMP JUMPDEST DUP5 PUSH2 0xCF7 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 0x11E7 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 0xC35 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 0x11D0 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 0x1202 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 0xCF7 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 0xE1D 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 0x11E7 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 0x11D0 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 0x125A 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 0x12B0 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 0x12B0 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 0x1335 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 0x11D0 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 0x13C1 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 0x11D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xBE4 DUP2 PUSH2 0xE1D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 SWAP1 PUSH1 0x60 ADD 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 0xCB3 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 0xCDA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1400 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCF0 SWAP2 SWAP1 PUSH2 0x1335 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD0C SWAP2 SWAP1 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xD46 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1164 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD6E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xDB3 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 0xDE4 SWAP3 SWAP2 SWAP1 PUSH2 0x1432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xE17 DUP4 DUP3 PUSH2 0x14A8 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 0xEA9 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 0xECD SWAP2 SWAP1 PUSH2 0x11E7 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 0xF7A JUMPI PUSH2 0xF7A PUSH2 0xF43 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 0xFA9 JUMPI PUSH2 0xFA9 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xFCA JUMPI PUSH2 0xFCA PUSH2 0xF43 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFE7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFA PUSH2 0xFF5 DUP3 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xF80 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x100E 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 0x103B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x104B JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1066 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1072 DUP6 DUP3 DUP7 ADD PUSH2 0xFD8 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 0xCF0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x107C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CC 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 0x10F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCF0 DUP2 PUSH2 0x10D3 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 0x1135 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 0x115C PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x107C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xCF0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1116 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1193 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCF0 DUP2 PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x115C DUP5 DUP3 DUP6 ADD PUSH2 0xFD8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCF0 DUP2 PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1213 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x1245 DUP2 PUSH2 0x10D3 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 0x126C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x1277 DUP2 PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1294 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x12A5 DUP2 PUSH2 0x1176 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x12C4 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x12E2 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 0x12F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1305 PUSH2 0xFF5 DUP3 PUSH2 0xFB1 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1319 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 0x1345 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x136C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1374 PUSH2 0xF57 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1382 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 0x13A7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13B3 DUP7 DUP3 DUP6 ADD PUSH2 0x12E8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x13D3 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1116 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 0x1410 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x115C DUP5 DUP3 DUP6 ADD PUSH2 0x12E8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1444 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1116 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1456 DUP2 DUP6 PUSH2 0x1116 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x14A3 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1484 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 0x1490 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14C2 JUMPI PUSH2 0x14C2 PUSH2 0xF43 JUMP JUMPDEST PUSH2 0x14D6 DUP2 PUSH2 0x14D0 DUP5 SLOAD PUSH2 0x12B0 JUMP JUMPDEST DUP5 PUSH2 0x145F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1508 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x14F1 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 0x1537 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1517 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1554 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 0xA7 MLOAD 0xB4 PUSH26 0x74C1227AB948D5C0E6446E9E1BDA4A34CCEFF191E2CFE150B0D8 DUP11 SAR PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1419:4:51:-:0;1376:48;;;;1270:7428;7309:54:52;1129:21:75;;;1186:2;1166:18;1159:30;1225:32;1205:18;1198:60;1310:20;1303:62;;;;1270:7428:51;7309:54:52;;;1275:19:75;7309:54:52;;7299:65;;1428:81:51;;3326:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3404:38:51;;3396:73;;;;-1:-1:-1;;;3396:73:51;;;;;;;;;;;;-1:-1:-1;;;;;3475:17:51;;;;;;;3498:33;;;;;3550:19;;;-1:-1:-1;;;3550:19:51;;;;:17;;:19;;;;;;;;;;;;;;;3475:17;3550:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3537:32:51;;;-1:-1:-1;1270:7428:51;;-1:-1:-1;1270:7428:51;14:144:75;-1:-1:-1;;;;;102:31:75;;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:75;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:75:o;892:479::-;1270:7428:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getSwapConfig_15344":{"entryPoint":3125,"id":15344,"parameterSlots":1,"returnSlots":1},"@_harvestRewards_15201":{"entryPoint":2210,"id":15201,"parameterSlots":1,"returnSlots":0},"@_setSwapConfig_15254":{"entryPoint":3319,"id":15254,"parameterSlots":2,"returnSlots":0},"@_supply_15114":{"entryPoint":3613,"id":15114,"parameterSlots":1,"returnSlots":0},"@asset_15044":{"entryPoint":null,"id":15044,"parameterSlots":1,"returnSlots":1},"@connect_14929":{"entryPoint":1643,"id":14929,"parameterSlots":1,"returnSlots":0},"@deposit_15090":{"entryPoint":1768,"id":15090,"parameterSlots":1,"returnSlots":0},"@disconnect_14989":{"entryPoint":1157,"id":14989,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_15318":{"entryPoint":506,"id":15318,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_15358":{"entryPoint":1115,"id":15358,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15032":{"entryPoint":966,"id":15032,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15010":{"entryPoint":1850,"id":15010,"parameterSlots":1,"returnSlots":1},"@storageSlot_14813":{"entryPoint":null,"id":14813,"parameterSlots":0,"returnSlots":0},"@totalAssets_15059":{"entryPoint":2128,"id":15059,"parameterSlots":1,"returnSlots":1},"@withdraw_15076":{"entryPoint":732,"id":15076,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":4056,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":4840,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4327,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory":{"entryPoint":4698,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bool":{"entryPoint":4483,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":4583,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":4510,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":5120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_RewardOwed_$22205_memory_ptr_fromMemory":{"entryPoint":4610,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory":{"entryPoint":4917,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4284,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":4560,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":4138,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_bytes":{"entryPoint":4220,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":4374,"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":4266,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":4452,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":5057,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":5170,"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":3968,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1590":{"entryPoint":3927,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":4017,"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":5215,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":5288,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4784,"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":4354,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3907,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":4307,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":4470,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:13691:75","nodeType":"YulBlock","src":"0:13691:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"46:95:75","nodeType":"YulBlock","src":"46:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:75","nodeType":"YulLiteral","src":"63:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:75","nodeType":"YulLiteral","src":"70:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:75","nodeType":"YulLiteral","src":"75:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:75","nodeType":"YulIdentifier","src":"66:3:75"},"nativeSrc":"66:20:75","nodeType":"YulFunctionCall","src":"66:20:75"}],"functionName":{"name":"mstore","nativeSrc":"56:6:75","nodeType":"YulIdentifier","src":"56:6:75"},"nativeSrc":"56:31:75","nodeType":"YulFunctionCall","src":"56:31:75"},"nativeSrc":"56:31:75","nodeType":"YulExpressionStatement","src":"56:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:75","nodeType":"YulLiteral","src":"103:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:75","nodeType":"YulLiteral","src":"106:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:75","nodeType":"YulIdentifier","src":"96:6:75"},"nativeSrc":"96:15:75","nodeType":"YulFunctionCall","src":"96:15:75"},"nativeSrc":"96:15:75","nodeType":"YulExpressionStatement","src":"96:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:75","nodeType":"YulLiteral","src":"127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:75","nodeType":"YulLiteral","src":"130:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:75","nodeType":"YulIdentifier","src":"120:6:75"},"nativeSrc":"120:15:75","nodeType":"YulFunctionCall","src":"120:15:75"},"nativeSrc":"120:15:75","nodeType":"YulExpressionStatement","src":"120:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14:127:75","nodeType":"YulFunctionDefinition","src":"14:127:75"},{"body":{"nativeSrc":"192:207:75","nodeType":"YulBlock","src":"192:207:75","statements":[{"nativeSrc":"202:19:75","nodeType":"YulAssignment","src":"202:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"218:2:75","nodeType":"YulLiteral","src":"218:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"212:5:75","nodeType":"YulIdentifier","src":"212:5:75"},"nativeSrc":"212:9:75","nodeType":"YulFunctionCall","src":"212:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"202:6:75","nodeType":"YulIdentifier","src":"202:6:75"}]},{"nativeSrc":"230:35:75","nodeType":"YulVariableDeclaration","src":"230:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"252:6:75","nodeType":"YulIdentifier","src":"252:6:75"},{"kind":"number","nativeSrc":"260:4:75","nodeType":"YulLiteral","src":"260:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"248:3:75","nodeType":"YulIdentifier","src":"248:3:75"},"nativeSrc":"248:17:75","nodeType":"YulFunctionCall","src":"248:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"234:10:75","nodeType":"YulTypedName","src":"234:10:75","type":""}]},{"body":{"nativeSrc":"340:22:75","nodeType":"YulBlock","src":"340:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"342:16:75","nodeType":"YulIdentifier","src":"342:16:75"},"nativeSrc":"342:18:75","nodeType":"YulFunctionCall","src":"342:18:75"},"nativeSrc":"342:18:75","nodeType":"YulExpressionStatement","src":"342:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"283:10:75","nodeType":"YulIdentifier","src":"283:10:75"},{"kind":"number","nativeSrc":"295:18:75","nodeType":"YulLiteral","src":"295:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"280:2:75","nodeType":"YulIdentifier","src":"280:2:75"},"nativeSrc":"280:34:75","nodeType":"YulFunctionCall","src":"280:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"319:10:75","nodeType":"YulIdentifier","src":"319:10:75"},{"name":"memPtr","nativeSrc":"331:6:75","nodeType":"YulIdentifier","src":"331:6:75"}],"functionName":{"name":"lt","nativeSrc":"316:2:75","nodeType":"YulIdentifier","src":"316:2:75"},"nativeSrc":"316:22:75","nodeType":"YulFunctionCall","src":"316:22:75"}],"functionName":{"name":"or","nativeSrc":"277:2:75","nodeType":"YulIdentifier","src":"277:2:75"},"nativeSrc":"277:62:75","nodeType":"YulFunctionCall","src":"277:62:75"},"nativeSrc":"274:88:75","nodeType":"YulIf","src":"274:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"378:2:75","nodeType":"YulLiteral","src":"378:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"382:10:75","nodeType":"YulIdentifier","src":"382:10:75"}],"functionName":{"name":"mstore","nativeSrc":"371:6:75","nodeType":"YulIdentifier","src":"371:6:75"},"nativeSrc":"371:22:75","nodeType":"YulFunctionCall","src":"371:22:75"},"nativeSrc":"371:22:75","nodeType":"YulExpressionStatement","src":"371:22:75"}]},"name":"allocate_memory_1590","nativeSrc":"146:253:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"181:6:75","nodeType":"YulTypedName","src":"181:6:75","type":""}],"src":"146:253:75"},{"body":{"nativeSrc":"449:230:75","nodeType":"YulBlock","src":"449:230:75","statements":[{"nativeSrc":"459:19:75","nodeType":"YulAssignment","src":"459:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"475:2:75","nodeType":"YulLiteral","src":"475:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"469:5:75","nodeType":"YulIdentifier","src":"469:5:75"},"nativeSrc":"469:9:75","nodeType":"YulFunctionCall","src":"469:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"459:6:75","nodeType":"YulIdentifier","src":"459:6:75"}]},{"nativeSrc":"487:58:75","nodeType":"YulVariableDeclaration","src":"487:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"509:6:75","nodeType":"YulIdentifier","src":"509:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"525:4:75","nodeType":"YulIdentifier","src":"525:4:75"},{"kind":"number","nativeSrc":"531:2:75","nodeType":"YulLiteral","src":"531:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"521:3:75","nodeType":"YulIdentifier","src":"521:3:75"},"nativeSrc":"521:13:75","nodeType":"YulFunctionCall","src":"521:13:75"},{"arguments":[{"kind":"number","nativeSrc":"540:2:75","nodeType":"YulLiteral","src":"540:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"536:3:75","nodeType":"YulIdentifier","src":"536:3:75"},"nativeSrc":"536:7:75","nodeType":"YulFunctionCall","src":"536:7:75"}],"functionName":{"name":"and","nativeSrc":"517:3:75","nodeType":"YulIdentifier","src":"517:3:75"},"nativeSrc":"517:27:75","nodeType":"YulFunctionCall","src":"517:27:75"}],"functionName":{"name":"add","nativeSrc":"505:3:75","nodeType":"YulIdentifier","src":"505:3:75"},"nativeSrc":"505:40:75","nodeType":"YulFunctionCall","src":"505:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"491:10:75","nodeType":"YulTypedName","src":"491:10:75","type":""}]},{"body":{"nativeSrc":"620:22:75","nodeType":"YulBlock","src":"620:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"622:16:75","nodeType":"YulIdentifier","src":"622:16:75"},"nativeSrc":"622:18:75","nodeType":"YulFunctionCall","src":"622:18:75"},"nativeSrc":"622:18:75","nodeType":"YulExpressionStatement","src":"622:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"563:10:75","nodeType":"YulIdentifier","src":"563:10:75"},{"kind":"number","nativeSrc":"575:18:75","nodeType":"YulLiteral","src":"575:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"560:2:75","nodeType":"YulIdentifier","src":"560:2:75"},"nativeSrc":"560:34:75","nodeType":"YulFunctionCall","src":"560:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"599:10:75","nodeType":"YulIdentifier","src":"599:10:75"},{"name":"memPtr","nativeSrc":"611:6:75","nodeType":"YulIdentifier","src":"611:6:75"}],"functionName":{"name":"lt","nativeSrc":"596:2:75","nodeType":"YulIdentifier","src":"596:2:75"},"nativeSrc":"596:22:75","nodeType":"YulFunctionCall","src":"596:22:75"}],"functionName":{"name":"or","nativeSrc":"557:2:75","nodeType":"YulIdentifier","src":"557:2:75"},"nativeSrc":"557:62:75","nodeType":"YulFunctionCall","src":"557:62:75"},"nativeSrc":"554:88:75","nodeType":"YulIf","src":"554:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"658:2:75","nodeType":"YulLiteral","src":"658:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"662:10:75","nodeType":"YulIdentifier","src":"662:10:75"}],"functionName":{"name":"mstore","nativeSrc":"651:6:75","nodeType":"YulIdentifier","src":"651:6:75"},"nativeSrc":"651:22:75","nodeType":"YulFunctionCall","src":"651:22:75"},"nativeSrc":"651:22:75","nodeType":"YulExpressionStatement","src":"651:22:75"}]},"name":"allocate_memory","nativeSrc":"404:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"429:4:75","nodeType":"YulTypedName","src":"429:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"438:6:75","nodeType":"YulTypedName","src":"438:6:75","type":""}],"src":"404:275:75"},{"body":{"nativeSrc":"741:129:75","nodeType":"YulBlock","src":"741:129:75","statements":[{"body":{"nativeSrc":"785:22:75","nodeType":"YulBlock","src":"785:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"787:16:75","nodeType":"YulIdentifier","src":"787:16:75"},"nativeSrc":"787:18:75","nodeType":"YulFunctionCall","src":"787:18:75"},"nativeSrc":"787:18:75","nodeType":"YulExpressionStatement","src":"787:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"757:6:75","nodeType":"YulIdentifier","src":"757:6:75"},{"kind":"number","nativeSrc":"765:18:75","nodeType":"YulLiteral","src":"765:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"754:2:75","nodeType":"YulIdentifier","src":"754:2:75"},"nativeSrc":"754:30:75","nodeType":"YulFunctionCall","src":"754:30:75"},"nativeSrc":"751:56:75","nodeType":"YulIf","src":"751:56:75"},{"nativeSrc":"816:48:75","nodeType":"YulAssignment","src":"816:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"836:6:75","nodeType":"YulIdentifier","src":"836:6:75"},{"kind":"number","nativeSrc":"844:2:75","nodeType":"YulLiteral","src":"844:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"832:3:75","nodeType":"YulIdentifier","src":"832:3:75"},"nativeSrc":"832:15:75","nodeType":"YulFunctionCall","src":"832:15:75"},{"arguments":[{"kind":"number","nativeSrc":"853:2:75","nodeType":"YulLiteral","src":"853:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"849:3:75","nodeType":"YulIdentifier","src":"849:3:75"},"nativeSrc":"849:7:75","nodeType":"YulFunctionCall","src":"849:7:75"}],"functionName":{"name":"and","nativeSrc":"828:3:75","nodeType":"YulIdentifier","src":"828:3:75"},"nativeSrc":"828:29:75","nodeType":"YulFunctionCall","src":"828:29:75"},{"kind":"number","nativeSrc":"859:4:75","nodeType":"YulLiteral","src":"859:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"824:3:75","nodeType":"YulIdentifier","src":"824:3:75"},"nativeSrc":"824:40:75","nodeType":"YulFunctionCall","src":"824:40:75"},"variableNames":[{"name":"size","nativeSrc":"816:4:75","nodeType":"YulIdentifier","src":"816:4:75"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"684:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"721:6:75","nodeType":"YulTypedName","src":"721:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"732:4:75","nodeType":"YulTypedName","src":"732:4:75","type":""}],"src":"684:186:75"},{"body":{"nativeSrc":"927:434:75","nodeType":"YulBlock","src":"927:434:75","statements":[{"body":{"nativeSrc":"976:16:75","nodeType":"YulBlock","src":"976:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"985:1:75","nodeType":"YulLiteral","src":"985:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"988:1:75","nodeType":"YulLiteral","src":"988:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"978:6:75","nodeType":"YulIdentifier","src":"978:6:75"},"nativeSrc":"978:12:75","nodeType":"YulFunctionCall","src":"978:12:75"},"nativeSrc":"978:12:75","nodeType":"YulExpressionStatement","src":"978:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"955:6:75","nodeType":"YulIdentifier","src":"955:6:75"},{"kind":"number","nativeSrc":"963:4:75","nodeType":"YulLiteral","src":"963:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"951:3:75","nodeType":"YulIdentifier","src":"951:3:75"},"nativeSrc":"951:17:75","nodeType":"YulFunctionCall","src":"951:17:75"},{"name":"end","nativeSrc":"970:3:75","nodeType":"YulIdentifier","src":"970:3:75"}],"functionName":{"name":"slt","nativeSrc":"947:3:75","nodeType":"YulIdentifier","src":"947:3:75"},"nativeSrc":"947:27:75","nodeType":"YulFunctionCall","src":"947:27:75"}],"functionName":{"name":"iszero","nativeSrc":"940:6:75","nodeType":"YulIdentifier","src":"940:6:75"},"nativeSrc":"940:35:75","nodeType":"YulFunctionCall","src":"940:35:75"},"nativeSrc":"937:55:75","nodeType":"YulIf","src":"937:55:75"},{"nativeSrc":"1001:34:75","nodeType":"YulVariableDeclaration","src":"1001:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"1028:6:75","nodeType":"YulIdentifier","src":"1028:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"1015:12:75","nodeType":"YulIdentifier","src":"1015:12:75"},"nativeSrc":"1015:20:75","nodeType":"YulFunctionCall","src":"1015:20:75"},"variables":[{"name":"length","nativeSrc":"1005:6:75","nodeType":"YulTypedName","src":"1005:6:75","type":""}]},{"nativeSrc":"1044:67:75","nodeType":"YulVariableDeclaration","src":"1044:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1103:6:75","nodeType":"YulIdentifier","src":"1103:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1075:27:75","nodeType":"YulIdentifier","src":"1075:27:75"},"nativeSrc":"1075:35:75","nodeType":"YulFunctionCall","src":"1075:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"1059:15:75","nodeType":"YulIdentifier","src":"1059:15:75"},"nativeSrc":"1059:52:75","nodeType":"YulFunctionCall","src":"1059:52:75"},"variables":[{"name":"array_1","nativeSrc":"1048:7:75","nodeType":"YulTypedName","src":"1048:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1127:7:75","nodeType":"YulIdentifier","src":"1127:7:75"},{"name":"length","nativeSrc":"1136:6:75","nodeType":"YulIdentifier","src":"1136:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1120:6:75","nodeType":"YulIdentifier","src":"1120:6:75"},"nativeSrc":"1120:23:75","nodeType":"YulFunctionCall","src":"1120:23:75"},"nativeSrc":"1120:23:75","nodeType":"YulExpressionStatement","src":"1120:23:75"},{"body":{"nativeSrc":"1195:16:75","nodeType":"YulBlock","src":"1195:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1204:1:75","nodeType":"YulLiteral","src":"1204:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1207:1:75","nodeType":"YulLiteral","src":"1207:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1197:6:75","nodeType":"YulIdentifier","src":"1197:6:75"},"nativeSrc":"1197:12:75","nodeType":"YulFunctionCall","src":"1197:12:75"},"nativeSrc":"1197:12:75","nodeType":"YulExpressionStatement","src":"1197:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1166:6:75","nodeType":"YulIdentifier","src":"1166:6:75"},{"name":"length","nativeSrc":"1174:6:75","nodeType":"YulIdentifier","src":"1174:6:75"}],"functionName":{"name":"add","nativeSrc":"1162:3:75","nodeType":"YulIdentifier","src":"1162:3:75"},"nativeSrc":"1162:19:75","nodeType":"YulFunctionCall","src":"1162:19:75"},{"kind":"number","nativeSrc":"1183:4:75","nodeType":"YulLiteral","src":"1183:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1158:3:75","nodeType":"YulIdentifier","src":"1158:3:75"},"nativeSrc":"1158:30:75","nodeType":"YulFunctionCall","src":"1158:30:75"},{"name":"end","nativeSrc":"1190:3:75","nodeType":"YulIdentifier","src":"1190:3:75"}],"functionName":{"name":"gt","nativeSrc":"1155:2:75","nodeType":"YulIdentifier","src":"1155:2:75"},"nativeSrc":"1155:39:75","nodeType":"YulFunctionCall","src":"1155:39:75"},"nativeSrc":"1152:59:75","nodeType":"YulIf","src":"1152:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1237:7:75","nodeType":"YulIdentifier","src":"1237:7:75"},{"kind":"number","nativeSrc":"1246:4:75","nodeType":"YulLiteral","src":"1246:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1233:3:75","nodeType":"YulIdentifier","src":"1233:3:75"},"nativeSrc":"1233:18:75","nodeType":"YulFunctionCall","src":"1233:18:75"},{"arguments":[{"name":"offset","nativeSrc":"1257:6:75","nodeType":"YulIdentifier","src":"1257:6:75"},{"kind":"number","nativeSrc":"1265:4:75","nodeType":"YulLiteral","src":"1265:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1253:3:75","nodeType":"YulIdentifier","src":"1253:3:75"},"nativeSrc":"1253:17:75","nodeType":"YulFunctionCall","src":"1253:17:75"},{"name":"length","nativeSrc":"1272:6:75","nodeType":"YulIdentifier","src":"1272:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"1220:12:75","nodeType":"YulIdentifier","src":"1220:12:75"},"nativeSrc":"1220:59:75","nodeType":"YulFunctionCall","src":"1220:59:75"},"nativeSrc":"1220:59:75","nodeType":"YulExpressionStatement","src":"1220:59:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1303:7:75","nodeType":"YulIdentifier","src":"1303:7:75"},{"name":"length","nativeSrc":"1312:6:75","nodeType":"YulIdentifier","src":"1312:6:75"}],"functionName":{"name":"add","nativeSrc":"1299:3:75","nodeType":"YulIdentifier","src":"1299:3:75"},"nativeSrc":"1299:20:75","nodeType":"YulFunctionCall","src":"1299:20:75"},{"kind":"number","nativeSrc":"1321:4:75","nodeType":"YulLiteral","src":"1321:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1295:3:75","nodeType":"YulIdentifier","src":"1295:3:75"},"nativeSrc":"1295:31:75","nodeType":"YulFunctionCall","src":"1295:31:75"},{"kind":"number","nativeSrc":"1328:1:75","nodeType":"YulLiteral","src":"1328:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1288:6:75","nodeType":"YulIdentifier","src":"1288:6:75"},"nativeSrc":"1288:42:75","nodeType":"YulFunctionCall","src":"1288:42:75"},"nativeSrc":"1288:42:75","nodeType":"YulExpressionStatement","src":"1288:42:75"},{"nativeSrc":"1339:16:75","nodeType":"YulAssignment","src":"1339:16:75","value":{"name":"array_1","nativeSrc":"1348:7:75","nodeType":"YulIdentifier","src":"1348:7:75"},"variableNames":[{"name":"array","nativeSrc":"1339:5:75","nodeType":"YulIdentifier","src":"1339:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"875:486:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"901:6:75","nodeType":"YulTypedName","src":"901:6:75","type":""},{"name":"end","nativeSrc":"909:3:75","nodeType":"YulTypedName","src":"909:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"917:5:75","nodeType":"YulTypedName","src":"917:5:75","type":""}],"src":"875:486:75"},{"body":{"nativeSrc":"1460:383:75","nodeType":"YulBlock","src":"1460:383:75","statements":[{"body":{"nativeSrc":"1506:16:75","nodeType":"YulBlock","src":"1506:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1515:1:75","nodeType":"YulLiteral","src":"1515:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1518:1:75","nodeType":"YulLiteral","src":"1518:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1508:6:75","nodeType":"YulIdentifier","src":"1508:6:75"},"nativeSrc":"1508:12:75","nodeType":"YulFunctionCall","src":"1508:12:75"},"nativeSrc":"1508:12:75","nodeType":"YulExpressionStatement","src":"1508:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1481:7:75","nodeType":"YulIdentifier","src":"1481:7:75"},{"name":"headStart","nativeSrc":"1490:9:75","nodeType":"YulIdentifier","src":"1490:9:75"}],"functionName":{"name":"sub","nativeSrc":"1477:3:75","nodeType":"YulIdentifier","src":"1477:3:75"},"nativeSrc":"1477:23:75","nodeType":"YulFunctionCall","src":"1477:23:75"},{"kind":"number","nativeSrc":"1502:2:75","nodeType":"YulLiteral","src":"1502:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1473:3:75","nodeType":"YulIdentifier","src":"1473:3:75"},"nativeSrc":"1473:32:75","nodeType":"YulFunctionCall","src":"1473:32:75"},"nativeSrc":"1470:52:75","nodeType":"YulIf","src":"1470:52:75"},{"nativeSrc":"1531:36:75","nodeType":"YulVariableDeclaration","src":"1531:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1557:9:75","nodeType":"YulIdentifier","src":"1557:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1544:12:75","nodeType":"YulIdentifier","src":"1544:12:75"},"nativeSrc":"1544:23:75","nodeType":"YulFunctionCall","src":"1544:23:75"},"variables":[{"name":"value","nativeSrc":"1535:5:75","nodeType":"YulTypedName","src":"1535:5:75","type":""}]},{"body":{"nativeSrc":"1615:16:75","nodeType":"YulBlock","src":"1615:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1624:1:75","nodeType":"YulLiteral","src":"1624:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1627:1:75","nodeType":"YulLiteral","src":"1627:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1617:6:75","nodeType":"YulIdentifier","src":"1617:6:75"},"nativeSrc":"1617:12:75","nodeType":"YulFunctionCall","src":"1617:12:75"},"nativeSrc":"1617:12:75","nodeType":"YulExpressionStatement","src":"1617:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1589:5:75","nodeType":"YulIdentifier","src":"1589:5:75"},{"arguments":[{"name":"value","nativeSrc":"1600:5:75","nodeType":"YulIdentifier","src":"1600:5:75"},{"kind":"number","nativeSrc":"1607:4:75","nodeType":"YulLiteral","src":"1607:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1596:3:75","nodeType":"YulIdentifier","src":"1596:3:75"},"nativeSrc":"1596:16:75","nodeType":"YulFunctionCall","src":"1596:16:75"}],"functionName":{"name":"eq","nativeSrc":"1586:2:75","nodeType":"YulIdentifier","src":"1586:2:75"},"nativeSrc":"1586:27:75","nodeType":"YulFunctionCall","src":"1586:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1579:6:75","nodeType":"YulIdentifier","src":"1579:6:75"},"nativeSrc":"1579:35:75","nodeType":"YulFunctionCall","src":"1579:35:75"},"nativeSrc":"1576:55:75","nodeType":"YulIf","src":"1576:55:75"},{"nativeSrc":"1640:15:75","nodeType":"YulAssignment","src":"1640:15:75","value":{"name":"value","nativeSrc":"1650:5:75","nodeType":"YulIdentifier","src":"1650:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1640:6:75","nodeType":"YulIdentifier","src":"1640:6:75"}]},{"nativeSrc":"1664:46:75","nodeType":"YulVariableDeclaration","src":"1664:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1695:9:75","nodeType":"YulIdentifier","src":"1695:9:75"},{"kind":"number","nativeSrc":"1706:2:75","nodeType":"YulLiteral","src":"1706:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1691:3:75","nodeType":"YulIdentifier","src":"1691:3:75"},"nativeSrc":"1691:18:75","nodeType":"YulFunctionCall","src":"1691:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1678:12:75","nodeType":"YulIdentifier","src":"1678:12:75"},"nativeSrc":"1678:32:75","nodeType":"YulFunctionCall","src":"1678:32:75"},"variables":[{"name":"offset","nativeSrc":"1668:6:75","nodeType":"YulTypedName","src":"1668:6:75","type":""}]},{"body":{"nativeSrc":"1753:16:75","nodeType":"YulBlock","src":"1753:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1762:1:75","nodeType":"YulLiteral","src":"1762:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1765:1:75","nodeType":"YulLiteral","src":"1765:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1755:6:75","nodeType":"YulIdentifier","src":"1755:6:75"},"nativeSrc":"1755:12:75","nodeType":"YulFunctionCall","src":"1755:12:75"},"nativeSrc":"1755:12:75","nodeType":"YulExpressionStatement","src":"1755:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1725:6:75","nodeType":"YulIdentifier","src":"1725:6:75"},{"kind":"number","nativeSrc":"1733:18:75","nodeType":"YulLiteral","src":"1733:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1722:2:75","nodeType":"YulIdentifier","src":"1722:2:75"},"nativeSrc":"1722:30:75","nodeType":"YulFunctionCall","src":"1722:30:75"},"nativeSrc":"1719:50:75","nodeType":"YulIf","src":"1719:50:75"},{"nativeSrc":"1778:59:75","nodeType":"YulAssignment","src":"1778:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1809:9:75","nodeType":"YulIdentifier","src":"1809:9:75"},{"name":"offset","nativeSrc":"1820:6:75","nodeType":"YulIdentifier","src":"1820:6:75"}],"functionName":{"name":"add","nativeSrc":"1805:3:75","nodeType":"YulIdentifier","src":"1805:3:75"},"nativeSrc":"1805:22:75","nodeType":"YulFunctionCall","src":"1805:22:75"},{"name":"dataEnd","nativeSrc":"1829:7:75","nodeType":"YulIdentifier","src":"1829:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1788:16:75","nodeType":"YulIdentifier","src":"1788:16:75"},"nativeSrc":"1788:49:75","nodeType":"YulFunctionCall","src":"1788:49:75"},"variableNames":[{"name":"value1","nativeSrc":"1778:6:75","nodeType":"YulIdentifier","src":"1778:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1366:477:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1418:9:75","nodeType":"YulTypedName","src":"1418:9:75","type":""},{"name":"dataEnd","nativeSrc":"1429:7:75","nodeType":"YulTypedName","src":"1429:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1441:6:75","nodeType":"YulTypedName","src":"1441:6:75","type":""},{"name":"value1","nativeSrc":"1449:6:75","nodeType":"YulTypedName","src":"1449:6:75","type":""}],"src":"1366:477:75"},{"body":{"nativeSrc":"1897:239:75","nodeType":"YulBlock","src":"1897:239:75","statements":[{"nativeSrc":"1907:26:75","nodeType":"YulVariableDeclaration","src":"1907:26:75","value":{"arguments":[{"name":"value","nativeSrc":"1927:5:75","nodeType":"YulIdentifier","src":"1927:5:75"}],"functionName":{"name":"mload","nativeSrc":"1921:5:75","nodeType":"YulIdentifier","src":"1921:5:75"},"nativeSrc":"1921:12:75","nodeType":"YulFunctionCall","src":"1921:12:75"},"variables":[{"name":"length","nativeSrc":"1911:6:75","nodeType":"YulTypedName","src":"1911:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1949:3:75","nodeType":"YulIdentifier","src":"1949:3:75"},{"name":"length","nativeSrc":"1954:6:75","nodeType":"YulIdentifier","src":"1954:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1942:6:75","nodeType":"YulIdentifier","src":"1942:6:75"},"nativeSrc":"1942:19:75","nodeType":"YulFunctionCall","src":"1942:19:75"},"nativeSrc":"1942:19:75","nodeType":"YulExpressionStatement","src":"1942:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1980:3:75","nodeType":"YulIdentifier","src":"1980:3:75"},{"kind":"number","nativeSrc":"1985:4:75","nodeType":"YulLiteral","src":"1985:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1976:3:75","nodeType":"YulIdentifier","src":"1976:3:75"},"nativeSrc":"1976:14:75","nodeType":"YulFunctionCall","src":"1976:14:75"},{"arguments":[{"name":"value","nativeSrc":"1996:5:75","nodeType":"YulIdentifier","src":"1996:5:75"},{"kind":"number","nativeSrc":"2003:4:75","nodeType":"YulLiteral","src":"2003:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1992:3:75","nodeType":"YulIdentifier","src":"1992:3:75"},"nativeSrc":"1992:16:75","nodeType":"YulFunctionCall","src":"1992:16:75"},{"name":"length","nativeSrc":"2010:6:75","nodeType":"YulIdentifier","src":"2010:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1970:5:75","nodeType":"YulIdentifier","src":"1970:5:75"},"nativeSrc":"1970:47:75","nodeType":"YulFunctionCall","src":"1970:47:75"},"nativeSrc":"1970:47:75","nodeType":"YulExpressionStatement","src":"1970:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2041:3:75","nodeType":"YulIdentifier","src":"2041:3:75"},{"name":"length","nativeSrc":"2046:6:75","nodeType":"YulIdentifier","src":"2046:6:75"}],"functionName":{"name":"add","nativeSrc":"2037:3:75","nodeType":"YulIdentifier","src":"2037:3:75"},"nativeSrc":"2037:16:75","nodeType":"YulFunctionCall","src":"2037:16:75"},{"kind":"number","nativeSrc":"2055:4:75","nodeType":"YulLiteral","src":"2055:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2033:3:75","nodeType":"YulIdentifier","src":"2033:3:75"},"nativeSrc":"2033:27:75","nodeType":"YulFunctionCall","src":"2033:27:75"},{"kind":"number","nativeSrc":"2062:1:75","nodeType":"YulLiteral","src":"2062:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2026:6:75","nodeType":"YulIdentifier","src":"2026:6:75"},"nativeSrc":"2026:38:75","nodeType":"YulFunctionCall","src":"2026:38:75"},"nativeSrc":"2026:38:75","nodeType":"YulExpressionStatement","src":"2026:38:75"},{"nativeSrc":"2073:57:75","nodeType":"YulAssignment","src":"2073:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2088:3:75","nodeType":"YulIdentifier","src":"2088:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2101:6:75","nodeType":"YulIdentifier","src":"2101:6:75"},{"kind":"number","nativeSrc":"2109:2:75","nodeType":"YulLiteral","src":"2109:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2097:3:75","nodeType":"YulIdentifier","src":"2097:3:75"},"nativeSrc":"2097:15:75","nodeType":"YulFunctionCall","src":"2097:15:75"},{"arguments":[{"kind":"number","nativeSrc":"2118:2:75","nodeType":"YulLiteral","src":"2118:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2114:3:75","nodeType":"YulIdentifier","src":"2114:3:75"},"nativeSrc":"2114:7:75","nodeType":"YulFunctionCall","src":"2114:7:75"}],"functionName":{"name":"and","nativeSrc":"2093:3:75","nodeType":"YulIdentifier","src":"2093:3:75"},"nativeSrc":"2093:29:75","nodeType":"YulFunctionCall","src":"2093:29:75"}],"functionName":{"name":"add","nativeSrc":"2084:3:75","nodeType":"YulIdentifier","src":"2084:3:75"},"nativeSrc":"2084:39:75","nodeType":"YulFunctionCall","src":"2084:39:75"},{"kind":"number","nativeSrc":"2125:4:75","nodeType":"YulLiteral","src":"2125:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2080:3:75","nodeType":"YulIdentifier","src":"2080:3:75"},"nativeSrc":"2080:50:75","nodeType":"YulFunctionCall","src":"2080:50:75"},"variableNames":[{"name":"end","nativeSrc":"2073:3:75","nodeType":"YulIdentifier","src":"2073:3:75"}]}]},"name":"abi_encode_bytes","nativeSrc":"1848:288:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1874:5:75","nodeType":"YulTypedName","src":"1874:5:75","type":""},{"name":"pos","nativeSrc":"1881:3:75","nodeType":"YulTypedName","src":"1881:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1889:3:75","nodeType":"YulTypedName","src":"1889:3:75","type":""}],"src":"1848:288:75"},{"body":{"nativeSrc":"2260:98:75","nodeType":"YulBlock","src":"2260:98:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2277:9:75","nodeType":"YulIdentifier","src":"2277:9:75"},{"kind":"number","nativeSrc":"2288:2:75","nodeType":"YulLiteral","src":"2288:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2270:6:75","nodeType":"YulIdentifier","src":"2270:6:75"},"nativeSrc":"2270:21:75","nodeType":"YulFunctionCall","src":"2270:21:75"},"nativeSrc":"2270:21:75","nodeType":"YulExpressionStatement","src":"2270:21:75"},{"nativeSrc":"2300:52:75","nodeType":"YulAssignment","src":"2300:52:75","value":{"arguments":[{"name":"value0","nativeSrc":"2325:6:75","nodeType":"YulIdentifier","src":"2325:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"2337:9:75","nodeType":"YulIdentifier","src":"2337:9:75"},{"kind":"number","nativeSrc":"2348:2:75","nodeType":"YulLiteral","src":"2348:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2333:3:75","nodeType":"YulIdentifier","src":"2333:3:75"},"nativeSrc":"2333:18:75","nodeType":"YulFunctionCall","src":"2333:18:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2308:16:75","nodeType":"YulIdentifier","src":"2308:16:75"},"nativeSrc":"2308:44:75","nodeType":"YulFunctionCall","src":"2308:44:75"},"variableNames":[{"name":"tail","nativeSrc":"2300:4:75","nodeType":"YulIdentifier","src":"2300:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2141:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2229:9:75","nodeType":"YulTypedName","src":"2229:9:75","type":""},{"name":"value0","nativeSrc":"2240:6:75","nodeType":"YulTypedName","src":"2240:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2251:4:75","nodeType":"YulTypedName","src":"2251:4:75","type":""}],"src":"2141:217:75"},{"body":{"nativeSrc":"2433:110:75","nodeType":"YulBlock","src":"2433:110:75","statements":[{"body":{"nativeSrc":"2479:16:75","nodeType":"YulBlock","src":"2479:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2488:1:75","nodeType":"YulLiteral","src":"2488:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2491:1:75","nodeType":"YulLiteral","src":"2491:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2481:6:75","nodeType":"YulIdentifier","src":"2481:6:75"},"nativeSrc":"2481:12:75","nodeType":"YulFunctionCall","src":"2481:12:75"},"nativeSrc":"2481:12:75","nodeType":"YulExpressionStatement","src":"2481:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2454:7:75","nodeType":"YulIdentifier","src":"2454:7:75"},{"name":"headStart","nativeSrc":"2463:9:75","nodeType":"YulIdentifier","src":"2463:9:75"}],"functionName":{"name":"sub","nativeSrc":"2450:3:75","nodeType":"YulIdentifier","src":"2450:3:75"},"nativeSrc":"2450:23:75","nodeType":"YulFunctionCall","src":"2450:23:75"},{"kind":"number","nativeSrc":"2475:2:75","nodeType":"YulLiteral","src":"2475:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2446:3:75","nodeType":"YulIdentifier","src":"2446:3:75"},"nativeSrc":"2446:32:75","nodeType":"YulFunctionCall","src":"2446:32:75"},"nativeSrc":"2443:52:75","nodeType":"YulIf","src":"2443:52:75"},{"nativeSrc":"2504:33:75","nodeType":"YulAssignment","src":"2504:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2527:9:75","nodeType":"YulIdentifier","src":"2527:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2514:12:75","nodeType":"YulIdentifier","src":"2514:12:75"},"nativeSrc":"2514:23:75","nodeType":"YulFunctionCall","src":"2514:23:75"},"variableNames":[{"name":"value0","nativeSrc":"2504:6:75","nodeType":"YulIdentifier","src":"2504:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2363:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2399:9:75","nodeType":"YulTypedName","src":"2399:9:75","type":""},{"name":"dataEnd","nativeSrc":"2410:7:75","nodeType":"YulTypedName","src":"2410:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2422:6:75","nodeType":"YulTypedName","src":"2422:6:75","type":""}],"src":"2363:180:75"},{"body":{"nativeSrc":"2593:86:75","nodeType":"YulBlock","src":"2593:86:75","statements":[{"body":{"nativeSrc":"2657:16:75","nodeType":"YulBlock","src":"2657:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2666:1:75","nodeType":"YulLiteral","src":"2666:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2669:1:75","nodeType":"YulLiteral","src":"2669:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2659:6:75","nodeType":"YulIdentifier","src":"2659:6:75"},"nativeSrc":"2659:12:75","nodeType":"YulFunctionCall","src":"2659:12:75"},"nativeSrc":"2659:12:75","nodeType":"YulExpressionStatement","src":"2659:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2616:5:75","nodeType":"YulIdentifier","src":"2616:5:75"},{"arguments":[{"name":"value","nativeSrc":"2627:5:75","nodeType":"YulIdentifier","src":"2627:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2642:3:75","nodeType":"YulLiteral","src":"2642:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2647:1:75","nodeType":"YulLiteral","src":"2647:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2638:3:75","nodeType":"YulIdentifier","src":"2638:3:75"},"nativeSrc":"2638:11:75","nodeType":"YulFunctionCall","src":"2638:11:75"},{"kind":"number","nativeSrc":"2651:1:75","nodeType":"YulLiteral","src":"2651:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2634:3:75","nodeType":"YulIdentifier","src":"2634:3:75"},"nativeSrc":"2634:19:75","nodeType":"YulFunctionCall","src":"2634:19:75"}],"functionName":{"name":"and","nativeSrc":"2623:3:75","nodeType":"YulIdentifier","src":"2623:3:75"},"nativeSrc":"2623:31:75","nodeType":"YulFunctionCall","src":"2623:31:75"}],"functionName":{"name":"eq","nativeSrc":"2613:2:75","nodeType":"YulIdentifier","src":"2613:2:75"},"nativeSrc":"2613:42:75","nodeType":"YulFunctionCall","src":"2613:42:75"}],"functionName":{"name":"iszero","nativeSrc":"2606:6:75","nodeType":"YulIdentifier","src":"2606:6:75"},"nativeSrc":"2606:50:75","nodeType":"YulFunctionCall","src":"2606:50:75"},"nativeSrc":"2603:70:75","nodeType":"YulIf","src":"2603:70:75"}]},"name":"validator_revert_address","nativeSrc":"2548:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2582:5:75","nodeType":"YulTypedName","src":"2582:5:75","type":""}],"src":"2548:131:75"},{"body":{"nativeSrc":"2754:177:75","nodeType":"YulBlock","src":"2754:177:75","statements":[{"body":{"nativeSrc":"2800:16:75","nodeType":"YulBlock","src":"2800:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2809:1:75","nodeType":"YulLiteral","src":"2809:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2812:1:75","nodeType":"YulLiteral","src":"2812:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2802:6:75","nodeType":"YulIdentifier","src":"2802:6:75"},"nativeSrc":"2802:12:75","nodeType":"YulFunctionCall","src":"2802:12:75"},"nativeSrc":"2802:12:75","nodeType":"YulExpressionStatement","src":"2802:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2775:7:75","nodeType":"YulIdentifier","src":"2775:7:75"},{"name":"headStart","nativeSrc":"2784:9:75","nodeType":"YulIdentifier","src":"2784:9:75"}],"functionName":{"name":"sub","nativeSrc":"2771:3:75","nodeType":"YulIdentifier","src":"2771:3:75"},"nativeSrc":"2771:23:75","nodeType":"YulFunctionCall","src":"2771:23:75"},{"kind":"number","nativeSrc":"2796:2:75","nodeType":"YulLiteral","src":"2796:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2767:3:75","nodeType":"YulIdentifier","src":"2767:3:75"},"nativeSrc":"2767:32:75","nodeType":"YulFunctionCall","src":"2767:32:75"},"nativeSrc":"2764:52:75","nodeType":"YulIf","src":"2764:52:75"},{"nativeSrc":"2825:36:75","nodeType":"YulVariableDeclaration","src":"2825:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2851:9:75","nodeType":"YulIdentifier","src":"2851:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2838:12:75","nodeType":"YulIdentifier","src":"2838:12:75"},"nativeSrc":"2838:23:75","nodeType":"YulFunctionCall","src":"2838:23:75"},"variables":[{"name":"value","nativeSrc":"2829:5:75","nodeType":"YulTypedName","src":"2829:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2895:5:75","nodeType":"YulIdentifier","src":"2895:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2870:24:75","nodeType":"YulIdentifier","src":"2870:24:75"},"nativeSrc":"2870:31:75","nodeType":"YulFunctionCall","src":"2870:31:75"},"nativeSrc":"2870:31:75","nodeType":"YulExpressionStatement","src":"2870:31:75"},{"nativeSrc":"2910:15:75","nodeType":"YulAssignment","src":"2910:15:75","value":{"name":"value","nativeSrc":"2920:5:75","nodeType":"YulIdentifier","src":"2920:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2910:6:75","nodeType":"YulIdentifier","src":"2910:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2684:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2720:9:75","nodeType":"YulTypedName","src":"2720:9:75","type":""},{"name":"dataEnd","nativeSrc":"2731:7:75","nodeType":"YulTypedName","src":"2731:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2743:6:75","nodeType":"YulTypedName","src":"2743:6:75","type":""}],"src":"2684:247:75"},{"body":{"nativeSrc":"3037:76:75","nodeType":"YulBlock","src":"3037:76:75","statements":[{"nativeSrc":"3047:26:75","nodeType":"YulAssignment","src":"3047:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3059:9:75","nodeType":"YulIdentifier","src":"3059:9:75"},{"kind":"number","nativeSrc":"3070:2:75","nodeType":"YulLiteral","src":"3070:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3055:3:75","nodeType":"YulIdentifier","src":"3055:3:75"},"nativeSrc":"3055:18:75","nodeType":"YulFunctionCall","src":"3055:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3047:4:75","nodeType":"YulIdentifier","src":"3047:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3089:9:75","nodeType":"YulIdentifier","src":"3089:9:75"},{"name":"value0","nativeSrc":"3100:6:75","nodeType":"YulIdentifier","src":"3100:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3082:6:75","nodeType":"YulIdentifier","src":"3082:6:75"},"nativeSrc":"3082:25:75","nodeType":"YulFunctionCall","src":"3082:25:75"},"nativeSrc":"3082:25:75","nodeType":"YulExpressionStatement","src":"3082:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2936:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3006:9:75","nodeType":"YulTypedName","src":"3006:9:75","type":""},{"name":"value0","nativeSrc":"3017:6:75","nodeType":"YulTypedName","src":"3017:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3028:4:75","nodeType":"YulTypedName","src":"3028:4:75","type":""}],"src":"2936:177:75"},{"body":{"nativeSrc":"3150:95:75","nodeType":"YulBlock","src":"3150:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3167:1:75","nodeType":"YulLiteral","src":"3167:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3174:3:75","nodeType":"YulLiteral","src":"3174:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3179:10:75","nodeType":"YulLiteral","src":"3179:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3170:3:75","nodeType":"YulIdentifier","src":"3170:3:75"},"nativeSrc":"3170:20:75","nodeType":"YulFunctionCall","src":"3170:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3160:6:75","nodeType":"YulIdentifier","src":"3160:6:75"},"nativeSrc":"3160:31:75","nodeType":"YulFunctionCall","src":"3160:31:75"},"nativeSrc":"3160:31:75","nodeType":"YulExpressionStatement","src":"3160:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3207:1:75","nodeType":"YulLiteral","src":"3207:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3210:4:75","nodeType":"YulLiteral","src":"3210:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3200:6:75","nodeType":"YulIdentifier","src":"3200:6:75"},"nativeSrc":"3200:15:75","nodeType":"YulFunctionCall","src":"3200:15:75"},"nativeSrc":"3200:15:75","nodeType":"YulExpressionStatement","src":"3200:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3231:1:75","nodeType":"YulLiteral","src":"3231:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3234:4:75","nodeType":"YulLiteral","src":"3234:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3224:6:75","nodeType":"YulIdentifier","src":"3224:6:75"},"nativeSrc":"3224:15:75","nodeType":"YulFunctionCall","src":"3224:15:75"},"nativeSrc":"3224:15:75","nodeType":"YulExpressionStatement","src":"3224:15:75"}]},"name":"panic_error_0x21","nativeSrc":"3118:127:75","nodeType":"YulFunctionDefinition","src":"3118:127:75"},{"body":{"nativeSrc":"3311:418:75","nodeType":"YulBlock","src":"3311:418:75","statements":[{"nativeSrc":"3321:22:75","nodeType":"YulVariableDeclaration","src":"3321:22:75","value":{"arguments":[{"name":"value","nativeSrc":"3337:5:75","nodeType":"YulIdentifier","src":"3337:5:75"}],"functionName":{"name":"mload","nativeSrc":"3331:5:75","nodeType":"YulIdentifier","src":"3331:5:75"},"nativeSrc":"3331:12:75","nodeType":"YulFunctionCall","src":"3331:12:75"},"variables":[{"name":"_1","nativeSrc":"3325:2:75","nodeType":"YulTypedName","src":"3325:2:75","type":""}]},{"body":{"nativeSrc":"3381:111:75","nodeType":"YulBlock","src":"3381:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3402:1:75","nodeType":"YulLiteral","src":"3402:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3409:3:75","nodeType":"YulLiteral","src":"3409:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3414:10:75","nodeType":"YulLiteral","src":"3414:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3405:3:75","nodeType":"YulIdentifier","src":"3405:3:75"},"nativeSrc":"3405:20:75","nodeType":"YulFunctionCall","src":"3405:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3395:6:75","nodeType":"YulIdentifier","src":"3395:6:75"},"nativeSrc":"3395:31:75","nodeType":"YulFunctionCall","src":"3395:31:75"},"nativeSrc":"3395:31:75","nodeType":"YulExpressionStatement","src":"3395:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3446:1:75","nodeType":"YulLiteral","src":"3446:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3449:4:75","nodeType":"YulLiteral","src":"3449:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3439:6:75","nodeType":"YulIdentifier","src":"3439:6:75"},"nativeSrc":"3439:15:75","nodeType":"YulFunctionCall","src":"3439:15:75"},"nativeSrc":"3439:15:75","nodeType":"YulExpressionStatement","src":"3439:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3474:1:75","nodeType":"YulLiteral","src":"3474:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3477:4:75","nodeType":"YulLiteral","src":"3477:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3467:6:75","nodeType":"YulIdentifier","src":"3467:6:75"},"nativeSrc":"3467:15:75","nodeType":"YulFunctionCall","src":"3467:15:75"},"nativeSrc":"3467:15:75","nodeType":"YulExpressionStatement","src":"3467:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3365:2:75","nodeType":"YulIdentifier","src":"3365:2:75"},{"kind":"number","nativeSrc":"3369:1:75","nodeType":"YulLiteral","src":"3369:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3362:2:75","nodeType":"YulIdentifier","src":"3362:2:75"},"nativeSrc":"3362:9:75","nodeType":"YulFunctionCall","src":"3362:9:75"}],"functionName":{"name":"iszero","nativeSrc":"3355:6:75","nodeType":"YulIdentifier","src":"3355:6:75"},"nativeSrc":"3355:17:75","nodeType":"YulFunctionCall","src":"3355:17:75"},"nativeSrc":"3352:140:75","nodeType":"YulIf","src":"3352:140:75"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3508:3:75","nodeType":"YulIdentifier","src":"3508:3:75"},{"name":"_1","nativeSrc":"3513:2:75","nodeType":"YulIdentifier","src":"3513:2:75"}],"functionName":{"name":"mstore","nativeSrc":"3501:6:75","nodeType":"YulIdentifier","src":"3501:6:75"},"nativeSrc":"3501:15:75","nodeType":"YulFunctionCall","src":"3501:15:75"},"nativeSrc":"3501:15:75","nodeType":"YulExpressionStatement","src":"3501:15:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3536:3:75","nodeType":"YulIdentifier","src":"3536:3:75"},{"kind":"number","nativeSrc":"3541:4:75","nodeType":"YulLiteral","src":"3541:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3532:3:75","nodeType":"YulIdentifier","src":"3532:3:75"},"nativeSrc":"3532:14:75","nodeType":"YulFunctionCall","src":"3532:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3558:5:75","nodeType":"YulIdentifier","src":"3558:5:75"},{"kind":"number","nativeSrc":"3565:4:75","nodeType":"YulLiteral","src":"3565:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3554:3:75","nodeType":"YulIdentifier","src":"3554:3:75"},"nativeSrc":"3554:16:75","nodeType":"YulFunctionCall","src":"3554:16:75"}],"functionName":{"name":"mload","nativeSrc":"3548:5:75","nodeType":"YulIdentifier","src":"3548:5:75"},"nativeSrc":"3548:23:75","nodeType":"YulFunctionCall","src":"3548:23:75"}],"functionName":{"name":"mstore","nativeSrc":"3525:6:75","nodeType":"YulIdentifier","src":"3525:6:75"},"nativeSrc":"3525:47:75","nodeType":"YulFunctionCall","src":"3525:47:75"},"nativeSrc":"3525:47:75","nodeType":"YulExpressionStatement","src":"3525:47:75"},{"nativeSrc":"3581:43:75","nodeType":"YulVariableDeclaration","src":"3581:43:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3611:5:75","nodeType":"YulIdentifier","src":"3611:5:75"},{"kind":"number","nativeSrc":"3618:4:75","nodeType":"YulLiteral","src":"3618:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3607:3:75","nodeType":"YulIdentifier","src":"3607:3:75"},"nativeSrc":"3607:16:75","nodeType":"YulFunctionCall","src":"3607:16:75"}],"functionName":{"name":"mload","nativeSrc":"3601:5:75","nodeType":"YulIdentifier","src":"3601:5:75"},"nativeSrc":"3601:23:75","nodeType":"YulFunctionCall","src":"3601:23:75"},"variables":[{"name":"memberValue0","nativeSrc":"3585:12:75","nodeType":"YulTypedName","src":"3585:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3644:3:75","nodeType":"YulIdentifier","src":"3644:3:75"},{"kind":"number","nativeSrc":"3649:4:75","nodeType":"YulLiteral","src":"3649:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3640:3:75","nodeType":"YulIdentifier","src":"3640:3:75"},"nativeSrc":"3640:14:75","nodeType":"YulFunctionCall","src":"3640:14:75"},{"kind":"number","nativeSrc":"3656:4:75","nodeType":"YulLiteral","src":"3656:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3633:6:75","nodeType":"YulIdentifier","src":"3633:6:75"},"nativeSrc":"3633:28:75","nodeType":"YulFunctionCall","src":"3633:28:75"},"nativeSrc":"3633:28:75","nodeType":"YulExpressionStatement","src":"3633:28:75"},{"nativeSrc":"3670:53:75","nodeType":"YulAssignment","src":"3670:53:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3694:12:75","nodeType":"YulIdentifier","src":"3694:12:75"},{"arguments":[{"name":"pos","nativeSrc":"3712:3:75","nodeType":"YulIdentifier","src":"3712:3:75"},{"kind":"number","nativeSrc":"3717:4:75","nodeType":"YulLiteral","src":"3717:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3708:3:75","nodeType":"YulIdentifier","src":"3708:3:75"},"nativeSrc":"3708:14:75","nodeType":"YulFunctionCall","src":"3708:14:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3677:16:75","nodeType":"YulIdentifier","src":"3677:16:75"},"nativeSrc":"3677:46:75","nodeType":"YulFunctionCall","src":"3677:46:75"},"variableNames":[{"name":"end","nativeSrc":"3670:3:75","nodeType":"YulIdentifier","src":"3670:3:75"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3250:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3288:5:75","nodeType":"YulTypedName","src":"3288:5:75","type":""},{"name":"pos","nativeSrc":"3295:3:75","nodeType":"YulTypedName","src":"3295:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3303:3:75","nodeType":"YulTypedName","src":"3303:3:75","type":""}],"src":"3250:479:75"},{"body":{"nativeSrc":"3889:110:75","nodeType":"YulBlock","src":"3889:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3906:9:75","nodeType":"YulIdentifier","src":"3906:9:75"},{"kind":"number","nativeSrc":"3917:2:75","nodeType":"YulLiteral","src":"3917:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3899:6:75","nodeType":"YulIdentifier","src":"3899:6:75"},"nativeSrc":"3899:21:75","nodeType":"YulFunctionCall","src":"3899:21:75"},"nativeSrc":"3899:21:75","nodeType":"YulExpressionStatement","src":"3899:21:75"},{"nativeSrc":"3929:64:75","nodeType":"YulAssignment","src":"3929:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"3966:6:75","nodeType":"YulIdentifier","src":"3966:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"3978:9:75","nodeType":"YulIdentifier","src":"3978:9:75"},{"kind":"number","nativeSrc":"3989:2:75","nodeType":"YulLiteral","src":"3989:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3974:3:75","nodeType":"YulIdentifier","src":"3974:3:75"},"nativeSrc":"3974:18:75","nodeType":"YulFunctionCall","src":"3974:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"3937:28:75","nodeType":"YulIdentifier","src":"3937:28:75"},"nativeSrc":"3937:56:75","nodeType":"YulFunctionCall","src":"3937:56:75"},"variableNames":[{"name":"tail","nativeSrc":"3929:4:75","nodeType":"YulIdentifier","src":"3929:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"3734:265:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3858:9:75","nodeType":"YulTypedName","src":"3858:9:75","type":""},{"name":"value0","nativeSrc":"3869:6:75","nodeType":"YulTypedName","src":"3869:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3880:4:75","nodeType":"YulTypedName","src":"3880:4:75","type":""}],"src":"3734:265:75"},{"body":{"nativeSrc":"4046:76:75","nodeType":"YulBlock","src":"4046:76:75","statements":[{"body":{"nativeSrc":"4100:16:75","nodeType":"YulBlock","src":"4100:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4109:1:75","nodeType":"YulLiteral","src":"4109:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4112:1:75","nodeType":"YulLiteral","src":"4112:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4102:6:75","nodeType":"YulIdentifier","src":"4102:6:75"},"nativeSrc":"4102:12:75","nodeType":"YulFunctionCall","src":"4102:12:75"},"nativeSrc":"4102:12:75","nodeType":"YulExpressionStatement","src":"4102:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4069:5:75","nodeType":"YulIdentifier","src":"4069:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4090:5:75","nodeType":"YulIdentifier","src":"4090:5:75"}],"functionName":{"name":"iszero","nativeSrc":"4083:6:75","nodeType":"YulIdentifier","src":"4083:6:75"},"nativeSrc":"4083:13:75","nodeType":"YulFunctionCall","src":"4083:13:75"}],"functionName":{"name":"iszero","nativeSrc":"4076:6:75","nodeType":"YulIdentifier","src":"4076:6:75"},"nativeSrc":"4076:21:75","nodeType":"YulFunctionCall","src":"4076:21:75"}],"functionName":{"name":"eq","nativeSrc":"4066:2:75","nodeType":"YulIdentifier","src":"4066:2:75"},"nativeSrc":"4066:32:75","nodeType":"YulFunctionCall","src":"4066:32:75"}],"functionName":{"name":"iszero","nativeSrc":"4059:6:75","nodeType":"YulIdentifier","src":"4059:6:75"},"nativeSrc":"4059:40:75","nodeType":"YulFunctionCall","src":"4059:40:75"},"nativeSrc":"4056:60:75","nodeType":"YulIf","src":"4056:60:75"}]},"name":"validator_revert_bool","nativeSrc":"4004:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4035:5:75","nodeType":"YulTypedName","src":"4035:5:75","type":""}],"src":"4004:118:75"},{"body":{"nativeSrc":"4194:174:75","nodeType":"YulBlock","src":"4194:174:75","statements":[{"body":{"nativeSrc":"4240:16:75","nodeType":"YulBlock","src":"4240:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4249:1:75","nodeType":"YulLiteral","src":"4249:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4252:1:75","nodeType":"YulLiteral","src":"4252:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4242:6:75","nodeType":"YulIdentifier","src":"4242:6:75"},"nativeSrc":"4242:12:75","nodeType":"YulFunctionCall","src":"4242:12:75"},"nativeSrc":"4242:12:75","nodeType":"YulExpressionStatement","src":"4242:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4215:7:75","nodeType":"YulIdentifier","src":"4215:7:75"},{"name":"headStart","nativeSrc":"4224:9:75","nodeType":"YulIdentifier","src":"4224:9:75"}],"functionName":{"name":"sub","nativeSrc":"4211:3:75","nodeType":"YulIdentifier","src":"4211:3:75"},"nativeSrc":"4211:23:75","nodeType":"YulFunctionCall","src":"4211:23:75"},{"kind":"number","nativeSrc":"4236:2:75","nodeType":"YulLiteral","src":"4236:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4207:3:75","nodeType":"YulIdentifier","src":"4207:3:75"},"nativeSrc":"4207:32:75","nodeType":"YulFunctionCall","src":"4207:32:75"},"nativeSrc":"4204:52:75","nodeType":"YulIf","src":"4204:52:75"},{"nativeSrc":"4265:36:75","nodeType":"YulVariableDeclaration","src":"4265:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4291:9:75","nodeType":"YulIdentifier","src":"4291:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4278:12:75","nodeType":"YulIdentifier","src":"4278:12:75"},"nativeSrc":"4278:23:75","nodeType":"YulFunctionCall","src":"4278:23:75"},"variables":[{"name":"value","nativeSrc":"4269:5:75","nodeType":"YulTypedName","src":"4269:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4332:5:75","nodeType":"YulIdentifier","src":"4332:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4310:21:75","nodeType":"YulIdentifier","src":"4310:21:75"},"nativeSrc":"4310:28:75","nodeType":"YulFunctionCall","src":"4310:28:75"},"nativeSrc":"4310:28:75","nodeType":"YulExpressionStatement","src":"4310:28:75"},{"nativeSrc":"4347:15:75","nodeType":"YulAssignment","src":"4347:15:75","value":{"name":"value","nativeSrc":"4357:5:75","nodeType":"YulIdentifier","src":"4357:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4347:6:75","nodeType":"YulIdentifier","src":"4347:6:75"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4127:241:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4160:9:75","nodeType":"YulTypedName","src":"4160:9:75","type":""},{"name":"dataEnd","nativeSrc":"4171:7:75","nodeType":"YulTypedName","src":"4171:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4183:6:75","nodeType":"YulTypedName","src":"4183:6:75","type":""}],"src":"4127:241:75"},{"body":{"nativeSrc":"4474:76:75","nodeType":"YulBlock","src":"4474:76:75","statements":[{"nativeSrc":"4484:26:75","nodeType":"YulAssignment","src":"4484:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4496:9:75","nodeType":"YulIdentifier","src":"4496:9:75"},{"kind":"number","nativeSrc":"4507:2:75","nodeType":"YulLiteral","src":"4507:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4492:3:75","nodeType":"YulIdentifier","src":"4492:3:75"},"nativeSrc":"4492:18:75","nodeType":"YulFunctionCall","src":"4492:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4484:4:75","nodeType":"YulIdentifier","src":"4484:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4526:9:75","nodeType":"YulIdentifier","src":"4526:9:75"},{"name":"value0","nativeSrc":"4537:6:75","nodeType":"YulIdentifier","src":"4537:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4519:6:75","nodeType":"YulIdentifier","src":"4519:6:75"},"nativeSrc":"4519:25:75","nodeType":"YulFunctionCall","src":"4519:25:75"},"nativeSrc":"4519:25:75","nodeType":"YulExpressionStatement","src":"4519:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4373:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4443:9:75","nodeType":"YulTypedName","src":"4443:9:75","type":""},{"name":"value0","nativeSrc":"4454:6:75","nodeType":"YulTypedName","src":"4454:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4465:4:75","nodeType":"YulTypedName","src":"4465:4:75","type":""}],"src":"4373:177:75"},{"body":{"nativeSrc":"4656:102:75","nodeType":"YulBlock","src":"4656:102:75","statements":[{"nativeSrc":"4666:26:75","nodeType":"YulAssignment","src":"4666:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4678:9:75","nodeType":"YulIdentifier","src":"4678:9:75"},{"kind":"number","nativeSrc":"4689:2:75","nodeType":"YulLiteral","src":"4689:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4674:3:75","nodeType":"YulIdentifier","src":"4674:3:75"},"nativeSrc":"4674:18:75","nodeType":"YulFunctionCall","src":"4674:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4666:4:75","nodeType":"YulIdentifier","src":"4666:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4708:9:75","nodeType":"YulIdentifier","src":"4708:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4723:6:75","nodeType":"YulIdentifier","src":"4723:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4739:3:75","nodeType":"YulLiteral","src":"4739:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4744:1:75","nodeType":"YulLiteral","src":"4744:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4735:3:75","nodeType":"YulIdentifier","src":"4735:3:75"},"nativeSrc":"4735:11:75","nodeType":"YulFunctionCall","src":"4735:11:75"},{"kind":"number","nativeSrc":"4748:1:75","nodeType":"YulLiteral","src":"4748:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4731:3:75","nodeType":"YulIdentifier","src":"4731:3:75"},"nativeSrc":"4731:19:75","nodeType":"YulFunctionCall","src":"4731:19:75"}],"functionName":{"name":"and","nativeSrc":"4719:3:75","nodeType":"YulIdentifier","src":"4719:3:75"},"nativeSrc":"4719:32:75","nodeType":"YulFunctionCall","src":"4719:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4701:6:75","nodeType":"YulIdentifier","src":"4701:6:75"},"nativeSrc":"4701:51:75","nodeType":"YulFunctionCall","src":"4701:51:75"},"nativeSrc":"4701:51:75","nodeType":"YulExpressionStatement","src":"4701:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4555:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4625:9:75","nodeType":"YulTypedName","src":"4625:9:75","type":""},{"name":"value0","nativeSrc":"4636:6:75","nodeType":"YulTypedName","src":"4636:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4647:4:75","nodeType":"YulTypedName","src":"4647:4:75","type":""}],"src":"4555:203:75"},{"body":{"nativeSrc":"4842:241:75","nodeType":"YulBlock","src":"4842:241:75","statements":[{"body":{"nativeSrc":"4888:16:75","nodeType":"YulBlock","src":"4888:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4897:1:75","nodeType":"YulLiteral","src":"4897:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4900:1:75","nodeType":"YulLiteral","src":"4900:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4890:6:75","nodeType":"YulIdentifier","src":"4890:6:75"},"nativeSrc":"4890:12:75","nodeType":"YulFunctionCall","src":"4890:12:75"},"nativeSrc":"4890:12:75","nodeType":"YulExpressionStatement","src":"4890:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4863:7:75","nodeType":"YulIdentifier","src":"4863:7:75"},{"name":"headStart","nativeSrc":"4872:9:75","nodeType":"YulIdentifier","src":"4872:9:75"}],"functionName":{"name":"sub","nativeSrc":"4859:3:75","nodeType":"YulIdentifier","src":"4859:3:75"},"nativeSrc":"4859:23:75","nodeType":"YulFunctionCall","src":"4859:23:75"},{"kind":"number","nativeSrc":"4884:2:75","nodeType":"YulLiteral","src":"4884:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4855:3:75","nodeType":"YulIdentifier","src":"4855:3:75"},"nativeSrc":"4855:32:75","nodeType":"YulFunctionCall","src":"4855:32:75"},"nativeSrc":"4852:52:75","nodeType":"YulIf","src":"4852:52:75"},{"nativeSrc":"4913:37:75","nodeType":"YulVariableDeclaration","src":"4913:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4940:9:75","nodeType":"YulIdentifier","src":"4940:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4927:12:75","nodeType":"YulIdentifier","src":"4927:12:75"},"nativeSrc":"4927:23:75","nodeType":"YulFunctionCall","src":"4927:23:75"},"variables":[{"name":"offset","nativeSrc":"4917:6:75","nodeType":"YulTypedName","src":"4917:6:75","type":""}]},{"body":{"nativeSrc":"4993:16:75","nodeType":"YulBlock","src":"4993:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5002:1:75","nodeType":"YulLiteral","src":"5002:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5005:1:75","nodeType":"YulLiteral","src":"5005:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4995:6:75","nodeType":"YulIdentifier","src":"4995:6:75"},"nativeSrc":"4995:12:75","nodeType":"YulFunctionCall","src":"4995:12:75"},"nativeSrc":"4995:12:75","nodeType":"YulExpressionStatement","src":"4995:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4965:6:75","nodeType":"YulIdentifier","src":"4965:6:75"},{"kind":"number","nativeSrc":"4973:18:75","nodeType":"YulLiteral","src":"4973:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4962:2:75","nodeType":"YulIdentifier","src":"4962:2:75"},"nativeSrc":"4962:30:75","nodeType":"YulFunctionCall","src":"4962:30:75"},"nativeSrc":"4959:50:75","nodeType":"YulIf","src":"4959:50:75"},{"nativeSrc":"5018:59:75","nodeType":"YulAssignment","src":"5018:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5049:9:75","nodeType":"YulIdentifier","src":"5049:9:75"},{"name":"offset","nativeSrc":"5060:6:75","nodeType":"YulIdentifier","src":"5060:6:75"}],"functionName":{"name":"add","nativeSrc":"5045:3:75","nodeType":"YulIdentifier","src":"5045:3:75"},"nativeSrc":"5045:22:75","nodeType":"YulFunctionCall","src":"5045:22:75"},{"name":"dataEnd","nativeSrc":"5069:7:75","nodeType":"YulIdentifier","src":"5069:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5028:16:75","nodeType":"YulIdentifier","src":"5028:16:75"},"nativeSrc":"5028:49:75","nodeType":"YulFunctionCall","src":"5028:49:75"},"variableNames":[{"name":"value0","nativeSrc":"5018:6:75","nodeType":"YulIdentifier","src":"5018:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4763:320:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4808:9:75","nodeType":"YulTypedName","src":"4808:9:75","type":""},{"name":"dataEnd","nativeSrc":"4819:7:75","nodeType":"YulTypedName","src":"4819:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4831:6:75","nodeType":"YulTypedName","src":"4831:6:75","type":""}],"src":"4763:320:75"},{"body":{"nativeSrc":"5169:149:75","nodeType":"YulBlock","src":"5169:149:75","statements":[{"body":{"nativeSrc":"5215:16:75","nodeType":"YulBlock","src":"5215:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5224:1:75","nodeType":"YulLiteral","src":"5224:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5227:1:75","nodeType":"YulLiteral","src":"5227:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5217:6:75","nodeType":"YulIdentifier","src":"5217:6:75"},"nativeSrc":"5217:12:75","nodeType":"YulFunctionCall","src":"5217:12:75"},"nativeSrc":"5217:12:75","nodeType":"YulExpressionStatement","src":"5217:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5190:7:75","nodeType":"YulIdentifier","src":"5190:7:75"},{"name":"headStart","nativeSrc":"5199:9:75","nodeType":"YulIdentifier","src":"5199:9:75"}],"functionName":{"name":"sub","nativeSrc":"5186:3:75","nodeType":"YulIdentifier","src":"5186:3:75"},"nativeSrc":"5186:23:75","nodeType":"YulFunctionCall","src":"5186:23:75"},{"kind":"number","nativeSrc":"5211:2:75","nodeType":"YulLiteral","src":"5211:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5182:3:75","nodeType":"YulIdentifier","src":"5182:3:75"},"nativeSrc":"5182:32:75","nodeType":"YulFunctionCall","src":"5182:32:75"},"nativeSrc":"5179:52:75","nodeType":"YulIf","src":"5179:52:75"},{"nativeSrc":"5240:14:75","nodeType":"YulVariableDeclaration","src":"5240:14:75","value":{"kind":"number","nativeSrc":"5253:1:75","nodeType":"YulLiteral","src":"5253:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5244:5:75","nodeType":"YulTypedName","src":"5244:5:75","type":""}]},{"nativeSrc":"5263:25:75","nodeType":"YulAssignment","src":"5263:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5278:9:75","nodeType":"YulIdentifier","src":"5278:9:75"}],"functionName":{"name":"mload","nativeSrc":"5272:5:75","nodeType":"YulIdentifier","src":"5272:5:75"},"nativeSrc":"5272:16:75","nodeType":"YulFunctionCall","src":"5272:16:75"},"variableNames":[{"name":"value","nativeSrc":"5263:5:75","nodeType":"YulIdentifier","src":"5263:5:75"}]},{"nativeSrc":"5297:15:75","nodeType":"YulAssignment","src":"5297:15:75","value":{"name":"value","nativeSrc":"5307:5:75","nodeType":"YulIdentifier","src":"5307:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5297:6:75","nodeType":"YulIdentifier","src":"5297:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5088:230:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5135:9:75","nodeType":"YulTypedName","src":"5135:9:75","type":""},{"name":"dataEnd","nativeSrc":"5146:7:75","nodeType":"YulTypedName","src":"5146:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5158:6:75","nodeType":"YulTypedName","src":"5158:6:75","type":""}],"src":"5088:230:75"},{"body":{"nativeSrc":"5452:145:75","nodeType":"YulBlock","src":"5452:145:75","statements":[{"nativeSrc":"5462:26:75","nodeType":"YulAssignment","src":"5462:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5474:9:75","nodeType":"YulIdentifier","src":"5474:9:75"},{"kind":"number","nativeSrc":"5485:2:75","nodeType":"YulLiteral","src":"5485:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5470:3:75","nodeType":"YulIdentifier","src":"5470:3:75"},"nativeSrc":"5470:18:75","nodeType":"YulFunctionCall","src":"5470:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5462:4:75","nodeType":"YulIdentifier","src":"5462:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5504:9:75","nodeType":"YulIdentifier","src":"5504:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5519:6:75","nodeType":"YulIdentifier","src":"5519:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5535:3:75","nodeType":"YulLiteral","src":"5535:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5540:1:75","nodeType":"YulLiteral","src":"5540:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5531:3:75","nodeType":"YulIdentifier","src":"5531:3:75"},"nativeSrc":"5531:11:75","nodeType":"YulFunctionCall","src":"5531:11:75"},{"kind":"number","nativeSrc":"5544:1:75","nodeType":"YulLiteral","src":"5544:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5527:3:75","nodeType":"YulIdentifier","src":"5527:3:75"},"nativeSrc":"5527:19:75","nodeType":"YulFunctionCall","src":"5527:19:75"}],"functionName":{"name":"and","nativeSrc":"5515:3:75","nodeType":"YulIdentifier","src":"5515:3:75"},"nativeSrc":"5515:32:75","nodeType":"YulFunctionCall","src":"5515:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5497:6:75","nodeType":"YulIdentifier","src":"5497:6:75"},"nativeSrc":"5497:51:75","nodeType":"YulFunctionCall","src":"5497:51:75"},"nativeSrc":"5497:51:75","nodeType":"YulExpressionStatement","src":"5497:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5568:9:75","nodeType":"YulIdentifier","src":"5568:9:75"},{"kind":"number","nativeSrc":"5579:2:75","nodeType":"YulLiteral","src":"5579:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5564:3:75","nodeType":"YulIdentifier","src":"5564:3:75"},"nativeSrc":"5564:18:75","nodeType":"YulFunctionCall","src":"5564:18:75"},{"name":"value1","nativeSrc":"5584:6:75","nodeType":"YulIdentifier","src":"5584:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5557:6:75","nodeType":"YulIdentifier","src":"5557:6:75"},"nativeSrc":"5557:34:75","nodeType":"YulFunctionCall","src":"5557:34:75"},"nativeSrc":"5557:34:75","nodeType":"YulExpressionStatement","src":"5557:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"5323:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5413:9:75","nodeType":"YulTypedName","src":"5413:9:75","type":""},{"name":"value1","nativeSrc":"5424:6:75","nodeType":"YulTypedName","src":"5424:6:75","type":""},{"name":"value0","nativeSrc":"5432:6:75","nodeType":"YulTypedName","src":"5432:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5443:4:75","nodeType":"YulTypedName","src":"5443:4:75","type":""}],"src":"5323:274:75"},{"body":{"nativeSrc":"5680:167:75","nodeType":"YulBlock","src":"5680:167:75","statements":[{"body":{"nativeSrc":"5726:16:75","nodeType":"YulBlock","src":"5726:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5735:1:75","nodeType":"YulLiteral","src":"5735:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5738:1:75","nodeType":"YulLiteral","src":"5738:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5728:6:75","nodeType":"YulIdentifier","src":"5728:6:75"},"nativeSrc":"5728:12:75","nodeType":"YulFunctionCall","src":"5728:12:75"},"nativeSrc":"5728:12:75","nodeType":"YulExpressionStatement","src":"5728:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5701:7:75","nodeType":"YulIdentifier","src":"5701:7:75"},{"name":"headStart","nativeSrc":"5710:9:75","nodeType":"YulIdentifier","src":"5710:9:75"}],"functionName":{"name":"sub","nativeSrc":"5697:3:75","nodeType":"YulIdentifier","src":"5697:3:75"},"nativeSrc":"5697:23:75","nodeType":"YulFunctionCall","src":"5697:23:75"},{"kind":"number","nativeSrc":"5722:2:75","nodeType":"YulLiteral","src":"5722:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5693:3:75","nodeType":"YulIdentifier","src":"5693:3:75"},"nativeSrc":"5693:32:75","nodeType":"YulFunctionCall","src":"5693:32:75"},"nativeSrc":"5690:52:75","nodeType":"YulIf","src":"5690:52:75"},{"nativeSrc":"5751:29:75","nodeType":"YulVariableDeclaration","src":"5751:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5770:9:75","nodeType":"YulIdentifier","src":"5770:9:75"}],"functionName":{"name":"mload","nativeSrc":"5764:5:75","nodeType":"YulIdentifier","src":"5764:5:75"},"nativeSrc":"5764:16:75","nodeType":"YulFunctionCall","src":"5764:16:75"},"variables":[{"name":"value","nativeSrc":"5755:5:75","nodeType":"YulTypedName","src":"5755:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5811:5:75","nodeType":"YulIdentifier","src":"5811:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5789:21:75","nodeType":"YulIdentifier","src":"5789:21:75"},"nativeSrc":"5789:28:75","nodeType":"YulFunctionCall","src":"5789:28:75"},"nativeSrc":"5789:28:75","nodeType":"YulExpressionStatement","src":"5789:28:75"},{"nativeSrc":"5826:15:75","nodeType":"YulAssignment","src":"5826:15:75","value":{"name":"value","nativeSrc":"5836:5:75","nodeType":"YulIdentifier","src":"5836:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5826:6:75","nodeType":"YulIdentifier","src":"5826:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"5602:245:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5646:9:75","nodeType":"YulTypedName","src":"5646:9:75","type":""},{"name":"dataEnd","nativeSrc":"5657:7:75","nodeType":"YulTypedName","src":"5657:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5669:6:75","nodeType":"YulTypedName","src":"5669:6:75","type":""}],"src":"5602:245:75"},{"body":{"nativeSrc":"5981:171:75","nodeType":"YulBlock","src":"5981:171:75","statements":[{"nativeSrc":"5991:26:75","nodeType":"YulAssignment","src":"5991:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6003:9:75","nodeType":"YulIdentifier","src":"6003:9:75"},{"kind":"number","nativeSrc":"6014:2:75","nodeType":"YulLiteral","src":"6014:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5999:3:75","nodeType":"YulIdentifier","src":"5999:3:75"},"nativeSrc":"5999:18:75","nodeType":"YulFunctionCall","src":"5999:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5991:4:75","nodeType":"YulIdentifier","src":"5991:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6033:9:75","nodeType":"YulIdentifier","src":"6033:9:75"},{"arguments":[{"name":"value0","nativeSrc":"6048:6:75","nodeType":"YulIdentifier","src":"6048:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6064:3:75","nodeType":"YulLiteral","src":"6064:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"6069:1:75","nodeType":"YulLiteral","src":"6069:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6060:3:75","nodeType":"YulIdentifier","src":"6060:3:75"},"nativeSrc":"6060:11:75","nodeType":"YulFunctionCall","src":"6060:11:75"},{"kind":"number","nativeSrc":"6073:1:75","nodeType":"YulLiteral","src":"6073:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6056:3:75","nodeType":"YulIdentifier","src":"6056:3:75"},"nativeSrc":"6056:19:75","nodeType":"YulFunctionCall","src":"6056:19:75"}],"functionName":{"name":"and","nativeSrc":"6044:3:75","nodeType":"YulIdentifier","src":"6044:3:75"},"nativeSrc":"6044:32:75","nodeType":"YulFunctionCall","src":"6044:32:75"}],"functionName":{"name":"mstore","nativeSrc":"6026:6:75","nodeType":"YulIdentifier","src":"6026:6:75"},"nativeSrc":"6026:51:75","nodeType":"YulFunctionCall","src":"6026:51:75"},"nativeSrc":"6026:51:75","nodeType":"YulExpressionStatement","src":"6026:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6097:9:75","nodeType":"YulIdentifier","src":"6097:9:75"},{"kind":"number","nativeSrc":"6108:2:75","nodeType":"YulLiteral","src":"6108:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6093:3:75","nodeType":"YulIdentifier","src":"6093:3:75"},"nativeSrc":"6093:18:75","nodeType":"YulFunctionCall","src":"6093:18:75"},{"arguments":[{"name":"value1","nativeSrc":"6117:6:75","nodeType":"YulIdentifier","src":"6117:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6133:3:75","nodeType":"YulLiteral","src":"6133:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"6138:1:75","nodeType":"YulLiteral","src":"6138:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6129:3:75","nodeType":"YulIdentifier","src":"6129:3:75"},"nativeSrc":"6129:11:75","nodeType":"YulFunctionCall","src":"6129:11:75"},{"kind":"number","nativeSrc":"6142:1:75","nodeType":"YulLiteral","src":"6142:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6125:3:75","nodeType":"YulIdentifier","src":"6125:3:75"},"nativeSrc":"6125:19:75","nodeType":"YulFunctionCall","src":"6125:19:75"}],"functionName":{"name":"and","nativeSrc":"6113:3:75","nodeType":"YulIdentifier","src":"6113:3:75"},"nativeSrc":"6113:32:75","nodeType":"YulFunctionCall","src":"6113:32:75"}],"functionName":{"name":"mstore","nativeSrc":"6086:6:75","nodeType":"YulIdentifier","src":"6086:6:75"},"nativeSrc":"6086:60:75","nodeType":"YulFunctionCall","src":"6086:60:75"},"nativeSrc":"6086:60:75","nodeType":"YulExpressionStatement","src":"6086:60:75"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"5852:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5942:9:75","nodeType":"YulTypedName","src":"5942:9:75","type":""},{"name":"value1","nativeSrc":"5953:6:75","nodeType":"YulTypedName","src":"5953:6:75","type":""},{"name":"value0","nativeSrc":"5961:6:75","nodeType":"YulTypedName","src":"5961:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5972:4:75","nodeType":"YulTypedName","src":"5972:4:75","type":""}],"src":"5852:300:75"},{"body":{"nativeSrc":"6267:571:75","nodeType":"YulBlock","src":"6267:571:75","statements":[{"nativeSrc":"6277:42:75","nodeType":"YulVariableDeclaration","src":"6277:42:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6295:7:75","nodeType":"YulIdentifier","src":"6295:7:75"},{"name":"headStart","nativeSrc":"6304:9:75","nodeType":"YulIdentifier","src":"6304:9:75"}],"functionName":{"name":"sub","nativeSrc":"6291:3:75","nodeType":"YulIdentifier","src":"6291:3:75"},"nativeSrc":"6291:23:75","nodeType":"YulFunctionCall","src":"6291:23:75"},{"kind":"number","nativeSrc":"6316:2:75","nodeType":"YulLiteral","src":"6316:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6287:3:75","nodeType":"YulIdentifier","src":"6287:3:75"},"nativeSrc":"6287:32:75","nodeType":"YulFunctionCall","src":"6287:32:75"},"variables":[{"name":"_1","nativeSrc":"6281:2:75","nodeType":"YulTypedName","src":"6281:2:75","type":""}]},{"body":{"nativeSrc":"6334:16:75","nodeType":"YulBlock","src":"6334:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6343:1:75","nodeType":"YulLiteral","src":"6343:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6346:1:75","nodeType":"YulLiteral","src":"6346:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6336:6:75","nodeType":"YulIdentifier","src":"6336:6:75"},"nativeSrc":"6336:12:75","nodeType":"YulFunctionCall","src":"6336:12:75"},"nativeSrc":"6336:12:75","nodeType":"YulExpressionStatement","src":"6336:12:75"}]},"condition":{"name":"_1","nativeSrc":"6331:2:75","nodeType":"YulIdentifier","src":"6331:2:75"},"nativeSrc":"6328:22:75","nodeType":"YulIf","src":"6328:22:75"},{"nativeSrc":"6359:7:75","nodeType":"YulAssignment","src":"6359:7:75","value":{"kind":"number","nativeSrc":"6365:1:75","nodeType":"YulLiteral","src":"6365:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"6359:2:75","nodeType":"YulIdentifier","src":"6359:2:75"}]},{"nativeSrc":"6375:15:75","nodeType":"YulVariableDeclaration","src":"6375:15:75","value":{"kind":"number","nativeSrc":"6389:1:75","nodeType":"YulLiteral","src":"6389:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"6379:6:75","nodeType":"YulTypedName","src":"6379:6:75","type":""}]},{"nativeSrc":"6399:19:75","nodeType":"YulAssignment","src":"6399:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"6415:2:75","nodeType":"YulLiteral","src":"6415:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"6409:5:75","nodeType":"YulIdentifier","src":"6409:5:75"},"nativeSrc":"6409:9:75","nodeType":"YulFunctionCall","src":"6409:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"6399:6:75","nodeType":"YulIdentifier","src":"6399:6:75"}]},{"nativeSrc":"6427:33:75","nodeType":"YulVariableDeclaration","src":"6427:33:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"6449:6:75","nodeType":"YulIdentifier","src":"6449:6:75"},{"kind":"number","nativeSrc":"6457:2:75","nodeType":"YulLiteral","src":"6457:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6445:3:75","nodeType":"YulIdentifier","src":"6445:3:75"},"nativeSrc":"6445:15:75","nodeType":"YulFunctionCall","src":"6445:15:75"},"variables":[{"name":"newFreePtr","nativeSrc":"6431:10:75","nodeType":"YulTypedName","src":"6431:10:75","type":""}]},{"body":{"nativeSrc":"6535:22:75","nodeType":"YulBlock","src":"6535:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"6537:16:75","nodeType":"YulIdentifier","src":"6537:16:75"},"nativeSrc":"6537:18:75","nodeType":"YulFunctionCall","src":"6537:18:75"},"nativeSrc":"6537:18:75","nodeType":"YulExpressionStatement","src":"6537:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"6478:10:75","nodeType":"YulIdentifier","src":"6478:10:75"},{"kind":"number","nativeSrc":"6490:18:75","nodeType":"YulLiteral","src":"6490:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6475:2:75","nodeType":"YulIdentifier","src":"6475:2:75"},"nativeSrc":"6475:34:75","nodeType":"YulFunctionCall","src":"6475:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"6514:10:75","nodeType":"YulIdentifier","src":"6514:10:75"},{"name":"memPtr","nativeSrc":"6526:6:75","nodeType":"YulIdentifier","src":"6526:6:75"}],"functionName":{"name":"lt","nativeSrc":"6511:2:75","nodeType":"YulIdentifier","src":"6511:2:75"},"nativeSrc":"6511:22:75","nodeType":"YulFunctionCall","src":"6511:22:75"}],"functionName":{"name":"or","nativeSrc":"6472:2:75","nodeType":"YulIdentifier","src":"6472:2:75"},"nativeSrc":"6472:62:75","nodeType":"YulFunctionCall","src":"6472:62:75"},"nativeSrc":"6469:88:75","nodeType":"YulIf","src":"6469:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6573:2:75","nodeType":"YulLiteral","src":"6573:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"6577:10:75","nodeType":"YulIdentifier","src":"6577:10:75"}],"functionName":{"name":"mstore","nativeSrc":"6566:6:75","nodeType":"YulIdentifier","src":"6566:6:75"},"nativeSrc":"6566:22:75","nodeType":"YulFunctionCall","src":"6566:22:75"},"nativeSrc":"6566:22:75","nodeType":"YulExpressionStatement","src":"6566:22:75"},{"nativeSrc":"6597:29:75","nodeType":"YulVariableDeclaration","src":"6597:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6616:9:75","nodeType":"YulIdentifier","src":"6616:9:75"}],"functionName":{"name":"mload","nativeSrc":"6610:5:75","nodeType":"YulIdentifier","src":"6610:5:75"},"nativeSrc":"6610:16:75","nodeType":"YulFunctionCall","src":"6610:16:75"},"variables":[{"name":"value","nativeSrc":"6601:5:75","nodeType":"YulTypedName","src":"6601:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6660:5:75","nodeType":"YulIdentifier","src":"6660:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6635:24:75","nodeType":"YulIdentifier","src":"6635:24:75"},"nativeSrc":"6635:31:75","nodeType":"YulFunctionCall","src":"6635:31:75"},"nativeSrc":"6635:31:75","nodeType":"YulExpressionStatement","src":"6635:31:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"6682:6:75","nodeType":"YulIdentifier","src":"6682:6:75"},{"name":"value","nativeSrc":"6690:5:75","nodeType":"YulIdentifier","src":"6690:5:75"}],"functionName":{"name":"mstore","nativeSrc":"6675:6:75","nodeType":"YulIdentifier","src":"6675:6:75"},"nativeSrc":"6675:21:75","nodeType":"YulFunctionCall","src":"6675:21:75"},"nativeSrc":"6675:21:75","nodeType":"YulExpressionStatement","src":"6675:21:75"},{"nativeSrc":"6705:16:75","nodeType":"YulVariableDeclaration","src":"6705:16:75","value":{"kind":"number","nativeSrc":"6720:1:75","nodeType":"YulLiteral","src":"6720:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"6709:7:75","nodeType":"YulTypedName","src":"6709:7:75","type":""}]},{"nativeSrc":"6730:36:75","nodeType":"YulAssignment","src":"6730:36:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6751:9:75","nodeType":"YulIdentifier","src":"6751:9:75"},{"kind":"number","nativeSrc":"6762:2:75","nodeType":"YulLiteral","src":"6762:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6747:3:75","nodeType":"YulIdentifier","src":"6747:3:75"},"nativeSrc":"6747:18:75","nodeType":"YulFunctionCall","src":"6747:18:75"}],"functionName":{"name":"mload","nativeSrc":"6741:5:75","nodeType":"YulIdentifier","src":"6741:5:75"},"nativeSrc":"6741:25:75","nodeType":"YulFunctionCall","src":"6741:25:75"},"variableNames":[{"name":"value_1","nativeSrc":"6730:7:75","nodeType":"YulIdentifier","src":"6730:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"6786:6:75","nodeType":"YulIdentifier","src":"6786:6:75"},{"kind":"number","nativeSrc":"6794:2:75","nodeType":"YulLiteral","src":"6794:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6782:3:75","nodeType":"YulIdentifier","src":"6782:3:75"},"nativeSrc":"6782:15:75","nodeType":"YulFunctionCall","src":"6782:15:75"},{"name":"value_1","nativeSrc":"6799:7:75","nodeType":"YulIdentifier","src":"6799:7:75"}],"functionName":{"name":"mstore","nativeSrc":"6775:6:75","nodeType":"YulIdentifier","src":"6775:6:75"},"nativeSrc":"6775:32:75","nodeType":"YulFunctionCall","src":"6775:32:75"},"nativeSrc":"6775:32:75","nodeType":"YulExpressionStatement","src":"6775:32:75"},{"nativeSrc":"6816:16:75","nodeType":"YulAssignment","src":"6816:16:75","value":{"name":"memPtr","nativeSrc":"6826:6:75","nodeType":"YulIdentifier","src":"6826:6:75"},"variableNames":[{"name":"value0","nativeSrc":"6816:6:75","nodeType":"YulIdentifier","src":"6816:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_RewardOwed_$22205_memory_ptr_fromMemory","nativeSrc":"6157:681:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6233:9:75","nodeType":"YulTypedName","src":"6233:9:75","type":""},{"name":"dataEnd","nativeSrc":"6244:7:75","nodeType":"YulTypedName","src":"6244:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6256:6:75","nodeType":"YulTypedName","src":"6256:6:75","type":""}],"src":"6157:681:75"},{"body":{"nativeSrc":"6954:441:75","nodeType":"YulBlock","src":"6954:441:75","statements":[{"body":{"nativeSrc":"7000:16:75","nodeType":"YulBlock","src":"7000:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7009:1:75","nodeType":"YulLiteral","src":"7009:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7012:1:75","nodeType":"YulLiteral","src":"7012:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7002:6:75","nodeType":"YulIdentifier","src":"7002:6:75"},"nativeSrc":"7002:12:75","nodeType":"YulFunctionCall","src":"7002:12:75"},"nativeSrc":"7002:12:75","nodeType":"YulExpressionStatement","src":"7002:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6975:7:75","nodeType":"YulIdentifier","src":"6975:7:75"},{"name":"headStart","nativeSrc":"6984:9:75","nodeType":"YulIdentifier","src":"6984:9:75"}],"functionName":{"name":"sub","nativeSrc":"6971:3:75","nodeType":"YulIdentifier","src":"6971:3:75"},"nativeSrc":"6971:23:75","nodeType":"YulFunctionCall","src":"6971:23:75"},{"kind":"number","nativeSrc":"6996:2:75","nodeType":"YulLiteral","src":"6996:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6967:3:75","nodeType":"YulIdentifier","src":"6967:3:75"},"nativeSrc":"6967:32:75","nodeType":"YulFunctionCall","src":"6967:32:75"},"nativeSrc":"6964:52:75","nodeType":"YulIf","src":"6964:52:75"},{"nativeSrc":"7025:29:75","nodeType":"YulVariableDeclaration","src":"7025:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7044:9:75","nodeType":"YulIdentifier","src":"7044:9:75"}],"functionName":{"name":"mload","nativeSrc":"7038:5:75","nodeType":"YulIdentifier","src":"7038:5:75"},"nativeSrc":"7038:16:75","nodeType":"YulFunctionCall","src":"7038:16:75"},"variables":[{"name":"value","nativeSrc":"7029:5:75","nodeType":"YulTypedName","src":"7029:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7088:5:75","nodeType":"YulIdentifier","src":"7088:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7063:24:75","nodeType":"YulIdentifier","src":"7063:24:75"},"nativeSrc":"7063:31:75","nodeType":"YulFunctionCall","src":"7063:31:75"},"nativeSrc":"7063:31:75","nodeType":"YulExpressionStatement","src":"7063:31:75"},{"nativeSrc":"7103:15:75","nodeType":"YulAssignment","src":"7103:15:75","value":{"name":"value","nativeSrc":"7113:5:75","nodeType":"YulIdentifier","src":"7113:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7103:6:75","nodeType":"YulIdentifier","src":"7103:6:75"}]},{"nativeSrc":"7127:40:75","nodeType":"YulVariableDeclaration","src":"7127:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7152:9:75","nodeType":"YulIdentifier","src":"7152:9:75"},{"kind":"number","nativeSrc":"7163:2:75","nodeType":"YulLiteral","src":"7163:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7148:3:75","nodeType":"YulIdentifier","src":"7148:3:75"},"nativeSrc":"7148:18:75","nodeType":"YulFunctionCall","src":"7148:18:75"}],"functionName":{"name":"mload","nativeSrc":"7142:5:75","nodeType":"YulIdentifier","src":"7142:5:75"},"nativeSrc":"7142:25:75","nodeType":"YulFunctionCall","src":"7142:25:75"},"variables":[{"name":"value_1","nativeSrc":"7131:7:75","nodeType":"YulTypedName","src":"7131:7:75","type":""}]},{"body":{"nativeSrc":"7233:16:75","nodeType":"YulBlock","src":"7233:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7242:1:75","nodeType":"YulLiteral","src":"7242:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7245:1:75","nodeType":"YulLiteral","src":"7245:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7235:6:75","nodeType":"YulIdentifier","src":"7235:6:75"},"nativeSrc":"7235:12:75","nodeType":"YulFunctionCall","src":"7235:12:75"},"nativeSrc":"7235:12:75","nodeType":"YulExpressionStatement","src":"7235:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7189:7:75","nodeType":"YulIdentifier","src":"7189:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"7202:7:75","nodeType":"YulIdentifier","src":"7202:7:75"},{"kind":"number","nativeSrc":"7211:18:75","nodeType":"YulLiteral","src":"7211:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"7198:3:75","nodeType":"YulIdentifier","src":"7198:3:75"},"nativeSrc":"7198:32:75","nodeType":"YulFunctionCall","src":"7198:32:75"}],"functionName":{"name":"eq","nativeSrc":"7186:2:75","nodeType":"YulIdentifier","src":"7186:2:75"},"nativeSrc":"7186:45:75","nodeType":"YulFunctionCall","src":"7186:45:75"}],"functionName":{"name":"iszero","nativeSrc":"7179:6:75","nodeType":"YulIdentifier","src":"7179:6:75"},"nativeSrc":"7179:53:75","nodeType":"YulFunctionCall","src":"7179:53:75"},"nativeSrc":"7176:73:75","nodeType":"YulIf","src":"7176:73:75"},{"nativeSrc":"7258:17:75","nodeType":"YulAssignment","src":"7258:17:75","value":{"name":"value_1","nativeSrc":"7268:7:75","nodeType":"YulIdentifier","src":"7268:7:75"},"variableNames":[{"name":"value1","nativeSrc":"7258:6:75","nodeType":"YulIdentifier","src":"7258:6:75"}]},{"nativeSrc":"7284:40:75","nodeType":"YulVariableDeclaration","src":"7284:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7309:9:75","nodeType":"YulIdentifier","src":"7309:9:75"},{"kind":"number","nativeSrc":"7320:2:75","nodeType":"YulLiteral","src":"7320:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7305:3:75","nodeType":"YulIdentifier","src":"7305:3:75"},"nativeSrc":"7305:18:75","nodeType":"YulFunctionCall","src":"7305:18:75"}],"functionName":{"name":"mload","nativeSrc":"7299:5:75","nodeType":"YulIdentifier","src":"7299:5:75"},"nativeSrc":"7299:25:75","nodeType":"YulFunctionCall","src":"7299:25:75"},"variables":[{"name":"value_2","nativeSrc":"7288:7:75","nodeType":"YulTypedName","src":"7288:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"7355:7:75","nodeType":"YulIdentifier","src":"7355:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7333:21:75","nodeType":"YulIdentifier","src":"7333:21:75"},"nativeSrc":"7333:30:75","nodeType":"YulFunctionCall","src":"7333:30:75"},"nativeSrc":"7333:30:75","nodeType":"YulExpressionStatement","src":"7333:30:75"},{"nativeSrc":"7372:17:75","nodeType":"YulAssignment","src":"7372:17:75","value":{"name":"value_2","nativeSrc":"7382:7:75","nodeType":"YulIdentifier","src":"7382:7:75"},"variableNames":[{"name":"value2","nativeSrc":"7372:6:75","nodeType":"YulIdentifier","src":"7372:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint64t_bool_fromMemory","nativeSrc":"6843:552:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6904:9:75","nodeType":"YulTypedName","src":"6904:9:75","type":""},{"name":"dataEnd","nativeSrc":"6915:7:75","nodeType":"YulTypedName","src":"6915:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6927:6:75","nodeType":"YulTypedName","src":"6927:6:75","type":""},{"name":"value1","nativeSrc":"6935:6:75","nodeType":"YulTypedName","src":"6935:6:75","type":""},{"name":"value2","nativeSrc":"6943:6:75","nodeType":"YulTypedName","src":"6943:6:75","type":""}],"src":"6843:552:75"},{"body":{"nativeSrc":"7551:230:75","nodeType":"YulBlock","src":"7551:230:75","statements":[{"nativeSrc":"7561:26:75","nodeType":"YulAssignment","src":"7561:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7573:9:75","nodeType":"YulIdentifier","src":"7573:9:75"},{"kind":"number","nativeSrc":"7584:2:75","nodeType":"YulLiteral","src":"7584:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7569:3:75","nodeType":"YulIdentifier","src":"7569:3:75"},"nativeSrc":"7569:18:75","nodeType":"YulFunctionCall","src":"7569:18:75"},"variableNames":[{"name":"tail","nativeSrc":"7561:4:75","nodeType":"YulIdentifier","src":"7561:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7603:9:75","nodeType":"YulIdentifier","src":"7603:9:75"},{"arguments":[{"name":"value0","nativeSrc":"7618:6:75","nodeType":"YulIdentifier","src":"7618:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7634:3:75","nodeType":"YulLiteral","src":"7634:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7639:1:75","nodeType":"YulLiteral","src":"7639:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7630:3:75","nodeType":"YulIdentifier","src":"7630:3:75"},"nativeSrc":"7630:11:75","nodeType":"YulFunctionCall","src":"7630:11:75"},{"kind":"number","nativeSrc":"7643:1:75","nodeType":"YulLiteral","src":"7643:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7626:3:75","nodeType":"YulIdentifier","src":"7626:3:75"},"nativeSrc":"7626:19:75","nodeType":"YulFunctionCall","src":"7626:19:75"}],"functionName":{"name":"and","nativeSrc":"7614:3:75","nodeType":"YulIdentifier","src":"7614:3:75"},"nativeSrc":"7614:32:75","nodeType":"YulFunctionCall","src":"7614:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7596:6:75","nodeType":"YulIdentifier","src":"7596:6:75"},"nativeSrc":"7596:51:75","nodeType":"YulFunctionCall","src":"7596:51:75"},"nativeSrc":"7596:51:75","nodeType":"YulExpressionStatement","src":"7596:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7667:9:75","nodeType":"YulIdentifier","src":"7667:9:75"},{"kind":"number","nativeSrc":"7678:2:75","nodeType":"YulLiteral","src":"7678:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7663:3:75","nodeType":"YulIdentifier","src":"7663:3:75"},"nativeSrc":"7663:18:75","nodeType":"YulFunctionCall","src":"7663:18:75"},{"arguments":[{"name":"value1","nativeSrc":"7687:6:75","nodeType":"YulIdentifier","src":"7687:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7703:3:75","nodeType":"YulLiteral","src":"7703:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7708:1:75","nodeType":"YulLiteral","src":"7708:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7699:3:75","nodeType":"YulIdentifier","src":"7699:3:75"},"nativeSrc":"7699:11:75","nodeType":"YulFunctionCall","src":"7699:11:75"},{"kind":"number","nativeSrc":"7712:1:75","nodeType":"YulLiteral","src":"7712:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7695:3:75","nodeType":"YulIdentifier","src":"7695:3:75"},"nativeSrc":"7695:19:75","nodeType":"YulFunctionCall","src":"7695:19:75"}],"functionName":{"name":"and","nativeSrc":"7683:3:75","nodeType":"YulIdentifier","src":"7683:3:75"},"nativeSrc":"7683:32:75","nodeType":"YulFunctionCall","src":"7683:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7656:6:75","nodeType":"YulIdentifier","src":"7656:6:75"},"nativeSrc":"7656:60:75","nodeType":"YulFunctionCall","src":"7656:60:75"},"nativeSrc":"7656:60:75","nodeType":"YulExpressionStatement","src":"7656:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7736:9:75","nodeType":"YulIdentifier","src":"7736:9:75"},{"kind":"number","nativeSrc":"7747:2:75","nodeType":"YulLiteral","src":"7747:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7732:3:75","nodeType":"YulIdentifier","src":"7732:3:75"},"nativeSrc":"7732:18:75","nodeType":"YulFunctionCall","src":"7732:18:75"},{"arguments":[{"arguments":[{"name":"value2","nativeSrc":"7766:6:75","nodeType":"YulIdentifier","src":"7766:6:75"}],"functionName":{"name":"iszero","nativeSrc":"7759:6:75","nodeType":"YulIdentifier","src":"7759:6:75"},"nativeSrc":"7759:14:75","nodeType":"YulFunctionCall","src":"7759:14:75"}],"functionName":{"name":"iszero","nativeSrc":"7752:6:75","nodeType":"YulIdentifier","src":"7752:6:75"},"nativeSrc":"7752:22:75","nodeType":"YulFunctionCall","src":"7752:22:75"}],"functionName":{"name":"mstore","nativeSrc":"7725:6:75","nodeType":"YulIdentifier","src":"7725:6:75"},"nativeSrc":"7725:50:75","nodeType":"YulFunctionCall","src":"7725:50:75"},"nativeSrc":"7725:50:75","nodeType":"YulExpressionStatement","src":"7725:50:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bool__to_t_address_t_address_t_bool__fromStack_reversed","nativeSrc":"7400:381:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7504:9:75","nodeType":"YulTypedName","src":"7504:9:75","type":""},{"name":"value2","nativeSrc":"7515:6:75","nodeType":"YulTypedName","src":"7515:6:75","type":""},{"name":"value1","nativeSrc":"7523:6:75","nodeType":"YulTypedName","src":"7523:6:75","type":""},{"name":"value0","nativeSrc":"7531:6:75","nodeType":"YulTypedName","src":"7531:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7542:4:75","nodeType":"YulTypedName","src":"7542:4:75","type":""}],"src":"7400:381:75"},{"body":{"nativeSrc":"7841:325:75","nodeType":"YulBlock","src":"7841:325:75","statements":[{"nativeSrc":"7851:22:75","nodeType":"YulAssignment","src":"7851:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"7865:1:75","nodeType":"YulLiteral","src":"7865:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"7868:4:75","nodeType":"YulIdentifier","src":"7868:4:75"}],"functionName":{"name":"shr","nativeSrc":"7861:3:75","nodeType":"YulIdentifier","src":"7861:3:75"},"nativeSrc":"7861:12:75","nodeType":"YulFunctionCall","src":"7861:12:75"},"variableNames":[{"name":"length","nativeSrc":"7851:6:75","nodeType":"YulIdentifier","src":"7851:6:75"}]},{"nativeSrc":"7882:38:75","nodeType":"YulVariableDeclaration","src":"7882:38:75","value":{"arguments":[{"name":"data","nativeSrc":"7912:4:75","nodeType":"YulIdentifier","src":"7912:4:75"},{"kind":"number","nativeSrc":"7918:1:75","nodeType":"YulLiteral","src":"7918:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"7908:3:75","nodeType":"YulIdentifier","src":"7908:3:75"},"nativeSrc":"7908:12:75","nodeType":"YulFunctionCall","src":"7908:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"7886:18:75","nodeType":"YulTypedName","src":"7886:18:75","type":""}]},{"body":{"nativeSrc":"7959:31:75","nodeType":"YulBlock","src":"7959:31:75","statements":[{"nativeSrc":"7961:27:75","nodeType":"YulAssignment","src":"7961:27:75","value":{"arguments":[{"name":"length","nativeSrc":"7975:6:75","nodeType":"YulIdentifier","src":"7975:6:75"},{"kind":"number","nativeSrc":"7983:4:75","nodeType":"YulLiteral","src":"7983:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"7971:3:75","nodeType":"YulIdentifier","src":"7971:3:75"},"nativeSrc":"7971:17:75","nodeType":"YulFunctionCall","src":"7971:17:75"},"variableNames":[{"name":"length","nativeSrc":"7961:6:75","nodeType":"YulIdentifier","src":"7961:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"7939:18:75","nodeType":"YulIdentifier","src":"7939:18:75"}],"functionName":{"name":"iszero","nativeSrc":"7932:6:75","nodeType":"YulIdentifier","src":"7932:6:75"},"nativeSrc":"7932:26:75","nodeType":"YulFunctionCall","src":"7932:26:75"},"nativeSrc":"7929:61:75","nodeType":"YulIf","src":"7929:61:75"},{"body":{"nativeSrc":"8049:111:75","nodeType":"YulBlock","src":"8049:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8070:1:75","nodeType":"YulLiteral","src":"8070:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8077:3:75","nodeType":"YulLiteral","src":"8077:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"8082:10:75","nodeType":"YulLiteral","src":"8082:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8073:3:75","nodeType":"YulIdentifier","src":"8073:3:75"},"nativeSrc":"8073:20:75","nodeType":"YulFunctionCall","src":"8073:20:75"}],"functionName":{"name":"mstore","nativeSrc":"8063:6:75","nodeType":"YulIdentifier","src":"8063:6:75"},"nativeSrc":"8063:31:75","nodeType":"YulFunctionCall","src":"8063:31:75"},"nativeSrc":"8063:31:75","nodeType":"YulExpressionStatement","src":"8063:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8114:1:75","nodeType":"YulLiteral","src":"8114:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"8117:4:75","nodeType":"YulLiteral","src":"8117:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8107:6:75","nodeType":"YulIdentifier","src":"8107:6:75"},"nativeSrc":"8107:15:75","nodeType":"YulFunctionCall","src":"8107:15:75"},"nativeSrc":"8107:15:75","nodeType":"YulExpressionStatement","src":"8107:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8142:1:75","nodeType":"YulLiteral","src":"8142:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8145:4:75","nodeType":"YulLiteral","src":"8145:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8135:6:75","nodeType":"YulIdentifier","src":"8135:6:75"},"nativeSrc":"8135:15:75","nodeType":"YulFunctionCall","src":"8135:15:75"},"nativeSrc":"8135:15:75","nodeType":"YulExpressionStatement","src":"8135:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8005:18:75","nodeType":"YulIdentifier","src":"8005:18:75"},{"arguments":[{"name":"length","nativeSrc":"8028:6:75","nodeType":"YulIdentifier","src":"8028:6:75"},{"kind":"number","nativeSrc":"8036:2:75","nodeType":"YulLiteral","src":"8036:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8025:2:75","nodeType":"YulIdentifier","src":"8025:2:75"},"nativeSrc":"8025:14:75","nodeType":"YulFunctionCall","src":"8025:14:75"}],"functionName":{"name":"eq","nativeSrc":"8002:2:75","nodeType":"YulIdentifier","src":"8002:2:75"},"nativeSrc":"8002:38:75","nodeType":"YulFunctionCall","src":"8002:38:75"},"nativeSrc":"7999:161:75","nodeType":"YulIf","src":"7999:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"7786:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"7821:4:75","nodeType":"YulTypedName","src":"7821:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"7830:6:75","nodeType":"YulTypedName","src":"7830:6:75","type":""}],"src":"7786:380:75"},{"body":{"nativeSrc":"8234:420:75","nodeType":"YulBlock","src":"8234:420:75","statements":[{"body":{"nativeSrc":"8283:16:75","nodeType":"YulBlock","src":"8283:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8292:1:75","nodeType":"YulLiteral","src":"8292:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8295:1:75","nodeType":"YulLiteral","src":"8295:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8285:6:75","nodeType":"YulIdentifier","src":"8285:6:75"},"nativeSrc":"8285:12:75","nodeType":"YulFunctionCall","src":"8285:12:75"},"nativeSrc":"8285:12:75","nodeType":"YulExpressionStatement","src":"8285:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8262:6:75","nodeType":"YulIdentifier","src":"8262:6:75"},{"kind":"number","nativeSrc":"8270:4:75","nodeType":"YulLiteral","src":"8270:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8258:3:75","nodeType":"YulIdentifier","src":"8258:3:75"},"nativeSrc":"8258:17:75","nodeType":"YulFunctionCall","src":"8258:17:75"},{"name":"end","nativeSrc":"8277:3:75","nodeType":"YulIdentifier","src":"8277:3:75"}],"functionName":{"name":"slt","nativeSrc":"8254:3:75","nodeType":"YulIdentifier","src":"8254:3:75"},"nativeSrc":"8254:27:75","nodeType":"YulFunctionCall","src":"8254:27:75"}],"functionName":{"name":"iszero","nativeSrc":"8247:6:75","nodeType":"YulIdentifier","src":"8247:6:75"},"nativeSrc":"8247:35:75","nodeType":"YulFunctionCall","src":"8247:35:75"},"nativeSrc":"8244:55:75","nodeType":"YulIf","src":"8244:55:75"},{"nativeSrc":"8308:27:75","nodeType":"YulVariableDeclaration","src":"8308:27:75","value":{"arguments":[{"name":"offset","nativeSrc":"8328:6:75","nodeType":"YulIdentifier","src":"8328:6:75"}],"functionName":{"name":"mload","nativeSrc":"8322:5:75","nodeType":"YulIdentifier","src":"8322:5:75"},"nativeSrc":"8322:13:75","nodeType":"YulFunctionCall","src":"8322:13:75"},"variables":[{"name":"length","nativeSrc":"8312:6:75","nodeType":"YulTypedName","src":"8312:6:75","type":""}]},{"nativeSrc":"8344:67:75","nodeType":"YulVariableDeclaration","src":"8344:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8403:6:75","nodeType":"YulIdentifier","src":"8403:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"8375:27:75","nodeType":"YulIdentifier","src":"8375:27:75"},"nativeSrc":"8375:35:75","nodeType":"YulFunctionCall","src":"8375:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"8359:15:75","nodeType":"YulIdentifier","src":"8359:15:75"},"nativeSrc":"8359:52:75","nodeType":"YulFunctionCall","src":"8359:52:75"},"variables":[{"name":"array_1","nativeSrc":"8348:7:75","nodeType":"YulTypedName","src":"8348:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"8427:7:75","nodeType":"YulIdentifier","src":"8427:7:75"},{"name":"length","nativeSrc":"8436:6:75","nodeType":"YulIdentifier","src":"8436:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8420:6:75","nodeType":"YulIdentifier","src":"8420:6:75"},"nativeSrc":"8420:23:75","nodeType":"YulFunctionCall","src":"8420:23:75"},"nativeSrc":"8420:23:75","nodeType":"YulExpressionStatement","src":"8420:23:75"},{"body":{"nativeSrc":"8495:16:75","nodeType":"YulBlock","src":"8495:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8504:1:75","nodeType":"YulLiteral","src":"8504:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8507:1:75","nodeType":"YulLiteral","src":"8507:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8497:6:75","nodeType":"YulIdentifier","src":"8497:6:75"},"nativeSrc":"8497:12:75","nodeType":"YulFunctionCall","src":"8497:12:75"},"nativeSrc":"8497:12:75","nodeType":"YulExpressionStatement","src":"8497:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8466:6:75","nodeType":"YulIdentifier","src":"8466:6:75"},{"name":"length","nativeSrc":"8474:6:75","nodeType":"YulIdentifier","src":"8474:6:75"}],"functionName":{"name":"add","nativeSrc":"8462:3:75","nodeType":"YulIdentifier","src":"8462:3:75"},"nativeSrc":"8462:19:75","nodeType":"YulFunctionCall","src":"8462:19:75"},{"kind":"number","nativeSrc":"8483:4:75","nodeType":"YulLiteral","src":"8483:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8458:3:75","nodeType":"YulIdentifier","src":"8458:3:75"},"nativeSrc":"8458:30:75","nodeType":"YulFunctionCall","src":"8458:30:75"},{"name":"end","nativeSrc":"8490:3:75","nodeType":"YulIdentifier","src":"8490:3:75"}],"functionName":{"name":"gt","nativeSrc":"8455:2:75","nodeType":"YulIdentifier","src":"8455:2:75"},"nativeSrc":"8455:39:75","nodeType":"YulFunctionCall","src":"8455:39:75"},"nativeSrc":"8452:59:75","nodeType":"YulIf","src":"8452:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"8530:7:75","nodeType":"YulIdentifier","src":"8530:7:75"},{"kind":"number","nativeSrc":"8539:4:75","nodeType":"YulLiteral","src":"8539:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8526:3:75","nodeType":"YulIdentifier","src":"8526:3:75"},"nativeSrc":"8526:18:75","nodeType":"YulFunctionCall","src":"8526:18:75"},{"arguments":[{"name":"offset","nativeSrc":"8550:6:75","nodeType":"YulIdentifier","src":"8550:6:75"},{"kind":"number","nativeSrc":"8558:4:75","nodeType":"YulLiteral","src":"8558:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8546:3:75","nodeType":"YulIdentifier","src":"8546:3:75"},"nativeSrc":"8546:17:75","nodeType":"YulFunctionCall","src":"8546:17:75"},{"name":"length","nativeSrc":"8565:6:75","nodeType":"YulIdentifier","src":"8565:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"8520:5:75","nodeType":"YulIdentifier","src":"8520:5:75"},"nativeSrc":"8520:52:75","nodeType":"YulFunctionCall","src":"8520:52:75"},"nativeSrc":"8520:52:75","nodeType":"YulExpressionStatement","src":"8520:52:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"8596:7:75","nodeType":"YulIdentifier","src":"8596:7:75"},{"name":"length","nativeSrc":"8605:6:75","nodeType":"YulIdentifier","src":"8605:6:75"}],"functionName":{"name":"add","nativeSrc":"8592:3:75","nodeType":"YulIdentifier","src":"8592:3:75"},"nativeSrc":"8592:20:75","nodeType":"YulFunctionCall","src":"8592:20:75"},{"kind":"number","nativeSrc":"8614:4:75","nodeType":"YulLiteral","src":"8614:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8588:3:75","nodeType":"YulIdentifier","src":"8588:3:75"},"nativeSrc":"8588:31:75","nodeType":"YulFunctionCall","src":"8588:31:75"},{"kind":"number","nativeSrc":"8621:1:75","nodeType":"YulLiteral","src":"8621:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8581:6:75","nodeType":"YulIdentifier","src":"8581:6:75"},"nativeSrc":"8581:42:75","nodeType":"YulFunctionCall","src":"8581:42:75"},"nativeSrc":"8581:42:75","nodeType":"YulExpressionStatement","src":"8581:42:75"},{"nativeSrc":"8632:16:75","nodeType":"YulAssignment","src":"8632:16:75","value":{"name":"array_1","nativeSrc":"8641:7:75","nodeType":"YulIdentifier","src":"8641:7:75"},"variableNames":[{"name":"array","nativeSrc":"8632:5:75","nodeType":"YulIdentifier","src":"8632:5:75"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"8171:483:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8208:6:75","nodeType":"YulTypedName","src":"8208:6:75","type":""},{"name":"end","nativeSrc":"8216:3:75","nodeType":"YulTypedName","src":"8216:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"8224:5:75","nodeType":"YulTypedName","src":"8224:5:75","type":""}],"src":"8171:483:75"},{"body":{"nativeSrc":"8767:741:75","nodeType":"YulBlock","src":"8767:741:75","statements":[{"body":{"nativeSrc":"8813:16:75","nodeType":"YulBlock","src":"8813:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8822:1:75","nodeType":"YulLiteral","src":"8822:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8825:1:75","nodeType":"YulLiteral","src":"8825:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8815:6:75","nodeType":"YulIdentifier","src":"8815:6:75"},"nativeSrc":"8815:12:75","nodeType":"YulFunctionCall","src":"8815:12:75"},"nativeSrc":"8815:12:75","nodeType":"YulExpressionStatement","src":"8815:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8788:7:75","nodeType":"YulIdentifier","src":"8788:7:75"},{"name":"headStart","nativeSrc":"8797:9:75","nodeType":"YulIdentifier","src":"8797:9:75"}],"functionName":{"name":"sub","nativeSrc":"8784:3:75","nodeType":"YulIdentifier","src":"8784:3:75"},"nativeSrc":"8784:23:75","nodeType":"YulFunctionCall","src":"8784:23:75"},{"kind":"number","nativeSrc":"8809:2:75","nodeType":"YulLiteral","src":"8809:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8780:3:75","nodeType":"YulIdentifier","src":"8780:3:75"},"nativeSrc":"8780:32:75","nodeType":"YulFunctionCall","src":"8780:32:75"},"nativeSrc":"8777:52:75","nodeType":"YulIf","src":"8777:52:75"},{"nativeSrc":"8838:30:75","nodeType":"YulVariableDeclaration","src":"8838:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8858:9:75","nodeType":"YulIdentifier","src":"8858:9:75"}],"functionName":{"name":"mload","nativeSrc":"8852:5:75","nodeType":"YulIdentifier","src":"8852:5:75"},"nativeSrc":"8852:16:75","nodeType":"YulFunctionCall","src":"8852:16:75"},"variables":[{"name":"offset","nativeSrc":"8842:6:75","nodeType":"YulTypedName","src":"8842:6:75","type":""}]},{"body":{"nativeSrc":"8911:16:75","nodeType":"YulBlock","src":"8911:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8920:1:75","nodeType":"YulLiteral","src":"8920:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8923:1:75","nodeType":"YulLiteral","src":"8923:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8913:6:75","nodeType":"YulIdentifier","src":"8913:6:75"},"nativeSrc":"8913:12:75","nodeType":"YulFunctionCall","src":"8913:12:75"},"nativeSrc":"8913:12:75","nodeType":"YulExpressionStatement","src":"8913:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8883:6:75","nodeType":"YulIdentifier","src":"8883:6:75"},{"kind":"number","nativeSrc":"8891:18:75","nodeType":"YulLiteral","src":"8891:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8880:2:75","nodeType":"YulIdentifier","src":"8880:2:75"},"nativeSrc":"8880:30:75","nodeType":"YulFunctionCall","src":"8880:30:75"},"nativeSrc":"8877:50:75","nodeType":"YulIf","src":"8877:50:75"},{"nativeSrc":"8936:32:75","nodeType":"YulVariableDeclaration","src":"8936:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8950:9:75","nodeType":"YulIdentifier","src":"8950:9:75"},{"name":"offset","nativeSrc":"8961:6:75","nodeType":"YulIdentifier","src":"8961:6:75"}],"functionName":{"name":"add","nativeSrc":"8946:3:75","nodeType":"YulIdentifier","src":"8946:3:75"},"nativeSrc":"8946:22:75","nodeType":"YulFunctionCall","src":"8946:22:75"},"variables":[{"name":"_1","nativeSrc":"8940:2:75","nodeType":"YulTypedName","src":"8940:2:75","type":""}]},{"body":{"nativeSrc":"9008:16:75","nodeType":"YulBlock","src":"9008:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9017:1:75","nodeType":"YulLiteral","src":"9017:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9020:1:75","nodeType":"YulLiteral","src":"9020:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9010:6:75","nodeType":"YulIdentifier","src":"9010:6:75"},"nativeSrc":"9010:12:75","nodeType":"YulFunctionCall","src":"9010:12:75"},"nativeSrc":"9010:12:75","nodeType":"YulExpressionStatement","src":"9010:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8988:7:75","nodeType":"YulIdentifier","src":"8988:7:75"},{"name":"_1","nativeSrc":"8997:2:75","nodeType":"YulIdentifier","src":"8997:2:75"}],"functionName":{"name":"sub","nativeSrc":"8984:3:75","nodeType":"YulIdentifier","src":"8984:3:75"},"nativeSrc":"8984:16:75","nodeType":"YulFunctionCall","src":"8984:16:75"},{"kind":"number","nativeSrc":"9002:4:75","nodeType":"YulLiteral","src":"9002:4:75","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"8980:3:75","nodeType":"YulIdentifier","src":"8980:3:75"},"nativeSrc":"8980:27:75","nodeType":"YulFunctionCall","src":"8980:27:75"},"nativeSrc":"8977:47:75","nodeType":"YulIf","src":"8977:47:75"},{"nativeSrc":"9033:35:75","nodeType":"YulVariableDeclaration","src":"9033:35:75","value":{"arguments":[],"functionName":{"name":"allocate_memory_1590","nativeSrc":"9046:20:75","nodeType":"YulIdentifier","src":"9046:20:75"},"nativeSrc":"9046:22:75","nodeType":"YulFunctionCall","src":"9046:22:75"},"variables":[{"name":"value","nativeSrc":"9037:5:75","nodeType":"YulTypedName","src":"9037:5:75","type":""}]},{"nativeSrc":"9077:24:75","nodeType":"YulVariableDeclaration","src":"9077:24:75","value":{"arguments":[{"name":"_1","nativeSrc":"9098:2:75","nodeType":"YulIdentifier","src":"9098:2:75"}],"functionName":{"name":"mload","nativeSrc":"9092:5:75","nodeType":"YulIdentifier","src":"9092:5:75"},"nativeSrc":"9092:9:75","nodeType":"YulFunctionCall","src":"9092:9:75"},"variables":[{"name":"value_1","nativeSrc":"9081:7:75","nodeType":"YulTypedName","src":"9081:7:75","type":""}]},{"body":{"nativeSrc":"9136:16:75","nodeType":"YulBlock","src":"9136:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9145:1:75","nodeType":"YulLiteral","src":"9145:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9148:1:75","nodeType":"YulLiteral","src":"9148:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9138:6:75","nodeType":"YulIdentifier","src":"9138:6:75"},"nativeSrc":"9138:12:75","nodeType":"YulFunctionCall","src":"9138:12:75"},"nativeSrc":"9138:12:75","nodeType":"YulExpressionStatement","src":"9138:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9123:7:75","nodeType":"YulIdentifier","src":"9123:7:75"},{"kind":"number","nativeSrc":"9132:1:75","nodeType":"YulLiteral","src":"9132:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"9120:2:75","nodeType":"YulIdentifier","src":"9120:2:75"},"nativeSrc":"9120:14:75","nodeType":"YulFunctionCall","src":"9120:14:75"}],"functionName":{"name":"iszero","nativeSrc":"9113:6:75","nodeType":"YulIdentifier","src":"9113:6:75"},"nativeSrc":"9113:22:75","nodeType":"YulFunctionCall","src":"9113:22:75"},"nativeSrc":"9110:42:75","nodeType":"YulIf","src":"9110:42:75"},{"expression":{"arguments":[{"name":"value","nativeSrc":"9168:5:75","nodeType":"YulIdentifier","src":"9168:5:75"},{"name":"value_1","nativeSrc":"9175:7:75","nodeType":"YulIdentifier","src":"9175:7:75"}],"functionName":{"name":"mstore","nativeSrc":"9161:6:75","nodeType":"YulIdentifier","src":"9161:6:75"},"nativeSrc":"9161:22:75","nodeType":"YulFunctionCall","src":"9161:22:75"},"nativeSrc":"9161:22:75","nodeType":"YulExpressionStatement","src":"9161:22:75"},{"nativeSrc":"9192:16:75","nodeType":"YulVariableDeclaration","src":"9192:16:75","value":{"kind":"number","nativeSrc":"9207:1:75","nodeType":"YulLiteral","src":"9207:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"9196:7:75","nodeType":"YulTypedName","src":"9196:7:75","type":""}]},{"nativeSrc":"9217:29:75","nodeType":"YulAssignment","src":"9217:29:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9238:2:75","nodeType":"YulIdentifier","src":"9238:2:75"},{"kind":"number","nativeSrc":"9242:2:75","nodeType":"YulLiteral","src":"9242:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9234:3:75","nodeType":"YulIdentifier","src":"9234:3:75"},"nativeSrc":"9234:11:75","nodeType":"YulFunctionCall","src":"9234:11:75"}],"functionName":{"name":"mload","nativeSrc":"9228:5:75","nodeType":"YulIdentifier","src":"9228:5:75"},"nativeSrc":"9228:18:75","nodeType":"YulFunctionCall","src":"9228:18:75"},"variableNames":[{"name":"value_2","nativeSrc":"9217:7:75","nodeType":"YulIdentifier","src":"9217:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9266:5:75","nodeType":"YulIdentifier","src":"9266:5:75"},{"kind":"number","nativeSrc":"9273:2:75","nodeType":"YulLiteral","src":"9273:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9262:3:75","nodeType":"YulIdentifier","src":"9262:3:75"},"nativeSrc":"9262:14:75","nodeType":"YulFunctionCall","src":"9262:14:75"},{"name":"value_2","nativeSrc":"9278:7:75","nodeType":"YulIdentifier","src":"9278:7:75"}],"functionName":{"name":"mstore","nativeSrc":"9255:6:75","nodeType":"YulIdentifier","src":"9255:6:75"},"nativeSrc":"9255:31:75","nodeType":"YulFunctionCall","src":"9255:31:75"},"nativeSrc":"9255:31:75","nodeType":"YulExpressionStatement","src":"9255:31:75"},{"nativeSrc":"9295:34:75","nodeType":"YulVariableDeclaration","src":"9295:34:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9321:2:75","nodeType":"YulIdentifier","src":"9321:2:75"},{"kind":"number","nativeSrc":"9325:2:75","nodeType":"YulLiteral","src":"9325:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9317:3:75","nodeType":"YulIdentifier","src":"9317:3:75"},"nativeSrc":"9317:11:75","nodeType":"YulFunctionCall","src":"9317:11:75"}],"functionName":{"name":"mload","nativeSrc":"9311:5:75","nodeType":"YulIdentifier","src":"9311:5:75"},"nativeSrc":"9311:18:75","nodeType":"YulFunctionCall","src":"9311:18:75"},"variables":[{"name":"offset_1","nativeSrc":"9299:8:75","nodeType":"YulTypedName","src":"9299:8:75","type":""}]},{"body":{"nativeSrc":"9374:16:75","nodeType":"YulBlock","src":"9374:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9383:1:75","nodeType":"YulLiteral","src":"9383:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9386:1:75","nodeType":"YulLiteral","src":"9386:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9376:6:75","nodeType":"YulIdentifier","src":"9376:6:75"},"nativeSrc":"9376:12:75","nodeType":"YulFunctionCall","src":"9376:12:75"},"nativeSrc":"9376:12:75","nodeType":"YulExpressionStatement","src":"9376:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"9344:8:75","nodeType":"YulIdentifier","src":"9344:8:75"},{"kind":"number","nativeSrc":"9354:18:75","nodeType":"YulLiteral","src":"9354:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9341:2:75","nodeType":"YulIdentifier","src":"9341:2:75"},"nativeSrc":"9341:32:75","nodeType":"YulFunctionCall","src":"9341:32:75"},"nativeSrc":"9338:52:75","nodeType":"YulIf","src":"9338:52:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"9410:5:75","nodeType":"YulIdentifier","src":"9410:5:75"},{"kind":"number","nativeSrc":"9417:2:75","nodeType":"YulLiteral","src":"9417:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9406:3:75","nodeType":"YulIdentifier","src":"9406:3:75"},"nativeSrc":"9406:14:75","nodeType":"YulFunctionCall","src":"9406:14:75"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"9454:2:75","nodeType":"YulIdentifier","src":"9454:2:75"},{"name":"offset_1","nativeSrc":"9458:8:75","nodeType":"YulIdentifier","src":"9458:8:75"}],"functionName":{"name":"add","nativeSrc":"9450:3:75","nodeType":"YulIdentifier","src":"9450:3:75"},"nativeSrc":"9450:17:75","nodeType":"YulFunctionCall","src":"9450:17:75"},{"name":"dataEnd","nativeSrc":"9469:7:75","nodeType":"YulIdentifier","src":"9469:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"9422:27:75","nodeType":"YulIdentifier","src":"9422:27:75"},"nativeSrc":"9422:55:75","nodeType":"YulFunctionCall","src":"9422:55:75"}],"functionName":{"name":"mstore","nativeSrc":"9399:6:75","nodeType":"YulIdentifier","src":"9399:6:75"},"nativeSrc":"9399:79:75","nodeType":"YulFunctionCall","src":"9399:79:75"},"nativeSrc":"9399:79:75","nodeType":"YulExpressionStatement","src":"9399:79:75"},{"nativeSrc":"9487:15:75","nodeType":"YulAssignment","src":"9487:15:75","value":{"name":"value","nativeSrc":"9497:5:75","nodeType":"YulIdentifier","src":"9497:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9487:6:75","nodeType":"YulIdentifier","src":"9487:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory","nativeSrc":"8659:849:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8733:9:75","nodeType":"YulTypedName","src":"8733:9:75","type":""},{"name":"dataEnd","nativeSrc":"8744:7:75","nodeType":"YulTypedName","src":"8744:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8756:6:75","nodeType":"YulTypedName","src":"8756:6:75","type":""}],"src":"8659:849:75"},{"body":{"nativeSrc":"9788:337:75","nodeType":"YulBlock","src":"9788:337:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9805:9:75","nodeType":"YulIdentifier","src":"9805:9:75"},{"kind":"number","nativeSrc":"9816:3:75","nodeType":"YulLiteral","src":"9816:3:75","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"9798:6:75","nodeType":"YulIdentifier","src":"9798:6:75"},"nativeSrc":"9798:22:75","nodeType":"YulFunctionCall","src":"9798:22:75"},"nativeSrc":"9798:22:75","nodeType":"YulExpressionStatement","src":"9798:22:75"},{"nativeSrc":"9829:65:75","nodeType":"YulAssignment","src":"9829:65:75","value":{"arguments":[{"name":"value0","nativeSrc":"9866:6:75","nodeType":"YulIdentifier","src":"9866:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"9878:9:75","nodeType":"YulIdentifier","src":"9878:9:75"},{"kind":"number","nativeSrc":"9889:3:75","nodeType":"YulLiteral","src":"9889:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"9874:3:75","nodeType":"YulIdentifier","src":"9874:3:75"},"nativeSrc":"9874:19:75","nodeType":"YulFunctionCall","src":"9874:19:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"9837:28:75","nodeType":"YulIdentifier","src":"9837:28:75"},"nativeSrc":"9837:57:75","nodeType":"YulFunctionCall","src":"9837:57:75"},"variableNames":[{"name":"tail","nativeSrc":"9829:4:75","nodeType":"YulIdentifier","src":"9829:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9914:9:75","nodeType":"YulIdentifier","src":"9914:9:75"},{"kind":"number","nativeSrc":"9925:2:75","nodeType":"YulLiteral","src":"9925:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9910:3:75","nodeType":"YulIdentifier","src":"9910:3:75"},"nativeSrc":"9910:18:75","nodeType":"YulFunctionCall","src":"9910:18:75"},{"arguments":[{"name":"value1","nativeSrc":"9934:6:75","nodeType":"YulIdentifier","src":"9934:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9950:3:75","nodeType":"YulLiteral","src":"9950:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"9955:1:75","nodeType":"YulLiteral","src":"9955:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9946:3:75","nodeType":"YulIdentifier","src":"9946:3:75"},"nativeSrc":"9946:11:75","nodeType":"YulFunctionCall","src":"9946:11:75"},{"kind":"number","nativeSrc":"9959:1:75","nodeType":"YulLiteral","src":"9959:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9942:3:75","nodeType":"YulIdentifier","src":"9942:3:75"},"nativeSrc":"9942:19:75","nodeType":"YulFunctionCall","src":"9942:19:75"}],"functionName":{"name":"and","nativeSrc":"9930:3:75","nodeType":"YulIdentifier","src":"9930:3:75"},"nativeSrc":"9930:32:75","nodeType":"YulFunctionCall","src":"9930:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9903:6:75","nodeType":"YulIdentifier","src":"9903:6:75"},"nativeSrc":"9903:60:75","nodeType":"YulFunctionCall","src":"9903:60:75"},"nativeSrc":"9903:60:75","nodeType":"YulExpressionStatement","src":"9903:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9983:9:75","nodeType":"YulIdentifier","src":"9983:9:75"},{"kind":"number","nativeSrc":"9994:2:75","nodeType":"YulLiteral","src":"9994:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9979:3:75","nodeType":"YulIdentifier","src":"9979:3:75"},"nativeSrc":"9979:18:75","nodeType":"YulFunctionCall","src":"9979:18:75"},{"arguments":[{"name":"value2","nativeSrc":"10003:6:75","nodeType":"YulIdentifier","src":"10003:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10019:3:75","nodeType":"YulLiteral","src":"10019:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"10024:1:75","nodeType":"YulLiteral","src":"10024:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10015:3:75","nodeType":"YulIdentifier","src":"10015:3:75"},"nativeSrc":"10015:11:75","nodeType":"YulFunctionCall","src":"10015:11:75"},{"kind":"number","nativeSrc":"10028:1:75","nodeType":"YulLiteral","src":"10028:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10011:3:75","nodeType":"YulIdentifier","src":"10011:3:75"},"nativeSrc":"10011:19:75","nodeType":"YulFunctionCall","src":"10011:19:75"}],"functionName":{"name":"and","nativeSrc":"9999:3:75","nodeType":"YulIdentifier","src":"9999:3:75"},"nativeSrc":"9999:32:75","nodeType":"YulFunctionCall","src":"9999:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9972:6:75","nodeType":"YulIdentifier","src":"9972:6:75"},"nativeSrc":"9972:60:75","nodeType":"YulFunctionCall","src":"9972:60:75"},"nativeSrc":"9972:60:75","nodeType":"YulExpressionStatement","src":"9972:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10052:9:75","nodeType":"YulIdentifier","src":"10052:9:75"},{"kind":"number","nativeSrc":"10063:2:75","nodeType":"YulLiteral","src":"10063:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10048:3:75","nodeType":"YulIdentifier","src":"10048:3:75"},"nativeSrc":"10048:18:75","nodeType":"YulFunctionCall","src":"10048:18:75"},{"name":"value3","nativeSrc":"10068:6:75","nodeType":"YulIdentifier","src":"10068:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10041:6:75","nodeType":"YulIdentifier","src":"10041:6:75"},"nativeSrc":"10041:34:75","nodeType":"YulFunctionCall","src":"10041:34:75"},"nativeSrc":"10041:34:75","nodeType":"YulExpressionStatement","src":"10041:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10095:9:75","nodeType":"YulIdentifier","src":"10095:9:75"},{"kind":"number","nativeSrc":"10106:3:75","nodeType":"YulLiteral","src":"10106:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10091:3:75","nodeType":"YulIdentifier","src":"10091:3:75"},"nativeSrc":"10091:19:75","nodeType":"YulFunctionCall","src":"10091:19:75"},{"name":"value4","nativeSrc":"10112:6:75","nodeType":"YulIdentifier","src":"10112:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10084:6:75","nodeType":"YulIdentifier","src":"10084:6:75"},"nativeSrc":"10084:35:75","nodeType":"YulFunctionCall","src":"10084:35:75"},"nativeSrc":"10084:35:75","nodeType":"YulExpressionStatement","src":"10084:35:75"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"9513:612:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9725:9:75","nodeType":"YulTypedName","src":"9725:9:75","type":""},{"name":"value4","nativeSrc":"9736:6:75","nodeType":"YulTypedName","src":"9736:6:75","type":""},{"name":"value3","nativeSrc":"9744:6:75","nodeType":"YulTypedName","src":"9744:6:75","type":""},{"name":"value2","nativeSrc":"9752:6:75","nodeType":"YulTypedName","src":"9752:6:75","type":""},{"name":"value1","nativeSrc":"9760:6:75","nodeType":"YulTypedName","src":"9760:6:75","type":""},{"name":"value0","nativeSrc":"9768:6:75","nodeType":"YulTypedName","src":"9768:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9779:4:75","nodeType":"YulTypedName","src":"9779:4:75","type":""}],"src":"9513:612:75"},{"body":{"nativeSrc":"10287:188:75","nodeType":"YulBlock","src":"10287:188:75","statements":[{"nativeSrc":"10297:26:75","nodeType":"YulAssignment","src":"10297:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10309:9:75","nodeType":"YulIdentifier","src":"10309:9:75"},{"kind":"number","nativeSrc":"10320:2:75","nodeType":"YulLiteral","src":"10320:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10305:3:75","nodeType":"YulIdentifier","src":"10305:3:75"},"nativeSrc":"10305:18:75","nodeType":"YulFunctionCall","src":"10305:18:75"},"variableNames":[{"name":"tail","nativeSrc":"10297:4:75","nodeType":"YulIdentifier","src":"10297:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10339:9:75","nodeType":"YulIdentifier","src":"10339:9:75"},{"arguments":[{"name":"value0","nativeSrc":"10354:6:75","nodeType":"YulIdentifier","src":"10354:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10370:3:75","nodeType":"YulLiteral","src":"10370:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"10375:1:75","nodeType":"YulLiteral","src":"10375:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10366:3:75","nodeType":"YulIdentifier","src":"10366:3:75"},"nativeSrc":"10366:11:75","nodeType":"YulFunctionCall","src":"10366:11:75"},{"kind":"number","nativeSrc":"10379:1:75","nodeType":"YulLiteral","src":"10379:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10362:3:75","nodeType":"YulIdentifier","src":"10362:3:75"},"nativeSrc":"10362:19:75","nodeType":"YulFunctionCall","src":"10362:19:75"}],"functionName":{"name":"and","nativeSrc":"10350:3:75","nodeType":"YulIdentifier","src":"10350:3:75"},"nativeSrc":"10350:32:75","nodeType":"YulFunctionCall","src":"10350:32:75"}],"functionName":{"name":"mstore","nativeSrc":"10332:6:75","nodeType":"YulIdentifier","src":"10332:6:75"},"nativeSrc":"10332:51:75","nodeType":"YulFunctionCall","src":"10332:51:75"},"nativeSrc":"10332:51:75","nodeType":"YulExpressionStatement","src":"10332:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10403:9:75","nodeType":"YulIdentifier","src":"10403:9:75"},{"kind":"number","nativeSrc":"10414:2:75","nodeType":"YulLiteral","src":"10414:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10399:3:75","nodeType":"YulIdentifier","src":"10399:3:75"},"nativeSrc":"10399:18:75","nodeType":"YulFunctionCall","src":"10399:18:75"},{"name":"value1","nativeSrc":"10419:6:75","nodeType":"YulIdentifier","src":"10419:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10392:6:75","nodeType":"YulIdentifier","src":"10392:6:75"},"nativeSrc":"10392:34:75","nodeType":"YulFunctionCall","src":"10392:34:75"},"nativeSrc":"10392:34:75","nodeType":"YulExpressionStatement","src":"10392:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10446:9:75","nodeType":"YulIdentifier","src":"10446:9:75"},{"kind":"number","nativeSrc":"10457:2:75","nodeType":"YulLiteral","src":"10457:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10442:3:75","nodeType":"YulIdentifier","src":"10442:3:75"},"nativeSrc":"10442:18:75","nodeType":"YulFunctionCall","src":"10442:18:75"},{"name":"value2","nativeSrc":"10462:6:75","nodeType":"YulIdentifier","src":"10462:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10435:6:75","nodeType":"YulIdentifier","src":"10435:6:75"},"nativeSrc":"10435:34:75","nodeType":"YulFunctionCall","src":"10435:34:75"},"nativeSrc":"10435:34:75","nodeType":"YulExpressionStatement","src":"10435:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"10130:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10240:9:75","nodeType":"YulTypedName","src":"10240:9:75","type":""},{"name":"value2","nativeSrc":"10251:6:75","nodeType":"YulTypedName","src":"10251:6:75","type":""},{"name":"value1","nativeSrc":"10259:6:75","nodeType":"YulTypedName","src":"10259:6:75","type":""},{"name":"value0","nativeSrc":"10267:6:75","nodeType":"YulTypedName","src":"10267:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10278:4:75","nodeType":"YulTypedName","src":"10278:4:75","type":""}],"src":"10130:345:75"},{"body":{"nativeSrc":"10570:245:75","nodeType":"YulBlock","src":"10570:245:75","statements":[{"body":{"nativeSrc":"10616:16:75","nodeType":"YulBlock","src":"10616:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10625:1:75","nodeType":"YulLiteral","src":"10625:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10628:1:75","nodeType":"YulLiteral","src":"10628:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10618:6:75","nodeType":"YulIdentifier","src":"10618:6:75"},"nativeSrc":"10618:12:75","nodeType":"YulFunctionCall","src":"10618:12:75"},"nativeSrc":"10618:12:75","nodeType":"YulExpressionStatement","src":"10618:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10591:7:75","nodeType":"YulIdentifier","src":"10591:7:75"},{"name":"headStart","nativeSrc":"10600:9:75","nodeType":"YulIdentifier","src":"10600:9:75"}],"functionName":{"name":"sub","nativeSrc":"10587:3:75","nodeType":"YulIdentifier","src":"10587:3:75"},"nativeSrc":"10587:23:75","nodeType":"YulFunctionCall","src":"10587:23:75"},{"kind":"number","nativeSrc":"10612:2:75","nodeType":"YulLiteral","src":"10612:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10583:3:75","nodeType":"YulIdentifier","src":"10583:3:75"},"nativeSrc":"10583:32:75","nodeType":"YulFunctionCall","src":"10583:32:75"},"nativeSrc":"10580:52:75","nodeType":"YulIf","src":"10580:52:75"},{"nativeSrc":"10641:30:75","nodeType":"YulVariableDeclaration","src":"10641:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10661:9:75","nodeType":"YulIdentifier","src":"10661:9:75"}],"functionName":{"name":"mload","nativeSrc":"10655:5:75","nodeType":"YulIdentifier","src":"10655:5:75"},"nativeSrc":"10655:16:75","nodeType":"YulFunctionCall","src":"10655:16:75"},"variables":[{"name":"offset","nativeSrc":"10645:6:75","nodeType":"YulTypedName","src":"10645:6:75","type":""}]},{"body":{"nativeSrc":"10714:16:75","nodeType":"YulBlock","src":"10714:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10723:1:75","nodeType":"YulLiteral","src":"10723:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10726:1:75","nodeType":"YulLiteral","src":"10726:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10716:6:75","nodeType":"YulIdentifier","src":"10716:6:75"},"nativeSrc":"10716:12:75","nodeType":"YulFunctionCall","src":"10716:12:75"},"nativeSrc":"10716:12:75","nodeType":"YulExpressionStatement","src":"10716:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10686:6:75","nodeType":"YulIdentifier","src":"10686:6:75"},{"kind":"number","nativeSrc":"10694:18:75","nodeType":"YulLiteral","src":"10694:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10683:2:75","nodeType":"YulIdentifier","src":"10683:2:75"},"nativeSrc":"10683:30:75","nodeType":"YulFunctionCall","src":"10683:30:75"},"nativeSrc":"10680:50:75","nodeType":"YulIf","src":"10680:50:75"},{"nativeSrc":"10739:70:75","nodeType":"YulAssignment","src":"10739:70:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10781:9:75","nodeType":"YulIdentifier","src":"10781:9:75"},{"name":"offset","nativeSrc":"10792:6:75","nodeType":"YulIdentifier","src":"10792:6:75"}],"functionName":{"name":"add","nativeSrc":"10777:3:75","nodeType":"YulIdentifier","src":"10777:3:75"},"nativeSrc":"10777:22:75","nodeType":"YulFunctionCall","src":"10777:22:75"},{"name":"dataEnd","nativeSrc":"10801:7:75","nodeType":"YulIdentifier","src":"10801:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"10749:27:75","nodeType":"YulIdentifier","src":"10749:27:75"},"nativeSrc":"10749:60:75","nodeType":"YulFunctionCall","src":"10749:60:75"},"variableNames":[{"name":"value0","nativeSrc":"10739:6:75","nodeType":"YulIdentifier","src":"10739:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"10480:335:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10536:9:75","nodeType":"YulTypedName","src":"10536:9:75","type":""},{"name":"dataEnd","nativeSrc":"10547:7:75","nodeType":"YulTypedName","src":"10547:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10559:6:75","nodeType":"YulTypedName","src":"10559:6:75","type":""}],"src":"10480:335:75"},{"body":{"nativeSrc":"10983:110:75","nodeType":"YulBlock","src":"10983:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11000:9:75","nodeType":"YulIdentifier","src":"11000:9:75"},{"kind":"number","nativeSrc":"11011:2:75","nodeType":"YulLiteral","src":"11011:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"10993:6:75","nodeType":"YulIdentifier","src":"10993:6:75"},"nativeSrc":"10993:21:75","nodeType":"YulFunctionCall","src":"10993:21:75"},"nativeSrc":"10993:21:75","nodeType":"YulExpressionStatement","src":"10993:21:75"},{"nativeSrc":"11023:64:75","nodeType":"YulAssignment","src":"11023:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"11060:6:75","nodeType":"YulIdentifier","src":"11060:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"11072:9:75","nodeType":"YulIdentifier","src":"11072:9:75"},{"kind":"number","nativeSrc":"11083:2:75","nodeType":"YulLiteral","src":"11083:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11068:3:75","nodeType":"YulIdentifier","src":"11068:3:75"},"nativeSrc":"11068:18:75","nodeType":"YulFunctionCall","src":"11068:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11031:28:75","nodeType":"YulIdentifier","src":"11031:28:75"},"nativeSrc":"11031:56:75","nodeType":"YulFunctionCall","src":"11031:56:75"},"variableNames":[{"name":"tail","nativeSrc":"11023:4:75","nodeType":"YulIdentifier","src":"11023:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed","nativeSrc":"10820:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10952:9:75","nodeType":"YulTypedName","src":"10952:9:75","type":""},{"name":"value0","nativeSrc":"10963:6:75","nodeType":"YulTypedName","src":"10963:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10974:4:75","nodeType":"YulTypedName","src":"10974:4:75","type":""}],"src":"10820:273:75"},{"body":{"nativeSrc":"11335:236:75","nodeType":"YulBlock","src":"11335:236:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11352:9:75","nodeType":"YulIdentifier","src":"11352:9:75"},{"kind":"number","nativeSrc":"11363:2:75","nodeType":"YulLiteral","src":"11363:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"11345:6:75","nodeType":"YulIdentifier","src":"11345:6:75"},"nativeSrc":"11345:21:75","nodeType":"YulFunctionCall","src":"11345:21:75"},"nativeSrc":"11345:21:75","nodeType":"YulExpressionStatement","src":"11345:21:75"},{"nativeSrc":"11375:70:75","nodeType":"YulVariableDeclaration","src":"11375:70:75","value":{"arguments":[{"name":"value0","nativeSrc":"11418:6:75","nodeType":"YulIdentifier","src":"11418:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"11430:9:75","nodeType":"YulIdentifier","src":"11430:9:75"},{"kind":"number","nativeSrc":"11441:2:75","nodeType":"YulLiteral","src":"11441:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11426:3:75","nodeType":"YulIdentifier","src":"11426:3:75"},"nativeSrc":"11426:18:75","nodeType":"YulFunctionCall","src":"11426:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11389:28:75","nodeType":"YulIdentifier","src":"11389:28:75"},"nativeSrc":"11389:56:75","nodeType":"YulFunctionCall","src":"11389:56:75"},"variables":[{"name":"tail_1","nativeSrc":"11379:6:75","nodeType":"YulTypedName","src":"11379:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11465:9:75","nodeType":"YulIdentifier","src":"11465:9:75"},{"kind":"number","nativeSrc":"11476:2:75","nodeType":"YulLiteral","src":"11476:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11461:3:75","nodeType":"YulIdentifier","src":"11461:3:75"},"nativeSrc":"11461:18:75","nodeType":"YulFunctionCall","src":"11461:18:75"},{"arguments":[{"name":"tail_1","nativeSrc":"11485:6:75","nodeType":"YulIdentifier","src":"11485:6:75"},{"name":"headStart","nativeSrc":"11493:9:75","nodeType":"YulIdentifier","src":"11493:9:75"}],"functionName":{"name":"sub","nativeSrc":"11481:3:75","nodeType":"YulIdentifier","src":"11481:3:75"},"nativeSrc":"11481:22:75","nodeType":"YulFunctionCall","src":"11481:22:75"}],"functionName":{"name":"mstore","nativeSrc":"11454:6:75","nodeType":"YulIdentifier","src":"11454:6:75"},"nativeSrc":"11454:50:75","nodeType":"YulFunctionCall","src":"11454:50:75"},"nativeSrc":"11454:50:75","nodeType":"YulExpressionStatement","src":"11454:50:75"},{"nativeSrc":"11513:52:75","nodeType":"YulAssignment","src":"11513:52:75","value":{"arguments":[{"name":"value1","nativeSrc":"11550:6:75","nodeType":"YulIdentifier","src":"11550:6:75"},{"name":"tail_1","nativeSrc":"11558:6:75","nodeType":"YulIdentifier","src":"11558:6:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11521:28:75","nodeType":"YulIdentifier","src":"11521:28:75"},"nativeSrc":"11521:44:75","nodeType":"YulFunctionCall","src":"11521:44:75"},"variableNames":[{"name":"tail","nativeSrc":"11513:4:75","nodeType":"YulIdentifier","src":"11513:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"11098:473:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11296:9:75","nodeType":"YulTypedName","src":"11296:9:75","type":""},{"name":"value1","nativeSrc":"11307:6:75","nodeType":"YulTypedName","src":"11307:6:75","type":""},{"name":"value0","nativeSrc":"11315:6:75","nodeType":"YulTypedName","src":"11315:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11326:4:75","nodeType":"YulTypedName","src":"11326:4:75","type":""}],"src":"11098:473:75"},{"body":{"nativeSrc":"11631:65:75","nodeType":"YulBlock","src":"11631:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11648:1:75","nodeType":"YulLiteral","src":"11648:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"11651:3:75","nodeType":"YulIdentifier","src":"11651:3:75"}],"functionName":{"name":"mstore","nativeSrc":"11641:6:75","nodeType":"YulIdentifier","src":"11641:6:75"},"nativeSrc":"11641:14:75","nodeType":"YulFunctionCall","src":"11641:14:75"},"nativeSrc":"11641:14:75","nodeType":"YulExpressionStatement","src":"11641:14:75"},{"nativeSrc":"11664:26:75","nodeType":"YulAssignment","src":"11664:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"11682:1:75","nodeType":"YulLiteral","src":"11682:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11685:4:75","nodeType":"YulLiteral","src":"11685:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11672:9:75","nodeType":"YulIdentifier","src":"11672:9:75"},"nativeSrc":"11672:18:75","nodeType":"YulFunctionCall","src":"11672:18:75"},"variableNames":[{"name":"data","nativeSrc":"11664:4:75","nodeType":"YulIdentifier","src":"11664:4:75"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"11576:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"11614:3:75","nodeType":"YulTypedName","src":"11614:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"11622:4:75","nodeType":"YulTypedName","src":"11622:4:75","type":""}],"src":"11576:120:75"},{"body":{"nativeSrc":"11781:437:75","nodeType":"YulBlock","src":"11781:437:75","statements":[{"body":{"nativeSrc":"11814:398:75","nodeType":"YulBlock","src":"11814:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11835:1:75","nodeType":"YulLiteral","src":"11835:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"11838:5:75","nodeType":"YulIdentifier","src":"11838:5:75"}],"functionName":{"name":"mstore","nativeSrc":"11828:6:75","nodeType":"YulIdentifier","src":"11828:6:75"},"nativeSrc":"11828:16:75","nodeType":"YulFunctionCall","src":"11828:16:75"},"nativeSrc":"11828:16:75","nodeType":"YulExpressionStatement","src":"11828:16:75"},{"nativeSrc":"11857:30:75","nodeType":"YulVariableDeclaration","src":"11857:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"11879:1:75","nodeType":"YulLiteral","src":"11879:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11882:4:75","nodeType":"YulLiteral","src":"11882:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11869:9:75","nodeType":"YulIdentifier","src":"11869:9:75"},"nativeSrc":"11869:18:75","nodeType":"YulFunctionCall","src":"11869:18:75"},"variables":[{"name":"data","nativeSrc":"11861:4:75","nodeType":"YulTypedName","src":"11861:4:75","type":""}]},{"nativeSrc":"11900:57:75","nodeType":"YulVariableDeclaration","src":"11900:57:75","value":{"arguments":[{"name":"data","nativeSrc":"11923:4:75","nodeType":"YulIdentifier","src":"11923:4:75"},{"arguments":[{"kind":"number","nativeSrc":"11933:1:75","nodeType":"YulLiteral","src":"11933:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"11940:10:75","nodeType":"YulIdentifier","src":"11940:10:75"},{"kind":"number","nativeSrc":"11952:2:75","nodeType":"YulLiteral","src":"11952:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"11936:3:75","nodeType":"YulIdentifier","src":"11936:3:75"},"nativeSrc":"11936:19:75","nodeType":"YulFunctionCall","src":"11936:19:75"}],"functionName":{"name":"shr","nativeSrc":"11929:3:75","nodeType":"YulIdentifier","src":"11929:3:75"},"nativeSrc":"11929:27:75","nodeType":"YulFunctionCall","src":"11929:27:75"}],"functionName":{"name":"add","nativeSrc":"11919:3:75","nodeType":"YulIdentifier","src":"11919:3:75"},"nativeSrc":"11919:38:75","nodeType":"YulFunctionCall","src":"11919:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"11904:11:75","nodeType":"YulTypedName","src":"11904:11:75","type":""}]},{"body":{"nativeSrc":"11994:23:75","nodeType":"YulBlock","src":"11994:23:75","statements":[{"nativeSrc":"11996:19:75","nodeType":"YulAssignment","src":"11996:19:75","value":{"name":"data","nativeSrc":"12011:4:75","nodeType":"YulIdentifier","src":"12011:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"11996:11:75","nodeType":"YulIdentifier","src":"11996:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"11976:10:75","nodeType":"YulIdentifier","src":"11976:10:75"},{"kind":"number","nativeSrc":"11988:4:75","nodeType":"YulLiteral","src":"11988:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"11973:2:75","nodeType":"YulIdentifier","src":"11973:2:75"},"nativeSrc":"11973:20:75","nodeType":"YulFunctionCall","src":"11973:20:75"},"nativeSrc":"11970:47:75","nodeType":"YulIf","src":"11970:47:75"},{"nativeSrc":"12030:41:75","nodeType":"YulVariableDeclaration","src":"12030:41:75","value":{"arguments":[{"name":"data","nativeSrc":"12044:4:75","nodeType":"YulIdentifier","src":"12044:4:75"},{"arguments":[{"kind":"number","nativeSrc":"12054:1:75","nodeType":"YulLiteral","src":"12054:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"12061:3:75","nodeType":"YulIdentifier","src":"12061:3:75"},{"kind":"number","nativeSrc":"12066:2:75","nodeType":"YulLiteral","src":"12066:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12057:3:75","nodeType":"YulIdentifier","src":"12057:3:75"},"nativeSrc":"12057:12:75","nodeType":"YulFunctionCall","src":"12057:12:75"}],"functionName":{"name":"shr","nativeSrc":"12050:3:75","nodeType":"YulIdentifier","src":"12050:3:75"},"nativeSrc":"12050:20:75","nodeType":"YulFunctionCall","src":"12050:20:75"}],"functionName":{"name":"add","nativeSrc":"12040:3:75","nodeType":"YulIdentifier","src":"12040:3:75"},"nativeSrc":"12040:31:75","nodeType":"YulFunctionCall","src":"12040:31:75"},"variables":[{"name":"_1","nativeSrc":"12034:2:75","nodeType":"YulTypedName","src":"12034:2:75","type":""}]},{"nativeSrc":"12084:24:75","nodeType":"YulVariableDeclaration","src":"12084:24:75","value":{"name":"deleteStart","nativeSrc":"12097:11:75","nodeType":"YulIdentifier","src":"12097:11:75"},"variables":[{"name":"start","nativeSrc":"12088:5:75","nodeType":"YulTypedName","src":"12088:5:75","type":""}]},{"body":{"nativeSrc":"12182:20:75","nodeType":"YulBlock","src":"12182:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"12191:5:75","nodeType":"YulIdentifier","src":"12191:5:75"},{"kind":"number","nativeSrc":"12198:1:75","nodeType":"YulLiteral","src":"12198:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"12184:6:75","nodeType":"YulIdentifier","src":"12184:6:75"},"nativeSrc":"12184:16:75","nodeType":"YulFunctionCall","src":"12184:16:75"},"nativeSrc":"12184:16:75","nodeType":"YulExpressionStatement","src":"12184:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"12132:5:75","nodeType":"YulIdentifier","src":"12132:5:75"},{"name":"_1","nativeSrc":"12139:2:75","nodeType":"YulIdentifier","src":"12139:2:75"}],"functionName":{"name":"lt","nativeSrc":"12129:2:75","nodeType":"YulIdentifier","src":"12129:2:75"},"nativeSrc":"12129:13:75","nodeType":"YulFunctionCall","src":"12129:13:75"},"nativeSrc":"12121:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"12143:26:75","nodeType":"YulBlock","src":"12143:26:75","statements":[{"nativeSrc":"12145:22:75","nodeType":"YulAssignment","src":"12145:22:75","value":{"arguments":[{"name":"start","nativeSrc":"12158:5:75","nodeType":"YulIdentifier","src":"12158:5:75"},{"kind":"number","nativeSrc":"12165:1:75","nodeType":"YulLiteral","src":"12165:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"12154:3:75","nodeType":"YulIdentifier","src":"12154:3:75"},"nativeSrc":"12154:13:75","nodeType":"YulFunctionCall","src":"12154:13:75"},"variableNames":[{"name":"start","nativeSrc":"12145:5:75","nodeType":"YulIdentifier","src":"12145:5:75"}]}]},"pre":{"nativeSrc":"12125:3:75","nodeType":"YulBlock","src":"12125:3:75","statements":[]},"src":"12121:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"11797:3:75","nodeType":"YulIdentifier","src":"11797:3:75"},{"kind":"number","nativeSrc":"11802:2:75","nodeType":"YulLiteral","src":"11802:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"11794:2:75","nodeType":"YulIdentifier","src":"11794:2:75"},"nativeSrc":"11794:11:75","nodeType":"YulFunctionCall","src":"11794:11:75"},"nativeSrc":"11791:421:75","nodeType":"YulIf","src":"11791:421:75"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"11701:517:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"11753:5:75","nodeType":"YulTypedName","src":"11753:5:75","type":""},{"name":"len","nativeSrc":"11760:3:75","nodeType":"YulTypedName","src":"11760:3:75","type":""},{"name":"startIndex","nativeSrc":"11765:10:75","nodeType":"YulTypedName","src":"11765:10:75","type":""}],"src":"11701:517:75"},{"body":{"nativeSrc":"12308:81:75","nodeType":"YulBlock","src":"12308:81:75","statements":[{"nativeSrc":"12318:65:75","nodeType":"YulAssignment","src":"12318:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"12333:4:75","nodeType":"YulIdentifier","src":"12333:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12351:1:75","nodeType":"YulLiteral","src":"12351:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"12354:3:75","nodeType":"YulIdentifier","src":"12354:3:75"}],"functionName":{"name":"shl","nativeSrc":"12347:3:75","nodeType":"YulIdentifier","src":"12347:3:75"},"nativeSrc":"12347:11:75","nodeType":"YulFunctionCall","src":"12347:11:75"},{"arguments":[{"kind":"number","nativeSrc":"12364:1:75","nodeType":"YulLiteral","src":"12364:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12360:3:75","nodeType":"YulIdentifier","src":"12360:3:75"},"nativeSrc":"12360:6:75","nodeType":"YulFunctionCall","src":"12360:6:75"}],"functionName":{"name":"shr","nativeSrc":"12343:3:75","nodeType":"YulIdentifier","src":"12343:3:75"},"nativeSrc":"12343:24:75","nodeType":"YulFunctionCall","src":"12343:24:75"}],"functionName":{"name":"not","nativeSrc":"12339:3:75","nodeType":"YulIdentifier","src":"12339:3:75"},"nativeSrc":"12339:29:75","nodeType":"YulFunctionCall","src":"12339:29:75"}],"functionName":{"name":"and","nativeSrc":"12329:3:75","nodeType":"YulIdentifier","src":"12329:3:75"},"nativeSrc":"12329:40:75","nodeType":"YulFunctionCall","src":"12329:40:75"},{"arguments":[{"kind":"number","nativeSrc":"12375:1:75","nodeType":"YulLiteral","src":"12375:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"12378:3:75","nodeType":"YulIdentifier","src":"12378:3:75"}],"functionName":{"name":"shl","nativeSrc":"12371:3:75","nodeType":"YulIdentifier","src":"12371:3:75"},"nativeSrc":"12371:11:75","nodeType":"YulFunctionCall","src":"12371:11:75"}],"functionName":{"name":"or","nativeSrc":"12326:2:75","nodeType":"YulIdentifier","src":"12326:2:75"},"nativeSrc":"12326:57:75","nodeType":"YulFunctionCall","src":"12326:57:75"},"variableNames":[{"name":"used","nativeSrc":"12318:4:75","nodeType":"YulIdentifier","src":"12318:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"12223:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"12285:4:75","nodeType":"YulTypedName","src":"12285:4:75","type":""},{"name":"len","nativeSrc":"12291:3:75","nodeType":"YulTypedName","src":"12291:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"12299:4:75","nodeType":"YulTypedName","src":"12299:4:75","type":""}],"src":"12223:166:75"},{"body":{"nativeSrc":"12488:1201:75","nodeType":"YulBlock","src":"12488:1201:75","statements":[{"nativeSrc":"12498:24:75","nodeType":"YulVariableDeclaration","src":"12498:24:75","value":{"arguments":[{"name":"src","nativeSrc":"12518:3:75","nodeType":"YulIdentifier","src":"12518:3:75"}],"functionName":{"name":"mload","nativeSrc":"12512:5:75","nodeType":"YulIdentifier","src":"12512:5:75"},"nativeSrc":"12512:10:75","nodeType":"YulFunctionCall","src":"12512:10:75"},"variables":[{"name":"newLen","nativeSrc":"12502:6:75","nodeType":"YulTypedName","src":"12502:6:75","type":""}]},{"body":{"nativeSrc":"12565:22:75","nodeType":"YulBlock","src":"12565:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"12567:16:75","nodeType":"YulIdentifier","src":"12567:16:75"},"nativeSrc":"12567:18:75","nodeType":"YulFunctionCall","src":"12567:18:75"},"nativeSrc":"12567:18:75","nodeType":"YulExpressionStatement","src":"12567:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"12537:6:75","nodeType":"YulIdentifier","src":"12537:6:75"},{"kind":"number","nativeSrc":"12545:18:75","nodeType":"YulLiteral","src":"12545:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12534:2:75","nodeType":"YulIdentifier","src":"12534:2:75"},"nativeSrc":"12534:30:75","nodeType":"YulFunctionCall","src":"12534:30:75"},"nativeSrc":"12531:56:75","nodeType":"YulIf","src":"12531:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"12639:4:75","nodeType":"YulIdentifier","src":"12639:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"12677:4:75","nodeType":"YulIdentifier","src":"12677:4:75"}],"functionName":{"name":"sload","nativeSrc":"12671:5:75","nodeType":"YulIdentifier","src":"12671:5:75"},"nativeSrc":"12671:11:75","nodeType":"YulFunctionCall","src":"12671:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"12645:25:75","nodeType":"YulIdentifier","src":"12645:25:75"},"nativeSrc":"12645:38:75","nodeType":"YulFunctionCall","src":"12645:38:75"},{"name":"newLen","nativeSrc":"12685:6:75","nodeType":"YulIdentifier","src":"12685:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"12596:42:75","nodeType":"YulIdentifier","src":"12596:42:75"},"nativeSrc":"12596:96:75","nodeType":"YulFunctionCall","src":"12596:96:75"},"nativeSrc":"12596:96:75","nodeType":"YulExpressionStatement","src":"12596:96:75"},{"nativeSrc":"12701:18:75","nodeType":"YulVariableDeclaration","src":"12701:18:75","value":{"kind":"number","nativeSrc":"12718:1:75","nodeType":"YulLiteral","src":"12718:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"12705:9:75","nodeType":"YulTypedName","src":"12705:9:75","type":""}]},{"nativeSrc":"12728:17:75","nodeType":"YulAssignment","src":"12728:17:75","value":{"kind":"number","nativeSrc":"12741:4:75","nodeType":"YulLiteral","src":"12741:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"12728:9:75","nodeType":"YulIdentifier","src":"12728:9:75"}]},{"cases":[{"body":{"nativeSrc":"12791:641:75","nodeType":"YulBlock","src":"12791:641:75","statements":[{"nativeSrc":"12805:35:75","nodeType":"YulVariableDeclaration","src":"12805:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"12824:6:75","nodeType":"YulIdentifier","src":"12824:6:75"},{"arguments":[{"kind":"number","nativeSrc":"12836:2:75","nodeType":"YulLiteral","src":"12836:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12832:3:75","nodeType":"YulIdentifier","src":"12832:3:75"},"nativeSrc":"12832:7:75","nodeType":"YulFunctionCall","src":"12832:7:75"}],"functionName":{"name":"and","nativeSrc":"12820:3:75","nodeType":"YulIdentifier","src":"12820:3:75"},"nativeSrc":"12820:20:75","nodeType":"YulFunctionCall","src":"12820:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"12809:7:75","nodeType":"YulTypedName","src":"12809:7:75","type":""}]},{"nativeSrc":"12853:48:75","nodeType":"YulVariableDeclaration","src":"12853:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"12896:4:75","nodeType":"YulIdentifier","src":"12896:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"12867:28:75","nodeType":"YulIdentifier","src":"12867:28:75"},"nativeSrc":"12867:34:75","nodeType":"YulFunctionCall","src":"12867:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"12857:6:75","nodeType":"YulTypedName","src":"12857:6:75","type":""}]},{"nativeSrc":"12914:10:75","nodeType":"YulVariableDeclaration","src":"12914:10:75","value":{"kind":"number","nativeSrc":"12923:1:75","nodeType":"YulLiteral","src":"12923:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"12918:1:75","nodeType":"YulTypedName","src":"12918:1:75","type":""}]},{"body":{"nativeSrc":"12994:165:75","nodeType":"YulBlock","src":"12994:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"13019:6:75","nodeType":"YulIdentifier","src":"13019:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13037:3:75","nodeType":"YulIdentifier","src":"13037:3:75"},{"name":"srcOffset","nativeSrc":"13042:9:75","nodeType":"YulIdentifier","src":"13042:9:75"}],"functionName":{"name":"add","nativeSrc":"13033:3:75","nodeType":"YulIdentifier","src":"13033:3:75"},"nativeSrc":"13033:19:75","nodeType":"YulFunctionCall","src":"13033:19:75"}],"functionName":{"name":"mload","nativeSrc":"13027:5:75","nodeType":"YulIdentifier","src":"13027:5:75"},"nativeSrc":"13027:26:75","nodeType":"YulFunctionCall","src":"13027:26:75"}],"functionName":{"name":"sstore","nativeSrc":"13012:6:75","nodeType":"YulIdentifier","src":"13012:6:75"},"nativeSrc":"13012:42:75","nodeType":"YulFunctionCall","src":"13012:42:75"},"nativeSrc":"13012:42:75","nodeType":"YulExpressionStatement","src":"13012:42:75"},{"nativeSrc":"13071:24:75","nodeType":"YulAssignment","src":"13071:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"13085:6:75","nodeType":"YulIdentifier","src":"13085:6:75"},{"kind":"number","nativeSrc":"13093:1:75","nodeType":"YulLiteral","src":"13093:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13081:3:75","nodeType":"YulIdentifier","src":"13081:3:75"},"nativeSrc":"13081:14:75","nodeType":"YulFunctionCall","src":"13081:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"13071:6:75","nodeType":"YulIdentifier","src":"13071:6:75"}]},{"nativeSrc":"13112:33:75","nodeType":"YulAssignment","src":"13112:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"13129:9:75","nodeType":"YulIdentifier","src":"13129:9:75"},{"kind":"number","nativeSrc":"13140:4:75","nodeType":"YulLiteral","src":"13140:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13125:3:75","nodeType":"YulIdentifier","src":"13125:3:75"},"nativeSrc":"13125:20:75","nodeType":"YulFunctionCall","src":"13125:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"13112:9:75","nodeType":"YulIdentifier","src":"13112:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"12948:1:75","nodeType":"YulIdentifier","src":"12948:1:75"},{"name":"loopEnd","nativeSrc":"12951:7:75","nodeType":"YulIdentifier","src":"12951:7:75"}],"functionName":{"name":"lt","nativeSrc":"12945:2:75","nodeType":"YulIdentifier","src":"12945:2:75"},"nativeSrc":"12945:14:75","nodeType":"YulFunctionCall","src":"12945:14:75"},"nativeSrc":"12937:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"12960:21:75","nodeType":"YulBlock","src":"12960:21:75","statements":[{"nativeSrc":"12962:17:75","nodeType":"YulAssignment","src":"12962:17:75","value":{"arguments":[{"name":"i","nativeSrc":"12971:1:75","nodeType":"YulIdentifier","src":"12971:1:75"},{"kind":"number","nativeSrc":"12974:4:75","nodeType":"YulLiteral","src":"12974:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12967:3:75","nodeType":"YulIdentifier","src":"12967:3:75"},"nativeSrc":"12967:12:75","nodeType":"YulFunctionCall","src":"12967:12:75"},"variableNames":[{"name":"i","nativeSrc":"12962:1:75","nodeType":"YulIdentifier","src":"12962:1:75"}]}]},"pre":{"nativeSrc":"12941:3:75","nodeType":"YulBlock","src":"12941:3:75","statements":[]},"src":"12937:222:75"},{"body":{"nativeSrc":"13207:166:75","nodeType":"YulBlock","src":"13207:166:75","statements":[{"nativeSrc":"13225:43:75","nodeType":"YulVariableDeclaration","src":"13225:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13252:3:75","nodeType":"YulIdentifier","src":"13252:3:75"},{"name":"srcOffset","nativeSrc":"13257:9:75","nodeType":"YulIdentifier","src":"13257:9:75"}],"functionName":{"name":"add","nativeSrc":"13248:3:75","nodeType":"YulIdentifier","src":"13248:3:75"},"nativeSrc":"13248:19:75","nodeType":"YulFunctionCall","src":"13248:19:75"}],"functionName":{"name":"mload","nativeSrc":"13242:5:75","nodeType":"YulIdentifier","src":"13242:5:75"},"nativeSrc":"13242:26:75","nodeType":"YulFunctionCall","src":"13242:26:75"},"variables":[{"name":"lastValue","nativeSrc":"13229:9:75","nodeType":"YulTypedName","src":"13229:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"13292:6:75","nodeType":"YulIdentifier","src":"13292:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"13304:9:75","nodeType":"YulIdentifier","src":"13304:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13331:1:75","nodeType":"YulLiteral","src":"13331:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"13334:6:75","nodeType":"YulIdentifier","src":"13334:6:75"}],"functionName":{"name":"shl","nativeSrc":"13327:3:75","nodeType":"YulIdentifier","src":"13327:3:75"},"nativeSrc":"13327:14:75","nodeType":"YulFunctionCall","src":"13327:14:75"},{"kind":"number","nativeSrc":"13343:3:75","nodeType":"YulLiteral","src":"13343:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"13323:3:75","nodeType":"YulIdentifier","src":"13323:3:75"},"nativeSrc":"13323:24:75","nodeType":"YulFunctionCall","src":"13323:24:75"},{"arguments":[{"kind":"number","nativeSrc":"13353:1:75","nodeType":"YulLiteral","src":"13353:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13349:3:75","nodeType":"YulIdentifier","src":"13349:3:75"},"nativeSrc":"13349:6:75","nodeType":"YulFunctionCall","src":"13349:6:75"}],"functionName":{"name":"shr","nativeSrc":"13319:3:75","nodeType":"YulIdentifier","src":"13319:3:75"},"nativeSrc":"13319:37:75","nodeType":"YulFunctionCall","src":"13319:37:75"}],"functionName":{"name":"not","nativeSrc":"13315:3:75","nodeType":"YulIdentifier","src":"13315:3:75"},"nativeSrc":"13315:42:75","nodeType":"YulFunctionCall","src":"13315:42:75"}],"functionName":{"name":"and","nativeSrc":"13300:3:75","nodeType":"YulIdentifier","src":"13300:3:75"},"nativeSrc":"13300:58:75","nodeType":"YulFunctionCall","src":"13300:58:75"}],"functionName":{"name":"sstore","nativeSrc":"13285:6:75","nodeType":"YulIdentifier","src":"13285:6:75"},"nativeSrc":"13285:74:75","nodeType":"YulFunctionCall","src":"13285:74:75"},"nativeSrc":"13285:74:75","nodeType":"YulExpressionStatement","src":"13285:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"13178:7:75","nodeType":"YulIdentifier","src":"13178:7:75"},{"name":"newLen","nativeSrc":"13187:6:75","nodeType":"YulIdentifier","src":"13187:6:75"}],"functionName":{"name":"lt","nativeSrc":"13175:2:75","nodeType":"YulIdentifier","src":"13175:2:75"},"nativeSrc":"13175:19:75","nodeType":"YulFunctionCall","src":"13175:19:75"},"nativeSrc":"13172:201:75","nodeType":"YulIf","src":"13172:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13393:4:75","nodeType":"YulIdentifier","src":"13393:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13407:1:75","nodeType":"YulLiteral","src":"13407:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"13410:6:75","nodeType":"YulIdentifier","src":"13410:6:75"}],"functionName":{"name":"shl","nativeSrc":"13403:3:75","nodeType":"YulIdentifier","src":"13403:3:75"},"nativeSrc":"13403:14:75","nodeType":"YulFunctionCall","src":"13403:14:75"},{"kind":"number","nativeSrc":"13419:1:75","nodeType":"YulLiteral","src":"13419:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"13399:3:75","nodeType":"YulIdentifier","src":"13399:3:75"},"nativeSrc":"13399:22:75","nodeType":"YulFunctionCall","src":"13399:22:75"}],"functionName":{"name":"sstore","nativeSrc":"13386:6:75","nodeType":"YulIdentifier","src":"13386:6:75"},"nativeSrc":"13386:36:75","nodeType":"YulFunctionCall","src":"13386:36:75"},"nativeSrc":"13386:36:75","nodeType":"YulExpressionStatement","src":"13386:36:75"}]},"nativeSrc":"12784:648:75","nodeType":"YulCase","src":"12784:648:75","value":{"kind":"number","nativeSrc":"12789:1:75","nodeType":"YulLiteral","src":"12789:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"13449:234:75","nodeType":"YulBlock","src":"13449:234:75","statements":[{"nativeSrc":"13463:14:75","nodeType":"YulVariableDeclaration","src":"13463:14:75","value":{"kind":"number","nativeSrc":"13476:1:75","nodeType":"YulLiteral","src":"13476:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"13467:5:75","nodeType":"YulTypedName","src":"13467:5:75","type":""}]},{"body":{"nativeSrc":"13512:67:75","nodeType":"YulBlock","src":"13512:67:75","statements":[{"nativeSrc":"13530:35:75","nodeType":"YulAssignment","src":"13530:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"13549:3:75","nodeType":"YulIdentifier","src":"13549:3:75"},{"name":"srcOffset","nativeSrc":"13554:9:75","nodeType":"YulIdentifier","src":"13554:9:75"}],"functionName":{"name":"add","nativeSrc":"13545:3:75","nodeType":"YulIdentifier","src":"13545:3:75"},"nativeSrc":"13545:19:75","nodeType":"YulFunctionCall","src":"13545:19:75"}],"functionName":{"name":"mload","nativeSrc":"13539:5:75","nodeType":"YulIdentifier","src":"13539:5:75"},"nativeSrc":"13539:26:75","nodeType":"YulFunctionCall","src":"13539:26:75"},"variableNames":[{"name":"value","nativeSrc":"13530:5:75","nodeType":"YulIdentifier","src":"13530:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"13493:6:75","nodeType":"YulIdentifier","src":"13493:6:75"},"nativeSrc":"13490:89:75","nodeType":"YulIf","src":"13490:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"13599:4:75","nodeType":"YulIdentifier","src":"13599:4:75"},{"arguments":[{"name":"value","nativeSrc":"13658:5:75","nodeType":"YulIdentifier","src":"13658:5:75"},{"name":"newLen","nativeSrc":"13665:6:75","nodeType":"YulIdentifier","src":"13665:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"13605:52:75","nodeType":"YulIdentifier","src":"13605:52:75"},"nativeSrc":"13605:67:75","nodeType":"YulFunctionCall","src":"13605:67:75"}],"functionName":{"name":"sstore","nativeSrc":"13592:6:75","nodeType":"YulIdentifier","src":"13592:6:75"},"nativeSrc":"13592:81:75","nodeType":"YulFunctionCall","src":"13592:81:75"},"nativeSrc":"13592:81:75","nodeType":"YulExpressionStatement","src":"13592:81:75"}]},"nativeSrc":"13441:242:75","nodeType":"YulCase","src":"13441:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"12764:6:75","nodeType":"YulIdentifier","src":"12764:6:75"},{"kind":"number","nativeSrc":"12772:2:75","nodeType":"YulLiteral","src":"12772:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"12761:2:75","nodeType":"YulIdentifier","src":"12761:2:75"},"nativeSrc":"12761:14:75","nodeType":"YulFunctionCall","src":"12761:14:75"},"nativeSrc":"12754:929:75","nodeType":"YulSwitch","src":"12754:929:75"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"12394:1295:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"12473:4:75","nodeType":"YulTypedName","src":"12473:4:75","type":""},{"name":"src","nativeSrc":"12479:3:75","nodeType":"YulTypedName","src":"12479:3:75","type":""}],"src":"12394:1295:75"}]},"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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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_$22205_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_$624_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_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"14807":[{"length":32,"start":518},{"length":32,"start":742},{"length":32,"start":1167},{"length":32,"start":1653},{"length":32,"start":1778}],"14813":[{"length":32,"start":321},{"length":32,"start":2575},{"length":32,"start":3167},{"length":32,"start":3566}],"14816":[{"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":3636},{"length":32,"start":3860}],"14819":[{"length":32,"start":1470},{"length":32,"start":2275},{"length":32,"start":2482}],"14821":[{"length":32,"start":372},{"length":32,"start":828},{"length":32,"start":2926},{"length":32,"start":3683},{"length":32,"start":3813}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2890},{"length":20,"start":3358}]}},"object":"608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80635b9a4c351161006e5780635b9a4c351461013c5780639c4667a2146101635780639cd47128146101ae578063b6b55f25146101c1578063ce96cb77146101d4578063f3e0ffbf146101e7575f5ffd5b80630981b1c2146100aa5780632e1a7d4d146100d3578063402d267d146100e857806342b054f0146101095780635a11745614610129575b5f5ffd5b6100bd6100b836600461102a565b6101fa565b6040516100ca91906110aa565b60405180910390f35b6100e66100e13660046110bc565b6102dc565b005b6100fb6100f63660046110e7565b6103c6565b6040519081526020016100ca565b61011c6101173660046110e7565b61045b565b6040516100ca9190611164565b6100e6610137366004611183565b610485565b6100fb7f000000000000000000000000000000000000000000000000000000000000000081565b6101966101713660046110e7565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100ca565b6100e66101bc36600461119e565b61066b565b6100e66101cf3660046110bc565b6106e8565b6100fb6101e23660046110e7565b61073a565b6100fb6101f53660046110e7565b610850565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361024557604051632abf118b60e21b815260040160405180910390fd5b5f8360ff16600181111561025b5761025b611102565b90505f81600181111561027057610270611102565b0361029b575f8380602001905181019061028a91906111d0565b9050610295816108a2565b506102c6565b60018160018111156102af576102af611102565b036100a6576102c66102c030610c35565b84610cf7565b505060408051602081019091525f815292915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032557604051632abf118b60e21b815260040160405180910390fd5b60405163f3fef3a360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f3fef3a3906044015b5f604051808303815f87803b1580156103ad575f5ffd5b505af11580156103bf573d5f5f3e3d5ffd5b5050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630bc47ad16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610423573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044791906111e7565b1561045357505f919050565b505f19919050565b60408051606080820183525f80835260208301529181019190915261047f82610c35565b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036104ce57604051632abf118b60e21b815260040160405180910390fd5b80610668576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610535573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055991906111d0565b15610577576040516342a176d160e11b815260040160405180910390fd5b6040516320f0656b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906341e0cad69060440160408051808303815f875af1158015610605573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106299190611202565b80519091506001600160a01b0316158015906106485750602081015115155b15610666576040516342a176d160e11b815260040160405180910390fd5b505b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106b457604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261066890805f81526020015f815260200160405180602001604052805f81525081525082610cf7565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361073157604051632abf118b60e21b815260040160405180910390fd5b61066881610e1d565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166367800b5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610797573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107bb91906111e7565b156107c757505f919050565b6040516370a0823160e01b81526001600160a01b0383811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561082c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061047f91906111d0565b6040516370a0823160e01b81526001600160a01b0382811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610811565b60405163045136d760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690632289b6b8906024016060604051808303815f875af115801561092b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f919061125a565b50909150506001600160a01b038116610966575050565b604051635b81a7bf60e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152600160448301527f0000000000000000000000000000000000000000000000000000000000000000169063b7034f7e906064015f604051808303815f87803b1580156109f3575f5ffd5b505af1158015610a05573d5f5f3e3d5ffd5b505050505f610a317f000000000000000000000000000000000000000000000000000000000000000090565b8054610a3c906112b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a68906112b0565b8015610ab35780601f10610a8a57610100808354040283529160200191610ab3565b820191905f5260205f20905b815481529060010190602001808311610a9657829003601f168201915b5050505050806020019051810190610acb9190611335565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b12573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3691906111d0565b604051637756691560e01b81529091505f9073__$acbb9ece542dcf2065f41aa3c8cca5827e$__90637756691590610b9a90869088907f00000000000000000000000000000000000000000000000000000000000000009088908c906004016113c1565b602060405180830381865af4158015610bb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd991906111d0565b9050610be481610e1d565b604080516001600160a01b0386168152602081018490529081018290527fdacbdde355ba930696a362ea6738feb9f8bd52dfb3d81947558fd3217e23e3259060600160405180910390a15050505050565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610cb3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cda9190810190611400565b905080806020019051810190610cf09190611335565b9392505050565b5f81806020019051810190610d0c9190611335565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610d46908490600401611164565b5f6040518083038186803b158015610d5c575f5ffd5b505af4158015610d6e573d5f5f3e3d5ffd5b50505050815181604051602001610d859190611164565b6040516020818303038152906040525114610db3576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610de4929190611432565b60405180910390a17f0000000000000000000000000000000000000000000000000000000000000000610e1783826114a8565b50505050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610ea9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd91906111e7565b50604051631e573fb760e31b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401610396565b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610f7a57610f7a610f43565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fa957610fa9610f43565b604052919050565b5f67ffffffffffffffff821115610fca57610fca610f43565b50601f01601f191660200190565b5f82601f830112610fe7575f5ffd5b8135610ffa610ff582610fb1565b610f80565b81815284602083860101111561100e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561103b575f5ffd5b823560ff8116811461104b575f5ffd5b9150602083013567ffffffffffffffff811115611066575f5ffd5b61107285828601610fd8565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cf0602083018461107c565b5f602082840312156110cc575f5ffd5b5035919050565b6001600160a01b0381168114610668575f5ffd5b5f602082840312156110f7575f5ffd5b8135610cf0816110d3565b634e487b7160e01b5f52602160045260245ffd5b5f81516003811061113557634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261115c606085018261107c565b949350505050565b602081525f610cf06020830184611116565b8015158114610668575f5ffd5b5f60208284031215611193575f5ffd5b8135610cf081611176565b5f602082840312156111ae575f5ffd5b813567ffffffffffffffff8111156111c4575f5ffd5b61115c84828501610fd8565b5f602082840312156111e0575f5ffd5b5051919050565b5f602082840312156111f7575f5ffd5b8151610cf081611176565b5f6040828403128015611213575f5ffd5b506040805190810167ffffffffffffffff8111828210171561123757611237610f43565b6040528251611245816110d3565b81526020928301519281019290925250919050565b5f5f5f6060848603121561126c575f5ffd5b8351611277816110d3565b602085015190935067ffffffffffffffff81168114611294575f5ffd5b60408501519092506112a581611176565b809150509250925092565b600181811c908216806112c457607f821691505b6020821081036112e257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f8301126112f7575f5ffd5b8151611305610ff582610fb1565b818152846020838601011115611319575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611345575f5ffd5b815167ffffffffffffffff81111561135b575f5ffd5b82016060818503121561136c575f5ffd5b611374610f57565b815160038110611382575f5ffd5b815260208281015190820152604082015167ffffffffffffffff8111156113a7575f5ffd5b6113b3868285016112e8565b604083015250949350505050565b60a081525f6113d360a0830188611116565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611410575f5ffd5b815167ffffffffffffffff811115611426575f5ffd5b61115c848285016112e8565b604081525f6114446040830185611116565b82810360208401526114568185611116565b95945050505050565b601f8211156114a357805f5260205f20601f840160051c810160208510156114845750805b601f840160051c820191505b818110156103bf575f8155600101611490565b505050565b815167ffffffffffffffff8111156114c2576114c2610f43565b6114d6816114d084546112b0565b8461145f565b6020601f821160018114611508575f83156114f15750848201515b5f19600385901b1c1916600184901b1784556103bf565b5f84815260208120601f198516915b828110156115375787850151825560209485019460019092019101611517565b508482101561155457868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220a751b47974c1227ab948d5c0e6446e9e1bda4a34cceff191e2cfe150b0d88a1d64736f6c634300081c0033","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 0x102A JUMP JUMPDEST PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x10AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE6 PUSH2 0xE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x2DC JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFB PUSH2 0xF6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x10E7 JUMP JUMPDEST PUSH2 0x45B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCA SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x137 CALLDATASIZE PUSH1 0x4 PUSH2 0x1183 JUMP JUMPDEST PUSH2 0x485 JUMP JUMPDEST PUSH2 0xFB PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x196 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x119E JUMP JUMPDEST PUSH2 0x66B JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 JUMP JUMPDEST PUSH2 0x73A JUMP JUMPDEST PUSH2 0xFB PUSH2 0x1F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E7 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 0x1102 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x270 JUMPI PUSH2 0x270 PUSH2 0x1102 JUMP JUMPDEST SUB PUSH2 0x29B JUMPI PUSH0 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x28A SWAP2 SWAP1 PUSH2 0x11D0 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 0x1102 JUMP JUMPDEST SUB PUSH2 0xA6 JUMPI PUSH2 0x2C6 PUSH2 0x2C0 ADDRESS PUSH2 0xC35 JUMP JUMPDEST DUP5 PUSH2 0xCF7 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 0x11E7 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 0xC35 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 0x11D0 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 0x1202 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 0xCF7 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 0xE1D 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 0x11E7 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 0x11D0 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 0x125A 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 0x12B0 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 0x12B0 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 0x1335 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 0x11D0 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 0x13C1 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 0x11D0 JUMP JUMPDEST SWAP1 POP PUSH2 0xBE4 DUP2 PUSH2 0xE1D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0xDACBDDE355BA930696A362EA6738FEB9F8BD52DFB3D81947558FD3217E23E325 SWAP1 PUSH1 0x60 ADD 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 0xCB3 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 0xCDA SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1400 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCF0 SWAP2 SWAP1 PUSH2 0x1335 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD0C SWAP2 SWAP1 PUSH2 0x1335 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xD46 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1164 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD5C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xD6E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD85 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xDB3 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 0xDE4 SWAP3 SWAP2 SWAP1 PUSH2 0x1432 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0xE17 DUP4 DUP3 PUSH2 0x14A8 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 0xEA9 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 0xECD SWAP2 SWAP1 PUSH2 0x11E7 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 0xF7A JUMPI PUSH2 0xF7A PUSH2 0xF43 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 0xFA9 JUMPI PUSH2 0xFA9 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xFCA JUMPI PUSH2 0xFCA PUSH2 0xF43 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFE7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xFFA PUSH2 0xFF5 DUP3 PUSH2 0xFB1 JUMP JUMPDEST PUSH2 0xF80 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x100E 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 0x103B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x104B JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1066 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1072 DUP6 DUP3 DUP7 ADD PUSH2 0xFD8 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 0xCF0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x107C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CC 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 0x10F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCF0 DUP2 PUSH2 0x10D3 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 0x1135 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 0x115C PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x107C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xCF0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1116 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x668 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1193 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCF0 DUP2 PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x115C DUP5 DUP3 DUP6 ADD PUSH2 0xFD8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCF0 DUP2 PUSH2 0x1176 JUMP JUMPDEST PUSH0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1213 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1237 JUMPI PUSH2 0x1237 PUSH2 0xF43 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x1245 DUP2 PUSH2 0x10D3 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 0x126C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x1277 DUP2 PUSH2 0x10D3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1294 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x12A5 DUP2 PUSH2 0x1176 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x12C4 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x12E2 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 0x12F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1305 PUSH2 0xFF5 DUP3 PUSH2 0xFB1 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x1319 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 0x1345 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x136C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1374 PUSH2 0xF57 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1382 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 0x13A7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x13B3 DUP7 DUP3 DUP6 ADD PUSH2 0x12E8 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x13D3 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1116 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 0x1410 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x115C DUP5 DUP3 DUP6 ADD PUSH2 0x12E8 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x1444 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1116 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1456 DUP2 DUP6 PUSH2 0x1116 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x14A3 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1484 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 0x1490 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14C2 JUMPI PUSH2 0x14C2 PUSH2 0xF43 JUMP JUMPDEST PUSH2 0x14D6 DUP2 PUSH2 0x14D0 DUP5 SLOAD PUSH2 0x12B0 JUMP JUMPDEST DUP5 PUSH2 0x145F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1508 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x14F1 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 0x1537 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x1517 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1554 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 0xA7 MLOAD 0xB4 PUSH26 0x74C1227AB948D5C0E6446E9E1BDA4A34CCEFF191E2CFE150B0D8 DUP11 SAR PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1270:7428:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6552:1481;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5003:121;;;;;;:::i;:::-;;:::i;:::-;;4481:169;;;;;;:::i;:::-;;:::i;:::-;;;3082:25:75;;;3070:2;3055:18;4481:169:51;2936:177:75;8559:137:51;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3839:387::-;;;;;;:::i;:::-;;:::i;1428:81::-;;;;;4688:99;;;;;;:::i;:::-;-1:-1:-1;4772:10:51;;4688:99;;;;-1:-1:-1;;;;;4719:32:75;;;4701:51;;4689:2;4674:18;4688:99:51;4555:203:75;3612:189:51;;;;;;:::i;:::-;;:::i;5162:99::-;;;;;;:::i;:::-;;:::i;4264:179::-;;;;;;:::i;:::-;;:::i;4825:140::-;;;;;;:::i;:::-;;:::i;6552:1481::-;6646:12;-1:-1:-1;;;;;2928:6:51;2911:23;2919:4;2911:23;2907:72;;2943:36;;-1:-1:-1;;;2943:36:51;;;;;;;;;;;2907:72;6666:28:::1;6712:6;6697:22;;;;;;;;;;:::i;:::-;6666:53:::0;-1:-1:-1;6746:29:51::1;6729:13;:46;;;;;;;;:::i;:::-;::::0;6725:1280:::1;;7334:13;7361:6;7350:29;;;;;;;;;;;;:::i;:::-;7334:45;;7387:22;7403:5;7387:15;:22::i;:::-;6777:639;6725:1280;;;7443:28;7426:13;:45;;;;;;;;:::i;:::-;::::0;7422:583:::1;;7687:53;7702:29;7725:4;7702:14;:29::i;:::-;7733:6;7687:14;:53::i;:::-;-1:-1:-1::0;;8019:9:51::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;8019:9:51;;6552:1481;;;;:::o;5003:121::-;-1:-1:-1;;;;;2928:6:51;2911:23;2919:4;2911:23;2907:72;;2943:36;;-1:-1:-1;;;2943:36:51;;;;;;;;;;;2907:72;5083:36:::1;::::0;-1:-1:-1;;;5083:36:51;;-1:-1:-1;;;;;5100:10:51::1;5515:32:75::0;;5083:36:51::1;::::0;::::1;5497:51:75::0;5564:18;;;5557:34;;;5083:7:51::1;:16;::::0;::::1;::::0;5470:18:75;;5083:36:51::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5003:121:::0;:::o;4481:169::-;4562:7;4581;-1:-1:-1;;;;;4581:22:51;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4577:38;;;-1:-1:-1;4614:1:51;;4481:169;-1:-1:-1;4481:169:51:o;4577:38::-;-1:-1:-1;;;4628:17:51;4481:169;-1:-1:-1;4481:169:51:o;8559:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8666:25:51;8681:9;8666:14;:25::i;:::-;8659:32;8559:137;-1:-1:-1;;8559:137:51:o;3839:387::-;-1:-1:-1;;;;;2928:6:51;2911:23;2919:4;2911:23;2907:72;;2943:36;;-1:-1:-1;;;2943:36:51;;;;;;;;;;;2907:72;3922:5:::1;3917:305;;3941:32;::::0;-1:-1:-1;;;3941:32:51;;3967:4:::1;3941:32;::::0;::::1;4701:51:75::0;3941:7:51::1;-1:-1:-1::0;;;;;3941:17:51::1;::::0;::::1;::::0;4674:18:75;;3941:32:51::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37:::0;3937:78:::1;;3987:28;;-1:-1:-1::0;;;3987:28:51::1;;;;;;;;;;;3937:78;4062:62;::::0;-1:-1:-1;;;4062:62:51;;-1:-1:-1;;;;;4100:7:51::1;6044:32:75::0;;4062:62:51::1;::::0;::::1;6026:51:75::0;4118:4:51::1;6093:18:75::0;;;6086:60;-1:-1:-1;;4062:15:51::1;:29:::0;;::::1;::::0;::::1;::::0;5999:18:75;;4062:62:51::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4136:10:::0;;4023:101;;-1:-1:-1;;;;;;4136:24:51::1;::::0;;::::1;::::0;:42:::1;;-1:-1:-1::0;4164:9:51::1;::::0;::::1;::::0;:14;::::1;4136:42;4132:83;;;4187:28;;-1:-1:-1::0;;;4187:28:51::1;;;;;;;;;;;4132:83;3929:293;3917:305;3839:387:::0;:::o;3612:189::-;-1:-1:-1;;;;;2928:6:51;2911:23;2919:4;2911:23;2907:72;;2943:36;;-1:-1:-1;;;2943:36:51;;;;;;;;;;;2907:72;3713::::1;::::0;;::::1;::::0;::::1;::::0;;;3698:98:::1;::::0;3713:72;-1:-1:-1;3713:72:51::1;;;;3772:1;3713:72;;;;3775:9;;;;;;;;;;;::::0;3713:72:::1;;::::0;3787:8:::1;3698:14;:98::i;5162:99::-:0;-1:-1:-1;;;;;2928:6:51;2911:23;2919:4;2911:23;2907:72;;2943:36;;-1:-1:-1;;;2943:36:51;;;;;;;;;;;2907:72;5241:15:::1;5249:6;5241:7;:15::i;4264:179::-:0;4342:7;4361;-1:-1:-1;;;;;4361:24:51;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4357:40;;;-1:-1:-1;4396:1:51;;4264:179;-1:-1:-1;4264:179:51:o;4357:40::-;4410:28;;-1:-1:-1;;;4410:28:51;;-1:-1:-1;;;;;4719:32:75;;;4410:28:51;;;4701:51:75;4410:7:51;:17;;;;4674:18:75;;4410:28:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4825:140::-;4932:28;;-1:-1:-1;;;4932:28:51;;-1:-1:-1;;;;;4719:32:75;;;4932:28:51;;;4701:51:75;4903:14:51;;4932:7;:17;;;;;;4674:18:75;;4932:28:51;4555:203:75;5414:618:51;5492:46;;-1:-1:-1;;;5492:46:51;;-1:-1:-1;;;;;5529:7:51;4719:32:75;;5492:46:51;;;4701:51:75;-1:-1:-1;;5492:15:51;:28;;;;;;4674:18:75;;5492:46:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5469:69:51;;-1:-1:-1;;;;;;;5548:20:51;;5544:33;;5570:7;5414:618;:::o;5544:33::-;5582:60;;-1:-1:-1;;;5582:60:51;;-1:-1:-1;;;;;5612:7:51;7614:32:75;;5582:60:51;;;7596:51:75;5630:4:51;7663:18:75;;;7656:60;5637:4:51;7732:18:75;;;7725:50;5582:15:51;:21;;;;7569:18:75;;5582:60:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:40;5710:37;5735:11;3877:4:39;3738:159;5710:37:51;5692:99;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5815:39;;-1:-1:-1;;;5815:39:51;;5848:4;5815:39;;;4701:51:75;5649:142:51;;-1:-1:-1;5798:14:51;;-1:-1:-1;;;;;5815:24:51;;;;;4674:18:75;;5815:39:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5885:56;;-1:-1:-1;;;5885:56:51;;5798;;-1:-1:-1;5860:22:51;;5885:21;;;;:56;;:10;;5907:6;;5915:10;;5798:56;;5935:5;;5885:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5860:81;;5947:23;5955:14;5947:7;:23::i;:::-;5981:46;;;-1:-1:-1;;;;;10350:32:75;;10332:51;;10414:2;10399:18;;10392:34;;;10442:18;;;10435:34;;;5981:46:51;;10320:2:75;10305:18;5981:46:51;;;;;;;5463:569;;;;5414:618;:::o;8037:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8173:51:51;;-1:-1:-1;;;8173:51:51;;8212:11;8173:51;;;3082:25:75;8140:30:51;;-1:-1:-1;;;;;8173:38:51;;;;;3055:18:75;;8173:51:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8173:51:51;;;;;;;;;;;;:::i;:::-;8140:84;;8248:17;8237:55;;;;;;;;;;;;:::i;:::-;8230:62;8037:260;-1:-1:-1;;;8037:260:51:o;6036:478::-;6155:40;6209:20;6198:58;;;;;;;;;;;;:::i;:::-;6262:21;;-1:-1:-1;;;6262:21:51;;6155:101;;-1:-1:-1;6262:19:51;;;;:21;;6155:101;;6262:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6326:20;:27;6304:10;6293:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6289:93;;6362:20;;-1:-1:-1;;;6362:20:51;;;;;;;;;;;6289:93;6393:44;6411:13;6426:10;6393:44;;;;;;;:::i;:::-;;;;;;;;6468:11;6443:66;6489:20;6468:11;6443:66;:::i;:::-;;6149:365;6036:478;;:::o;5265:145::-;5313:52;;-1:-1:-1;;;5313:52:51;;-1:-1:-1;;;;;5348:7:51;5515:32:75;;5313:52:51;;;5497:51:75;5564:18;;;5557:34;;;5320:10:51;5313:26;;;;5470:18:75;;5313:52:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5371:34:51;;-1:-1:-1;;;5371:34:51;;-1:-1:-1;;;;;5386:10:51;5515:32:75;;5371:34:51;;;5497:51:75;5564:18;;;5557:34;;;5371:7:51;:14;;;;5470:18:75;;5371:34:51;5323:274:75;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:75;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:75:o;684:186::-;732:4;765:18;757:6;754:30;751:56;;;787:18;;:::i;:::-;-1:-1:-1;853:2:75;832:15;-1:-1:-1;;828:29:75;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:75: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:75;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:75;;2363:180;-1:-1:-1;2363:180:75:o;2548:131::-;-1:-1:-1;;;;;2623:31:75;;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:75:o;3734:265::-;3917:2;3906:9;3899:21;3880:4;3937:56;3989:2;3978:9;3974:18;3966:6;3937:56;:::i;4004:118::-;4090:5;4083:13;4076:21;4069:5;4066:32;4056:60;;4112:1;4109;4102:12;4127:241;4183:6;4236:2;4224:9;4215:7;4211:23;4207:32;4204:52;;;4252:1;4249;4242:12;4204:52;4291:9;4278:23;4310:28;4332:5;4310:28;:::i;4763:320::-;4831:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:52;;;4900:1;4897;4890:12;4852:52;4940:9;4927:23;4973:18;4965:6;4962:30;4959:50;;;5005:1;5002;4995:12;4959:50;5028:49;5069:7;5060:6;5049:9;5045:22;5028:49;:::i;5088:230::-;5158:6;5211:2;5199:9;5190:7;5186:23;5182:32;5179:52;;;5227:1;5224;5217:12;5179:52;-1:-1:-1;5272:16:75;;5088:230;-1:-1:-1;5088:230:75:o;5602:245::-;5669:6;5722:2;5710:9;5701:7;5697:23;5693:32;5690:52;;;5738:1;5735;5728:12;5690:52;5770:9;5764:16;5789:28;5811:5;5789:28;:::i;6157:681::-;6256:6;6316:2;6304:9;6295:7;6291:23;6287:32;6331:2;6328:22;;;6346:1;6343;6336:12;6328:22;-1:-1:-1;6415:2:75;6409:9;;;6445:15;;6490:18;6475:34;;6511:22;;;6472:62;6469:88;;;6537:18;;:::i;:::-;6573:2;6566:22;6610:16;;6635:31;6610:16;6635:31;:::i;:::-;6675:21;;6762:2;6747:18;;;6741:25;6782:15;;;6775:32;;;;-1:-1:-1;6682:6:75;6157:681;-1:-1:-1;6157:681:75:o;6843:552::-;6927:6;6935;6943;6996:2;6984:9;6975:7;6971:23;6967:32;6964:52;;;7012:1;7009;7002:12;6964:52;7044:9;7038:16;7063:31;7088:5;7063:31;:::i;:::-;7163:2;7148:18;;7142:25;7113:5;;-1:-1:-1;7211:18:75;7198:32;;7186:45;;7176:73;;7245:1;7242;7235:12;7176:73;7320:2;7305:18;;7299:25;7268:7;;-1:-1:-1;7333:30:75;7299:25;7333:30;:::i;:::-;7382:7;7372:17;;;6843:552;;;;;:::o;7786:380::-;7865:1;7861:12;;;;7908;;;7929:61;;7983:4;7975:6;7971:17;7961:27;;7929:61;8036:2;8028:6;8025:14;8005:18;8002:38;7999:161;;8082:10;8077:3;8073:20;8070:1;8063:31;8117:4;8114:1;8107:15;8145:4;8142:1;8135:15;7999:161;;7786:380;;;:::o;8171:483::-;8224:5;8277:3;8270:4;8262:6;8258:17;8254:27;8244:55;;8295:1;8292;8285:12;8244:55;8328:6;8322:13;8359:52;8375:35;8403:6;8375:35;:::i;8359:52::-;8436:6;8427:7;8420:23;8490:3;8483:4;8474:6;8466;8462:19;8458:30;8455:39;8452:59;;;8507:1;8504;8497:12;8452:59;8565:6;8558:4;8550:6;8546:17;8539:4;8530:7;8526:18;8520:52;8621:1;8592:20;;;8614:4;8588:31;8581:42;;;;8596:7;8171:483;-1:-1:-1;;;8171:483:75:o;8659:849::-;8756:6;8809:2;8797:9;8788:7;8784:23;8780:32;8777:52;;;8825:1;8822;8815:12;8777:52;8858:9;8852:16;8891:18;8883:6;8880:30;8877:50;;;8923:1;8920;8913:12;8877:50;8946:22;;9002:4;8984:16;;;8980:27;8977:47;;;9020:1;9017;9010:12;8977:47;9046:22;;:::i;:::-;9098:2;9092:9;9132:1;9123:7;9120:14;9110:42;;9148:1;9145;9138:12;9110:42;9161:22;;9242:2;9234:11;;;9228:18;9262:14;;;9255:31;9325:2;9317:11;;9311:18;9354;9341:32;;9338:52;;;9386:1;9383;9376:12;9338:52;9422:55;9469:7;9458:8;9454:2;9450:17;9422:55;:::i;:::-;9417:2;9406:14;;9399:79;-1:-1:-1;9410:5:75;8659:849;-1:-1:-1;;;;8659:849:75:o;9513:612::-;9816:3;9805:9;9798:22;9779:4;9837:57;9889:3;9878:9;9874:19;9866:6;9837:57;:::i;:::-;-1:-1:-1;;;;;9930:32:75;;;9925:2;9910:18;;9903:60;9999:32;;;;9994:2;9979:18;;9972:60;10063:2;10048:18;;10041:34;;;;10106:3;10091:19;;;10084:35;9829:65;9513:612;-1:-1:-1;;9513:612:75:o;10480:335::-;10559:6;10612:2;10600:9;10591:7;10587:23;10583:32;10580:52;;;10628:1;10625;10618:12;10580:52;10661:9;10655:16;10694:18;10686:6;10683:30;10680:50;;;10726:1;10723;10716:12;10680:50;10749:60;10801:7;10792:6;10781:9;10777:22;10749:60;:::i;11098:473::-;11363:2;11352:9;11345:21;11326:4;11389:56;11441:2;11430:9;11426:18;11418:6;11389:56;:::i;:::-;11493:9;11485:6;11481:22;11476:2;11465:9;11461:18;11454:50;11521:44;11558:6;11550;11521:44;:::i;:::-;11513:52;11098:473;-1:-1:-1;;;;;11098:473:75:o;11701:517::-;11802:2;11797:3;11794:11;11791:421;;;11838:5;11835:1;11828:16;11882:4;11879:1;11869:18;11952:2;11940:10;11936:19;11933:1;11929:27;11923:4;11919:38;11988:4;11976:10;11973:20;11970:47;;;-1:-1:-1;12011:4:75;11970:47;12066:2;12061:3;12057:12;12054:1;12050:20;12044:4;12040:31;12030:41;;12121:81;12139:2;12132:5;12129:13;12121:81;;;12198:1;12184:16;;12165:1;12154:13;12121:81;;11791:421;11701:517;;;:::o;12394:1295::-;12518:3;12512:10;12545:18;12537:6;12534:30;12531:56;;;12567:18;;:::i;:::-;12596:96;12685:6;12645:38;12677:4;12671:11;12645:38;:::i;:::-;12639:4;12596:96;:::i;:::-;12741:4;12772:2;12761:14;;12789:1;12784:648;;;;13476:1;13493:6;13490:89;;;-1:-1:-1;13545:19:75;;;13539:26;13490:89;-1:-1:-1;;12351:1:75;12347:11;;;12343:24;12339:29;12329:40;12375:1;12371:11;;;12326:57;13592:81;;12754:929;;12784:648;11648:1;11641:14;;;11685:4;11672:18;;-1:-1:-1;;12820:20:75;;;12937:222;12951:7;12948:1;12945:14;12937:222;;;13033:19;;;13027:26;13012:42;;13140:4;13125:20;;;;13093:1;13081:14;;;;12967:12;12937:222;;;12941:3;13187:6;13178:7;13175:19;13172:201;;;13248:19;;;13242:26;-1:-1:-1;;13331:1:75;13327:14;;;13343:3;13323:24;13319:37;13315:42;13300:58;13285:74;;13172:201;-1:-1:-1;;;;13419:1:75;13403:14;;;13399:22;13386:36;;-1:-1:-1;12394:1295:75: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.28+commit.7893614a\"},\"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/CompoundV3InvestStrategy.sol\":\"CompoundV3InvestStrategy\"},\"evmVersion\":\"cancun\",\"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\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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/CompoundV3InvestStrategy.sol\":{\"keccak256\":\"0xe0d86d57b11fa7965d9c5bf25f93908fded3c0730d48bae7bf4f9f28d8ccef00\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1abbb0f5539d9ae2c1572de8652e77425eb9dd7abfc3fc20f19544280c3a7944\",\"dweb:/ipfs/QmWYGcWdnb8g8GAHejvyfj6eWHMxdmMBuQtUWjJQYwiEAy\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"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\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"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":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e19baa092590237d6a3cfcb8651a026701d9f4ca99a0e29bfe4dcbbf65f3161e64736f6c634300081c0033","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 0xE1 SWAP12 0xAA MULMOD 0x25 SWAP1 0x23 PUSH30 0x6A3CFCB8651A026701D9F4CA99A0E29BFE4DCBBF65F3161E64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"581:7607:52:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;581:7607:52;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220e19baa092590237d6a3cfcb8651a026701d9f4ca99a0e29bfe4dcbbf65f3161e64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 SWAP12 0xAA MULMOD 0x25 SWAP1 0x23 PUSH30 0x6A3CFCB8651A026701D9F4CA99A0E29BFE4DCBBF65F3161E64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"581:7607:52:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"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":"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","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.28+commit.7893614a\"},\"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\":\"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\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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\":\"0xddb5cd69d86cd5feb1b4732aba8c745b347159ee8e500f7af3cc33e9ca305c0d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc8a0079a984750f524796152cdd4882769771fe8e8329c085bc327dc957490d\",\"dweb:/ipfs/QmcKDFDrvisgX65QJhw6aLVvLiWPxozPww7ZFXSEZAEsns\"]},\"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":15803,"contract":"contracts/MSVBase.sol:MSVBase","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15807,"contract":"contracts/MSVBase.sol:MSVBase","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15812,"contract":"contracts/MSVBase.sol:MSVBase","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)22374)32_storage"},{"astId":17436,"contract":"contracts/MSVBase.sol:MSVBase","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)22374)32_storage":{"base":"t_contract(IInvestStrategy)22374","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)22374":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/MultiStrategyERC4626.sol":{"MultiStrategyERC4626":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","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":[{"internalType":"address","name":"asset","type":"address"}],"name":"InvalidAsset","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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FORWARD_TO_STRATEGY_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_STRATEGIES","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUEUE_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REBALANCER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STRATEGY_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"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":"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":"getForwardToStrategyRole","outputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"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":"owner","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"ret","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":"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategies","outputs":[{"internalType":"contract IInvestStrategy[32]","name":"","type":"address[32]"}],"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":"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":{"@_17486":{"entryPoint":null,"id":17486,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_2832":{"entryPoint":33,"id":2832,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"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:75","nodeType":"YulBlock","src":"0:216:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"113:101:75","nodeType":"YulBlock","src":"113:101:75","statements":[{"nativeSrc":"123:26:75","nodeType":"YulAssignment","src":"123:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:75","nodeType":"YulIdentifier","src":"135:9:75"},{"kind":"number","nativeSrc":"146:2:75","nodeType":"YulLiteral","src":"146:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:75","nodeType":"YulIdentifier","src":"131:3:75"},"nativeSrc":"131:18:75","nodeType":"YulFunctionCall","src":"131:18:75"},"variableNames":[{"name":"tail","nativeSrc":"123:4:75","nodeType":"YulIdentifier","src":"123:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:75","nodeType":"YulIdentifier","src":"165:9:75"},{"arguments":[{"name":"value0","nativeSrc":"180:6:75","nodeType":"YulIdentifier","src":"180:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:75","nodeType":"YulLiteral","src":"196:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:75","nodeType":"YulLiteral","src":"200:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:75","nodeType":"YulIdentifier","src":"192:3:75"},"nativeSrc":"192:10:75","nodeType":"YulFunctionCall","src":"192:10:75"},{"kind":"number","nativeSrc":"204:1:75","nodeType":"YulLiteral","src":"204:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:75","nodeType":"YulIdentifier","src":"188:3:75"},"nativeSrc":"188:18:75","nodeType":"YulFunctionCall","src":"188:18:75"}],"functionName":{"name":"and","nativeSrc":"176:3:75","nodeType":"YulIdentifier","src":"176:3:75"},"nativeSrc":"176:31:75","nodeType":"YulFunctionCall","src":"176:31:75"}],"functionName":{"name":"mstore","nativeSrc":"158:6:75","nodeType":"YulIdentifier","src":"158:6:75"},"nativeSrc":"158:50:75","nodeType":"YulFunctionCall","src":"158:50:75"},"nativeSrc":"158:50:75","nodeType":"YulExpressionStatement","src":"158:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:75","nodeType":"YulTypedName","src":"82:9:75","type":""},{"name":"value0","nativeSrc":"93:6:75","nodeType":"YulTypedName","src":"93:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:75","nodeType":"YulTypedName","src":"104:4:75","type":""}],"src":"14:200:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516151f56100f95f395f8181611a0a01528181611a330152611b9601526151f55ff3fe60806040526004361061035b575f3560e01c806370a08231116101bd578063ba087652116100f2578063d905777e11610092578063e1d394501161006d578063e1d3945014610a04578063e682324d14610a37578063ef8b30f714610915578063f617eecc14610a56575f5ffd5b8063d905777e146109a5578063d9f9027f146109c4578063dd62ed3e146109e5575f5ffd5b8063c6e6f592116100cd578063c6e6f59214610915578063cd0e0f4414610934578063ce96cb7714610967578063d547741f14610986575f5ffd5b8063ba087652146108b8578063bd577eb6146108d7578063c63d75b6146108f6575f5ffd5b806395d89b411161015d578063a9059cbb11610138578063a9059cbb1461082b578063ad3cb1cc1461084a578063b3d7f6b91461087a578063b460af9414610899575f5ffd5b806395d89b41146107e557806396da35da146107f9578063a217fddf14610818575f5ffd5b80637aeedf2a116101985780637aeedf2a14610769578063914abf4f1461078857806391d14854146107a757806394bf804d146107c6575f5ffd5b806370a0823114610717578063767f06ae146107365780637ac445a71461074a575f5ffd5b8063313ce56711610293578063490b48f81161023357806351a2d6d11161020e57806351a2d6d1146106a457806352d1902d146106c55780636b3ea526146106d95780636e553f65146106f8575f5ffd5b8063490b48f81461065e5780634cdad506146103d65780634f1ef28614610691575f5ffd5b806338d52e0f1161026e57806338d52e0f146105ce5780633aaf904814610601578063402d267d1461062057806347e575331461063f575f5ffd5b8063313ce5671461055657806336568abe1461057c578063367fee391461059b575f5ffd5b8063128b772f116102fe57806323b872dd116102d957806323b872dd146104c6578063248a9ca3146104e557806324ea54f4146105045780632f2ff15d14610537575f5ffd5b8063128b772f1461045357806318160ddd146104725780631e4e0091146104a5575f5ffd5b806307a2d13a1161033957806307a2d13a146103d6578063095ea7b3146103f55780630a28a477146104145780630b74ce8c14610433575f5ffd5b806301e1d1141461035f57806301ffc9a71461038657806306fdde03146103b5575b5f5ffd5b34801561036a575f5ffd5b50610373610a6a565b6040519081526020015b60405180910390f35b348015610391575f5ffd5b506103a56103a03660046145ac565b610a78565b604051901515815260200161037d565b3480156103c0575f5ffd5b506103c9610aae565b60405161037d9190614601565b3480156103e1575f5ffd5b506103736103f0366004614613565b610b6e565b348015610400575f5ffd5b506103a561040f36600461464e565b610b79565b34801561041f575f5ffd5b5061037361042e366004614613565b610b90565b34801561043e575f5ffd5b506103735f5160206151405f395f51905f5281565b34801561045e575f5ffd5b5061037361046d366004614688565b610b9c565b34801561047d575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610373565b3480156104b0575f5ffd5b506104c46104bf3660046146b9565b610c0e565b005b3480156104d1575f5ffd5b506103a56104e03660046146d9565b610c27565b3480156104f0575f5ffd5b506103736104ff366004614613565b610c4c565b34801561050f575f5ffd5b506103737f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b348015610542575f5ffd5b506104c4610551366004614717565b610c6c565b348015610561575f5ffd5b5061056a610c8e565b60405160ff909116815260200161037d565b348015610587575f5ffd5b506104c4610596366004614717565b610cbd565b3480156105a6575f5ffd5b506103737f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c181565b3480156105d9575f5ffd5b505f5160206151a05f395f51905f52546040516001600160a01b03909116815260200161037d565b34801561060c575f5ffd5b506103c961061b3660046147fa565b610cf0565b34801561062b575f5ffd5b5061037361063a366004614853565b610d75565b34801561064a575f5ffd5b506103c9610659366004614613565b610d94565b348015610669575f5ffd5b506103737fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4681565b6104c461069f36600461486e565b610f14565b3480156106af575f5ffd5b506106b8610f33565b60405161037d91906148ba565b3480156106d0575f5ffd5b50610373610f8b565b3480156106e4575f5ffd5b506104c46106f3366004614a63565b610fa6565b348015610703575f5ffd5b50610373610712366004614717565b6110c0565b348015610722575f5ffd5b50610373610731366004614853565b61111d565b348015610741575f5ffd5b5061056a602081565b348015610755575f5ffd5b506104c4610764366004614b9a565b611143565b348015610774575f5ffd5b506104c461078336600461486e565b61116d565b348015610793575f5ffd5b506104c46107a2366004614c06565b61118e565b3480156107b2575f5ffd5b506103a56107c1366004614717565b6111c1565b3480156107d1575f5ffd5b506103736107e0366004614717565b6111f7565b3480156107f0575f5ffd5b506103c9611243565b348015610804575f5ffd5b506104c4610813366004614c37565b611281565b348015610823575f5ffd5b506103735f81565b348015610836575f5ffd5b506103a561084536600461464e565b6112a2565b348015610855575f5ffd5b506103c9604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610885575f5ffd5b50610373610894366004614613565b6112af565b3480156108a4575f5ffd5b506103736108b3366004614c5f565b6112bb565b3480156108c3575f5ffd5b506103736108d2366004614c5f565b611308565b3480156108e2575f5ffd5b506104c46108f1366004614c06565b611355565b348015610901575f5ffd5b50610373610910366004614853565b611388565b348015610920575f5ffd5b5061037361092f366004614613565b6113ca565b34801561093f575f5ffd5b506103737f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc81565b348015610972575f5ffd5b50610373610981366004614853565b6113d5565b348015610991575f5ffd5b506104c46109a0366004614717565b6113eb565b3480156109b0575f5ffd5b506103736109bf366004614853565b611407565b3480156109cf575f5ffd5b506109d861144c565b60405161037d9190614c9e565b3480156109f0575f5ffd5b506103736109ff366004614ccf565b611492565b348015610a0f575f5ffd5b506103737fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b348015610a42575f5ffd5b50610373610a51366004614cfb565b6114db565b348015610a61575f5ffd5b506106b8611511565b5f610a7361154c565b905090565b5f6001600160e01b03198216637965db0b60e01b1480610aa857506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206151205f395f51905f5291610aec90614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1890614d24565b8015610b635780601f10610b3a57610100808354040283529160200191610b63565b820191905f5260205f20905b815481529060010190602001808311610b4657829003601f168201915b505050505091505090565b5f610aa8825f6115c7565b5f33610b8681858561161e565b5060019392505050565b5f610aa882600161162b565b5f5f60028460ff1660208110610bb457610bb4614d5c565b01546bffffffffffffffffffffffff1960609190911b1660ff60581b605885901b161860ff60501b605086901b16187f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc1891505092915050565b5f610c1881611679565b610c228383611686565b505050565b5f33610c348582856116e6565b610c3f858585611730565b60019150505b9392505050565b5f9081525f5160206151805f395f51905f52602052604090206001015490565b610c7582610c4c565b610c7e81611679565b610c88838361178d565b50505050565b5f805f5160206151a05f395f51905f5290505f8154610cb79190600160a01b900460ff16614d84565b91505090565b6001600160a01b0381163314610ce65760405163334bd91960e11b815260040160405180910390fd5b610c22828261182e565b6060610cfd8484846118a7565b5f60028560ff1660208110610d1457610d14614d5c565b01546001600160a01b0316905080610d3f57604051632711b74d60e11b815260040160405180910390fd5b610d6c848460028860ff1660208110610d5a57610d5a614d5c565b01546001600160a01b031691906118e4565b95945050505050565b5f610d7f82611936565b5f03610d8c57505f919050565b610aa8611973565b60605f5b5f60028260208110610dac57610dac614d5c565b01546001600160a01b031614801590610dc55750602081105b15610efa5760028160208110610ddd57610ddd614d5c565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e509190614d9d565b8303610eea57825483908190610e6590614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9190614d24565b8015610edc5780601f10610eb357610100808354040283529160200191610edc565b820191905f5260205f20905b815481529060010190602001808311610ebf57829003601f168201915b505050505092505050919050565b610ef381614db4565b9050610d98565b5060405163213109dd60e11b815260040160405180910390fd5b610f1c6119ff565b610f2582611aa5565b610f2f8282611acf565b5050565b610f3b61458d565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610f535790505050505050905090565b5f610f94611b8b565b505f5160206151605f395f51905f5290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fea5750825b90505f826001600160401b031660011480156110055750303b155b905081158015611013575080155b156110315760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561105b57845460ff60401b1916600160401b1785555b61106b8d8d8d8d8d8d8d8d611bd4565b83156110b157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f5f6110cb83610d75565b9050808411156110fd57828482604051633c8097d960e11b81526004016110f493929190614dcc565b60405180910390fd5b5f611107856113ca565b905061111533858784611bfe565b949350505050565b6001600160a01b03165f9081525f5160206151205f395f51905f52602052604090205490565b5f5160206151405f395f51905f5261115a81611679565b61116685858585611c13565b5050505050565b5f5160206151405f395f51905f5261118481611679565b610c228383611d4c565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c16111b881611679565b610f2f82611f51565b5f9182525f5160206151805f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f61120283611388565b90508084111561122b5782848260405163284ff66760e01b81526004016110f493929190614dcc565b5f611235856112af565b905061111533858388611bfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206151205f395f51905f5291610aec90614d24565b5f5160206151405f395f51905f5261129881611679565b610c2283836121b0565b5f33610b86818585611730565b5f610aa88260016115c7565b5f5f6112c6836113d5565b9050808511156112ef57828582604051633fa733bb60e21b81526004016110f493929190614dcc565b5f6112f986610b90565b9050610d6c33868689856127c7565b5f5f61131383611407565b90508085111561133c57828582604051632e52afbb60e21b81526004016110f493929190614dcc565b5f61134686610b6e565b9050610d6c338686848a6127c7565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c161137f81611679565b610f2f826127dd565b5f61139282611936565b5f0361139f57505f919050565b5f6113a8611973565b90505f1981146113c1576113bc815f61162b565b610c45565b5f199392505050565b5f610aa8825f61162b565b5f5f6113e083612a29565b9050610c4581612a3c565b6113f482610c4c565b6113fd81611679565b610c88838361182e565b5f5f61141283612ad1565b90505f61141f825f6115c7565b90505f61142b82612a3c565b90508181146114435761143e815f61162b565b610d6c565b50909392505050565b61145461458d565b604080516104008101918290529060029060209082845b81546001600160a01b0316815260019091019060200180831161146b575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f7fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4661150681611679565b610d6c858585612adb565b61151961458d565b604080516104008101918290525f805460ff1682529091602090826001838601808411610f535790505050505050905090565b5f5f5b5f6002826020811061156357611563614d5c565b01546001600160a01b03161480159061157c5750602081105b156115c3576115a76002826020811061159757611597614d5c565b01546001600160a01b0316612ccb565b6115b19083614ded565b91506115bc81614db4565b905061154f565b5090565b5f610c456115d3610a6a565b6115de906001614ded565b6115e95f600a614ee3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546116159190614ded565b85919085612d34565b610c228383836001612d76565b5f610c4561163a82600a614ee3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546116669190614ded565b61166e610a6a565b611615906001614ded565b6116838133612e59565b50565b5f5160206151805f395f51905f525f61169e84610c4c565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f6116f18484611492565b90505f198114610c88578181101561172257828183604051637dc7a0d960e11b81526004016110f493929190614dcc565b610c8884848484035f612d76565b6001600160a01b03831661175957604051634b637e8f60e11b81525f60048201526024016110f4565b6001600160a01b0382166117825760405163ec442f0560e01b81525f60048201526024016110f4565b610c22838383612e92565b5f5f5160206151805f395f51905f526117a684846111c1565b611825575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117db3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610aa8565b5f915050610aa8565b5f5f5160206151805f395f51905f5261184784846111c1565b15611825575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610aa8565b7f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc6118d181611679565b6118db8484610b9c565b61116681611679565b606061111583836040516024016118fc929190614ef1565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690612fb8565b5f6119617fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a6836111c1565b61196c57505f919050565b5f19610aa8565b5f5f5f5b5f6002826020811061198b5761198b614d5c565b01546001600160a01b0316148015906119a45750602081105b156119fa576119d8836119d3600284602081106119c3576119c3614d5c565b01546001600160a01b0316613021565b61304f565b93509150816119ea575f199250505090565b6119f381614db4565b9050611977565b505090565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611a8557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a795f5160206151605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611aa35760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610f2f81611679565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b29575060408051601f3d908101601f19168201909252611b2691810190614d9d565b60015b611b5157604051634c9c8ce360e01b81526001600160a01b03831660048201526024016110f4565b5f5160206151605f395f51905f528114611b8157604051632a87526960e21b8152600481018290526024016110f4565b610c228383613076565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611aa35760405163703e46dd60e11b815260040160405180910390fd5b611bdc6130cb565b611be888888888613114565b611bf484848484613171565b5050505050505050565b611c0a848484846136f2565b610c888261376f565b5f60028560ff1660208110611c2a57611c2a614d5c565b01546001600160a01b0316905080611c5557604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015611c8457505f60028260208110611c7657611c76614d5c565b01546001600160a01b031614155b15611cfa57846001600160a01b031660028260208110611ca657611ca6614d5c565b01546001600160a01b0316148015611cc157508560ff168114155b15611cea5760405163b5a9314f60e01b81526001600160a01b03861660048201526024016110f4565b611cf381614db4565b9050611c57565b50611d0f818585611d09613886565b866138a5565b8360028660ff1660208110611d2657611d26614d5c565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216611d7357604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015611da257505f60028260208110611d9457611d94614d5c565b01546001600160a01b031614155b15611e0857826001600160a01b031660028260208110611dc457611dc4614d5c565b01546001600160a01b031603611df85760405163b5a9314f60e01b81526001600160a01b03841660048201526024016110f4565b611e0181614db4565b9050611d75565b601f198101611e2d57604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110611e4157611e41614d5c565b0180546001600160a01b0319166001600160a01b0392909216919091179055611e6b816001614ded565b5f8260208110611e7d57611e7d614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806001611eaa9190614ded565b60018260208110611ebd57611ebd614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550611ef8611ee8613886565b6001600160a01b038516906139f3565b611f0b6001600160a01b03841683613a85565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b611f5961458d565b81515f9060201015611f7e5760405163a29b1f1160e01b815260040160405180910390fd5b825181101561212957602060ff16838281518110611f9e57611f9e614d5c565b602002602001015160ff16101580611ff757505f6001600160a01b03166002848381518110611fcf57611fcf614d5c565b602002602001015160ff1660208110611fea57611fea614d5c565b01546001600160a01b0316145b156120155760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061202857612028614d5c565b602002602001015160ff166020811061204357612043614d5c565b60200201511561208a5782818151811061205f5761205f614d5c565b602002602001015160405163c41fdbb960e01b81526004016110f4919060ff91909116815260200190565b60018284838151811061209f5761209f614d5c565b602002602001015160ff16602081106120ba576120ba614d5c565b9115156020909202015282518390829081106120d8576120d8614d5c565b602002602001015160016120ec9190614d84565b5f82602081106120fe576120fe614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050611f7e565b60208110801561215657505f6002826020811061214857612148614d5c565b01546001600160a01b031614155b1561217457604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec836040516121a39190614f0c565b60405180910390a1505050565b602060ff8316106121d457604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff16602081106121eb576121eb614d5c565b01546001600160a01b031690508061221657604051632711b74d60e11b815260040160405180910390fd5b811580156122345750612231816001600160a01b0316612ccb565b15155b15612252576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561226c57506003546001600160a01b0316155b1561228d57604051600162ad1fab60e01b0319815260040160405180910390fd5b5f612299846001614d84565b60ff1690505b6020811080156122cc57505f600282602081106122be576122be614d5c565b01546001600160a01b031614155b1561233b57600281602081106122e4576122e4614d5c565b01546001600160a01b031660026122fc600184614f51565b6020811061230c5761230c614d5c565b0180546001600160a01b0319166001600160a01b039290921691909117905561233481614db4565b905061229f565b5f6002612349600184614f51565b6020811061235957612359614d5c565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061239057612390614d5c565b602081049091015460ff601f9092166101000a900416158015906123b45750602083105b156126e6578015612478576123ca866001614d84565b60ff16600184602081106123e0576123e0614d5c565b602081049091015460ff601f9092166101000a90041611612401575f612404565b60015b6001846020811061241757612417614d5c565b602091828204019190069054906101000a900460ff166124379190614f64565b60016124438186614f51565b6020811061245357612453614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550612549565b612483866001614d84565b60ff166001846020811061249957612499614d5c565b602081049091015460ff601f9092166101000a900416036124bc57506001612549565b6124c7866001614d84565b60ff16600184602081106124dd576124dd614d5c565b602081049091015460ff601f9092166101000a900416111561254957600180846020811061250d5761250d614d5c565b602091828204019190068282829054906101000a900460ff166125309190614f64565b92506101000a81548160ff021916908360ff1602179055505b81156126065761255a866001614d84565b60ff165f846020811061256f5761256f614d5c565b602081049091015460ff601f9092166101000a90041611612590575f612593565b60015b5f84602081106125a5576125a5614d5c565b602091828204019190069054906101000a900460ff166125c59190614f64565b5f6125d1600186614f51565b602081106125e1576125e1614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055506126d6565b612611866001614d84565b60ff165f846020811061262657612626614d5c565b602081049091015460ff601f9092166101000a9004160361264a57600191506126d6565b612655866001614d84565b60ff165f846020811061266a5761266a614d5c565b602081049091015460ff601f9092166101000a90041611156126d65760015f846020811061269a5761269a614d5c565b602091828204019190068282829054906101000a900460ff166126bd9190614f64565b92506101000a81548160ff021916908360ff1602179055505b6126df83614db4565b925061237d565b5f806126f3600186614f51565b6020811061270357612703614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055505f600180856127329190614f51565b6020811061274257612742614d5c565b602091828204019190066101000a81548160ff021916908360ff16021790555061277e85856001600160a01b0316613ad390919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b6127d082613bf8565b6111668585858585613d0b565b6127e561458d565b81515f906020101561280a5760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff1610156129a957602060ff16838260ff168151811061283057612830614d5c565b602002602001015160ff1610158061288c57505f6001600160a01b03166002848360ff168151811061286457612864614d5c565b602002602001015160ff166020811061287f5761287f614d5c565b01546001600160a01b0316145b156128aa5760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff16815181106128c0576128c0614d5c565b602002602001015160ff16602081106128db576128db614d5c565b6020020151156128fa57828160ff168151811061205f5761205f614d5c565b600182848360ff168151811061291257612912614d5c565b602002602001015160ff166020811061292d5761292d614d5c565b911515602090920201528251839060ff831690811061294e5761294e614d5c565b602002602001015160016129629190614d84565b60018260ff166020811061297857612978614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806129a290614f7d565b905061280a565b602060ff82161080156129dc57505f600260ff8316602081106129ce576129ce614d5c565b01546001600160a01b031614155b156129fa57604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516121a39190614f0c565b5f610aa8612a368361111d565b5f6115c7565b5f5f5f5b5f60028260208110612a5457612a54614d5c565b01546001600160a01b031614801590612a6d5750602081105b15612aca57612a9c836119d360028460208110612a8c57612a8c614d5c565b01546001600160a01b0316613dbf565b93509150811580612aad5750838310155b15612aba57509192915050565b612ac381614db4565b9050612a40565b5050919050565b5f610aa88261111d565b5f602060ff8516101580612af35750602060ff841610155b15612b1157604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110612b2857612b28614d5c565b01546001600160a01b031690505f600260ff861660208110612b4c57612b4c614d5c565b01546001600160a01b03908116915082161580612b7057506001600160a01b038116155b15612b8e57604051632711b74d60e11b815260040160405180910390fd5b5f198403612bab57612ba8826001600160a01b0316612ccb565b93505b835f03612bbc575f92505050610c45565b612bce826001600160a01b0316613dbf565b841115612c0357612be7826001600160a01b0316613dbf565b604051633ce011d560e01b81526004016110f491815260200190565b612c15816001600160a01b0316613021565b841115612c4a57612c2e816001600160a01b0316613021565b6040516350a3e37560e11b81526004016110f491815260200190565b612c5e6001600160a01b038316855f613ded565b50612c736001600160a01b038216855f613f29565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051612cb991815260200190565b60405180910390a35091949350505050565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612d10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa89190614d9d565b5f612d61612d418361404a565b8015612d5c57505f8480612d5757612d57614f9b565b868809115b151590565b612d6c868686614076565b610d6c9190614ded565b5f5160206151205f395f51905f526001600160a01b038516612dad5760405163e602df0560e01b81525f60048201526024016110f4565b6001600160a01b038416612dd657604051634a1406b160e11b81525f60048201526024016110f4565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561116657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612e4a91815260200190565b60405180910390a35050505050565b612e6382826111c1565b610f2f5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016110f4565b5f5160206151205f395f51905f526001600160a01b038416612ecc5781816002015f828254612ec19190614ded565b90915550612f299050565b6001600160a01b0384165f9081526020829052604090205482811015612f0b5784818460405163391434e360e21b81526004016110f493929190614dcc565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612f47576002810180548390039055612f65565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa91815260200190565b60405180910390a350505050565b60605f5f846001600160a01b031684604051612fd49190614faf565b5f60405180830381855af49150503d805f811461300c576040519150601f19603f3d011682016040523d82523d5f602084013e613011565b606091505b5091509150610d6c85838361412c565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612cf5565b5f8083830184811015613068575f5f925092505061306f565b6001925090505b9250929050565b61307f82614183565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156130c357610c228282612fb8565b610f2f6141e6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611aa357604051631afcd79f60e31b815260040160405180910390fd5b61311c6130cb565b613124614205565b61312c614205565b6001600160a01b038116613155576040516337bce3c560e11b81525f60048201526024016110f4565b61315e8161420d565b613168848461421e565b610c8882614230565b83511580613180575083516020105b8061318d57508251845114155b8061319a57508151845114155b806131a757508051845114155b156131c857604051600162ad1fab60e01b0319815260040160405180910390fd5b6131d061458d565b6131d861458d565b5f5b865181101561367b575f6001600160a01b03168782815181106131ff576131ff614d5c565b60200260200101516001600160a01b03160361322e57604051632711b74d60e11b815260040160405180910390fd5b61326a613239613886565b88838151811061324b5761324b614d5c565b60200260200101516001600160a01b03166139f390919063ffffffff16565b5f5b8181101561330a5787818151811061328657613286614d5c565b60200260200101516001600160a01b03168883815181106132a9576132a9614d5c565b60200260200101516001600160a01b031603613302578782815181106132d1576132d1614d5c565b602002602001015160405163b5a9314f60e01b81526004016110f491906001600160a01b0391909116815260200190565b60010161326c565b50865185828151811061331f5761331f614d5c565b602002602001015160ff1610158061336657508285828151811061334557613345614d5c565b602002602001015160ff166020811061336057613360614d5c565b60200201515b156133a85784818151811061337d5761337d614d5c565b602002602001015160405163306ccd5d60e11b81526004016110f4919060ff91909116815260200190565b86518482815181106133bc576133bc614d5c565b602002602001015160ff161015806134035750818482815181106133e2576133e2614d5c565b602002602001015160ff16602081106133fd576133fd614d5c565b60200201515b156134455783818151811061341a5761341a614d5c565b6020026020010151604051632776924160e11b81526004016110f4919060ff91909116815260200190565b60018386838151811061345a5761345a614d5c565b602002602001015160ff166020811061347557613475614d5c565b60200201901515908115158152505060018285838151811061349957613499614d5c565b602002602001015160ff16602081106134b4576134b4614d5c565b9115156020909202015286518790829081106134d2576134d2614d5c565b6020026020010151600282602081106134ed576134ed614d5c565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061352357613523614d5c565b602002602001015160016135379190614d84565b5f826020811061354957613549614d5c565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061357b5761357b614d5c565b6020026020010151600161358f9190614d84565b600182602081106135a2576135a2614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055506136108682815181106135d7576135d7614d5c565b60200260200101518883815181106135f1576135f1614d5c565b60200260200101516001600160a01b0316613a8590919063ffffffff16565b86818151811061362257613622614d5c565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161366b919060ff91909116815260200190565b60405180910390a26001016131da565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec846040516136ab9190614f0c565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516136e29190614f0c565b60405180910390a1505050505050565b5f5160206151a05f395f51905f528054613717906001600160a01b0316863086614242565b61372184836142a9565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612e4a929190918252602082015260400190565b805f5b81158015906137a757505f816020811061378e5761378e614d5c565b602081049091015460ff601f9092166101000a90041615155b80156137b35750602081105b15613866575f600260015f84602081106137cf576137cf614d5c565b602091828204019190069054906101000a900460ff166137ef9190614f64565b60ff166020811061380257613802614d5c565b01546001600160a01b031690505f6138228461381d84613021565b6142dd565b9050805f03613832575050613856565b6138466001600160a01b038316825f613f29565b506138518185614f51565b935050505b61385f81614db4565b9050613772565b508015610f2f5760405163285a546d60e01b815260040160405180910390fd5b5f610a735f5160206151a05f395f51905f52546001600160a01b031690565b6138af84836139f3565b60405163f3e0ffbf60e01b81523060048201526139219086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156138f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061391b9190614d9d565b83613ded565b5061392c8582613ad3565b6139368484613a85565b6040516370a0823160e01b81523060048201526139a89085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561397e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a29190614d9d565b83613f29565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015613a3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a5e9190614fc5565b6001600160a01b031614610f2f5760405163e76673ef60e01b815260040160405180910390fd5b610c2281604051602401613a999190614601565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690612fb8565b8015613bae57604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251613b2a9190614faf565b5f60405180830381855af49150503d805f8114613b62576040519150601f19603f3d011682016040523d82523d5f602084013e613b67565b606091505b509150915081610c88577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051613ba09190614601565b60405180910390a150505050565b6040515f6024820152610c229060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690612fb8565b805f5b8115801590613c31575060018160208110613c1857613c18614d5c565b602081049091015460ff601f9092166101000a90041615155b8015613c3d5750602081105b15613ceb575f60026001808460208110613c5957613c59614d5c565b602091828204019190069054906101000a900460ff16613c799190614f64565b60ff1660208110613c8c57613c8c614d5c565b01546001600160a01b031690505f613ca78461381d84613dbf565b9050805f03613cb7575050613cdb565b613ccb6001600160a01b038316825f613ded565b50613cd68185614f51565b935050505b613ce481614db4565b9050613bfb565b508015610f2f5760405163351dc55d60e21b815260040160405180910390fd5b5f5160206151a05f395f51905f526001600160a01b0386811690851614613d3757613d378487846116e6565b613d4184836142ec565b8054613d57906001600160a01b03168685614320565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051613daf929190918252602082015260400190565b60405180910390a4505050505050565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612cf5565b5f8115613ecf575f5f856001600160a01b031685604051602401613e1391815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251613e489190614faf565b5f60405180830381855af49150503d805f8114613e80576040519150601f19603f3d011682016040523d82523d5f602084013e613e85565b606091505b509150915081613ec7577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051613ebe9190614601565b60405180910390a15b509050610c45565b613f1f83604051602401613ee591815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690612fb8565b5060019050610c45565b5f8115613ffa575f5f856001600160a01b031685604051602401613f4f91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251613f849190614faf565b5f60405180830381855af49150503d805f8114613fbc576040519150601f19603f3d011682016040523d82523d5f602084013e613fc1565b606091505b509150915081613ec7577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051613ebe9190614601565b613f1f8360405160240161401091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690612fb8565b5f600282600381111561405f5761405f614fe0565b6140699190614ff4565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036140aa578382816140a0576140a0614f9b565b0492505050610c45565b8084116140c1576140c16003851502601118614351565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60608261413c576113bc82614362565b815115801561415357506001600160a01b0384163b155b1561417c57604051639996b31560e01b81526001600160a01b03851660048201526024016110f4565b5080610c45565b806001600160a01b03163b5f036141b857604051634c9c8ce360e01b81526001600160a01b03821660048201526024016110f4565b5f5160206151605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b3415611aa35760405163b398979f60e01b815260040160405180910390fd5b611aa36130cb565b6142156130cb565b6116838161438b565b6142266130cb565b610f2f82826143fb565b6142386130cb565b610f2f5f8261178d565b6040516001600160a01b038481166024830152838116604483015260648201839052610c889186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061444b565b6001600160a01b0382166142d25760405163ec442f0560e01b81525f60048201526024016110f4565b610f2f5f8383612e92565b5f828218828410028218610c45565b6001600160a01b03821661431557604051634b637e8f60e11b81525f60048201526024016110f4565b610f2f825f83612e92565b6040516001600160a01b03838116602483015260448201839052610c2291859182169063a9059cbb90606401614277565b634e487b715f52806020526024601cfd5b8051156143725780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6143936130cb565b5f5160206151a05f395f51905f525f806143ac846144b7565b91509150816143bc5760126143be565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b6144036130cb565b5f5160206151205f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361443c8482615065565b5060048101610c888382615065565b5f5f60205f8451602086015f885af18061446a576040513d5f823e3d81fd5b50505f513d9150811561448157806001141561448e565b6001600160a01b0384163b155b15610c8857604051635274afe760e01b81526001600160a01b03851660048201526024016110f4565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b038716916144fd91614faf565b5f60405180830381855afa9150503d805f8114614535576040519150601f19603f3d011682016040523d82523d5f602084013e61453a565b606091505b509150915081801561454e57506020815110155b15614581575f818060200190518101906145689190614d9d565b905060ff811161457f576001969095509350505050565b505b505f9485945092505050565b6040518061040001604052806020906020820280368337509192915050565b5f602082840312156145bc575f5ffd5b81356001600160e01b031981168114610c45575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c4560208301846145d3565b5f60208284031215614623575f5ffd5b5035919050565b6001600160a01b0381168114611683575f5ffd5b80356146498161462a565b919050565b5f5f6040838503121561465f575f5ffd5b823561466a8161462a565b946020939093013593505050565b803560ff81168114614649575f5ffd5b5f5f60408385031215614699575f5ffd5b6146a283614678565b91506146b060208401614678565b90509250929050565b5f5f604083850312156146ca575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156146eb575f5ffd5b83356146f68161462a565b925060208401356147068161462a565b929592945050506040919091013590565b5f5f60408385031215614728575f5ffd5b82359150602083013561473a8161462a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561478157614781614745565b604052919050565b5f82601f830112614798575f5ffd5b8135602083015f5f6001600160401b038411156147b7576147b7614745565b50601f8301601f19166020016147cc81614759565b9150508281528583830111156147e0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561480c575f5ffd5b61481584614678565b925061482360208501614678565b915060408401356001600160401b0381111561483d575f5ffd5b61484986828701614789565b9150509250925092565b5f60208284031215614863575f5ffd5b8135610c458161462a565b5f5f6040838503121561487f575f5ffd5b823561488a8161462a565b915060208301356001600160401b038111156148a4575f5ffd5b6148b085828601614789565b9150509250929050565b610400810181835f5b60208110156148e557815160ff168352602092830192909101906001016148c3565b50505092915050565b5f6001600160401b0382111561490657614906614745565b5060051b60200190565b5f82601f83011261491f575f5ffd5b813561493261492d826148ee565b614759565b8082825260208201915060208360051b860101925085831115614953575f5ffd5b602085015b8381101561497957803561496b8161462a565b835260209283019201614958565b5095945050505050565b5f82601f830112614992575f5ffd5b81356149a061492d826148ee565b8082825260208201915060208360051b8601019250858311156149c1575f5ffd5b602085015b838110156149795780356001600160401b038111156149e3575f5ffd5b6149f2886020838a0101614789565b845250602092830192016149c6565b5f82601f830112614a10575f5ffd5b8135614a1e61492d826148ee565b8082825260208201915060208360051b860101925085831115614a3f575f5ffd5b602085015b8381101561497957614a5581614678565b835260209283019201614a44565b5f5f5f5f5f5f5f5f610100898b031215614a7b575f5ffd5b88356001600160401b03811115614a90575f5ffd5b614a9c8b828c01614789565b98505060208901356001600160401b03811115614ab7575f5ffd5b614ac38b828c01614789565b975050614ad260408a0161463e565b9550614ae060608a0161463e565b945060808901356001600160401b03811115614afa575f5ffd5b614b068b828c01614910565b94505060a08901356001600160401b03811115614b21575f5ffd5b614b2d8b828c01614983565b93505060c08901356001600160401b03811115614b48575f5ffd5b614b548b828c01614a01565b92505060e08901356001600160401b03811115614b6f575f5ffd5b614b7b8b828c01614a01565b9150509295985092959890939650565b80358015158114614649575f5ffd5b5f5f5f5f60808587031215614bad575f5ffd5b614bb685614678565b93506020850135614bc68161462a565b925060408501356001600160401b03811115614be0575f5ffd5b614bec87828801614789565b925050614bfb60608601614b8b565b905092959194509250565b5f60208284031215614c16575f5ffd5b81356001600160401b03811115614c2b575f5ffd5b61111584828501614a01565b5f5f60408385031215614c48575f5ffd5b614c5183614678565b91506146b060208401614b8b565b5f5f5f60608486031215614c71575f5ffd5b833592506020840135614c838161462a565b91506040840135614c938161462a565b809150509250925092565b610400810181835f5b60208110156148e55781516001600160a01b0316835260209283019290910190600101614ca7565b5f5f60408385031215614ce0575f5ffd5b8235614ceb8161462a565b9150602083013561473a8161462a565b5f5f5f60608486031215614d0d575f5ffd5b614d1684614678565b925061470660208501614678565b600181811c90821680614d3857607f821691505b602082108103614d5657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610aa857610aa8614d70565b5f60208284031215614dad575f5ffd5b5051919050565b5f60018201614dc557614dc5614d70565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b80820180821115610aa857610aa8614d70565b6001815b6001841115614e3b57808504811115614e1f57614e1f614d70565b6001841615614e2d57908102905b60019390931c928002614e04565b935093915050565b5f82614e5157506001610aa8565b81614e5d57505f610aa8565b8160018114614e735760028114614e7d57614e99565b6001915050610aa8565b60ff841115614e8e57614e8e614d70565b50506001821b610aa8565b5060208310610133831016604e8410600b8410161715614ebc575081810a610aa8565b614ec85f198484614e00565b805f1904821115614edb57614edb614d70565b029392505050565b5f610c4560ff841683614e43565b60ff83168152604060208201525f61111560408301846145d3565b602080825282518282018190525f918401906040840190835b81811015614f4657835160ff16835260209384019390920191600101614f25565b509095945050505050565b81810381811115610aa857610aa8614d70565b60ff8281168282160390811115610aa857610aa8614d70565b5f60ff821660ff8103614f9257614f92614d70565b60010192915050565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215614fd5575f5ffd5b8151610c458161462a565b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061501257634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610c2257805f5260205f20601f840160051c810160208510156150465750805b601f840160051c820191505b81811015611166575f8155600101615052565b81516001600160401b0381111561507e5761507e614745565b6150928161508c8454614d24565b84615021565b6020601f8211600181146150c4575f83156150ad5750848201515b5f19600385901b1c1916600184901b178455611166565b5f84815260208120601f198516915b828110156150f357878501518255602094850194600190920191016150d3565b508482101561511057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005604e2fe54b4de17b81a5ded6f82357d742fd2722d67304e37ff20bd589b4f38360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a26469706673582212201c9b7fe0f18e75a0251d462b589a16503c58d706f46971a5675dd8ec8649302a64736f6c634300081c0033","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 0x51F5 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x1A0A ADD MSTORE DUP2 DUP2 PUSH2 0x1A33 ADD MSTORE PUSH2 0x1B96 ADD MSTORE PUSH2 0x51F5 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1BD JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xE1D39450 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0xA04 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0xA56 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD905777E EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC6E6F592 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xCD0E0F44 EQ PUSH2 0x934 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x986 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x8B8 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x8D7 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x8F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x15D JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x138 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x84A JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x899 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x818 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x198 JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x7A7 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x7C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x717 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x74A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x293 JUMPI DUP1 PUSH4 0x490B48F8 GT PUSH2 0x233 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x6B3EA526 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x6F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x490B48F8 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x691 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F GT PUSH2 0x26E JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x63F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x367FEE39 EQ PUSH2 0x59B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x128B772F GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x537 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x128B772F EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x4A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7A2D13A GT PUSH2 0x339 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xB74CE8C EQ PUSH2 0x433 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3B5 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xA6A 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 0x391 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x45AC JUMP JUMPDEST PUSH2 0xA78 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xB6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x400 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0xB79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x42E CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xB90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x4688 JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x373 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x46B9 JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D9 JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x4FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xC4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x542 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x551 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0xC6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH2 0xC8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x47FA JUMP JUMPDEST PUSH2 0xCF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xD94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x669 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0xCCC64574297998B6C3EDF6078CC5E01268465FF116954E3AF02FF3A70A730F46 DUP2 JUMP JUMPDEST PUSH2 0x4C4 PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x486E JUMP JUMPDEST PUSH2 0xF14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B8 PUSH2 0xF33 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xF8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x6F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A63 JUMP JUMPDEST PUSH2 0xFA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x703 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x712 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x10C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x731 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x111D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x755 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9A JUMP JUMPDEST PUSH2 0x1143 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x486E JUMP JUMPDEST PUSH2 0x116D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x793 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x7A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C06 JUMP JUMPDEST PUSH2 0x118E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x11C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x7E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x1243 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x813 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x1281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x823 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x845 CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 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 0x885 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x894 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0x12AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C5F JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C5F JUMP JUMPDEST PUSH2 0x1308 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x8F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C06 JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x901 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x910 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x1388 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x920 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x92F CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0x13CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x972 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x981 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x13D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x9A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x9BF CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x1407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9D8 PUSH2 0x144C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4C9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x9FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCF JUMP JUMPDEST PUSH2 0x1492 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA42 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xA51 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CFB JUMP JUMPDEST PUSH2 0x14DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B8 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0xA73 PUSH2 0x154C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xAA8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0xAEC SWAP1 PUSH2 0x4D24 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 0xB18 SWAP1 PUSH2 0x4D24 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB3A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB63 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 0xB46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH0 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xB86 DUP2 DUP6 DUP6 PUSH2 0x161E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH1 0x1 PUSH2 0x162B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xBB4 JUMPI PUSH2 0xBB4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xFF PUSH1 0x58 SHL PUSH1 0x58 DUP6 SWAP1 SHL AND XOR PUSH1 0xFF PUSH1 0x50 SHL PUSH1 0x50 DUP7 SWAP1 SHL AND XOR PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC XOR SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC18 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x1686 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xC34 DUP6 DUP3 DUP6 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0xC3F DUP6 DUP6 DUP6 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC75 DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0xC7E DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC88 DUP4 DUP4 PUSH2 0x178D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xCB7 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4D84 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xCE6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC22 DUP3 DUP3 PUSH2 0x182E JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCFD DUP5 DUP5 DUP5 PUSH2 0x18A7 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD14 JUMPI PUSH2 0xD14 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xD3F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD6C DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD5A JUMPI PUSH2 0xD5A PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD7F DUP3 PUSH2 0x1936 JUMP JUMPDEST PUSH0 SUB PUSH2 0xD8C JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAA8 PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDAC JUMPI PUSH2 0xDAC PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xDC5 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xEFA JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xDDD JUMPI PUSH2 0xDDD PUSH2 0x4D5C 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 0xE2C 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 0xE50 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 SUB PUSH2 0xEEA JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xE65 SWAP1 PUSH2 0x4D24 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 0x4D24 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 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEF3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0xD98 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 0xF1C PUSH2 0x19FF JUMP JUMPDEST PUSH2 0xF25 DUP3 PUSH2 0x1AA5 JUMP JUMPDEST PUSH2 0xF2F DUP3 DUP3 PUSH2 0x1ACF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xF3B PUSH2 0x458D 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 0xF53 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xF94 PUSH2 0x1B8B JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xFEA JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1005 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1013 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1031 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 0x105B JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x106B DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x1BD4 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x10B1 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 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x10CB DUP4 PUSH2 0xD75 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x10FD JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1107 DUP6 PUSH2 0x13CA JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 CALLER DUP6 DUP8 DUP5 PUSH2 0x1BFE 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 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x115A DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x1166 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1C13 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1184 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x1D4C JUMP JUMPDEST PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 PUSH2 0x11B8 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH2 0x1F51 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1202 DUP4 PUSH2 0x1388 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x122B JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x1235 DUP6 PUSH2 0x12AF JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 CALLER DUP6 DUP4 DUP9 PUSH2 0x1BFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0xAEC SWAP1 PUSH2 0x4D24 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1298 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x21B0 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xB86 DUP2 DUP6 DUP6 PUSH2 0x1730 JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH1 0x1 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x12C6 DUP4 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x12EF JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x12F9 DUP7 PUSH2 0xB90 JUMP JUMPDEST SWAP1 POP PUSH2 0xD6C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x27C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1313 DUP4 PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x133C JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x1346 DUP7 PUSH2 0xB6E JUMP JUMPDEST SWAP1 POP PUSH2 0xD6C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x27C7 JUMP JUMPDEST PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 PUSH2 0x137F DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH2 0x27DD JUMP JUMPDEST PUSH0 PUSH2 0x1392 DUP3 PUSH2 0x1936 JUMP JUMPDEST PUSH0 SUB PUSH2 0x139F JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13A8 PUSH2 0x1973 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x13C1 JUMPI PUSH2 0x13BC DUP2 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x13E0 DUP4 PUSH2 0x2A29 JUMP JUMPDEST SWAP1 POP PUSH2 0xC45 DUP2 PUSH2 0x2A3C JUMP JUMPDEST PUSH2 0x13F4 DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x13FD DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC88 DUP4 DUP4 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1412 DUP4 PUSH2 0x2AD1 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x141F DUP3 PUSH0 PUSH2 0x15C7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x142B DUP3 PUSH2 0x2A3C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1443 JUMPI PUSH2 0x143E DUP2 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x458D 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 0x146B 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 PUSH32 0xCCC64574297998B6C3EDF6078CC5E01268465FF116954E3AF02FF3A70A730F46 PUSH2 0x1506 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xD6C DUP6 DUP6 DUP6 PUSH2 0x2ADB JUMP JUMPDEST PUSH2 0x1519 PUSH2 0x458D 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 0xF53 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 0x1563 JUMPI PUSH2 0x1563 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x157C JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x15C3 JUMPI PUSH2 0x15A7 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1597 JUMPI PUSH2 0x1597 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x15B1 SWAP1 DUP4 PUSH2 0x4DED JUMP JUMPDEST SWAP2 POP PUSH2 0x15BC DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x154F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH2 0x15D3 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x15DE SWAP1 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x15E9 PUSH0 PUSH1 0xA PUSH2 0x4EE3 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1615 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2D76 JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH2 0x163A DUP3 PUSH1 0xA PUSH2 0x4EE3 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1666 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x166E PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x1615 SWAP1 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x1683 DUP2 CALLER PUSH2 0x2E59 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x169E DUP5 PUSH2 0xC4C JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x16F1 DUP5 DUP5 PUSH2 0x1492 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xC88 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x1722 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH2 0xC88 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2D76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1759 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x17A6 DUP5 DUP5 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0x1825 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x17DB CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1847 DUP5 DUP5 PUSH2 0x11C1 JUMP JUMPDEST ISZERO PUSH2 0x1825 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC PUSH2 0x18D1 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x18DB DUP5 DUP5 PUSH2 0xB9C JUMP JUMPDEST PUSH2 0x1166 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1115 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x18FC SWAP3 SWAP2 SWAP1 PUSH2 0x4EF1 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 0x2FB8 JUMP JUMPDEST PUSH0 PUSH2 0x1961 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0x196C JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0xAA8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x198B JUMPI PUSH2 0x198B PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x19A4 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH2 0x19D8 DUP4 PUSH2 0x19D3 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x19C3 JUMPI PUSH2 0x19C3 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x304F JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x19EA JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19F3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1977 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1A85 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A79 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 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 0x1AA3 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xF2F DUP2 PUSH2 0x1679 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 0x1B29 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1B26 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4D9D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1B51 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 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x3076 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BDC PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x1BE8 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3114 JUMP JUMPDEST PUSH2 0x1BF4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3171 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C0A DUP5 DUP5 DUP5 DUP5 PUSH2 0x36F2 JUMP JUMPDEST PUSH2 0xC88 DUP3 PUSH2 0x376F JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1C2A JUMPI PUSH2 0x1C2A PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1C55 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 0x1C84 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1C76 JUMPI PUSH2 0x1C76 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CFA JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1CA6 JUMPI PUSH2 0x1CA6 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1CC1 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CEA 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 0x10F4 JUMP JUMPDEST PUSH2 0x1CF3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C57 JUMP JUMPDEST POP PUSH2 0x1D0F DUP2 DUP6 DUP6 PUSH2 0x1D09 PUSH2 0x3886 JUMP JUMPDEST DUP7 PUSH2 0x38A5 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D26 JUMPI PUSH2 0x1D26 PUSH2 0x4D5C 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 0x1D73 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 0x1DA2 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1D94 JUMPI PUSH2 0x1D94 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E08 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1DC4 JUMPI PUSH2 0x1DC4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1DF8 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 0x10F4 JUMP JUMPDEST PUSH2 0x1E01 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D75 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x1E2D 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 0x1E41 JUMPI PUSH2 0x1E41 PUSH2 0x4D5C 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 0x1E6B DUP2 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1E7D JUMPI PUSH2 0x1E7D PUSH2 0x4D5C 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 0x1EAA SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1EBD JUMPI PUSH2 0x1EBD PUSH2 0x4D5C 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 0x1EF8 PUSH2 0x1EE8 PUSH2 0x3886 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x39F3 JUMP JUMPDEST PUSH2 0x1F0B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3A85 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 PUSH2 0x1F59 PUSH2 0x458D JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1F7E 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 0x2129 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F9E JUMPI PUSH2 0x1F9E PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1FF7 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FCF JUMPI PUSH2 0x1FCF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1FEA JUMPI PUSH2 0x1FEA PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2015 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 0x2028 JUMPI PUSH2 0x2028 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2043 JUMPI PUSH2 0x2043 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x208A JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x205F JUMPI PUSH2 0x205F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x209F JUMPI PUSH2 0x209F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x20BA JUMPI PUSH2 0x20BA PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x20D8 JUMPI PUSH2 0x20D8 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x20EC SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x20FE JUMPI PUSH2 0x20FE PUSH2 0x4D5C 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 0x1F7E JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x2156 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2148 JUMPI PUSH2 0x2148 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2174 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 0x21A3 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x21D4 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 0x21EB JUMPI PUSH2 0x21EB PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x2216 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 0x2234 JUMPI POP PUSH2 0x2231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2252 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 0x226C JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x228D 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 0x2299 DUP5 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x22CC JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x22BE JUMPI PUSH2 0x22BE PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x233B JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x22E4 JUMPI PUSH2 0x22E4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x22FC PUSH1 0x1 DUP5 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x230C JUMPI PUSH2 0x230C PUSH2 0x4D5C 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 0x2334 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x229F JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x2349 PUSH1 0x1 DUP5 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2359 JUMPI PUSH2 0x2359 PUSH2 0x4D5C 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 0x2390 JUMPI PUSH2 0x2390 PUSH2 0x4D5C 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 0x23B4 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x26E6 JUMPI DUP1 ISZERO PUSH2 0x2478 JUMPI PUSH2 0x23CA DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x23E0 JUMPI PUSH2 0x23E0 PUSH2 0x4D5C 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 0x2401 JUMPI PUSH0 PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2417 JUMPI PUSH2 0x2417 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2437 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2443 DUP2 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2453 JUMPI PUSH2 0x2453 PUSH2 0x4D5C 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 0x2549 JUMP JUMPDEST PUSH2 0x2483 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2499 JUMPI PUSH2 0x2499 PUSH2 0x4D5C 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 0x24BC JUMPI POP PUSH1 0x1 PUSH2 0x2549 JUMP JUMPDEST PUSH2 0x24C7 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x24DD JUMPI PUSH2 0x24DD PUSH2 0x4D5C 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 0x2549 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x250D JUMPI PUSH2 0x250D PUSH2 0x4D5C 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 0x2530 SWAP2 SWAP1 PUSH2 0x4F64 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 0x2606 JUMPI PUSH2 0x255A DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x256F JUMPI PUSH2 0x256F PUSH2 0x4D5C 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 0x2590 JUMPI PUSH0 PUSH2 0x2593 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x25A5 JUMPI PUSH2 0x25A5 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25C5 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH0 PUSH2 0x25D1 PUSH1 0x1 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x25E1 JUMPI PUSH2 0x25E1 PUSH2 0x4D5C 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 0x26D6 JUMP JUMPDEST PUSH2 0x2611 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2626 JUMPI PUSH2 0x2626 PUSH2 0x4D5C 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 0x264A JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x26D6 JUMP JUMPDEST PUSH2 0x2655 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x266A JUMPI PUSH2 0x266A PUSH2 0x4D5C 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 0x26D6 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x269A JUMPI PUSH2 0x269A PUSH2 0x4D5C 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 0x26BD SWAP2 SWAP1 PUSH2 0x4F64 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 0x26DF DUP4 PUSH2 0x4DB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x237D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x26F3 PUSH1 0x1 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2703 JUMPI PUSH2 0x2703 PUSH2 0x4D5C 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 0x2732 SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2742 JUMPI PUSH2 0x2742 PUSH2 0x4D5C 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 0x277E DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AD3 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 PUSH2 0x27D0 DUP3 PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x1166 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3D0B JUMP JUMPDEST PUSH2 0x27E5 PUSH2 0x458D JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x280A 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 0x29A9 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2830 JUMPI PUSH2 0x2830 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x288C JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2864 JUMPI PUSH2 0x2864 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x287F JUMPI PUSH2 0x287F PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x28AA 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 0x28C0 JUMPI PUSH2 0x28C0 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x28DB JUMPI PUSH2 0x28DB PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x28FA JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x205F JUMPI PUSH2 0x205F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2912 JUMPI PUSH2 0x2912 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x292D JUMPI PUSH2 0x292D PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x294E JUMPI PUSH2 0x294E PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x2962 SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2978 JUMPI PUSH2 0x2978 PUSH2 0x4D5C 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 0x29A2 SWAP1 PUSH2 0x4F7D JUMP JUMPDEST SWAP1 POP PUSH2 0x280A JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x29DC JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x29CE JUMPI PUSH2 0x29CE PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x29FA 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 0x21A3 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH0 PUSH2 0xAA8 PUSH2 0x2A36 DUP4 PUSH2 0x111D JUMP JUMPDEST PUSH0 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2A54 JUMPI PUSH2 0x2A54 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2A6D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2A9C DUP4 PUSH2 0x19D3 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2A8C JUMPI PUSH2 0x2A8C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2AAD JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2ABA JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AC3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A40 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH2 0x111D JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x2AF3 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x2B11 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 0x2B28 JUMPI PUSH2 0x2B28 PUSH2 0x4D5C 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 0x2B4C JUMPI PUSH2 0x2B4C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2B70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x2B8E 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 0x2BAB JUMPI PUSH2 0x2BA8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x2BBC JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x2BCE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2C03 JUMPI PUSH2 0x2BE7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C15 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2C4A JUMPI PUSH2 0x2C2E DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C5E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x2C73 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x3F29 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 0x2CB9 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 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 0x2D10 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 0xAA8 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST PUSH0 PUSH2 0x2D61 PUSH2 0x2D41 DUP4 PUSH2 0x404A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D5C JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2D57 JUMPI PUSH2 0x2D57 PUSH2 0x4F9B JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D6C DUP7 DUP7 DUP7 PUSH2 0x4076 JUMP JUMPDEST PUSH2 0xD6C SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2DAD JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2DD6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 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 0x1166 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 0x2E4A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E63 DUP3 DUP3 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2ECC JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2EC1 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2F29 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 0x2F0B JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC 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 0x2F47 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x2F65 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 0x2FAA 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2FD4 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x300C 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 0x3011 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD6C DUP6 DUP4 DUP4 PUSH2 0x412C 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 0x2CF5 JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x3068 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x306F JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x307F DUP3 PUSH2 0x4183 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 0x30C3 JUMPI PUSH2 0xC22 DUP3 DUP3 PUSH2 0x2FB8 JUMP JUMPDEST PUSH2 0xF2F PUSH2 0x41E6 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311C PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x3124 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x312C PUSH2 0x4205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3155 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0x315E DUP2 PUSH2 0x420D JUMP JUMPDEST PUSH2 0x3168 DUP5 DUP5 PUSH2 0x421E JUMP JUMPDEST PUSH2 0xC88 DUP3 PUSH2 0x4230 JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x3180 JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x318D JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x319A JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x31A7 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x31C8 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 0x31D0 PUSH2 0x458D JUMP JUMPDEST PUSH2 0x31D8 PUSH2 0x458D JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x367B JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x31FF JUMPI PUSH2 0x31FF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x322E JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x326A PUSH2 0x3239 PUSH2 0x3886 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x324B JUMPI PUSH2 0x324B PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x330A JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3286 JUMPI PUSH2 0x3286 PUSH2 0x4D5C 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 0x32A9 JUMPI PUSH2 0x32A9 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3302 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x32D1 JUMPI PUSH2 0x32D1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x326C JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x331F JUMPI PUSH2 0x331F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3366 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3345 JUMPI PUSH2 0x3345 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3360 JUMPI PUSH2 0x3360 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x33A8 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x337D JUMPI PUSH2 0x337D PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x33BC JUMPI PUSH2 0x33BC PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3403 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x33FD JUMPI PUSH2 0x33FD PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3445 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x341A JUMPI PUSH2 0x341A PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x345A JUMPI PUSH2 0x345A PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3475 JUMPI PUSH2 0x3475 PUSH2 0x4D5C 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 0x3499 JUMPI PUSH2 0x3499 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x34B4 JUMPI PUSH2 0x34B4 PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x34D2 JUMPI PUSH2 0x34D2 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x34ED JUMPI PUSH2 0x34ED PUSH2 0x4D5C 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 0x3523 JUMPI PUSH2 0x3523 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3537 SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3549 JUMPI PUSH2 0x3549 PUSH2 0x4D5C 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 0x357B JUMPI PUSH2 0x357B PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x358F SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x35A2 JUMPI PUSH2 0x35A2 PUSH2 0x4D5C 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 0x3610 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35D7 JUMPI PUSH2 0x35D7 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35F1 JUMPI PUSH2 0x35F1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A85 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3622 JUMPI PUSH2 0x3622 PUSH2 0x4D5C 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 0x366B 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 0x31DA JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x36AB SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x36E2 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x3717 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x4242 JUMP JUMPDEST PUSH2 0x3721 DUP5 DUP4 PUSH2 0x42A9 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E4A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x37A7 JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x378E JUMPI PUSH2 0x378E PUSH2 0x4D5C 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 0x37B3 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3866 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x37CF JUMPI PUSH2 0x37CF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x37EF SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3802 JUMPI PUSH2 0x3802 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3822 DUP5 PUSH2 0x381D DUP5 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x42DD JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3832 JUMPI POP POP PUSH2 0x3856 JUMP JUMPDEST PUSH2 0x3846 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3F29 JUMP JUMPDEST POP PUSH2 0x3851 DUP2 DUP6 PUSH2 0x4F51 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x385F DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x3772 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xA73 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x38AF DUP5 DUP4 PUSH2 0x39F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3921 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 0x38F7 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 0x391B SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x392C DUP6 DUP3 PUSH2 0x3AD3 JUMP JUMPDEST PUSH2 0x3936 DUP5 DUP5 PUSH2 0x3A85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x39A8 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 0x397E 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 0x39A2 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 PUSH2 0x3F29 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 0x3A3A 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 0x3A5E SWAP2 SWAP1 PUSH2 0x4FC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC22 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x4601 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 0x2FB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BAE 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 0x3B2A SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3B62 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 0x3B67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC88 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3BA0 SWAP2 SWAP1 PUSH2 0x4601 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 0xC22 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 0x2FB8 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3C31 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3C18 JUMPI PUSH2 0x3C18 PUSH2 0x4D5C 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 0x3C3D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3CEB JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3C59 JUMPI PUSH2 0x3C59 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C79 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3C8C JUMPI PUSH2 0x3C8C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3CA7 DUP5 PUSH2 0x381D DUP5 PUSH2 0x3DBF JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3CB7 JUMPI POP POP PUSH2 0x3CDB JUMP JUMPDEST PUSH2 0x3CCB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x3CD6 DUP2 DUP6 PUSH2 0x4F51 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3CE4 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x3BFB JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3D37 JUMPI PUSH2 0x3D37 DUP5 DUP8 DUP5 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0x3D41 DUP5 DUP4 PUSH2 0x42EC JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3D57 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3DAF 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 POP 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 0x2CF5 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3ECF JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3E13 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 0x3E48 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E80 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 0x3E85 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3EC7 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3EBE SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x3F1F DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3EE5 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 0x2FB8 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xC45 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3FFA JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3F4F 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 0x3F84 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3FBC 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 0x3FC1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3EC7 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3EBE SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST PUSH2 0x3F1F DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4010 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 0x2FB8 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x405F JUMPI PUSH2 0x405F PUSH2 0x4FE0 JUMP JUMPDEST PUSH2 0x4069 SWAP2 SWAP1 PUSH2 0x4FF4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x40AA JUMPI DUP4 DUP3 DUP2 PUSH2 0x40A0 JUMPI PUSH2 0x40A0 PUSH2 0x4F9B JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xC45 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x40C1 JUMPI PUSH2 0x40C1 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x4351 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x413C JUMPI PUSH2 0x13BC DUP3 PUSH2 0x4362 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x4153 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x417C 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 0x10F4 JUMP JUMPDEST POP DUP1 PUSH2 0xC45 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x41B8 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 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 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 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1AA3 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x4215 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x1683 DUP2 PUSH2 0x438B JUMP JUMPDEST PUSH2 0x4226 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0xF2F DUP3 DUP3 PUSH2 0x43FB JUMP JUMPDEST PUSH2 0x4238 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0xF2F PUSH0 DUP3 PUSH2 0x178D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xC88 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x444B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x42D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xF2F PUSH0 DUP4 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4315 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH0 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xC22 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x4277 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4372 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4393 PUSH2 0x30CB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x43AC DUP5 PUSH2 0x44B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43BC JUMPI PUSH1 0x12 PUSH2 0x43BE 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 0x4403 PUSH2 0x30CB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x443C DUP5 DUP3 PUSH2 0x5065 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xC88 DUP4 DUP3 PUSH2 0x5065 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x446A JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x4481 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x448E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xC88 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 0x10F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x44FD SWAP2 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4535 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 0x453A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x454E JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x4581 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4568 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x457F JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 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 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC45 JUMPI PUSH0 PUSH0 REVERT 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 0xC45 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45D3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4623 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 0x1683 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4649 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x465F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x466A DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4649 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4699 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46A2 DUP4 PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH2 0x46B0 PUSH1 0x20 DUP5 ADD PUSH2 0x4678 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46CA 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 0x46EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x46F6 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4706 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4728 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x473A DUP2 PUSH2 0x462A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 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 0x4781 JUMPI PUSH2 0x4781 PUSH2 0x4745 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4798 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 0x47B7 JUMPI PUSH2 0x47B7 PUSH2 0x4745 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x47CC DUP2 PUSH2 0x4759 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x47E0 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 0x480C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4815 DUP5 PUSH2 0x4678 JUMP JUMPDEST SWAP3 POP PUSH2 0x4823 PUSH1 0x20 DUP6 ADD PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4849 DUP7 DUP3 DUP8 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4863 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC45 DUP2 PUSH2 0x462A JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x487F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x488A DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48A4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48B0 DUP6 DUP3 DUP7 ADD PUSH2 0x4789 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 0x48E5 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x48C3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4906 JUMPI PUSH2 0x4906 PUSH2 0x4745 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x491F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4932 PUSH2 0x492D DUP3 PUSH2 0x48EE JUMP JUMPDEST PUSH2 0x4759 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 0x4953 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI DUP1 CALLDATALOAD PUSH2 0x496B DUP2 PUSH2 0x462A JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4958 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4992 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x49A0 PUSH2 0x492D DUP3 PUSH2 0x48EE 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 0x49C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49F2 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4789 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x49C6 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A10 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4A1E PUSH2 0x492D DUP3 PUSH2 0x48EE 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 0x4A3F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI PUSH2 0x4A55 DUP2 PUSH2 0x4678 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4A44 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A90 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A9C DUP12 DUP3 DUP13 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AB7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4AC3 DUP12 DUP3 DUP13 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH2 0x4AD2 PUSH1 0x40 DUP11 ADD PUSH2 0x463E JUMP JUMPDEST SWAP6 POP PUSH2 0x4AE0 PUSH1 0x60 DUP11 ADD PUSH2 0x463E JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AFA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B06 DUP12 DUP3 DUP13 ADD PUSH2 0x4910 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B2D DUP12 DUP3 DUP13 ADD PUSH2 0x4983 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B54 DUP12 DUP3 DUP13 ADD PUSH2 0x4A01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B7B DUP12 DUP3 DUP13 ADD PUSH2 0x4A01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4649 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BB6 DUP6 PUSH2 0x4678 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4BC6 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BE0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BEC DUP8 DUP3 DUP9 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x4BFB PUSH1 0x60 DUP7 ADD PUSH2 0x4B8B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4C2B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1115 DUP5 DUP3 DUP6 ADD PUSH2 0x4A01 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4C51 DUP4 PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH2 0x46B0 PUSH1 0x20 DUP5 ADD PUSH2 0x4B8B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C71 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4C83 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4C93 DUP2 PUSH2 0x462A 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 0x48E5 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 0x4CA7 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CE0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CEB DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x473A DUP2 PUSH2 0x462A JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D0D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4D16 DUP5 PUSH2 0x4678 JUMP JUMPDEST SWAP3 POP PUSH2 0x4706 PUSH1 0x20 DUP6 ADD PUSH2 0x4678 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4D38 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4D56 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4DC5 JUMPI PUSH2 0x4DC5 PUSH2 0x4D70 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 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4E3B JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4E1F JUMPI PUSH2 0x4E1F PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4E2D JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4E04 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4E51 JUMPI POP PUSH1 0x1 PUSH2 0xAA8 JUMP JUMPDEST DUP2 PUSH2 0x4E5D JUMPI POP PUSH0 PUSH2 0xAA8 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4E73 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4E7D JUMPI PUSH2 0x4E99 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4E8E JUMPI PUSH2 0x4E8E PUSH2 0x4D70 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xAA8 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4EBC JUMPI POP DUP2 DUP2 EXP PUSH2 0xAA8 JUMP JUMPDEST PUSH2 0x4EC8 PUSH0 NOT DUP5 DUP5 PUSH2 0x4E00 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4EDB JUMPI PUSH2 0x4EDB PUSH2 0x4D70 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4E43 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x1115 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x45D3 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 0x4F46 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4F25 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4F92 JUMPI PUSH2 0x4F92 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP 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 0x4FD5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC45 DUP2 PUSH2 0x462A 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 0x5012 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 0xC22 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x5046 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1166 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5052 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x507E JUMPI PUSH2 0x507E PUSH2 0x4745 JUMP JUMPDEST PUSH2 0x5092 DUP2 PUSH2 0x508C DUP5 SLOAD PUSH2 0x4D24 JUMP JUMPDEST DUP5 PUSH2 0x5021 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x50C4 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x50AD 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 0x1166 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x50F3 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x50D3 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x5110 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE005604E2FE54 0xB4 0xDE OR 0xB8 BYTE TSTORE 0xED PUSH16 0x82357D742FD2722D67304E37FF20BD58 SWAP12 0x4F CODESIZE CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SWAP12 PUSH32 0xE0F18E75A0251D462B589A16503C58D706F46971A5675DD8EC8649302A64736F PUSH13 0x634300081C0033000000000000 ","sourceMap":"1211:6572:54:-:0;;;1171:4:8;1128:48;;1653:47:54;;;;;;;;;-1:-1:-1;1673:22:54;:20;:22::i;:::-;1211:6572;;7711:422:7;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:7;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:7;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:7;-1:-1:-1;;;;;8035:33:7;;;;;8087:29;;158:50:75;;;8087:29:7;;146:2:75;131:18;8087:29:7;;;;;;;7981:146;7760:373;7711:422::o;14:200:75:-;1211:6572:54;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_2276":{"entryPoint":null,"id":2276,"parameterSlots":0,"returnSlots":0},"@FORWARD_TO_STRATEGY_ROLE_17478":{"entryPoint":null,"id":17478,"parameterSlots":0,"returnSlots":0},"@GUARDIAN_ROLE_18371":{"entryPoint":null,"id":18371,"parameterSlots":0,"returnSlots":0},"@LP_ROLE_18366":{"entryPoint":null,"id":18366,"parameterSlots":0,"returnSlots":0},"@MAX_STRATEGIES_15799":{"entryPoint":null,"id":15799,"parameterSlots":0,"returnSlots":0},"@QUEUE_ADMIN_ROLE_17468":{"entryPoint":null,"id":17468,"parameterSlots":0,"returnSlots":0},"@REBALANCER_ROLE_17473":{"entryPoint":null,"id":17473,"parameterSlots":0,"returnSlots":0},"@STRATEGY_ADMIN_ROLE_17463":{"entryPoint":null,"id":17463,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@__AccessControl_init_2311":{"entryPoint":null,"id":2311,"parameterSlots":0,"returnSlots":0},"@__ERC20_init_3114":{"entryPoint":16926,"id":3114,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3142":{"entryPoint":17403,"id":3142,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3757":{"entryPoint":16909,"id":3757,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3795":{"entryPoint":17291,"id":3795,"parameterSlots":1,"returnSlots":0},"@__MSVBase_init_unchained_16143":{"entryPoint":12657,"id":16143,"parameterSlots":4,"returnSlots":0},"@__MultiStrategyERC4626_init_17568":{"entryPoint":7124,"id":17568,"parameterSlots":8,"returnSlots":0},"@__PermissionedERC4626_init_18426":{"entryPoint":12564,"id":18426,"parameterSlots":4,"returnSlots":0},"@__PermissionedERC4626_init_unchained_18439":{"entryPoint":16944,"id":18439,"parameterSlots":1,"returnSlots":0},"@__UUPSUpgradeable_init_2918":{"entryPoint":16901,"id":2918,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":5662,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":11638,"id":3614,"parameterSlots":4,"returnSlots":0},"@_asset_17578":{"entryPoint":14470,"id":17578,"parameterSlots":0,"returnSlots":1},"@_authorizeUpgrade_18449":{"entryPoint":6821,"id":18449,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":17132,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":17483,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkForwardToStrategy_17979":{"entryPoint":6311,"id":17979,"parameterSlots":3,"returnSlots":0},"@_checkInitializing_2786":{"entryPoint":12491,"id":2786,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":16870,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":7051,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":6655,"id":2978,"parameterSlots":0,"returnSlots":0},"@_checkRole_2377":{"entryPoint":5753,"id":2377,"parameterSlots":1,"returnSlots":0},"@_checkRole_2398":{"entryPoint":11865,"id":2398,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":5575,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":5675,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_depositToStrategies_16450":{"entryPoint":14191,"id":16450,"parameterSlots":1,"returnSlots":0},"@_deposit_17778":{"entryPoint":7166,"id":17778,"parameterSlots":4,"returnSlots":0},"@_deposit_4364":{"entryPoint":14066,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getAccessControlStorage_2294":{"entryPoint":null,"id":2294,"parameterSlots":0,"returnSlots":1},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"@_grantRole_2563":{"entryPoint":6029,"id":2563,"parameterSlots":2,"returnSlots":1},"@_isInitializing_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":1},"@_maxDepositable_16260":{"entryPoint":6515,"id":16260,"parameterSlots":0,"returnSlots":1},"@_maxWithdrawable_16202":{"entryPoint":10812,"id":16202,"parameterSlots":1,"returnSlots":1},"@_mint_3495":{"entryPoint":17065,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":17250,"id":9351,"parameterSlots":1,"returnSlots":0},"@_revokeRole_2609":{"entryPoint":6190,"id":2609,"parameterSlots":2,"returnSlots":1},"@_setImplementation_7796":{"entryPoint":16771,"id":7796,"parameterSlots":1,"returnSlots":0},"@_setRoleAdmin_2516":{"entryPoint":5766,"id":2516,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_3662":{"entryPoint":5862,"id":3662,"parameterSlots":3,"returnSlots":0},"@_totalAssets_16298":{"entryPoint":5452,"id":16298,"parameterSlots":0,"returnSlots":1},"@_transfer_3370":{"entryPoint":5936,"id":3370,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3862":{"entryPoint":17591,"id":3862,"parameterSlots":1,"returnSlots":2},"@_update_3462":{"entryPoint":11922,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":6863,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdrawFromStrategies_16374":{"entryPoint":15352,"id":16374,"parameterSlots":1,"returnSlots":0},"@_withdraw_17751":{"entryPoint":10183,"id":17751,"parameterSlots":5,"returnSlots":0},"@_withdraw_4418":{"entryPoint":15627,"id":4418,"parameterSlots":5,"returnSlots":0},"@addStrategy_16764":{"entryPoint":7500,"id":16764,"parameterSlots":2,"returnSlots":0},"@addStrategy_17826":{"entryPoint":4461,"id":17826,"parameterSlots":2,"returnSlots":0},"@allowance_3267":{"entryPoint":5266,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2937,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":null,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":4381,"id":3219,"parameterSlots":1,"returnSlots":1},"@changeDepositQueue_17158":{"entryPoint":8017,"id":17158,"parameterSlots":1,"returnSlots":0},"@changeDepositQueue_17864":{"entryPoint":4494,"id":17864,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17270":{"entryPoint":10205,"id":17270,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17882":{"entryPoint":4949,"id":17882,"parameterSlots":1,"returnSlots":0},"@checkAsset_15637":{"entryPoint":14835,"id":15637,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3957":{"entryPoint":2926,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":5066,"id":3941,"parameterSlots":1,"returnSlots":1},"@dcConnect_15416":{"entryPoint":14981,"id":15416,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15585":{"entryPoint":16169,"id":15585,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15467":{"entryPoint":15059,"id":15467,"parameterSlots":2,"returnSlots":0},"@dcForward_15614":{"entryPoint":6372,"id":15614,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15526":{"entryPoint":15853,"id":15526,"parameterSlots":3,"returnSlots":1},"@decimals_3884":{"entryPoint":3214,"id":3884,"parameterSlots":0,"returnSlots":1},"@depositQueue_17420":{"entryPoint":5393,"id":17420,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":4288,"id":4126,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_16564":{"entryPoint":3312,"id":16564,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":12216,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_16507":{"entryPoint":3476,"id":16507,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getForwardToStrategyRole_17958":{"entryPoint":2972,"id":17958,"parameterSlots":2,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_2419":{"entryPoint":3148,"id":2419,"parameterSlots":1,"returnSlots":1},"@grantRole_2438":{"entryPoint":3180,"id":2438,"parameterSlots":2,"returnSlots":0},"@hasRole_2364":{"entryPoint":4545,"id":2364,"parameterSlots":2,"returnSlots":1},"@initialize_17526":{"entryPoint":4006,"id":17526,"parameterSlots":8,"returnSlots":0},"@maxDeposit_15756":{"entryPoint":12321,"id":15756,"parameterSlots":1,"returnSlots":1},"@maxDeposit_17666":{"entryPoint":3445,"id":17666,"parameterSlots":1,"returnSlots":1},"@maxDeposit_18488":{"entryPoint":6454,"id":18488,"parameterSlots":1,"returnSlots":1},"@maxDeposit_3972":{"entryPoint":null,"id":3972,"parameterSlots":1,"returnSlots":1},"@maxMint_17710":{"entryPoint":5000,"id":17710,"parameterSlots":1,"returnSlots":1},"@maxMint_18511":{"entryPoint":null,"id":18511,"parameterSlots":1,"returnSlots":1},"@maxMint_3987":{"entryPoint":null,"id":3987,"parameterSlots":1,"returnSlots":1},"@maxRedeem_17644":{"entryPoint":5127,"id":17644,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":10961,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15774":{"entryPoint":15807,"id":15774,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_17599":{"entryPoint":5077,"id":17599,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":10793,"id":4005,"parameterSlots":1,"returnSlots":1},"@min_9938":{"entryPoint":17117,"id":9938,"parameterSlots":2,"returnSlots":1},"@mint_4170":{"entryPoint":4599,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":16502,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":11572,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":2734,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":17233,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":4783,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2960,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":3979,"id":2936,"parameterSlots":0,"returnSlots":1},"@rebalance_17397":{"entryPoint":10971,"id":17397,"parameterSlots":3,"returnSlots":1},"@rebalance_17906":{"entryPoint":5339,"id":17906,"parameterSlots":3,"returnSlots":1},"@redeem_4264":{"entryPoint":4872,"id":4264,"parameterSlots":3,"returnSlots":1},"@removeStrategy_17046":{"entryPoint":8624,"id":17046,"parameterSlots":2,"returnSlots":0},"@removeStrategy_17846":{"entryPoint":4737,"id":17846,"parameterSlots":2,"returnSlots":0},"@renounceRole_2480":{"entryPoint":3261,"id":2480,"parameterSlots":2,"returnSlots":0},"@replaceStrategy_16653":{"entryPoint":7187,"id":16653,"parameterSlots":4,"returnSlots":0},"@replaceStrategy_17805":{"entryPoint":4419,"id":17805,"parameterSlots":4,"returnSlots":0},"@revokeRole_2457":{"entryPoint":5099,"id":2457,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":16962,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":17184,"id":8729,"parameterSlots":3,"returnSlots":0},"@setRoleAdmin_18465":{"entryPoint":3086,"id":18465,"parameterSlots":2,"returnSlots":0},"@strategies_17409":{"entryPoint":5196,"id":17409,"parameterSlots":0,"returnSlots":1},"@strategyChange_15702":{"entryPoint":14501,"id":15702,"parameterSlots":5,"returnSlots":0},"@supportsInterface_2339":{"entryPoint":2680,"id":2339,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4512":{"entryPoint":null,"id":4512,"parameterSlots":1,"returnSlots":1},"@symbol_3174":{"entryPoint":4675,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_15738":{"entryPoint":11467,"id":15738,"parameterSlots":1,"returnSlots":1},"@totalAssets_17721":{"entryPoint":2666,"id":17721,"parameterSlots":0,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":3111,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":4770,"id":3243,"parameterSlots":2,"returnSlots":1},"@tryAdd_9747":{"entryPoint":12367,"id":9747,"parameterSlots":2,"returnSlots":2},"@unsignedRoundsUp_11308":{"entryPoint":16458,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":3860,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":12406,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":16684,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdrawQueue_17431":{"entryPoint":3891,"id":17431,"parameterSlots":0,"returnSlots":1},"@withdraw_4217":{"entryPoint":4795,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_address":{"entryPoint":17982,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_array_bytes_dyn":{"entryPoint":18819,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IInvestStrategy_dyn":{"entryPoint":18704,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8_dyn":{"entryPoint":18945,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bool":{"entryPoint":19339,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":18313,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":18515,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":20421,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":19663,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":18137,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":18542,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":17998,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":19462,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":19869,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":18199,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":18105,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":17836,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":19043,"id":null,"parameterSlots":2,"returnSlots":8},"abi_decode_tuple_t_uint256":{"entryPoint":17939,"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":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":19551,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_bool":{"entryPoint":19511,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool":{"entryPoint":19354,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8t_uint8":{"entryPoint":18056,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr":{"entryPoint":18426,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_uint8t_uint256":{"entryPoint":19707,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_uint8":{"entryPoint":18040,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":17875,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":20399,"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_address_t_bytes32__to_t_address_t_bytes32__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":19916,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed":{"entryPoint":19614,"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":18618,"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":20236,"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_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$22374__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__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":17921,"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":20209,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":18265,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_contract_IInvestStrategy_dyn":{"entryPoint":18670,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":19949,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":19844,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":19968,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":20195,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":20035,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":20305,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":20324,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":20513,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":20581,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":19748,"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":19892,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint8":{"entryPoint":20349,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":20468,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":19824,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":20379,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":20448,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":19804,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":18245,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":17962,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:25597:75","nodeType":"YulBlock","src":"0:25597:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"265:217:75","nodeType":"YulBlock","src":"265:217:75","statements":[{"body":{"nativeSrc":"311:16:75","nodeType":"YulBlock","src":"311:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"320:1:75","nodeType":"YulLiteral","src":"320:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"323:1:75","nodeType":"YulLiteral","src":"323:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"313:6:75","nodeType":"YulIdentifier","src":"313:6:75"},"nativeSrc":"313:12:75","nodeType":"YulFunctionCall","src":"313:12:75"},"nativeSrc":"313:12:75","nodeType":"YulExpressionStatement","src":"313:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"286:7:75","nodeType":"YulIdentifier","src":"286:7:75"},{"name":"headStart","nativeSrc":"295:9:75","nodeType":"YulIdentifier","src":"295:9:75"}],"functionName":{"name":"sub","nativeSrc":"282:3:75","nodeType":"YulIdentifier","src":"282:3:75"},"nativeSrc":"282:23:75","nodeType":"YulFunctionCall","src":"282:23:75"},{"kind":"number","nativeSrc":"307:2:75","nodeType":"YulLiteral","src":"307:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"278:3:75","nodeType":"YulIdentifier","src":"278:3:75"},"nativeSrc":"278:32:75","nodeType":"YulFunctionCall","src":"278:32:75"},"nativeSrc":"275:52:75","nodeType":"YulIf","src":"275:52:75"},{"nativeSrc":"336:36:75","nodeType":"YulVariableDeclaration","src":"336:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"362:9:75","nodeType":"YulIdentifier","src":"362:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"349:12:75","nodeType":"YulIdentifier","src":"349:12:75"},"nativeSrc":"349:23:75","nodeType":"YulFunctionCall","src":"349:23:75"},"variables":[{"name":"value","nativeSrc":"340:5:75","nodeType":"YulTypedName","src":"340:5:75","type":""}]},{"body":{"nativeSrc":"436:16:75","nodeType":"YulBlock","src":"436:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"445:1:75","nodeType":"YulLiteral","src":"445:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"448:1:75","nodeType":"YulLiteral","src":"448:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"438:6:75","nodeType":"YulIdentifier","src":"438:6:75"},"nativeSrc":"438:12:75","nodeType":"YulFunctionCall","src":"438:12:75"},"nativeSrc":"438:12:75","nodeType":"YulExpressionStatement","src":"438:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"394:5:75","nodeType":"YulIdentifier","src":"394:5:75"},{"arguments":[{"name":"value","nativeSrc":"405:5:75","nodeType":"YulIdentifier","src":"405:5:75"},{"arguments":[{"kind":"number","nativeSrc":"416:3:75","nodeType":"YulLiteral","src":"416:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"421:10:75","nodeType":"YulLiteral","src":"421:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"412:3:75","nodeType":"YulIdentifier","src":"412:3:75"},"nativeSrc":"412:20:75","nodeType":"YulFunctionCall","src":"412:20:75"}],"functionName":{"name":"and","nativeSrc":"401:3:75","nodeType":"YulIdentifier","src":"401:3:75"},"nativeSrc":"401:32:75","nodeType":"YulFunctionCall","src":"401:32:75"}],"functionName":{"name":"eq","nativeSrc":"391:2:75","nodeType":"YulIdentifier","src":"391:2:75"},"nativeSrc":"391:43:75","nodeType":"YulFunctionCall","src":"391:43:75"}],"functionName":{"name":"iszero","nativeSrc":"384:6:75","nodeType":"YulIdentifier","src":"384:6:75"},"nativeSrc":"384:51:75","nodeType":"YulFunctionCall","src":"384:51:75"},"nativeSrc":"381:71:75","nodeType":"YulIf","src":"381:71:75"},{"nativeSrc":"461:15:75","nodeType":"YulAssignment","src":"461:15:75","value":{"name":"value","nativeSrc":"471:5:75","nodeType":"YulIdentifier","src":"471:5:75"},"variableNames":[{"name":"value0","nativeSrc":"461:6:75","nodeType":"YulIdentifier","src":"461:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"196:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"231:9:75","nodeType":"YulTypedName","src":"231:9:75","type":""},{"name":"dataEnd","nativeSrc":"242:7:75","nodeType":"YulTypedName","src":"242:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"254:6:75","nodeType":"YulTypedName","src":"254:6:75","type":""}],"src":"196:286:75"},{"body":{"nativeSrc":"582:92:75","nodeType":"YulBlock","src":"582:92:75","statements":[{"nativeSrc":"592:26:75","nodeType":"YulAssignment","src":"592:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"604:9:75","nodeType":"YulIdentifier","src":"604:9:75"},{"kind":"number","nativeSrc":"615:2:75","nodeType":"YulLiteral","src":"615:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"600:3:75","nodeType":"YulIdentifier","src":"600:3:75"},"nativeSrc":"600:18:75","nodeType":"YulFunctionCall","src":"600:18:75"},"variableNames":[{"name":"tail","nativeSrc":"592:4:75","nodeType":"YulIdentifier","src":"592:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"634:9:75","nodeType":"YulIdentifier","src":"634:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"659:6:75","nodeType":"YulIdentifier","src":"659:6:75"}],"functionName":{"name":"iszero","nativeSrc":"652:6:75","nodeType":"YulIdentifier","src":"652:6:75"},"nativeSrc":"652:14:75","nodeType":"YulFunctionCall","src":"652:14:75"}],"functionName":{"name":"iszero","nativeSrc":"645:6:75","nodeType":"YulIdentifier","src":"645:6:75"},"nativeSrc":"645:22:75","nodeType":"YulFunctionCall","src":"645:22:75"}],"functionName":{"name":"mstore","nativeSrc":"627:6:75","nodeType":"YulIdentifier","src":"627:6:75"},"nativeSrc":"627:41:75","nodeType":"YulFunctionCall","src":"627:41:75"},"nativeSrc":"627:41:75","nodeType":"YulExpressionStatement","src":"627:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"487:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"551:9:75","nodeType":"YulTypedName","src":"551:9:75","type":""},{"name":"value0","nativeSrc":"562:6:75","nodeType":"YulTypedName","src":"562:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"573:4:75","nodeType":"YulTypedName","src":"573:4:75","type":""}],"src":"487:187:75"},{"body":{"nativeSrc":"729:239:75","nodeType":"YulBlock","src":"729:239:75","statements":[{"nativeSrc":"739:26:75","nodeType":"YulVariableDeclaration","src":"739:26:75","value":{"arguments":[{"name":"value","nativeSrc":"759:5:75","nodeType":"YulIdentifier","src":"759:5:75"}],"functionName":{"name":"mload","nativeSrc":"753:5:75","nodeType":"YulIdentifier","src":"753:5:75"},"nativeSrc":"753:12:75","nodeType":"YulFunctionCall","src":"753:12:75"},"variables":[{"name":"length","nativeSrc":"743:6:75","nodeType":"YulTypedName","src":"743:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"781:3:75","nodeType":"YulIdentifier","src":"781:3:75"},{"name":"length","nativeSrc":"786:6:75","nodeType":"YulIdentifier","src":"786:6:75"}],"functionName":{"name":"mstore","nativeSrc":"774:6:75","nodeType":"YulIdentifier","src":"774:6:75"},"nativeSrc":"774:19:75","nodeType":"YulFunctionCall","src":"774:19:75"},"nativeSrc":"774:19:75","nodeType":"YulExpressionStatement","src":"774:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"812:3:75","nodeType":"YulIdentifier","src":"812:3:75"},{"kind":"number","nativeSrc":"817:4:75","nodeType":"YulLiteral","src":"817:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"808:3:75","nodeType":"YulIdentifier","src":"808:3:75"},"nativeSrc":"808:14:75","nodeType":"YulFunctionCall","src":"808:14:75"},{"arguments":[{"name":"value","nativeSrc":"828:5:75","nodeType":"YulIdentifier","src":"828:5:75"},{"kind":"number","nativeSrc":"835:4:75","nodeType":"YulLiteral","src":"835:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"824:3:75","nodeType":"YulIdentifier","src":"824:3:75"},"nativeSrc":"824:16:75","nodeType":"YulFunctionCall","src":"824:16:75"},{"name":"length","nativeSrc":"842:6:75","nodeType":"YulIdentifier","src":"842:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"802:5:75","nodeType":"YulIdentifier","src":"802:5:75"},"nativeSrc":"802:47:75","nodeType":"YulFunctionCall","src":"802:47:75"},"nativeSrc":"802:47:75","nodeType":"YulExpressionStatement","src":"802:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"873:3:75","nodeType":"YulIdentifier","src":"873:3:75"},{"name":"length","nativeSrc":"878:6:75","nodeType":"YulIdentifier","src":"878:6:75"}],"functionName":{"name":"add","nativeSrc":"869:3:75","nodeType":"YulIdentifier","src":"869:3:75"},"nativeSrc":"869:16:75","nodeType":"YulFunctionCall","src":"869:16:75"},{"kind":"number","nativeSrc":"887:4:75","nodeType":"YulLiteral","src":"887:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"865:3:75","nodeType":"YulIdentifier","src":"865:3:75"},"nativeSrc":"865:27:75","nodeType":"YulFunctionCall","src":"865:27:75"},{"kind":"number","nativeSrc":"894:1:75","nodeType":"YulLiteral","src":"894:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"858:6:75","nodeType":"YulIdentifier","src":"858:6:75"},"nativeSrc":"858:38:75","nodeType":"YulFunctionCall","src":"858:38:75"},"nativeSrc":"858:38:75","nodeType":"YulExpressionStatement","src":"858:38:75"},{"nativeSrc":"905:57:75","nodeType":"YulAssignment","src":"905:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"920:3:75","nodeType":"YulIdentifier","src":"920:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"933:6:75","nodeType":"YulIdentifier","src":"933:6:75"},{"kind":"number","nativeSrc":"941:2:75","nodeType":"YulLiteral","src":"941:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"929:3:75","nodeType":"YulIdentifier","src":"929:3:75"},"nativeSrc":"929:15:75","nodeType":"YulFunctionCall","src":"929:15:75"},{"arguments":[{"kind":"number","nativeSrc":"950:2:75","nodeType":"YulLiteral","src":"950:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"946:3:75","nodeType":"YulIdentifier","src":"946:3:75"},"nativeSrc":"946:7:75","nodeType":"YulFunctionCall","src":"946:7:75"}],"functionName":{"name":"and","nativeSrc":"925:3:75","nodeType":"YulIdentifier","src":"925:3:75"},"nativeSrc":"925:29:75","nodeType":"YulFunctionCall","src":"925:29:75"}],"functionName":{"name":"add","nativeSrc":"916:3:75","nodeType":"YulIdentifier","src":"916:3:75"},"nativeSrc":"916:39:75","nodeType":"YulFunctionCall","src":"916:39:75"},{"kind":"number","nativeSrc":"957:4:75","nodeType":"YulLiteral","src":"957:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"912:3:75","nodeType":"YulIdentifier","src":"912:3:75"},"nativeSrc":"912:50:75","nodeType":"YulFunctionCall","src":"912:50:75"},"variableNames":[{"name":"end","nativeSrc":"905:3:75","nodeType":"YulIdentifier","src":"905:3:75"}]}]},"name":"abi_encode_string","nativeSrc":"679:289:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"706:5:75","nodeType":"YulTypedName","src":"706:5:75","type":""},{"name":"pos","nativeSrc":"713:3:75","nodeType":"YulTypedName","src":"713:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"721:3:75","nodeType":"YulTypedName","src":"721:3:75","type":""}],"src":"679:289:75"},{"body":{"nativeSrc":"1094:99:75","nodeType":"YulBlock","src":"1094:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1111:9:75","nodeType":"YulIdentifier","src":"1111:9:75"},{"kind":"number","nativeSrc":"1122:2:75","nodeType":"YulLiteral","src":"1122:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1104:6:75","nodeType":"YulIdentifier","src":"1104:6:75"},"nativeSrc":"1104:21:75","nodeType":"YulFunctionCall","src":"1104:21:75"},"nativeSrc":"1104:21:75","nodeType":"YulExpressionStatement","src":"1104:21:75"},{"nativeSrc":"1134:53:75","nodeType":"YulAssignment","src":"1134:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"1160:6:75","nodeType":"YulIdentifier","src":"1160:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"1172:9:75","nodeType":"YulIdentifier","src":"1172:9:75"},{"kind":"number","nativeSrc":"1183:2:75","nodeType":"YulLiteral","src":"1183:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1168:3:75","nodeType":"YulIdentifier","src":"1168:3:75"},"nativeSrc":"1168:18:75","nodeType":"YulFunctionCall","src":"1168:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"1142:17:75","nodeType":"YulIdentifier","src":"1142:17:75"},"nativeSrc":"1142:45:75","nodeType":"YulFunctionCall","src":"1142:45:75"},"variableNames":[{"name":"tail","nativeSrc":"1134:4:75","nodeType":"YulIdentifier","src":"1134:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"973:220:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1063:9:75","nodeType":"YulTypedName","src":"1063:9:75","type":""},{"name":"value0","nativeSrc":"1074:6:75","nodeType":"YulTypedName","src":"1074:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1085:4:75","nodeType":"YulTypedName","src":"1085:4:75","type":""}],"src":"973:220:75"},{"body":{"nativeSrc":"1268:156:75","nodeType":"YulBlock","src":"1268:156:75","statements":[{"body":{"nativeSrc":"1314:16:75","nodeType":"YulBlock","src":"1314:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:75","nodeType":"YulLiteral","src":"1323:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:75","nodeType":"YulLiteral","src":"1326:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:75","nodeType":"YulIdentifier","src":"1316:6:75"},"nativeSrc":"1316:12:75","nodeType":"YulFunctionCall","src":"1316:12:75"},"nativeSrc":"1316:12:75","nodeType":"YulExpressionStatement","src":"1316:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1289:7:75","nodeType":"YulIdentifier","src":"1289:7:75"},{"name":"headStart","nativeSrc":"1298:9:75","nodeType":"YulIdentifier","src":"1298:9:75"}],"functionName":{"name":"sub","nativeSrc":"1285:3:75","nodeType":"YulIdentifier","src":"1285:3:75"},"nativeSrc":"1285:23:75","nodeType":"YulFunctionCall","src":"1285:23:75"},{"kind":"number","nativeSrc":"1310:2:75","nodeType":"YulLiteral","src":"1310:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1281:3:75","nodeType":"YulIdentifier","src":"1281:3:75"},"nativeSrc":"1281:32:75","nodeType":"YulFunctionCall","src":"1281:32:75"},"nativeSrc":"1278:52:75","nodeType":"YulIf","src":"1278:52:75"},{"nativeSrc":"1339:14:75","nodeType":"YulVariableDeclaration","src":"1339:14:75","value":{"kind":"number","nativeSrc":"1352:1:75","nodeType":"YulLiteral","src":"1352:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1343:5:75","nodeType":"YulTypedName","src":"1343:5:75","type":""}]},{"nativeSrc":"1362:32:75","nodeType":"YulAssignment","src":"1362:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1384:9:75","nodeType":"YulIdentifier","src":"1384:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1371:12:75","nodeType":"YulIdentifier","src":"1371:12:75"},"nativeSrc":"1371:23:75","nodeType":"YulFunctionCall","src":"1371:23:75"},"variableNames":[{"name":"value","nativeSrc":"1362:5:75","nodeType":"YulIdentifier","src":"1362:5:75"}]},{"nativeSrc":"1403:15:75","nodeType":"YulAssignment","src":"1403:15:75","value":{"name":"value","nativeSrc":"1413:5:75","nodeType":"YulIdentifier","src":"1413:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1403:6:75","nodeType":"YulIdentifier","src":"1403:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1198:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1234:9:75","nodeType":"YulTypedName","src":"1234:9:75","type":""},{"name":"dataEnd","nativeSrc":"1245:7:75","nodeType":"YulTypedName","src":"1245:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1257:6:75","nodeType":"YulTypedName","src":"1257:6:75","type":""}],"src":"1198:226:75"},{"body":{"nativeSrc":"1474:86:75","nodeType":"YulBlock","src":"1474:86:75","statements":[{"body":{"nativeSrc":"1538:16:75","nodeType":"YulBlock","src":"1538:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1547:1:75","nodeType":"YulLiteral","src":"1547:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1550:1:75","nodeType":"YulLiteral","src":"1550:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1540:6:75","nodeType":"YulIdentifier","src":"1540:6:75"},"nativeSrc":"1540:12:75","nodeType":"YulFunctionCall","src":"1540:12:75"},"nativeSrc":"1540:12:75","nodeType":"YulExpressionStatement","src":"1540:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1497:5:75","nodeType":"YulIdentifier","src":"1497:5:75"},{"arguments":[{"name":"value","nativeSrc":"1508:5:75","nodeType":"YulIdentifier","src":"1508:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1523:3:75","nodeType":"YulLiteral","src":"1523:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1528:1:75","nodeType":"YulLiteral","src":"1528:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1519:3:75","nodeType":"YulIdentifier","src":"1519:3:75"},"nativeSrc":"1519:11:75","nodeType":"YulFunctionCall","src":"1519:11:75"},{"kind":"number","nativeSrc":"1532:1:75","nodeType":"YulLiteral","src":"1532:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1515:3:75","nodeType":"YulIdentifier","src":"1515:3:75"},"nativeSrc":"1515:19:75","nodeType":"YulFunctionCall","src":"1515:19:75"}],"functionName":{"name":"and","nativeSrc":"1504:3:75","nodeType":"YulIdentifier","src":"1504:3:75"},"nativeSrc":"1504:31:75","nodeType":"YulFunctionCall","src":"1504:31:75"}],"functionName":{"name":"eq","nativeSrc":"1494:2:75","nodeType":"YulIdentifier","src":"1494:2:75"},"nativeSrc":"1494:42:75","nodeType":"YulFunctionCall","src":"1494:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1487:6:75","nodeType":"YulIdentifier","src":"1487:6:75"},"nativeSrc":"1487:50:75","nodeType":"YulFunctionCall","src":"1487:50:75"},"nativeSrc":"1484:70:75","nodeType":"YulIf","src":"1484:70:75"}]},"name":"validator_revert_address","nativeSrc":"1429:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1463:5:75","nodeType":"YulTypedName","src":"1463:5:75","type":""}],"src":"1429:131:75"},{"body":{"nativeSrc":"1614:85:75","nodeType":"YulBlock","src":"1614:85:75","statements":[{"nativeSrc":"1624:29:75","nodeType":"YulAssignment","src":"1624:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"1646:6:75","nodeType":"YulIdentifier","src":"1646:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"1633:12:75","nodeType":"YulIdentifier","src":"1633:12:75"},"nativeSrc":"1633:20:75","nodeType":"YulFunctionCall","src":"1633:20:75"},"variableNames":[{"name":"value","nativeSrc":"1624:5:75","nodeType":"YulIdentifier","src":"1624:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1687:5:75","nodeType":"YulIdentifier","src":"1687:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1662:24:75","nodeType":"YulIdentifier","src":"1662:24:75"},"nativeSrc":"1662:31:75","nodeType":"YulFunctionCall","src":"1662:31:75"},"nativeSrc":"1662:31:75","nodeType":"YulExpressionStatement","src":"1662:31:75"}]},"name":"abi_decode_address","nativeSrc":"1565:134:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1593:6:75","nodeType":"YulTypedName","src":"1593:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1604:5:75","nodeType":"YulTypedName","src":"1604:5:75","type":""}],"src":"1565:134:75"},{"body":{"nativeSrc":"1791:280:75","nodeType":"YulBlock","src":"1791:280:75","statements":[{"body":{"nativeSrc":"1837:16:75","nodeType":"YulBlock","src":"1837:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1846:1:75","nodeType":"YulLiteral","src":"1846:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1849:1:75","nodeType":"YulLiteral","src":"1849:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1839:6:75","nodeType":"YulIdentifier","src":"1839:6:75"},"nativeSrc":"1839:12:75","nodeType":"YulFunctionCall","src":"1839:12:75"},"nativeSrc":"1839:12:75","nodeType":"YulExpressionStatement","src":"1839:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1812:7:75","nodeType":"YulIdentifier","src":"1812:7:75"},{"name":"headStart","nativeSrc":"1821:9:75","nodeType":"YulIdentifier","src":"1821:9:75"}],"functionName":{"name":"sub","nativeSrc":"1808:3:75","nodeType":"YulIdentifier","src":"1808:3:75"},"nativeSrc":"1808:23:75","nodeType":"YulFunctionCall","src":"1808:23:75"},{"kind":"number","nativeSrc":"1833:2:75","nodeType":"YulLiteral","src":"1833:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1804:3:75","nodeType":"YulIdentifier","src":"1804:3:75"},"nativeSrc":"1804:32:75","nodeType":"YulFunctionCall","src":"1804:32:75"},"nativeSrc":"1801:52:75","nodeType":"YulIf","src":"1801:52:75"},{"nativeSrc":"1862:36:75","nodeType":"YulVariableDeclaration","src":"1862:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1888:9:75","nodeType":"YulIdentifier","src":"1888:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1875:12:75","nodeType":"YulIdentifier","src":"1875:12:75"},"nativeSrc":"1875:23:75","nodeType":"YulFunctionCall","src":"1875:23:75"},"variables":[{"name":"value","nativeSrc":"1866:5:75","nodeType":"YulTypedName","src":"1866:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1932:5:75","nodeType":"YulIdentifier","src":"1932:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1907:24:75","nodeType":"YulIdentifier","src":"1907:24:75"},"nativeSrc":"1907:31:75","nodeType":"YulFunctionCall","src":"1907:31:75"},"nativeSrc":"1907:31:75","nodeType":"YulExpressionStatement","src":"1907:31:75"},{"nativeSrc":"1947:15:75","nodeType":"YulAssignment","src":"1947:15:75","value":{"name":"value","nativeSrc":"1957:5:75","nodeType":"YulIdentifier","src":"1957:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1947:6:75","nodeType":"YulIdentifier","src":"1947:6:75"}]},{"nativeSrc":"1971:16:75","nodeType":"YulVariableDeclaration","src":"1971:16:75","value":{"kind":"number","nativeSrc":"1986:1:75","nodeType":"YulLiteral","src":"1986:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1975:7:75","nodeType":"YulTypedName","src":"1975:7:75","type":""}]},{"nativeSrc":"1996:43:75","nodeType":"YulAssignment","src":"1996:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2024:9:75","nodeType":"YulIdentifier","src":"2024:9:75"},{"kind":"number","nativeSrc":"2035:2:75","nodeType":"YulLiteral","src":"2035:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2020:3:75","nodeType":"YulIdentifier","src":"2020:3:75"},"nativeSrc":"2020:18:75","nodeType":"YulFunctionCall","src":"2020:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2007:12:75","nodeType":"YulIdentifier","src":"2007:12:75"},"nativeSrc":"2007:32:75","nodeType":"YulFunctionCall","src":"2007:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"1996:7:75","nodeType":"YulIdentifier","src":"1996:7:75"}]},{"nativeSrc":"2048:17:75","nodeType":"YulAssignment","src":"2048:17:75","value":{"name":"value_1","nativeSrc":"2058:7:75","nodeType":"YulIdentifier","src":"2058:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2048:6:75","nodeType":"YulIdentifier","src":"2048:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1704:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1749:9:75","nodeType":"YulTypedName","src":"1749:9:75","type":""},{"name":"dataEnd","nativeSrc":"1760:7:75","nodeType":"YulTypedName","src":"1760:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1772:6:75","nodeType":"YulTypedName","src":"1772:6:75","type":""},{"name":"value1","nativeSrc":"1780:6:75","nodeType":"YulTypedName","src":"1780:6:75","type":""}],"src":"1704:367:75"},{"body":{"nativeSrc":"2177:76:75","nodeType":"YulBlock","src":"2177:76:75","statements":[{"nativeSrc":"2187:26:75","nodeType":"YulAssignment","src":"2187:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2199:9:75","nodeType":"YulIdentifier","src":"2199:9:75"},{"kind":"number","nativeSrc":"2210:2:75","nodeType":"YulLiteral","src":"2210:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2195:3:75","nodeType":"YulIdentifier","src":"2195:3:75"},"nativeSrc":"2195:18:75","nodeType":"YulFunctionCall","src":"2195:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2187:4:75","nodeType":"YulIdentifier","src":"2187:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2229:9:75","nodeType":"YulIdentifier","src":"2229:9:75"},{"name":"value0","nativeSrc":"2240:6:75","nodeType":"YulIdentifier","src":"2240:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2222:6:75","nodeType":"YulIdentifier","src":"2222:6:75"},"nativeSrc":"2222:25:75","nodeType":"YulFunctionCall","src":"2222:25:75"},"nativeSrc":"2222:25:75","nodeType":"YulExpressionStatement","src":"2222:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2076:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2146:9:75","nodeType":"YulTypedName","src":"2146:9:75","type":""},{"name":"value0","nativeSrc":"2157:6:75","nodeType":"YulTypedName","src":"2157:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2168:4:75","nodeType":"YulTypedName","src":"2168:4:75","type":""}],"src":"2076:177:75"},{"body":{"nativeSrc":"2305:109:75","nodeType":"YulBlock","src":"2305:109:75","statements":[{"nativeSrc":"2315:29:75","nodeType":"YulAssignment","src":"2315:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"2337:6:75","nodeType":"YulIdentifier","src":"2337:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"2324:12:75","nodeType":"YulIdentifier","src":"2324:12:75"},"nativeSrc":"2324:20:75","nodeType":"YulFunctionCall","src":"2324:20:75"},"variableNames":[{"name":"value","nativeSrc":"2315:5:75","nodeType":"YulIdentifier","src":"2315:5:75"}]},{"body":{"nativeSrc":"2392:16:75","nodeType":"YulBlock","src":"2392:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2401:1:75","nodeType":"YulLiteral","src":"2401:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2404:1:75","nodeType":"YulLiteral","src":"2404:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2394:6:75","nodeType":"YulIdentifier","src":"2394:6:75"},"nativeSrc":"2394:12:75","nodeType":"YulFunctionCall","src":"2394:12:75"},"nativeSrc":"2394:12:75","nodeType":"YulExpressionStatement","src":"2394:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2366:5:75","nodeType":"YulIdentifier","src":"2366:5:75"},{"arguments":[{"name":"value","nativeSrc":"2377:5:75","nodeType":"YulIdentifier","src":"2377:5:75"},{"kind":"number","nativeSrc":"2384:4:75","nodeType":"YulLiteral","src":"2384:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2373:3:75","nodeType":"YulIdentifier","src":"2373:3:75"},"nativeSrc":"2373:16:75","nodeType":"YulFunctionCall","src":"2373:16:75"}],"functionName":{"name":"eq","nativeSrc":"2363:2:75","nodeType":"YulIdentifier","src":"2363:2:75"},"nativeSrc":"2363:27:75","nodeType":"YulFunctionCall","src":"2363:27:75"}],"functionName":{"name":"iszero","nativeSrc":"2356:6:75","nodeType":"YulIdentifier","src":"2356:6:75"},"nativeSrc":"2356:35:75","nodeType":"YulFunctionCall","src":"2356:35:75"},"nativeSrc":"2353:55:75","nodeType":"YulIf","src":"2353:55:75"}]},"name":"abi_decode_uint8","nativeSrc":"2258:156:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2284:6:75","nodeType":"YulTypedName","src":"2284:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2295:5:75","nodeType":"YulTypedName","src":"2295:5:75","type":""}],"src":"2258:156:75"},{"body":{"nativeSrc":"2502:169:75","nodeType":"YulBlock","src":"2502:169:75","statements":[{"body":{"nativeSrc":"2548:16:75","nodeType":"YulBlock","src":"2548:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2557:1:75","nodeType":"YulLiteral","src":"2557:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2560:1:75","nodeType":"YulLiteral","src":"2560:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2550:6:75","nodeType":"YulIdentifier","src":"2550:6:75"},"nativeSrc":"2550:12:75","nodeType":"YulFunctionCall","src":"2550:12:75"},"nativeSrc":"2550:12:75","nodeType":"YulExpressionStatement","src":"2550:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2523:7:75","nodeType":"YulIdentifier","src":"2523:7:75"},{"name":"headStart","nativeSrc":"2532:9:75","nodeType":"YulIdentifier","src":"2532:9:75"}],"functionName":{"name":"sub","nativeSrc":"2519:3:75","nodeType":"YulIdentifier","src":"2519:3:75"},"nativeSrc":"2519:23:75","nodeType":"YulFunctionCall","src":"2519:23:75"},{"kind":"number","nativeSrc":"2544:2:75","nodeType":"YulLiteral","src":"2544:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2515:3:75","nodeType":"YulIdentifier","src":"2515:3:75"},"nativeSrc":"2515:32:75","nodeType":"YulFunctionCall","src":"2515:32:75"},"nativeSrc":"2512:52:75","nodeType":"YulIf","src":"2512:52:75"},{"nativeSrc":"2573:37:75","nodeType":"YulAssignment","src":"2573:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2600:9:75","nodeType":"YulIdentifier","src":"2600:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"2583:16:75","nodeType":"YulIdentifier","src":"2583:16:75"},"nativeSrc":"2583:27:75","nodeType":"YulFunctionCall","src":"2583:27:75"},"variableNames":[{"name":"value0","nativeSrc":"2573:6:75","nodeType":"YulIdentifier","src":"2573:6:75"}]},{"nativeSrc":"2619:46:75","nodeType":"YulAssignment","src":"2619:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2650:9:75","nodeType":"YulIdentifier","src":"2650:9:75"},{"kind":"number","nativeSrc":"2661:2:75","nodeType":"YulLiteral","src":"2661:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2646:3:75","nodeType":"YulIdentifier","src":"2646:3:75"},"nativeSrc":"2646:18:75","nodeType":"YulFunctionCall","src":"2646:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"2629:16:75","nodeType":"YulIdentifier","src":"2629:16:75"},"nativeSrc":"2629:36:75","nodeType":"YulFunctionCall","src":"2629:36:75"},"variableNames":[{"name":"value1","nativeSrc":"2619:6:75","nodeType":"YulIdentifier","src":"2619:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8","nativeSrc":"2419:252:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2460:9:75","nodeType":"YulTypedName","src":"2460:9:75","type":""},{"name":"dataEnd","nativeSrc":"2471:7:75","nodeType":"YulTypedName","src":"2471:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2483:6:75","nodeType":"YulTypedName","src":"2483:6:75","type":""},{"name":"value1","nativeSrc":"2491:6:75","nodeType":"YulTypedName","src":"2491:6:75","type":""}],"src":"2419:252:75"},{"body":{"nativeSrc":"2763:259:75","nodeType":"YulBlock","src":"2763:259:75","statements":[{"body":{"nativeSrc":"2809:16:75","nodeType":"YulBlock","src":"2809:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2818:1:75","nodeType":"YulLiteral","src":"2818:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2821:1:75","nodeType":"YulLiteral","src":"2821:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2811:6:75","nodeType":"YulIdentifier","src":"2811:6:75"},"nativeSrc":"2811:12:75","nodeType":"YulFunctionCall","src":"2811:12:75"},"nativeSrc":"2811:12:75","nodeType":"YulExpressionStatement","src":"2811:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2784:7:75","nodeType":"YulIdentifier","src":"2784:7:75"},{"name":"headStart","nativeSrc":"2793:9:75","nodeType":"YulIdentifier","src":"2793:9:75"}],"functionName":{"name":"sub","nativeSrc":"2780:3:75","nodeType":"YulIdentifier","src":"2780:3:75"},"nativeSrc":"2780:23:75","nodeType":"YulFunctionCall","src":"2780:23:75"},{"kind":"number","nativeSrc":"2805:2:75","nodeType":"YulLiteral","src":"2805:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2776:3:75","nodeType":"YulIdentifier","src":"2776:3:75"},"nativeSrc":"2776:32:75","nodeType":"YulFunctionCall","src":"2776:32:75"},"nativeSrc":"2773:52:75","nodeType":"YulIf","src":"2773:52:75"},{"nativeSrc":"2834:14:75","nodeType":"YulVariableDeclaration","src":"2834:14:75","value":{"kind":"number","nativeSrc":"2847:1:75","nodeType":"YulLiteral","src":"2847:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2838:5:75","nodeType":"YulTypedName","src":"2838:5:75","type":""}]},{"nativeSrc":"2857:32:75","nodeType":"YulAssignment","src":"2857:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2879:9:75","nodeType":"YulIdentifier","src":"2879:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2866:12:75","nodeType":"YulIdentifier","src":"2866:12:75"},"nativeSrc":"2866:23:75","nodeType":"YulFunctionCall","src":"2866:23:75"},"variableNames":[{"name":"value","nativeSrc":"2857:5:75","nodeType":"YulIdentifier","src":"2857:5:75"}]},{"nativeSrc":"2898:15:75","nodeType":"YulAssignment","src":"2898:15:75","value":{"name":"value","nativeSrc":"2908:5:75","nodeType":"YulIdentifier","src":"2908:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2898:6:75","nodeType":"YulIdentifier","src":"2898:6:75"}]},{"nativeSrc":"2922:16:75","nodeType":"YulVariableDeclaration","src":"2922:16:75","value":{"kind":"number","nativeSrc":"2937:1:75","nodeType":"YulLiteral","src":"2937:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"2926:7:75","nodeType":"YulTypedName","src":"2926:7:75","type":""}]},{"nativeSrc":"2947:43:75","nodeType":"YulAssignment","src":"2947:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2975:9:75","nodeType":"YulIdentifier","src":"2975:9:75"},{"kind":"number","nativeSrc":"2986:2:75","nodeType":"YulLiteral","src":"2986:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2971:3:75","nodeType":"YulIdentifier","src":"2971:3:75"},"nativeSrc":"2971:18:75","nodeType":"YulFunctionCall","src":"2971:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2958:12:75","nodeType":"YulIdentifier","src":"2958:12:75"},"nativeSrc":"2958:32:75","nodeType":"YulFunctionCall","src":"2958:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"2947:7:75","nodeType":"YulIdentifier","src":"2947:7:75"}]},{"nativeSrc":"2999:17:75","nodeType":"YulAssignment","src":"2999:17:75","value":{"name":"value_1","nativeSrc":"3009:7:75","nodeType":"YulIdentifier","src":"3009:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2999:6:75","nodeType":"YulIdentifier","src":"2999:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nativeSrc":"2676:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2721:9:75","nodeType":"YulTypedName","src":"2721:9:75","type":""},{"name":"dataEnd","nativeSrc":"2732:7:75","nodeType":"YulTypedName","src":"2732:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2744:6:75","nodeType":"YulTypedName","src":"2744:6:75","type":""},{"name":"value1","nativeSrc":"2752:6:75","nodeType":"YulTypedName","src":"2752:6:75","type":""}],"src":"2676:346:75"},{"body":{"nativeSrc":"3131:404:75","nodeType":"YulBlock","src":"3131:404:75","statements":[{"body":{"nativeSrc":"3177:16:75","nodeType":"YulBlock","src":"3177:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3186:1:75","nodeType":"YulLiteral","src":"3186:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3189:1:75","nodeType":"YulLiteral","src":"3189:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3179:6:75","nodeType":"YulIdentifier","src":"3179:6:75"},"nativeSrc":"3179:12:75","nodeType":"YulFunctionCall","src":"3179:12:75"},"nativeSrc":"3179:12:75","nodeType":"YulExpressionStatement","src":"3179:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3152:7:75","nodeType":"YulIdentifier","src":"3152:7:75"},{"name":"headStart","nativeSrc":"3161:9:75","nodeType":"YulIdentifier","src":"3161:9:75"}],"functionName":{"name":"sub","nativeSrc":"3148:3:75","nodeType":"YulIdentifier","src":"3148:3:75"},"nativeSrc":"3148:23:75","nodeType":"YulFunctionCall","src":"3148:23:75"},{"kind":"number","nativeSrc":"3173:2:75","nodeType":"YulLiteral","src":"3173:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3144:3:75","nodeType":"YulIdentifier","src":"3144:3:75"},"nativeSrc":"3144:32:75","nodeType":"YulFunctionCall","src":"3144:32:75"},"nativeSrc":"3141:52:75","nodeType":"YulIf","src":"3141:52:75"},{"nativeSrc":"3202:36:75","nodeType":"YulVariableDeclaration","src":"3202:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3228:9:75","nodeType":"YulIdentifier","src":"3228:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3215:12:75","nodeType":"YulIdentifier","src":"3215:12:75"},"nativeSrc":"3215:23:75","nodeType":"YulFunctionCall","src":"3215:23:75"},"variables":[{"name":"value","nativeSrc":"3206:5:75","nodeType":"YulTypedName","src":"3206:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3272:5:75","nodeType":"YulIdentifier","src":"3272:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3247:24:75","nodeType":"YulIdentifier","src":"3247:24:75"},"nativeSrc":"3247:31:75","nodeType":"YulFunctionCall","src":"3247:31:75"},"nativeSrc":"3247:31:75","nodeType":"YulExpressionStatement","src":"3247:31:75"},{"nativeSrc":"3287:15:75","nodeType":"YulAssignment","src":"3287:15:75","value":{"name":"value","nativeSrc":"3297:5:75","nodeType":"YulIdentifier","src":"3297:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3287:6:75","nodeType":"YulIdentifier","src":"3287:6:75"}]},{"nativeSrc":"3311:47:75","nodeType":"YulVariableDeclaration","src":"3311:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3343:9:75","nodeType":"YulIdentifier","src":"3343:9:75"},{"kind":"number","nativeSrc":"3354:2:75","nodeType":"YulLiteral","src":"3354:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3339:3:75","nodeType":"YulIdentifier","src":"3339:3:75"},"nativeSrc":"3339:18:75","nodeType":"YulFunctionCall","src":"3339:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3326:12:75","nodeType":"YulIdentifier","src":"3326:12:75"},"nativeSrc":"3326:32:75","nodeType":"YulFunctionCall","src":"3326:32:75"},"variables":[{"name":"value_1","nativeSrc":"3315:7:75","nodeType":"YulTypedName","src":"3315:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"3392:7:75","nodeType":"YulIdentifier","src":"3392:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3367:24:75","nodeType":"YulIdentifier","src":"3367:24:75"},"nativeSrc":"3367:33:75","nodeType":"YulFunctionCall","src":"3367:33:75"},"nativeSrc":"3367:33:75","nodeType":"YulExpressionStatement","src":"3367:33:75"},{"nativeSrc":"3409:17:75","nodeType":"YulAssignment","src":"3409:17:75","value":{"name":"value_1","nativeSrc":"3419:7:75","nodeType":"YulIdentifier","src":"3419:7:75"},"variableNames":[{"name":"value1","nativeSrc":"3409:6:75","nodeType":"YulIdentifier","src":"3409:6:75"}]},{"nativeSrc":"3435:16:75","nodeType":"YulVariableDeclaration","src":"3435:16:75","value":{"kind":"number","nativeSrc":"3450:1:75","nodeType":"YulLiteral","src":"3450:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"3439:7:75","nodeType":"YulTypedName","src":"3439:7:75","type":""}]},{"nativeSrc":"3460:43:75","nodeType":"YulAssignment","src":"3460:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3488:9:75","nodeType":"YulIdentifier","src":"3488:9:75"},{"kind":"number","nativeSrc":"3499:2:75","nodeType":"YulLiteral","src":"3499:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3484:3:75","nodeType":"YulIdentifier","src":"3484:3:75"},"nativeSrc":"3484:18:75","nodeType":"YulFunctionCall","src":"3484:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"3471:12:75","nodeType":"YulIdentifier","src":"3471:12:75"},"nativeSrc":"3471:32:75","nodeType":"YulFunctionCall","src":"3471:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"3460:7:75","nodeType":"YulIdentifier","src":"3460:7:75"}]},{"nativeSrc":"3512:17:75","nodeType":"YulAssignment","src":"3512:17:75","value":{"name":"value_2","nativeSrc":"3522:7:75","nodeType":"YulIdentifier","src":"3522:7:75"},"variableNames":[{"name":"value2","nativeSrc":"3512:6:75","nodeType":"YulIdentifier","src":"3512:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"3027:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3081:9:75","nodeType":"YulTypedName","src":"3081:9:75","type":""},{"name":"dataEnd","nativeSrc":"3092:7:75","nodeType":"YulTypedName","src":"3092:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3104:6:75","nodeType":"YulTypedName","src":"3104:6:75","type":""},{"name":"value1","nativeSrc":"3112:6:75","nodeType":"YulTypedName","src":"3112:6:75","type":""},{"name":"value2","nativeSrc":"3120:6:75","nodeType":"YulTypedName","src":"3120:6:75","type":""}],"src":"3027:508:75"},{"body":{"nativeSrc":"3610:156:75","nodeType":"YulBlock","src":"3610:156:75","statements":[{"body":{"nativeSrc":"3656:16:75","nodeType":"YulBlock","src":"3656:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3665:1:75","nodeType":"YulLiteral","src":"3665:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3668:1:75","nodeType":"YulLiteral","src":"3668:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3658:6:75","nodeType":"YulIdentifier","src":"3658:6:75"},"nativeSrc":"3658:12:75","nodeType":"YulFunctionCall","src":"3658:12:75"},"nativeSrc":"3658:12:75","nodeType":"YulExpressionStatement","src":"3658:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3631:7:75","nodeType":"YulIdentifier","src":"3631:7:75"},{"name":"headStart","nativeSrc":"3640:9:75","nodeType":"YulIdentifier","src":"3640:9:75"}],"functionName":{"name":"sub","nativeSrc":"3627:3:75","nodeType":"YulIdentifier","src":"3627:3:75"},"nativeSrc":"3627:23:75","nodeType":"YulFunctionCall","src":"3627:23:75"},{"kind":"number","nativeSrc":"3652:2:75","nodeType":"YulLiteral","src":"3652:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3623:3:75","nodeType":"YulIdentifier","src":"3623:3:75"},"nativeSrc":"3623:32:75","nodeType":"YulFunctionCall","src":"3623:32:75"},"nativeSrc":"3620:52:75","nodeType":"YulIf","src":"3620:52:75"},{"nativeSrc":"3681:14:75","nodeType":"YulVariableDeclaration","src":"3681:14:75","value":{"kind":"number","nativeSrc":"3694:1:75","nodeType":"YulLiteral","src":"3694:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3685:5:75","nodeType":"YulTypedName","src":"3685:5:75","type":""}]},{"nativeSrc":"3704:32:75","nodeType":"YulAssignment","src":"3704:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3726:9:75","nodeType":"YulIdentifier","src":"3726:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3713:12:75","nodeType":"YulIdentifier","src":"3713:12:75"},"nativeSrc":"3713:23:75","nodeType":"YulFunctionCall","src":"3713:23:75"},"variableNames":[{"name":"value","nativeSrc":"3704:5:75","nodeType":"YulIdentifier","src":"3704:5:75"}]},{"nativeSrc":"3745:15:75","nodeType":"YulAssignment","src":"3745:15:75","value":{"name":"value","nativeSrc":"3755:5:75","nodeType":"YulIdentifier","src":"3755:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3745:6:75","nodeType":"YulIdentifier","src":"3745:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"3540:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3576:9:75","nodeType":"YulTypedName","src":"3576:9:75","type":""},{"name":"dataEnd","nativeSrc":"3587:7:75","nodeType":"YulTypedName","src":"3587:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3599:6:75","nodeType":"YulTypedName","src":"3599:6:75","type":""}],"src":"3540:226:75"},{"body":{"nativeSrc":"3858:280:75","nodeType":"YulBlock","src":"3858:280:75","statements":[{"body":{"nativeSrc":"3904:16:75","nodeType":"YulBlock","src":"3904:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3913:1:75","nodeType":"YulLiteral","src":"3913:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3916:1:75","nodeType":"YulLiteral","src":"3916:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3906:6:75","nodeType":"YulIdentifier","src":"3906:6:75"},"nativeSrc":"3906:12:75","nodeType":"YulFunctionCall","src":"3906:12:75"},"nativeSrc":"3906:12:75","nodeType":"YulExpressionStatement","src":"3906:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3879:7:75","nodeType":"YulIdentifier","src":"3879:7:75"},{"name":"headStart","nativeSrc":"3888:9:75","nodeType":"YulIdentifier","src":"3888:9:75"}],"functionName":{"name":"sub","nativeSrc":"3875:3:75","nodeType":"YulIdentifier","src":"3875:3:75"},"nativeSrc":"3875:23:75","nodeType":"YulFunctionCall","src":"3875:23:75"},{"kind":"number","nativeSrc":"3900:2:75","nodeType":"YulLiteral","src":"3900:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3871:3:75","nodeType":"YulIdentifier","src":"3871:3:75"},"nativeSrc":"3871:32:75","nodeType":"YulFunctionCall","src":"3871:32:75"},"nativeSrc":"3868:52:75","nodeType":"YulIf","src":"3868:52:75"},{"nativeSrc":"3929:14:75","nodeType":"YulVariableDeclaration","src":"3929:14:75","value":{"kind":"number","nativeSrc":"3942:1:75","nodeType":"YulLiteral","src":"3942:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3933:5:75","nodeType":"YulTypedName","src":"3933:5:75","type":""}]},{"nativeSrc":"3952:32:75","nodeType":"YulAssignment","src":"3952:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3974:9:75","nodeType":"YulIdentifier","src":"3974:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3961:12:75","nodeType":"YulIdentifier","src":"3961:12:75"},"nativeSrc":"3961:23:75","nodeType":"YulFunctionCall","src":"3961:23:75"},"variableNames":[{"name":"value","nativeSrc":"3952:5:75","nodeType":"YulIdentifier","src":"3952:5:75"}]},{"nativeSrc":"3993:15:75","nodeType":"YulAssignment","src":"3993:15:75","value":{"name":"value","nativeSrc":"4003:5:75","nodeType":"YulIdentifier","src":"4003:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3993:6:75","nodeType":"YulIdentifier","src":"3993:6:75"}]},{"nativeSrc":"4017:47:75","nodeType":"YulVariableDeclaration","src":"4017:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4049:9:75","nodeType":"YulIdentifier","src":"4049:9:75"},{"kind":"number","nativeSrc":"4060:2:75","nodeType":"YulLiteral","src":"4060:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4045:3:75","nodeType":"YulIdentifier","src":"4045:3:75"},"nativeSrc":"4045:18:75","nodeType":"YulFunctionCall","src":"4045:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4032:12:75","nodeType":"YulIdentifier","src":"4032:12:75"},"nativeSrc":"4032:32:75","nodeType":"YulFunctionCall","src":"4032:32:75"},"variables":[{"name":"value_1","nativeSrc":"4021:7:75","nodeType":"YulTypedName","src":"4021:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4098:7:75","nodeType":"YulIdentifier","src":"4098:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4073:24:75","nodeType":"YulIdentifier","src":"4073:24:75"},"nativeSrc":"4073:33:75","nodeType":"YulFunctionCall","src":"4073:33:75"},"nativeSrc":"4073:33:75","nodeType":"YulExpressionStatement","src":"4073:33:75"},{"nativeSrc":"4115:17:75","nodeType":"YulAssignment","src":"4115:17:75","value":{"name":"value_1","nativeSrc":"4125:7:75","nodeType":"YulIdentifier","src":"4125:7:75"},"variableNames":[{"name":"value1","nativeSrc":"4115:6:75","nodeType":"YulIdentifier","src":"4115:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"3771:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3816:9:75","nodeType":"YulTypedName","src":"3816:9:75","type":""},{"name":"dataEnd","nativeSrc":"3827:7:75","nodeType":"YulTypedName","src":"3827:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3839:6:75","nodeType":"YulTypedName","src":"3839:6:75","type":""},{"name":"value1","nativeSrc":"3847:6:75","nodeType":"YulTypedName","src":"3847:6:75","type":""}],"src":"3771:367:75"},{"body":{"nativeSrc":"4240:87:75","nodeType":"YulBlock","src":"4240:87:75","statements":[{"nativeSrc":"4250:26:75","nodeType":"YulAssignment","src":"4250:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4262:9:75","nodeType":"YulIdentifier","src":"4262:9:75"},{"kind":"number","nativeSrc":"4273:2:75","nodeType":"YulLiteral","src":"4273:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4258:3:75","nodeType":"YulIdentifier","src":"4258:3:75"},"nativeSrc":"4258:18:75","nodeType":"YulFunctionCall","src":"4258:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4250:4:75","nodeType":"YulIdentifier","src":"4250:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4292:9:75","nodeType":"YulIdentifier","src":"4292:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4307:6:75","nodeType":"YulIdentifier","src":"4307:6:75"},{"kind":"number","nativeSrc":"4315:4:75","nodeType":"YulLiteral","src":"4315:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"4303:3:75","nodeType":"YulIdentifier","src":"4303:3:75"},"nativeSrc":"4303:17:75","nodeType":"YulFunctionCall","src":"4303:17:75"}],"functionName":{"name":"mstore","nativeSrc":"4285:6:75","nodeType":"YulIdentifier","src":"4285:6:75"},"nativeSrc":"4285:36:75","nodeType":"YulFunctionCall","src":"4285:36:75"},"nativeSrc":"4285:36:75","nodeType":"YulExpressionStatement","src":"4285:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"4143:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4209:9:75","nodeType":"YulTypedName","src":"4209:9:75","type":""},{"name":"value0","nativeSrc":"4220:6:75","nodeType":"YulTypedName","src":"4220:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4231:4:75","nodeType":"YulTypedName","src":"4231:4:75","type":""}],"src":"4143:184:75"},{"body":{"nativeSrc":"4433:102:75","nodeType":"YulBlock","src":"4433:102:75","statements":[{"nativeSrc":"4443:26:75","nodeType":"YulAssignment","src":"4443:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4455:9:75","nodeType":"YulIdentifier","src":"4455:9:75"},{"kind":"number","nativeSrc":"4466:2:75","nodeType":"YulLiteral","src":"4466:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4451:3:75","nodeType":"YulIdentifier","src":"4451:3:75"},"nativeSrc":"4451:18:75","nodeType":"YulFunctionCall","src":"4451:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4443:4:75","nodeType":"YulIdentifier","src":"4443:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4485:9:75","nodeType":"YulIdentifier","src":"4485:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4500:6:75","nodeType":"YulIdentifier","src":"4500:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4516:3:75","nodeType":"YulLiteral","src":"4516:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4521:1:75","nodeType":"YulLiteral","src":"4521:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4512:3:75","nodeType":"YulIdentifier","src":"4512:3:75"},"nativeSrc":"4512:11:75","nodeType":"YulFunctionCall","src":"4512:11:75"},{"kind":"number","nativeSrc":"4525:1:75","nodeType":"YulLiteral","src":"4525:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4508:3:75","nodeType":"YulIdentifier","src":"4508:3:75"},"nativeSrc":"4508:19:75","nodeType":"YulFunctionCall","src":"4508:19:75"}],"functionName":{"name":"and","nativeSrc":"4496:3:75","nodeType":"YulIdentifier","src":"4496:3:75"},"nativeSrc":"4496:32:75","nodeType":"YulFunctionCall","src":"4496:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4478:6:75","nodeType":"YulIdentifier","src":"4478:6:75"},"nativeSrc":"4478:51:75","nodeType":"YulFunctionCall","src":"4478:51:75"},"nativeSrc":"4478:51:75","nodeType":"YulExpressionStatement","src":"4478:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4332:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4402:9:75","nodeType":"YulTypedName","src":"4402:9:75","type":""},{"name":"value0","nativeSrc":"4413:6:75","nodeType":"YulTypedName","src":"4413:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4424:4:75","nodeType":"YulTypedName","src":"4424:4:75","type":""}],"src":"4332:203:75"},{"body":{"nativeSrc":"4572:95:75","nodeType":"YulBlock","src":"4572:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4589:1:75","nodeType":"YulLiteral","src":"4589:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4596:3:75","nodeType":"YulLiteral","src":"4596:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4601:10:75","nodeType":"YulLiteral","src":"4601:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4592:3:75","nodeType":"YulIdentifier","src":"4592:3:75"},"nativeSrc":"4592:20:75","nodeType":"YulFunctionCall","src":"4592:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4582:6:75","nodeType":"YulIdentifier","src":"4582:6:75"},"nativeSrc":"4582:31:75","nodeType":"YulFunctionCall","src":"4582:31:75"},"nativeSrc":"4582:31:75","nodeType":"YulExpressionStatement","src":"4582:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4629:1:75","nodeType":"YulLiteral","src":"4629:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4632:4:75","nodeType":"YulLiteral","src":"4632:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"4622:6:75","nodeType":"YulIdentifier","src":"4622:6:75"},"nativeSrc":"4622:15:75","nodeType":"YulFunctionCall","src":"4622:15:75"},"nativeSrc":"4622:15:75","nodeType":"YulExpressionStatement","src":"4622:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4653:1:75","nodeType":"YulLiteral","src":"4653:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4656:4:75","nodeType":"YulLiteral","src":"4656:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4646:6:75","nodeType":"YulIdentifier","src":"4646:6:75"},"nativeSrc":"4646:15:75","nodeType":"YulFunctionCall","src":"4646:15:75"},"nativeSrc":"4646:15:75","nodeType":"YulExpressionStatement","src":"4646:15:75"}]},"name":"panic_error_0x41","nativeSrc":"4540:127:75","nodeType":"YulFunctionDefinition","src":"4540:127:75"},{"body":{"nativeSrc":"4717:230:75","nodeType":"YulBlock","src":"4717:230:75","statements":[{"nativeSrc":"4727:19:75","nodeType":"YulAssignment","src":"4727:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"4743:2:75","nodeType":"YulLiteral","src":"4743:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4737:5:75","nodeType":"YulIdentifier","src":"4737:5:75"},"nativeSrc":"4737:9:75","nodeType":"YulFunctionCall","src":"4737:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"4727:6:75","nodeType":"YulIdentifier","src":"4727:6:75"}]},{"nativeSrc":"4755:58:75","nodeType":"YulVariableDeclaration","src":"4755:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"4777:6:75","nodeType":"YulIdentifier","src":"4777:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"4793:4:75","nodeType":"YulIdentifier","src":"4793:4:75"},{"kind":"number","nativeSrc":"4799:2:75","nodeType":"YulLiteral","src":"4799:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4789:3:75","nodeType":"YulIdentifier","src":"4789:3:75"},"nativeSrc":"4789:13:75","nodeType":"YulFunctionCall","src":"4789:13:75"},{"arguments":[{"kind":"number","nativeSrc":"4808:2:75","nodeType":"YulLiteral","src":"4808:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4804:3:75","nodeType":"YulIdentifier","src":"4804:3:75"},"nativeSrc":"4804:7:75","nodeType":"YulFunctionCall","src":"4804:7:75"}],"functionName":{"name":"and","nativeSrc":"4785:3:75","nodeType":"YulIdentifier","src":"4785:3:75"},"nativeSrc":"4785:27:75","nodeType":"YulFunctionCall","src":"4785:27:75"}],"functionName":{"name":"add","nativeSrc":"4773:3:75","nodeType":"YulIdentifier","src":"4773:3:75"},"nativeSrc":"4773:40:75","nodeType":"YulFunctionCall","src":"4773:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"4759:10:75","nodeType":"YulTypedName","src":"4759:10:75","type":""}]},{"body":{"nativeSrc":"4888:22:75","nodeType":"YulBlock","src":"4888:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4890:16:75","nodeType":"YulIdentifier","src":"4890:16:75"},"nativeSrc":"4890:18:75","nodeType":"YulFunctionCall","src":"4890:18:75"},"nativeSrc":"4890:18:75","nodeType":"YulExpressionStatement","src":"4890:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4831:10:75","nodeType":"YulIdentifier","src":"4831:10:75"},{"kind":"number","nativeSrc":"4843:18:75","nodeType":"YulLiteral","src":"4843:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4828:2:75","nodeType":"YulIdentifier","src":"4828:2:75"},"nativeSrc":"4828:34:75","nodeType":"YulFunctionCall","src":"4828:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4867:10:75","nodeType":"YulIdentifier","src":"4867:10:75"},{"name":"memPtr","nativeSrc":"4879:6:75","nodeType":"YulIdentifier","src":"4879:6:75"}],"functionName":{"name":"lt","nativeSrc":"4864:2:75","nodeType":"YulIdentifier","src":"4864:2:75"},"nativeSrc":"4864:22:75","nodeType":"YulFunctionCall","src":"4864:22:75"}],"functionName":{"name":"or","nativeSrc":"4825:2:75","nodeType":"YulIdentifier","src":"4825:2:75"},"nativeSrc":"4825:62:75","nodeType":"YulFunctionCall","src":"4825:62:75"},"nativeSrc":"4822:88:75","nodeType":"YulIf","src":"4822:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4926:2:75","nodeType":"YulLiteral","src":"4926:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4930:10:75","nodeType":"YulIdentifier","src":"4930:10:75"}],"functionName":{"name":"mstore","nativeSrc":"4919:6:75","nodeType":"YulIdentifier","src":"4919:6:75"},"nativeSrc":"4919:22:75","nodeType":"YulFunctionCall","src":"4919:22:75"},"nativeSrc":"4919:22:75","nodeType":"YulExpressionStatement","src":"4919:22:75"}]},"name":"allocate_memory","nativeSrc":"4672:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"4697:4:75","nodeType":"YulTypedName","src":"4697:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"4706:6:75","nodeType":"YulTypedName","src":"4706:6:75","type":""}],"src":"4672:275:75"},{"body":{"nativeSrc":"5004:577:75","nodeType":"YulBlock","src":"5004:577:75","statements":[{"body":{"nativeSrc":"5053:16:75","nodeType":"YulBlock","src":"5053:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5062:1:75","nodeType":"YulLiteral","src":"5062:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5065:1:75","nodeType":"YulLiteral","src":"5065:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5055:6:75","nodeType":"YulIdentifier","src":"5055:6:75"},"nativeSrc":"5055:12:75","nodeType":"YulFunctionCall","src":"5055:12:75"},"nativeSrc":"5055:12:75","nodeType":"YulExpressionStatement","src":"5055:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5032:6:75","nodeType":"YulIdentifier","src":"5032:6:75"},{"kind":"number","nativeSrc":"5040:4:75","nodeType":"YulLiteral","src":"5040:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5028:3:75","nodeType":"YulIdentifier","src":"5028:3:75"},"nativeSrc":"5028:17:75","nodeType":"YulFunctionCall","src":"5028:17:75"},{"name":"end","nativeSrc":"5047:3:75","nodeType":"YulIdentifier","src":"5047:3:75"}],"functionName":{"name":"slt","nativeSrc":"5024:3:75","nodeType":"YulIdentifier","src":"5024:3:75"},"nativeSrc":"5024:27:75","nodeType":"YulFunctionCall","src":"5024:27:75"}],"functionName":{"name":"iszero","nativeSrc":"5017:6:75","nodeType":"YulIdentifier","src":"5017:6:75"},"nativeSrc":"5017:35:75","nodeType":"YulFunctionCall","src":"5017:35:75"},"nativeSrc":"5014:55:75","nodeType":"YulIf","src":"5014:55:75"},{"nativeSrc":"5078:34:75","nodeType":"YulVariableDeclaration","src":"5078:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"5105:6:75","nodeType":"YulIdentifier","src":"5105:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"5092:12:75","nodeType":"YulIdentifier","src":"5092:12:75"},"nativeSrc":"5092:20:75","nodeType":"YulFunctionCall","src":"5092:20:75"},"variables":[{"name":"length","nativeSrc":"5082:6:75","nodeType":"YulTypedName","src":"5082:6:75","type":""}]},{"nativeSrc":"5121:28:75","nodeType":"YulVariableDeclaration","src":"5121:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"5136:6:75","nodeType":"YulIdentifier","src":"5136:6:75"},{"kind":"number","nativeSrc":"5144:4:75","nodeType":"YulLiteral","src":"5144:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5132:3:75","nodeType":"YulIdentifier","src":"5132:3:75"},"nativeSrc":"5132:17:75","nodeType":"YulFunctionCall","src":"5132:17:75"},"variables":[{"name":"src","nativeSrc":"5125:3:75","nodeType":"YulTypedName","src":"5125:3:75","type":""}]},{"nativeSrc":"5158:16:75","nodeType":"YulVariableDeclaration","src":"5158:16:75","value":{"kind":"number","nativeSrc":"5173:1:75","nodeType":"YulLiteral","src":"5173:1:75","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"5162:7:75","nodeType":"YulTypedName","src":"5162:7:75","type":""}]},{"nativeSrc":"5183:13:75","nodeType":"YulVariableDeclaration","src":"5183:13:75","value":{"kind":"number","nativeSrc":"5195:1:75","nodeType":"YulLiteral","src":"5195:1:75","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"5187:4:75","nodeType":"YulTypedName","src":"5187:4:75","type":""}]},{"body":{"nativeSrc":"5239:22:75","nodeType":"YulBlock","src":"5239:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5241:16:75","nodeType":"YulIdentifier","src":"5241:16:75"},"nativeSrc":"5241:18:75","nodeType":"YulFunctionCall","src":"5241:18:75"},"nativeSrc":"5241:18:75","nodeType":"YulExpressionStatement","src":"5241:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"5211:6:75","nodeType":"YulIdentifier","src":"5211:6:75"},{"kind":"number","nativeSrc":"5219:18:75","nodeType":"YulLiteral","src":"5219:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5208:2:75","nodeType":"YulIdentifier","src":"5208:2:75"},"nativeSrc":"5208:30:75","nodeType":"YulFunctionCall","src":"5208:30:75"},"nativeSrc":"5205:56:75","nodeType":"YulIf","src":"5205:56:75"},{"nativeSrc":"5270:48:75","nodeType":"YulAssignment","src":"5270:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"5290:6:75","nodeType":"YulIdentifier","src":"5290:6:75"},{"kind":"number","nativeSrc":"5298:2:75","nodeType":"YulLiteral","src":"5298:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"5286:3:75","nodeType":"YulIdentifier","src":"5286:3:75"},"nativeSrc":"5286:15:75","nodeType":"YulFunctionCall","src":"5286:15:75"},{"arguments":[{"kind":"number","nativeSrc":"5307:2:75","nodeType":"YulLiteral","src":"5307:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5303:3:75","nodeType":"YulIdentifier","src":"5303:3:75"},"nativeSrc":"5303:7:75","nodeType":"YulFunctionCall","src":"5303:7:75"}],"functionName":{"name":"and","nativeSrc":"5282:3:75","nodeType":"YulIdentifier","src":"5282:3:75"},"nativeSrc":"5282:29:75","nodeType":"YulFunctionCall","src":"5282:29:75"},{"kind":"number","nativeSrc":"5313:4:75","nodeType":"YulLiteral","src":"5313:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5278:3:75","nodeType":"YulIdentifier","src":"5278:3:75"},"nativeSrc":"5278:40:75","nodeType":"YulFunctionCall","src":"5278:40:75"},"variableNames":[{"name":"size","nativeSrc":"5270:4:75","nodeType":"YulIdentifier","src":"5270:4:75"}]},{"nativeSrc":"5327:32:75","nodeType":"YulAssignment","src":"5327:32:75","value":{"arguments":[{"name":"size","nativeSrc":"5354:4:75","nodeType":"YulIdentifier","src":"5354:4:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"5338:15:75","nodeType":"YulIdentifier","src":"5338:15:75"},"nativeSrc":"5338:21:75","nodeType":"YulFunctionCall","src":"5338:21:75"},"variableNames":[{"name":"array_1","nativeSrc":"5327:7:75","nodeType":"YulIdentifier","src":"5327:7:75"}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"5375:7:75","nodeType":"YulIdentifier","src":"5375:7:75"},{"name":"length","nativeSrc":"5384:6:75","nodeType":"YulIdentifier","src":"5384:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5368:6:75","nodeType":"YulIdentifier","src":"5368:6:75"},"nativeSrc":"5368:23:75","nodeType":"YulFunctionCall","src":"5368:23:75"},"nativeSrc":"5368:23:75","nodeType":"YulExpressionStatement","src":"5368:23:75"},{"body":{"nativeSrc":"5429:16:75","nodeType":"YulBlock","src":"5429:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5438:1:75","nodeType":"YulLiteral","src":"5438:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5441:1:75","nodeType":"YulLiteral","src":"5441:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5431:6:75","nodeType":"YulIdentifier","src":"5431:6:75"},"nativeSrc":"5431:12:75","nodeType":"YulFunctionCall","src":"5431:12:75"},"nativeSrc":"5431:12:75","nodeType":"YulExpressionStatement","src":"5431:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5410:3:75","nodeType":"YulIdentifier","src":"5410:3:75"},{"name":"length","nativeSrc":"5415:6:75","nodeType":"YulIdentifier","src":"5415:6:75"}],"functionName":{"name":"add","nativeSrc":"5406:3:75","nodeType":"YulIdentifier","src":"5406:3:75"},"nativeSrc":"5406:16:75","nodeType":"YulFunctionCall","src":"5406:16:75"},{"name":"end","nativeSrc":"5424:3:75","nodeType":"YulIdentifier","src":"5424:3:75"}],"functionName":{"name":"gt","nativeSrc":"5403:2:75","nodeType":"YulIdentifier","src":"5403:2:75"},"nativeSrc":"5403:25:75","nodeType":"YulFunctionCall","src":"5403:25:75"},"nativeSrc":"5400:45:75","nodeType":"YulIf","src":"5400:45:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"5471:7:75","nodeType":"YulIdentifier","src":"5471:7:75"},{"kind":"number","nativeSrc":"5480:4:75","nodeType":"YulLiteral","src":"5480:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5467:3:75","nodeType":"YulIdentifier","src":"5467:3:75"},"nativeSrc":"5467:18:75","nodeType":"YulFunctionCall","src":"5467:18:75"},{"name":"src","nativeSrc":"5487:3:75","nodeType":"YulIdentifier","src":"5487:3:75"},{"name":"length","nativeSrc":"5492:6:75","nodeType":"YulIdentifier","src":"5492:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"5454:12:75","nodeType":"YulIdentifier","src":"5454:12:75"},"nativeSrc":"5454:45:75","nodeType":"YulFunctionCall","src":"5454:45:75"},"nativeSrc":"5454:45:75","nodeType":"YulExpressionStatement","src":"5454:45:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"5523:7:75","nodeType":"YulIdentifier","src":"5523:7:75"},{"name":"length","nativeSrc":"5532:6:75","nodeType":"YulIdentifier","src":"5532:6:75"}],"functionName":{"name":"add","nativeSrc":"5519:3:75","nodeType":"YulIdentifier","src":"5519:3:75"},"nativeSrc":"5519:20:75","nodeType":"YulFunctionCall","src":"5519:20:75"},{"kind":"number","nativeSrc":"5541:4:75","nodeType":"YulLiteral","src":"5541:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5515:3:75","nodeType":"YulIdentifier","src":"5515:3:75"},"nativeSrc":"5515:31:75","nodeType":"YulFunctionCall","src":"5515:31:75"},{"kind":"number","nativeSrc":"5548:1:75","nodeType":"YulLiteral","src":"5548:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"5508:6:75","nodeType":"YulIdentifier","src":"5508:6:75"},"nativeSrc":"5508:42:75","nodeType":"YulFunctionCall","src":"5508:42:75"},"nativeSrc":"5508:42:75","nodeType":"YulExpressionStatement","src":"5508:42:75"},{"nativeSrc":"5559:16:75","nodeType":"YulAssignment","src":"5559:16:75","value":{"name":"array_1","nativeSrc":"5568:7:75","nodeType":"YulIdentifier","src":"5568:7:75"},"variableNames":[{"name":"array","nativeSrc":"5559:5:75","nodeType":"YulIdentifier","src":"5559:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"4952:629:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"4978:6:75","nodeType":"YulTypedName","src":"4978:6:75","type":""},{"name":"end","nativeSrc":"4986:3:75","nodeType":"YulTypedName","src":"4986:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"4994:5:75","nodeType":"YulTypedName","src":"4994:5:75","type":""}],"src":"4952:629:75"},{"body":{"nativeSrc":"5695:351:75","nodeType":"YulBlock","src":"5695:351:75","statements":[{"body":{"nativeSrc":"5741:16:75","nodeType":"YulBlock","src":"5741:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5750:1:75","nodeType":"YulLiteral","src":"5750:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5753:1:75","nodeType":"YulLiteral","src":"5753:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5743:6:75","nodeType":"YulIdentifier","src":"5743:6:75"},"nativeSrc":"5743:12:75","nodeType":"YulFunctionCall","src":"5743:12:75"},"nativeSrc":"5743:12:75","nodeType":"YulExpressionStatement","src":"5743:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5716:7:75","nodeType":"YulIdentifier","src":"5716:7:75"},{"name":"headStart","nativeSrc":"5725:9:75","nodeType":"YulIdentifier","src":"5725:9:75"}],"functionName":{"name":"sub","nativeSrc":"5712:3:75","nodeType":"YulIdentifier","src":"5712:3:75"},"nativeSrc":"5712:23:75","nodeType":"YulFunctionCall","src":"5712:23:75"},{"kind":"number","nativeSrc":"5737:2:75","nodeType":"YulLiteral","src":"5737:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5708:3:75","nodeType":"YulIdentifier","src":"5708:3:75"},"nativeSrc":"5708:32:75","nodeType":"YulFunctionCall","src":"5708:32:75"},"nativeSrc":"5705:52:75","nodeType":"YulIf","src":"5705:52:75"},{"nativeSrc":"5766:37:75","nodeType":"YulAssignment","src":"5766:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5793:9:75","nodeType":"YulIdentifier","src":"5793:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"5776:16:75","nodeType":"YulIdentifier","src":"5776:16:75"},"nativeSrc":"5776:27:75","nodeType":"YulFunctionCall","src":"5776:27:75"},"variableNames":[{"name":"value0","nativeSrc":"5766:6:75","nodeType":"YulIdentifier","src":"5766:6:75"}]},{"nativeSrc":"5812:46:75","nodeType":"YulAssignment","src":"5812:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5843:9:75","nodeType":"YulIdentifier","src":"5843:9:75"},{"kind":"number","nativeSrc":"5854:2:75","nodeType":"YulLiteral","src":"5854:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5839:3:75","nodeType":"YulIdentifier","src":"5839:3:75"},"nativeSrc":"5839:18:75","nodeType":"YulFunctionCall","src":"5839:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"5822:16:75","nodeType":"YulIdentifier","src":"5822:16:75"},"nativeSrc":"5822:36:75","nodeType":"YulFunctionCall","src":"5822:36:75"},"variableNames":[{"name":"value1","nativeSrc":"5812:6:75","nodeType":"YulIdentifier","src":"5812:6:75"}]},{"nativeSrc":"5867:46:75","nodeType":"YulVariableDeclaration","src":"5867:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5898:9:75","nodeType":"YulIdentifier","src":"5898:9:75"},{"kind":"number","nativeSrc":"5909:2:75","nodeType":"YulLiteral","src":"5909:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5894:3:75","nodeType":"YulIdentifier","src":"5894:3:75"},"nativeSrc":"5894:18:75","nodeType":"YulFunctionCall","src":"5894:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"5881:12:75","nodeType":"YulIdentifier","src":"5881:12:75"},"nativeSrc":"5881:32:75","nodeType":"YulFunctionCall","src":"5881:32:75"},"variables":[{"name":"offset","nativeSrc":"5871:6:75","nodeType":"YulTypedName","src":"5871:6:75","type":""}]},{"body":{"nativeSrc":"5956:16:75","nodeType":"YulBlock","src":"5956:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5965:1:75","nodeType":"YulLiteral","src":"5965:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5968:1:75","nodeType":"YulLiteral","src":"5968:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5958:6:75","nodeType":"YulIdentifier","src":"5958:6:75"},"nativeSrc":"5958:12:75","nodeType":"YulFunctionCall","src":"5958:12:75"},"nativeSrc":"5958:12:75","nodeType":"YulExpressionStatement","src":"5958:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5928:6:75","nodeType":"YulIdentifier","src":"5928:6:75"},{"kind":"number","nativeSrc":"5936:18:75","nodeType":"YulLiteral","src":"5936:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5925:2:75","nodeType":"YulIdentifier","src":"5925:2:75"},"nativeSrc":"5925:30:75","nodeType":"YulFunctionCall","src":"5925:30:75"},"nativeSrc":"5922:50:75","nodeType":"YulIf","src":"5922:50:75"},{"nativeSrc":"5981:59:75","nodeType":"YulAssignment","src":"5981:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6012:9:75","nodeType":"YulIdentifier","src":"6012:9:75"},{"name":"offset","nativeSrc":"6023:6:75","nodeType":"YulIdentifier","src":"6023:6:75"}],"functionName":{"name":"add","nativeSrc":"6008:3:75","nodeType":"YulIdentifier","src":"6008:3:75"},"nativeSrc":"6008:22:75","nodeType":"YulFunctionCall","src":"6008:22:75"},{"name":"dataEnd","nativeSrc":"6032:7:75","nodeType":"YulIdentifier","src":"6032:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5991:16:75","nodeType":"YulIdentifier","src":"5991:16:75"},"nativeSrc":"5991:49:75","nodeType":"YulFunctionCall","src":"5991:49:75"},"variableNames":[{"name":"value2","nativeSrc":"5981:6:75","nodeType":"YulIdentifier","src":"5981:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr","nativeSrc":"5586:460:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5645:9:75","nodeType":"YulTypedName","src":"5645:9:75","type":""},{"name":"dataEnd","nativeSrc":"5656:7:75","nodeType":"YulTypedName","src":"5656:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5668:6:75","nodeType":"YulTypedName","src":"5668:6:75","type":""},{"name":"value1","nativeSrc":"5676:6:75","nodeType":"YulTypedName","src":"5676:6:75","type":""},{"name":"value2","nativeSrc":"5684:6:75","nodeType":"YulTypedName","src":"5684:6:75","type":""}],"src":"5586:460:75"},{"body":{"nativeSrc":"6170:99:75","nodeType":"YulBlock","src":"6170:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6187:9:75","nodeType":"YulIdentifier","src":"6187:9:75"},{"kind":"number","nativeSrc":"6198:2:75","nodeType":"YulLiteral","src":"6198:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"6180:6:75","nodeType":"YulIdentifier","src":"6180:6:75"},"nativeSrc":"6180:21:75","nodeType":"YulFunctionCall","src":"6180:21:75"},"nativeSrc":"6180:21:75","nodeType":"YulExpressionStatement","src":"6180:21:75"},{"nativeSrc":"6210:53:75","nodeType":"YulAssignment","src":"6210:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"6236:6:75","nodeType":"YulIdentifier","src":"6236:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"6248:9:75","nodeType":"YulIdentifier","src":"6248:9:75"},{"kind":"number","nativeSrc":"6259:2:75","nodeType":"YulLiteral","src":"6259:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6244:3:75","nodeType":"YulIdentifier","src":"6244:3:75"},"nativeSrc":"6244:18:75","nodeType":"YulFunctionCall","src":"6244:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"6218:17:75","nodeType":"YulIdentifier","src":"6218:17:75"},"nativeSrc":"6218:45:75","nodeType":"YulFunctionCall","src":"6218:45:75"},"variableNames":[{"name":"tail","nativeSrc":"6210:4:75","nodeType":"YulIdentifier","src":"6210:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"6051:218:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6139:9:75","nodeType":"YulTypedName","src":"6139:9:75","type":""},{"name":"value0","nativeSrc":"6150:6:75","nodeType":"YulTypedName","src":"6150:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6161:4:75","nodeType":"YulTypedName","src":"6161:4:75","type":""}],"src":"6051:218:75"},{"body":{"nativeSrc":"6344:177:75","nodeType":"YulBlock","src":"6344:177:75","statements":[{"body":{"nativeSrc":"6390:16:75","nodeType":"YulBlock","src":"6390:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6399:1:75","nodeType":"YulLiteral","src":"6399:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6402:1:75","nodeType":"YulLiteral","src":"6402:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6392:6:75","nodeType":"YulIdentifier","src":"6392:6:75"},"nativeSrc":"6392:12:75","nodeType":"YulFunctionCall","src":"6392:12:75"},"nativeSrc":"6392:12:75","nodeType":"YulExpressionStatement","src":"6392:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6365:7:75","nodeType":"YulIdentifier","src":"6365:7:75"},{"name":"headStart","nativeSrc":"6374:9:75","nodeType":"YulIdentifier","src":"6374:9:75"}],"functionName":{"name":"sub","nativeSrc":"6361:3:75","nodeType":"YulIdentifier","src":"6361:3:75"},"nativeSrc":"6361:23:75","nodeType":"YulFunctionCall","src":"6361:23:75"},{"kind":"number","nativeSrc":"6386:2:75","nodeType":"YulLiteral","src":"6386:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6357:3:75","nodeType":"YulIdentifier","src":"6357:3:75"},"nativeSrc":"6357:32:75","nodeType":"YulFunctionCall","src":"6357:32:75"},"nativeSrc":"6354:52:75","nodeType":"YulIf","src":"6354:52:75"},{"nativeSrc":"6415:36:75","nodeType":"YulVariableDeclaration","src":"6415:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6441:9:75","nodeType":"YulIdentifier","src":"6441:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6428:12:75","nodeType":"YulIdentifier","src":"6428:12:75"},"nativeSrc":"6428:23:75","nodeType":"YulFunctionCall","src":"6428:23:75"},"variables":[{"name":"value","nativeSrc":"6419:5:75","nodeType":"YulTypedName","src":"6419:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6485:5:75","nodeType":"YulIdentifier","src":"6485:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6460:24:75","nodeType":"YulIdentifier","src":"6460:24:75"},"nativeSrc":"6460:31:75","nodeType":"YulFunctionCall","src":"6460:31:75"},"nativeSrc":"6460:31:75","nodeType":"YulExpressionStatement","src":"6460:31:75"},{"nativeSrc":"6500:15:75","nodeType":"YulAssignment","src":"6500:15:75","value":{"name":"value","nativeSrc":"6510:5:75","nodeType":"YulIdentifier","src":"6510:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6500:6:75","nodeType":"YulIdentifier","src":"6500:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"6274:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6310:9:75","nodeType":"YulTypedName","src":"6310:9:75","type":""},{"name":"dataEnd","nativeSrc":"6321:7:75","nodeType":"YulTypedName","src":"6321:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6333:6:75","nodeType":"YulTypedName","src":"6333:6:75","type":""}],"src":"6274:247:75"},{"body":{"nativeSrc":"6622:359:75","nodeType":"YulBlock","src":"6622:359:75","statements":[{"body":{"nativeSrc":"6668:16:75","nodeType":"YulBlock","src":"6668:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6677:1:75","nodeType":"YulLiteral","src":"6677:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6680:1:75","nodeType":"YulLiteral","src":"6680:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6670:6:75","nodeType":"YulIdentifier","src":"6670:6:75"},"nativeSrc":"6670:12:75","nodeType":"YulFunctionCall","src":"6670:12:75"},"nativeSrc":"6670:12:75","nodeType":"YulExpressionStatement","src":"6670:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6643:7:75","nodeType":"YulIdentifier","src":"6643:7:75"},{"name":"headStart","nativeSrc":"6652:9:75","nodeType":"YulIdentifier","src":"6652:9:75"}],"functionName":{"name":"sub","nativeSrc":"6639:3:75","nodeType":"YulIdentifier","src":"6639:3:75"},"nativeSrc":"6639:23:75","nodeType":"YulFunctionCall","src":"6639:23:75"},{"kind":"number","nativeSrc":"6664:2:75","nodeType":"YulLiteral","src":"6664:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6635:3:75","nodeType":"YulIdentifier","src":"6635:3:75"},"nativeSrc":"6635:32:75","nodeType":"YulFunctionCall","src":"6635:32:75"},"nativeSrc":"6632:52:75","nodeType":"YulIf","src":"6632:52:75"},{"nativeSrc":"6693:36:75","nodeType":"YulVariableDeclaration","src":"6693:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6719:9:75","nodeType":"YulIdentifier","src":"6719:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6706:12:75","nodeType":"YulIdentifier","src":"6706:12:75"},"nativeSrc":"6706:23:75","nodeType":"YulFunctionCall","src":"6706:23:75"},"variables":[{"name":"value","nativeSrc":"6697:5:75","nodeType":"YulTypedName","src":"6697:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6763:5:75","nodeType":"YulIdentifier","src":"6763:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6738:24:75","nodeType":"YulIdentifier","src":"6738:24:75"},"nativeSrc":"6738:31:75","nodeType":"YulFunctionCall","src":"6738:31:75"},"nativeSrc":"6738:31:75","nodeType":"YulExpressionStatement","src":"6738:31:75"},{"nativeSrc":"6778:15:75","nodeType":"YulAssignment","src":"6778:15:75","value":{"name":"value","nativeSrc":"6788:5:75","nodeType":"YulIdentifier","src":"6788:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6778:6:75","nodeType":"YulIdentifier","src":"6778:6:75"}]},{"nativeSrc":"6802:46:75","nodeType":"YulVariableDeclaration","src":"6802:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6833:9:75","nodeType":"YulIdentifier","src":"6833:9:75"},{"kind":"number","nativeSrc":"6844:2:75","nodeType":"YulLiteral","src":"6844:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6829:3:75","nodeType":"YulIdentifier","src":"6829:3:75"},"nativeSrc":"6829:18:75","nodeType":"YulFunctionCall","src":"6829:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6816:12:75","nodeType":"YulIdentifier","src":"6816:12:75"},"nativeSrc":"6816:32:75","nodeType":"YulFunctionCall","src":"6816:32:75"},"variables":[{"name":"offset","nativeSrc":"6806:6:75","nodeType":"YulTypedName","src":"6806:6:75","type":""}]},{"body":{"nativeSrc":"6891:16:75","nodeType":"YulBlock","src":"6891:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6900:1:75","nodeType":"YulLiteral","src":"6900:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6903:1:75","nodeType":"YulLiteral","src":"6903:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6893:6:75","nodeType":"YulIdentifier","src":"6893:6:75"},"nativeSrc":"6893:12:75","nodeType":"YulFunctionCall","src":"6893:12:75"},"nativeSrc":"6893:12:75","nodeType":"YulExpressionStatement","src":"6893:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6863:6:75","nodeType":"YulIdentifier","src":"6863:6:75"},{"kind":"number","nativeSrc":"6871:18:75","nodeType":"YulLiteral","src":"6871:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6860:2:75","nodeType":"YulIdentifier","src":"6860:2:75"},"nativeSrc":"6860:30:75","nodeType":"YulFunctionCall","src":"6860:30:75"},"nativeSrc":"6857:50:75","nodeType":"YulIf","src":"6857:50:75"},{"nativeSrc":"6916:59:75","nodeType":"YulAssignment","src":"6916:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6947:9:75","nodeType":"YulIdentifier","src":"6947:9:75"},{"name":"offset","nativeSrc":"6958:6:75","nodeType":"YulIdentifier","src":"6958:6:75"}],"functionName":{"name":"add","nativeSrc":"6943:3:75","nodeType":"YulIdentifier","src":"6943:3:75"},"nativeSrc":"6943:22:75","nodeType":"YulFunctionCall","src":"6943:22:75"},{"name":"dataEnd","nativeSrc":"6967:7:75","nodeType":"YulIdentifier","src":"6967:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"6926:16:75","nodeType":"YulIdentifier","src":"6926:16:75"},"nativeSrc":"6926:49:75","nodeType":"YulFunctionCall","src":"6926:49:75"},"variableNames":[{"name":"value1","nativeSrc":"6916:6:75","nodeType":"YulIdentifier","src":"6916:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"6526:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6580:9:75","nodeType":"YulTypedName","src":"6580:9:75","type":""},{"name":"dataEnd","nativeSrc":"6591:7:75","nodeType":"YulTypedName","src":"6591:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6603:6:75","nodeType":"YulTypedName","src":"6603:6:75","type":""},{"name":"value1","nativeSrc":"6611:6:75","nodeType":"YulTypedName","src":"6611:6:75","type":""}],"src":"6526:455:75"},{"body":{"nativeSrc":"7131:337:75","nodeType":"YulBlock","src":"7131:337:75","statements":[{"nativeSrc":"7141:28:75","nodeType":"YulAssignment","src":"7141:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7153:9:75","nodeType":"YulIdentifier","src":"7153:9:75"},{"kind":"number","nativeSrc":"7164:4:75","nodeType":"YulLiteral","src":"7164:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"7149:3:75","nodeType":"YulIdentifier","src":"7149:3:75"},"nativeSrc":"7149:20:75","nodeType":"YulFunctionCall","src":"7149:20:75"},"variableNames":[{"name":"tail","nativeSrc":"7141:4:75","nodeType":"YulIdentifier","src":"7141:4:75"}]},{"nativeSrc":"7178:20:75","nodeType":"YulVariableDeclaration","src":"7178:20:75","value":{"name":"headStart","nativeSrc":"7189:9:75","nodeType":"YulIdentifier","src":"7189:9:75"},"variables":[{"name":"pos","nativeSrc":"7182:3:75","nodeType":"YulTypedName","src":"7182:3:75","type":""}]},{"nativeSrc":"7207:16:75","nodeType":"YulAssignment","src":"7207:16:75","value":{"name":"headStart","nativeSrc":"7214:9:75","nodeType":"YulIdentifier","src":"7214:9:75"},"variableNames":[{"name":"pos","nativeSrc":"7207:3:75","nodeType":"YulIdentifier","src":"7207:3:75"}]},{"nativeSrc":"7232:20:75","nodeType":"YulVariableDeclaration","src":"7232:20:75","value":{"name":"value0","nativeSrc":"7246:6:75","nodeType":"YulIdentifier","src":"7246:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"7236:6:75","nodeType":"YulTypedName","src":"7236:6:75","type":""}]},{"nativeSrc":"7261:10:75","nodeType":"YulVariableDeclaration","src":"7261:10:75","value":{"kind":"number","nativeSrc":"7270:1:75","nodeType":"YulLiteral","src":"7270:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7265:1:75","nodeType":"YulTypedName","src":"7265:1:75","type":""}]},{"body":{"nativeSrc":"7327:135:75","nodeType":"YulBlock","src":"7327:135:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7348:3:75","nodeType":"YulIdentifier","src":"7348:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"7363:6:75","nodeType":"YulIdentifier","src":"7363:6:75"}],"functionName":{"name":"mload","nativeSrc":"7357:5:75","nodeType":"YulIdentifier","src":"7357:5:75"},"nativeSrc":"7357:13:75","nodeType":"YulFunctionCall","src":"7357:13:75"},{"kind":"number","nativeSrc":"7372:4:75","nodeType":"YulLiteral","src":"7372:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"7353:3:75","nodeType":"YulIdentifier","src":"7353:3:75"},"nativeSrc":"7353:24:75","nodeType":"YulFunctionCall","src":"7353:24:75"}],"functionName":{"name":"mstore","nativeSrc":"7341:6:75","nodeType":"YulIdentifier","src":"7341:6:75"},"nativeSrc":"7341:37:75","nodeType":"YulFunctionCall","src":"7341:37:75"},"nativeSrc":"7341:37:75","nodeType":"YulExpressionStatement","src":"7341:37:75"},{"nativeSrc":"7391:21:75","nodeType":"YulAssignment","src":"7391:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"7402:3:75","nodeType":"YulIdentifier","src":"7402:3:75"},{"kind":"number","nativeSrc":"7407:4:75","nodeType":"YulLiteral","src":"7407:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7398:3:75","nodeType":"YulIdentifier","src":"7398:3:75"},"nativeSrc":"7398:14:75","nodeType":"YulFunctionCall","src":"7398:14:75"},"variableNames":[{"name":"pos","nativeSrc":"7391:3:75","nodeType":"YulIdentifier","src":"7391:3:75"}]},{"nativeSrc":"7425:27:75","nodeType":"YulAssignment","src":"7425:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"7439:6:75","nodeType":"YulIdentifier","src":"7439:6:75"},{"kind":"number","nativeSrc":"7447:4:75","nodeType":"YulLiteral","src":"7447:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7435:3:75","nodeType":"YulIdentifier","src":"7435:3:75"},"nativeSrc":"7435:17:75","nodeType":"YulFunctionCall","src":"7435:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"7425:6:75","nodeType":"YulIdentifier","src":"7425:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7291:1:75","nodeType":"YulIdentifier","src":"7291:1:75"},{"kind":"number","nativeSrc":"7294:4:75","nodeType":"YulLiteral","src":"7294:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"7288:2:75","nodeType":"YulIdentifier","src":"7288:2:75"},"nativeSrc":"7288:11:75","nodeType":"YulFunctionCall","src":"7288:11:75"},"nativeSrc":"7280:182:75","nodeType":"YulForLoop","post":{"nativeSrc":"7300:18:75","nodeType":"YulBlock","src":"7300:18:75","statements":[{"nativeSrc":"7302:14:75","nodeType":"YulAssignment","src":"7302:14:75","value":{"arguments":[{"name":"i","nativeSrc":"7311:1:75","nodeType":"YulIdentifier","src":"7311:1:75"},{"kind":"number","nativeSrc":"7314:1:75","nodeType":"YulLiteral","src":"7314:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7307:3:75","nodeType":"YulIdentifier","src":"7307:3:75"},"nativeSrc":"7307:9:75","nodeType":"YulFunctionCall","src":"7307:9:75"},"variableNames":[{"name":"i","nativeSrc":"7302:1:75","nodeType":"YulIdentifier","src":"7302:1:75"}]}]},"pre":{"nativeSrc":"7284:3:75","nodeType":"YulBlock","src":"7284:3:75","statements":[]},"src":"7280:182:75"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed","nativeSrc":"6986:482:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7100:9:75","nodeType":"YulTypedName","src":"7100:9:75","type":""},{"name":"value0","nativeSrc":"7111:6:75","nodeType":"YulTypedName","src":"7111:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7122:4:75","nodeType":"YulTypedName","src":"7122:4:75","type":""}],"src":"6986:482:75"},{"body":{"nativeSrc":"7559:114:75","nodeType":"YulBlock","src":"7559:114:75","statements":[{"body":{"nativeSrc":"7603:22:75","nodeType":"YulBlock","src":"7603:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7605:16:75","nodeType":"YulIdentifier","src":"7605:16:75"},"nativeSrc":"7605:18:75","nodeType":"YulFunctionCall","src":"7605:18:75"},"nativeSrc":"7605:18:75","nodeType":"YulExpressionStatement","src":"7605:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"7575:6:75","nodeType":"YulIdentifier","src":"7575:6:75"},{"kind":"number","nativeSrc":"7583:18:75","nodeType":"YulLiteral","src":"7583:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7572:2:75","nodeType":"YulIdentifier","src":"7572:2:75"},"nativeSrc":"7572:30:75","nodeType":"YulFunctionCall","src":"7572:30:75"},"nativeSrc":"7569:56:75","nodeType":"YulIf","src":"7569:56:75"},{"nativeSrc":"7634:33:75","nodeType":"YulAssignment","src":"7634:33:75","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7650:1:75","nodeType":"YulLiteral","src":"7650:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"7653:6:75","nodeType":"YulIdentifier","src":"7653:6:75"}],"functionName":{"name":"shl","nativeSrc":"7646:3:75","nodeType":"YulIdentifier","src":"7646:3:75"},"nativeSrc":"7646:14:75","nodeType":"YulFunctionCall","src":"7646:14:75"},{"kind":"number","nativeSrc":"7662:4:75","nodeType":"YulLiteral","src":"7662:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7642:3:75","nodeType":"YulIdentifier","src":"7642:3:75"},"nativeSrc":"7642:25:75","nodeType":"YulFunctionCall","src":"7642:25:75"},"variableNames":[{"name":"size","nativeSrc":"7634:4:75","nodeType":"YulIdentifier","src":"7634:4:75"}]}]},"name":"array_allocation_size_array_contract_IInvestStrategy_dyn","nativeSrc":"7473:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"7539:6:75","nodeType":"YulTypedName","src":"7539:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"7550:4:75","nodeType":"YulTypedName","src":"7550:4:75","type":""}],"src":"7473:200:75"},{"body":{"nativeSrc":"7759:697:75","nodeType":"YulBlock","src":"7759:697:75","statements":[{"body":{"nativeSrc":"7808:16:75","nodeType":"YulBlock","src":"7808:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7817:1:75","nodeType":"YulLiteral","src":"7817:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7820:1:75","nodeType":"YulLiteral","src":"7820:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7810:6:75","nodeType":"YulIdentifier","src":"7810:6:75"},"nativeSrc":"7810:12:75","nodeType":"YulFunctionCall","src":"7810:12:75"},"nativeSrc":"7810:12:75","nodeType":"YulExpressionStatement","src":"7810:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"7787:6:75","nodeType":"YulIdentifier","src":"7787:6:75"},{"kind":"number","nativeSrc":"7795:4:75","nodeType":"YulLiteral","src":"7795:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7783:3:75","nodeType":"YulIdentifier","src":"7783:3:75"},"nativeSrc":"7783:17:75","nodeType":"YulFunctionCall","src":"7783:17:75"},{"name":"end","nativeSrc":"7802:3:75","nodeType":"YulIdentifier","src":"7802:3:75"}],"functionName":{"name":"slt","nativeSrc":"7779:3:75","nodeType":"YulIdentifier","src":"7779:3:75"},"nativeSrc":"7779:27:75","nodeType":"YulFunctionCall","src":"7779:27:75"}],"functionName":{"name":"iszero","nativeSrc":"7772:6:75","nodeType":"YulIdentifier","src":"7772:6:75"},"nativeSrc":"7772:35:75","nodeType":"YulFunctionCall","src":"7772:35:75"},"nativeSrc":"7769:55:75","nodeType":"YulIf","src":"7769:55:75"},{"nativeSrc":"7833:34:75","nodeType":"YulVariableDeclaration","src":"7833:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"7860:6:75","nodeType":"YulIdentifier","src":"7860:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"7847:12:75","nodeType":"YulIdentifier","src":"7847:12:75"},"nativeSrc":"7847:20:75","nodeType":"YulFunctionCall","src":"7847:20:75"},"variables":[{"name":"length","nativeSrc":"7837:6:75","nodeType":"YulTypedName","src":"7837:6:75","type":""}]},{"nativeSrc":"7876:92:75","nodeType":"YulVariableDeclaration","src":"7876:92:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"7960:6:75","nodeType":"YulIdentifier","src":"7960:6:75"}],"functionName":{"name":"array_allocation_size_array_contract_IInvestStrategy_dyn","nativeSrc":"7903:56:75","nodeType":"YulIdentifier","src":"7903:56:75"},"nativeSrc":"7903:64:75","nodeType":"YulFunctionCall","src":"7903:64:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"7887:15:75","nodeType":"YulIdentifier","src":"7887:15:75"},"nativeSrc":"7887:81:75","nodeType":"YulFunctionCall","src":"7887:81:75"},"variables":[{"name":"dst","nativeSrc":"7880:3:75","nodeType":"YulTypedName","src":"7880:3:75","type":""}]},{"nativeSrc":"7977:18:75","nodeType":"YulVariableDeclaration","src":"7977:18:75","value":{"name":"dst","nativeSrc":"7992:3:75","nodeType":"YulIdentifier","src":"7992:3:75"},"variables":[{"name":"array_1","nativeSrc":"7981:7:75","nodeType":"YulTypedName","src":"7981:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"8011:3:75","nodeType":"YulIdentifier","src":"8011:3:75"},{"name":"length","nativeSrc":"8016:6:75","nodeType":"YulIdentifier","src":"8016:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8004:6:75","nodeType":"YulIdentifier","src":"8004:6:75"},"nativeSrc":"8004:19:75","nodeType":"YulFunctionCall","src":"8004:19:75"},"nativeSrc":"8004:19:75","nodeType":"YulExpressionStatement","src":"8004:19:75"},{"nativeSrc":"8032:21:75","nodeType":"YulAssignment","src":"8032:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"8043:3:75","nodeType":"YulIdentifier","src":"8043:3:75"},{"kind":"number","nativeSrc":"8048:4:75","nodeType":"YulLiteral","src":"8048:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8039:3:75","nodeType":"YulIdentifier","src":"8039:3:75"},"nativeSrc":"8039:14:75","nodeType":"YulFunctionCall","src":"8039:14:75"},"variableNames":[{"name":"dst","nativeSrc":"8032:3:75","nodeType":"YulIdentifier","src":"8032:3:75"}]},{"nativeSrc":"8062:52:75","nodeType":"YulVariableDeclaration","src":"8062:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8084:6:75","nodeType":"YulIdentifier","src":"8084:6:75"},{"arguments":[{"kind":"number","nativeSrc":"8096:1:75","nodeType":"YulLiteral","src":"8096:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"8099:6:75","nodeType":"YulIdentifier","src":"8099:6:75"}],"functionName":{"name":"shl","nativeSrc":"8092:3:75","nodeType":"YulIdentifier","src":"8092:3:75"},"nativeSrc":"8092:14:75","nodeType":"YulFunctionCall","src":"8092:14:75"}],"functionName":{"name":"add","nativeSrc":"8080:3:75","nodeType":"YulIdentifier","src":"8080:3:75"},"nativeSrc":"8080:27:75","nodeType":"YulFunctionCall","src":"8080:27:75"},{"kind":"number","nativeSrc":"8109:4:75","nodeType":"YulLiteral","src":"8109:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8076:3:75","nodeType":"YulIdentifier","src":"8076:3:75"},"nativeSrc":"8076:38:75","nodeType":"YulFunctionCall","src":"8076:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"8066:6:75","nodeType":"YulTypedName","src":"8066:6:75","type":""}]},{"body":{"nativeSrc":"8142:16:75","nodeType":"YulBlock","src":"8142:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8151:1:75","nodeType":"YulLiteral","src":"8151:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8154:1:75","nodeType":"YulLiteral","src":"8154:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8144:6:75","nodeType":"YulIdentifier","src":"8144:6:75"},"nativeSrc":"8144:12:75","nodeType":"YulFunctionCall","src":"8144:12:75"},"nativeSrc":"8144:12:75","nodeType":"YulExpressionStatement","src":"8144:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"8129:6:75","nodeType":"YulIdentifier","src":"8129:6:75"},{"name":"end","nativeSrc":"8137:3:75","nodeType":"YulIdentifier","src":"8137:3:75"}],"functionName":{"name":"gt","nativeSrc":"8126:2:75","nodeType":"YulIdentifier","src":"8126:2:75"},"nativeSrc":"8126:15:75","nodeType":"YulFunctionCall","src":"8126:15:75"},"nativeSrc":"8123:35:75","nodeType":"YulIf","src":"8123:35:75"},{"nativeSrc":"8167:28:75","nodeType":"YulVariableDeclaration","src":"8167:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"8182:6:75","nodeType":"YulIdentifier","src":"8182:6:75"},{"kind":"number","nativeSrc":"8190:4:75","nodeType":"YulLiteral","src":"8190:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8178:3:75","nodeType":"YulIdentifier","src":"8178:3:75"},"nativeSrc":"8178:17:75","nodeType":"YulFunctionCall","src":"8178:17:75"},"variables":[{"name":"src","nativeSrc":"8171:3:75","nodeType":"YulTypedName","src":"8171:3:75","type":""}]},{"body":{"nativeSrc":"8262:163:75","nodeType":"YulBlock","src":"8262:163:75","statements":[{"nativeSrc":"8276:30:75","nodeType":"YulVariableDeclaration","src":"8276:30:75","value":{"arguments":[{"name":"src","nativeSrc":"8302:3:75","nodeType":"YulIdentifier","src":"8302:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"8289:12:75","nodeType":"YulIdentifier","src":"8289:12:75"},"nativeSrc":"8289:17:75","nodeType":"YulFunctionCall","src":"8289:17:75"},"variables":[{"name":"value","nativeSrc":"8280:5:75","nodeType":"YulTypedName","src":"8280:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8344:5:75","nodeType":"YulIdentifier","src":"8344:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8319:24:75","nodeType":"YulIdentifier","src":"8319:24:75"},"nativeSrc":"8319:31:75","nodeType":"YulFunctionCall","src":"8319:31:75"},"nativeSrc":"8319:31:75","nodeType":"YulExpressionStatement","src":"8319:31:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"8370:3:75","nodeType":"YulIdentifier","src":"8370:3:75"},{"name":"value","nativeSrc":"8375:5:75","nodeType":"YulIdentifier","src":"8375:5:75"}],"functionName":{"name":"mstore","nativeSrc":"8363:6:75","nodeType":"YulIdentifier","src":"8363:6:75"},"nativeSrc":"8363:18:75","nodeType":"YulFunctionCall","src":"8363:18:75"},"nativeSrc":"8363:18:75","nodeType":"YulExpressionStatement","src":"8363:18:75"},{"nativeSrc":"8394:21:75","nodeType":"YulAssignment","src":"8394:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"8405:3:75","nodeType":"YulIdentifier","src":"8405:3:75"},{"kind":"number","nativeSrc":"8410:4:75","nodeType":"YulLiteral","src":"8410:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8401:3:75","nodeType":"YulIdentifier","src":"8401:3:75"},"nativeSrc":"8401:14:75","nodeType":"YulFunctionCall","src":"8401:14:75"},"variableNames":[{"name":"dst","nativeSrc":"8394:3:75","nodeType":"YulIdentifier","src":"8394:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"8215:3:75","nodeType":"YulIdentifier","src":"8215:3:75"},{"name":"srcEnd","nativeSrc":"8220:6:75","nodeType":"YulIdentifier","src":"8220:6:75"}],"functionName":{"name":"lt","nativeSrc":"8212:2:75","nodeType":"YulIdentifier","src":"8212:2:75"},"nativeSrc":"8212:15:75","nodeType":"YulFunctionCall","src":"8212:15:75"},"nativeSrc":"8204:221:75","nodeType":"YulForLoop","post":{"nativeSrc":"8228:25:75","nodeType":"YulBlock","src":"8228:25:75","statements":[{"nativeSrc":"8230:21:75","nodeType":"YulAssignment","src":"8230:21:75","value":{"arguments":[{"name":"src","nativeSrc":"8241:3:75","nodeType":"YulIdentifier","src":"8241:3:75"},{"kind":"number","nativeSrc":"8246:4:75","nodeType":"YulLiteral","src":"8246:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8237:3:75","nodeType":"YulIdentifier","src":"8237:3:75"},"nativeSrc":"8237:14:75","nodeType":"YulFunctionCall","src":"8237:14:75"},"variableNames":[{"name":"src","nativeSrc":"8230:3:75","nodeType":"YulIdentifier","src":"8230:3:75"}]}]},"pre":{"nativeSrc":"8208:3:75","nodeType":"YulBlock","src":"8208:3:75","statements":[]},"src":"8204:221:75"},{"nativeSrc":"8434:16:75","nodeType":"YulAssignment","src":"8434:16:75","value":{"name":"array_1","nativeSrc":"8443:7:75","nodeType":"YulIdentifier","src":"8443:7:75"},"variableNames":[{"name":"array","nativeSrc":"8434:5:75","nodeType":"YulIdentifier","src":"8434:5:75"}]}]},"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"7678:778:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"7733:6:75","nodeType":"YulTypedName","src":"7733:6:75","type":""},{"name":"end","nativeSrc":"7741:3:75","nodeType":"YulTypedName","src":"7741:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"7749:5:75","nodeType":"YulTypedName","src":"7749:5:75","type":""}],"src":"7678:778:75"},{"body":{"nativeSrc":"8523:780:75","nodeType":"YulBlock","src":"8523:780:75","statements":[{"body":{"nativeSrc":"8572:16:75","nodeType":"YulBlock","src":"8572:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8581:1:75","nodeType":"YulLiteral","src":"8581:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8584:1:75","nodeType":"YulLiteral","src":"8584:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8574:6:75","nodeType":"YulIdentifier","src":"8574:6:75"},"nativeSrc":"8574:12:75","nodeType":"YulFunctionCall","src":"8574:12:75"},"nativeSrc":"8574:12:75","nodeType":"YulExpressionStatement","src":"8574:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8551:6:75","nodeType":"YulIdentifier","src":"8551:6:75"},{"kind":"number","nativeSrc":"8559:4:75","nodeType":"YulLiteral","src":"8559:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"8547:3:75","nodeType":"YulIdentifier","src":"8547:3:75"},"nativeSrc":"8547:17:75","nodeType":"YulFunctionCall","src":"8547:17:75"},{"name":"end","nativeSrc":"8566:3:75","nodeType":"YulIdentifier","src":"8566:3:75"}],"functionName":{"name":"slt","nativeSrc":"8543:3:75","nodeType":"YulIdentifier","src":"8543:3:75"},"nativeSrc":"8543:27:75","nodeType":"YulFunctionCall","src":"8543:27:75"}],"functionName":{"name":"iszero","nativeSrc":"8536:6:75","nodeType":"YulIdentifier","src":"8536:6:75"},"nativeSrc":"8536:35:75","nodeType":"YulFunctionCall","src":"8536:35:75"},"nativeSrc":"8533:55:75","nodeType":"YulIf","src":"8533:55:75"},{"nativeSrc":"8597:34:75","nodeType":"YulVariableDeclaration","src":"8597:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"8624:6:75","nodeType":"YulIdentifier","src":"8624:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"8611:12:75","nodeType":"YulIdentifier","src":"8611:12:75"},"nativeSrc":"8611:20:75","nodeType":"YulFunctionCall","src":"8611:20:75"},"variables":[{"name":"length","nativeSrc":"8601:6:75","nodeType":"YulTypedName","src":"8601:6:75","type":""}]},{"nativeSrc":"8640:92:75","nodeType":"YulVariableDeclaration","src":"8640:92:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"8724:6:75","nodeType":"YulIdentifier","src":"8724:6:75"}],"functionName":{"name":"array_allocation_size_array_contract_IInvestStrategy_dyn","nativeSrc":"8667:56:75","nodeType":"YulIdentifier","src":"8667:56:75"},"nativeSrc":"8667:64:75","nodeType":"YulFunctionCall","src":"8667:64:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"8651:15:75","nodeType":"YulIdentifier","src":"8651:15:75"},"nativeSrc":"8651:81:75","nodeType":"YulFunctionCall","src":"8651:81:75"},"variables":[{"name":"dst","nativeSrc":"8644:3:75","nodeType":"YulTypedName","src":"8644:3:75","type":""}]},{"nativeSrc":"8741:18:75","nodeType":"YulVariableDeclaration","src":"8741:18:75","value":{"name":"dst","nativeSrc":"8756:3:75","nodeType":"YulIdentifier","src":"8756:3:75"},"variables":[{"name":"array_1","nativeSrc":"8745:7:75","nodeType":"YulTypedName","src":"8745:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"8775:3:75","nodeType":"YulIdentifier","src":"8775:3:75"},{"name":"length","nativeSrc":"8780:6:75","nodeType":"YulIdentifier","src":"8780:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8768:6:75","nodeType":"YulIdentifier","src":"8768:6:75"},"nativeSrc":"8768:19:75","nodeType":"YulFunctionCall","src":"8768:19:75"},"nativeSrc":"8768:19:75","nodeType":"YulExpressionStatement","src":"8768:19:75"},{"nativeSrc":"8796:21:75","nodeType":"YulAssignment","src":"8796:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"8807:3:75","nodeType":"YulIdentifier","src":"8807:3:75"},{"kind":"number","nativeSrc":"8812:4:75","nodeType":"YulLiteral","src":"8812:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8803:3:75","nodeType":"YulIdentifier","src":"8803:3:75"},"nativeSrc":"8803:14:75","nodeType":"YulFunctionCall","src":"8803:14:75"},"variableNames":[{"name":"dst","nativeSrc":"8796:3:75","nodeType":"YulIdentifier","src":"8796:3:75"}]},{"nativeSrc":"8826:52:75","nodeType":"YulVariableDeclaration","src":"8826:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"8848:6:75","nodeType":"YulIdentifier","src":"8848:6:75"},{"arguments":[{"kind":"number","nativeSrc":"8860:1:75","nodeType":"YulLiteral","src":"8860:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"8863:6:75","nodeType":"YulIdentifier","src":"8863:6:75"}],"functionName":{"name":"shl","nativeSrc":"8856:3:75","nodeType":"YulIdentifier","src":"8856:3:75"},"nativeSrc":"8856:14:75","nodeType":"YulFunctionCall","src":"8856:14:75"}],"functionName":{"name":"add","nativeSrc":"8844:3:75","nodeType":"YulIdentifier","src":"8844:3:75"},"nativeSrc":"8844:27:75","nodeType":"YulFunctionCall","src":"8844:27:75"},{"kind":"number","nativeSrc":"8873:4:75","nodeType":"YulLiteral","src":"8873:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8840:3:75","nodeType":"YulIdentifier","src":"8840:3:75"},"nativeSrc":"8840:38:75","nodeType":"YulFunctionCall","src":"8840:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"8830:6:75","nodeType":"YulTypedName","src":"8830:6:75","type":""}]},{"body":{"nativeSrc":"8906:16:75","nodeType":"YulBlock","src":"8906:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8915:1:75","nodeType":"YulLiteral","src":"8915:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8918:1:75","nodeType":"YulLiteral","src":"8918:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8908:6:75","nodeType":"YulIdentifier","src":"8908:6:75"},"nativeSrc":"8908:12:75","nodeType":"YulFunctionCall","src":"8908:12:75"},"nativeSrc":"8908:12:75","nodeType":"YulExpressionStatement","src":"8908:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"8893:6:75","nodeType":"YulIdentifier","src":"8893:6:75"},{"name":"end","nativeSrc":"8901:3:75","nodeType":"YulIdentifier","src":"8901:3:75"}],"functionName":{"name":"gt","nativeSrc":"8890:2:75","nodeType":"YulIdentifier","src":"8890:2:75"},"nativeSrc":"8890:15:75","nodeType":"YulFunctionCall","src":"8890:15:75"},"nativeSrc":"8887:35:75","nodeType":"YulIf","src":"8887:35:75"},{"nativeSrc":"8931:28:75","nodeType":"YulVariableDeclaration","src":"8931:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"8946:6:75","nodeType":"YulIdentifier","src":"8946:6:75"},{"kind":"number","nativeSrc":"8954:4:75","nodeType":"YulLiteral","src":"8954:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8942:3:75","nodeType":"YulIdentifier","src":"8942:3:75"},"nativeSrc":"8942:17:75","nodeType":"YulFunctionCall","src":"8942:17:75"},"variables":[{"name":"src","nativeSrc":"8935:3:75","nodeType":"YulTypedName","src":"8935:3:75","type":""}]},{"body":{"nativeSrc":"9026:246:75","nodeType":"YulBlock","src":"9026:246:75","statements":[{"nativeSrc":"9040:36:75","nodeType":"YulVariableDeclaration","src":"9040:36:75","value":{"arguments":[{"name":"src","nativeSrc":"9072:3:75","nodeType":"YulIdentifier","src":"9072:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"9059:12:75","nodeType":"YulIdentifier","src":"9059:12:75"},"nativeSrc":"9059:17:75","nodeType":"YulFunctionCall","src":"9059:17:75"},"variables":[{"name":"innerOffset","nativeSrc":"9044:11:75","nodeType":"YulTypedName","src":"9044:11:75","type":""}]},{"body":{"nativeSrc":"9128:16:75","nodeType":"YulBlock","src":"9128:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9137:1:75","nodeType":"YulLiteral","src":"9137:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9140:1:75","nodeType":"YulLiteral","src":"9140:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9130:6:75","nodeType":"YulIdentifier","src":"9130:6:75"},"nativeSrc":"9130:12:75","nodeType":"YulFunctionCall","src":"9130:12:75"},"nativeSrc":"9130:12:75","nodeType":"YulExpressionStatement","src":"9130:12:75"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"9095:11:75","nodeType":"YulIdentifier","src":"9095:11:75"},{"kind":"number","nativeSrc":"9108:18:75","nodeType":"YulLiteral","src":"9108:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9092:2:75","nodeType":"YulIdentifier","src":"9092:2:75"},"nativeSrc":"9092:35:75","nodeType":"YulFunctionCall","src":"9092:35:75"},"nativeSrc":"9089:55:75","nodeType":"YulIf","src":"9089:55:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"9164:3:75","nodeType":"YulIdentifier","src":"9164:3:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9194:6:75","nodeType":"YulIdentifier","src":"9194:6:75"},{"name":"innerOffset","nativeSrc":"9202:11:75","nodeType":"YulIdentifier","src":"9202:11:75"}],"functionName":{"name":"add","nativeSrc":"9190:3:75","nodeType":"YulIdentifier","src":"9190:3:75"},"nativeSrc":"9190:24:75","nodeType":"YulFunctionCall","src":"9190:24:75"},{"kind":"number","nativeSrc":"9216:4:75","nodeType":"YulLiteral","src":"9216:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9186:3:75","nodeType":"YulIdentifier","src":"9186:3:75"},"nativeSrc":"9186:35:75","nodeType":"YulFunctionCall","src":"9186:35:75"},{"name":"end","nativeSrc":"9223:3:75","nodeType":"YulIdentifier","src":"9223:3:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"9169:16:75","nodeType":"YulIdentifier","src":"9169:16:75"},"nativeSrc":"9169:58:75","nodeType":"YulFunctionCall","src":"9169:58:75"}],"functionName":{"name":"mstore","nativeSrc":"9157:6:75","nodeType":"YulIdentifier","src":"9157:6:75"},"nativeSrc":"9157:71:75","nodeType":"YulFunctionCall","src":"9157:71:75"},"nativeSrc":"9157:71:75","nodeType":"YulExpressionStatement","src":"9157:71:75"},{"nativeSrc":"9241:21:75","nodeType":"YulAssignment","src":"9241:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"9252:3:75","nodeType":"YulIdentifier","src":"9252:3:75"},{"kind":"number","nativeSrc":"9257:4:75","nodeType":"YulLiteral","src":"9257:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9248:3:75","nodeType":"YulIdentifier","src":"9248:3:75"},"nativeSrc":"9248:14:75","nodeType":"YulFunctionCall","src":"9248:14:75"},"variableNames":[{"name":"dst","nativeSrc":"9241:3:75","nodeType":"YulIdentifier","src":"9241:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"8979:3:75","nodeType":"YulIdentifier","src":"8979:3:75"},{"name":"srcEnd","nativeSrc":"8984:6:75","nodeType":"YulIdentifier","src":"8984:6:75"}],"functionName":{"name":"lt","nativeSrc":"8976:2:75","nodeType":"YulIdentifier","src":"8976:2:75"},"nativeSrc":"8976:15:75","nodeType":"YulFunctionCall","src":"8976:15:75"},"nativeSrc":"8968:304:75","nodeType":"YulForLoop","post":{"nativeSrc":"8992:25:75","nodeType":"YulBlock","src":"8992:25:75","statements":[{"nativeSrc":"8994:21:75","nodeType":"YulAssignment","src":"8994:21:75","value":{"arguments":[{"name":"src","nativeSrc":"9005:3:75","nodeType":"YulIdentifier","src":"9005:3:75"},{"kind":"number","nativeSrc":"9010:4:75","nodeType":"YulLiteral","src":"9010:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9001:3:75","nodeType":"YulIdentifier","src":"9001:3:75"},"nativeSrc":"9001:14:75","nodeType":"YulFunctionCall","src":"9001:14:75"},"variableNames":[{"name":"src","nativeSrc":"8994:3:75","nodeType":"YulIdentifier","src":"8994:3:75"}]}]},"pre":{"nativeSrc":"8972:3:75","nodeType":"YulBlock","src":"8972:3:75","statements":[]},"src":"8968:304:75"},{"nativeSrc":"9281:16:75","nodeType":"YulAssignment","src":"9281:16:75","value":{"name":"array_1","nativeSrc":"9290:7:75","nodeType":"YulIdentifier","src":"9290:7:75"},"variableNames":[{"name":"array","nativeSrc":"9281:5:75","nodeType":"YulIdentifier","src":"9281:5:75"}]}]},"name":"abi_decode_array_bytes_dyn","nativeSrc":"8461:842:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8497:6:75","nodeType":"YulTypedName","src":"8497:6:75","type":""},{"name":"end","nativeSrc":"8505:3:75","nodeType":"YulTypedName","src":"8505:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"8513:5:75","nodeType":"YulTypedName","src":"8513:5:75","type":""}],"src":"8461:842:75"},{"body":{"nativeSrc":"9370:626:75","nodeType":"YulBlock","src":"9370:626:75","statements":[{"body":{"nativeSrc":"9419:16:75","nodeType":"YulBlock","src":"9419:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9428:1:75","nodeType":"YulLiteral","src":"9428:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9431:1:75","nodeType":"YulLiteral","src":"9431:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9421:6:75","nodeType":"YulIdentifier","src":"9421:6:75"},"nativeSrc":"9421:12:75","nodeType":"YulFunctionCall","src":"9421:12:75"},"nativeSrc":"9421:12:75","nodeType":"YulExpressionStatement","src":"9421:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9398:6:75","nodeType":"YulIdentifier","src":"9398:6:75"},{"kind":"number","nativeSrc":"9406:4:75","nodeType":"YulLiteral","src":"9406:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9394:3:75","nodeType":"YulIdentifier","src":"9394:3:75"},"nativeSrc":"9394:17:75","nodeType":"YulFunctionCall","src":"9394:17:75"},{"name":"end","nativeSrc":"9413:3:75","nodeType":"YulIdentifier","src":"9413:3:75"}],"functionName":{"name":"slt","nativeSrc":"9390:3:75","nodeType":"YulIdentifier","src":"9390:3:75"},"nativeSrc":"9390:27:75","nodeType":"YulFunctionCall","src":"9390:27:75"}],"functionName":{"name":"iszero","nativeSrc":"9383:6:75","nodeType":"YulIdentifier","src":"9383:6:75"},"nativeSrc":"9383:35:75","nodeType":"YulFunctionCall","src":"9383:35:75"},"nativeSrc":"9380:55:75","nodeType":"YulIf","src":"9380:55:75"},{"nativeSrc":"9444:34:75","nodeType":"YulVariableDeclaration","src":"9444:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"9471:6:75","nodeType":"YulIdentifier","src":"9471:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"9458:12:75","nodeType":"YulIdentifier","src":"9458:12:75"},"nativeSrc":"9458:20:75","nodeType":"YulFunctionCall","src":"9458:20:75"},"variables":[{"name":"length","nativeSrc":"9448:6:75","nodeType":"YulTypedName","src":"9448:6:75","type":""}]},{"nativeSrc":"9487:92:75","nodeType":"YulVariableDeclaration","src":"9487:92:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"9571:6:75","nodeType":"YulIdentifier","src":"9571:6:75"}],"functionName":{"name":"array_allocation_size_array_contract_IInvestStrategy_dyn","nativeSrc":"9514:56:75","nodeType":"YulIdentifier","src":"9514:56:75"},"nativeSrc":"9514:64:75","nodeType":"YulFunctionCall","src":"9514:64:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"9498:15:75","nodeType":"YulIdentifier","src":"9498:15:75"},"nativeSrc":"9498:81:75","nodeType":"YulFunctionCall","src":"9498:81:75"},"variables":[{"name":"dst","nativeSrc":"9491:3:75","nodeType":"YulTypedName","src":"9491:3:75","type":""}]},{"nativeSrc":"9588:18:75","nodeType":"YulVariableDeclaration","src":"9588:18:75","value":{"name":"dst","nativeSrc":"9603:3:75","nodeType":"YulIdentifier","src":"9603:3:75"},"variables":[{"name":"array_1","nativeSrc":"9592:7:75","nodeType":"YulTypedName","src":"9592:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"9622:3:75","nodeType":"YulIdentifier","src":"9622:3:75"},{"name":"length","nativeSrc":"9627:6:75","nodeType":"YulIdentifier","src":"9627:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9615:6:75","nodeType":"YulIdentifier","src":"9615:6:75"},"nativeSrc":"9615:19:75","nodeType":"YulFunctionCall","src":"9615:19:75"},"nativeSrc":"9615:19:75","nodeType":"YulExpressionStatement","src":"9615:19:75"},{"nativeSrc":"9643:21:75","nodeType":"YulAssignment","src":"9643:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"9654:3:75","nodeType":"YulIdentifier","src":"9654:3:75"},{"kind":"number","nativeSrc":"9659:4:75","nodeType":"YulLiteral","src":"9659:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9650:3:75","nodeType":"YulIdentifier","src":"9650:3:75"},"nativeSrc":"9650:14:75","nodeType":"YulFunctionCall","src":"9650:14:75"},"variableNames":[{"name":"dst","nativeSrc":"9643:3:75","nodeType":"YulIdentifier","src":"9643:3:75"}]},{"nativeSrc":"9673:52:75","nodeType":"YulVariableDeclaration","src":"9673:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9695:6:75","nodeType":"YulIdentifier","src":"9695:6:75"},{"arguments":[{"kind":"number","nativeSrc":"9707:1:75","nodeType":"YulLiteral","src":"9707:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"9710:6:75","nodeType":"YulIdentifier","src":"9710:6:75"}],"functionName":{"name":"shl","nativeSrc":"9703:3:75","nodeType":"YulIdentifier","src":"9703:3:75"},"nativeSrc":"9703:14:75","nodeType":"YulFunctionCall","src":"9703:14:75"}],"functionName":{"name":"add","nativeSrc":"9691:3:75","nodeType":"YulIdentifier","src":"9691:3:75"},"nativeSrc":"9691:27:75","nodeType":"YulFunctionCall","src":"9691:27:75"},{"kind":"number","nativeSrc":"9720:4:75","nodeType":"YulLiteral","src":"9720:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9687:3:75","nodeType":"YulIdentifier","src":"9687:3:75"},"nativeSrc":"9687:38:75","nodeType":"YulFunctionCall","src":"9687:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"9677:6:75","nodeType":"YulTypedName","src":"9677:6:75","type":""}]},{"body":{"nativeSrc":"9753:16:75","nodeType":"YulBlock","src":"9753:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9762:1:75","nodeType":"YulLiteral","src":"9762:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9765:1:75","nodeType":"YulLiteral","src":"9765:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9755:6:75","nodeType":"YulIdentifier","src":"9755:6:75"},"nativeSrc":"9755:12:75","nodeType":"YulFunctionCall","src":"9755:12:75"},"nativeSrc":"9755:12:75","nodeType":"YulExpressionStatement","src":"9755:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"9740:6:75","nodeType":"YulIdentifier","src":"9740:6:75"},{"name":"end","nativeSrc":"9748:3:75","nodeType":"YulIdentifier","src":"9748:3:75"}],"functionName":{"name":"gt","nativeSrc":"9737:2:75","nodeType":"YulIdentifier","src":"9737:2:75"},"nativeSrc":"9737:15:75","nodeType":"YulFunctionCall","src":"9737:15:75"},"nativeSrc":"9734:35:75","nodeType":"YulIf","src":"9734:35:75"},{"nativeSrc":"9778:28:75","nodeType":"YulVariableDeclaration","src":"9778:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"9793:6:75","nodeType":"YulIdentifier","src":"9793:6:75"},{"kind":"number","nativeSrc":"9801:4:75","nodeType":"YulLiteral","src":"9801:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9789:3:75","nodeType":"YulIdentifier","src":"9789:3:75"},"nativeSrc":"9789:17:75","nodeType":"YulFunctionCall","src":"9789:17:75"},"variables":[{"name":"src","nativeSrc":"9782:3:75","nodeType":"YulTypedName","src":"9782:3:75","type":""}]},{"body":{"nativeSrc":"9873:92:75","nodeType":"YulBlock","src":"9873:92:75","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"9894:3:75","nodeType":"YulIdentifier","src":"9894:3:75"},{"arguments":[{"name":"src","nativeSrc":"9916:3:75","nodeType":"YulIdentifier","src":"9916:3:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"9899:16:75","nodeType":"YulIdentifier","src":"9899:16:75"},"nativeSrc":"9899:21:75","nodeType":"YulFunctionCall","src":"9899:21:75"}],"functionName":{"name":"mstore","nativeSrc":"9887:6:75","nodeType":"YulIdentifier","src":"9887:6:75"},"nativeSrc":"9887:34:75","nodeType":"YulFunctionCall","src":"9887:34:75"},"nativeSrc":"9887:34:75","nodeType":"YulExpressionStatement","src":"9887:34:75"},{"nativeSrc":"9934:21:75","nodeType":"YulAssignment","src":"9934:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"9945:3:75","nodeType":"YulIdentifier","src":"9945:3:75"},{"kind":"number","nativeSrc":"9950:4:75","nodeType":"YulLiteral","src":"9950:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9941:3:75","nodeType":"YulIdentifier","src":"9941:3:75"},"nativeSrc":"9941:14:75","nodeType":"YulFunctionCall","src":"9941:14:75"},"variableNames":[{"name":"dst","nativeSrc":"9934:3:75","nodeType":"YulIdentifier","src":"9934:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"9826:3:75","nodeType":"YulIdentifier","src":"9826:3:75"},{"name":"srcEnd","nativeSrc":"9831:6:75","nodeType":"YulIdentifier","src":"9831:6:75"}],"functionName":{"name":"lt","nativeSrc":"9823:2:75","nodeType":"YulIdentifier","src":"9823:2:75"},"nativeSrc":"9823:15:75","nodeType":"YulFunctionCall","src":"9823:15:75"},"nativeSrc":"9815:150:75","nodeType":"YulForLoop","post":{"nativeSrc":"9839:25:75","nodeType":"YulBlock","src":"9839:25:75","statements":[{"nativeSrc":"9841:21:75","nodeType":"YulAssignment","src":"9841:21:75","value":{"arguments":[{"name":"src","nativeSrc":"9852:3:75","nodeType":"YulIdentifier","src":"9852:3:75"},{"kind":"number","nativeSrc":"9857:4:75","nodeType":"YulLiteral","src":"9857:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9848:3:75","nodeType":"YulIdentifier","src":"9848:3:75"},"nativeSrc":"9848:14:75","nodeType":"YulFunctionCall","src":"9848:14:75"},"variableNames":[{"name":"src","nativeSrc":"9841:3:75","nodeType":"YulIdentifier","src":"9841:3:75"}]}]},"pre":{"nativeSrc":"9819:3:75","nodeType":"YulBlock","src":"9819:3:75","statements":[]},"src":"9815:150:75"},{"nativeSrc":"9974:16:75","nodeType":"YulAssignment","src":"9974:16:75","value":{"name":"array_1","nativeSrc":"9983:7:75","nodeType":"YulIdentifier","src":"9983:7:75"},"variableNames":[{"name":"array","nativeSrc":"9974:5:75","nodeType":"YulIdentifier","src":"9974:5:75"}]}]},"name":"abi_decode_array_uint8_dyn","nativeSrc":"9308:688:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9344:6:75","nodeType":"YulTypedName","src":"9344:6:75","type":""},{"name":"end","nativeSrc":"9352:3:75","nodeType":"YulTypedName","src":"9352:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"9360:5:75","nodeType":"YulTypedName","src":"9360:5:75","type":""}],"src":"9308:688:75"},{"body":{"nativeSrc":"10355:1359:75","nodeType":"YulBlock","src":"10355:1359:75","statements":[{"body":{"nativeSrc":"10402:16:75","nodeType":"YulBlock","src":"10402:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10411:1:75","nodeType":"YulLiteral","src":"10411:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10414:1:75","nodeType":"YulLiteral","src":"10414:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10404:6:75","nodeType":"YulIdentifier","src":"10404:6:75"},"nativeSrc":"10404:12:75","nodeType":"YulFunctionCall","src":"10404:12:75"},"nativeSrc":"10404:12:75","nodeType":"YulExpressionStatement","src":"10404:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10376:7:75","nodeType":"YulIdentifier","src":"10376:7:75"},{"name":"headStart","nativeSrc":"10385:9:75","nodeType":"YulIdentifier","src":"10385:9:75"}],"functionName":{"name":"sub","nativeSrc":"10372:3:75","nodeType":"YulIdentifier","src":"10372:3:75"},"nativeSrc":"10372:23:75","nodeType":"YulFunctionCall","src":"10372:23:75"},{"kind":"number","nativeSrc":"10397:3:75","nodeType":"YulLiteral","src":"10397:3:75","type":"","value":"256"}],"functionName":{"name":"slt","nativeSrc":"10368:3:75","nodeType":"YulIdentifier","src":"10368:3:75"},"nativeSrc":"10368:33:75","nodeType":"YulFunctionCall","src":"10368:33:75"},"nativeSrc":"10365:53:75","nodeType":"YulIf","src":"10365:53:75"},{"nativeSrc":"10427:37:75","nodeType":"YulVariableDeclaration","src":"10427:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10454:9:75","nodeType":"YulIdentifier","src":"10454:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"10441:12:75","nodeType":"YulIdentifier","src":"10441:12:75"},"nativeSrc":"10441:23:75","nodeType":"YulFunctionCall","src":"10441:23:75"},"variables":[{"name":"offset","nativeSrc":"10431:6:75","nodeType":"YulTypedName","src":"10431:6:75","type":""}]},{"body":{"nativeSrc":"10507:16:75","nodeType":"YulBlock","src":"10507:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10516:1:75","nodeType":"YulLiteral","src":"10516:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10519:1:75","nodeType":"YulLiteral","src":"10519:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10509:6:75","nodeType":"YulIdentifier","src":"10509:6:75"},"nativeSrc":"10509:12:75","nodeType":"YulFunctionCall","src":"10509:12:75"},"nativeSrc":"10509:12:75","nodeType":"YulExpressionStatement","src":"10509:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10479:6:75","nodeType":"YulIdentifier","src":"10479:6:75"},{"kind":"number","nativeSrc":"10487:18:75","nodeType":"YulLiteral","src":"10487:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10476:2:75","nodeType":"YulIdentifier","src":"10476:2:75"},"nativeSrc":"10476:30:75","nodeType":"YulFunctionCall","src":"10476:30:75"},"nativeSrc":"10473:50:75","nodeType":"YulIf","src":"10473:50:75"},{"nativeSrc":"10532:59:75","nodeType":"YulAssignment","src":"10532:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10563:9:75","nodeType":"YulIdentifier","src":"10563:9:75"},{"name":"offset","nativeSrc":"10574:6:75","nodeType":"YulIdentifier","src":"10574:6:75"}],"functionName":{"name":"add","nativeSrc":"10559:3:75","nodeType":"YulIdentifier","src":"10559:3:75"},"nativeSrc":"10559:22:75","nodeType":"YulFunctionCall","src":"10559:22:75"},{"name":"dataEnd","nativeSrc":"10583:7:75","nodeType":"YulIdentifier","src":"10583:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"10542:16:75","nodeType":"YulIdentifier","src":"10542:16:75"},"nativeSrc":"10542:49:75","nodeType":"YulFunctionCall","src":"10542:49:75"},"variableNames":[{"name":"value0","nativeSrc":"10532:6:75","nodeType":"YulIdentifier","src":"10532:6:75"}]},{"nativeSrc":"10600:48:75","nodeType":"YulVariableDeclaration","src":"10600:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10633:9:75","nodeType":"YulIdentifier","src":"10633:9:75"},{"kind":"number","nativeSrc":"10644:2:75","nodeType":"YulLiteral","src":"10644:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10629:3:75","nodeType":"YulIdentifier","src":"10629:3:75"},"nativeSrc":"10629:18:75","nodeType":"YulFunctionCall","src":"10629:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"10616:12:75","nodeType":"YulIdentifier","src":"10616:12:75"},"nativeSrc":"10616:32:75","nodeType":"YulFunctionCall","src":"10616:32:75"},"variables":[{"name":"offset_1","nativeSrc":"10604:8:75","nodeType":"YulTypedName","src":"10604:8:75","type":""}]},{"body":{"nativeSrc":"10693:16:75","nodeType":"YulBlock","src":"10693:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10702:1:75","nodeType":"YulLiteral","src":"10702:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10705:1:75","nodeType":"YulLiteral","src":"10705:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10695:6:75","nodeType":"YulIdentifier","src":"10695:6:75"},"nativeSrc":"10695:12:75","nodeType":"YulFunctionCall","src":"10695:12:75"},"nativeSrc":"10695:12:75","nodeType":"YulExpressionStatement","src":"10695:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"10663:8:75","nodeType":"YulIdentifier","src":"10663:8:75"},{"kind":"number","nativeSrc":"10673:18:75","nodeType":"YulLiteral","src":"10673:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10660:2:75","nodeType":"YulIdentifier","src":"10660:2:75"},"nativeSrc":"10660:32:75","nodeType":"YulFunctionCall","src":"10660:32:75"},"nativeSrc":"10657:52:75","nodeType":"YulIf","src":"10657:52:75"},{"nativeSrc":"10718:61:75","nodeType":"YulAssignment","src":"10718:61:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10749:9:75","nodeType":"YulIdentifier","src":"10749:9:75"},{"name":"offset_1","nativeSrc":"10760:8:75","nodeType":"YulIdentifier","src":"10760:8:75"}],"functionName":{"name":"add","nativeSrc":"10745:3:75","nodeType":"YulIdentifier","src":"10745:3:75"},"nativeSrc":"10745:24:75","nodeType":"YulFunctionCall","src":"10745:24:75"},{"name":"dataEnd","nativeSrc":"10771:7:75","nodeType":"YulIdentifier","src":"10771:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"10728:16:75","nodeType":"YulIdentifier","src":"10728:16:75"},"nativeSrc":"10728:51:75","nodeType":"YulFunctionCall","src":"10728:51:75"},"variableNames":[{"name":"value1","nativeSrc":"10718:6:75","nodeType":"YulIdentifier","src":"10718:6:75"}]},{"nativeSrc":"10788:48:75","nodeType":"YulAssignment","src":"10788:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10821:9:75","nodeType":"YulIdentifier","src":"10821:9:75"},{"kind":"number","nativeSrc":"10832:2:75","nodeType":"YulLiteral","src":"10832:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10817:3:75","nodeType":"YulIdentifier","src":"10817:3:75"},"nativeSrc":"10817:18:75","nodeType":"YulFunctionCall","src":"10817:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"10798:18:75","nodeType":"YulIdentifier","src":"10798:18:75"},"nativeSrc":"10798:38:75","nodeType":"YulFunctionCall","src":"10798:38:75"},"variableNames":[{"name":"value2","nativeSrc":"10788:6:75","nodeType":"YulIdentifier","src":"10788:6:75"}]},{"nativeSrc":"10845:48:75","nodeType":"YulAssignment","src":"10845:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10878:9:75","nodeType":"YulIdentifier","src":"10878:9:75"},{"kind":"number","nativeSrc":"10889:2:75","nodeType":"YulLiteral","src":"10889:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10874:3:75","nodeType":"YulIdentifier","src":"10874:3:75"},"nativeSrc":"10874:18:75","nodeType":"YulFunctionCall","src":"10874:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"10855:18:75","nodeType":"YulIdentifier","src":"10855:18:75"},"nativeSrc":"10855:38:75","nodeType":"YulFunctionCall","src":"10855:38:75"},"variableNames":[{"name":"value3","nativeSrc":"10845:6:75","nodeType":"YulIdentifier","src":"10845:6:75"}]},{"nativeSrc":"10902:49:75","nodeType":"YulVariableDeclaration","src":"10902:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10935:9:75","nodeType":"YulIdentifier","src":"10935:9:75"},{"kind":"number","nativeSrc":"10946:3:75","nodeType":"YulLiteral","src":"10946:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10931:3:75","nodeType":"YulIdentifier","src":"10931:3:75"},"nativeSrc":"10931:19:75","nodeType":"YulFunctionCall","src":"10931:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"10918:12:75","nodeType":"YulIdentifier","src":"10918:12:75"},"nativeSrc":"10918:33:75","nodeType":"YulFunctionCall","src":"10918:33:75"},"variables":[{"name":"offset_2","nativeSrc":"10906:8:75","nodeType":"YulTypedName","src":"10906:8:75","type":""}]},{"body":{"nativeSrc":"10996:16:75","nodeType":"YulBlock","src":"10996:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11005:1:75","nodeType":"YulLiteral","src":"11005:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11008:1:75","nodeType":"YulLiteral","src":"11008:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10998:6:75","nodeType":"YulIdentifier","src":"10998:6:75"},"nativeSrc":"10998:12:75","nodeType":"YulFunctionCall","src":"10998:12:75"},"nativeSrc":"10998:12:75","nodeType":"YulExpressionStatement","src":"10998:12:75"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"10966:8:75","nodeType":"YulIdentifier","src":"10966:8:75"},{"kind":"number","nativeSrc":"10976:18:75","nodeType":"YulLiteral","src":"10976:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10963:2:75","nodeType":"YulIdentifier","src":"10963:2:75"},"nativeSrc":"10963:32:75","nodeType":"YulFunctionCall","src":"10963:32:75"},"nativeSrc":"10960:52:75","nodeType":"YulIf","src":"10960:52:75"},{"nativeSrc":"11021:90:75","nodeType":"YulAssignment","src":"11021:90:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11081:9:75","nodeType":"YulIdentifier","src":"11081:9:75"},{"name":"offset_2","nativeSrc":"11092:8:75","nodeType":"YulIdentifier","src":"11092:8:75"}],"functionName":{"name":"add","nativeSrc":"11077:3:75","nodeType":"YulIdentifier","src":"11077:3:75"},"nativeSrc":"11077:24:75","nodeType":"YulFunctionCall","src":"11077:24:75"},{"name":"dataEnd","nativeSrc":"11103:7:75","nodeType":"YulIdentifier","src":"11103:7:75"}],"functionName":{"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"11031:45:75","nodeType":"YulIdentifier","src":"11031:45:75"},"nativeSrc":"11031:80:75","nodeType":"YulFunctionCall","src":"11031:80:75"},"variableNames":[{"name":"value4","nativeSrc":"11021:6:75","nodeType":"YulIdentifier","src":"11021:6:75"}]},{"nativeSrc":"11120:49:75","nodeType":"YulVariableDeclaration","src":"11120:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11153:9:75","nodeType":"YulIdentifier","src":"11153:9:75"},{"kind":"number","nativeSrc":"11164:3:75","nodeType":"YulLiteral","src":"11164:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"11149:3:75","nodeType":"YulIdentifier","src":"11149:3:75"},"nativeSrc":"11149:19:75","nodeType":"YulFunctionCall","src":"11149:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"11136:12:75","nodeType":"YulIdentifier","src":"11136:12:75"},"nativeSrc":"11136:33:75","nodeType":"YulFunctionCall","src":"11136:33:75"},"variables":[{"name":"offset_3","nativeSrc":"11124:8:75","nodeType":"YulTypedName","src":"11124:8:75","type":""}]},{"body":{"nativeSrc":"11214:16:75","nodeType":"YulBlock","src":"11214:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11223:1:75","nodeType":"YulLiteral","src":"11223:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11226:1:75","nodeType":"YulLiteral","src":"11226:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11216:6:75","nodeType":"YulIdentifier","src":"11216:6:75"},"nativeSrc":"11216:12:75","nodeType":"YulFunctionCall","src":"11216:12:75"},"nativeSrc":"11216:12:75","nodeType":"YulExpressionStatement","src":"11216:12:75"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"11184:8:75","nodeType":"YulIdentifier","src":"11184:8:75"},{"kind":"number","nativeSrc":"11194:18:75","nodeType":"YulLiteral","src":"11194:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11181:2:75","nodeType":"YulIdentifier","src":"11181:2:75"},"nativeSrc":"11181:32:75","nodeType":"YulFunctionCall","src":"11181:32:75"},"nativeSrc":"11178:52:75","nodeType":"YulIf","src":"11178:52:75"},{"nativeSrc":"11239:71:75","nodeType":"YulAssignment","src":"11239:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11280:9:75","nodeType":"YulIdentifier","src":"11280:9:75"},{"name":"offset_3","nativeSrc":"11291:8:75","nodeType":"YulIdentifier","src":"11291:8:75"}],"functionName":{"name":"add","nativeSrc":"11276:3:75","nodeType":"YulIdentifier","src":"11276:3:75"},"nativeSrc":"11276:24:75","nodeType":"YulFunctionCall","src":"11276:24:75"},{"name":"dataEnd","nativeSrc":"11302:7:75","nodeType":"YulIdentifier","src":"11302:7:75"}],"functionName":{"name":"abi_decode_array_bytes_dyn","nativeSrc":"11249:26:75","nodeType":"YulIdentifier","src":"11249:26:75"},"nativeSrc":"11249:61:75","nodeType":"YulFunctionCall","src":"11249:61:75"},"variableNames":[{"name":"value5","nativeSrc":"11239:6:75","nodeType":"YulIdentifier","src":"11239:6:75"}]},{"nativeSrc":"11319:49:75","nodeType":"YulVariableDeclaration","src":"11319:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11352:9:75","nodeType":"YulIdentifier","src":"11352:9:75"},{"kind":"number","nativeSrc":"11363:3:75","nodeType":"YulLiteral","src":"11363:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"11348:3:75","nodeType":"YulIdentifier","src":"11348:3:75"},"nativeSrc":"11348:19:75","nodeType":"YulFunctionCall","src":"11348:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"11335:12:75","nodeType":"YulIdentifier","src":"11335:12:75"},"nativeSrc":"11335:33:75","nodeType":"YulFunctionCall","src":"11335:33:75"},"variables":[{"name":"offset_4","nativeSrc":"11323:8:75","nodeType":"YulTypedName","src":"11323:8:75","type":""}]},{"body":{"nativeSrc":"11413:16:75","nodeType":"YulBlock","src":"11413:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11422:1:75","nodeType":"YulLiteral","src":"11422:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11425:1:75","nodeType":"YulLiteral","src":"11425:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11415:6:75","nodeType":"YulIdentifier","src":"11415:6:75"},"nativeSrc":"11415:12:75","nodeType":"YulFunctionCall","src":"11415:12:75"},"nativeSrc":"11415:12:75","nodeType":"YulExpressionStatement","src":"11415:12:75"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"11383:8:75","nodeType":"YulIdentifier","src":"11383:8:75"},{"kind":"number","nativeSrc":"11393:18:75","nodeType":"YulLiteral","src":"11393:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11380:2:75","nodeType":"YulIdentifier","src":"11380:2:75"},"nativeSrc":"11380:32:75","nodeType":"YulFunctionCall","src":"11380:32:75"},"nativeSrc":"11377:52:75","nodeType":"YulIf","src":"11377:52:75"},{"nativeSrc":"11438:71:75","nodeType":"YulAssignment","src":"11438:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11479:9:75","nodeType":"YulIdentifier","src":"11479:9:75"},{"name":"offset_4","nativeSrc":"11490:8:75","nodeType":"YulIdentifier","src":"11490:8:75"}],"functionName":{"name":"add","nativeSrc":"11475:3:75","nodeType":"YulIdentifier","src":"11475:3:75"},"nativeSrc":"11475:24:75","nodeType":"YulFunctionCall","src":"11475:24:75"},{"name":"dataEnd","nativeSrc":"11501:7:75","nodeType":"YulIdentifier","src":"11501:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"11448:26:75","nodeType":"YulIdentifier","src":"11448:26:75"},"nativeSrc":"11448:61:75","nodeType":"YulFunctionCall","src":"11448:61:75"},"variableNames":[{"name":"value6","nativeSrc":"11438:6:75","nodeType":"YulIdentifier","src":"11438:6:75"}]},{"nativeSrc":"11518:49:75","nodeType":"YulVariableDeclaration","src":"11518:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11551:9:75","nodeType":"YulIdentifier","src":"11551:9:75"},{"kind":"number","nativeSrc":"11562:3:75","nodeType":"YulLiteral","src":"11562:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"11547:3:75","nodeType":"YulIdentifier","src":"11547:3:75"},"nativeSrc":"11547:19:75","nodeType":"YulFunctionCall","src":"11547:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"11534:12:75","nodeType":"YulIdentifier","src":"11534:12:75"},"nativeSrc":"11534:33:75","nodeType":"YulFunctionCall","src":"11534:33:75"},"variables":[{"name":"offset_5","nativeSrc":"11522:8:75","nodeType":"YulTypedName","src":"11522:8:75","type":""}]},{"body":{"nativeSrc":"11612:16:75","nodeType":"YulBlock","src":"11612:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11621:1:75","nodeType":"YulLiteral","src":"11621:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11624:1:75","nodeType":"YulLiteral","src":"11624:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11614:6:75","nodeType":"YulIdentifier","src":"11614:6:75"},"nativeSrc":"11614:12:75","nodeType":"YulFunctionCall","src":"11614:12:75"},"nativeSrc":"11614:12:75","nodeType":"YulExpressionStatement","src":"11614:12:75"}]},"condition":{"arguments":[{"name":"offset_5","nativeSrc":"11582:8:75","nodeType":"YulIdentifier","src":"11582:8:75"},{"kind":"number","nativeSrc":"11592:18:75","nodeType":"YulLiteral","src":"11592:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11579:2:75","nodeType":"YulIdentifier","src":"11579:2:75"},"nativeSrc":"11579:32:75","nodeType":"YulFunctionCall","src":"11579:32:75"},"nativeSrc":"11576:52:75","nodeType":"YulIf","src":"11576:52:75"},{"nativeSrc":"11637:71:75","nodeType":"YulAssignment","src":"11637:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11678:9:75","nodeType":"YulIdentifier","src":"11678:9:75"},{"name":"offset_5","nativeSrc":"11689:8:75","nodeType":"YulIdentifier","src":"11689:8:75"}],"functionName":{"name":"add","nativeSrc":"11674:3:75","nodeType":"YulIdentifier","src":"11674:3:75"},"nativeSrc":"11674:24:75","nodeType":"YulFunctionCall","src":"11674:24:75"},{"name":"dataEnd","nativeSrc":"11700:7:75","nodeType":"YulIdentifier","src":"11700:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"11647:26:75","nodeType":"YulIdentifier","src":"11647:26:75"},"nativeSrc":"11647:61:75","nodeType":"YulFunctionCall","src":"11647:61:75"},"variableNames":[{"name":"value7","nativeSrc":"11637:6:75","nodeType":"YulIdentifier","src":"11637:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"10001:1713:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10265:9:75","nodeType":"YulTypedName","src":"10265:9:75","type":""},{"name":"dataEnd","nativeSrc":"10276:7:75","nodeType":"YulTypedName","src":"10276:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10288:6:75","nodeType":"YulTypedName","src":"10288:6:75","type":""},{"name":"value1","nativeSrc":"10296:6:75","nodeType":"YulTypedName","src":"10296:6:75","type":""},{"name":"value2","nativeSrc":"10304:6:75","nodeType":"YulTypedName","src":"10304:6:75","type":""},{"name":"value3","nativeSrc":"10312:6:75","nodeType":"YulTypedName","src":"10312:6:75","type":""},{"name":"value4","nativeSrc":"10320:6:75","nodeType":"YulTypedName","src":"10320:6:75","type":""},{"name":"value5","nativeSrc":"10328:6:75","nodeType":"YulTypedName","src":"10328:6:75","type":""},{"name":"value6","nativeSrc":"10336:6:75","nodeType":"YulTypedName","src":"10336:6:75","type":""},{"name":"value7","nativeSrc":"10344:6:75","nodeType":"YulTypedName","src":"10344:6:75","type":""}],"src":"10001:1713:75"},{"body":{"nativeSrc":"11806:280:75","nodeType":"YulBlock","src":"11806:280:75","statements":[{"body":{"nativeSrc":"11852:16:75","nodeType":"YulBlock","src":"11852:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11861:1:75","nodeType":"YulLiteral","src":"11861:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11864:1:75","nodeType":"YulLiteral","src":"11864:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11854:6:75","nodeType":"YulIdentifier","src":"11854:6:75"},"nativeSrc":"11854:12:75","nodeType":"YulFunctionCall","src":"11854:12:75"},"nativeSrc":"11854:12:75","nodeType":"YulExpressionStatement","src":"11854:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11827:7:75","nodeType":"YulIdentifier","src":"11827:7:75"},{"name":"headStart","nativeSrc":"11836:9:75","nodeType":"YulIdentifier","src":"11836:9:75"}],"functionName":{"name":"sub","nativeSrc":"11823:3:75","nodeType":"YulIdentifier","src":"11823:3:75"},"nativeSrc":"11823:23:75","nodeType":"YulFunctionCall","src":"11823:23:75"},{"kind":"number","nativeSrc":"11848:2:75","nodeType":"YulLiteral","src":"11848:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"11819:3:75","nodeType":"YulIdentifier","src":"11819:3:75"},"nativeSrc":"11819:32:75","nodeType":"YulFunctionCall","src":"11819:32:75"},"nativeSrc":"11816:52:75","nodeType":"YulIf","src":"11816:52:75"},{"nativeSrc":"11877:14:75","nodeType":"YulVariableDeclaration","src":"11877:14:75","value":{"kind":"number","nativeSrc":"11890:1:75","nodeType":"YulLiteral","src":"11890:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11881:5:75","nodeType":"YulTypedName","src":"11881:5:75","type":""}]},{"nativeSrc":"11900:32:75","nodeType":"YulAssignment","src":"11900:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11922:9:75","nodeType":"YulIdentifier","src":"11922:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"11909:12:75","nodeType":"YulIdentifier","src":"11909:12:75"},"nativeSrc":"11909:23:75","nodeType":"YulFunctionCall","src":"11909:23:75"},"variableNames":[{"name":"value","nativeSrc":"11900:5:75","nodeType":"YulIdentifier","src":"11900:5:75"}]},{"nativeSrc":"11941:15:75","nodeType":"YulAssignment","src":"11941:15:75","value":{"name":"value","nativeSrc":"11951:5:75","nodeType":"YulIdentifier","src":"11951:5:75"},"variableNames":[{"name":"value0","nativeSrc":"11941:6:75","nodeType":"YulIdentifier","src":"11941:6:75"}]},{"nativeSrc":"11965:47:75","nodeType":"YulVariableDeclaration","src":"11965:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11997:9:75","nodeType":"YulIdentifier","src":"11997:9:75"},{"kind":"number","nativeSrc":"12008:2:75","nodeType":"YulLiteral","src":"12008:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11993:3:75","nodeType":"YulIdentifier","src":"11993:3:75"},"nativeSrc":"11993:18:75","nodeType":"YulFunctionCall","src":"11993:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"11980:12:75","nodeType":"YulIdentifier","src":"11980:12:75"},"nativeSrc":"11980:32:75","nodeType":"YulFunctionCall","src":"11980:32:75"},"variables":[{"name":"value_1","nativeSrc":"11969:7:75","nodeType":"YulTypedName","src":"11969:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"12046:7:75","nodeType":"YulIdentifier","src":"12046:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"12021:24:75","nodeType":"YulIdentifier","src":"12021:24:75"},"nativeSrc":"12021:33:75","nodeType":"YulFunctionCall","src":"12021:33:75"},"nativeSrc":"12021:33:75","nodeType":"YulExpressionStatement","src":"12021:33:75"},{"nativeSrc":"12063:17:75","nodeType":"YulAssignment","src":"12063:17:75","value":{"name":"value_1","nativeSrc":"12073:7:75","nodeType":"YulIdentifier","src":"12073:7:75"},"variableNames":[{"name":"value1","nativeSrc":"12063:6:75","nodeType":"YulIdentifier","src":"12063:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"11719:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11764:9:75","nodeType":"YulTypedName","src":"11764:9:75","type":""},{"name":"dataEnd","nativeSrc":"11775:7:75","nodeType":"YulTypedName","src":"11775:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11787:6:75","nodeType":"YulTypedName","src":"11787:6:75","type":""},{"name":"value1","nativeSrc":"11795:6:75","nodeType":"YulTypedName","src":"11795:6:75","type":""}],"src":"11719:367:75"},{"body":{"nativeSrc":"12137:114:75","nodeType":"YulBlock","src":"12137:114:75","statements":[{"nativeSrc":"12147:29:75","nodeType":"YulAssignment","src":"12147:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"12169:6:75","nodeType":"YulIdentifier","src":"12169:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"12156:12:75","nodeType":"YulIdentifier","src":"12156:12:75"},"nativeSrc":"12156:20:75","nodeType":"YulFunctionCall","src":"12156:20:75"},"variableNames":[{"name":"value","nativeSrc":"12147:5:75","nodeType":"YulIdentifier","src":"12147:5:75"}]},{"body":{"nativeSrc":"12229:16:75","nodeType":"YulBlock","src":"12229:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12238:1:75","nodeType":"YulLiteral","src":"12238:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12241:1:75","nodeType":"YulLiteral","src":"12241:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12231:6:75","nodeType":"YulIdentifier","src":"12231:6:75"},"nativeSrc":"12231:12:75","nodeType":"YulFunctionCall","src":"12231:12:75"},"nativeSrc":"12231:12:75","nodeType":"YulExpressionStatement","src":"12231:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"12198:5:75","nodeType":"YulIdentifier","src":"12198:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"12219:5:75","nodeType":"YulIdentifier","src":"12219:5:75"}],"functionName":{"name":"iszero","nativeSrc":"12212:6:75","nodeType":"YulIdentifier","src":"12212:6:75"},"nativeSrc":"12212:13:75","nodeType":"YulFunctionCall","src":"12212:13:75"}],"functionName":{"name":"iszero","nativeSrc":"12205:6:75","nodeType":"YulIdentifier","src":"12205:6:75"},"nativeSrc":"12205:21:75","nodeType":"YulFunctionCall","src":"12205:21:75"}],"functionName":{"name":"eq","nativeSrc":"12195:2:75","nodeType":"YulIdentifier","src":"12195:2:75"},"nativeSrc":"12195:32:75","nodeType":"YulFunctionCall","src":"12195:32:75"}],"functionName":{"name":"iszero","nativeSrc":"12188:6:75","nodeType":"YulIdentifier","src":"12188:6:75"},"nativeSrc":"12188:40:75","nodeType":"YulFunctionCall","src":"12188:40:75"},"nativeSrc":"12185:60:75","nodeType":"YulIf","src":"12185:60:75"}]},"name":"abi_decode_bool","nativeSrc":"12091:160:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"12116:6:75","nodeType":"YulTypedName","src":"12116:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"12127:5:75","nodeType":"YulTypedName","src":"12127:5:75","type":""}],"src":"12091:160:75"},{"body":{"nativeSrc":"12406:469:75","nodeType":"YulBlock","src":"12406:469:75","statements":[{"body":{"nativeSrc":"12453:16:75","nodeType":"YulBlock","src":"12453:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12462:1:75","nodeType":"YulLiteral","src":"12462:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12465:1:75","nodeType":"YulLiteral","src":"12465:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12455:6:75","nodeType":"YulIdentifier","src":"12455:6:75"},"nativeSrc":"12455:12:75","nodeType":"YulFunctionCall","src":"12455:12:75"},"nativeSrc":"12455:12:75","nodeType":"YulExpressionStatement","src":"12455:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12427:7:75","nodeType":"YulIdentifier","src":"12427:7:75"},{"name":"headStart","nativeSrc":"12436:9:75","nodeType":"YulIdentifier","src":"12436:9:75"}],"functionName":{"name":"sub","nativeSrc":"12423:3:75","nodeType":"YulIdentifier","src":"12423:3:75"},"nativeSrc":"12423:23:75","nodeType":"YulFunctionCall","src":"12423:23:75"},{"kind":"number","nativeSrc":"12448:3:75","nodeType":"YulLiteral","src":"12448:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"12419:3:75","nodeType":"YulIdentifier","src":"12419:3:75"},"nativeSrc":"12419:33:75","nodeType":"YulFunctionCall","src":"12419:33:75"},"nativeSrc":"12416:53:75","nodeType":"YulIf","src":"12416:53:75"},{"nativeSrc":"12478:37:75","nodeType":"YulAssignment","src":"12478:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12505:9:75","nodeType":"YulIdentifier","src":"12505:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"12488:16:75","nodeType":"YulIdentifier","src":"12488:16:75"},"nativeSrc":"12488:27:75","nodeType":"YulFunctionCall","src":"12488:27:75"},"variableNames":[{"name":"value0","nativeSrc":"12478:6:75","nodeType":"YulIdentifier","src":"12478:6:75"}]},{"nativeSrc":"12524:45:75","nodeType":"YulVariableDeclaration","src":"12524:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12554:9:75","nodeType":"YulIdentifier","src":"12554:9:75"},{"kind":"number","nativeSrc":"12565:2:75","nodeType":"YulLiteral","src":"12565:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12550:3:75","nodeType":"YulIdentifier","src":"12550:3:75"},"nativeSrc":"12550:18:75","nodeType":"YulFunctionCall","src":"12550:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"12537:12:75","nodeType":"YulIdentifier","src":"12537:12:75"},"nativeSrc":"12537:32:75","nodeType":"YulFunctionCall","src":"12537:32:75"},"variables":[{"name":"value","nativeSrc":"12528:5:75","nodeType":"YulTypedName","src":"12528:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12603:5:75","nodeType":"YulIdentifier","src":"12603:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"12578:24:75","nodeType":"YulIdentifier","src":"12578:24:75"},"nativeSrc":"12578:31:75","nodeType":"YulFunctionCall","src":"12578:31:75"},"nativeSrc":"12578:31:75","nodeType":"YulExpressionStatement","src":"12578:31:75"},{"nativeSrc":"12618:15:75","nodeType":"YulAssignment","src":"12618:15:75","value":{"name":"value","nativeSrc":"12628:5:75","nodeType":"YulIdentifier","src":"12628:5:75"},"variableNames":[{"name":"value1","nativeSrc":"12618:6:75","nodeType":"YulIdentifier","src":"12618:6:75"}]},{"nativeSrc":"12642:46:75","nodeType":"YulVariableDeclaration","src":"12642:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12673:9:75","nodeType":"YulIdentifier","src":"12673:9:75"},{"kind":"number","nativeSrc":"12684:2:75","nodeType":"YulLiteral","src":"12684:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12669:3:75","nodeType":"YulIdentifier","src":"12669:3:75"},"nativeSrc":"12669:18:75","nodeType":"YulFunctionCall","src":"12669:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"12656:12:75","nodeType":"YulIdentifier","src":"12656:12:75"},"nativeSrc":"12656:32:75","nodeType":"YulFunctionCall","src":"12656:32:75"},"variables":[{"name":"offset","nativeSrc":"12646:6:75","nodeType":"YulTypedName","src":"12646:6:75","type":""}]},{"body":{"nativeSrc":"12731:16:75","nodeType":"YulBlock","src":"12731:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12740:1:75","nodeType":"YulLiteral","src":"12740:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12743:1:75","nodeType":"YulLiteral","src":"12743:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12733:6:75","nodeType":"YulIdentifier","src":"12733:6:75"},"nativeSrc":"12733:12:75","nodeType":"YulFunctionCall","src":"12733:12:75"},"nativeSrc":"12733:12:75","nodeType":"YulExpressionStatement","src":"12733:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12703:6:75","nodeType":"YulIdentifier","src":"12703:6:75"},{"kind":"number","nativeSrc":"12711:18:75","nodeType":"YulLiteral","src":"12711:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12700:2:75","nodeType":"YulIdentifier","src":"12700:2:75"},"nativeSrc":"12700:30:75","nodeType":"YulFunctionCall","src":"12700:30:75"},"nativeSrc":"12697:50:75","nodeType":"YulIf","src":"12697:50:75"},{"nativeSrc":"12756:59:75","nodeType":"YulAssignment","src":"12756:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12787:9:75","nodeType":"YulIdentifier","src":"12787:9:75"},{"name":"offset","nativeSrc":"12798:6:75","nodeType":"YulIdentifier","src":"12798:6:75"}],"functionName":{"name":"add","nativeSrc":"12783:3:75","nodeType":"YulIdentifier","src":"12783:3:75"},"nativeSrc":"12783:22:75","nodeType":"YulFunctionCall","src":"12783:22:75"},{"name":"dataEnd","nativeSrc":"12807:7:75","nodeType":"YulIdentifier","src":"12807:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"12766:16:75","nodeType":"YulIdentifier","src":"12766:16:75"},"nativeSrc":"12766:49:75","nodeType":"YulFunctionCall","src":"12766:49:75"},"variableNames":[{"name":"value2","nativeSrc":"12756:6:75","nodeType":"YulIdentifier","src":"12756:6:75"}]},{"nativeSrc":"12824:45:75","nodeType":"YulAssignment","src":"12824:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12854:9:75","nodeType":"YulIdentifier","src":"12854:9:75"},{"kind":"number","nativeSrc":"12865:2:75","nodeType":"YulLiteral","src":"12865:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12850:3:75","nodeType":"YulIdentifier","src":"12850:3:75"},"nativeSrc":"12850:18:75","nodeType":"YulFunctionCall","src":"12850:18:75"}],"functionName":{"name":"abi_decode_bool","nativeSrc":"12834:15:75","nodeType":"YulIdentifier","src":"12834:15:75"},"nativeSrc":"12834:35:75","nodeType":"YulFunctionCall","src":"12834:35:75"},"variableNames":[{"name":"value3","nativeSrc":"12824:6:75","nodeType":"YulIdentifier","src":"12824:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool","nativeSrc":"12256:619:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12348:9:75","nodeType":"YulTypedName","src":"12348:9:75","type":""},{"name":"dataEnd","nativeSrc":"12359:7:75","nodeType":"YulTypedName","src":"12359:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12371:6:75","nodeType":"YulTypedName","src":"12371:6:75","type":""},{"name":"value1","nativeSrc":"12379:6:75","nodeType":"YulTypedName","src":"12379:6:75","type":""},{"name":"value2","nativeSrc":"12387:6:75","nodeType":"YulTypedName","src":"12387:6:75","type":""},{"name":"value3","nativeSrc":"12395:6:75","nodeType":"YulTypedName","src":"12395:6:75","type":""}],"src":"12256:619:75"},{"body":{"nativeSrc":"13001:359:75","nodeType":"YulBlock","src":"13001:359:75","statements":[{"body":{"nativeSrc":"13047:16:75","nodeType":"YulBlock","src":"13047:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13056:1:75","nodeType":"YulLiteral","src":"13056:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13059:1:75","nodeType":"YulLiteral","src":"13059:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13049:6:75","nodeType":"YulIdentifier","src":"13049:6:75"},"nativeSrc":"13049:12:75","nodeType":"YulFunctionCall","src":"13049:12:75"},"nativeSrc":"13049:12:75","nodeType":"YulExpressionStatement","src":"13049:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13022:7:75","nodeType":"YulIdentifier","src":"13022:7:75"},{"name":"headStart","nativeSrc":"13031:9:75","nodeType":"YulIdentifier","src":"13031:9:75"}],"functionName":{"name":"sub","nativeSrc":"13018:3:75","nodeType":"YulIdentifier","src":"13018:3:75"},"nativeSrc":"13018:23:75","nodeType":"YulFunctionCall","src":"13018:23:75"},{"kind":"number","nativeSrc":"13043:2:75","nodeType":"YulLiteral","src":"13043:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13014:3:75","nodeType":"YulIdentifier","src":"13014:3:75"},"nativeSrc":"13014:32:75","nodeType":"YulFunctionCall","src":"13014:32:75"},"nativeSrc":"13011:52:75","nodeType":"YulIf","src":"13011:52:75"},{"nativeSrc":"13072:36:75","nodeType":"YulVariableDeclaration","src":"13072:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13098:9:75","nodeType":"YulIdentifier","src":"13098:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"13085:12:75","nodeType":"YulIdentifier","src":"13085:12:75"},"nativeSrc":"13085:23:75","nodeType":"YulFunctionCall","src":"13085:23:75"},"variables":[{"name":"value","nativeSrc":"13076:5:75","nodeType":"YulTypedName","src":"13076:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13142:5:75","nodeType":"YulIdentifier","src":"13142:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13117:24:75","nodeType":"YulIdentifier","src":"13117:24:75"},"nativeSrc":"13117:31:75","nodeType":"YulFunctionCall","src":"13117:31:75"},"nativeSrc":"13117:31:75","nodeType":"YulExpressionStatement","src":"13117:31:75"},{"nativeSrc":"13157:15:75","nodeType":"YulAssignment","src":"13157:15:75","value":{"name":"value","nativeSrc":"13167:5:75","nodeType":"YulIdentifier","src":"13167:5:75"},"variableNames":[{"name":"value0","nativeSrc":"13157:6:75","nodeType":"YulIdentifier","src":"13157:6:75"}]},{"nativeSrc":"13181:46:75","nodeType":"YulVariableDeclaration","src":"13181:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13212:9:75","nodeType":"YulIdentifier","src":"13212:9:75"},{"kind":"number","nativeSrc":"13223:2:75","nodeType":"YulLiteral","src":"13223:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13208:3:75","nodeType":"YulIdentifier","src":"13208:3:75"},"nativeSrc":"13208:18:75","nodeType":"YulFunctionCall","src":"13208:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"13195:12:75","nodeType":"YulIdentifier","src":"13195:12:75"},"nativeSrc":"13195:32:75","nodeType":"YulFunctionCall","src":"13195:32:75"},"variables":[{"name":"offset","nativeSrc":"13185:6:75","nodeType":"YulTypedName","src":"13185:6:75","type":""}]},{"body":{"nativeSrc":"13270:16:75","nodeType":"YulBlock","src":"13270:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13279:1:75","nodeType":"YulLiteral","src":"13279:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13282:1:75","nodeType":"YulLiteral","src":"13282:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13272:6:75","nodeType":"YulIdentifier","src":"13272:6:75"},"nativeSrc":"13272:12:75","nodeType":"YulFunctionCall","src":"13272:12:75"},"nativeSrc":"13272:12:75","nodeType":"YulExpressionStatement","src":"13272:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13242:6:75","nodeType":"YulIdentifier","src":"13242:6:75"},{"kind":"number","nativeSrc":"13250:18:75","nodeType":"YulLiteral","src":"13250:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13239:2:75","nodeType":"YulIdentifier","src":"13239:2:75"},"nativeSrc":"13239:30:75","nodeType":"YulFunctionCall","src":"13239:30:75"},"nativeSrc":"13236:50:75","nodeType":"YulIf","src":"13236:50:75"},{"nativeSrc":"13295:59:75","nodeType":"YulAssignment","src":"13295:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13326:9:75","nodeType":"YulIdentifier","src":"13326:9:75"},{"name":"offset","nativeSrc":"13337:6:75","nodeType":"YulIdentifier","src":"13337:6:75"}],"functionName":{"name":"add","nativeSrc":"13322:3:75","nodeType":"YulIdentifier","src":"13322:3:75"},"nativeSrc":"13322:22:75","nodeType":"YulFunctionCall","src":"13322:22:75"},{"name":"dataEnd","nativeSrc":"13346:7:75","nodeType":"YulIdentifier","src":"13346:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13305:16:75","nodeType":"YulIdentifier","src":"13305:16:75"},"nativeSrc":"13305:49:75","nodeType":"YulFunctionCall","src":"13305:49:75"},"variableNames":[{"name":"value1","nativeSrc":"13295:6:75","nodeType":"YulIdentifier","src":"13295:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr","nativeSrc":"12880:480:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12959:9:75","nodeType":"YulTypedName","src":"12959:9:75","type":""},{"name":"dataEnd","nativeSrc":"12970:7:75","nodeType":"YulTypedName","src":"12970:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12982:6:75","nodeType":"YulTypedName","src":"12982:6:75","type":""},{"name":"value1","nativeSrc":"12990:6:75","nodeType":"YulTypedName","src":"12990:6:75","type":""}],"src":"12880:480:75"},{"body":{"nativeSrc":"13458:251:75","nodeType":"YulBlock","src":"13458:251:75","statements":[{"body":{"nativeSrc":"13504:16:75","nodeType":"YulBlock","src":"13504:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13513:1:75","nodeType":"YulLiteral","src":"13513:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13516:1:75","nodeType":"YulLiteral","src":"13516:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13506:6:75","nodeType":"YulIdentifier","src":"13506:6:75"},"nativeSrc":"13506:12:75","nodeType":"YulFunctionCall","src":"13506:12:75"},"nativeSrc":"13506:12:75","nodeType":"YulExpressionStatement","src":"13506:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13479:7:75","nodeType":"YulIdentifier","src":"13479:7:75"},{"name":"headStart","nativeSrc":"13488:9:75","nodeType":"YulIdentifier","src":"13488:9:75"}],"functionName":{"name":"sub","nativeSrc":"13475:3:75","nodeType":"YulIdentifier","src":"13475:3:75"},"nativeSrc":"13475:23:75","nodeType":"YulFunctionCall","src":"13475:23:75"},{"kind":"number","nativeSrc":"13500:2:75","nodeType":"YulLiteral","src":"13500:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13471:3:75","nodeType":"YulIdentifier","src":"13471:3:75"},"nativeSrc":"13471:32:75","nodeType":"YulFunctionCall","src":"13471:32:75"},"nativeSrc":"13468:52:75","nodeType":"YulIf","src":"13468:52:75"},{"nativeSrc":"13529:37:75","nodeType":"YulVariableDeclaration","src":"13529:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13556:9:75","nodeType":"YulIdentifier","src":"13556:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"13543:12:75","nodeType":"YulIdentifier","src":"13543:12:75"},"nativeSrc":"13543:23:75","nodeType":"YulFunctionCall","src":"13543:23:75"},"variables":[{"name":"offset","nativeSrc":"13533:6:75","nodeType":"YulTypedName","src":"13533:6:75","type":""}]},{"body":{"nativeSrc":"13609:16:75","nodeType":"YulBlock","src":"13609:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13618:1:75","nodeType":"YulLiteral","src":"13618:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13621:1:75","nodeType":"YulLiteral","src":"13621:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13611:6:75","nodeType":"YulIdentifier","src":"13611:6:75"},"nativeSrc":"13611:12:75","nodeType":"YulFunctionCall","src":"13611:12:75"},"nativeSrc":"13611:12:75","nodeType":"YulExpressionStatement","src":"13611:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13581:6:75","nodeType":"YulIdentifier","src":"13581:6:75"},{"kind":"number","nativeSrc":"13589:18:75","nodeType":"YulLiteral","src":"13589:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13578:2:75","nodeType":"YulIdentifier","src":"13578:2:75"},"nativeSrc":"13578:30:75","nodeType":"YulFunctionCall","src":"13578:30:75"},"nativeSrc":"13575:50:75","nodeType":"YulIf","src":"13575:50:75"},{"nativeSrc":"13634:69:75","nodeType":"YulAssignment","src":"13634:69:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13675:9:75","nodeType":"YulIdentifier","src":"13675:9:75"},{"name":"offset","nativeSrc":"13686:6:75","nodeType":"YulIdentifier","src":"13686:6:75"}],"functionName":{"name":"add","nativeSrc":"13671:3:75","nodeType":"YulIdentifier","src":"13671:3:75"},"nativeSrc":"13671:22:75","nodeType":"YulFunctionCall","src":"13671:22:75"},{"name":"dataEnd","nativeSrc":"13695:7:75","nodeType":"YulIdentifier","src":"13695:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"13644:26:75","nodeType":"YulIdentifier","src":"13644:26:75"},"nativeSrc":"13644:59:75","nodeType":"YulFunctionCall","src":"13644:59:75"},"variableNames":[{"name":"value0","nativeSrc":"13634:6:75","nodeType":"YulIdentifier","src":"13634:6:75"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"13365:344:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13424:9:75","nodeType":"YulTypedName","src":"13424:9:75","type":""},{"name":"dataEnd","nativeSrc":"13435:7:75","nodeType":"YulTypedName","src":"13435:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13447:6:75","nodeType":"YulTypedName","src":"13447:6:75","type":""}],"src":"13365:344:75"},{"body":{"nativeSrc":"13796:168:75","nodeType":"YulBlock","src":"13796:168:75","statements":[{"body":{"nativeSrc":"13842:16:75","nodeType":"YulBlock","src":"13842:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13851:1:75","nodeType":"YulLiteral","src":"13851:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13854:1:75","nodeType":"YulLiteral","src":"13854:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13844:6:75","nodeType":"YulIdentifier","src":"13844:6:75"},"nativeSrc":"13844:12:75","nodeType":"YulFunctionCall","src":"13844:12:75"},"nativeSrc":"13844:12:75","nodeType":"YulExpressionStatement","src":"13844:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13817:7:75","nodeType":"YulIdentifier","src":"13817:7:75"},{"name":"headStart","nativeSrc":"13826:9:75","nodeType":"YulIdentifier","src":"13826:9:75"}],"functionName":{"name":"sub","nativeSrc":"13813:3:75","nodeType":"YulIdentifier","src":"13813:3:75"},"nativeSrc":"13813:23:75","nodeType":"YulFunctionCall","src":"13813:23:75"},{"kind":"number","nativeSrc":"13838:2:75","nodeType":"YulLiteral","src":"13838:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13809:3:75","nodeType":"YulIdentifier","src":"13809:3:75"},"nativeSrc":"13809:32:75","nodeType":"YulFunctionCall","src":"13809:32:75"},"nativeSrc":"13806:52:75","nodeType":"YulIf","src":"13806:52:75"},{"nativeSrc":"13867:37:75","nodeType":"YulAssignment","src":"13867:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13894:9:75","nodeType":"YulIdentifier","src":"13894:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"13877:16:75","nodeType":"YulIdentifier","src":"13877:16:75"},"nativeSrc":"13877:27:75","nodeType":"YulFunctionCall","src":"13877:27:75"},"variableNames":[{"name":"value0","nativeSrc":"13867:6:75","nodeType":"YulIdentifier","src":"13867:6:75"}]},{"nativeSrc":"13913:45:75","nodeType":"YulAssignment","src":"13913:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13943:9:75","nodeType":"YulIdentifier","src":"13943:9:75"},{"kind":"number","nativeSrc":"13954:2:75","nodeType":"YulLiteral","src":"13954:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13939:3:75","nodeType":"YulIdentifier","src":"13939:3:75"},"nativeSrc":"13939:18:75","nodeType":"YulFunctionCall","src":"13939:18:75"}],"functionName":{"name":"abi_decode_bool","nativeSrc":"13923:15:75","nodeType":"YulIdentifier","src":"13923:15:75"},"nativeSrc":"13923:35:75","nodeType":"YulFunctionCall","src":"13923:35:75"},"variableNames":[{"name":"value1","nativeSrc":"13913:6:75","nodeType":"YulIdentifier","src":"13913:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bool","nativeSrc":"13714:250:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13754:9:75","nodeType":"YulTypedName","src":"13754:9:75","type":""},{"name":"dataEnd","nativeSrc":"13765:7:75","nodeType":"YulTypedName","src":"13765:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13777:6:75","nodeType":"YulTypedName","src":"13777:6:75","type":""},{"name":"value1","nativeSrc":"13785:6:75","nodeType":"YulTypedName","src":"13785:6:75","type":""}],"src":"13714:250:75"},{"body":{"nativeSrc":"14073:404:75","nodeType":"YulBlock","src":"14073:404:75","statements":[{"body":{"nativeSrc":"14119:16:75","nodeType":"YulBlock","src":"14119:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14128:1:75","nodeType":"YulLiteral","src":"14128:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14131:1:75","nodeType":"YulLiteral","src":"14131:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14121:6:75","nodeType":"YulIdentifier","src":"14121:6:75"},"nativeSrc":"14121:12:75","nodeType":"YulFunctionCall","src":"14121:12:75"},"nativeSrc":"14121:12:75","nodeType":"YulExpressionStatement","src":"14121:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14094:7:75","nodeType":"YulIdentifier","src":"14094:7:75"},{"name":"headStart","nativeSrc":"14103:9:75","nodeType":"YulIdentifier","src":"14103:9:75"}],"functionName":{"name":"sub","nativeSrc":"14090:3:75","nodeType":"YulIdentifier","src":"14090:3:75"},"nativeSrc":"14090:23:75","nodeType":"YulFunctionCall","src":"14090:23:75"},{"kind":"number","nativeSrc":"14115:2:75","nodeType":"YulLiteral","src":"14115:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14086:3:75","nodeType":"YulIdentifier","src":"14086:3:75"},"nativeSrc":"14086:32:75","nodeType":"YulFunctionCall","src":"14086:32:75"},"nativeSrc":"14083:52:75","nodeType":"YulIf","src":"14083:52:75"},{"nativeSrc":"14144:14:75","nodeType":"YulVariableDeclaration","src":"14144:14:75","value":{"kind":"number","nativeSrc":"14157:1:75","nodeType":"YulLiteral","src":"14157:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"14148:5:75","nodeType":"YulTypedName","src":"14148:5:75","type":""}]},{"nativeSrc":"14167:32:75","nodeType":"YulAssignment","src":"14167:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14189:9:75","nodeType":"YulIdentifier","src":"14189:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"14176:12:75","nodeType":"YulIdentifier","src":"14176:12:75"},"nativeSrc":"14176:23:75","nodeType":"YulFunctionCall","src":"14176:23:75"},"variableNames":[{"name":"value","nativeSrc":"14167:5:75","nodeType":"YulIdentifier","src":"14167:5:75"}]},{"nativeSrc":"14208:15:75","nodeType":"YulAssignment","src":"14208:15:75","value":{"name":"value","nativeSrc":"14218:5:75","nodeType":"YulIdentifier","src":"14218:5:75"},"variableNames":[{"name":"value0","nativeSrc":"14208:6:75","nodeType":"YulIdentifier","src":"14208:6:75"}]},{"nativeSrc":"14232:47:75","nodeType":"YulVariableDeclaration","src":"14232:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14264:9:75","nodeType":"YulIdentifier","src":"14264:9:75"},{"kind":"number","nativeSrc":"14275:2:75","nodeType":"YulLiteral","src":"14275:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14260:3:75","nodeType":"YulIdentifier","src":"14260:3:75"},"nativeSrc":"14260:18:75","nodeType":"YulFunctionCall","src":"14260:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"14247:12:75","nodeType":"YulIdentifier","src":"14247:12:75"},"nativeSrc":"14247:32:75","nodeType":"YulFunctionCall","src":"14247:32:75"},"variables":[{"name":"value_1","nativeSrc":"14236:7:75","nodeType":"YulTypedName","src":"14236:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14313:7:75","nodeType":"YulIdentifier","src":"14313:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14288:24:75","nodeType":"YulIdentifier","src":"14288:24:75"},"nativeSrc":"14288:33:75","nodeType":"YulFunctionCall","src":"14288:33:75"},"nativeSrc":"14288:33:75","nodeType":"YulExpressionStatement","src":"14288:33:75"},{"nativeSrc":"14330:17:75","nodeType":"YulAssignment","src":"14330:17:75","value":{"name":"value_1","nativeSrc":"14340:7:75","nodeType":"YulIdentifier","src":"14340:7:75"},"variableNames":[{"name":"value1","nativeSrc":"14330:6:75","nodeType":"YulIdentifier","src":"14330:6:75"}]},{"nativeSrc":"14356:47:75","nodeType":"YulVariableDeclaration","src":"14356:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14388:9:75","nodeType":"YulIdentifier","src":"14388:9:75"},{"kind":"number","nativeSrc":"14399:2:75","nodeType":"YulLiteral","src":"14399:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14384:3:75","nodeType":"YulIdentifier","src":"14384:3:75"},"nativeSrc":"14384:18:75","nodeType":"YulFunctionCall","src":"14384:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"14371:12:75","nodeType":"YulIdentifier","src":"14371:12:75"},"nativeSrc":"14371:32:75","nodeType":"YulFunctionCall","src":"14371:32:75"},"variables":[{"name":"value_2","nativeSrc":"14360:7:75","nodeType":"YulTypedName","src":"14360:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"14437:7:75","nodeType":"YulIdentifier","src":"14437:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14412:24:75","nodeType":"YulIdentifier","src":"14412:24:75"},"nativeSrc":"14412:33:75","nodeType":"YulFunctionCall","src":"14412:33:75"},"nativeSrc":"14412:33:75","nodeType":"YulExpressionStatement","src":"14412:33:75"},{"nativeSrc":"14454:17:75","nodeType":"YulAssignment","src":"14454:17:75","value":{"name":"value_2","nativeSrc":"14464:7:75","nodeType":"YulIdentifier","src":"14464:7:75"},"variableNames":[{"name":"value2","nativeSrc":"14454:6:75","nodeType":"YulIdentifier","src":"14454:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"13969:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14023:9:75","nodeType":"YulTypedName","src":"14023:9:75","type":""},{"name":"dataEnd","nativeSrc":"14034:7:75","nodeType":"YulTypedName","src":"14034:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14046:6:75","nodeType":"YulTypedName","src":"14046:6:75","type":""},{"name":"value1","nativeSrc":"14054:6:75","nodeType":"YulTypedName","src":"14054:6:75","type":""},{"name":"value2","nativeSrc":"14062:6:75","nodeType":"YulTypedName","src":"14062:6:75","type":""}],"src":"13969:508:75"},{"body":{"nativeSrc":"14656:352:75","nodeType":"YulBlock","src":"14656:352:75","statements":[{"nativeSrc":"14666:28:75","nodeType":"YulAssignment","src":"14666:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14678:9:75","nodeType":"YulIdentifier","src":"14678:9:75"},{"kind":"number","nativeSrc":"14689:4:75","nodeType":"YulLiteral","src":"14689:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"14674:3:75","nodeType":"YulIdentifier","src":"14674:3:75"},"nativeSrc":"14674:20:75","nodeType":"YulFunctionCall","src":"14674:20:75"},"variableNames":[{"name":"tail","nativeSrc":"14666:4:75","nodeType":"YulIdentifier","src":"14666:4:75"}]},{"nativeSrc":"14703:20:75","nodeType":"YulVariableDeclaration","src":"14703:20:75","value":{"name":"headStart","nativeSrc":"14714:9:75","nodeType":"YulIdentifier","src":"14714:9:75"},"variables":[{"name":"pos","nativeSrc":"14707:3:75","nodeType":"YulTypedName","src":"14707:3:75","type":""}]},{"nativeSrc":"14732:16:75","nodeType":"YulAssignment","src":"14732:16:75","value":{"name":"headStart","nativeSrc":"14739:9:75","nodeType":"YulIdentifier","src":"14739:9:75"},"variableNames":[{"name":"pos","nativeSrc":"14732:3:75","nodeType":"YulIdentifier","src":"14732:3:75"}]},{"nativeSrc":"14757:20:75","nodeType":"YulVariableDeclaration","src":"14757:20:75","value":{"name":"value0","nativeSrc":"14771:6:75","nodeType":"YulIdentifier","src":"14771:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"14761:6:75","nodeType":"YulTypedName","src":"14761:6:75","type":""}]},{"nativeSrc":"14786:10:75","nodeType":"YulVariableDeclaration","src":"14786:10:75","value":{"kind":"number","nativeSrc":"14795:1:75","nodeType":"YulLiteral","src":"14795:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"14790:1:75","nodeType":"YulTypedName","src":"14790:1:75","type":""}]},{"body":{"nativeSrc":"14852:150:75","nodeType":"YulBlock","src":"14852:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"14873:3:75","nodeType":"YulIdentifier","src":"14873:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"14888:6:75","nodeType":"YulIdentifier","src":"14888:6:75"}],"functionName":{"name":"mload","nativeSrc":"14882:5:75","nodeType":"YulIdentifier","src":"14882:5:75"},"nativeSrc":"14882:13:75","nodeType":"YulFunctionCall","src":"14882:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14905:3:75","nodeType":"YulLiteral","src":"14905:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"14910:1:75","nodeType":"YulLiteral","src":"14910:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14901:3:75","nodeType":"YulIdentifier","src":"14901:3:75"},"nativeSrc":"14901:11:75","nodeType":"YulFunctionCall","src":"14901:11:75"},{"kind":"number","nativeSrc":"14914:1:75","nodeType":"YulLiteral","src":"14914:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"14897:3:75","nodeType":"YulIdentifier","src":"14897:3:75"},"nativeSrc":"14897:19:75","nodeType":"YulFunctionCall","src":"14897:19:75"}],"functionName":{"name":"and","nativeSrc":"14878:3:75","nodeType":"YulIdentifier","src":"14878:3:75"},"nativeSrc":"14878:39:75","nodeType":"YulFunctionCall","src":"14878:39:75"}],"functionName":{"name":"mstore","nativeSrc":"14866:6:75","nodeType":"YulIdentifier","src":"14866:6:75"},"nativeSrc":"14866:52:75","nodeType":"YulFunctionCall","src":"14866:52:75"},"nativeSrc":"14866:52:75","nodeType":"YulExpressionStatement","src":"14866:52:75"},{"nativeSrc":"14931:21:75","nodeType":"YulAssignment","src":"14931:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"14942:3:75","nodeType":"YulIdentifier","src":"14942:3:75"},{"kind":"number","nativeSrc":"14947:4:75","nodeType":"YulLiteral","src":"14947:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14938:3:75","nodeType":"YulIdentifier","src":"14938:3:75"},"nativeSrc":"14938:14:75","nodeType":"YulFunctionCall","src":"14938:14:75"},"variableNames":[{"name":"pos","nativeSrc":"14931:3:75","nodeType":"YulIdentifier","src":"14931:3:75"}]},{"nativeSrc":"14965:27:75","nodeType":"YulAssignment","src":"14965:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14979:6:75","nodeType":"YulIdentifier","src":"14979:6:75"},{"kind":"number","nativeSrc":"14987:4:75","nodeType":"YulLiteral","src":"14987:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14975:3:75","nodeType":"YulIdentifier","src":"14975:3:75"},"nativeSrc":"14975:17:75","nodeType":"YulFunctionCall","src":"14975:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"14965:6:75","nodeType":"YulIdentifier","src":"14965:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"14816:1:75","nodeType":"YulIdentifier","src":"14816:1:75"},{"kind":"number","nativeSrc":"14819:4:75","nodeType":"YulLiteral","src":"14819:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"14813:2:75","nodeType":"YulIdentifier","src":"14813:2:75"},"nativeSrc":"14813:11:75","nodeType":"YulFunctionCall","src":"14813:11:75"},"nativeSrc":"14805:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"14825:18:75","nodeType":"YulBlock","src":"14825:18:75","statements":[{"nativeSrc":"14827:14:75","nodeType":"YulAssignment","src":"14827:14:75","value":{"arguments":[{"name":"i","nativeSrc":"14836:1:75","nodeType":"YulIdentifier","src":"14836:1:75"},{"kind":"number","nativeSrc":"14839:1:75","nodeType":"YulLiteral","src":"14839:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14832:3:75","nodeType":"YulIdentifier","src":"14832:3:75"},"nativeSrc":"14832:9:75","nodeType":"YulFunctionCall","src":"14832:9:75"},"variableNames":[{"name":"i","nativeSrc":"14827:1:75","nodeType":"YulIdentifier","src":"14827:1:75"}]}]},"pre":{"nativeSrc":"14809:3:75","nodeType":"YulBlock","src":"14809:3:75","statements":[]},"src":"14805:197:75"}]},"name":"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed","nativeSrc":"14482:526:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14625:9:75","nodeType":"YulTypedName","src":"14625:9:75","type":""},{"name":"value0","nativeSrc":"14636:6:75","nodeType":"YulTypedName","src":"14636:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14647:4:75","nodeType":"YulTypedName","src":"14647:4:75","type":""}],"src":"14482:526:75"},{"body":{"nativeSrc":"15100:301:75","nodeType":"YulBlock","src":"15100:301:75","statements":[{"body":{"nativeSrc":"15146:16:75","nodeType":"YulBlock","src":"15146:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15155:1:75","nodeType":"YulLiteral","src":"15155:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15158:1:75","nodeType":"YulLiteral","src":"15158:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15148:6:75","nodeType":"YulIdentifier","src":"15148:6:75"},"nativeSrc":"15148:12:75","nodeType":"YulFunctionCall","src":"15148:12:75"},"nativeSrc":"15148:12:75","nodeType":"YulExpressionStatement","src":"15148:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15121:7:75","nodeType":"YulIdentifier","src":"15121:7:75"},{"name":"headStart","nativeSrc":"15130:9:75","nodeType":"YulIdentifier","src":"15130:9:75"}],"functionName":{"name":"sub","nativeSrc":"15117:3:75","nodeType":"YulIdentifier","src":"15117:3:75"},"nativeSrc":"15117:23:75","nodeType":"YulFunctionCall","src":"15117:23:75"},{"kind":"number","nativeSrc":"15142:2:75","nodeType":"YulLiteral","src":"15142:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"15113:3:75","nodeType":"YulIdentifier","src":"15113:3:75"},"nativeSrc":"15113:32:75","nodeType":"YulFunctionCall","src":"15113:32:75"},"nativeSrc":"15110:52:75","nodeType":"YulIf","src":"15110:52:75"},{"nativeSrc":"15171:36:75","nodeType":"YulVariableDeclaration","src":"15171:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15197:9:75","nodeType":"YulIdentifier","src":"15197:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"15184:12:75","nodeType":"YulIdentifier","src":"15184:12:75"},"nativeSrc":"15184:23:75","nodeType":"YulFunctionCall","src":"15184:23:75"},"variables":[{"name":"value","nativeSrc":"15175:5:75","nodeType":"YulTypedName","src":"15175:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"15241:5:75","nodeType":"YulIdentifier","src":"15241:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15216:24:75","nodeType":"YulIdentifier","src":"15216:24:75"},"nativeSrc":"15216:31:75","nodeType":"YulFunctionCall","src":"15216:31:75"},"nativeSrc":"15216:31:75","nodeType":"YulExpressionStatement","src":"15216:31:75"},{"nativeSrc":"15256:15:75","nodeType":"YulAssignment","src":"15256:15:75","value":{"name":"value","nativeSrc":"15266:5:75","nodeType":"YulIdentifier","src":"15266:5:75"},"variableNames":[{"name":"value0","nativeSrc":"15256:6:75","nodeType":"YulIdentifier","src":"15256:6:75"}]},{"nativeSrc":"15280:47:75","nodeType":"YulVariableDeclaration","src":"15280:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15312:9:75","nodeType":"YulIdentifier","src":"15312:9:75"},{"kind":"number","nativeSrc":"15323:2:75","nodeType":"YulLiteral","src":"15323:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15308:3:75","nodeType":"YulIdentifier","src":"15308:3:75"},"nativeSrc":"15308:18:75","nodeType":"YulFunctionCall","src":"15308:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"15295:12:75","nodeType":"YulIdentifier","src":"15295:12:75"},"nativeSrc":"15295:32:75","nodeType":"YulFunctionCall","src":"15295:32:75"},"variables":[{"name":"value_1","nativeSrc":"15284:7:75","nodeType":"YulTypedName","src":"15284:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"15361:7:75","nodeType":"YulIdentifier","src":"15361:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15336:24:75","nodeType":"YulIdentifier","src":"15336:24:75"},"nativeSrc":"15336:33:75","nodeType":"YulFunctionCall","src":"15336:33:75"},"nativeSrc":"15336:33:75","nodeType":"YulExpressionStatement","src":"15336:33:75"},{"nativeSrc":"15378:17:75","nodeType":"YulAssignment","src":"15378:17:75","value":{"name":"value_1","nativeSrc":"15388:7:75","nodeType":"YulIdentifier","src":"15388:7:75"},"variableNames":[{"name":"value1","nativeSrc":"15378:6:75","nodeType":"YulIdentifier","src":"15378:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"15013:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15058:9:75","nodeType":"YulTypedName","src":"15058:9:75","type":""},{"name":"dataEnd","nativeSrc":"15069:7:75","nodeType":"YulTypedName","src":"15069:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15081:6:75","nodeType":"YulTypedName","src":"15081:6:75","type":""},{"name":"value1","nativeSrc":"15089:6:75","nodeType":"YulTypedName","src":"15089:6:75","type":""}],"src":"15013:388:75"},{"body":{"nativeSrc":"15506:266:75","nodeType":"YulBlock","src":"15506:266:75","statements":[{"body":{"nativeSrc":"15552:16:75","nodeType":"YulBlock","src":"15552:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15561:1:75","nodeType":"YulLiteral","src":"15561:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15564:1:75","nodeType":"YulLiteral","src":"15564:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15554:6:75","nodeType":"YulIdentifier","src":"15554:6:75"},"nativeSrc":"15554:12:75","nodeType":"YulFunctionCall","src":"15554:12:75"},"nativeSrc":"15554:12:75","nodeType":"YulExpressionStatement","src":"15554:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15527:7:75","nodeType":"YulIdentifier","src":"15527:7:75"},{"name":"headStart","nativeSrc":"15536:9:75","nodeType":"YulIdentifier","src":"15536:9:75"}],"functionName":{"name":"sub","nativeSrc":"15523:3:75","nodeType":"YulIdentifier","src":"15523:3:75"},"nativeSrc":"15523:23:75","nodeType":"YulFunctionCall","src":"15523:23:75"},{"kind":"number","nativeSrc":"15548:2:75","nodeType":"YulLiteral","src":"15548:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"15519:3:75","nodeType":"YulIdentifier","src":"15519:3:75"},"nativeSrc":"15519:32:75","nodeType":"YulFunctionCall","src":"15519:32:75"},"nativeSrc":"15516:52:75","nodeType":"YulIf","src":"15516:52:75"},{"nativeSrc":"15577:37:75","nodeType":"YulAssignment","src":"15577:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15604:9:75","nodeType":"YulIdentifier","src":"15604:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"15587:16:75","nodeType":"YulIdentifier","src":"15587:16:75"},"nativeSrc":"15587:27:75","nodeType":"YulFunctionCall","src":"15587:27:75"},"variableNames":[{"name":"value0","nativeSrc":"15577:6:75","nodeType":"YulIdentifier","src":"15577:6:75"}]},{"nativeSrc":"15623:46:75","nodeType":"YulAssignment","src":"15623:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15654:9:75","nodeType":"YulIdentifier","src":"15654:9:75"},{"kind":"number","nativeSrc":"15665:2:75","nodeType":"YulLiteral","src":"15665:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15650:3:75","nodeType":"YulIdentifier","src":"15650:3:75"},"nativeSrc":"15650:18:75","nodeType":"YulFunctionCall","src":"15650:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"15633:16:75","nodeType":"YulIdentifier","src":"15633:16:75"},"nativeSrc":"15633:36:75","nodeType":"YulFunctionCall","src":"15633:36:75"},"variableNames":[{"name":"value1","nativeSrc":"15623:6:75","nodeType":"YulIdentifier","src":"15623:6:75"}]},{"nativeSrc":"15678:14:75","nodeType":"YulVariableDeclaration","src":"15678:14:75","value":{"kind":"number","nativeSrc":"15691:1:75","nodeType":"YulLiteral","src":"15691:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"15682:5:75","nodeType":"YulTypedName","src":"15682:5:75","type":""}]},{"nativeSrc":"15701:41:75","nodeType":"YulAssignment","src":"15701:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15727:9:75","nodeType":"YulIdentifier","src":"15727:9:75"},{"kind":"number","nativeSrc":"15738:2:75","nodeType":"YulLiteral","src":"15738:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15723:3:75","nodeType":"YulIdentifier","src":"15723:3:75"},"nativeSrc":"15723:18:75","nodeType":"YulFunctionCall","src":"15723:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"15710:12:75","nodeType":"YulIdentifier","src":"15710:12:75"},"nativeSrc":"15710:32:75","nodeType":"YulFunctionCall","src":"15710:32:75"},"variableNames":[{"name":"value","nativeSrc":"15701:5:75","nodeType":"YulIdentifier","src":"15701:5:75"}]},{"nativeSrc":"15751:15:75","nodeType":"YulAssignment","src":"15751:15:75","value":{"name":"value","nativeSrc":"15761:5:75","nodeType":"YulIdentifier","src":"15761:5:75"},"variableNames":[{"name":"value2","nativeSrc":"15751:6:75","nodeType":"YulIdentifier","src":"15751:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_uint256","nativeSrc":"15406:366:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15456:9:75","nodeType":"YulTypedName","src":"15456:9:75","type":""},{"name":"dataEnd","nativeSrc":"15467:7:75","nodeType":"YulTypedName","src":"15467:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15479:6:75","nodeType":"YulTypedName","src":"15479:6:75","type":""},{"name":"value1","nativeSrc":"15487:6:75","nodeType":"YulTypedName","src":"15487:6:75","type":""},{"name":"value2","nativeSrc":"15495:6:75","nodeType":"YulTypedName","src":"15495:6:75","type":""}],"src":"15406:366:75"},{"body":{"nativeSrc":"15832:325:75","nodeType":"YulBlock","src":"15832:325:75","statements":[{"nativeSrc":"15842:22:75","nodeType":"YulAssignment","src":"15842:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"15856:1:75","nodeType":"YulLiteral","src":"15856:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"15859:4:75","nodeType":"YulIdentifier","src":"15859:4:75"}],"functionName":{"name":"shr","nativeSrc":"15852:3:75","nodeType":"YulIdentifier","src":"15852:3:75"},"nativeSrc":"15852:12:75","nodeType":"YulFunctionCall","src":"15852:12:75"},"variableNames":[{"name":"length","nativeSrc":"15842:6:75","nodeType":"YulIdentifier","src":"15842:6:75"}]},{"nativeSrc":"15873:38:75","nodeType":"YulVariableDeclaration","src":"15873:38:75","value":{"arguments":[{"name":"data","nativeSrc":"15903:4:75","nodeType":"YulIdentifier","src":"15903:4:75"},{"kind":"number","nativeSrc":"15909:1:75","nodeType":"YulLiteral","src":"15909:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"15899:3:75","nodeType":"YulIdentifier","src":"15899:3:75"},"nativeSrc":"15899:12:75","nodeType":"YulFunctionCall","src":"15899:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"15877:18:75","nodeType":"YulTypedName","src":"15877:18:75","type":""}]},{"body":{"nativeSrc":"15950:31:75","nodeType":"YulBlock","src":"15950:31:75","statements":[{"nativeSrc":"15952:27:75","nodeType":"YulAssignment","src":"15952:27:75","value":{"arguments":[{"name":"length","nativeSrc":"15966:6:75","nodeType":"YulIdentifier","src":"15966:6:75"},{"kind":"number","nativeSrc":"15974:4:75","nodeType":"YulLiteral","src":"15974:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"15962:3:75","nodeType":"YulIdentifier","src":"15962:3:75"},"nativeSrc":"15962:17:75","nodeType":"YulFunctionCall","src":"15962:17:75"},"variableNames":[{"name":"length","nativeSrc":"15952:6:75","nodeType":"YulIdentifier","src":"15952:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15930:18:75","nodeType":"YulIdentifier","src":"15930:18:75"}],"functionName":{"name":"iszero","nativeSrc":"15923:6:75","nodeType":"YulIdentifier","src":"15923:6:75"},"nativeSrc":"15923:26:75","nodeType":"YulFunctionCall","src":"15923:26:75"},"nativeSrc":"15920:61:75","nodeType":"YulIf","src":"15920:61:75"},{"body":{"nativeSrc":"16040:111:75","nodeType":"YulBlock","src":"16040:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16061:1:75","nodeType":"YulLiteral","src":"16061:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16068:3:75","nodeType":"YulLiteral","src":"16068:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16073:10:75","nodeType":"YulLiteral","src":"16073:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16064:3:75","nodeType":"YulIdentifier","src":"16064:3:75"},"nativeSrc":"16064:20:75","nodeType":"YulFunctionCall","src":"16064:20:75"}],"functionName":{"name":"mstore","nativeSrc":"16054:6:75","nodeType":"YulIdentifier","src":"16054:6:75"},"nativeSrc":"16054:31:75","nodeType":"YulFunctionCall","src":"16054:31:75"},"nativeSrc":"16054:31:75","nodeType":"YulExpressionStatement","src":"16054:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16105:1:75","nodeType":"YulLiteral","src":"16105:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"16108:4:75","nodeType":"YulLiteral","src":"16108:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"16098:6:75","nodeType":"YulIdentifier","src":"16098:6:75"},"nativeSrc":"16098:15:75","nodeType":"YulFunctionCall","src":"16098:15:75"},"nativeSrc":"16098:15:75","nodeType":"YulExpressionStatement","src":"16098:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16133:1:75","nodeType":"YulLiteral","src":"16133:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16136:4:75","nodeType":"YulLiteral","src":"16136:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16126:6:75","nodeType":"YulIdentifier","src":"16126:6:75"},"nativeSrc":"16126:15:75","nodeType":"YulFunctionCall","src":"16126:15:75"},"nativeSrc":"16126:15:75","nodeType":"YulExpressionStatement","src":"16126:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"15996:18:75","nodeType":"YulIdentifier","src":"15996:18:75"},{"arguments":[{"name":"length","nativeSrc":"16019:6:75","nodeType":"YulIdentifier","src":"16019:6:75"},{"kind":"number","nativeSrc":"16027:2:75","nodeType":"YulLiteral","src":"16027:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"16016:2:75","nodeType":"YulIdentifier","src":"16016:2:75"},"nativeSrc":"16016:14:75","nodeType":"YulFunctionCall","src":"16016:14:75"}],"functionName":{"name":"eq","nativeSrc":"15993:2:75","nodeType":"YulIdentifier","src":"15993:2:75"},"nativeSrc":"15993:38:75","nodeType":"YulFunctionCall","src":"15993:38:75"},"nativeSrc":"15990:161:75","nodeType":"YulIf","src":"15990:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"15777:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"15812:4:75","nodeType":"YulTypedName","src":"15812:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"15821:6:75","nodeType":"YulTypedName","src":"15821:6:75","type":""}],"src":"15777:380:75"},{"body":{"nativeSrc":"16194:95:75","nodeType":"YulBlock","src":"16194:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16211:1:75","nodeType":"YulLiteral","src":"16211:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16218:3:75","nodeType":"YulLiteral","src":"16218:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16223:10:75","nodeType":"YulLiteral","src":"16223:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16214:3:75","nodeType":"YulIdentifier","src":"16214:3:75"},"nativeSrc":"16214:20:75","nodeType":"YulFunctionCall","src":"16214:20:75"}],"functionName":{"name":"mstore","nativeSrc":"16204:6:75","nodeType":"YulIdentifier","src":"16204:6:75"},"nativeSrc":"16204:31:75","nodeType":"YulFunctionCall","src":"16204:31:75"},"nativeSrc":"16204:31:75","nodeType":"YulExpressionStatement","src":"16204:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16251:1:75","nodeType":"YulLiteral","src":"16251:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"16254:4:75","nodeType":"YulLiteral","src":"16254:4:75","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"16244:6:75","nodeType":"YulIdentifier","src":"16244:6:75"},"nativeSrc":"16244:15:75","nodeType":"YulFunctionCall","src":"16244:15:75"},"nativeSrc":"16244:15:75","nodeType":"YulExpressionStatement","src":"16244:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16275:1:75","nodeType":"YulLiteral","src":"16275:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16278:4:75","nodeType":"YulLiteral","src":"16278:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16268:6:75","nodeType":"YulIdentifier","src":"16268:6:75"},"nativeSrc":"16268:15:75","nodeType":"YulFunctionCall","src":"16268:15:75"},"nativeSrc":"16268:15:75","nodeType":"YulExpressionStatement","src":"16268:15:75"}]},"name":"panic_error_0x32","nativeSrc":"16162:127:75","nodeType":"YulFunctionDefinition","src":"16162:127:75"},{"body":{"nativeSrc":"16326:95:75","nodeType":"YulBlock","src":"16326:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16343:1:75","nodeType":"YulLiteral","src":"16343:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16350:3:75","nodeType":"YulLiteral","src":"16350:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16355:10:75","nodeType":"YulLiteral","src":"16355:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16346:3:75","nodeType":"YulIdentifier","src":"16346:3:75"},"nativeSrc":"16346:20:75","nodeType":"YulFunctionCall","src":"16346:20:75"}],"functionName":{"name":"mstore","nativeSrc":"16336:6:75","nodeType":"YulIdentifier","src":"16336:6:75"},"nativeSrc":"16336:31:75","nodeType":"YulFunctionCall","src":"16336:31:75"},"nativeSrc":"16336:31:75","nodeType":"YulExpressionStatement","src":"16336:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16383:1:75","nodeType":"YulLiteral","src":"16383:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"16386:4:75","nodeType":"YulLiteral","src":"16386:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"16376:6:75","nodeType":"YulIdentifier","src":"16376:6:75"},"nativeSrc":"16376:15:75","nodeType":"YulFunctionCall","src":"16376:15:75"},"nativeSrc":"16376:15:75","nodeType":"YulExpressionStatement","src":"16376:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16407:1:75","nodeType":"YulLiteral","src":"16407:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16410:4:75","nodeType":"YulLiteral","src":"16410:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16400:6:75","nodeType":"YulIdentifier","src":"16400:6:75"},"nativeSrc":"16400:15:75","nodeType":"YulFunctionCall","src":"16400:15:75"},"nativeSrc":"16400:15:75","nodeType":"YulExpressionStatement","src":"16400:15:75"}]},"name":"panic_error_0x11","nativeSrc":"16294:127:75","nodeType":"YulFunctionDefinition","src":"16294:127:75"},{"body":{"nativeSrc":"16472:102:75","nodeType":"YulBlock","src":"16472:102:75","statements":[{"nativeSrc":"16482:38:75","nodeType":"YulAssignment","src":"16482:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"16497:1:75","nodeType":"YulIdentifier","src":"16497:1:75"},{"kind":"number","nativeSrc":"16500:4:75","nodeType":"YulLiteral","src":"16500:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16493:3:75","nodeType":"YulIdentifier","src":"16493:3:75"},"nativeSrc":"16493:12:75","nodeType":"YulFunctionCall","src":"16493:12:75"},{"arguments":[{"name":"y","nativeSrc":"16511:1:75","nodeType":"YulIdentifier","src":"16511:1:75"},{"kind":"number","nativeSrc":"16514:4:75","nodeType":"YulLiteral","src":"16514:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16507:3:75","nodeType":"YulIdentifier","src":"16507:3:75"},"nativeSrc":"16507:12:75","nodeType":"YulFunctionCall","src":"16507:12:75"}],"functionName":{"name":"add","nativeSrc":"16489:3:75","nodeType":"YulIdentifier","src":"16489:3:75"},"nativeSrc":"16489:31:75","nodeType":"YulFunctionCall","src":"16489:31:75"},"variableNames":[{"name":"sum","nativeSrc":"16482:3:75","nodeType":"YulIdentifier","src":"16482:3:75"}]},{"body":{"nativeSrc":"16546:22:75","nodeType":"YulBlock","src":"16546:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16548:16:75","nodeType":"YulIdentifier","src":"16548:16:75"},"nativeSrc":"16548:18:75","nodeType":"YulFunctionCall","src":"16548:18:75"},"nativeSrc":"16548:18:75","nodeType":"YulExpressionStatement","src":"16548:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"16535:3:75","nodeType":"YulIdentifier","src":"16535:3:75"},{"kind":"number","nativeSrc":"16540:4:75","nodeType":"YulLiteral","src":"16540:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"16532:2:75","nodeType":"YulIdentifier","src":"16532:2:75"},"nativeSrc":"16532:13:75","nodeType":"YulFunctionCall","src":"16532:13:75"},"nativeSrc":"16529:39:75","nodeType":"YulIf","src":"16529:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"16426:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16455:1:75","nodeType":"YulTypedName","src":"16455:1:75","type":""},{"name":"y","nativeSrc":"16458:1:75","nodeType":"YulTypedName","src":"16458:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16464:3:75","nodeType":"YulTypedName","src":"16464:3:75","type":""}],"src":"16426:148:75"},{"body":{"nativeSrc":"16660:103:75","nodeType":"YulBlock","src":"16660:103:75","statements":[{"body":{"nativeSrc":"16706:16:75","nodeType":"YulBlock","src":"16706:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16715:1:75","nodeType":"YulLiteral","src":"16715:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16718:1:75","nodeType":"YulLiteral","src":"16718:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16708:6:75","nodeType":"YulIdentifier","src":"16708:6:75"},"nativeSrc":"16708:12:75","nodeType":"YulFunctionCall","src":"16708:12:75"},"nativeSrc":"16708:12:75","nodeType":"YulExpressionStatement","src":"16708:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16681:7:75","nodeType":"YulIdentifier","src":"16681:7:75"},{"name":"headStart","nativeSrc":"16690:9:75","nodeType":"YulIdentifier","src":"16690:9:75"}],"functionName":{"name":"sub","nativeSrc":"16677:3:75","nodeType":"YulIdentifier","src":"16677:3:75"},"nativeSrc":"16677:23:75","nodeType":"YulFunctionCall","src":"16677:23:75"},{"kind":"number","nativeSrc":"16702:2:75","nodeType":"YulLiteral","src":"16702:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16673:3:75","nodeType":"YulIdentifier","src":"16673:3:75"},"nativeSrc":"16673:32:75","nodeType":"YulFunctionCall","src":"16673:32:75"},"nativeSrc":"16670:52:75","nodeType":"YulIf","src":"16670:52:75"},{"nativeSrc":"16731:26:75","nodeType":"YulAssignment","src":"16731:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16747:9:75","nodeType":"YulIdentifier","src":"16747:9:75"}],"functionName":{"name":"mload","nativeSrc":"16741:5:75","nodeType":"YulIdentifier","src":"16741:5:75"},"nativeSrc":"16741:16:75","nodeType":"YulFunctionCall","src":"16741:16:75"},"variableNames":[{"name":"value0","nativeSrc":"16731:6:75","nodeType":"YulIdentifier","src":"16731:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"16579:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16626:9:75","nodeType":"YulTypedName","src":"16626:9:75","type":""},{"name":"dataEnd","nativeSrc":"16637:7:75","nodeType":"YulTypedName","src":"16637:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16649:6:75","nodeType":"YulTypedName","src":"16649:6:75","type":""}],"src":"16579:184:75"},{"body":{"nativeSrc":"16815:88:75","nodeType":"YulBlock","src":"16815:88:75","statements":[{"body":{"nativeSrc":"16846:22:75","nodeType":"YulBlock","src":"16846:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16848:16:75","nodeType":"YulIdentifier","src":"16848:16:75"},"nativeSrc":"16848:18:75","nodeType":"YulFunctionCall","src":"16848:18:75"},"nativeSrc":"16848:18:75","nodeType":"YulExpressionStatement","src":"16848:18:75"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"16831:5:75","nodeType":"YulIdentifier","src":"16831:5:75"},{"arguments":[{"kind":"number","nativeSrc":"16842:1:75","nodeType":"YulLiteral","src":"16842:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"16838:3:75","nodeType":"YulIdentifier","src":"16838:3:75"},"nativeSrc":"16838:6:75","nodeType":"YulFunctionCall","src":"16838:6:75"}],"functionName":{"name":"eq","nativeSrc":"16828:2:75","nodeType":"YulIdentifier","src":"16828:2:75"},"nativeSrc":"16828:17:75","nodeType":"YulFunctionCall","src":"16828:17:75"},"nativeSrc":"16825:43:75","nodeType":"YulIf","src":"16825:43:75"},{"nativeSrc":"16877:20:75","nodeType":"YulAssignment","src":"16877:20:75","value":{"arguments":[{"name":"value","nativeSrc":"16888:5:75","nodeType":"YulIdentifier","src":"16888:5:75"},{"kind":"number","nativeSrc":"16895:1:75","nodeType":"YulLiteral","src":"16895:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"16884:3:75","nodeType":"YulIdentifier","src":"16884:3:75"},"nativeSrc":"16884:13:75","nodeType":"YulFunctionCall","src":"16884:13:75"},"variableNames":[{"name":"ret","nativeSrc":"16877:3:75","nodeType":"YulIdentifier","src":"16877:3:75"}]}]},"name":"increment_t_uint256","nativeSrc":"16768:135:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"16797:5:75","nodeType":"YulTypedName","src":"16797:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"16807:3:75","nodeType":"YulTypedName","src":"16807:3:75","type":""}],"src":"16768:135:75"},{"body":{"nativeSrc":"17016:101:75","nodeType":"YulBlock","src":"17016:101:75","statements":[{"nativeSrc":"17026:26:75","nodeType":"YulAssignment","src":"17026:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17038:9:75","nodeType":"YulIdentifier","src":"17038:9:75"},{"kind":"number","nativeSrc":"17049:2:75","nodeType":"YulLiteral","src":"17049:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17034:3:75","nodeType":"YulIdentifier","src":"17034:3:75"},"nativeSrc":"17034:18:75","nodeType":"YulFunctionCall","src":"17034:18:75"},"variableNames":[{"name":"tail","nativeSrc":"17026:4:75","nodeType":"YulIdentifier","src":"17026:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17068:9:75","nodeType":"YulIdentifier","src":"17068:9:75"},{"arguments":[{"name":"value0","nativeSrc":"17083:6:75","nodeType":"YulIdentifier","src":"17083:6:75"},{"kind":"number","nativeSrc":"17091:18:75","nodeType":"YulLiteral","src":"17091:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"17079:3:75","nodeType":"YulIdentifier","src":"17079:3:75"},"nativeSrc":"17079:31:75","nodeType":"YulFunctionCall","src":"17079:31:75"}],"functionName":{"name":"mstore","nativeSrc":"17061:6:75","nodeType":"YulIdentifier","src":"17061:6:75"},"nativeSrc":"17061:50:75","nodeType":"YulFunctionCall","src":"17061:50:75"},"nativeSrc":"17061:50:75","nodeType":"YulExpressionStatement","src":"17061:50:75"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"16908:209:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16985:9:75","nodeType":"YulTypedName","src":"16985:9:75","type":""},{"name":"value0","nativeSrc":"16996:6:75","nodeType":"YulTypedName","src":"16996:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17007:4:75","nodeType":"YulTypedName","src":"17007:4:75","type":""}],"src":"16908:209:75"},{"body":{"nativeSrc":"17279:188:75","nodeType":"YulBlock","src":"17279:188:75","statements":[{"nativeSrc":"17289:26:75","nodeType":"YulAssignment","src":"17289:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17301:9:75","nodeType":"YulIdentifier","src":"17301:9:75"},{"kind":"number","nativeSrc":"17312:2:75","nodeType":"YulLiteral","src":"17312:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"17297:3:75","nodeType":"YulIdentifier","src":"17297:3:75"},"nativeSrc":"17297:18:75","nodeType":"YulFunctionCall","src":"17297:18:75"},"variableNames":[{"name":"tail","nativeSrc":"17289:4:75","nodeType":"YulIdentifier","src":"17289:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17331:9:75","nodeType":"YulIdentifier","src":"17331:9:75"},{"arguments":[{"name":"value0","nativeSrc":"17346:6:75","nodeType":"YulIdentifier","src":"17346:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17362:3:75","nodeType":"YulLiteral","src":"17362:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"17367:1:75","nodeType":"YulLiteral","src":"17367:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17358:3:75","nodeType":"YulIdentifier","src":"17358:3:75"},"nativeSrc":"17358:11:75","nodeType":"YulFunctionCall","src":"17358:11:75"},{"kind":"number","nativeSrc":"17371:1:75","nodeType":"YulLiteral","src":"17371:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17354:3:75","nodeType":"YulIdentifier","src":"17354:3:75"},"nativeSrc":"17354:19:75","nodeType":"YulFunctionCall","src":"17354:19:75"}],"functionName":{"name":"and","nativeSrc":"17342:3:75","nodeType":"YulIdentifier","src":"17342:3:75"},"nativeSrc":"17342:32:75","nodeType":"YulFunctionCall","src":"17342:32:75"}],"functionName":{"name":"mstore","nativeSrc":"17324:6:75","nodeType":"YulIdentifier","src":"17324:6:75"},"nativeSrc":"17324:51:75","nodeType":"YulFunctionCall","src":"17324:51:75"},"nativeSrc":"17324:51:75","nodeType":"YulExpressionStatement","src":"17324:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17395:9:75","nodeType":"YulIdentifier","src":"17395:9:75"},{"kind":"number","nativeSrc":"17406:2:75","nodeType":"YulLiteral","src":"17406:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17391:3:75","nodeType":"YulIdentifier","src":"17391:3:75"},"nativeSrc":"17391:18:75","nodeType":"YulFunctionCall","src":"17391:18:75"},{"name":"value1","nativeSrc":"17411:6:75","nodeType":"YulIdentifier","src":"17411:6:75"}],"functionName":{"name":"mstore","nativeSrc":"17384:6:75","nodeType":"YulIdentifier","src":"17384:6:75"},"nativeSrc":"17384:34:75","nodeType":"YulFunctionCall","src":"17384:34:75"},"nativeSrc":"17384:34:75","nodeType":"YulExpressionStatement","src":"17384:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17438:9:75","nodeType":"YulIdentifier","src":"17438:9:75"},{"kind":"number","nativeSrc":"17449:2:75","nodeType":"YulLiteral","src":"17449:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17434:3:75","nodeType":"YulIdentifier","src":"17434:3:75"},"nativeSrc":"17434:18:75","nodeType":"YulFunctionCall","src":"17434:18:75"},{"name":"value2","nativeSrc":"17454:6:75","nodeType":"YulIdentifier","src":"17454:6:75"}],"functionName":{"name":"mstore","nativeSrc":"17427:6:75","nodeType":"YulIdentifier","src":"17427:6:75"},"nativeSrc":"17427:34:75","nodeType":"YulFunctionCall","src":"17427:34:75"},"nativeSrc":"17427:34:75","nodeType":"YulExpressionStatement","src":"17427:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17122:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17232:9:75","nodeType":"YulTypedName","src":"17232:9:75","type":""},{"name":"value2","nativeSrc":"17243:6:75","nodeType":"YulTypedName","src":"17243:6:75","type":""},{"name":"value1","nativeSrc":"17251:6:75","nodeType":"YulTypedName","src":"17251:6:75","type":""},{"name":"value0","nativeSrc":"17259:6:75","nodeType":"YulTypedName","src":"17259:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17270:4:75","nodeType":"YulTypedName","src":"17270:4:75","type":""}],"src":"17122:345:75"},{"body":{"nativeSrc":"17520:77:75","nodeType":"YulBlock","src":"17520:77:75","statements":[{"nativeSrc":"17530:16:75","nodeType":"YulAssignment","src":"17530:16:75","value":{"arguments":[{"name":"x","nativeSrc":"17541:1:75","nodeType":"YulIdentifier","src":"17541:1:75"},{"name":"y","nativeSrc":"17544:1:75","nodeType":"YulIdentifier","src":"17544:1:75"}],"functionName":{"name":"add","nativeSrc":"17537:3:75","nodeType":"YulIdentifier","src":"17537:3:75"},"nativeSrc":"17537:9:75","nodeType":"YulFunctionCall","src":"17537:9:75"},"variableNames":[{"name":"sum","nativeSrc":"17530:3:75","nodeType":"YulIdentifier","src":"17530:3:75"}]},{"body":{"nativeSrc":"17569:22:75","nodeType":"YulBlock","src":"17569:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17571:16:75","nodeType":"YulIdentifier","src":"17571:16:75"},"nativeSrc":"17571:18:75","nodeType":"YulFunctionCall","src":"17571:18:75"},"nativeSrc":"17571:18:75","nodeType":"YulExpressionStatement","src":"17571:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"17561:1:75","nodeType":"YulIdentifier","src":"17561:1:75"},{"name":"sum","nativeSrc":"17564:3:75","nodeType":"YulIdentifier","src":"17564:3:75"}],"functionName":{"name":"gt","nativeSrc":"17558:2:75","nodeType":"YulIdentifier","src":"17558:2:75"},"nativeSrc":"17558:10:75","nodeType":"YulFunctionCall","src":"17558:10:75"},"nativeSrc":"17555:36:75","nodeType":"YulIf","src":"17555:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"17472:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17503:1:75","nodeType":"YulTypedName","src":"17503:1:75","type":""},{"name":"y","nativeSrc":"17506:1:75","nodeType":"YulTypedName","src":"17506:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"17512:3:75","nodeType":"YulTypedName","src":"17512:3:75","type":""}],"src":"17472:125:75"},{"body":{"nativeSrc":"17671:306:75","nodeType":"YulBlock","src":"17671:306:75","statements":[{"nativeSrc":"17681:10:75","nodeType":"YulAssignment","src":"17681:10:75","value":{"kind":"number","nativeSrc":"17690:1:75","nodeType":"YulLiteral","src":"17690:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"17681:5:75","nodeType":"YulIdentifier","src":"17681:5:75"}]},{"nativeSrc":"17700:13:75","nodeType":"YulAssignment","src":"17700:13:75","value":{"name":"_base","nativeSrc":"17708:5:75","nodeType":"YulIdentifier","src":"17708:5:75"},"variableNames":[{"name":"base","nativeSrc":"17700:4:75","nodeType":"YulIdentifier","src":"17700:4:75"}]},{"body":{"nativeSrc":"17758:213:75","nodeType":"YulBlock","src":"17758:213:75","statements":[{"body":{"nativeSrc":"17800:22:75","nodeType":"YulBlock","src":"17800:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17802:16:75","nodeType":"YulIdentifier","src":"17802:16:75"},"nativeSrc":"17802:18:75","nodeType":"YulFunctionCall","src":"17802:18:75"},"nativeSrc":"17802:18:75","nodeType":"YulExpressionStatement","src":"17802:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"17778:4:75","nodeType":"YulIdentifier","src":"17778:4:75"},{"arguments":[{"name":"max","nativeSrc":"17788:3:75","nodeType":"YulIdentifier","src":"17788:3:75"},{"name":"base","nativeSrc":"17793:4:75","nodeType":"YulIdentifier","src":"17793:4:75"}],"functionName":{"name":"div","nativeSrc":"17784:3:75","nodeType":"YulIdentifier","src":"17784:3:75"},"nativeSrc":"17784:14:75","nodeType":"YulFunctionCall","src":"17784:14:75"}],"functionName":{"name":"gt","nativeSrc":"17775:2:75","nodeType":"YulIdentifier","src":"17775:2:75"},"nativeSrc":"17775:24:75","nodeType":"YulFunctionCall","src":"17775:24:75"},"nativeSrc":"17772:50:75","nodeType":"YulIf","src":"17772:50:75"},{"body":{"nativeSrc":"17855:29:75","nodeType":"YulBlock","src":"17855:29:75","statements":[{"nativeSrc":"17857:25:75","nodeType":"YulAssignment","src":"17857:25:75","value":{"arguments":[{"name":"power","nativeSrc":"17870:5:75","nodeType":"YulIdentifier","src":"17870:5:75"},{"name":"base","nativeSrc":"17877:4:75","nodeType":"YulIdentifier","src":"17877:4:75"}],"functionName":{"name":"mul","nativeSrc":"17866:3:75","nodeType":"YulIdentifier","src":"17866:3:75"},"nativeSrc":"17866:16:75","nodeType":"YulFunctionCall","src":"17866:16:75"},"variableNames":[{"name":"power","nativeSrc":"17857:5:75","nodeType":"YulIdentifier","src":"17857:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17842:8:75","nodeType":"YulIdentifier","src":"17842:8:75"},{"kind":"number","nativeSrc":"17852:1:75","nodeType":"YulLiteral","src":"17852:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"17838:3:75","nodeType":"YulIdentifier","src":"17838:3:75"},"nativeSrc":"17838:16:75","nodeType":"YulFunctionCall","src":"17838:16:75"},"nativeSrc":"17835:49:75","nodeType":"YulIf","src":"17835:49:75"},{"nativeSrc":"17897:23:75","nodeType":"YulAssignment","src":"17897:23:75","value":{"arguments":[{"name":"base","nativeSrc":"17909:4:75","nodeType":"YulIdentifier","src":"17909:4:75"},{"name":"base","nativeSrc":"17915:4:75","nodeType":"YulIdentifier","src":"17915:4:75"}],"functionName":{"name":"mul","nativeSrc":"17905:3:75","nodeType":"YulIdentifier","src":"17905:3:75"},"nativeSrc":"17905:15:75","nodeType":"YulFunctionCall","src":"17905:15:75"},"variableNames":[{"name":"base","nativeSrc":"17897:4:75","nodeType":"YulIdentifier","src":"17897:4:75"}]},{"nativeSrc":"17933:28:75","nodeType":"YulAssignment","src":"17933:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"17949:1:75","nodeType":"YulLiteral","src":"17949:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"17952:8:75","nodeType":"YulIdentifier","src":"17952:8:75"}],"functionName":{"name":"shr","nativeSrc":"17945:3:75","nodeType":"YulIdentifier","src":"17945:3:75"},"nativeSrc":"17945:16:75","nodeType":"YulFunctionCall","src":"17945:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"17933:8:75","nodeType":"YulIdentifier","src":"17933:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17733:8:75","nodeType":"YulIdentifier","src":"17733:8:75"},{"kind":"number","nativeSrc":"17743:1:75","nodeType":"YulLiteral","src":"17743:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"17730:2:75","nodeType":"YulIdentifier","src":"17730:2:75"},"nativeSrc":"17730:15:75","nodeType":"YulFunctionCall","src":"17730:15:75"},"nativeSrc":"17722:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"17746:3:75","nodeType":"YulBlock","src":"17746:3:75","statements":[]},"pre":{"nativeSrc":"17726:3:75","nodeType":"YulBlock","src":"17726:3:75","statements":[]},"src":"17722:249:75"}]},"name":"checked_exp_helper","nativeSrc":"17602:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"17630:5:75","nodeType":"YulTypedName","src":"17630:5:75","type":""},{"name":"exponent","nativeSrc":"17637:8:75","nodeType":"YulTypedName","src":"17637:8:75","type":""},{"name":"max","nativeSrc":"17647:3:75","nodeType":"YulTypedName","src":"17647:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"17655:5:75","nodeType":"YulTypedName","src":"17655:5:75","type":""},{"name":"base","nativeSrc":"17662:4:75","nodeType":"YulTypedName","src":"17662:4:75","type":""}],"src":"17602:375:75"},{"body":{"nativeSrc":"18041:843:75","nodeType":"YulBlock","src":"18041:843:75","statements":[{"body":{"nativeSrc":"18079:52:75","nodeType":"YulBlock","src":"18079:52:75","statements":[{"nativeSrc":"18093:10:75","nodeType":"YulAssignment","src":"18093:10:75","value":{"kind":"number","nativeSrc":"18102:1:75","nodeType":"YulLiteral","src":"18102:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18093:5:75","nodeType":"YulIdentifier","src":"18093:5:75"}]},{"nativeSrc":"18116:5:75","nodeType":"YulLeave","src":"18116:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18061:8:75","nodeType":"YulIdentifier","src":"18061:8:75"}],"functionName":{"name":"iszero","nativeSrc":"18054:6:75","nodeType":"YulIdentifier","src":"18054:6:75"},"nativeSrc":"18054:16:75","nodeType":"YulFunctionCall","src":"18054:16:75"},"nativeSrc":"18051:80:75","nodeType":"YulIf","src":"18051:80:75"},{"body":{"nativeSrc":"18164:52:75","nodeType":"YulBlock","src":"18164:52:75","statements":[{"nativeSrc":"18178:10:75","nodeType":"YulAssignment","src":"18178:10:75","value":{"kind":"number","nativeSrc":"18187:1:75","nodeType":"YulLiteral","src":"18187:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"18178:5:75","nodeType":"YulIdentifier","src":"18178:5:75"}]},{"nativeSrc":"18201:5:75","nodeType":"YulLeave","src":"18201:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"18150:4:75","nodeType":"YulIdentifier","src":"18150:4:75"}],"functionName":{"name":"iszero","nativeSrc":"18143:6:75","nodeType":"YulIdentifier","src":"18143:6:75"},"nativeSrc":"18143:12:75","nodeType":"YulFunctionCall","src":"18143:12:75"},"nativeSrc":"18140:76:75","nodeType":"YulIf","src":"18140:76:75"},{"cases":[{"body":{"nativeSrc":"18252:52:75","nodeType":"YulBlock","src":"18252:52:75","statements":[{"nativeSrc":"18266:10:75","nodeType":"YulAssignment","src":"18266:10:75","value":{"kind":"number","nativeSrc":"18275:1:75","nodeType":"YulLiteral","src":"18275:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"18266:5:75","nodeType":"YulIdentifier","src":"18266:5:75"}]},{"nativeSrc":"18289:5:75","nodeType":"YulLeave","src":"18289:5:75"}]},"nativeSrc":"18245:59:75","nodeType":"YulCase","src":"18245:59:75","value":{"kind":"number","nativeSrc":"18250:1:75","nodeType":"YulLiteral","src":"18250:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"18320:167:75","nodeType":"YulBlock","src":"18320:167:75","statements":[{"body":{"nativeSrc":"18355:22:75","nodeType":"YulBlock","src":"18355:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18357:16:75","nodeType":"YulIdentifier","src":"18357:16:75"},"nativeSrc":"18357:18:75","nodeType":"YulFunctionCall","src":"18357:18:75"},"nativeSrc":"18357:18:75","nodeType":"YulExpressionStatement","src":"18357:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"18340:8:75","nodeType":"YulIdentifier","src":"18340:8:75"},{"kind":"number","nativeSrc":"18350:3:75","nodeType":"YulLiteral","src":"18350:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"18337:2:75","nodeType":"YulIdentifier","src":"18337:2:75"},"nativeSrc":"18337:17:75","nodeType":"YulFunctionCall","src":"18337:17:75"},"nativeSrc":"18334:43:75","nodeType":"YulIf","src":"18334:43:75"},{"nativeSrc":"18390:25:75","nodeType":"YulAssignment","src":"18390:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"18403:8:75","nodeType":"YulIdentifier","src":"18403:8:75"},{"kind":"number","nativeSrc":"18413:1:75","nodeType":"YulLiteral","src":"18413:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18399:3:75","nodeType":"YulIdentifier","src":"18399:3:75"},"nativeSrc":"18399:16:75","nodeType":"YulFunctionCall","src":"18399:16:75"},"variableNames":[{"name":"power","nativeSrc":"18390:5:75","nodeType":"YulIdentifier","src":"18390:5:75"}]},{"nativeSrc":"18428:11:75","nodeType":"YulVariableDeclaration","src":"18428:11:75","value":{"kind":"number","nativeSrc":"18438:1:75","nodeType":"YulLiteral","src":"18438:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"18432:2:75","nodeType":"YulTypedName","src":"18432:2:75","type":""}]},{"nativeSrc":"18452:7:75","nodeType":"YulAssignment","src":"18452:7:75","value":{"kind":"number","nativeSrc":"18458:1:75","nodeType":"YulLiteral","src":"18458:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"18452:2:75","nodeType":"YulIdentifier","src":"18452:2:75"}]},{"nativeSrc":"18472:5:75","nodeType":"YulLeave","src":"18472:5:75"}]},"nativeSrc":"18313:174:75","nodeType":"YulCase","src":"18313:174:75","value":{"kind":"number","nativeSrc":"18318:1:75","nodeType":"YulLiteral","src":"18318:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"18232:4:75","nodeType":"YulIdentifier","src":"18232:4:75"},"nativeSrc":"18225:262:75","nodeType":"YulSwitch","src":"18225:262:75"},{"body":{"nativeSrc":"18585:114:75","nodeType":"YulBlock","src":"18585:114:75","statements":[{"nativeSrc":"18599:28:75","nodeType":"YulAssignment","src":"18599:28:75","value":{"arguments":[{"name":"base","nativeSrc":"18612:4:75","nodeType":"YulIdentifier","src":"18612:4:75"},{"name":"exponent","nativeSrc":"18618:8:75","nodeType":"YulIdentifier","src":"18618:8:75"}],"functionName":{"name":"exp","nativeSrc":"18608:3:75","nodeType":"YulIdentifier","src":"18608:3:75"},"nativeSrc":"18608:19:75","nodeType":"YulFunctionCall","src":"18608:19:75"},"variableNames":[{"name":"power","nativeSrc":"18599:5:75","nodeType":"YulIdentifier","src":"18599:5:75"}]},{"nativeSrc":"18640:11:75","nodeType":"YulVariableDeclaration","src":"18640:11:75","value":{"kind":"number","nativeSrc":"18650:1:75","nodeType":"YulLiteral","src":"18650:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"18644:2:75","nodeType":"YulTypedName","src":"18644:2:75","type":""}]},{"nativeSrc":"18664:7:75","nodeType":"YulAssignment","src":"18664:7:75","value":{"kind":"number","nativeSrc":"18670:1:75","nodeType":"YulLiteral","src":"18670:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"18664:2:75","nodeType":"YulIdentifier","src":"18664:2:75"}]},{"nativeSrc":"18684:5:75","nodeType":"YulLeave","src":"18684:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"18509:4:75","nodeType":"YulIdentifier","src":"18509:4:75"},{"kind":"number","nativeSrc":"18515:2:75","nodeType":"YulLiteral","src":"18515:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"18506:2:75","nodeType":"YulIdentifier","src":"18506:2:75"},"nativeSrc":"18506:12:75","nodeType":"YulFunctionCall","src":"18506:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"18523:8:75","nodeType":"YulIdentifier","src":"18523:8:75"},{"kind":"number","nativeSrc":"18533:2:75","nodeType":"YulLiteral","src":"18533:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"18520:2:75","nodeType":"YulIdentifier","src":"18520:2:75"},"nativeSrc":"18520:16:75","nodeType":"YulFunctionCall","src":"18520:16:75"}],"functionName":{"name":"and","nativeSrc":"18502:3:75","nodeType":"YulIdentifier","src":"18502:3:75"},"nativeSrc":"18502:35:75","nodeType":"YulFunctionCall","src":"18502:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"18546:4:75","nodeType":"YulIdentifier","src":"18546:4:75"},{"kind":"number","nativeSrc":"18552:3:75","nodeType":"YulLiteral","src":"18552:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"18543:2:75","nodeType":"YulIdentifier","src":"18543:2:75"},"nativeSrc":"18543:13:75","nodeType":"YulFunctionCall","src":"18543:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"18561:8:75","nodeType":"YulIdentifier","src":"18561:8:75"},{"kind":"number","nativeSrc":"18571:2:75","nodeType":"YulLiteral","src":"18571:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"18558:2:75","nodeType":"YulIdentifier","src":"18558:2:75"},"nativeSrc":"18558:16:75","nodeType":"YulFunctionCall","src":"18558:16:75"}],"functionName":{"name":"and","nativeSrc":"18539:3:75","nodeType":"YulIdentifier","src":"18539:3:75"},"nativeSrc":"18539:36:75","nodeType":"YulFunctionCall","src":"18539:36:75"}],"functionName":{"name":"or","nativeSrc":"18499:2:75","nodeType":"YulIdentifier","src":"18499:2:75"},"nativeSrc":"18499:77:75","nodeType":"YulFunctionCall","src":"18499:77:75"},"nativeSrc":"18496:203:75","nodeType":"YulIf","src":"18496:203:75"},{"nativeSrc":"18708:65:75","nodeType":"YulVariableDeclaration","src":"18708:65:75","value":{"arguments":[{"name":"base","nativeSrc":"18750:4:75","nodeType":"YulIdentifier","src":"18750:4:75"},{"name":"exponent","nativeSrc":"18756:8:75","nodeType":"YulIdentifier","src":"18756:8:75"},{"arguments":[{"kind":"number","nativeSrc":"18770:1:75","nodeType":"YulLiteral","src":"18770:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"18766:3:75","nodeType":"YulIdentifier","src":"18766:3:75"},"nativeSrc":"18766:6:75","nodeType":"YulFunctionCall","src":"18766:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"18731:18:75","nodeType":"YulIdentifier","src":"18731:18:75"},"nativeSrc":"18731:42:75","nodeType":"YulFunctionCall","src":"18731:42:75"},"variables":[{"name":"power_1","nativeSrc":"18712:7:75","nodeType":"YulTypedName","src":"18712:7:75","type":""},{"name":"base_1","nativeSrc":"18721:6:75","nodeType":"YulTypedName","src":"18721:6:75","type":""}]},{"body":{"nativeSrc":"18818:22:75","nodeType":"YulBlock","src":"18818:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18820:16:75","nodeType":"YulIdentifier","src":"18820:16:75"},"nativeSrc":"18820:18:75","nodeType":"YulFunctionCall","src":"18820:18:75"},"nativeSrc":"18820:18:75","nodeType":"YulExpressionStatement","src":"18820:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"18788:7:75","nodeType":"YulIdentifier","src":"18788:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18805:1:75","nodeType":"YulLiteral","src":"18805:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"18801:3:75","nodeType":"YulIdentifier","src":"18801:3:75"},"nativeSrc":"18801:6:75","nodeType":"YulFunctionCall","src":"18801:6:75"},{"name":"base_1","nativeSrc":"18809:6:75","nodeType":"YulIdentifier","src":"18809:6:75"}],"functionName":{"name":"div","nativeSrc":"18797:3:75","nodeType":"YulIdentifier","src":"18797:3:75"},"nativeSrc":"18797:19:75","nodeType":"YulFunctionCall","src":"18797:19:75"}],"functionName":{"name":"gt","nativeSrc":"18785:2:75","nodeType":"YulIdentifier","src":"18785:2:75"},"nativeSrc":"18785:32:75","nodeType":"YulFunctionCall","src":"18785:32:75"},"nativeSrc":"18782:58:75","nodeType":"YulIf","src":"18782:58:75"},{"nativeSrc":"18849:29:75","nodeType":"YulAssignment","src":"18849:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"18862:7:75","nodeType":"YulIdentifier","src":"18862:7:75"},{"name":"base_1","nativeSrc":"18871:6:75","nodeType":"YulIdentifier","src":"18871:6:75"}],"functionName":{"name":"mul","nativeSrc":"18858:3:75","nodeType":"YulIdentifier","src":"18858:3:75"},"nativeSrc":"18858:20:75","nodeType":"YulFunctionCall","src":"18858:20:75"},"variableNames":[{"name":"power","nativeSrc":"18849:5:75","nodeType":"YulIdentifier","src":"18849:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"17982:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"18012:4:75","nodeType":"YulTypedName","src":"18012:4:75","type":""},{"name":"exponent","nativeSrc":"18018:8:75","nodeType":"YulTypedName","src":"18018:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18031:5:75","nodeType":"YulTypedName","src":"18031:5:75","type":""}],"src":"17982:902:75"},{"body":{"nativeSrc":"18957:72:75","nodeType":"YulBlock","src":"18957:72:75","statements":[{"nativeSrc":"18967:56:75","nodeType":"YulAssignment","src":"18967:56:75","value":{"arguments":[{"name":"base","nativeSrc":"18997:4:75","nodeType":"YulIdentifier","src":"18997:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"19007:8:75","nodeType":"YulIdentifier","src":"19007:8:75"},{"kind":"number","nativeSrc":"19017:4:75","nodeType":"YulLiteral","src":"19017:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19003:3:75","nodeType":"YulIdentifier","src":"19003:3:75"},"nativeSrc":"19003:19:75","nodeType":"YulFunctionCall","src":"19003:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"18976:20:75","nodeType":"YulIdentifier","src":"18976:20:75"},"nativeSrc":"18976:47:75","nodeType":"YulFunctionCall","src":"18976:47:75"},"variableNames":[{"name":"power","nativeSrc":"18967:5:75","nodeType":"YulIdentifier","src":"18967:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"18889:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"18928:4:75","nodeType":"YulTypedName","src":"18928:4:75","type":""},{"name":"exponent","nativeSrc":"18934:8:75","nodeType":"YulTypedName","src":"18934:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"18947:5:75","nodeType":"YulTypedName","src":"18947:5:75","type":""}],"src":"18889:140:75"},{"body":{"nativeSrc":"19177:153:75","nodeType":"YulBlock","src":"19177:153:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19194:9:75","nodeType":"YulIdentifier","src":"19194:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19209:6:75","nodeType":"YulIdentifier","src":"19209:6:75"},{"kind":"number","nativeSrc":"19217:4:75","nodeType":"YulLiteral","src":"19217:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19205:3:75","nodeType":"YulIdentifier","src":"19205:3:75"},"nativeSrc":"19205:17:75","nodeType":"YulFunctionCall","src":"19205:17:75"}],"functionName":{"name":"mstore","nativeSrc":"19187:6:75","nodeType":"YulIdentifier","src":"19187:6:75"},"nativeSrc":"19187:36:75","nodeType":"YulFunctionCall","src":"19187:36:75"},"nativeSrc":"19187:36:75","nodeType":"YulExpressionStatement","src":"19187:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19243:9:75","nodeType":"YulIdentifier","src":"19243:9:75"},{"kind":"number","nativeSrc":"19254:2:75","nodeType":"YulLiteral","src":"19254:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19239:3:75","nodeType":"YulIdentifier","src":"19239:3:75"},"nativeSrc":"19239:18:75","nodeType":"YulFunctionCall","src":"19239:18:75"},{"kind":"number","nativeSrc":"19259:2:75","nodeType":"YulLiteral","src":"19259:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"19232:6:75","nodeType":"YulIdentifier","src":"19232:6:75"},"nativeSrc":"19232:30:75","nodeType":"YulFunctionCall","src":"19232:30:75"},"nativeSrc":"19232:30:75","nodeType":"YulExpressionStatement","src":"19232:30:75"},{"nativeSrc":"19271:53:75","nodeType":"YulAssignment","src":"19271:53:75","value":{"arguments":[{"name":"value1","nativeSrc":"19297:6:75","nodeType":"YulIdentifier","src":"19297:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"19309:9:75","nodeType":"YulIdentifier","src":"19309:9:75"},{"kind":"number","nativeSrc":"19320:2:75","nodeType":"YulLiteral","src":"19320:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19305:3:75","nodeType":"YulIdentifier","src":"19305:3:75"},"nativeSrc":"19305:18:75","nodeType":"YulFunctionCall","src":"19305:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"19279:17:75","nodeType":"YulIdentifier","src":"19279:17:75"},"nativeSrc":"19279:45:75","nodeType":"YulFunctionCall","src":"19279:45:75"},"variableNames":[{"name":"tail","nativeSrc":"19271:4:75","nodeType":"YulIdentifier","src":"19271:4:75"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"19034:296:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19138:9:75","nodeType":"YulTypedName","src":"19138:9:75","type":""},{"name":"value1","nativeSrc":"19149:6:75","nodeType":"YulTypedName","src":"19149:6:75","type":""},{"name":"value0","nativeSrc":"19157:6:75","nodeType":"YulTypedName","src":"19157:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19168:4:75","nodeType":"YulTypedName","src":"19168:4:75","type":""}],"src":"19034:296:75"},{"body":{"nativeSrc":"19461:102:75","nodeType":"YulBlock","src":"19461:102:75","statements":[{"nativeSrc":"19471:26:75","nodeType":"YulAssignment","src":"19471:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19483:9:75","nodeType":"YulIdentifier","src":"19483:9:75"},{"kind":"number","nativeSrc":"19494:2:75","nodeType":"YulLiteral","src":"19494:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19479:3:75","nodeType":"YulIdentifier","src":"19479:3:75"},"nativeSrc":"19479:18:75","nodeType":"YulFunctionCall","src":"19479:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19471:4:75","nodeType":"YulIdentifier","src":"19471:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19513:9:75","nodeType":"YulIdentifier","src":"19513:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19528:6:75","nodeType":"YulIdentifier","src":"19528:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19544:3:75","nodeType":"YulLiteral","src":"19544:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"19549:1:75","nodeType":"YulLiteral","src":"19549:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19540:3:75","nodeType":"YulIdentifier","src":"19540:3:75"},"nativeSrc":"19540:11:75","nodeType":"YulFunctionCall","src":"19540:11:75"},{"kind":"number","nativeSrc":"19553:1:75","nodeType":"YulLiteral","src":"19553:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19536:3:75","nodeType":"YulIdentifier","src":"19536:3:75"},"nativeSrc":"19536:19:75","nodeType":"YulFunctionCall","src":"19536:19:75"}],"functionName":{"name":"and","nativeSrc":"19524:3:75","nodeType":"YulIdentifier","src":"19524:3:75"},"nativeSrc":"19524:32:75","nodeType":"YulFunctionCall","src":"19524:32:75"}],"functionName":{"name":"mstore","nativeSrc":"19506:6:75","nodeType":"YulIdentifier","src":"19506:6:75"},"nativeSrc":"19506:51:75","nodeType":"YulFunctionCall","src":"19506:51:75"},"nativeSrc":"19506:51:75","nodeType":"YulExpressionStatement","src":"19506:51:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374__to_t_address__fromStack_reversed","nativeSrc":"19335:228:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19430:9:75","nodeType":"YulTypedName","src":"19430:9:75","type":""},{"name":"value0","nativeSrc":"19441:6:75","nodeType":"YulTypedName","src":"19441:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19452:4:75","nodeType":"YulTypedName","src":"19452:4:75","type":""}],"src":"19335:228:75"},{"body":{"nativeSrc":"19715:471:75","nodeType":"YulBlock","src":"19715:471:75","statements":[{"nativeSrc":"19725:32:75","nodeType":"YulVariableDeclaration","src":"19725:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19743:9:75","nodeType":"YulIdentifier","src":"19743:9:75"},{"kind":"number","nativeSrc":"19754:2:75","nodeType":"YulLiteral","src":"19754:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19739:3:75","nodeType":"YulIdentifier","src":"19739:3:75"},"nativeSrc":"19739:18:75","nodeType":"YulFunctionCall","src":"19739:18:75"},"variables":[{"name":"tail_1","nativeSrc":"19729:6:75","nodeType":"YulTypedName","src":"19729:6:75","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19773:9:75","nodeType":"YulIdentifier","src":"19773:9:75"},{"kind":"number","nativeSrc":"19784:2:75","nodeType":"YulLiteral","src":"19784:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"19766:6:75","nodeType":"YulIdentifier","src":"19766:6:75"},"nativeSrc":"19766:21:75","nodeType":"YulFunctionCall","src":"19766:21:75"},"nativeSrc":"19766:21:75","nodeType":"YulExpressionStatement","src":"19766:21:75"},{"nativeSrc":"19796:17:75","nodeType":"YulVariableDeclaration","src":"19796:17:75","value":{"name":"tail_1","nativeSrc":"19807:6:75","nodeType":"YulIdentifier","src":"19807:6:75"},"variables":[{"name":"pos","nativeSrc":"19800:3:75","nodeType":"YulTypedName","src":"19800:3:75","type":""}]},{"nativeSrc":"19822:27:75","nodeType":"YulVariableDeclaration","src":"19822:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"19842:6:75","nodeType":"YulIdentifier","src":"19842:6:75"}],"functionName":{"name":"mload","nativeSrc":"19836:5:75","nodeType":"YulIdentifier","src":"19836:5:75"},"nativeSrc":"19836:13:75","nodeType":"YulFunctionCall","src":"19836:13:75"},"variables":[{"name":"length","nativeSrc":"19826:6:75","nodeType":"YulTypedName","src":"19826:6:75","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"19865:6:75","nodeType":"YulIdentifier","src":"19865:6:75"},{"name":"length","nativeSrc":"19873:6:75","nodeType":"YulIdentifier","src":"19873:6:75"}],"functionName":{"name":"mstore","nativeSrc":"19858:6:75","nodeType":"YulIdentifier","src":"19858:6:75"},"nativeSrc":"19858:22:75","nodeType":"YulFunctionCall","src":"19858:22:75"},"nativeSrc":"19858:22:75","nodeType":"YulExpressionStatement","src":"19858:22:75"},{"nativeSrc":"19889:25:75","nodeType":"YulAssignment","src":"19889:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19900:9:75","nodeType":"YulIdentifier","src":"19900:9:75"},{"kind":"number","nativeSrc":"19911:2:75","nodeType":"YulLiteral","src":"19911:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19896:3:75","nodeType":"YulIdentifier","src":"19896:3:75"},"nativeSrc":"19896:18:75","nodeType":"YulFunctionCall","src":"19896:18:75"},"variableNames":[{"name":"pos","nativeSrc":"19889:3:75","nodeType":"YulIdentifier","src":"19889:3:75"}]},{"nativeSrc":"19923:29:75","nodeType":"YulVariableDeclaration","src":"19923:29:75","value":{"arguments":[{"name":"value0","nativeSrc":"19941:6:75","nodeType":"YulIdentifier","src":"19941:6:75"},{"kind":"number","nativeSrc":"19949:2:75","nodeType":"YulLiteral","src":"19949:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19937:3:75","nodeType":"YulIdentifier","src":"19937:3:75"},"nativeSrc":"19937:15:75","nodeType":"YulFunctionCall","src":"19937:15:75"},"variables":[{"name":"srcPtr","nativeSrc":"19927:6:75","nodeType":"YulTypedName","src":"19927:6:75","type":""}]},{"nativeSrc":"19961:10:75","nodeType":"YulVariableDeclaration","src":"19961:10:75","value":{"kind":"number","nativeSrc":"19970:1:75","nodeType":"YulLiteral","src":"19970:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"19965:1:75","nodeType":"YulTypedName","src":"19965:1:75","type":""}]},{"body":{"nativeSrc":"20029:131:75","nodeType":"YulBlock","src":"20029:131:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"20050:3:75","nodeType":"YulIdentifier","src":"20050:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"20065:6:75","nodeType":"YulIdentifier","src":"20065:6:75"}],"functionName":{"name":"mload","nativeSrc":"20059:5:75","nodeType":"YulIdentifier","src":"20059:5:75"},"nativeSrc":"20059:13:75","nodeType":"YulFunctionCall","src":"20059:13:75"},{"kind":"number","nativeSrc":"20074:4:75","nodeType":"YulLiteral","src":"20074:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20055:3:75","nodeType":"YulIdentifier","src":"20055:3:75"},"nativeSrc":"20055:24:75","nodeType":"YulFunctionCall","src":"20055:24:75"}],"functionName":{"name":"mstore","nativeSrc":"20043:6:75","nodeType":"YulIdentifier","src":"20043:6:75"},"nativeSrc":"20043:37:75","nodeType":"YulFunctionCall","src":"20043:37:75"},"nativeSrc":"20043:37:75","nodeType":"YulExpressionStatement","src":"20043:37:75"},{"nativeSrc":"20093:19:75","nodeType":"YulAssignment","src":"20093:19:75","value":{"arguments":[{"name":"pos","nativeSrc":"20104:3:75","nodeType":"YulIdentifier","src":"20104:3:75"},{"kind":"number","nativeSrc":"20109:2:75","nodeType":"YulLiteral","src":"20109:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20100:3:75","nodeType":"YulIdentifier","src":"20100:3:75"},"nativeSrc":"20100:12:75","nodeType":"YulFunctionCall","src":"20100:12:75"},"variableNames":[{"name":"pos","nativeSrc":"20093:3:75","nodeType":"YulIdentifier","src":"20093:3:75"}]},{"nativeSrc":"20125:25:75","nodeType":"YulAssignment","src":"20125:25:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"20139:6:75","nodeType":"YulIdentifier","src":"20139:6:75"},{"kind":"number","nativeSrc":"20147:2:75","nodeType":"YulLiteral","src":"20147:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20135:3:75","nodeType":"YulIdentifier","src":"20135:3:75"},"nativeSrc":"20135:15:75","nodeType":"YulFunctionCall","src":"20135:15:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"20125:6:75","nodeType":"YulIdentifier","src":"20125:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"19991:1:75","nodeType":"YulIdentifier","src":"19991:1:75"},{"name":"length","nativeSrc":"19994:6:75","nodeType":"YulIdentifier","src":"19994:6:75"}],"functionName":{"name":"lt","nativeSrc":"19988:2:75","nodeType":"YulIdentifier","src":"19988:2:75"},"nativeSrc":"19988:13:75","nodeType":"YulFunctionCall","src":"19988:13:75"},"nativeSrc":"19980:180:75","nodeType":"YulForLoop","post":{"nativeSrc":"20002:18:75","nodeType":"YulBlock","src":"20002:18:75","statements":[{"nativeSrc":"20004:14:75","nodeType":"YulAssignment","src":"20004:14:75","value":{"arguments":[{"name":"i","nativeSrc":"20013:1:75","nodeType":"YulIdentifier","src":"20013:1:75"},{"kind":"number","nativeSrc":"20016:1:75","nodeType":"YulLiteral","src":"20016:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"20009:3:75","nodeType":"YulIdentifier","src":"20009:3:75"},"nativeSrc":"20009:9:75","nodeType":"YulFunctionCall","src":"20009:9:75"},"variableNames":[{"name":"i","nativeSrc":"20004:1:75","nodeType":"YulIdentifier","src":"20004:1:75"}]}]},"pre":{"nativeSrc":"19984:3:75","nodeType":"YulBlock","src":"19984:3:75","statements":[]},"src":"19980:180:75"},{"nativeSrc":"20169:11:75","nodeType":"YulAssignment","src":"20169:11:75","value":{"name":"pos","nativeSrc":"20177:3:75","nodeType":"YulIdentifier","src":"20177:3:75"},"variableNames":[{"name":"tail","nativeSrc":"20169:4:75","nodeType":"YulIdentifier","src":"20169:4:75"}]}]},"name":"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"19568:618:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19684:9:75","nodeType":"YulTypedName","src":"19684:9:75","type":""},{"name":"value0","nativeSrc":"19695:6:75","nodeType":"YulTypedName","src":"19695:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19706:4:75","nodeType":"YulTypedName","src":"19706:4:75","type":""}],"src":"19568:618:75"},{"body":{"nativeSrc":"20240:79:75","nodeType":"YulBlock","src":"20240:79:75","statements":[{"nativeSrc":"20250:17:75","nodeType":"YulAssignment","src":"20250:17:75","value":{"arguments":[{"name":"x","nativeSrc":"20262:1:75","nodeType":"YulIdentifier","src":"20262:1:75"},{"name":"y","nativeSrc":"20265:1:75","nodeType":"YulIdentifier","src":"20265:1:75"}],"functionName":{"name":"sub","nativeSrc":"20258:3:75","nodeType":"YulIdentifier","src":"20258:3:75"},"nativeSrc":"20258:9:75","nodeType":"YulFunctionCall","src":"20258:9:75"},"variableNames":[{"name":"diff","nativeSrc":"20250:4:75","nodeType":"YulIdentifier","src":"20250:4:75"}]},{"body":{"nativeSrc":"20291:22:75","nodeType":"YulBlock","src":"20291:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20293:16:75","nodeType":"YulIdentifier","src":"20293:16:75"},"nativeSrc":"20293:18:75","nodeType":"YulFunctionCall","src":"20293:18:75"},"nativeSrc":"20293:18:75","nodeType":"YulExpressionStatement","src":"20293:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20282:4:75","nodeType":"YulIdentifier","src":"20282:4:75"},{"name":"x","nativeSrc":"20288:1:75","nodeType":"YulIdentifier","src":"20288:1:75"}],"functionName":{"name":"gt","nativeSrc":"20279:2:75","nodeType":"YulIdentifier","src":"20279:2:75"},"nativeSrc":"20279:11:75","nodeType":"YulFunctionCall","src":"20279:11:75"},"nativeSrc":"20276:37:75","nodeType":"YulIf","src":"20276:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"20191:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20222:1:75","nodeType":"YulTypedName","src":"20222:1:75","type":""},{"name":"y","nativeSrc":"20225:1:75","nodeType":"YulTypedName","src":"20225:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20231:4:75","nodeType":"YulTypedName","src":"20231:4:75","type":""}],"src":"20191:128:75"},{"body":{"nativeSrc":"20371:104:75","nodeType":"YulBlock","src":"20371:104:75","statements":[{"nativeSrc":"20381:39:75","nodeType":"YulAssignment","src":"20381:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"20397:1:75","nodeType":"YulIdentifier","src":"20397:1:75"},{"kind":"number","nativeSrc":"20400:4:75","nodeType":"YulLiteral","src":"20400:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20393:3:75","nodeType":"YulIdentifier","src":"20393:3:75"},"nativeSrc":"20393:12:75","nodeType":"YulFunctionCall","src":"20393:12:75"},{"arguments":[{"name":"y","nativeSrc":"20411:1:75","nodeType":"YulIdentifier","src":"20411:1:75"},{"kind":"number","nativeSrc":"20414:4:75","nodeType":"YulLiteral","src":"20414:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20407:3:75","nodeType":"YulIdentifier","src":"20407:3:75"},"nativeSrc":"20407:12:75","nodeType":"YulFunctionCall","src":"20407:12:75"}],"functionName":{"name":"sub","nativeSrc":"20389:3:75","nodeType":"YulIdentifier","src":"20389:3:75"},"nativeSrc":"20389:31:75","nodeType":"YulFunctionCall","src":"20389:31:75"},"variableNames":[{"name":"diff","nativeSrc":"20381:4:75","nodeType":"YulIdentifier","src":"20381:4:75"}]},{"body":{"nativeSrc":"20447:22:75","nodeType":"YulBlock","src":"20447:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20449:16:75","nodeType":"YulIdentifier","src":"20449:16:75"},"nativeSrc":"20449:18:75","nodeType":"YulFunctionCall","src":"20449:18:75"},"nativeSrc":"20449:18:75","nodeType":"YulExpressionStatement","src":"20449:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20435:4:75","nodeType":"YulIdentifier","src":"20435:4:75"},{"kind":"number","nativeSrc":"20441:4:75","nodeType":"YulLiteral","src":"20441:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"20432:2:75","nodeType":"YulIdentifier","src":"20432:2:75"},"nativeSrc":"20432:14:75","nodeType":"YulFunctionCall","src":"20432:14:75"},"nativeSrc":"20429:40:75","nodeType":"YulIf","src":"20429:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"20324:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20353:1:75","nodeType":"YulTypedName","src":"20353:1:75","type":""},{"name":"y","nativeSrc":"20356:1:75","nodeType":"YulTypedName","src":"20356:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20362:4:75","nodeType":"YulTypedName","src":"20362:4:75","type":""}],"src":"20324:151:75"},{"body":{"nativeSrc":"20525:130:75","nodeType":"YulBlock","src":"20525:130:75","statements":[{"nativeSrc":"20535:31:75","nodeType":"YulVariableDeclaration","src":"20535:31:75","value":{"arguments":[{"name":"value","nativeSrc":"20554:5:75","nodeType":"YulIdentifier","src":"20554:5:75"},{"kind":"number","nativeSrc":"20561:4:75","nodeType":"YulLiteral","src":"20561:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20550:3:75","nodeType":"YulIdentifier","src":"20550:3:75"},"nativeSrc":"20550:16:75","nodeType":"YulFunctionCall","src":"20550:16:75"},"variables":[{"name":"value_1","nativeSrc":"20539:7:75","nodeType":"YulTypedName","src":"20539:7:75","type":""}]},{"body":{"nativeSrc":"20596:22:75","nodeType":"YulBlock","src":"20596:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20598:16:75","nodeType":"YulIdentifier","src":"20598:16:75"},"nativeSrc":"20598:18:75","nodeType":"YulFunctionCall","src":"20598:18:75"},"nativeSrc":"20598:18:75","nodeType":"YulExpressionStatement","src":"20598:18:75"}]},"condition":{"arguments":[{"name":"value_1","nativeSrc":"20581:7:75","nodeType":"YulIdentifier","src":"20581:7:75"},{"kind":"number","nativeSrc":"20590:4:75","nodeType":"YulLiteral","src":"20590:4:75","type":"","value":"0xff"}],"functionName":{"name":"eq","nativeSrc":"20578:2:75","nodeType":"YulIdentifier","src":"20578:2:75"},"nativeSrc":"20578:17:75","nodeType":"YulFunctionCall","src":"20578:17:75"},"nativeSrc":"20575:43:75","nodeType":"YulIf","src":"20575:43:75"},{"nativeSrc":"20627:22:75","nodeType":"YulAssignment","src":"20627:22:75","value":{"arguments":[{"name":"value_1","nativeSrc":"20638:7:75","nodeType":"YulIdentifier","src":"20638:7:75"},{"kind":"number","nativeSrc":"20647:1:75","nodeType":"YulLiteral","src":"20647:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"20634:3:75","nodeType":"YulIdentifier","src":"20634:3:75"},"nativeSrc":"20634:15:75","nodeType":"YulFunctionCall","src":"20634:15:75"},"variableNames":[{"name":"ret","nativeSrc":"20627:3:75","nodeType":"YulIdentifier","src":"20627:3:75"}]}]},"name":"increment_t_uint8","nativeSrc":"20480:175:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20507:5:75","nodeType":"YulTypedName","src":"20507:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"20517:3:75","nodeType":"YulTypedName","src":"20517:3:75","type":""}],"src":"20480:175:75"},{"body":{"nativeSrc":"20741:103:75","nodeType":"YulBlock","src":"20741:103:75","statements":[{"body":{"nativeSrc":"20787:16:75","nodeType":"YulBlock","src":"20787:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20796:1:75","nodeType":"YulLiteral","src":"20796:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"20799:1:75","nodeType":"YulLiteral","src":"20799:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20789:6:75","nodeType":"YulIdentifier","src":"20789:6:75"},"nativeSrc":"20789:12:75","nodeType":"YulFunctionCall","src":"20789:12:75"},"nativeSrc":"20789:12:75","nodeType":"YulExpressionStatement","src":"20789:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"20762:7:75","nodeType":"YulIdentifier","src":"20762:7:75"},{"name":"headStart","nativeSrc":"20771:9:75","nodeType":"YulIdentifier","src":"20771:9:75"}],"functionName":{"name":"sub","nativeSrc":"20758:3:75","nodeType":"YulIdentifier","src":"20758:3:75"},"nativeSrc":"20758:23:75","nodeType":"YulFunctionCall","src":"20758:23:75"},{"kind":"number","nativeSrc":"20783:2:75","nodeType":"YulLiteral","src":"20783:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"20754:3:75","nodeType":"YulIdentifier","src":"20754:3:75"},"nativeSrc":"20754:32:75","nodeType":"YulFunctionCall","src":"20754:32:75"},"nativeSrc":"20751:52:75","nodeType":"YulIf","src":"20751:52:75"},{"nativeSrc":"20812:26:75","nodeType":"YulAssignment","src":"20812:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20828:9:75","nodeType":"YulIdentifier","src":"20828:9:75"}],"functionName":{"name":"mload","nativeSrc":"20822:5:75","nodeType":"YulIdentifier","src":"20822:5:75"},"nativeSrc":"20822:16:75","nodeType":"YulFunctionCall","src":"20822:16:75"},"variableNames":[{"name":"value0","nativeSrc":"20812:6:75","nodeType":"YulIdentifier","src":"20812:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"20660:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20707:9:75","nodeType":"YulTypedName","src":"20707:9:75","type":""},{"name":"dataEnd","nativeSrc":"20718:7:75","nodeType":"YulTypedName","src":"20718:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"20730:6:75","nodeType":"YulTypedName","src":"20730:6:75","type":""}],"src":"20660:184:75"},{"body":{"nativeSrc":"20881:95:75","nodeType":"YulBlock","src":"20881:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20898:1:75","nodeType":"YulLiteral","src":"20898:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"20905:3:75","nodeType":"YulLiteral","src":"20905:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"20910:10:75","nodeType":"YulLiteral","src":"20910:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"20901:3:75","nodeType":"YulIdentifier","src":"20901:3:75"},"nativeSrc":"20901:20:75","nodeType":"YulFunctionCall","src":"20901:20:75"}],"functionName":{"name":"mstore","nativeSrc":"20891:6:75","nodeType":"YulIdentifier","src":"20891:6:75"},"nativeSrc":"20891:31:75","nodeType":"YulFunctionCall","src":"20891:31:75"},"nativeSrc":"20891:31:75","nodeType":"YulExpressionStatement","src":"20891:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20938:1:75","nodeType":"YulLiteral","src":"20938:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"20941:4:75","nodeType":"YulLiteral","src":"20941:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"20931:6:75","nodeType":"YulIdentifier","src":"20931:6:75"},"nativeSrc":"20931:15:75","nodeType":"YulFunctionCall","src":"20931:15:75"},"nativeSrc":"20931:15:75","nodeType":"YulExpressionStatement","src":"20931:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20962:1:75","nodeType":"YulLiteral","src":"20962:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"20965:4:75","nodeType":"YulLiteral","src":"20965:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"20955:6:75","nodeType":"YulIdentifier","src":"20955:6:75"},"nativeSrc":"20955:15:75","nodeType":"YulFunctionCall","src":"20955:15:75"},"nativeSrc":"20955:15:75","nodeType":"YulExpressionStatement","src":"20955:15:75"}]},"name":"panic_error_0x12","nativeSrc":"20849:127:75","nodeType":"YulFunctionDefinition","src":"20849:127:75"},{"body":{"nativeSrc":"21110:145:75","nodeType":"YulBlock","src":"21110:145:75","statements":[{"nativeSrc":"21120:26:75","nodeType":"YulAssignment","src":"21120:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21132:9:75","nodeType":"YulIdentifier","src":"21132:9:75"},{"kind":"number","nativeSrc":"21143:2:75","nodeType":"YulLiteral","src":"21143:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21128:3:75","nodeType":"YulIdentifier","src":"21128:3:75"},"nativeSrc":"21128:18:75","nodeType":"YulFunctionCall","src":"21128:18:75"},"variableNames":[{"name":"tail","nativeSrc":"21120:4:75","nodeType":"YulIdentifier","src":"21120:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21162:9:75","nodeType":"YulIdentifier","src":"21162:9:75"},{"arguments":[{"name":"value0","nativeSrc":"21177:6:75","nodeType":"YulIdentifier","src":"21177:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21193:3:75","nodeType":"YulLiteral","src":"21193:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"21198:1:75","nodeType":"YulLiteral","src":"21198:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21189:3:75","nodeType":"YulIdentifier","src":"21189:3:75"},"nativeSrc":"21189:11:75","nodeType":"YulFunctionCall","src":"21189:11:75"},{"kind":"number","nativeSrc":"21202:1:75","nodeType":"YulLiteral","src":"21202:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21185:3:75","nodeType":"YulIdentifier","src":"21185:3:75"},"nativeSrc":"21185:19:75","nodeType":"YulFunctionCall","src":"21185:19:75"}],"functionName":{"name":"and","nativeSrc":"21173:3:75","nodeType":"YulIdentifier","src":"21173:3:75"},"nativeSrc":"21173:32:75","nodeType":"YulFunctionCall","src":"21173:32:75"}],"functionName":{"name":"mstore","nativeSrc":"21155:6:75","nodeType":"YulIdentifier","src":"21155:6:75"},"nativeSrc":"21155:51:75","nodeType":"YulFunctionCall","src":"21155:51:75"},"nativeSrc":"21155:51:75","nodeType":"YulExpressionStatement","src":"21155:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21226:9:75","nodeType":"YulIdentifier","src":"21226:9:75"},{"kind":"number","nativeSrc":"21237:2:75","nodeType":"YulLiteral","src":"21237:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21222:3:75","nodeType":"YulIdentifier","src":"21222:3:75"},"nativeSrc":"21222:18:75","nodeType":"YulFunctionCall","src":"21222:18:75"},{"name":"value1","nativeSrc":"21242:6:75","nodeType":"YulIdentifier","src":"21242:6:75"}],"functionName":{"name":"mstore","nativeSrc":"21215:6:75","nodeType":"YulIdentifier","src":"21215:6:75"},"nativeSrc":"21215:34:75","nodeType":"YulFunctionCall","src":"21215:34:75"},"nativeSrc":"21215:34:75","nodeType":"YulExpressionStatement","src":"21215:34:75"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"20981:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21071:9:75","nodeType":"YulTypedName","src":"21071:9:75","type":""},{"name":"value1","nativeSrc":"21082:6:75","nodeType":"YulTypedName","src":"21082:6:75","type":""},{"name":"value0","nativeSrc":"21090:6:75","nodeType":"YulTypedName","src":"21090:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21101:4:75","nodeType":"YulTypedName","src":"21101:4:75","type":""}],"src":"20981:274:75"},{"body":{"nativeSrc":"21397:164:75","nodeType":"YulBlock","src":"21397:164:75","statements":[{"nativeSrc":"21407:27:75","nodeType":"YulVariableDeclaration","src":"21407:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"21427:6:75","nodeType":"YulIdentifier","src":"21427:6:75"}],"functionName":{"name":"mload","nativeSrc":"21421:5:75","nodeType":"YulIdentifier","src":"21421:5:75"},"nativeSrc":"21421:13:75","nodeType":"YulFunctionCall","src":"21421:13:75"},"variables":[{"name":"length","nativeSrc":"21411:6:75","nodeType":"YulTypedName","src":"21411:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"21449:3:75","nodeType":"YulIdentifier","src":"21449:3:75"},{"arguments":[{"name":"value0","nativeSrc":"21458:6:75","nodeType":"YulIdentifier","src":"21458:6:75"},{"kind":"number","nativeSrc":"21466:4:75","nodeType":"YulLiteral","src":"21466:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21454:3:75","nodeType":"YulIdentifier","src":"21454:3:75"},"nativeSrc":"21454:17:75","nodeType":"YulFunctionCall","src":"21454:17:75"},{"name":"length","nativeSrc":"21473:6:75","nodeType":"YulIdentifier","src":"21473:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"21443:5:75","nodeType":"YulIdentifier","src":"21443:5:75"},"nativeSrc":"21443:37:75","nodeType":"YulFunctionCall","src":"21443:37:75"},"nativeSrc":"21443:37:75","nodeType":"YulExpressionStatement","src":"21443:37:75"},{"nativeSrc":"21489:26:75","nodeType":"YulVariableDeclaration","src":"21489:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"21503:3:75","nodeType":"YulIdentifier","src":"21503:3:75"},{"name":"length","nativeSrc":"21508:6:75","nodeType":"YulIdentifier","src":"21508:6:75"}],"functionName":{"name":"add","nativeSrc":"21499:3:75","nodeType":"YulIdentifier","src":"21499:3:75"},"nativeSrc":"21499:16:75","nodeType":"YulFunctionCall","src":"21499:16:75"},"variables":[{"name":"_1","nativeSrc":"21493:2:75","nodeType":"YulTypedName","src":"21493:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"21531:2:75","nodeType":"YulIdentifier","src":"21531:2:75"},{"kind":"number","nativeSrc":"21535:1:75","nodeType":"YulLiteral","src":"21535:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"21524:6:75","nodeType":"YulIdentifier","src":"21524:6:75"},"nativeSrc":"21524:13:75","nodeType":"YulFunctionCall","src":"21524:13:75"},"nativeSrc":"21524:13:75","nodeType":"YulExpressionStatement","src":"21524:13:75"},{"nativeSrc":"21546:9:75","nodeType":"YulAssignment","src":"21546:9:75","value":{"name":"_1","nativeSrc":"21553:2:75","nodeType":"YulIdentifier","src":"21553:2:75"},"variableNames":[{"name":"end","nativeSrc":"21546:3:75","nodeType":"YulIdentifier","src":"21546:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"21260:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"21373:3:75","nodeType":"YulTypedName","src":"21373:3:75","type":""},{"name":"value0","nativeSrc":"21378:6:75","nodeType":"YulTypedName","src":"21378:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"21389:3:75","nodeType":"YulTypedName","src":"21389:3:75","type":""}],"src":"21260:301:75"},{"body":{"nativeSrc":"21695:119:75","nodeType":"YulBlock","src":"21695:119:75","statements":[{"nativeSrc":"21705:26:75","nodeType":"YulAssignment","src":"21705:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"21717:9:75","nodeType":"YulIdentifier","src":"21717:9:75"},{"kind":"number","nativeSrc":"21728:2:75","nodeType":"YulLiteral","src":"21728:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"21713:3:75","nodeType":"YulIdentifier","src":"21713:3:75"},"nativeSrc":"21713:18:75","nodeType":"YulFunctionCall","src":"21713:18:75"},"variableNames":[{"name":"tail","nativeSrc":"21705:4:75","nodeType":"YulIdentifier","src":"21705:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21747:9:75","nodeType":"YulIdentifier","src":"21747:9:75"},{"name":"value0","nativeSrc":"21758:6:75","nodeType":"YulIdentifier","src":"21758:6:75"}],"functionName":{"name":"mstore","nativeSrc":"21740:6:75","nodeType":"YulIdentifier","src":"21740:6:75"},"nativeSrc":"21740:25:75","nodeType":"YulFunctionCall","src":"21740:25:75"},"nativeSrc":"21740:25:75","nodeType":"YulExpressionStatement","src":"21740:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21785:9:75","nodeType":"YulIdentifier","src":"21785:9:75"},{"kind":"number","nativeSrc":"21796:2:75","nodeType":"YulLiteral","src":"21796:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"21781:3:75","nodeType":"YulIdentifier","src":"21781:3:75"},"nativeSrc":"21781:18:75","nodeType":"YulFunctionCall","src":"21781:18:75"},{"name":"value1","nativeSrc":"21801:6:75","nodeType":"YulIdentifier","src":"21801:6:75"}],"functionName":{"name":"mstore","nativeSrc":"21774:6:75","nodeType":"YulIdentifier","src":"21774:6:75"},"nativeSrc":"21774:34:75","nodeType":"YulFunctionCall","src":"21774:34:75"},"nativeSrc":"21774:34:75","nodeType":"YulExpressionStatement","src":"21774:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"21566:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21656:9:75","nodeType":"YulTypedName","src":"21656:9:75","type":""},{"name":"value1","nativeSrc":"21667:6:75","nodeType":"YulTypedName","src":"21667:6:75","type":""},{"name":"value0","nativeSrc":"21675:6:75","nodeType":"YulTypedName","src":"21675:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21686:4:75","nodeType":"YulTypedName","src":"21686:4:75","type":""}],"src":"21566:248:75"},{"body":{"nativeSrc":"21998:171:75","nodeType":"YulBlock","src":"21998:171:75","statements":[{"nativeSrc":"22008:26:75","nodeType":"YulAssignment","src":"22008:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22020:9:75","nodeType":"YulIdentifier","src":"22020:9:75"},{"kind":"number","nativeSrc":"22031:2:75","nodeType":"YulLiteral","src":"22031:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22016:3:75","nodeType":"YulIdentifier","src":"22016:3:75"},"nativeSrc":"22016:18:75","nodeType":"YulFunctionCall","src":"22016:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22008:4:75","nodeType":"YulIdentifier","src":"22008:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22050:9:75","nodeType":"YulIdentifier","src":"22050:9:75"},{"arguments":[{"name":"value0","nativeSrc":"22065:6:75","nodeType":"YulIdentifier","src":"22065:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22081:3:75","nodeType":"YulLiteral","src":"22081:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"22086:1:75","nodeType":"YulLiteral","src":"22086:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"22077:3:75","nodeType":"YulIdentifier","src":"22077:3:75"},"nativeSrc":"22077:11:75","nodeType":"YulFunctionCall","src":"22077:11:75"},{"kind":"number","nativeSrc":"22090:1:75","nodeType":"YulLiteral","src":"22090:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"22073:3:75","nodeType":"YulIdentifier","src":"22073:3:75"},"nativeSrc":"22073:19:75","nodeType":"YulFunctionCall","src":"22073:19:75"}],"functionName":{"name":"and","nativeSrc":"22061:3:75","nodeType":"YulIdentifier","src":"22061:3:75"},"nativeSrc":"22061:32:75","nodeType":"YulFunctionCall","src":"22061:32:75"}],"functionName":{"name":"mstore","nativeSrc":"22043:6:75","nodeType":"YulIdentifier","src":"22043:6:75"},"nativeSrc":"22043:51:75","nodeType":"YulFunctionCall","src":"22043:51:75"},"nativeSrc":"22043:51:75","nodeType":"YulExpressionStatement","src":"22043:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22114:9:75","nodeType":"YulIdentifier","src":"22114:9:75"},{"kind":"number","nativeSrc":"22125:2:75","nodeType":"YulLiteral","src":"22125:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22110:3:75","nodeType":"YulIdentifier","src":"22110:3:75"},"nativeSrc":"22110:18:75","nodeType":"YulFunctionCall","src":"22110:18:75"},{"arguments":[{"name":"value1","nativeSrc":"22134:6:75","nodeType":"YulIdentifier","src":"22134:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22150:3:75","nodeType":"YulLiteral","src":"22150:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"22155:1:75","nodeType":"YulLiteral","src":"22155:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"22146:3:75","nodeType":"YulIdentifier","src":"22146:3:75"},"nativeSrc":"22146:11:75","nodeType":"YulFunctionCall","src":"22146:11:75"},{"kind":"number","nativeSrc":"22159:1:75","nodeType":"YulLiteral","src":"22159:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"22142:3:75","nodeType":"YulIdentifier","src":"22142:3:75"},"nativeSrc":"22142:19:75","nodeType":"YulFunctionCall","src":"22142:19:75"}],"functionName":{"name":"and","nativeSrc":"22130:3:75","nodeType":"YulIdentifier","src":"22130:3:75"},"nativeSrc":"22130:32:75","nodeType":"YulFunctionCall","src":"22130:32:75"}],"functionName":{"name":"mstore","nativeSrc":"22103:6:75","nodeType":"YulIdentifier","src":"22103:6:75"},"nativeSrc":"22103:60:75","nodeType":"YulFunctionCall","src":"22103:60:75"},"nativeSrc":"22103:60:75","nodeType":"YulExpressionStatement","src":"22103:60:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__to_t_address_t_address__fromStack_reversed","nativeSrc":"21819:350:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21959:9:75","nodeType":"YulTypedName","src":"21959:9:75","type":""},{"name":"value1","nativeSrc":"21970:6:75","nodeType":"YulTypedName","src":"21970:6:75","type":""},{"name":"value0","nativeSrc":"21978:6:75","nodeType":"YulTypedName","src":"21978:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21989:4:75","nodeType":"YulTypedName","src":"21989:4:75","type":""}],"src":"21819:350:75"},{"body":{"nativeSrc":"22255:170:75","nodeType":"YulBlock","src":"22255:170:75","statements":[{"body":{"nativeSrc":"22301:16:75","nodeType":"YulBlock","src":"22301:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22310:1:75","nodeType":"YulLiteral","src":"22310:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22313:1:75","nodeType":"YulLiteral","src":"22313:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22303:6:75","nodeType":"YulIdentifier","src":"22303:6:75"},"nativeSrc":"22303:12:75","nodeType":"YulFunctionCall","src":"22303:12:75"},"nativeSrc":"22303:12:75","nodeType":"YulExpressionStatement","src":"22303:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22276:7:75","nodeType":"YulIdentifier","src":"22276:7:75"},{"name":"headStart","nativeSrc":"22285:9:75","nodeType":"YulIdentifier","src":"22285:9:75"}],"functionName":{"name":"sub","nativeSrc":"22272:3:75","nodeType":"YulIdentifier","src":"22272:3:75"},"nativeSrc":"22272:23:75","nodeType":"YulFunctionCall","src":"22272:23:75"},{"kind":"number","nativeSrc":"22297:2:75","nodeType":"YulLiteral","src":"22297:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22268:3:75","nodeType":"YulIdentifier","src":"22268:3:75"},"nativeSrc":"22268:32:75","nodeType":"YulFunctionCall","src":"22268:32:75"},"nativeSrc":"22265:52:75","nodeType":"YulIf","src":"22265:52:75"},{"nativeSrc":"22326:29:75","nodeType":"YulVariableDeclaration","src":"22326:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22345:9:75","nodeType":"YulIdentifier","src":"22345:9:75"}],"functionName":{"name":"mload","nativeSrc":"22339:5:75","nodeType":"YulIdentifier","src":"22339:5:75"},"nativeSrc":"22339:16:75","nodeType":"YulFunctionCall","src":"22339:16:75"},"variables":[{"name":"value","nativeSrc":"22330:5:75","nodeType":"YulTypedName","src":"22330:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"22389:5:75","nodeType":"YulIdentifier","src":"22389:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"22364:24:75","nodeType":"YulIdentifier","src":"22364:24:75"},"nativeSrc":"22364:31:75","nodeType":"YulFunctionCall","src":"22364:31:75"},"nativeSrc":"22364:31:75","nodeType":"YulExpressionStatement","src":"22364:31:75"},{"nativeSrc":"22404:15:75","nodeType":"YulAssignment","src":"22404:15:75","value":{"name":"value","nativeSrc":"22414:5:75","nodeType":"YulIdentifier","src":"22414:5:75"},"variableNames":[{"name":"value0","nativeSrc":"22404:6:75","nodeType":"YulIdentifier","src":"22404:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"22174:251:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22221:9:75","nodeType":"YulTypedName","src":"22221:9:75","type":""},{"name":"dataEnd","nativeSrc":"22232:7:75","nodeType":"YulTypedName","src":"22232:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22244:6:75","nodeType":"YulTypedName","src":"22244:6:75","type":""}],"src":"22174:251:75"},{"body":{"nativeSrc":"22462:95:75","nodeType":"YulBlock","src":"22462:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22479:1:75","nodeType":"YulLiteral","src":"22479:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22486:3:75","nodeType":"YulLiteral","src":"22486:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22491:10:75","nodeType":"YulLiteral","src":"22491:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22482:3:75","nodeType":"YulIdentifier","src":"22482:3:75"},"nativeSrc":"22482:20:75","nodeType":"YulFunctionCall","src":"22482:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22472:6:75","nodeType":"YulIdentifier","src":"22472:6:75"},"nativeSrc":"22472:31:75","nodeType":"YulFunctionCall","src":"22472:31:75"},"nativeSrc":"22472:31:75","nodeType":"YulExpressionStatement","src":"22472:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22519:1:75","nodeType":"YulLiteral","src":"22519:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22522:4:75","nodeType":"YulLiteral","src":"22522:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"22512:6:75","nodeType":"YulIdentifier","src":"22512:6:75"},"nativeSrc":"22512:15:75","nodeType":"YulFunctionCall","src":"22512:15:75"},"nativeSrc":"22512:15:75","nodeType":"YulExpressionStatement","src":"22512:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22543:1:75","nodeType":"YulLiteral","src":"22543:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22546:4:75","nodeType":"YulLiteral","src":"22546:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22536:6:75","nodeType":"YulIdentifier","src":"22536:6:75"},"nativeSrc":"22536:15:75","nodeType":"YulFunctionCall","src":"22536:15:75"},"nativeSrc":"22536:15:75","nodeType":"YulExpressionStatement","src":"22536:15:75"}]},"name":"panic_error_0x21","nativeSrc":"22430:127:75","nodeType":"YulFunctionDefinition","src":"22430:127:75"},{"body":{"nativeSrc":"22598:218:75","nodeType":"YulBlock","src":"22598:218:75","statements":[{"nativeSrc":"22608:23:75","nodeType":"YulVariableDeclaration","src":"22608:23:75","value":{"arguments":[{"name":"y","nativeSrc":"22623:1:75","nodeType":"YulIdentifier","src":"22623:1:75"},{"kind":"number","nativeSrc":"22626:4:75","nodeType":"YulLiteral","src":"22626:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22619:3:75","nodeType":"YulIdentifier","src":"22619:3:75"},"nativeSrc":"22619:12:75","nodeType":"YulFunctionCall","src":"22619:12:75"},"variables":[{"name":"y_1","nativeSrc":"22612:3:75","nodeType":"YulTypedName","src":"22612:3:75","type":""}]},{"body":{"nativeSrc":"22663:111:75","nodeType":"YulBlock","src":"22663:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22684:1:75","nodeType":"YulLiteral","src":"22684:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"22691:3:75","nodeType":"YulLiteral","src":"22691:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"22696:10:75","nodeType":"YulLiteral","src":"22696:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"22687:3:75","nodeType":"YulIdentifier","src":"22687:3:75"},"nativeSrc":"22687:20:75","nodeType":"YulFunctionCall","src":"22687:20:75"}],"functionName":{"name":"mstore","nativeSrc":"22677:6:75","nodeType":"YulIdentifier","src":"22677:6:75"},"nativeSrc":"22677:31:75","nodeType":"YulFunctionCall","src":"22677:31:75"},"nativeSrc":"22677:31:75","nodeType":"YulExpressionStatement","src":"22677:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22728:1:75","nodeType":"YulLiteral","src":"22728:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"22731:4:75","nodeType":"YulLiteral","src":"22731:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"22721:6:75","nodeType":"YulIdentifier","src":"22721:6:75"},"nativeSrc":"22721:15:75","nodeType":"YulFunctionCall","src":"22721:15:75"},"nativeSrc":"22721:15:75","nodeType":"YulExpressionStatement","src":"22721:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22756:1:75","nodeType":"YulLiteral","src":"22756:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22759:4:75","nodeType":"YulLiteral","src":"22759:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"22749:6:75","nodeType":"YulIdentifier","src":"22749:6:75"},"nativeSrc":"22749:15:75","nodeType":"YulFunctionCall","src":"22749:15:75"},"nativeSrc":"22749:15:75","nodeType":"YulExpressionStatement","src":"22749:15:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"22650:3:75","nodeType":"YulIdentifier","src":"22650:3:75"}],"functionName":{"name":"iszero","nativeSrc":"22643:6:75","nodeType":"YulIdentifier","src":"22643:6:75"},"nativeSrc":"22643:11:75","nodeType":"YulFunctionCall","src":"22643:11:75"},"nativeSrc":"22640:134:75","nodeType":"YulIf","src":"22640:134:75"},{"nativeSrc":"22783:27:75","nodeType":"YulAssignment","src":"22783:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"22796:1:75","nodeType":"YulIdentifier","src":"22796:1:75"},{"kind":"number","nativeSrc":"22799:4:75","nodeType":"YulLiteral","src":"22799:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22792:3:75","nodeType":"YulIdentifier","src":"22792:3:75"},"nativeSrc":"22792:12:75","nodeType":"YulFunctionCall","src":"22792:12:75"},{"name":"y_1","nativeSrc":"22806:3:75","nodeType":"YulIdentifier","src":"22806:3:75"}],"functionName":{"name":"mod","nativeSrc":"22788:3:75","nodeType":"YulIdentifier","src":"22788:3:75"},"nativeSrc":"22788:22:75","nodeType":"YulFunctionCall","src":"22788:22:75"},"variableNames":[{"name":"r","nativeSrc":"22783:1:75","nodeType":"YulIdentifier","src":"22783:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"22562:254:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"22583:1:75","nodeType":"YulTypedName","src":"22583:1:75","type":""},{"name":"y","nativeSrc":"22586:1:75","nodeType":"YulTypedName","src":"22586:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"22592:1:75","nodeType":"YulTypedName","src":"22592:1:75","type":""}],"src":"22562:254:75"},{"body":{"nativeSrc":"22978:214:75","nodeType":"YulBlock","src":"22978:214:75","statements":[{"nativeSrc":"22988:26:75","nodeType":"YulAssignment","src":"22988:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23000:9:75","nodeType":"YulIdentifier","src":"23000:9:75"},{"kind":"number","nativeSrc":"23011:2:75","nodeType":"YulLiteral","src":"23011:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"22996:3:75","nodeType":"YulIdentifier","src":"22996:3:75"},"nativeSrc":"22996:18:75","nodeType":"YulFunctionCall","src":"22996:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22988:4:75","nodeType":"YulIdentifier","src":"22988:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23030:9:75","nodeType":"YulIdentifier","src":"23030:9:75"},{"arguments":[{"name":"value0","nativeSrc":"23045:6:75","nodeType":"YulIdentifier","src":"23045:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23061:3:75","nodeType":"YulLiteral","src":"23061:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23066:1:75","nodeType":"YulLiteral","src":"23066:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23057:3:75","nodeType":"YulIdentifier","src":"23057:3:75"},"nativeSrc":"23057:11:75","nodeType":"YulFunctionCall","src":"23057:11:75"},{"kind":"number","nativeSrc":"23070:1:75","nodeType":"YulLiteral","src":"23070:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23053:3:75","nodeType":"YulIdentifier","src":"23053:3:75"},"nativeSrc":"23053:19:75","nodeType":"YulFunctionCall","src":"23053:19:75"}],"functionName":{"name":"and","nativeSrc":"23041:3:75","nodeType":"YulIdentifier","src":"23041:3:75"},"nativeSrc":"23041:32:75","nodeType":"YulFunctionCall","src":"23041:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23023:6:75","nodeType":"YulIdentifier","src":"23023:6:75"},"nativeSrc":"23023:51:75","nodeType":"YulFunctionCall","src":"23023:51:75"},"nativeSrc":"23023:51:75","nodeType":"YulExpressionStatement","src":"23023:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23094:9:75","nodeType":"YulIdentifier","src":"23094:9:75"},{"kind":"number","nativeSrc":"23105:2:75","nodeType":"YulLiteral","src":"23105:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23090:3:75","nodeType":"YulIdentifier","src":"23090:3:75"},"nativeSrc":"23090:18:75","nodeType":"YulFunctionCall","src":"23090:18:75"},{"arguments":[{"name":"value1","nativeSrc":"23114:6:75","nodeType":"YulIdentifier","src":"23114:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23130:3:75","nodeType":"YulLiteral","src":"23130:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23135:1:75","nodeType":"YulLiteral","src":"23135:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23126:3:75","nodeType":"YulIdentifier","src":"23126:3:75"},"nativeSrc":"23126:11:75","nodeType":"YulFunctionCall","src":"23126:11:75"},{"kind":"number","nativeSrc":"23139:1:75","nodeType":"YulLiteral","src":"23139:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23122:3:75","nodeType":"YulIdentifier","src":"23122:3:75"},"nativeSrc":"23122:19:75","nodeType":"YulFunctionCall","src":"23122:19:75"}],"functionName":{"name":"and","nativeSrc":"23110:3:75","nodeType":"YulIdentifier","src":"23110:3:75"},"nativeSrc":"23110:32:75","nodeType":"YulFunctionCall","src":"23110:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23083:6:75","nodeType":"YulIdentifier","src":"23083:6:75"},"nativeSrc":"23083:60:75","nodeType":"YulFunctionCall","src":"23083:60:75"},"nativeSrc":"23083:60:75","nodeType":"YulExpressionStatement","src":"23083:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23163:9:75","nodeType":"YulIdentifier","src":"23163:9:75"},{"kind":"number","nativeSrc":"23174:2:75","nodeType":"YulLiteral","src":"23174:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23159:3:75","nodeType":"YulIdentifier","src":"23159:3:75"},"nativeSrc":"23159:18:75","nodeType":"YulFunctionCall","src":"23159:18:75"},{"name":"value2","nativeSrc":"23179:6:75","nodeType":"YulIdentifier","src":"23179:6:75"}],"functionName":{"name":"mstore","nativeSrc":"23152:6:75","nodeType":"YulIdentifier","src":"23152:6:75"},"nativeSrc":"23152:34:75","nodeType":"YulFunctionCall","src":"23152:34:75"},"nativeSrc":"23152:34:75","nodeType":"YulExpressionStatement","src":"23152:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"22821:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22931:9:75","nodeType":"YulTypedName","src":"22931:9:75","type":""},{"name":"value2","nativeSrc":"22942:6:75","nodeType":"YulTypedName","src":"22942:6:75","type":""},{"name":"value1","nativeSrc":"22950:6:75","nodeType":"YulTypedName","src":"22950:6:75","type":""},{"name":"value0","nativeSrc":"22958:6:75","nodeType":"YulTypedName","src":"22958:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22969:4:75","nodeType":"YulTypedName","src":"22969:4:75","type":""}],"src":"22821:371:75"},{"body":{"nativeSrc":"23326:145:75","nodeType":"YulBlock","src":"23326:145:75","statements":[{"nativeSrc":"23336:26:75","nodeType":"YulAssignment","src":"23336:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23348:9:75","nodeType":"YulIdentifier","src":"23348:9:75"},{"kind":"number","nativeSrc":"23359:2:75","nodeType":"YulLiteral","src":"23359:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23344:3:75","nodeType":"YulIdentifier","src":"23344:3:75"},"nativeSrc":"23344:18:75","nodeType":"YulFunctionCall","src":"23344:18:75"},"variableNames":[{"name":"tail","nativeSrc":"23336:4:75","nodeType":"YulIdentifier","src":"23336:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23378:9:75","nodeType":"YulIdentifier","src":"23378:9:75"},{"arguments":[{"name":"value0","nativeSrc":"23393:6:75","nodeType":"YulIdentifier","src":"23393:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23409:3:75","nodeType":"YulLiteral","src":"23409:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23414:1:75","nodeType":"YulLiteral","src":"23414:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23405:3:75","nodeType":"YulIdentifier","src":"23405:3:75"},"nativeSrc":"23405:11:75","nodeType":"YulFunctionCall","src":"23405:11:75"},{"kind":"number","nativeSrc":"23418:1:75","nodeType":"YulLiteral","src":"23418:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23401:3:75","nodeType":"YulIdentifier","src":"23401:3:75"},"nativeSrc":"23401:19:75","nodeType":"YulFunctionCall","src":"23401:19:75"}],"functionName":{"name":"and","nativeSrc":"23389:3:75","nodeType":"YulIdentifier","src":"23389:3:75"},"nativeSrc":"23389:32:75","nodeType":"YulFunctionCall","src":"23389:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23371:6:75","nodeType":"YulIdentifier","src":"23371:6:75"},"nativeSrc":"23371:51:75","nodeType":"YulFunctionCall","src":"23371:51:75"},"nativeSrc":"23371:51:75","nodeType":"YulExpressionStatement","src":"23371:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23442:9:75","nodeType":"YulIdentifier","src":"23442:9:75"},{"kind":"number","nativeSrc":"23453:2:75","nodeType":"YulLiteral","src":"23453:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23438:3:75","nodeType":"YulIdentifier","src":"23438:3:75"},"nativeSrc":"23438:18:75","nodeType":"YulFunctionCall","src":"23438:18:75"},{"name":"value1","nativeSrc":"23458:6:75","nodeType":"YulIdentifier","src":"23458:6:75"}],"functionName":{"name":"mstore","nativeSrc":"23431:6:75","nodeType":"YulIdentifier","src":"23431:6:75"},"nativeSrc":"23431:34:75","nodeType":"YulFunctionCall","src":"23431:34:75"},"nativeSrc":"23431:34:75","nodeType":"YulExpressionStatement","src":"23431:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"23197:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23287:9:75","nodeType":"YulTypedName","src":"23287:9:75","type":""},{"name":"value1","nativeSrc":"23298:6:75","nodeType":"YulTypedName","src":"23298:6:75","type":""},{"name":"value0","nativeSrc":"23306:6:75","nodeType":"YulTypedName","src":"23306:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23317:4:75","nodeType":"YulTypedName","src":"23317:4:75","type":""}],"src":"23197:274:75"},{"body":{"nativeSrc":"23532:65:75","nodeType":"YulBlock","src":"23532:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23549:1:75","nodeType":"YulLiteral","src":"23549:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"23552:3:75","nodeType":"YulIdentifier","src":"23552:3:75"}],"functionName":{"name":"mstore","nativeSrc":"23542:6:75","nodeType":"YulIdentifier","src":"23542:6:75"},"nativeSrc":"23542:14:75","nodeType":"YulFunctionCall","src":"23542:14:75"},"nativeSrc":"23542:14:75","nodeType":"YulExpressionStatement","src":"23542:14:75"},{"nativeSrc":"23565:26:75","nodeType":"YulAssignment","src":"23565:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"23583:1:75","nodeType":"YulLiteral","src":"23583:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23586:4:75","nodeType":"YulLiteral","src":"23586:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23573:9:75","nodeType":"YulIdentifier","src":"23573:9:75"},"nativeSrc":"23573:18:75","nodeType":"YulFunctionCall","src":"23573:18:75"},"variableNames":[{"name":"data","nativeSrc":"23565:4:75","nodeType":"YulIdentifier","src":"23565:4:75"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"23476:121:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"23515:3:75","nodeType":"YulTypedName","src":"23515:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"23523:4:75","nodeType":"YulTypedName","src":"23523:4:75","type":""}],"src":"23476:121:75"},{"body":{"nativeSrc":"23683:437:75","nodeType":"YulBlock","src":"23683:437:75","statements":[{"body":{"nativeSrc":"23716:398:75","nodeType":"YulBlock","src":"23716:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23737:1:75","nodeType":"YulLiteral","src":"23737:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"23740:5:75","nodeType":"YulIdentifier","src":"23740:5:75"}],"functionName":{"name":"mstore","nativeSrc":"23730:6:75","nodeType":"YulIdentifier","src":"23730:6:75"},"nativeSrc":"23730:16:75","nodeType":"YulFunctionCall","src":"23730:16:75"},"nativeSrc":"23730:16:75","nodeType":"YulExpressionStatement","src":"23730:16:75"},{"nativeSrc":"23759:30:75","nodeType":"YulVariableDeclaration","src":"23759:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"23781:1:75","nodeType":"YulLiteral","src":"23781:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23784:4:75","nodeType":"YulLiteral","src":"23784:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"23771:9:75","nodeType":"YulIdentifier","src":"23771:9:75"},"nativeSrc":"23771:18:75","nodeType":"YulFunctionCall","src":"23771:18:75"},"variables":[{"name":"data","nativeSrc":"23763:4:75","nodeType":"YulTypedName","src":"23763:4:75","type":""}]},{"nativeSrc":"23802:57:75","nodeType":"YulVariableDeclaration","src":"23802:57:75","value":{"arguments":[{"name":"data","nativeSrc":"23825:4:75","nodeType":"YulIdentifier","src":"23825:4:75"},{"arguments":[{"kind":"number","nativeSrc":"23835:1:75","nodeType":"YulLiteral","src":"23835:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"23842:10:75","nodeType":"YulIdentifier","src":"23842:10:75"},{"kind":"number","nativeSrc":"23854:2:75","nodeType":"YulLiteral","src":"23854:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23838:3:75","nodeType":"YulIdentifier","src":"23838:3:75"},"nativeSrc":"23838:19:75","nodeType":"YulFunctionCall","src":"23838:19:75"}],"functionName":{"name":"shr","nativeSrc":"23831:3:75","nodeType":"YulIdentifier","src":"23831:3:75"},"nativeSrc":"23831:27:75","nodeType":"YulFunctionCall","src":"23831:27:75"}],"functionName":{"name":"add","nativeSrc":"23821:3:75","nodeType":"YulIdentifier","src":"23821:3:75"},"nativeSrc":"23821:38:75","nodeType":"YulFunctionCall","src":"23821:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"23806:11:75","nodeType":"YulTypedName","src":"23806:11:75","type":""}]},{"body":{"nativeSrc":"23896:23:75","nodeType":"YulBlock","src":"23896:23:75","statements":[{"nativeSrc":"23898:19:75","nodeType":"YulAssignment","src":"23898:19:75","value":{"name":"data","nativeSrc":"23913:4:75","nodeType":"YulIdentifier","src":"23913:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"23898:11:75","nodeType":"YulIdentifier","src":"23898:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"23878:10:75","nodeType":"YulIdentifier","src":"23878:10:75"},{"kind":"number","nativeSrc":"23890:4:75","nodeType":"YulLiteral","src":"23890:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"23875:2:75","nodeType":"YulIdentifier","src":"23875:2:75"},"nativeSrc":"23875:20:75","nodeType":"YulFunctionCall","src":"23875:20:75"},"nativeSrc":"23872:47:75","nodeType":"YulIf","src":"23872:47:75"},{"nativeSrc":"23932:41:75","nodeType":"YulVariableDeclaration","src":"23932:41:75","value":{"arguments":[{"name":"data","nativeSrc":"23946:4:75","nodeType":"YulIdentifier","src":"23946:4:75"},{"arguments":[{"kind":"number","nativeSrc":"23956:1:75","nodeType":"YulLiteral","src":"23956:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"23963:3:75","nodeType":"YulIdentifier","src":"23963:3:75"},{"kind":"number","nativeSrc":"23968:2:75","nodeType":"YulLiteral","src":"23968:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"23959:3:75","nodeType":"YulIdentifier","src":"23959:3:75"},"nativeSrc":"23959:12:75","nodeType":"YulFunctionCall","src":"23959:12:75"}],"functionName":{"name":"shr","nativeSrc":"23952:3:75","nodeType":"YulIdentifier","src":"23952:3:75"},"nativeSrc":"23952:20:75","nodeType":"YulFunctionCall","src":"23952:20:75"}],"functionName":{"name":"add","nativeSrc":"23942:3:75","nodeType":"YulIdentifier","src":"23942:3:75"},"nativeSrc":"23942:31:75","nodeType":"YulFunctionCall","src":"23942:31:75"},"variables":[{"name":"_1","nativeSrc":"23936:2:75","nodeType":"YulTypedName","src":"23936:2:75","type":""}]},{"nativeSrc":"23986:24:75","nodeType":"YulVariableDeclaration","src":"23986:24:75","value":{"name":"deleteStart","nativeSrc":"23999:11:75","nodeType":"YulIdentifier","src":"23999:11:75"},"variables":[{"name":"start","nativeSrc":"23990:5:75","nodeType":"YulTypedName","src":"23990:5:75","type":""}]},{"body":{"nativeSrc":"24084:20:75","nodeType":"YulBlock","src":"24084:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"24093:5:75","nodeType":"YulIdentifier","src":"24093:5:75"},{"kind":"number","nativeSrc":"24100:1:75","nodeType":"YulLiteral","src":"24100:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"24086:6:75","nodeType":"YulIdentifier","src":"24086:6:75"},"nativeSrc":"24086:16:75","nodeType":"YulFunctionCall","src":"24086:16:75"},"nativeSrc":"24086:16:75","nodeType":"YulExpressionStatement","src":"24086:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"24034:5:75","nodeType":"YulIdentifier","src":"24034:5:75"},{"name":"_1","nativeSrc":"24041:2:75","nodeType":"YulIdentifier","src":"24041:2:75"}],"functionName":{"name":"lt","nativeSrc":"24031:2:75","nodeType":"YulIdentifier","src":"24031:2:75"},"nativeSrc":"24031:13:75","nodeType":"YulFunctionCall","src":"24031:13:75"},"nativeSrc":"24023:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"24045:26:75","nodeType":"YulBlock","src":"24045:26:75","statements":[{"nativeSrc":"24047:22:75","nodeType":"YulAssignment","src":"24047:22:75","value":{"arguments":[{"name":"start","nativeSrc":"24060:5:75","nodeType":"YulIdentifier","src":"24060:5:75"},{"kind":"number","nativeSrc":"24067:1:75","nodeType":"YulLiteral","src":"24067:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24056:3:75","nodeType":"YulIdentifier","src":"24056:3:75"},"nativeSrc":"24056:13:75","nodeType":"YulFunctionCall","src":"24056:13:75"},"variableNames":[{"name":"start","nativeSrc":"24047:5:75","nodeType":"YulIdentifier","src":"24047:5:75"}]}]},"pre":{"nativeSrc":"24027:3:75","nodeType":"YulBlock","src":"24027:3:75","statements":[]},"src":"24023:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"23699:3:75","nodeType":"YulIdentifier","src":"23699:3:75"},{"kind":"number","nativeSrc":"23704:2:75","nodeType":"YulLiteral","src":"23704:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"23696:2:75","nodeType":"YulIdentifier","src":"23696:2:75"},"nativeSrc":"23696:11:75","nodeType":"YulFunctionCall","src":"23696:11:75"},"nativeSrc":"23693:421:75","nodeType":"YulIf","src":"23693:421:75"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"23602:518:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"23655:5:75","nodeType":"YulTypedName","src":"23655:5:75","type":""},{"name":"len","nativeSrc":"23662:3:75","nodeType":"YulTypedName","src":"23662:3:75","type":""},{"name":"startIndex","nativeSrc":"23667:10:75","nodeType":"YulTypedName","src":"23667:10:75","type":""}],"src":"23602:518:75"},{"body":{"nativeSrc":"24210:81:75","nodeType":"YulBlock","src":"24210:81:75","statements":[{"nativeSrc":"24220:65:75","nodeType":"YulAssignment","src":"24220:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"24235:4:75","nodeType":"YulIdentifier","src":"24235:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24253:1:75","nodeType":"YulLiteral","src":"24253:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"24256:3:75","nodeType":"YulIdentifier","src":"24256:3:75"}],"functionName":{"name":"shl","nativeSrc":"24249:3:75","nodeType":"YulIdentifier","src":"24249:3:75"},"nativeSrc":"24249:11:75","nodeType":"YulFunctionCall","src":"24249:11:75"},{"arguments":[{"kind":"number","nativeSrc":"24266:1:75","nodeType":"YulLiteral","src":"24266:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"24262:3:75","nodeType":"YulIdentifier","src":"24262:3:75"},"nativeSrc":"24262:6:75","nodeType":"YulFunctionCall","src":"24262:6:75"}],"functionName":{"name":"shr","nativeSrc":"24245:3:75","nodeType":"YulIdentifier","src":"24245:3:75"},"nativeSrc":"24245:24:75","nodeType":"YulFunctionCall","src":"24245:24:75"}],"functionName":{"name":"not","nativeSrc":"24241:3:75","nodeType":"YulIdentifier","src":"24241:3:75"},"nativeSrc":"24241:29:75","nodeType":"YulFunctionCall","src":"24241:29:75"}],"functionName":{"name":"and","nativeSrc":"24231:3:75","nodeType":"YulIdentifier","src":"24231:3:75"},"nativeSrc":"24231:40:75","nodeType":"YulFunctionCall","src":"24231:40:75"},{"arguments":[{"kind":"number","nativeSrc":"24277:1:75","nodeType":"YulLiteral","src":"24277:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"24280:3:75","nodeType":"YulIdentifier","src":"24280:3:75"}],"functionName":{"name":"shl","nativeSrc":"24273:3:75","nodeType":"YulIdentifier","src":"24273:3:75"},"nativeSrc":"24273:11:75","nodeType":"YulFunctionCall","src":"24273:11:75"}],"functionName":{"name":"or","nativeSrc":"24228:2:75","nodeType":"YulIdentifier","src":"24228:2:75"},"nativeSrc":"24228:57:75","nodeType":"YulFunctionCall","src":"24228:57:75"},"variableNames":[{"name":"used","nativeSrc":"24220:4:75","nodeType":"YulIdentifier","src":"24220:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"24125:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"24187:4:75","nodeType":"YulTypedName","src":"24187:4:75","type":""},{"name":"len","nativeSrc":"24193:3:75","nodeType":"YulTypedName","src":"24193:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"24201:4:75","nodeType":"YulTypedName","src":"24201:4:75","type":""}],"src":"24125:166:75"},{"body":{"nativeSrc":"24392:1203:75","nodeType":"YulBlock","src":"24392:1203:75","statements":[{"nativeSrc":"24402:24:75","nodeType":"YulVariableDeclaration","src":"24402:24:75","value":{"arguments":[{"name":"src","nativeSrc":"24422:3:75","nodeType":"YulIdentifier","src":"24422:3:75"}],"functionName":{"name":"mload","nativeSrc":"24416:5:75","nodeType":"YulIdentifier","src":"24416:5:75"},"nativeSrc":"24416:10:75","nodeType":"YulFunctionCall","src":"24416:10:75"},"variables":[{"name":"newLen","nativeSrc":"24406:6:75","nodeType":"YulTypedName","src":"24406:6:75","type":""}]},{"body":{"nativeSrc":"24469:22:75","nodeType":"YulBlock","src":"24469:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"24471:16:75","nodeType":"YulIdentifier","src":"24471:16:75"},"nativeSrc":"24471:18:75","nodeType":"YulFunctionCall","src":"24471:18:75"},"nativeSrc":"24471:18:75","nodeType":"YulExpressionStatement","src":"24471:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"24441:6:75","nodeType":"YulIdentifier","src":"24441:6:75"},{"kind":"number","nativeSrc":"24449:18:75","nodeType":"YulLiteral","src":"24449:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"24438:2:75","nodeType":"YulIdentifier","src":"24438:2:75"},"nativeSrc":"24438:30:75","nodeType":"YulFunctionCall","src":"24438:30:75"},"nativeSrc":"24435:56:75","nodeType":"YulIf","src":"24435:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"24544:4:75","nodeType":"YulIdentifier","src":"24544:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"24582:4:75","nodeType":"YulIdentifier","src":"24582:4:75"}],"functionName":{"name":"sload","nativeSrc":"24576:5:75","nodeType":"YulIdentifier","src":"24576:5:75"},"nativeSrc":"24576:11:75","nodeType":"YulFunctionCall","src":"24576:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"24550:25:75","nodeType":"YulIdentifier","src":"24550:25:75"},"nativeSrc":"24550:38:75","nodeType":"YulFunctionCall","src":"24550:38:75"},{"name":"newLen","nativeSrc":"24590:6:75","nodeType":"YulIdentifier","src":"24590:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"24500:43:75","nodeType":"YulIdentifier","src":"24500:43:75"},"nativeSrc":"24500:97:75","nodeType":"YulFunctionCall","src":"24500:97:75"},"nativeSrc":"24500:97:75","nodeType":"YulExpressionStatement","src":"24500:97:75"},{"nativeSrc":"24606:18:75","nodeType":"YulVariableDeclaration","src":"24606:18:75","value":{"kind":"number","nativeSrc":"24623:1:75","nodeType":"YulLiteral","src":"24623:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"24610:9:75","nodeType":"YulTypedName","src":"24610:9:75","type":""}]},{"nativeSrc":"24633:17:75","nodeType":"YulAssignment","src":"24633:17:75","value":{"kind":"number","nativeSrc":"24646:4:75","nodeType":"YulLiteral","src":"24646:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"24633:9:75","nodeType":"YulIdentifier","src":"24633:9:75"}]},{"cases":[{"body":{"nativeSrc":"24696:642:75","nodeType":"YulBlock","src":"24696:642:75","statements":[{"nativeSrc":"24710:35:75","nodeType":"YulVariableDeclaration","src":"24710:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"24729:6:75","nodeType":"YulIdentifier","src":"24729:6:75"},{"arguments":[{"kind":"number","nativeSrc":"24741:2:75","nodeType":"YulLiteral","src":"24741:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"24737:3:75","nodeType":"YulIdentifier","src":"24737:3:75"},"nativeSrc":"24737:7:75","nodeType":"YulFunctionCall","src":"24737:7:75"}],"functionName":{"name":"and","nativeSrc":"24725:3:75","nodeType":"YulIdentifier","src":"24725:3:75"},"nativeSrc":"24725:20:75","nodeType":"YulFunctionCall","src":"24725:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"24714:7:75","nodeType":"YulTypedName","src":"24714:7:75","type":""}]},{"nativeSrc":"24758:49:75","nodeType":"YulVariableDeclaration","src":"24758:49:75","value":{"arguments":[{"name":"slot","nativeSrc":"24802:4:75","nodeType":"YulIdentifier","src":"24802:4:75"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"24772:29:75","nodeType":"YulIdentifier","src":"24772:29:75"},"nativeSrc":"24772:35:75","nodeType":"YulFunctionCall","src":"24772:35:75"},"variables":[{"name":"dstPtr","nativeSrc":"24762:6:75","nodeType":"YulTypedName","src":"24762:6:75","type":""}]},{"nativeSrc":"24820:10:75","nodeType":"YulVariableDeclaration","src":"24820:10:75","value":{"kind":"number","nativeSrc":"24829:1:75","nodeType":"YulLiteral","src":"24829:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"24824:1:75","nodeType":"YulTypedName","src":"24824:1:75","type":""}]},{"body":{"nativeSrc":"24900:165:75","nodeType":"YulBlock","src":"24900:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"24925:6:75","nodeType":"YulIdentifier","src":"24925:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"24943:3:75","nodeType":"YulIdentifier","src":"24943:3:75"},{"name":"srcOffset","nativeSrc":"24948:9:75","nodeType":"YulIdentifier","src":"24948:9:75"}],"functionName":{"name":"add","nativeSrc":"24939:3:75","nodeType":"YulIdentifier","src":"24939:3:75"},"nativeSrc":"24939:19:75","nodeType":"YulFunctionCall","src":"24939:19:75"}],"functionName":{"name":"mload","nativeSrc":"24933:5:75","nodeType":"YulIdentifier","src":"24933:5:75"},"nativeSrc":"24933:26:75","nodeType":"YulFunctionCall","src":"24933:26:75"}],"functionName":{"name":"sstore","nativeSrc":"24918:6:75","nodeType":"YulIdentifier","src":"24918:6:75"},"nativeSrc":"24918:42:75","nodeType":"YulFunctionCall","src":"24918:42:75"},"nativeSrc":"24918:42:75","nodeType":"YulExpressionStatement","src":"24918:42:75"},{"nativeSrc":"24977:24:75","nodeType":"YulAssignment","src":"24977:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"24991:6:75","nodeType":"YulIdentifier","src":"24991:6:75"},{"kind":"number","nativeSrc":"24999:1:75","nodeType":"YulLiteral","src":"24999:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"24987:3:75","nodeType":"YulIdentifier","src":"24987:3:75"},"nativeSrc":"24987:14:75","nodeType":"YulFunctionCall","src":"24987:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"24977:6:75","nodeType":"YulIdentifier","src":"24977:6:75"}]},{"nativeSrc":"25018:33:75","nodeType":"YulAssignment","src":"25018:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"25035:9:75","nodeType":"YulIdentifier","src":"25035:9:75"},{"kind":"number","nativeSrc":"25046:4:75","nodeType":"YulLiteral","src":"25046:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25031:3:75","nodeType":"YulIdentifier","src":"25031:3:75"},"nativeSrc":"25031:20:75","nodeType":"YulFunctionCall","src":"25031:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"25018:9:75","nodeType":"YulIdentifier","src":"25018:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"24854:1:75","nodeType":"YulIdentifier","src":"24854:1:75"},{"name":"loopEnd","nativeSrc":"24857:7:75","nodeType":"YulIdentifier","src":"24857:7:75"}],"functionName":{"name":"lt","nativeSrc":"24851:2:75","nodeType":"YulIdentifier","src":"24851:2:75"},"nativeSrc":"24851:14:75","nodeType":"YulFunctionCall","src":"24851:14:75"},"nativeSrc":"24843:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"24866:21:75","nodeType":"YulBlock","src":"24866:21:75","statements":[{"nativeSrc":"24868:17:75","nodeType":"YulAssignment","src":"24868:17:75","value":{"arguments":[{"name":"i","nativeSrc":"24877:1:75","nodeType":"YulIdentifier","src":"24877:1:75"},{"kind":"number","nativeSrc":"24880:4:75","nodeType":"YulLiteral","src":"24880:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"24873:3:75","nodeType":"YulIdentifier","src":"24873:3:75"},"nativeSrc":"24873:12:75","nodeType":"YulFunctionCall","src":"24873:12:75"},"variableNames":[{"name":"i","nativeSrc":"24868:1:75","nodeType":"YulIdentifier","src":"24868:1:75"}]}]},"pre":{"nativeSrc":"24847:3:75","nodeType":"YulBlock","src":"24847:3:75","statements":[]},"src":"24843:222:75"},{"body":{"nativeSrc":"25113:166:75","nodeType":"YulBlock","src":"25113:166:75","statements":[{"nativeSrc":"25131:43:75","nodeType":"YulVariableDeclaration","src":"25131:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"25158:3:75","nodeType":"YulIdentifier","src":"25158:3:75"},{"name":"srcOffset","nativeSrc":"25163:9:75","nodeType":"YulIdentifier","src":"25163:9:75"}],"functionName":{"name":"add","nativeSrc":"25154:3:75","nodeType":"YulIdentifier","src":"25154:3:75"},"nativeSrc":"25154:19:75","nodeType":"YulFunctionCall","src":"25154:19:75"}],"functionName":{"name":"mload","nativeSrc":"25148:5:75","nodeType":"YulIdentifier","src":"25148:5:75"},"nativeSrc":"25148:26:75","nodeType":"YulFunctionCall","src":"25148:26:75"},"variables":[{"name":"lastValue","nativeSrc":"25135:9:75","nodeType":"YulTypedName","src":"25135:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"25198:6:75","nodeType":"YulIdentifier","src":"25198:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"25210:9:75","nodeType":"YulIdentifier","src":"25210:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25237:1:75","nodeType":"YulLiteral","src":"25237:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"25240:6:75","nodeType":"YulIdentifier","src":"25240:6:75"}],"functionName":{"name":"shl","nativeSrc":"25233:3:75","nodeType":"YulIdentifier","src":"25233:3:75"},"nativeSrc":"25233:14:75","nodeType":"YulFunctionCall","src":"25233:14:75"},{"kind":"number","nativeSrc":"25249:3:75","nodeType":"YulLiteral","src":"25249:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"25229:3:75","nodeType":"YulIdentifier","src":"25229:3:75"},"nativeSrc":"25229:24:75","nodeType":"YulFunctionCall","src":"25229:24:75"},{"arguments":[{"kind":"number","nativeSrc":"25259:1:75","nodeType":"YulLiteral","src":"25259:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"25255:3:75","nodeType":"YulIdentifier","src":"25255:3:75"},"nativeSrc":"25255:6:75","nodeType":"YulFunctionCall","src":"25255:6:75"}],"functionName":{"name":"shr","nativeSrc":"25225:3:75","nodeType":"YulIdentifier","src":"25225:3:75"},"nativeSrc":"25225:37:75","nodeType":"YulFunctionCall","src":"25225:37:75"}],"functionName":{"name":"not","nativeSrc":"25221:3:75","nodeType":"YulIdentifier","src":"25221:3:75"},"nativeSrc":"25221:42:75","nodeType":"YulFunctionCall","src":"25221:42:75"}],"functionName":{"name":"and","nativeSrc":"25206:3:75","nodeType":"YulIdentifier","src":"25206:3:75"},"nativeSrc":"25206:58:75","nodeType":"YulFunctionCall","src":"25206:58:75"}],"functionName":{"name":"sstore","nativeSrc":"25191:6:75","nodeType":"YulIdentifier","src":"25191:6:75"},"nativeSrc":"25191:74:75","nodeType":"YulFunctionCall","src":"25191:74:75"},"nativeSrc":"25191:74:75","nodeType":"YulExpressionStatement","src":"25191:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"25084:7:75","nodeType":"YulIdentifier","src":"25084:7:75"},{"name":"newLen","nativeSrc":"25093:6:75","nodeType":"YulIdentifier","src":"25093:6:75"}],"functionName":{"name":"lt","nativeSrc":"25081:2:75","nodeType":"YulIdentifier","src":"25081:2:75"},"nativeSrc":"25081:19:75","nodeType":"YulFunctionCall","src":"25081:19:75"},"nativeSrc":"25078:201:75","nodeType":"YulIf","src":"25078:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"25299:4:75","nodeType":"YulIdentifier","src":"25299:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25313:1:75","nodeType":"YulLiteral","src":"25313:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"25316:6:75","nodeType":"YulIdentifier","src":"25316:6:75"}],"functionName":{"name":"shl","nativeSrc":"25309:3:75","nodeType":"YulIdentifier","src":"25309:3:75"},"nativeSrc":"25309:14:75","nodeType":"YulFunctionCall","src":"25309:14:75"},{"kind":"number","nativeSrc":"25325:1:75","nodeType":"YulLiteral","src":"25325:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"25305:3:75","nodeType":"YulIdentifier","src":"25305:3:75"},"nativeSrc":"25305:22:75","nodeType":"YulFunctionCall","src":"25305:22:75"}],"functionName":{"name":"sstore","nativeSrc":"25292:6:75","nodeType":"YulIdentifier","src":"25292:6:75"},"nativeSrc":"25292:36:75","nodeType":"YulFunctionCall","src":"25292:36:75"},"nativeSrc":"25292:36:75","nodeType":"YulExpressionStatement","src":"25292:36:75"}]},"nativeSrc":"24689:649:75","nodeType":"YulCase","src":"24689:649:75","value":{"kind":"number","nativeSrc":"24694:1:75","nodeType":"YulLiteral","src":"24694:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"25355:234:75","nodeType":"YulBlock","src":"25355:234:75","statements":[{"nativeSrc":"25369:14:75","nodeType":"YulVariableDeclaration","src":"25369:14:75","value":{"kind":"number","nativeSrc":"25382:1:75","nodeType":"YulLiteral","src":"25382:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"25373:5:75","nodeType":"YulTypedName","src":"25373:5:75","type":""}]},{"body":{"nativeSrc":"25418:67:75","nodeType":"YulBlock","src":"25418:67:75","statements":[{"nativeSrc":"25436:35:75","nodeType":"YulAssignment","src":"25436:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"25455:3:75","nodeType":"YulIdentifier","src":"25455:3:75"},{"name":"srcOffset","nativeSrc":"25460:9:75","nodeType":"YulIdentifier","src":"25460:9:75"}],"functionName":{"name":"add","nativeSrc":"25451:3:75","nodeType":"YulIdentifier","src":"25451:3:75"},"nativeSrc":"25451:19:75","nodeType":"YulFunctionCall","src":"25451:19:75"}],"functionName":{"name":"mload","nativeSrc":"25445:5:75","nodeType":"YulIdentifier","src":"25445:5:75"},"nativeSrc":"25445:26:75","nodeType":"YulFunctionCall","src":"25445:26:75"},"variableNames":[{"name":"value","nativeSrc":"25436:5:75","nodeType":"YulIdentifier","src":"25436:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"25399:6:75","nodeType":"YulIdentifier","src":"25399:6:75"},"nativeSrc":"25396:89:75","nodeType":"YulIf","src":"25396:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"25505:4:75","nodeType":"YulIdentifier","src":"25505:4:75"},{"arguments":[{"name":"value","nativeSrc":"25564:5:75","nodeType":"YulIdentifier","src":"25564:5:75"},{"name":"newLen","nativeSrc":"25571:6:75","nodeType":"YulIdentifier","src":"25571:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"25511:52:75","nodeType":"YulIdentifier","src":"25511:52:75"},"nativeSrc":"25511:67:75","nodeType":"YulFunctionCall","src":"25511:67:75"}],"functionName":{"name":"sstore","nativeSrc":"25498:6:75","nodeType":"YulIdentifier","src":"25498:6:75"},"nativeSrc":"25498:81:75","nodeType":"YulFunctionCall","src":"25498:81:75"},"nativeSrc":"25498:81:75","nodeType":"YulExpressionStatement","src":"25498:81:75"}]},"nativeSrc":"25347:242:75","nodeType":"YulCase","src":"25347:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"24669:6:75","nodeType":"YulIdentifier","src":"24669:6:75"},{"kind":"number","nativeSrc":"24677:2:75","nodeType":"YulLiteral","src":"24677:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"24666:2:75","nodeType":"YulIdentifier","src":"24666:2:75"},"nativeSrc":"24666:14:75","nodeType":"YulFunctionCall","src":"24666:14:75"},"nativeSrc":"24659:930:75","nodeType":"YulSwitch","src":"24659:930:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"24296:1299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"24377:4:75","nodeType":"YulTypedName","src":"24377:4:75","type":""},{"name":"src","nativeSrc":"24383:3:75","nodeType":"YulTypedName","src":"24383:3:75","type":""}],"src":"24296:1299:75"}]},"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_decode_tuple_t_bytes4(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, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := 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_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_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\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_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_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_decode_tuple_t_bytes32t_bytes32(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_decode_tuple_t_bytes32(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_bytes32t_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_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 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_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 array_allocation_size_array_contract_IInvestStrategy_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_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_contract_IInvestStrategy_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_contract_IInvestStrategy_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_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_contract_IInvestStrategy_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_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$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, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { 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_address(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_array_contract_IInvestStrategy_dyn(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 160))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        value5 := abi_decode_array_bytes_dyn(add(headStart, offset_3), dataEnd)\n        let offset_4 := calldataload(add(headStart, 192))\n        if gt(offset_4, 0xffffffffffffffff) { revert(0, 0) }\n        value6 := abi_decode_array_uint8_dyn(add(headStart, offset_4), dataEnd)\n        let offset_5 := calldataload(add(headStart, 224))\n        if gt(offset_5, 0xffffffffffffffff) { revert(0, 0) }\n        value7 := abi_decode_array_uint8_dyn(add(headStart, offset_5), dataEnd)\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_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_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        value3 := abi_decode_bool(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_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_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        value1 := abi_decode_bool(add(headStart, 32))\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_$22374_$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_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\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 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_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_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 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_$22374__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_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 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 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 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_address_t_bytes32__to_t_address_t_bytes32__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_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_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_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__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 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 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_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 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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":6666},{"length":32,"start":6707},{"length":32,"start":7062}]},"linkReferences":{},"object":"60806040526004361061035b575f3560e01c806370a08231116101bd578063ba087652116100f2578063d905777e11610092578063e1d394501161006d578063e1d3945014610a04578063e682324d14610a37578063ef8b30f714610915578063f617eecc14610a56575f5ffd5b8063d905777e146109a5578063d9f9027f146109c4578063dd62ed3e146109e5575f5ffd5b8063c6e6f592116100cd578063c6e6f59214610915578063cd0e0f4414610934578063ce96cb7714610967578063d547741f14610986575f5ffd5b8063ba087652146108b8578063bd577eb6146108d7578063c63d75b6146108f6575f5ffd5b806395d89b411161015d578063a9059cbb11610138578063a9059cbb1461082b578063ad3cb1cc1461084a578063b3d7f6b91461087a578063b460af9414610899575f5ffd5b806395d89b41146107e557806396da35da146107f9578063a217fddf14610818575f5ffd5b80637aeedf2a116101985780637aeedf2a14610769578063914abf4f1461078857806391d14854146107a757806394bf804d146107c6575f5ffd5b806370a0823114610717578063767f06ae146107365780637ac445a71461074a575f5ffd5b8063313ce56711610293578063490b48f81161023357806351a2d6d11161020e57806351a2d6d1146106a457806352d1902d146106c55780636b3ea526146106d95780636e553f65146106f8575f5ffd5b8063490b48f81461065e5780634cdad506146103d65780634f1ef28614610691575f5ffd5b806338d52e0f1161026e57806338d52e0f146105ce5780633aaf904814610601578063402d267d1461062057806347e575331461063f575f5ffd5b8063313ce5671461055657806336568abe1461057c578063367fee391461059b575f5ffd5b8063128b772f116102fe57806323b872dd116102d957806323b872dd146104c6578063248a9ca3146104e557806324ea54f4146105045780632f2ff15d14610537575f5ffd5b8063128b772f1461045357806318160ddd146104725780631e4e0091146104a5575f5ffd5b806307a2d13a1161033957806307a2d13a146103d6578063095ea7b3146103f55780630a28a477146104145780630b74ce8c14610433575f5ffd5b806301e1d1141461035f57806301ffc9a71461038657806306fdde03146103b5575b5f5ffd5b34801561036a575f5ffd5b50610373610a6a565b6040519081526020015b60405180910390f35b348015610391575f5ffd5b506103a56103a03660046145ac565b610a78565b604051901515815260200161037d565b3480156103c0575f5ffd5b506103c9610aae565b60405161037d9190614601565b3480156103e1575f5ffd5b506103736103f0366004614613565b610b6e565b348015610400575f5ffd5b506103a561040f36600461464e565b610b79565b34801561041f575f5ffd5b5061037361042e366004614613565b610b90565b34801561043e575f5ffd5b506103735f5160206151405f395f51905f5281565b34801561045e575f5ffd5b5061037361046d366004614688565b610b9c565b34801561047d575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610373565b3480156104b0575f5ffd5b506104c46104bf3660046146b9565b610c0e565b005b3480156104d1575f5ffd5b506103a56104e03660046146d9565b610c27565b3480156104f0575f5ffd5b506103736104ff366004614613565b610c4c565b34801561050f575f5ffd5b506103737f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b348015610542575f5ffd5b506104c4610551366004614717565b610c6c565b348015610561575f5ffd5b5061056a610c8e565b60405160ff909116815260200161037d565b348015610587575f5ffd5b506104c4610596366004614717565b610cbd565b3480156105a6575f5ffd5b506103737f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c181565b3480156105d9575f5ffd5b505f5160206151a05f395f51905f52546040516001600160a01b03909116815260200161037d565b34801561060c575f5ffd5b506103c961061b3660046147fa565b610cf0565b34801561062b575f5ffd5b5061037361063a366004614853565b610d75565b34801561064a575f5ffd5b506103c9610659366004614613565b610d94565b348015610669575f5ffd5b506103737fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4681565b6104c461069f36600461486e565b610f14565b3480156106af575f5ffd5b506106b8610f33565b60405161037d91906148ba565b3480156106d0575f5ffd5b50610373610f8b565b3480156106e4575f5ffd5b506104c46106f3366004614a63565b610fa6565b348015610703575f5ffd5b50610373610712366004614717565b6110c0565b348015610722575f5ffd5b50610373610731366004614853565b61111d565b348015610741575f5ffd5b5061056a602081565b348015610755575f5ffd5b506104c4610764366004614b9a565b611143565b348015610774575f5ffd5b506104c461078336600461486e565b61116d565b348015610793575f5ffd5b506104c46107a2366004614c06565b61118e565b3480156107b2575f5ffd5b506103a56107c1366004614717565b6111c1565b3480156107d1575f5ffd5b506103736107e0366004614717565b6111f7565b3480156107f0575f5ffd5b506103c9611243565b348015610804575f5ffd5b506104c4610813366004614c37565b611281565b348015610823575f5ffd5b506103735f81565b348015610836575f5ffd5b506103a561084536600461464e565b6112a2565b348015610855575f5ffd5b506103c9604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610885575f5ffd5b50610373610894366004614613565b6112af565b3480156108a4575f5ffd5b506103736108b3366004614c5f565b6112bb565b3480156108c3575f5ffd5b506103736108d2366004614c5f565b611308565b3480156108e2575f5ffd5b506104c46108f1366004614c06565b611355565b348015610901575f5ffd5b50610373610910366004614853565b611388565b348015610920575f5ffd5b5061037361092f366004614613565b6113ca565b34801561093f575f5ffd5b506103737f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc81565b348015610972575f5ffd5b50610373610981366004614853565b6113d5565b348015610991575f5ffd5b506104c46109a0366004614717565b6113eb565b3480156109b0575f5ffd5b506103736109bf366004614853565b611407565b3480156109cf575f5ffd5b506109d861144c565b60405161037d9190614c9e565b3480156109f0575f5ffd5b506103736109ff366004614ccf565b611492565b348015610a0f575f5ffd5b506103737fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b348015610a42575f5ffd5b50610373610a51366004614cfb565b6114db565b348015610a61575f5ffd5b506106b8611511565b5f610a7361154c565b905090565b5f6001600160e01b03198216637965db0b60e01b1480610aa857506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206151205f395f51905f5291610aec90614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1890614d24565b8015610b635780601f10610b3a57610100808354040283529160200191610b63565b820191905f5260205f20905b815481529060010190602001808311610b4657829003601f168201915b505050505091505090565b5f610aa8825f6115c7565b5f33610b8681858561161e565b5060019392505050565b5f610aa882600161162b565b5f5f60028460ff1660208110610bb457610bb4614d5c565b01546bffffffffffffffffffffffff1960609190911b1660ff60581b605885901b161860ff60501b605086901b16187f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc1891505092915050565b5f610c1881611679565b610c228383611686565b505050565b5f33610c348582856116e6565b610c3f858585611730565b60019150505b9392505050565b5f9081525f5160206151805f395f51905f52602052604090206001015490565b610c7582610c4c565b610c7e81611679565b610c88838361178d565b50505050565b5f805f5160206151a05f395f51905f5290505f8154610cb79190600160a01b900460ff16614d84565b91505090565b6001600160a01b0381163314610ce65760405163334bd91960e11b815260040160405180910390fd5b610c22828261182e565b6060610cfd8484846118a7565b5f60028560ff1660208110610d1457610d14614d5c565b01546001600160a01b0316905080610d3f57604051632711b74d60e11b815260040160405180910390fd5b610d6c848460028860ff1660208110610d5a57610d5a614d5c565b01546001600160a01b031691906118e4565b95945050505050565b5f610d7f82611936565b5f03610d8c57505f919050565b610aa8611973565b60605f5b5f60028260208110610dac57610dac614d5c565b01546001600160a01b031614801590610dc55750602081105b15610efa5760028160208110610ddd57610ddd614d5c565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e509190614d9d565b8303610eea57825483908190610e6590614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9190614d24565b8015610edc5780601f10610eb357610100808354040283529160200191610edc565b820191905f5260205f20905b815481529060010190602001808311610ebf57829003601f168201915b505050505092505050919050565b610ef381614db4565b9050610d98565b5060405163213109dd60e11b815260040160405180910390fd5b610f1c6119ff565b610f2582611aa5565b610f2f8282611acf565b5050565b610f3b61458d565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610f535790505050505050905090565b5f610f94611b8b565b505f5160206151605f395f51905f5290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fea5750825b90505f826001600160401b031660011480156110055750303b155b905081158015611013575080155b156110315760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561105b57845460ff60401b1916600160401b1785555b61106b8d8d8d8d8d8d8d8d611bd4565b83156110b157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f5f6110cb83610d75565b9050808411156110fd57828482604051633c8097d960e11b81526004016110f493929190614dcc565b60405180910390fd5b5f611107856113ca565b905061111533858784611bfe565b949350505050565b6001600160a01b03165f9081525f5160206151205f395f51905f52602052604090205490565b5f5160206151405f395f51905f5261115a81611679565b61116685858585611c13565b5050505050565b5f5160206151405f395f51905f5261118481611679565b610c228383611d4c565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c16111b881611679565b610f2f82611f51565b5f9182525f5160206151805f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f61120283611388565b90508084111561122b5782848260405163284ff66760e01b81526004016110f493929190614dcc565b5f611235856112af565b905061111533858388611bfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206151205f395f51905f5291610aec90614d24565b5f5160206151405f395f51905f5261129881611679565b610c2283836121b0565b5f33610b86818585611730565b5f610aa88260016115c7565b5f5f6112c6836113d5565b9050808511156112ef57828582604051633fa733bb60e21b81526004016110f493929190614dcc565b5f6112f986610b90565b9050610d6c33868689856127c7565b5f5f61131383611407565b90508085111561133c57828582604051632e52afbb60e21b81526004016110f493929190614dcc565b5f61134686610b6e565b9050610d6c338686848a6127c7565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c161137f81611679565b610f2f826127dd565b5f61139282611936565b5f0361139f57505f919050565b5f6113a8611973565b90505f1981146113c1576113bc815f61162b565b610c45565b5f199392505050565b5f610aa8825f61162b565b5f5f6113e083612a29565b9050610c4581612a3c565b6113f482610c4c565b6113fd81611679565b610c88838361182e565b5f5f61141283612ad1565b90505f61141f825f6115c7565b90505f61142b82612a3c565b90508181146114435761143e815f61162b565b610d6c565b50909392505050565b61145461458d565b604080516104008101918290529060029060209082845b81546001600160a01b0316815260019091019060200180831161146b575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f7fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4661150681611679565b610d6c858585612adb565b61151961458d565b604080516104008101918290525f805460ff1682529091602090826001838601808411610f535790505050505050905090565b5f5f5b5f6002826020811061156357611563614d5c565b01546001600160a01b03161480159061157c5750602081105b156115c3576115a76002826020811061159757611597614d5c565b01546001600160a01b0316612ccb565b6115b19083614ded565b91506115bc81614db4565b905061154f565b5090565b5f610c456115d3610a6a565b6115de906001614ded565b6115e95f600a614ee3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546116159190614ded565b85919085612d34565b610c228383836001612d76565b5f610c4561163a82600a614ee3565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546116669190614ded565b61166e610a6a565b611615906001614ded565b6116838133612e59565b50565b5f5160206151805f395f51905f525f61169e84610c4c565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f6116f18484611492565b90505f198114610c88578181101561172257828183604051637dc7a0d960e11b81526004016110f493929190614dcc565b610c8884848484035f612d76565b6001600160a01b03831661175957604051634b637e8f60e11b81525f60048201526024016110f4565b6001600160a01b0382166117825760405163ec442f0560e01b81525f60048201526024016110f4565b610c22838383612e92565b5f5f5160206151805f395f51905f526117a684846111c1565b611825575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556117db3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610aa8565b5f915050610aa8565b5f5f5160206151805f395f51905f5261184784846111c1565b15611825575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610aa8565b7f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc6118d181611679565b6118db8484610b9c565b61116681611679565b606061111583836040516024016118fc929190614ef1565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690612fb8565b5f6119617fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a6836111c1565b61196c57505f919050565b5f19610aa8565b5f5f5f5b5f6002826020811061198b5761198b614d5c565b01546001600160a01b0316148015906119a45750602081105b156119fa576119d8836119d3600284602081106119c3576119c3614d5c565b01546001600160a01b0316613021565b61304f565b93509150816119ea575f199250505090565b6119f381614db4565b9050611977565b505090565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611a8557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a795f5160206151605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611aa35760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610f2f81611679565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b29575060408051601f3d908101601f19168201909252611b2691810190614d9d565b60015b611b5157604051634c9c8ce360e01b81526001600160a01b03831660048201526024016110f4565b5f5160206151605f395f51905f528114611b8157604051632a87526960e21b8152600481018290526024016110f4565b610c228383613076565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611aa35760405163703e46dd60e11b815260040160405180910390fd5b611bdc6130cb565b611be888888888613114565b611bf484848484613171565b5050505050505050565b611c0a848484846136f2565b610c888261376f565b5f60028560ff1660208110611c2a57611c2a614d5c565b01546001600160a01b0316905080611c5557604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015611c8457505f60028260208110611c7657611c76614d5c565b01546001600160a01b031614155b15611cfa57846001600160a01b031660028260208110611ca657611ca6614d5c565b01546001600160a01b0316148015611cc157508560ff168114155b15611cea5760405163b5a9314f60e01b81526001600160a01b03861660048201526024016110f4565b611cf381614db4565b9050611c57565b50611d0f818585611d09613886565b866138a5565b8360028660ff1660208110611d2657611d26614d5c565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216611d7357604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015611da257505f60028260208110611d9457611d94614d5c565b01546001600160a01b031614155b15611e0857826001600160a01b031660028260208110611dc457611dc4614d5c565b01546001600160a01b031603611df85760405163b5a9314f60e01b81526001600160a01b03841660048201526024016110f4565b611e0181614db4565b9050611d75565b601f198101611e2d57604051600162ad1fab60e01b0319815260040160405180910390fd5b8260028260208110611e4157611e41614d5c565b0180546001600160a01b0319166001600160a01b0392909216919091179055611e6b816001614ded565b5f8260208110611e7d57611e7d614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806001611eaa9190614ded565b60018260208110611ebd57611ebd614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550611ef8611ee8613886565b6001600160a01b038516906139f3565b611f0b6001600160a01b03841683613a85565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b611f5961458d565b81515f9060201015611f7e5760405163a29b1f1160e01b815260040160405180910390fd5b825181101561212957602060ff16838281518110611f9e57611f9e614d5c565b602002602001015160ff16101580611ff757505f6001600160a01b03166002848381518110611fcf57611fcf614d5c565b602002602001015160ff1660208110611fea57611fea614d5c565b01546001600160a01b0316145b156120155760405163a29b1f1160e01b815260040160405180910390fd5b8183828151811061202857612028614d5c565b602002602001015160ff166020811061204357612043614d5c565b60200201511561208a5782818151811061205f5761205f614d5c565b602002602001015160405163c41fdbb960e01b81526004016110f4919060ff91909116815260200190565b60018284838151811061209f5761209f614d5c565b602002602001015160ff16602081106120ba576120ba614d5c565b9115156020909202015282518390829081106120d8576120d8614d5c565b602002602001015160016120ec9190614d84565b5f82602081106120fe576120fe614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050611f7e565b60208110801561215657505f6002826020811061214857612148614d5c565b01546001600160a01b031614155b1561217457604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec836040516121a39190614f0c565b60405180910390a1505050565b602060ff8316106121d457604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff16602081106121eb576121eb614d5c565b01546001600160a01b031690508061221657604051632711b74d60e11b815260040160405180910390fd5b811580156122345750612231816001600160a01b0316612ccb565b15155b15612252576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561226c57506003546001600160a01b0316155b1561228d57604051600162ad1fab60e01b0319815260040160405180910390fd5b5f612299846001614d84565b60ff1690505b6020811080156122cc57505f600282602081106122be576122be614d5c565b01546001600160a01b031614155b1561233b57600281602081106122e4576122e4614d5c565b01546001600160a01b031660026122fc600184614f51565b6020811061230c5761230c614d5c565b0180546001600160a01b0319166001600160a01b039290921691909117905561233481614db4565b905061229f565b5f6002612349600184614f51565b6020811061235957612359614d5c565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061239057612390614d5c565b602081049091015460ff601f9092166101000a900416158015906123b45750602083105b156126e6578015612478576123ca866001614d84565b60ff16600184602081106123e0576123e0614d5c565b602081049091015460ff601f9092166101000a90041611612401575f612404565b60015b6001846020811061241757612417614d5c565b602091828204019190069054906101000a900460ff166124379190614f64565b60016124438186614f51565b6020811061245357612453614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550612549565b612483866001614d84565b60ff166001846020811061249957612499614d5c565b602081049091015460ff601f9092166101000a900416036124bc57506001612549565b6124c7866001614d84565b60ff16600184602081106124dd576124dd614d5c565b602081049091015460ff601f9092166101000a900416111561254957600180846020811061250d5761250d614d5c565b602091828204019190068282829054906101000a900460ff166125309190614f64565b92506101000a81548160ff021916908360ff1602179055505b81156126065761255a866001614d84565b60ff165f846020811061256f5761256f614d5c565b602081049091015460ff601f9092166101000a90041611612590575f612593565b60015b5f84602081106125a5576125a5614d5c565b602091828204019190069054906101000a900460ff166125c59190614f64565b5f6125d1600186614f51565b602081106125e1576125e1614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055506126d6565b612611866001614d84565b60ff165f846020811061262657612626614d5c565b602081049091015460ff601f9092166101000a9004160361264a57600191506126d6565b612655866001614d84565b60ff165f846020811061266a5761266a614d5c565b602081049091015460ff601f9092166101000a90041611156126d65760015f846020811061269a5761269a614d5c565b602091828204019190068282829054906101000a900460ff166126bd9190614f64565b92506101000a81548160ff021916908360ff1602179055505b6126df83614db4565b925061237d565b5f806126f3600186614f51565b6020811061270357612703614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055505f600180856127329190614f51565b6020811061274257612742614d5c565b602091828204019190066101000a81548160ff021916908360ff16021790555061277e85856001600160a01b0316613ad390919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b6127d082613bf8565b6111668585858585613d0b565b6127e561458d565b81515f906020101561280a5760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff1610156129a957602060ff16838260ff168151811061283057612830614d5c565b602002602001015160ff1610158061288c57505f6001600160a01b03166002848360ff168151811061286457612864614d5c565b602002602001015160ff166020811061287f5761287f614d5c565b01546001600160a01b0316145b156128aa5760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff16815181106128c0576128c0614d5c565b602002602001015160ff16602081106128db576128db614d5c565b6020020151156128fa57828160ff168151811061205f5761205f614d5c565b600182848360ff168151811061291257612912614d5c565b602002602001015160ff166020811061292d5761292d614d5c565b911515602090920201528251839060ff831690811061294e5761294e614d5c565b602002602001015160016129629190614d84565b60018260ff166020811061297857612978614d5c565b602091828204019190066101000a81548160ff021916908360ff160217905550806129a290614f7d565b905061280a565b602060ff82161080156129dc57505f600260ff8316602081106129ce576129ce614d5c565b01546001600160a01b031614155b156129fa57604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516121a39190614f0c565b5f610aa8612a368361111d565b5f6115c7565b5f5f5f5b5f60028260208110612a5457612a54614d5c565b01546001600160a01b031614801590612a6d5750602081105b15612aca57612a9c836119d360028460208110612a8c57612a8c614d5c565b01546001600160a01b0316613dbf565b93509150811580612aad5750838310155b15612aba57509192915050565b612ac381614db4565b9050612a40565b5050919050565b5f610aa88261111d565b5f602060ff8516101580612af35750602060ff841610155b15612b1157604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff1660208110612b2857612b28614d5c565b01546001600160a01b031690505f600260ff861660208110612b4c57612b4c614d5c565b01546001600160a01b03908116915082161580612b7057506001600160a01b038116155b15612b8e57604051632711b74d60e11b815260040160405180910390fd5b5f198403612bab57612ba8826001600160a01b0316612ccb565b93505b835f03612bbc575f92505050610c45565b612bce826001600160a01b0316613dbf565b841115612c0357612be7826001600160a01b0316613dbf565b604051633ce011d560e01b81526004016110f491815260200190565b612c15816001600160a01b0316613021565b841115612c4a57612c2e816001600160a01b0316613021565b6040516350a3e37560e11b81526004016110f491815260200190565b612c5e6001600160a01b038316855f613ded565b50612c736001600160a01b038216855f613f29565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b86604051612cb991815260200190565b60405180910390a35091949350505050565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612d10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa89190614d9d565b5f612d61612d418361404a565b8015612d5c57505f8480612d5757612d57614f9b565b868809115b151590565b612d6c868686614076565b610d6c9190614ded565b5f5160206151205f395f51905f526001600160a01b038516612dad5760405163e602df0560e01b81525f60048201526024016110f4565b6001600160a01b038416612dd657604051634a1406b160e11b81525f60048201526024016110f4565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561116657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051612e4a91815260200190565b60405180910390a35050505050565b612e6382826111c1565b610f2f5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016110f4565b5f5160206151205f395f51905f526001600160a01b038416612ecc5781816002015f828254612ec19190614ded565b90915550612f299050565b6001600160a01b0384165f9081526020829052604090205482811015612f0b5784818460405163391434e360e21b81526004016110f493929190614dcc565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612f47576002810180548390039055612f65565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612faa91815260200190565b60405180910390a350505050565b60605f5f846001600160a01b031684604051612fd49190614faf565b5f60405180830381855af49150503d805f811461300c576040519150601f19603f3d011682016040523d82523d5f602084013e613011565b606091505b5091509150610d6c85838361412c565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612cf5565b5f8083830184811015613068575f5f925092505061306f565b6001925090505b9250929050565b61307f82614183565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156130c357610c228282612fb8565b610f2f6141e6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611aa357604051631afcd79f60e31b815260040160405180910390fd5b61311c6130cb565b613124614205565b61312c614205565b6001600160a01b038116613155576040516337bce3c560e11b81525f60048201526024016110f4565b61315e8161420d565b613168848461421e565b610c8882614230565b83511580613180575083516020105b8061318d57508251845114155b8061319a57508151845114155b806131a757508051845114155b156131c857604051600162ad1fab60e01b0319815260040160405180910390fd5b6131d061458d565b6131d861458d565b5f5b865181101561367b575f6001600160a01b03168782815181106131ff576131ff614d5c565b60200260200101516001600160a01b03160361322e57604051632711b74d60e11b815260040160405180910390fd5b61326a613239613886565b88838151811061324b5761324b614d5c565b60200260200101516001600160a01b03166139f390919063ffffffff16565b5f5b8181101561330a5787818151811061328657613286614d5c565b60200260200101516001600160a01b03168883815181106132a9576132a9614d5c565b60200260200101516001600160a01b031603613302578782815181106132d1576132d1614d5c565b602002602001015160405163b5a9314f60e01b81526004016110f491906001600160a01b0391909116815260200190565b60010161326c565b50865185828151811061331f5761331f614d5c565b602002602001015160ff1610158061336657508285828151811061334557613345614d5c565b602002602001015160ff166020811061336057613360614d5c565b60200201515b156133a85784818151811061337d5761337d614d5c565b602002602001015160405163306ccd5d60e11b81526004016110f4919060ff91909116815260200190565b86518482815181106133bc576133bc614d5c565b602002602001015160ff161015806134035750818482815181106133e2576133e2614d5c565b602002602001015160ff16602081106133fd576133fd614d5c565b60200201515b156134455783818151811061341a5761341a614d5c565b6020026020010151604051632776924160e11b81526004016110f4919060ff91909116815260200190565b60018386838151811061345a5761345a614d5c565b602002602001015160ff166020811061347557613475614d5c565b60200201901515908115158152505060018285838151811061349957613499614d5c565b602002602001015160ff16602081106134b4576134b4614d5c565b9115156020909202015286518790829081106134d2576134d2614d5c565b6020026020010151600282602081106134ed576134ed614d5c565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061352357613523614d5c565b602002602001015160016135379190614d84565b5f826020811061354957613549614d5c565b602091828204019190066101000a81548160ff021916908360ff16021790555083818151811061357b5761357b614d5c565b6020026020010151600161358f9190614d84565b600182602081106135a2576135a2614d5c565b602091828204019190066101000a81548160ff021916908360ff1602179055506136108682815181106135d7576135d7614d5c565b60200260200101518883815181106135f1576135f1614d5c565b60200260200101516001600160a01b0316613a8590919063ffffffff16565b86818151811061362257613622614d5c565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f588260405161366b919060ff91909116815260200190565b60405180910390a26001016131da565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec846040516136ab9190614f0c565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c836040516136e29190614f0c565b60405180910390a1505050505050565b5f5160206151a05f395f51905f528054613717906001600160a01b0316863086614242565b61372184836142a9565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612e4a929190918252602082015260400190565b805f5b81158015906137a757505f816020811061378e5761378e614d5c565b602081049091015460ff601f9092166101000a90041615155b80156137b35750602081105b15613866575f600260015f84602081106137cf576137cf614d5c565b602091828204019190069054906101000a900460ff166137ef9190614f64565b60ff166020811061380257613802614d5c565b01546001600160a01b031690505f6138228461381d84613021565b6142dd565b9050805f03613832575050613856565b6138466001600160a01b038316825f613f29565b506138518185614f51565b935050505b61385f81614db4565b9050613772565b508015610f2f5760405163285a546d60e01b815260040160405180910390fd5b5f610a735f5160206151a05f395f51905f52546001600160a01b031690565b6138af84836139f3565b60405163f3e0ffbf60e01b81523060048201526139219086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156138f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061391b9190614d9d565b83613ded565b5061392c8582613ad3565b6139368484613a85565b6040516370a0823160e01b81523060048201526139a89085906001600160a01b038516906370a0823190602401602060405180830381865afa15801561397e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139a29190614d9d565b83613f29565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa158015613a3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a5e9190614fc5565b6001600160a01b031614610f2f5760405163e76673ef60e01b815260040160405180910390fd5b610c2281604051602401613a999190614601565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690612fb8565b8015613bae57604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251613b2a9190614faf565b5f60405180830381855af49150503d805f8114613b62576040519150601f19603f3d011682016040523d82523d5f602084013e613b67565b606091505b509150915081610c88577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051613ba09190614601565b60405180910390a150505050565b6040515f6024820152610c229060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690612fb8565b805f5b8115801590613c31575060018160208110613c1857613c18614d5c565b602081049091015460ff601f9092166101000a90041615155b8015613c3d5750602081105b15613ceb575f60026001808460208110613c5957613c59614d5c565b602091828204019190069054906101000a900460ff16613c799190614f64565b60ff1660208110613c8c57613c8c614d5c565b01546001600160a01b031690505f613ca78461381d84613dbf565b9050805f03613cb7575050613cdb565b613ccb6001600160a01b038316825f613ded565b50613cd68185614f51565b935050505b613ce481614db4565b9050613bfb565b508015610f2f5760405163351dc55d60e21b815260040160405180910390fd5b5f5160206151a05f395f51905f526001600160a01b0386811690851614613d3757613d378487846116e6565b613d4184836142ec565b8054613d57906001600160a01b03168685614320565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051613daf929190918252602082015260400190565b60405180910390a4505050505050565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612cf5565b5f8115613ecf575f5f856001600160a01b031685604051602401613e1391815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251613e489190614faf565b5f60405180830381855af49150503d805f8114613e80576040519150601f19603f3d011682016040523d82523d5f602084013e613e85565b606091505b509150915081613ec7577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051613ebe9190614601565b60405180910390a15b509050610c45565b613f1f83604051602401613ee591815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690612fb8565b5060019050610c45565b5f8115613ffa575f5f856001600160a01b031685604051602401613f4f91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251613f849190614faf565b5f60405180830381855af49150503d805f8114613fbc576040519150601f19603f3d011682016040523d82523d5f602084013e613fc1565b606091505b509150915081613ec7577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051613ebe9190614601565b613f1f8360405160240161401091815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690612fb8565b5f600282600381111561405f5761405f614fe0565b6140699190614ff4565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036140aa578382816140a0576140a0614f9b565b0492505050610c45565b8084116140c1576140c16003851502601118614351565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60608261413c576113bc82614362565b815115801561415357506001600160a01b0384163b155b1561417c57604051639996b31560e01b81526001600160a01b03851660048201526024016110f4565b5080610c45565b806001600160a01b03163b5f036141b857604051634c9c8ce360e01b81526001600160a01b03821660048201526024016110f4565b5f5160206151605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b3415611aa35760405163b398979f60e01b815260040160405180910390fd5b611aa36130cb565b6142156130cb565b6116838161438b565b6142266130cb565b610f2f82826143fb565b6142386130cb565b610f2f5f8261178d565b6040516001600160a01b038481166024830152838116604483015260648201839052610c889186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061444b565b6001600160a01b0382166142d25760405163ec442f0560e01b81525f60048201526024016110f4565b610f2f5f8383612e92565b5f828218828410028218610c45565b6001600160a01b03821661431557604051634b637e8f60e11b81525f60048201526024016110f4565b610f2f825f83612e92565b6040516001600160a01b03838116602483015260448201839052610c2291859182169063a9059cbb90606401614277565b634e487b715f52806020526024601cfd5b8051156143725780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6143936130cb565b5f5160206151a05f395f51905f525f806143ac846144b7565b91509150816143bc5760126143be565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b6144036130cb565b5f5160206151205f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361443c8482615065565b5060048101610c888382615065565b5f5f60205f8451602086015f885af18061446a576040513d5f823e3d81fd5b50505f513d9150811561448157806001141561448e565b6001600160a01b0384163b155b15610c8857604051635274afe760e01b81526001600160a01b03851660048201526024016110f4565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b038716916144fd91614faf565b5f60405180830381855afa9150503d805f8114614535576040519150601f19603f3d011682016040523d82523d5f602084013e61453a565b606091505b509150915081801561454e57506020815110155b15614581575f818060200190518101906145689190614d9d565b905060ff811161457f576001969095509350505050565b505b505f9485945092505050565b6040518061040001604052806020906020820280368337509192915050565b5f602082840312156145bc575f5ffd5b81356001600160e01b031981168114610c45575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c4560208301846145d3565b5f60208284031215614623575f5ffd5b5035919050565b6001600160a01b0381168114611683575f5ffd5b80356146498161462a565b919050565b5f5f6040838503121561465f575f5ffd5b823561466a8161462a565b946020939093013593505050565b803560ff81168114614649575f5ffd5b5f5f60408385031215614699575f5ffd5b6146a283614678565b91506146b060208401614678565b90509250929050565b5f5f604083850312156146ca575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156146eb575f5ffd5b83356146f68161462a565b925060208401356147068161462a565b929592945050506040919091013590565b5f5f60408385031215614728575f5ffd5b82359150602083013561473a8161462a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561478157614781614745565b604052919050565b5f82601f830112614798575f5ffd5b8135602083015f5f6001600160401b038411156147b7576147b7614745565b50601f8301601f19166020016147cc81614759565b9150508281528583830111156147e0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f6060848603121561480c575f5ffd5b61481584614678565b925061482360208501614678565b915060408401356001600160401b0381111561483d575f5ffd5b61484986828701614789565b9150509250925092565b5f60208284031215614863575f5ffd5b8135610c458161462a565b5f5f6040838503121561487f575f5ffd5b823561488a8161462a565b915060208301356001600160401b038111156148a4575f5ffd5b6148b085828601614789565b9150509250929050565b610400810181835f5b60208110156148e557815160ff168352602092830192909101906001016148c3565b50505092915050565b5f6001600160401b0382111561490657614906614745565b5060051b60200190565b5f82601f83011261491f575f5ffd5b813561493261492d826148ee565b614759565b8082825260208201915060208360051b860101925085831115614953575f5ffd5b602085015b8381101561497957803561496b8161462a565b835260209283019201614958565b5095945050505050565b5f82601f830112614992575f5ffd5b81356149a061492d826148ee565b8082825260208201915060208360051b8601019250858311156149c1575f5ffd5b602085015b838110156149795780356001600160401b038111156149e3575f5ffd5b6149f2886020838a0101614789565b845250602092830192016149c6565b5f82601f830112614a10575f5ffd5b8135614a1e61492d826148ee565b8082825260208201915060208360051b860101925085831115614a3f575f5ffd5b602085015b8381101561497957614a5581614678565b835260209283019201614a44565b5f5f5f5f5f5f5f5f610100898b031215614a7b575f5ffd5b88356001600160401b03811115614a90575f5ffd5b614a9c8b828c01614789565b98505060208901356001600160401b03811115614ab7575f5ffd5b614ac38b828c01614789565b975050614ad260408a0161463e565b9550614ae060608a0161463e565b945060808901356001600160401b03811115614afa575f5ffd5b614b068b828c01614910565b94505060a08901356001600160401b03811115614b21575f5ffd5b614b2d8b828c01614983565b93505060c08901356001600160401b03811115614b48575f5ffd5b614b548b828c01614a01565b92505060e08901356001600160401b03811115614b6f575f5ffd5b614b7b8b828c01614a01565b9150509295985092959890939650565b80358015158114614649575f5ffd5b5f5f5f5f60808587031215614bad575f5ffd5b614bb685614678565b93506020850135614bc68161462a565b925060408501356001600160401b03811115614be0575f5ffd5b614bec87828801614789565b925050614bfb60608601614b8b565b905092959194509250565b5f60208284031215614c16575f5ffd5b81356001600160401b03811115614c2b575f5ffd5b61111584828501614a01565b5f5f60408385031215614c48575f5ffd5b614c5183614678565b91506146b060208401614b8b565b5f5f5f60608486031215614c71575f5ffd5b833592506020840135614c838161462a565b91506040840135614c938161462a565b809150509250925092565b610400810181835f5b60208110156148e55781516001600160a01b0316835260209283019290910190600101614ca7565b5f5f60408385031215614ce0575f5ffd5b8235614ceb8161462a565b9150602083013561473a8161462a565b5f5f5f60608486031215614d0d575f5ffd5b614d1684614678565b925061470660208501614678565b600181811c90821680614d3857607f821691505b602082108103614d5657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b60ff8181168382160190811115610aa857610aa8614d70565b5f60208284031215614dad575f5ffd5b5051919050565b5f60018201614dc557614dc5614d70565b5060010190565b6001600160a01b039390931683526020830191909152604082015260600190565b80820180821115610aa857610aa8614d70565b6001815b6001841115614e3b57808504811115614e1f57614e1f614d70565b6001841615614e2d57908102905b60019390931c928002614e04565b935093915050565b5f82614e5157506001610aa8565b81614e5d57505f610aa8565b8160018114614e735760028114614e7d57614e99565b6001915050610aa8565b60ff841115614e8e57614e8e614d70565b50506001821b610aa8565b5060208310610133831016604e8410600b8410161715614ebc575081810a610aa8565b614ec85f198484614e00565b805f1904821115614edb57614edb614d70565b029392505050565b5f610c4560ff841683614e43565b60ff83168152604060208201525f61111560408301846145d3565b602080825282518282018190525f918401906040840190835b81811015614f4657835160ff16835260209384019390920191600101614f25565b509095945050505050565b81810381811115610aa857610aa8614d70565b60ff8281168282160390811115610aa857610aa8614d70565b5f60ff821660ff8103614f9257614f92614d70565b60010192915050565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215614fd5575f5ffd5b8151610c458161462a565b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061501257634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610c2257805f5260205f20601f840160051c810160208510156150465750805b601f840160051c820191505b81811015611166575f8155600101615052565b81516001600160401b0381111561507e5761507e614745565b6150928161508c8454614d24565b84615021565b6020601f8211600181146150c4575f83156150ad5750848201515b5f19600385901b1c1916600184901b178455611166565b5f84815260208120601f198516915b828110156150f357878501518255602094850194600190920191016150d3565b508482101561511057868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005604e2fe54b4de17b81a5ded6f82357d742fd2722d67304e37ff20bd589b4f38360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a26469706673582212201c9b7fe0f18e75a0251d462b589a16503c58d706f46971a5675dd8ec8649302a64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1BD JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xE1D39450 GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0xA04 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0xA37 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0xA56 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xD905777E EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x9C4 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x9E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xC6E6F592 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x915 JUMPI DUP1 PUSH4 0xCD0E0F44 EQ PUSH2 0x934 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x967 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x986 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x8B8 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x8D7 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x8F6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x15D JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x138 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x82B JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x84A JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x87A JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x899 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x818 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7AEEDF2A GT PUSH2 0x198 JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x788 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x7A7 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x7C6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x717 JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x74A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x293 JUMPI DUP1 PUSH4 0x490B48F8 GT PUSH2 0x233 JUMPI DUP1 PUSH4 0x51A2D6D1 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x6A4 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x6B3EA526 EQ PUSH2 0x6D9 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x6F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x490B48F8 EQ PUSH2 0x65E JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x691 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x38D52E0F GT PUSH2 0x26E JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x63F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x57C JUMPI DUP1 PUSH4 0x367FEE39 EQ PUSH2 0x59B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x128B772F GT PUSH2 0x2FE JUMPI DUP1 PUSH4 0x23B872DD GT PUSH2 0x2D9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x504 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x537 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x128B772F EQ PUSH2 0x453 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x472 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x4A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x7A2D13A GT PUSH2 0x339 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x414 JUMPI DUP1 PUSH4 0xB74CE8C EQ PUSH2 0x433 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x3B5 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xA6A 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 0x391 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x45AC JUMP JUMPDEST PUSH2 0xA78 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xAAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xB6E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x400 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x40F CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0xB79 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x41F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x42E CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xB90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x4688 JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x373 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x4BF CALLDATASIZE PUSH1 0x4 PUSH2 0x46B9 JUMP JUMPDEST PUSH2 0xC0E JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D9 JUMP JUMPDEST PUSH2 0xC27 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x4FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xC4C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x542 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x551 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0xC6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x561 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH2 0xC8E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x587 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x596 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0xCBD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x37D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x47FA JUMP JUMPDEST PUSH2 0xCF0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0xD75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x659 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0xD94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x669 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0xCCC64574297998B6C3EDF6078CC5E01268465FF116954E3AF02FF3A70A730F46 DUP2 JUMP JUMPDEST PUSH2 0x4C4 PUSH2 0x69F CALLDATASIZE PUSH1 0x4 PUSH2 0x486E JUMP JUMPDEST PUSH2 0xF14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B8 PUSH2 0xF33 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x48BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xF8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x6F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A63 JUMP JUMPDEST PUSH2 0xFA6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x703 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x712 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x10C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x722 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x731 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x111D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x56A PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x755 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B9A JUMP JUMPDEST PUSH2 0x1143 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x774 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x783 CALLDATASIZE PUSH1 0x4 PUSH2 0x486E JUMP JUMPDEST PUSH2 0x116D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x793 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x7A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C06 JUMP JUMPDEST PUSH2 0x118E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x11C1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x7E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x11F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x1243 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x804 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x813 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C37 JUMP JUMPDEST PUSH2 0x1281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x823 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x836 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x845 CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3C9 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 0x885 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x894 CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0x12AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C5F JUMP JUMPDEST PUSH2 0x12BB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x8D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C5F JUMP JUMPDEST PUSH2 0x1308 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x8F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C06 JUMP JUMPDEST PUSH2 0x1355 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x901 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x910 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x1388 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x920 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x92F CALLDATASIZE PUSH1 0x4 PUSH2 0x4613 JUMP JUMPDEST PUSH2 0x13CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x972 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x981 CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x13D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x991 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4C4 PUSH2 0x9A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4717 JUMP JUMPDEST PUSH2 0x13EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x9BF CALLDATASIZE PUSH1 0x4 PUSH2 0x4853 JUMP JUMPDEST PUSH2 0x1407 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9CF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x9D8 PUSH2 0x144C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x4C9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0x9FF CALLDATASIZE PUSH1 0x4 PUSH2 0x4CCF JUMP JUMPDEST PUSH2 0x1492 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA42 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x373 PUSH2 0xA51 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CFB JUMP JUMPDEST PUSH2 0x14DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA61 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x6B8 PUSH2 0x1511 JUMP JUMPDEST PUSH0 PUSH2 0xA73 PUSH2 0x154C JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xAA8 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0xAEC SWAP1 PUSH2 0x4D24 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 0xB18 SWAP1 PUSH2 0x4D24 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xB63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xB3A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xB63 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 0xB46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH0 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xB86 DUP2 DUP6 DUP6 PUSH2 0x161E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH1 0x1 PUSH2 0x162B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x2 DUP5 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xBB4 JUMPI PUSH2 0xBB4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xFF PUSH1 0x58 SHL PUSH1 0x58 DUP6 SWAP1 SHL AND XOR PUSH1 0xFF PUSH1 0x50 SHL PUSH1 0x50 DUP7 SWAP1 SHL AND XOR PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC XOR SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC18 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x1686 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xC34 DUP6 DUP3 DUP6 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0xC3F DUP6 DUP6 DUP6 PUSH2 0x1730 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC75 DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0xC7E DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC88 DUP4 DUP4 PUSH2 0x178D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xCB7 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4D84 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xCE6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC22 DUP3 DUP3 PUSH2 0x182E JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCFD DUP5 DUP5 DUP5 PUSH2 0x18A7 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD14 JUMPI PUSH2 0xD14 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xD3F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD6C DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xD5A JUMPI PUSH2 0xD5A PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x18E4 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD7F DUP3 PUSH2 0x1936 JUMP JUMPDEST PUSH0 SUB PUSH2 0xD8C JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xAA8 PUSH2 0x1973 JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xDAC JUMPI PUSH2 0xDAC PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xDC5 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xEFA JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xDDD JUMPI PUSH2 0xDDD PUSH2 0x4D5C 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 0xE2C 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 0xE50 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 SUB PUSH2 0xEEA JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xE65 SWAP1 PUSH2 0x4D24 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 0x4D24 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 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xEF3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0xD98 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 0xF1C PUSH2 0x19FF JUMP JUMPDEST PUSH2 0xF25 DUP3 PUSH2 0x1AA5 JUMP JUMPDEST PUSH2 0xF2F DUP3 DUP3 PUSH2 0x1ACF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xF3B PUSH2 0x458D 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 0xF53 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xF94 PUSH2 0x1B8B JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xFEA JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1005 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1013 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1031 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 0x105B JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x106B DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0x1BD4 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x10B1 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 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x10CB DUP4 PUSH2 0xD75 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x10FD JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x1107 DUP6 PUSH2 0x13CA JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 CALLER DUP6 DUP8 DUP5 PUSH2 0x1BFE 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 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x115A DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x1166 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1C13 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1184 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x1D4C JUMP JUMPDEST PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 PUSH2 0x11B8 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH2 0x1F51 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1202 DUP4 PUSH2 0x1388 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x122B JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x1235 DUP6 PUSH2 0x12AF JUMP JUMPDEST SWAP1 POP PUSH2 0x1115 CALLER DUP6 DUP4 DUP9 PUSH2 0x1BFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0xAEC SWAP1 PUSH2 0x4D24 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5140 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1298 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x21B0 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xB86 DUP2 DUP6 DUP6 PUSH2 0x1730 JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH1 0x1 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x12C6 DUP4 PUSH2 0x13D5 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x12EF JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x12F9 DUP7 PUSH2 0xB90 JUMP JUMPDEST SWAP1 POP PUSH2 0xD6C CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x27C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1313 DUP4 PUSH2 0x1407 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x133C JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH0 PUSH2 0x1346 DUP7 PUSH2 0xB6E JUMP JUMPDEST SWAP1 POP PUSH2 0xD6C CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x27C7 JUMP JUMPDEST PUSH32 0x326866B70291D731C5324FD58AE009670D3E8C69FCCBEF09E56E5C87E78B69C1 PUSH2 0x137F DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH2 0x27DD JUMP JUMPDEST PUSH0 PUSH2 0x1392 DUP3 PUSH2 0x1936 JUMP JUMPDEST PUSH0 SUB PUSH2 0x139F JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x13A8 PUSH2 0x1973 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x13C1 JUMPI PUSH2 0x13BC DUP2 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x13E0 DUP4 PUSH2 0x2A29 JUMP JUMPDEST SWAP1 POP PUSH2 0xC45 DUP2 PUSH2 0x2A3C JUMP JUMPDEST PUSH2 0x13F4 DUP3 PUSH2 0xC4C JUMP JUMPDEST PUSH2 0x13FD DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xC88 DUP4 DUP4 PUSH2 0x182E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1412 DUP4 PUSH2 0x2AD1 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x141F DUP3 PUSH0 PUSH2 0x15C7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x142B DUP3 PUSH2 0x2A3C JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1443 JUMPI PUSH2 0x143E DUP2 PUSH0 PUSH2 0x162B JUMP JUMPDEST PUSH2 0xD6C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1454 PUSH2 0x458D 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 0x146B 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 PUSH32 0xCCC64574297998B6C3EDF6078CC5E01268465FF116954E3AF02FF3A70A730F46 PUSH2 0x1506 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0xD6C DUP6 DUP6 DUP6 PUSH2 0x2ADB JUMP JUMPDEST PUSH2 0x1519 PUSH2 0x458D 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 0xF53 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 0x1563 JUMPI PUSH2 0x1563 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x157C JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x15C3 JUMPI PUSH2 0x15A7 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1597 JUMPI PUSH2 0x1597 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST PUSH2 0x15B1 SWAP1 DUP4 PUSH2 0x4DED JUMP JUMPDEST SWAP2 POP PUSH2 0x15BC DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x154F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH2 0x15D3 PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x15DE SWAP1 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x15E9 PUSH0 PUSH1 0xA PUSH2 0x4EE3 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1615 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x2D34 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2D76 JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH2 0x163A DUP3 PUSH1 0xA PUSH2 0x4EE3 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x1666 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x166E PUSH2 0xA6A JUMP JUMPDEST PUSH2 0x1615 SWAP1 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH2 0x1683 DUP2 CALLER PUSH2 0x2E59 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x169E DUP5 PUSH2 0xC4C JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x16F1 DUP5 DUP5 PUSH2 0x1492 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xC88 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x1722 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH2 0xC88 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x2D76 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1759 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x17A6 DUP5 DUP5 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0x1825 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x17DB CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5180 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x1847 DUP5 DUP5 PUSH2 0x11C1 JUMP JUMPDEST ISZERO PUSH2 0x1825 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH32 0x6E824273980C4B4B65DB074AEECCB75BEC12F5E2E377C170763AF52D00C592CC PUSH2 0x18D1 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH2 0x18DB DUP5 DUP5 PUSH2 0xB9C JUMP JUMPDEST PUSH2 0x1166 DUP2 PUSH2 0x1679 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1115 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x18FC SWAP3 SWAP2 SWAP1 PUSH2 0x4EF1 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 0x2FB8 JUMP JUMPDEST PUSH0 PUSH2 0x1961 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0x196C JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0xAA8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x198B JUMPI PUSH2 0x198B PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x19A4 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH2 0x19D8 DUP4 PUSH2 0x19D3 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x19C3 JUMPI PUSH2 0x19C3 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x304F JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x19EA JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19F3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1977 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1A85 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1A79 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 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 0x1AA3 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xF2F DUP2 PUSH2 0x1679 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 0x1B29 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1B26 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4D9D JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1B51 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 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1B81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xC22 DUP4 DUP4 PUSH2 0x3076 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BDC PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x1BE8 DUP9 DUP9 DUP9 DUP9 PUSH2 0x3114 JUMP JUMPDEST PUSH2 0x1BF4 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3171 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C0A DUP5 DUP5 DUP5 DUP5 PUSH2 0x36F2 JUMP JUMPDEST PUSH2 0xC88 DUP3 PUSH2 0x376F JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1C2A JUMPI PUSH2 0x1C2A PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1C55 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 0x1C84 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1C76 JUMPI PUSH2 0x1C76 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CFA JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1CA6 JUMPI PUSH2 0x1CA6 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x1CC1 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1CEA 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 0x10F4 JUMP JUMPDEST PUSH2 0x1CF3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C57 JUMP JUMPDEST POP PUSH2 0x1D0F DUP2 DUP6 DUP6 PUSH2 0x1D09 PUSH2 0x3886 JUMP JUMPDEST DUP7 PUSH2 0x38A5 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D26 JUMPI PUSH2 0x1D26 PUSH2 0x4D5C 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 0x1D73 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 0x1DA2 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1D94 JUMPI PUSH2 0x1D94 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E08 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1DC4 JUMPI PUSH2 0x1DC4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1DF8 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 0x10F4 JUMP JUMPDEST PUSH2 0x1E01 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D75 JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x1E2D 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 0x1E41 JUMPI PUSH2 0x1E41 PUSH2 0x4D5C 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 0x1E6B DUP2 PUSH1 0x1 PUSH2 0x4DED JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1E7D JUMPI PUSH2 0x1E7D PUSH2 0x4D5C 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 0x1EAA SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1EBD JUMPI PUSH2 0x1EBD PUSH2 0x4D5C 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 0x1EF8 PUSH2 0x1EE8 PUSH2 0x3886 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x39F3 JUMP JUMPDEST PUSH2 0x1F0B PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x3A85 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 PUSH2 0x1F59 PUSH2 0x458D JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1F7E 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 0x2129 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F9E JUMPI PUSH2 0x1F9E PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1FF7 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FCF JUMPI PUSH2 0x1FCF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1FEA JUMPI PUSH2 0x1FEA PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x2015 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 0x2028 JUMPI PUSH2 0x2028 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2043 JUMPI PUSH2 0x2043 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x208A JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x205F JUMPI PUSH2 0x205F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x209F JUMPI PUSH2 0x209F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x20BA JUMPI PUSH2 0x20BA PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x20D8 JUMPI PUSH2 0x20D8 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x20EC SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x20FE JUMPI PUSH2 0x20FE PUSH2 0x4D5C 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 0x1F7E JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x2156 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2148 JUMPI PUSH2 0x2148 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2174 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 0x21A3 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x21D4 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 0x21EB JUMPI PUSH2 0x21EB PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x2216 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 0x2234 JUMPI POP PUSH2 0x2231 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2252 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 0x226C JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x228D 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 0x2299 DUP5 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x22CC JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x22BE JUMPI PUSH2 0x22BE PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x233B JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x22E4 JUMPI PUSH2 0x22E4 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x22FC PUSH1 0x1 DUP5 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x230C JUMPI PUSH2 0x230C PUSH2 0x4D5C 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 0x2334 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x229F JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x2349 PUSH1 0x1 DUP5 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2359 JUMPI PUSH2 0x2359 PUSH2 0x4D5C 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 0x2390 JUMPI PUSH2 0x2390 PUSH2 0x4D5C 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 0x23B4 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x26E6 JUMPI DUP1 ISZERO PUSH2 0x2478 JUMPI PUSH2 0x23CA DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x23E0 JUMPI PUSH2 0x23E0 PUSH2 0x4D5C 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 0x2401 JUMPI PUSH0 PUSH2 0x2404 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2417 JUMPI PUSH2 0x2417 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2437 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2443 DUP2 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2453 JUMPI PUSH2 0x2453 PUSH2 0x4D5C 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 0x2549 JUMP JUMPDEST PUSH2 0x2483 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2499 JUMPI PUSH2 0x2499 PUSH2 0x4D5C 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 0x24BC JUMPI POP PUSH1 0x1 PUSH2 0x2549 JUMP JUMPDEST PUSH2 0x24C7 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x24DD JUMPI PUSH2 0x24DD PUSH2 0x4D5C 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 0x2549 JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x250D JUMPI PUSH2 0x250D PUSH2 0x4D5C 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 0x2530 SWAP2 SWAP1 PUSH2 0x4F64 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 0x2606 JUMPI PUSH2 0x255A DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x256F JUMPI PUSH2 0x256F PUSH2 0x4D5C 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 0x2590 JUMPI PUSH0 PUSH2 0x2593 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x25A5 JUMPI PUSH2 0x25A5 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x25C5 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH0 PUSH2 0x25D1 PUSH1 0x1 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x25E1 JUMPI PUSH2 0x25E1 PUSH2 0x4D5C 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 0x26D6 JUMP JUMPDEST PUSH2 0x2611 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2626 JUMPI PUSH2 0x2626 PUSH2 0x4D5C 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 0x264A JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x26D6 JUMP JUMPDEST PUSH2 0x2655 DUP7 PUSH1 0x1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x266A JUMPI PUSH2 0x266A PUSH2 0x4D5C 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 0x26D6 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x269A JUMPI PUSH2 0x269A PUSH2 0x4D5C 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 0x26BD SWAP2 SWAP1 PUSH2 0x4F64 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 0x26DF DUP4 PUSH2 0x4DB4 JUMP JUMPDEST SWAP3 POP PUSH2 0x237D JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x26F3 PUSH1 0x1 DUP7 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2703 JUMPI PUSH2 0x2703 PUSH2 0x4D5C 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 0x2732 SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x2742 JUMPI PUSH2 0x2742 PUSH2 0x4D5C 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 0x277E DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AD3 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 PUSH2 0x27D0 DUP3 PUSH2 0x3BF8 JUMP JUMPDEST PUSH2 0x1166 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3D0B JUMP JUMPDEST PUSH2 0x27E5 PUSH2 0x458D JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x280A 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 0x29A9 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2830 JUMPI PUSH2 0x2830 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x288C JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2864 JUMPI PUSH2 0x2864 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x287F JUMPI PUSH2 0x287F PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x28AA 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 0x28C0 JUMPI PUSH2 0x28C0 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x28DB JUMPI PUSH2 0x28DB PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x28FA JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x205F JUMPI PUSH2 0x205F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x2912 JUMPI PUSH2 0x2912 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x292D JUMPI PUSH2 0x292D PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x294E JUMPI PUSH2 0x294E PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x2962 SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x2978 JUMPI PUSH2 0x2978 PUSH2 0x4D5C 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 0x29A2 SWAP1 PUSH2 0x4F7D JUMP JUMPDEST SWAP1 POP PUSH2 0x280A JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x29DC JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x29CE JUMPI PUSH2 0x29CE PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x29FA 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 0x21A3 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH0 PUSH2 0xAA8 PUSH2 0x2A36 DUP4 PUSH2 0x111D JUMP JUMPDEST PUSH0 PUSH2 0x15C7 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2A54 JUMPI PUSH2 0x2A54 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2A6D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2A9C DUP4 PUSH2 0x19D3 PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2A8C JUMPI PUSH2 0x2A8C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2AAD JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2ABA JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AC3 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x2A40 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0xAA8 DUP3 PUSH2 0x111D JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0xFF DUP6 AND LT ISZERO DUP1 PUSH2 0x2AF3 JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x2B11 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 0x2B28 JUMPI PUSH2 0x2B28 PUSH2 0x4D5C 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 0x2B4C JUMPI PUSH2 0x2B4C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2B70 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x2B8E 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 0x2BAB JUMPI PUSH2 0x2BA8 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2CCB JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x2BBC JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x2BCE DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2C03 JUMPI PUSH2 0x2BE7 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3DBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C15 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2C4A JUMPI PUSH2 0x2C2E DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3021 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2C5E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x2C73 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x3F29 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 0x2CB9 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 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 0x2D10 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 0xAA8 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST PUSH0 PUSH2 0x2D61 PUSH2 0x2D41 DUP4 PUSH2 0x404A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D5C JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x2D57 JUMPI PUSH2 0x2D57 PUSH2 0x4F9B JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D6C DUP7 DUP7 DUP7 PUSH2 0x4076 JUMP JUMPDEST PUSH2 0xD6C SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x2DAD JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2DD6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 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 0x1166 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 0x2E4A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2E63 DUP3 DUP3 PUSH2 0x11C1 JUMP JUMPDEST PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x2ECC JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x2EC1 SWAP2 SWAP1 PUSH2 0x4DED JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2F29 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 0x2F0B JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4DCC 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 0x2F47 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x2F65 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 0x2FAA 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2FD4 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x300C 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 0x3011 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD6C DUP6 DUP4 DUP4 PUSH2 0x412C 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 0x2CF5 JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x3068 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x306F JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x307F DUP3 PUSH2 0x4183 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 0x30C3 JUMPI PUSH2 0xC22 DUP3 DUP3 PUSH2 0x2FB8 JUMP JUMPDEST PUSH2 0xF2F PUSH2 0x41E6 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311C PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x3124 PUSH2 0x4205 JUMP JUMPDEST PUSH2 0x312C PUSH2 0x4205 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x3155 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0x315E DUP2 PUSH2 0x420D JUMP JUMPDEST PUSH2 0x3168 DUP5 DUP5 PUSH2 0x421E JUMP JUMPDEST PUSH2 0xC88 DUP3 PUSH2 0x4230 JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x3180 JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x318D JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x319A JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x31A7 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x31C8 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 0x31D0 PUSH2 0x458D JUMP JUMPDEST PUSH2 0x31D8 PUSH2 0x458D JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x367B JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x31FF JUMPI PUSH2 0x31FF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x322E JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x326A PUSH2 0x3239 PUSH2 0x3886 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x324B JUMPI PUSH2 0x324B PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x39F3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x330A JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3286 JUMPI PUSH2 0x3286 PUSH2 0x4D5C 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 0x32A9 JUMPI PUSH2 0x32A9 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x3302 JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x32D1 JUMPI PUSH2 0x32D1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x326C JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x331F JUMPI PUSH2 0x331F PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3366 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3345 JUMPI PUSH2 0x3345 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3360 JUMPI PUSH2 0x3360 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x33A8 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x337D JUMPI PUSH2 0x337D PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x33BC JUMPI PUSH2 0x33BC PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x3403 JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x33FD JUMPI PUSH2 0x33FD PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3445 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x341A JUMPI PUSH2 0x341A PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x10F4 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 0x345A JUMPI PUSH2 0x345A PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3475 JUMPI PUSH2 0x3475 PUSH2 0x4D5C 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 0x3499 JUMPI PUSH2 0x3499 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x34B4 JUMPI PUSH2 0x34B4 PUSH2 0x4D5C JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x34D2 JUMPI PUSH2 0x34D2 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x34ED JUMPI PUSH2 0x34ED PUSH2 0x4D5C 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 0x3523 JUMPI PUSH2 0x3523 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x3537 SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3549 JUMPI PUSH2 0x3549 PUSH2 0x4D5C 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 0x357B JUMPI PUSH2 0x357B PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x358F SWAP2 SWAP1 PUSH2 0x4D84 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x35A2 JUMPI PUSH2 0x35A2 PUSH2 0x4D5C 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 0x3610 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35D7 JUMPI PUSH2 0x35D7 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35F1 JUMPI PUSH2 0x35F1 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A85 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3622 JUMPI PUSH2 0x3622 PUSH2 0x4D5C 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 0x366B 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 0x31DA JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x36AB SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x36E2 SWAP2 SWAP1 PUSH2 0x4F0C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x3717 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x4242 JUMP JUMPDEST PUSH2 0x3721 DUP5 DUP4 PUSH2 0x42A9 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E4A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x37A7 JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x378E JUMPI PUSH2 0x378E PUSH2 0x4D5C 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 0x37B3 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3866 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x37CF JUMPI PUSH2 0x37CF PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x37EF SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3802 JUMPI PUSH2 0x3802 PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3822 DUP5 PUSH2 0x381D DUP5 PUSH2 0x3021 JUMP JUMPDEST PUSH2 0x42DD JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3832 JUMPI POP POP PUSH2 0x3856 JUMP JUMPDEST PUSH2 0x3846 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3F29 JUMP JUMPDEST POP PUSH2 0x3851 DUP2 DUP6 PUSH2 0x4F51 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x385F DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x3772 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xA73 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x38AF DUP5 DUP4 PUSH2 0x39F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x3921 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 0x38F7 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 0x391B SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x392C DUP6 DUP3 PUSH2 0x3AD3 JUMP JUMPDEST PUSH2 0x3936 DUP5 DUP5 PUSH2 0x3A85 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x39A8 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 0x397E 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 0x39A2 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST DUP4 PUSH2 0x3F29 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 0x3A3A 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 0x3A5E SWAP2 SWAP1 PUSH2 0x4FC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC22 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x4601 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 0x2FB8 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3BAE 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 0x3B2A SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3B62 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 0x3B67 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC88 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3BA0 SWAP2 SWAP1 PUSH2 0x4601 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 0xC22 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 0x2FB8 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3C31 JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3C18 JUMPI PUSH2 0x3C18 PUSH2 0x4D5C 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 0x3C3D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3CEB JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3C59 JUMPI PUSH2 0x3C59 PUSH2 0x4D5C JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3C79 SWAP2 SWAP1 PUSH2 0x4F64 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3C8C JUMPI PUSH2 0x3C8C PUSH2 0x4D5C JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3CA7 DUP5 PUSH2 0x381D DUP5 PUSH2 0x3DBF JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3CB7 JUMPI POP POP PUSH2 0x3CDB JUMP JUMPDEST PUSH2 0x3CCB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x3DED JUMP JUMPDEST POP PUSH2 0x3CD6 DUP2 DUP6 PUSH2 0x4F51 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3CE4 DUP2 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP PUSH2 0x3BFB JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF2F JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3D37 JUMPI PUSH2 0x3D37 DUP5 DUP8 DUP5 PUSH2 0x16E6 JUMP JUMPDEST PUSH2 0x3D41 DUP5 DUP4 PUSH2 0x42EC JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3D57 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x3DAF 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 POP 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 0x2CF5 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3ECF JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3E13 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 0x3E48 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3E80 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 0x3E85 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3EC7 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3EBE SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xC45 JUMP JUMPDEST PUSH2 0x3F1F DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3EE5 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 0x2FB8 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xC45 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3FFA JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3F4F 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 0x3F84 SWAP2 SWAP1 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3FBC 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 0x3FC1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3EC7 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x3EBE SWAP2 SWAP1 PUSH2 0x4601 JUMP JUMPDEST PUSH2 0x3F1F DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4010 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 0x2FB8 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x405F JUMPI PUSH2 0x405F PUSH2 0x4FE0 JUMP JUMPDEST PUSH2 0x4069 SWAP2 SWAP1 PUSH2 0x4FF4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x40AA JUMPI DUP4 DUP3 DUP2 PUSH2 0x40A0 JUMPI PUSH2 0x40A0 PUSH2 0x4F9B JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xC45 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x40C1 JUMPI PUSH2 0x40C1 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x4351 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x413C JUMPI PUSH2 0x13BC DUP3 PUSH2 0x4362 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x4153 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x417C 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 0x10F4 JUMP JUMPDEST POP DUP1 PUSH2 0xC45 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x41B8 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 0x10F4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5160 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 0x1AA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1AA3 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x4215 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0x1683 DUP2 PUSH2 0x438B JUMP JUMPDEST PUSH2 0x4226 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0xF2F DUP3 DUP3 PUSH2 0x43FB JUMP JUMPDEST PUSH2 0x4238 PUSH2 0x30CB JUMP JUMPDEST PUSH2 0xF2F PUSH0 DUP3 PUSH2 0x178D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xC88 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x444B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x42D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xF2F PUSH0 DUP4 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4315 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x10F4 JUMP JUMPDEST PUSH2 0xF2F DUP3 PUSH0 DUP4 PUSH2 0x2E92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xC22 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x4277 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4372 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4393 PUSH2 0x30CB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x51A0 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x43AC DUP5 PUSH2 0x44B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x43BC JUMPI PUSH1 0x12 PUSH2 0x43BE 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 0x4403 PUSH2 0x30CB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x5120 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x443C DUP5 DUP3 PUSH2 0x5065 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xC88 DUP4 DUP3 PUSH2 0x5065 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x446A JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x4481 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x448E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xC88 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 0x10F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x44FD SWAP2 PUSH2 0x4FAF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x4535 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 0x453A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x454E JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x4581 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4568 SWAP2 SWAP1 PUSH2 0x4D9D JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x457F JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 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 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45BC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xC45 JUMPI PUSH0 PUSH0 REVERT 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 0xC45 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x45D3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4623 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 0x1683 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4649 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x465F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x466A DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4649 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4699 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x46A2 DUP4 PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH2 0x46B0 PUSH1 0x20 DUP5 ADD PUSH2 0x4678 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46CA 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 0x46EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x46F6 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4706 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4728 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x473A DUP2 PUSH2 0x462A JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 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 0x4781 JUMPI PUSH2 0x4781 PUSH2 0x4745 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4798 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 0x47B7 JUMPI PUSH2 0x47B7 PUSH2 0x4745 JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x47CC DUP2 PUSH2 0x4759 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x47E0 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 0x480C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4815 DUP5 PUSH2 0x4678 JUMP JUMPDEST SWAP3 POP PUSH2 0x4823 PUSH1 0x20 DUP6 ADD PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x483D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4849 DUP7 DUP3 DUP8 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4863 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC45 DUP2 PUSH2 0x462A JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x487F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x488A DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48A4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48B0 DUP6 DUP3 DUP7 ADD PUSH2 0x4789 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 0x48E5 JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x48C3 JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4906 JUMPI PUSH2 0x4906 PUSH2 0x4745 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x491F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4932 PUSH2 0x492D DUP3 PUSH2 0x48EE JUMP JUMPDEST PUSH2 0x4759 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 0x4953 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI DUP1 CALLDATALOAD PUSH2 0x496B DUP2 PUSH2 0x462A JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4958 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4992 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x49A0 PUSH2 0x492D DUP3 PUSH2 0x48EE 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 0x49C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49E3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x49F2 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4789 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x49C6 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4A10 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4A1E PUSH2 0x492D DUP3 PUSH2 0x48EE 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 0x4A3F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4979 JUMPI PUSH2 0x4A55 DUP2 PUSH2 0x4678 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4A44 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4A7B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A90 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A9C DUP12 DUP3 DUP13 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AB7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4AC3 DUP12 DUP3 DUP13 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP8 POP POP PUSH2 0x4AD2 PUSH1 0x40 DUP11 ADD PUSH2 0x463E JUMP JUMPDEST SWAP6 POP PUSH2 0x4AE0 PUSH1 0x60 DUP11 ADD PUSH2 0x463E JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4AFA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B06 DUP12 DUP3 DUP13 ADD PUSH2 0x4910 JUMP JUMPDEST SWAP5 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B21 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B2D DUP12 DUP3 DUP13 ADD PUSH2 0x4983 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B54 DUP12 DUP3 DUP13 ADD PUSH2 0x4A01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4B7B DUP12 DUP3 DUP13 ADD PUSH2 0x4A01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4649 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BB6 DUP6 PUSH2 0x4678 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4BC6 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4BE0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4BEC DUP8 DUP3 DUP9 ADD PUSH2 0x4789 JUMP JUMPDEST SWAP3 POP POP PUSH2 0x4BFB PUSH1 0x60 DUP7 ADD PUSH2 0x4B8B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4C16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4C2B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1115 DUP5 DUP3 DUP6 ADD PUSH2 0x4A01 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C48 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4C51 DUP4 PUSH2 0x4678 JUMP JUMPDEST SWAP2 POP PUSH2 0x46B0 PUSH1 0x20 DUP5 ADD PUSH2 0x4B8B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C71 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4C83 DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4C93 DUP2 PUSH2 0x462A 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 0x48E5 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 0x4CA7 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CE0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4CEB DUP2 PUSH2 0x462A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x473A DUP2 PUSH2 0x462A JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D0D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4D16 DUP5 PUSH2 0x4678 JUMP JUMPDEST SWAP3 POP PUSH2 0x4706 PUSH1 0x20 DUP6 ADD PUSH2 0x4678 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4D38 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4D56 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DAD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4DC5 JUMPI PUSH2 0x4DC5 PUSH2 0x4D70 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 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4E3B JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4E1F JUMPI PUSH2 0x4E1F PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4E2D JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4E04 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4E51 JUMPI POP PUSH1 0x1 PUSH2 0xAA8 JUMP JUMPDEST DUP2 PUSH2 0x4E5D JUMPI POP PUSH0 PUSH2 0xAA8 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4E73 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4E7D JUMPI PUSH2 0x4E99 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0xAA8 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4E8E JUMPI PUSH2 0x4E8E PUSH2 0x4D70 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0xAA8 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4EBC JUMPI POP DUP2 DUP2 EXP PUSH2 0xAA8 JUMP JUMPDEST PUSH2 0x4EC8 PUSH0 NOT DUP5 DUP5 PUSH2 0x4E00 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4EDB JUMPI PUSH2 0x4EDB PUSH2 0x4D70 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC45 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4E43 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x1115 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x45D3 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 0x4F46 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4F25 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0xAA8 JUMPI PUSH2 0xAA8 PUSH2 0x4D70 JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4F92 JUMPI PUSH2 0x4F92 PUSH2 0x4D70 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP 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 0x4FD5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC45 DUP2 PUSH2 0x462A 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 0x5012 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 0xC22 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x5046 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1166 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5052 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x507E JUMPI PUSH2 0x507E PUSH2 0x4745 JUMP JUMPDEST PUSH2 0x5092 DUP2 PUSH2 0x508C DUP5 SLOAD PUSH2 0x4D24 JUMP JUMPDEST DUP5 PUSH2 0x5021 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x50C4 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x50AD 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 0x1166 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x50F3 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x50D3 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x5110 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE005604E2FE54 0xB4 0xDE OR 0xB8 BYTE TSTORE 0xED PUSH16 0x82357D742FD2722D67304E37FF20BD58 SWAP12 0x4F CODESIZE CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR SWAP12 PUSH32 0xE0F18E75A0251D462B589A16503C58D706F46971A5675DD8EC8649302A64736F PUSH13 0x634300081C0033000000000000 ","sourceMap":"1211:6572:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4619:109;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;4619:109:54;;;;;;;;3443:202:6;;;;;;;;;;-1:-1:-1;3443:202:6;;;;;:::i;:::-;;:::i;:::-;;;652:14:75;;645:22;627:41;;615:2;600:18;3443:202:6;487:187:75;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;8777:147:10:-;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;1277:78:54:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1277:78:54;;7140:336;;;;;;;;;;-1:-1:-1;7140:336:54;;;;;:::i;:::-;;:::i;3896:152:9:-;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;2040:134:56;;;;;;;;;;-1:-1:-1;2040:134:56;;;;;:::i;:::-;;:::i;:::-;;5988:244:9;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;4759:191:6:-;;;;;;;;;;-1:-1:-1;4759:191:6;;;;;:::i;:::-;;:::i;1136:66:56:-;;;;;;;;;;;;1176:26;1136:66;;5246:136:6;;;;;;;;;;-1:-1:-1;5246:136:6;;;;;:::i;:::-;;:::i;6612:221:10:-;;;;;;;;;;;;;:::i;:::-;;;4315:4:75;4303:17;;;4285:36;;4273:2;4258:18;6612:221:10;4143:184:75;6348:245:6;;;;;;;;;;-1:-1:-1;6348:245:6;;;;;:::i;:::-;;:::i;1359:72:54:-;;;;;;;;;;;;1402:29;1359:72;;6877:153:10;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;7014:8:10;6877:153;;-1:-1:-1;;;;;7014:8:10;;;4478:51:75;;4466:2;4451:18;6877:153:10;4332:203:75;9918:404:53;;;;;;;;;;-1:-1:-1;9918:404:53;;;;;:::i;:::-;;:::i;4111:169:54:-;;;;;;;;;;-1:-1:-1;4111:169:54;;;;;:::i;:::-;;:::i;8263:386:53:-;;;;;;;;;;-1:-1:-1;8263:386:53;;;;;:::i;:::-;;:::i;1435:70:54:-;;;;;;;;;;;;1477:28;1435:70;;4161:214:8;;;;;;:::i;:::-;;:::i;19698:110:53:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3708:134:8:-;;;;;;;;;;;;;:::i;2388:478:54:-;;;;;;;;;;-1:-1:-1;2388:478:54;;;;;:::i;:::-;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;1743:41:53:-;;;;;;;;;;;;1782:2;1743:41;;5366:269:54;;;;;;;;;;-1:-1:-1;5366:269:54;;;;;:::i;:::-;;:::i;5665:198::-;;;;;;;;;;-1:-1:-1;5665:198:54;;;;;:::i;:::-;;:::i;6079:157::-;;;;;;;;;;-1:-1:-1;6079:157:54;;;;;:::i;:::-;;:::i;3732:207:6:-;;;;;;;;;;-1:-1:-1;3732:207:6;;;;;:::i;:::-;;:::i;9603:380:10:-;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;5893:156:54:-;;;;;;;;;;-1:-1:-1;5893:156:54;;;;;:::i;:::-;;:::i;2317:49:6:-;;;;;;;;;;-1:-1:-1;2317:49:6;2362:4;2317:49;;4472:178:9;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;10488:405::-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;6266:161:54:-;;;;;;;;;;-1:-1:-1;6266:161:54;;;;;:::i;:::-;;:::i;4311:277::-;;;;;;;;;;-1:-1:-1;4311:277:54;;;;;:::i;:::-;;:::i;7309:148:10:-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;1509:88:54:-;;;;;;;;;;;;1560:37;1509:88;;3509:182;;;;;;;;;;-1:-1:-1;3509:182:54;;;;;:::i;:::-;;:::i;5662:138:6:-;;;;;;;;;;-1:-1:-1;5662:138:6;;;;;:::i;:::-;;:::i;3722:358:54:-;;;;;;;;;;-1:-1:-1;3722:358:54;;;;;:::i;:::-;;:::i;19143:114:53:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;1078:54:56:-;;;;;;;;;;;;1112:20;1078:54;;6457:228:54;;;;;;;;;;-1:-1:-1;6457:228:54;;;;;:::i;:::-;;:::i;19423:108:53:-;;;;;;;;;;;;;:::i;4619:109:54:-;4680:14;4709;:12;:14::i;:::-;4702:21;;4619:109;:::o;3443:202:6:-;3528:4;-1:-1:-1;;;;;;3551:47:6;;-1:-1:-1;;;3551:47:6;;:87;;-1:-1:-1;;;;;;;;;;1134:40:12;;;3602:36:6;3544:94;3443:202;-1:-1:-1;;3443:202:6:o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;7140:336:54:-;7230:12;7250:16;7277:11;7289:13;7277:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;7331:17:54;;;;;;-1:-1:-1;;;7359:30:54;;;;;7323:67;-1:-1:-1;;;7400:37:54;;;;;7323:115;1560:37;7323:148;;-1:-1:-1;;7140:336:54;;;;:::o;2040:134:56:-;2362:4:6;3191:16;2362:4;3191:10;:16::i;:::-;2139:30:56::1;2153:4;2159:9;2139:13;:30::i;:::-;2040:134:::0;;;:::o;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;4759:191:6:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:6;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;:::-;6778:48;;;6612:221;:::o;6348:245:6:-;-1:-1:-1;;;;;6441:34:6;;966:10:11;6441:34:6;6437:102;;6498:30;;-1:-1:-1;;;6498:30:6;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;9918:404:53:-;10046:12;10066:57;10090:13;10105:6;10113:9;10066:23;:57::i;:::-;10129:24;10156:11;10168:13;10156:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10156:26:53;;-1:-1:-1;10156:26:53;10188:61;;10232:17;;-1:-1:-1;;;10232:17:53;;;;;;;;;;;10188:61;10262:55;10299:6;10307:9;10262:11;10274:13;10262:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10262:26:53;;:55;:36;:55::i;:::-;10255:62;9918:404;-1:-1:-1;;;;;9918:404:53:o;4111:169:54:-;4184:11;4207:23;4224:5;4207:16;:23::i;:::-;4234:1;4207:28;4203:42;;-1:-1:-1;4244:1:54;;4111:169;-1:-1:-1;4111:169:54:o;4203:42::-;4258:17;:15;:17::i;8263:386:53:-;8331:12;8356:9;8351:253;8409:1;8367:11;8379:1;8367:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8367:14:53;:45;;;;:67;;-1:-1:-1;1782:2:53;8416:18;;8367:67;8351:253;;;8461:11;8473:1;8461:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8461:14:53;-1:-1:-1;;;;;8461:26:53;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8453:4;:36;8449:149;;8575:14;;8560:4;;;;8575:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8263:386;;;:::o;8449:149::-;8436:3;;;:::i;:::-;;;8351:253;;;;8616:28;;-1:-1:-1;;;8616:28:53;;;;;;;;;;;4161:214:8;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;19698:110:53:-;19746:28;;:::i;:::-;19782:21;;;;;;;;;;;19789:14;;19782:21;;19789:14;-1:-1:-1;19782:21:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19698:110;:::o;3708:134:8:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;2388:478:54:-;8870:21:7;4302:15;;-1:-1:-1;;;4302:15:7;;;;4301:16;;-1:-1:-1;;;;;4348:14:7;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:7;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:7;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:7;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:7;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:7;-1:-1:-1;;;5013:22:7;;;4979:67;2685:176:54::1;2720:5;2733:7;2748:6;2762;2776:11;2795:17;2820:13;2841:14;2685:27;:176::i;:::-;5070:14:7::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:7;;;5142:14;;-1:-1:-1;17061:50:75;;5142:14:7;;17049:2:75;17034:18;5142:14:7;;;;;;;5066:101;4092:1081;;;;;2388:478:54;;;;;;;;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;5366:269:54:-;-1:-1:-1;;;;;;;;;;;3191:16:6;3202:4;3191:10;:16::i;:::-;5556:74:54::1;5578:13;5593:11;5606:16;5624:5;5556:21;:74::i;:::-;5366:269:::0;;;;;:::o;5665:198::-;-1:-1:-1;;;;;;;;;;;3191:16:6;3202:4;3191:10;:16::i;:::-;5810:48:54::1;5828:11;5841:16;5810:17;:48::i;6079:157::-:0;1402:29;3191:16:6;3202:4;3191:10;:16::i;:::-;6189:42:54::1;6214:16;6189:24;:42::i;3732:207:6:-:0;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:6;;;;;;;;-1:-1:-1;;;;;3901:31:6;;;;;;;;;;;;;;;3732:207::o;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;5893:156:54:-;-1:-1:-1;;;;;;;;;;;3191:16:6;3202:4;3191:10;:16::i;:::-;6002:42:54::1;6023:13;6038:5;6002:20;:42::i;4472:178:9:-:0;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;10488:405::-;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;6266:161:54:-;1402:29;3191:16:6;3202:4;3191:10;:16::i;:::-;6378:44:54::1;6404:17;6378:25;:44::i;4311:277::-:0;4381:7;4400:20;4414:5;4400:13;:20::i;:::-;4424:1;4400:25;4396:39;;-1:-1:-1;4434:1:54;;4311:277;-1:-1:-1;4311:277:54:o;4396:39::-;4441:14;4458:17;:15;:17::i;:::-;4441:34;;-1:-1:-1;;4488:6:54;:27;:95;;4538:45;4555:6;4563:19;4538:16;:45::i;:::-;4488:95;;;-1:-1:-1;;4481:102:54;4311:277;-1:-1:-1;;;4311:277:54:o;7309:148:10:-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;3509:182:54:-;3583:7;3598:19;3620:24;3638:5;3620:17;:24::i;:::-;3598:46;;3657:29;3674:11;3657:16;:29::i;5662:138:6:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;3722:358:54:-:0;3794:7;3809:14;3826:22;3842:5;3826:15;:22::i;:::-;3809:39;;3854:19;3876:45;3893:6;3901:19;3876:16;:45::i;:::-;3854:67;;3927:17;3947:29;3964:11;3947:16;:29::i;:::-;3927:49;;4003:11;3990:9;:24;3989:86;;4027:48;4044:9;4055:19;4027:16;:48::i;:::-;3989:86;;;-1:-1:-1;4018:6:54;;3982:93;-1:-1:-1;;;3722:358:54:o;19143:114:53:-;19188:38;;:::i;:::-;19234:18;;;;;;;;;;;19241:11;;19234:18;;19241:11;19234:18;;;;-1:-1:-1;;;;;19234:18:53;;;;;;;;;;;;;;;;;;;;;;19143:114;:::o;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;6457:228:54:-;6603:7;1477:28;3191:16:6;3202:4;3191:10;:16::i;:::-;6625:55:54::1;6641:15;6658:13;6673:6;6625:15;:55::i;19423:108:53:-:0;19470:28;;:::i;:::-;19506:20;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;;;;;;;;;19423:108;:::o;6108:208::-;6155:14;6182:9;6177:135;6228:1;6201:11;6213:1;6201:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6201:14:53;6193:37;;;;:59;;-1:-1:-1;1782:2:53;6234:18;;6193:59;6177:135;;;6277:28;:11;6289:1;6277:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6277:14:53;:26;:28::i;:::-;6267:38;;;;:::i;:::-;;-1:-1:-1;6254:3:53;;;:::i;:::-;;;6177:135;;;;6108:208;:::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;4148:103:6:-;4214:30;4225:4;966:10:11;4214::6;:30::i;:::-;4148:103;:::o;6718:318::-;-1:-1:-1;;;;;;;;;;;6801:30:6;6898:18;6911:4;6898:12;:18::i;:::-;6926:8;:14;;;;;;;;;;;:24;;:36;;;6977:52;6870:46;;-1:-1:-1;6953:9:6;;6870:46;;6935:4;;6977:52;;6926:8;6977:52;6791:245;;6718:318;;:::o;11745:477:9:-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;4478:51:75;4451:18;;6729:30:9;4332:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;4478:51:75;4451:18;;6822:32:9;4332:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;7270:387:6:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:6;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:6;;;;;;;;;:38;;-1:-1:-1;;7475:38:6;7509:4;7475:38;;;7559:12;966:10:11;;887:96;7559:12:6;-1:-1:-1;;;;;7532:40:6;7550:7;-1:-1:-1;;;;;7532:40:6;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:6;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:6;;;;;;;;;;:39;;-1:-1:-1;;8097:39:6;;;8155:40;966:10:11;;8097:14:6;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;7543:238:54;1560:37;3191:16:6;3202:4;3191:10;:16::i;:::-;7728:47:54::1;7753:13;7768:6;7728:24;:47::i;:::-;3191:16:6;3202:4;3191:10;:16::i;4743:249:52:-:0;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:52;-1:-1:-1;;;4916:70:52;;;-1:-1:-1;;;;;4877:38:52;;;;:110::i;2227:167:56:-;2300:7;2320:23;1112:20;2337:5;2320:7;:23::i;:::-;2315:38;;-1:-1:-1;2352:1:56;;2227:167;-1:-1:-1;2227:167:56:o;2315:38::-;-1:-1:-1;;2366:23:56;7708:108:10;5678:321:53;5728:11;5747:15;5773:9;5768:211;5819:1;5792:11;5804:1;5792:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5792:14:53;5784:37;;;;:59;;-1:-1:-1;1782:2:53;5825:18;;5784:59;5768:211;;;5878:45;5890:3;5895:27;:11;5907:1;5895:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5895:14:53;:25;:27::i;:::-;5878:11;:45::i;:::-;5858:65;-1:-1:-1;5858:65:53;-1:-1:-1;5858:65:53;5931:41;;-1:-1:-1;;5948:24:53;;;;5678:321;:::o;5931:41::-;5845:3;;;:::i;:::-;;;5768:211;;;;5984:10;5678:321;:::o;4603:312:8:-;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;1943:93:56:-;1176:26;3191:16:6;3202:4;3191:10;:16::i;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;4496:32:75;;6518:60:8;;;4478:51:75;4451:18;;6518:60:8;4332:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;2921:469:54;6931:20:7;:18;:20::i;:::-;3234:58:54::1;3261:5;3268:7;3277:6;3285;3234:26;:58::i;:::-;3298:87;3323:11;3336:17;3355:13;3370:14;3298:24;:87::i;:::-;2921:469:::0;;;;;;;;:::o;5064:272::-;5249:48;5264:6;5272:8;5282:6;5290;5249:14;:48::i;:::-;5303:28;5324:6;5303:20;:28::i;11182:650:53:-;11341:24;11368:11;11380:13;11368:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11368:26:53;;-1:-1:-1;11368:26:53;11400:61;;11444:17;;-1:-1:-1;;;11444:17:53;;;;;;;;;;;11400:61;11472:9;11467:200;1782:2;11483:18;;:67;;;;-1:-1:-1;11547:1:53;11505:11;11517:1;11505:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11505:14:53;:45;;11483:67;11467:200;;;11587:11;-1:-1:-1;;;;;11569:29:53;:11;11581:1;11569:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11569:14:53;:29;:51;;;;;11607:13;11602:18;;:1;:18;;11569:51;11565:95;;;11629:31;;-1:-1:-1;;;11629:31:53;;-1:-1:-1;;;;;4496:32:75;;11629:31:53;;;4478:51:75;4451:18;;11629:31:53;4332:203:75;11565:95:53;11552:3;;;:::i;:::-;;;11467:200;;;;11672:109;11708:8;11718:11;11731:16;11764:8;:6;:8::i;:::-;11775:5;11672:35;:109::i;:::-;11816:11;11787;11799:13;11787:26;;;;;;;;;:::i;:::-;;:40;;-1:-1:-1;;;;;;11787:40:53;-1:-1:-1;;;;;11787:40:53;;;;;;;;;;-1:-1:-1;;;;;11182:650:53:o;12121:662::-;-1:-1:-1;;;;;12227:34:53;;12223:64;;12270:17;;-1:-1:-1;;;12270:17:53;;;;;;;;;;;12223:64;12293:9;12308:169;1782:2;12315:18;;:67;;;;-1:-1:-1;12379:1:53;12337:11;12349:1;12337:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12337:14:53;:45;;12315:67;12308:169;;;12419:11;-1:-1:-1;;;;;12401:29:53;:11;12413:1;12401:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12401:14:53;:29;12397:73;;12439:31;;-1:-1:-1;;;12439:31:53;;-1:-1:-1;;;;;4496:32:75;;12439:31:53;;;4478:51:75;4451:18;;12439:31:53;4332:203:75;12397:73:53;12384:3;;;:::i;:::-;;;12308:169;;;-1:-1:-1;;12486:19:53;;12482:57;;12514:25;;-1:-1:-1;;;;;;12514:25:53;;;;;;;;;;;12482:57;12562:11;12545;12557:1;12545:14;;;;;;;:::i;:::-;;:28;;-1:-1:-1;;;;;;12545:28:53;-1:-1:-1;;;;;12545:28:53;;;;;;;;;;12604:5;:1;-1:-1:-1;12604:5:53;:::i;:::-;12579:13;12593:1;12579:16;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12642:1;12646;12642:5;;;;:::i;:::-;12616:14;12631:1;12616:17;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12654;12677:8;:6;:8::i;:::-;-1:-1:-1;;;;;12654:22:53;;;;:32::i;:::-;12692:39;-1:-1:-1;;;;;12692:21:53;;12714:16;12692:21;:39::i;:::-;12742:36;;4315:4:75;4303:17;;4285:36;;-1:-1:-1;;;;;12742:36:53;;;;;4273:2:75;4258:18;12742:36:53;;;;;;;12217:566;12121:662;;:::o;15692:733::-;15774:32;;:::i;:::-;15835:23;;15812:9;;1782:2;-1:-1:-1;15831:67:53;;;15884:14;;-1:-1:-1;;;15884:14:53;;;;;;;;;;;15831:67;15915:16;:23;15911:1;:27;15904:371;;;1782:2;15957:37;;:16;15974:1;15957:19;;;;;;;;:::i;:::-;;;;;;;:37;;;;:96;;;;16051:1;-1:-1:-1;;;;;15998:55:53;16006:11;16018:16;16035:1;16018:19;;;;;;;;:::i;:::-;;;;;;;16006:32;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16006:32:53;15998:55;15957:96;15953:131;;;16070:14;;-1:-1:-1;;;16070:14:53;;;;;;;;;;;15953:131;16096:4;16101:16;16118:1;16101:19;;;;;;;;:::i;:::-;;;;;;;16096:25;;;;;;;;;:::i;:::-;;;;;16092:86;;;16158:16;16175:1;16158:19;;;;;;;;:::i;:::-;;;;;;;16130:48;;-1:-1:-1;;;16130:48:53;;;;;;;4315:4:75;4303:17;;;;4285:36;;4273:2;4258:18;;4143:184;16092:86:53;16214:4;16186;16191:16;16208:1;16191:19;;;;;;;;:::i;:::-;;;;;;;16186:25;;;;;;;;;:::i;:::-;:32;;;:25;;;;;:32;16245:19;;;;16262:1;;16245:19;;;;;;:::i;:::-;;;;;;;16267:1;16245:23;;;;:::i;:::-;16226:13;16240:1;16226:16;;;;;;;:::i;:::-;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15940:3;;;;;15904:371;;;1782:2;16284:18;;:59;;;;-1:-1:-1;16341:1:53;16314:11;16326:1;16314:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16314:14:53;16306:37;;16284:59;16280:92;;;16352:20;;-1:-1:-1;;;16352:20:53;;;;;;;;;;;16280:92;16383:37;16403:16;16383:37;;;;;;:::i;:::-;;;;;;;;15768:657;;15692:733;:::o;13159:2217::-;1782:2;13241:31;;;;13237:61;;13281:17;;-1:-1:-1;;;13281:17:53;;;;;;;;;;;13237:61;13304:24;13331:11;13343:13;13331:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13331:26:53;;-1:-1:-1;13331:26:53;13363:61;;13407:17;;-1:-1:-1;;;13407:17:53;;;;;;;;;;;13363:61;13435:5;13434:6;:37;;;;;13444:22;:8;-1:-1:-1;;;;;13444:20:53;;:22::i;:::-;:27;;13434:37;13430:82;;;13480:32;;-1:-1:-1;;;13480:32:53;;;;;;;;;;;13430:82;13563:18;;;;:59;;;;-1:-1:-1;13593:14:53;;-1:-1:-1;;;;;13593:14:53;13585:37;13563:59;13559:97;;;13631:25;;-1:-1:-1;;;;;;13631:25:53;;;;;;;;;;;13559:97;13713:9;13725:17;:13;13741:1;13725:17;:::i;:::-;13713:29;;;;13748:131;1782:2;13755:18;;:67;;;;-1:-1:-1;13819:1:53;13777:11;13789:1;13777:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13777:14:53;:45;;13755:67;13748:131;;;13858:11;13870:1;13858:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13858:14:53;13837:11;13849:5;13858:14;13849:1;:5;:::i;:::-;13837:18;;;;;;;:::i;:::-;;:35;;-1:-1:-1;;;;;;13837:35:53;-1:-1:-1;;;;;13837:35:53;;;;;;;;;;13824:3;;;:::i;:::-;;;13748:131;;;13929:1;13884:11;13896:5;13900:1;13896;:5;:::i;:::-;13884:18;;;;;;;:::i;:::-;;:48;;-1:-1:-1;;;;;;13884:48:53;-1:-1:-1;;;;;13884:48:53;;;;;;;;;;-1:-1:-1;;;;14035:1191:53;14047:14;14062:1;14047:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;;;:44;;-1:-1:-1;1782:2:53;14073:18;;14047:44;14035:1191;;;14110:13;14106:544;;;14278:17;:13;14294:1;14278:17;:::i;:::-;14257:39;;:14;14272:1;14257:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14256:49;;14304:1;14256:49;;;14300:1;14256:49;14235:14;14250:1;14235:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:71;;;;:::i;:::-;14211:14;14226:5;14211:14;14226:1;:5;:::i;:::-;14211:21;;;;;;;:::i;:::-;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;14106:544;;;14357:17;:13;14373:1;14357:17;:::i;:::-;14335:40;;:14;14350:1;14335:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:40;14331:311;;-1:-1:-1;14483:4:53;14331:311;;;14529:17;:13;14545:1;14529:17;:::i;:::-;14508:39;;:14;14523:1;14508:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14504:138;;;14630:1;14609:14;14624:1;14609:17;;;;;;;:::i;:::-;;;;;;;;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14504:138;14688:12;14684:536;;;14852:17;:13;14868:1;14852:17;:::i;:::-;14832:38;;:13;14846:1;14832:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;14831:48;;14878:1;14831:48;;;14874:1;14831:48;14811:13;14825:1;14811:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:69;;;;:::i;:::-;14788:13;14802:5;14806:1;14802;:5;:::i;:::-;14788:20;;;;;;;:::i;:::-;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;14684:536;;;14930:17;:13;14946:1;14930:17;:::i;:::-;14909:39;;:13;14923:1;14909:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14905:307;;15055:4;15040:19;;14905:307;;;15100:17;:13;15116:1;15100:17;:::i;:::-;15080:38;;:13;15094:1;15080:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15076:136;;;15200:1;15180:13;15194:1;15180:16;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15076:136;14093:3;;;:::i;:::-;;;14035:1191;;;15254:1;;15245:5;15249:1;15245;:5;:::i;:::-;15231:20;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15285:1;15261:14;15280:1;15276;:5;;;;:::i;:::-;15261:21;;;;;;;:::i;:::-;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15292:28;15314:5;15292:8;-1:-1:-1;;;;;15292:21:53;;;:28;;;;:::i;:::-;15331:40;;4315:4:75;4303:17;;4285:36;;-1:-1:-1;;;;;15331:40:53;;;;;4273:2:75;4258:18;15331:40:53;;;;;;;13231:2145;;;;13159:2217;;:::o;4769:254:54:-;4925:31;4949:6;4925:23;:31::i;:::-;4962:56;4978:6;4986:8;4996:5;5003:6;5011;4962:15;:56::i;16749:744:53:-;16833:32;;:::i;:::-;16892:24;;16871:7;;1782:2;-1:-1:-1;16888:68:53;;;16942:14;;-1:-1:-1;;;16942:14:53;;;;;;;;;;;16888:68;16973:17;:24;16969:1;:28;;;16962:379;;;1782:2;17016:38;;:17;17034:1;17016:20;;;;;;;;;;:::i;:::-;;;;;;;:38;;;;:98;;;;17112:1;-1:-1:-1;;;;;17058:56:53;17066:11;17078:17;17096:1;17078:20;;;;;;;;;;:::i;:::-;;;;;;;17066:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17066:33:53;17058:56;17016:98;17012:133;;;17131:14;;-1:-1:-1;;;17131:14:53;;;;;;;;;;;17012:133;17157:4;17162:17;17180:1;17162:20;;;;;;;;;;:::i;:::-;;;;;;;17157:26;;;;;;;;;:::i;:::-;;;;;17153:88;;;17220:17;17238:1;17220:20;;;;;;;;;;:::i;17153:88::-;17278:4;17249;17254:17;17272:1;17254:20;;;;;;;;;;:::i;:::-;;;;;;;17249:26;;;;;;;;;:::i;:::-;:33;;;:26;;;;;:33;17310:20;;;;;;;;;;;;;;:::i;:::-;;;;;;;17333:1;17310:24;;;;:::i;:::-;17290:14;17305:1;17290:17;;;;;;;;;:::i;:::-;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;16999:3;;;;:::i;:::-;;;16962:379;;;1782:2;17350:18;;;;:59;;;;-1:-1:-1;17407:1:53;17380:11;:14;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17380:14:53;17372:37;;17350:59;17346:92;;;17418:20;;-1:-1:-1;;;17418:20:53;;;;;;;;;;;17346:92;17449:39;17470:17;17449:39;;;;;;:::i;8017:153:10:-;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;5166:340:53:-;5230:11;5249:15;5275:9;5270:216;5321:1;5294:11;5306:1;5294:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5294:14:53;5286:37;;;;:59;;-1:-1:-1;1782:2:53;5327:18;;5286:59;5270:216;;;5380:46;5392:3;5397:28;:11;5409:1;5397:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5397:14:53;:26;:28::i;5380:46::-;5360:66;-1:-1:-1;5360:66:53;-1:-1:-1;5438:11:53;;;:27;;;5460:5;5453:3;:12;;5438:27;5434:45;;;-1:-1:-1;5474:5:53;;5166:340;-1:-1:-1;;5166:340:53:o;5434:45::-;5347:3;;;:::i;:::-;;;5270:216;;;;5491:10;5166:340;;;:::o;8218:112:10:-;8281:7;8307:16;8317:5;8307:9;:16::i;17964:1009:53:-;18067:7;1782:2;18086:33;;;;;;:68;;-1:-1:-1;1782:2:53;18123:31;;;;;18086:68;18082:98;;;18163:17;;-1:-1:-1;;;18163:17:53;;;;;;;;;;;18082:98;18186:28;18217:11;18229:15;18217:28;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18217:28:53;;-1:-1:-1;18217:28:53;18280:11;:26;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18280:26:53;;;;-1:-1:-1;18316:35:53;;;;:72;;-1:-1:-1;;;;;;18355:33:53;;;18316:72;18312:102;;;18397:17;;-1:-1:-1;;;18397:17:53;;;;;;;;;;;18312:102;-1:-1:-1;;18424:6:53;:27;18420:68;;18462:26;:12;-1:-1:-1;;;;;18462:24:53;;:26::i;:::-;18453:35;;18420:68;18498:6;18508:1;18498:11;18494:25;;18518:1;18511:8;;;;;;18494:25;18606:26;:12;-1:-1:-1;;;;;18606:24:53;;:26::i;:::-;18597:6;:35;18593:109;;;18675:26;:12;-1:-1:-1;;;;;18675:24:53;;:26::i;:::-;18641:61;;-1:-1:-1;;;18641:61:53;;;;;;160:25:75;;148:2;133:18;;14:177;18593:109:53;18721:23;:10;-1:-1:-1;;;;;18721:21:53;;:23::i;:::-;18712:6;:32;18708:102;;;18786:23;:10;-1:-1:-1;;;;;18786:21:53;;:23::i;:::-;18753:57;;-1:-1:-1;;;18753:57:53;;;;;;160:25:75;;148:2;133:18;;14:177;18708:102:53;18816:38;-1:-1:-1;;;;;18816:23:53;;18840:6;18848:5;18816:23;:38::i;:::-;-1:-1:-1;18860:35:53;-1:-1:-1;;;;;18860:20:53;;18881:6;18889:5;18860:20;:35::i;:::-;;18930:10;-1:-1:-1;;;;;18906:43:53;18916:12;-1:-1:-1;;;;;18906:43:53;;18942:6;18906:43;;;;160:25:75;;148:2;133:18;;14:177;18906:43:53;;;;;;;;-1:-1:-1;18962:6:53;;17964:1009;-1:-1:-1;;;;17964:1009:53:o;7489:132:52:-;7581:35;;-1:-1:-1;;;7581:35:52;;7610:4;7581:35;;;4478:51:75;7559:7:52;;-1:-1:-1;;;;;7581:20:52;;;;;4451:18:75;;7581:35:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9351:238:42:-;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;4478:51:75;4451:18;;11183:32:9;4332:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;4478:51:75;4451:18;;11283:31:9;4332:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11415:31:9;;;;;;;;11074:389;10976:487;;;;:::o;4381:197:6:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:6;;-1:-1:-1;;;;;21173:32:75;;4514:47:6;;;21155:51:75;21222:18;;;21215:34;;;21128:18;;4514:47:6;20981:274:75;7220:1170:9;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220:1170;;;:::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;7771:130:52:-;7862:34;;-1:-1:-1;;;7862:34:52;;7890:4;7862:34;;;4478:51:75;7840:7:52;;-1:-1:-1;;;;;7862:19:52;;;;;4451:18:75;;7862:34:52;4332:203:75;586:231:42;647:12;;723:5;;;746;;;742:28;;;761:5;768:1;753:17;;;;;;;742:28;792:4;;-1:-1:-1;798:1:42;-1:-1:-1;586:231:42;;;;;;:::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;7084:141:7:-;8870:21;8560:40;-1:-1:-1;;;8560:40:7;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:7;;;;;;;;;;;1296:404:56;6931:20:7;:18;:20::i;:::-;1459:24:56::1;:22;:24::i;:::-;1489:22;:20;:22::i;:::-;-1:-1:-1::0;;;;;1521:29:56;::::1;1517:66;;1559:24;::::0;-1:-1:-1;;;1559:24:56;;1580:1:::1;1559:24;::::0;::::1;4478:51:75::0;4451:18;;1559:24:56::1;4332:203:75::0;1517:66:56::1;1589:22;1604:6;1589:14;:22::i;:::-;1617:28;1630:5;1637:7;1617:12;:28::i;:::-;1651:44;1688:6;1651:36;:44::i;3295:1867:53:-:0;3508:18;;:23;;:68;;-1:-1:-1;3541:18:53;;1782:2;-1:-1:-1;3508:68:53;: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:53;;;;;;;;;;;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:53;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3940:37:53;;3936:67;;3986:17;;-1:-1:-1;;;3986:17:53;;;;;;;;;;;3936:67;4011:35;4037:8;:6;:8::i;:::-;4011:11;4023:1;4011:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4011:25:53;;;:35;;;;:::i;:::-;4104:9;4099:126;4119:1;4115;:5;4099:126;;;4159:11;4171:1;4159:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;:11;4153:1;4141:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;;4137:79;;4201:11;4213:1;4201:14;;;;;;;;:::i;:::-;;;;;;;4182:34;;-1:-1:-1;;;4182:34:53;;;;;;;-1:-1:-1;;;;;4496:32:75;;;;4478:51;;4466:2;4451:18;;4332:203;4137:79:53;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:53;;;;;;;4315:4:75;4303:17;;;;4285:36;;4273:2;4258:18;;4143:184;4319:144:53;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:53;;;;;;;4315:4:75;4303:17;;;;4285:36;;4273:2;4258:18;;4143:184;4471:149:53;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:53;;;;;-1:-1:-1;;;;;4728:31:53;;;;;;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:53;;;:46;;;;:::i;:::-;5034:11;5046:1;5034:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5020:39:53;;5056:1;5020:39;;;;;4315:4:75;4303:17;;;;4285:36;;4273:2;4258:18;;4143:184;5020:39:53;;;;;;;;3923:3;;3883:1183;;;;5076:34;5096:13;5076:34;;;;;;:::i;:::-;;;;;;;;5121:36;5142:14;5121:36;;;;;;:::i;:::-;;;;;;;;3491:1671;;3295:1867;;;;:::o;11631:890:10:-;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;21740:25:75;;;21796:2;21781:18;;21774:34;21728:2;21713:18;;21566:248;7474:595:53;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:53;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:53;;-1:-1:-1;7745:33:53;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:53;;7906:9;7917:5;7887:18;:36::i;:::-;-1:-1:-1;7931:17:53;7939:9;7931:17;;:::i;:::-;;;7710:245;;7631:324;7705:3;;;:::i;:::-;;;7631:324;;;-1:-1:-1;7964:9:53;;7960:36;;7982:14;;-1:-1:-1;;;7982:14:53;;;;;;;;;;;3394:84:54;3444:7;3466;-1:-1:-1;;;;;;;;;;;7014:8:10;-1:-1:-1;;;;;7014:8:10;;6877:153;5914:843:52;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:52;;6344:4;6312:38;;;4478:51:75;6288:70:52;;6299:11;;-1:-1:-1;;;;;6312:23:52;;;;;4451:18:75;;6312:38:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:52;;6686:4;6662:30;;;4478:51:75;6639:61:52;;6649:11;;-1:-1:-1;;;;;6662:15:52;;;;;4451:18:75;;6662:30:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:52;;;-1:-1:-1;;;;;22061:32:75;;;22043:51;;22130:32;;22125:2;22110:18;;22103:60;6711:41:52;;22016:18:75;6711:41:52;;;;;;;5914:843;;;;;:::o;5181:159::-;5266:29;;-1:-1:-1;;;5266:29:52;;5289:4;5266:29;;;4478:51:75;-1:-1:-1;;;;;5266:38:52;;;;:14;;;;;;4451:18:75;;5266:29:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:52;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:52;;;;;;;;;;;1120:193;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:52;-1:-1:-1;;;1250:57:52;;;-1:-1:-1;;;;;1211:38:52;;;;:97::i;1729:465::-;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;627:41:75;1881:12:52;;;;-1:-1:-1;;;;;1922:30:52;;;600:18:75;;1962:48:52;;;-1:-1:-1;;1962:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:52;-1:-1:-1;;;1962:48:52;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;4161:214:8;;:::o;1804:386:52:-;2133:49;;2176:5;2133:49;;;627:41:75;2094:89:52;;600:18:75;;2133:49:52;;;-1:-1:-1;;2133:49:52;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:52;-1:-1:-1;;;2133:49:52;;;-1:-1:-1;;;;;2094:38:52;;;;:89::i;6629:539:53:-;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:53;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:53;;-1:-1:-1;6835:34:53;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:53;;7001:10;7013:5;6981:19;:38::i;:::-;-1:-1:-1;7027:18:53;7035:10;7027:18;;:::i;:::-;;;6800:252;;6720:332;6795:3;;;:::i;:::-;;;6720:332;;;-1:-1:-1;7061:9:53;;7057:37;;7079:15;;-1:-1:-1;;;7079:15:53;;;;;;;;;;;12588:974:10;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;21740:25:75;;;21796:2;21781:18;;21774:34;21728:2;21713:18;;21566:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;8054:132:52:-;8146:35;;-1:-1:-1;;;8146:35:52;;8175:4;8146:35;;;4478:51:75;8124:7:52;;-1:-1:-1;;;;;8146:20:52;;;;;4451:18:75;;8146:35:52;4332:203:75;2735:544:52;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:52;3050:6;3009:48;;;;;;160:25:75;;148:2;133:18;;14:177;3009:48:52;;;;-1:-1:-1;;3009:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:52;-1:-1:-1;;;3009:48:52;;;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:52;-1:-1:-1;3126:14:52;;2845:430;3161:88;3241:6;3200:48;;;;;;160:25:75;;148:2;133:18;;14:177;3200:48:52;;;;-1:-1:-1;;3200:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:52;-1:-1:-1;;;3200:48:52;;;-1:-1:-1;;;;;3161:38:52;;;;: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:52;4129:6;4089:47;;;;;;160:25:75;;148:2;133:18;;14:177;4089:47:52;;;;-1:-1:-1;;4089:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:52;-1:-1:-1;;;4089:47:52;;;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:75;;148:2;133:18;;14:177;4278:47:52;;;;-1:-1:-1;;4278:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:52;-1:-1:-1;;;4278:47:52;;;-1:-1:-1;;;;;4239:38:52;;;;:87::i;28183:122:42:-;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;4589:408::-;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;4496:32:75;;4917:24:34;;;4478:51:75;4451:18;;4917:24:34;4332:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;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;;;;;4496:32:75;;1805:47:27;;;4478:51:75;4451:18;;1805:47:27;4332:203:75;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;;;;;;;;;;;2970:67:8;6931:20:7;:18;:20::i;5090:114:10:-;6931:20:7;:18;:20::i;:::-;5165:32:10::1;5190:6;5165:24;:32::i;2282:147:9:-:0;6931:20:7;:18;:20::i;:::-;2384:38:9::1;2407:5;2414:7;2384:22;:38::i;1755:137:56:-:0;6931:20:7;:18;:20::i;:::-;1849:38:56::1;2362:4:6;1880:6:56::0;1849:10:::1;:38::i;1670:188:33:-:0;1797:53;;-1:-1:-1;;;;;23041:32:75;;;1797:53:33;;;23023:51:75;23110:32;;;23090:18;;;23083:60;23159:18;;;23152:34;;;1770:81:33;;1790:5;;1812:18;;;;;22996::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;4478:51:75;4451:18;;8847:32:9;4332:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;3371:111:42:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;9259:206:9;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;4478:51:75;4451:18;;9373:30:9;4332:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;21173:32:75;;;1380:43:33;;;21155:51:75;21222:18;;;21215:34;;;1353:71:33;;1373:5;;1395:14;;;;;21128:18:75;;1380:43:33;20981:274:75;1776:194:38;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;5543:487:34;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;5210:304:10;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;5295:24:10::1;::::0;5390:28:::1;5411:6:::0;5390:20:::1;:28::i;:::-;5352:66;;;;5452:7;:28;;5478:2;5452:28;;;5462:13;5452:28;5428:52:::0;;-1:-1:-1;;;;;;5490:17:10;-1:-1:-1;;;5428:52:10::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;5490:17:10;;-1:-1:-1;;;;;5490:17:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;5210:304:10:o;2435:216:9:-;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:9;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:9::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;7738:720:33:-:0;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;4496:32:75;;8401:40:33;;;4478:51:75;4451:18;;8401:40:33;4332:203:75;5657:550:10;5851:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5851:43:10;-1:-1:-1;;;5851:43:10;;;5811:93;;5724:7;;;;;;;;-1:-1:-1;;;;;5811:26:10;;;:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:140;;;;5918:7;:39;;;;;5955:2;5929:15;:22;:28;;5918:39;5914:260;;;5973:24;6011:15;6000:38;;;;;;;;;;;;:::i;:::-;5973:65;-1:-1:-1;6076:15:10;6056:35;;6052:112;;6119:4;;6131:16;;-1:-1:-1;5657:550:10;-1:-1:-1;;;;5657:550:10:o;6052:112::-;5959:215;5914:260;-1:-1:-1;6191:5:10;;;;-1:-1:-1;5657:550:10;-1:-1:-1;;;5657:550:10:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:286:75:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:75;;391:43;;381:71;;448:1;445;438:12;679:289;721:3;759:5;753:12;786:6;781:3;774:19;842:6;835:4;828:5;824:16;817:4;812:3;808:14;802:47;894:1;887:4;878:6;873:3;869:16;865:27;858:38;957:4;950:2;946:7;941:2;933:6;929:15;925:29;920:3;916:39;912:50;905:57;;;679:289;;;;:::o;973:220::-;1122:2;1111:9;1104:21;1085:4;1142:45;1183:2;1172:9;1168:18;1160:6;1142:45;:::i;1198:226::-;1257:6;1310:2;1298:9;1289:7;1285:23;1281:32;1278:52;;;1326:1;1323;1316:12;1278:52;-1:-1:-1;1371:23:75;;1198:226;-1:-1:-1;1198:226:75:o;1429:131::-;-1:-1:-1;;;;;1504:31:75;;1494:42;;1484:70;;1550:1;1547;1540:12;1565:134;1633:20;;1662:31;1633:20;1662:31;:::i;:::-;1565:134;;;:::o;1704:367::-;1772:6;1780;1833:2;1821:9;1812:7;1808:23;1804:32;1801:52;;;1849:1;1846;1839:12;1801:52;1888:9;1875:23;1907:31;1932:5;1907:31;:::i;:::-;1957:5;2035:2;2020:18;;;;2007:32;;-1:-1:-1;;;1704:367:75:o;2258:156::-;2324:20;;2384:4;2373:16;;2363:27;;2353:55;;2404:1;2401;2394:12;2419:252;2483:6;2491;2544:2;2532:9;2523:7;2519:23;2515:32;2512:52;;;2560:1;2557;2550:12;2512:52;2583:27;2600:9;2583:27;:::i;:::-;2573:37;;2629:36;2661:2;2650:9;2646:18;2629:36;:::i;:::-;2619:46;;2419:252;;;;;:::o;2676:346::-;2744:6;2752;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;-1:-1:-1;;2866:23:75;;;2986:2;2971:18;;;2958:32;;-1:-1:-1;2676:346:75:o;3027:508::-;3104:6;3112;3120;3173:2;3161:9;3152:7;3148:23;3144:32;3141:52;;;3189:1;3186;3179:12;3141:52;3228:9;3215:23;3247:31;3272:5;3247:31;:::i;:::-;3297:5;-1:-1:-1;3354:2:75;3339:18;;3326:32;3367:33;3326:32;3367:33;:::i;:::-;3027:508;;3419:7;;-1:-1:-1;;;3499:2:75;3484:18;;;;3471:32;;3027:508::o;3771:367::-;3839:6;3847;3900:2;3888:9;3879:7;3875:23;3871:32;3868:52;;;3916:1;3913;3906:12;3868:52;3961:23;;;-1:-1:-1;4060:2:75;4045:18;;4032:32;4073:33;4032:32;4073:33;:::i;:::-;4125:7;4115:17;;;3771:367;;;;;:::o;4540:127::-;4601:10;4596:3;4592:20;4589:1;4582:31;4632:4;4629:1;4622:15;4656:4;4653:1;4646:15;4672:275;4743:2;4737:9;4808:2;4789:13;;-1:-1:-1;;4785:27:75;4773:40;;-1:-1:-1;;;;;4828:34:75;;4864:22;;;4825:62;4822:88;;;4890:18;;:::i;:::-;4926:2;4919:22;4672:275;;-1:-1:-1;4672:275:75:o;4952:629::-;4994:5;5047:3;5040:4;5032:6;5028:17;5024:27;5014:55;;5065:1;5062;5055:12;5014:55;5105:6;5092:20;5144:4;5136:6;5132:17;5173:1;5195;-1:-1:-1;;;;;5211:6:75;5208:30;5205:56;;;5241:18;;:::i;:::-;-1:-1:-1;5307:2:75;5286:15;;-1:-1:-1;;5282:29:75;5313:4;5278:40;5338:21;5278:40;5338:21;:::i;:::-;5327:32;;;5384:6;5375:7;5368:23;5424:3;5415:6;5410:3;5406:16;5403:25;5400:45;;;5441:1;5438;5431:12;5400:45;5492:6;5487:3;5480:4;5471:7;5467:18;5454:45;5548:1;5519:20;;;5541:4;5515:31;5508:42;;;;-1:-1:-1;5523:7:75;4952:629;-1:-1:-1;;;4952:629:75:o;5586:460::-;5668:6;5676;5684;5737:2;5725:9;5716:7;5712:23;5708:32;5705:52;;;5753:1;5750;5743:12;5705:52;5776:27;5793:9;5776:27;:::i;:::-;5766:37;;5822:36;5854:2;5843:9;5839:18;5822:36;:::i;:::-;5812:46;;5909:2;5898:9;5894:18;5881:32;-1:-1:-1;;;;;5928:6:75;5925:30;5922:50;;;5968:1;5965;5958:12;5922:50;5991:49;6032:7;6023:6;6012:9;6008:22;5991:49;:::i;:::-;5981:59;;;5586:460;;;;;:::o;6274:247::-;6333:6;6386:2;6374:9;6365:7;6361:23;6357:32;6354:52;;;6402:1;6399;6392:12;6354:52;6441:9;6428:23;6460:31;6485:5;6460:31;:::i;6526:455::-;6603:6;6611;6664:2;6652:9;6643:7;6639:23;6635:32;6632:52;;;6680:1;6677;6670:12;6632:52;6719:9;6706:23;6738:31;6763:5;6738:31;:::i;:::-;6788:5;-1:-1:-1;6844:2:75;6829:18;;6816:32;-1:-1:-1;;;;;6860:30:75;;6857:50;;;6903:1;6900;6893:12;6857:50;6926:49;6967:7;6958:6;6947:9;6943:22;6926:49;:::i;:::-;6916:59;;;6526:455;;;;;:::o;6986:482::-;7164:4;7149:20;;7153:9;7246:6;7122:4;7280:182;7294:4;7291:1;7288:11;7280:182;;;7357:13;;7372:4;7353:24;7341:37;;7407:4;7398:14;;;;7435:17;;;;7314:1;7307:9;7280:182;;;7284:3;;;6986:482;;;;:::o;7473:200::-;7550:4;-1:-1:-1;;;;;7575:6:75;7572:30;7569:56;;;7605:18;;:::i;:::-;-1:-1:-1;7650:1:75;7646:14;7662:4;7642:25;;7473:200::o;7678:778::-;7749:5;7802:3;7795:4;7787:6;7783:17;7779:27;7769:55;;7820:1;7817;7810:12;7769:55;7860:6;7847:20;7887:81;7903:64;7960:6;7903:64;:::i;:::-;7887:81;:::i;:::-;7992:3;8016:6;8011:3;8004:19;8048:4;8043:3;8039:14;8032:21;;8109:4;8099:6;8096:1;8092:14;8084:6;8080:27;8076:38;8062:52;;8137:3;8129:6;8126:15;8123:35;;;8154:1;8151;8144:12;8123:35;8190:4;8182:6;8178:17;8204:221;8220:6;8215:3;8212:15;8204:221;;;8302:3;8289:17;8319:31;8344:5;8319:31;:::i;:::-;8363:18;;8410:4;8401:14;;;;8237;8204:221;;;-1:-1:-1;8443:7:75;7678:778;-1:-1:-1;;;;;7678:778:75:o;8461:842::-;8513:5;8566:3;8559:4;8551:6;8547:17;8543:27;8533:55;;8584:1;8581;8574:12;8533:55;8624:6;8611:20;8651:81;8667:64;8724:6;8667:64;:::i;8651:81::-;8756:3;8780:6;8775:3;8768:19;8812:4;8807:3;8803:14;8796:21;;8873:4;8863:6;8860:1;8856:14;8848:6;8844:27;8840:38;8826:52;;8901:3;8893:6;8890:15;8887:35;;;8918:1;8915;8908:12;8887:35;8954:4;8946:6;8942:17;8968:304;8984:6;8979:3;8976:15;8968:304;;;9072:3;9059:17;-1:-1:-1;;;;;9095:11:75;9092:35;9089:55;;;9140:1;9137;9130:12;9089:55;9169:58;9223:3;9216:4;9202:11;9194:6;9190:24;9186:35;9169:58;:::i;:::-;9157:71;;-1:-1:-1;9257:4:75;9248:14;;;;9001;8968:304;;9308:688;9360:5;9413:3;9406:4;9398:6;9394:17;9390:27;9380:55;;9431:1;9428;9421:12;9380:55;9471:6;9458:20;9498:81;9514:64;9571:6;9514:64;:::i;9498:81::-;9603:3;9627:6;9622:3;9615:19;9659:4;9654:3;9650:14;9643:21;;9720:4;9710:6;9707:1;9703:14;9695:6;9691:27;9687:38;9673:52;;9748:3;9740:6;9737:15;9734:35;;;9765:1;9762;9755:12;9734:35;9801:4;9793:6;9789:17;9815:150;9831:6;9826:3;9823:15;9815:150;;;9899:21;9916:3;9899:21;:::i;:::-;9887:34;;9950:4;9941:14;;;;9848;9815:150;;10001:1713;10288:6;10296;10304;10312;10320;10328;10336;10344;10397:3;10385:9;10376:7;10372:23;10368:33;10365:53;;;10414:1;10411;10404:12;10365:53;10454:9;10441:23;-1:-1:-1;;;;;10479:6:75;10476:30;10473:50;;;10519:1;10516;10509:12;10473:50;10542:49;10583:7;10574:6;10563:9;10559:22;10542:49;:::i;:::-;10532:59;;;10644:2;10633:9;10629:18;10616:32;-1:-1:-1;;;;;10663:8:75;10660:32;10657:52;;;10705:1;10702;10695:12;10657:52;10728:51;10771:7;10760:8;10749:9;10745:24;10728:51;:::i;:::-;10718:61;;;10798:38;10832:2;10821:9;10817:18;10798:38;:::i;:::-;10788:48;;10855:38;10889:2;10878:9;10874:18;10855:38;:::i;:::-;10845:48;;10946:3;10935:9;10931:19;10918:33;-1:-1:-1;;;;;10966:8:75;10963:32;10960:52;;;11008:1;11005;10998:12;10960:52;11031:80;11103:7;11092:8;11081:9;11077:24;11031:80;:::i;:::-;11021:90;;;11164:3;11153:9;11149:19;11136:33;-1:-1:-1;;;;;11184:8:75;11181:32;11178:52;;;11226:1;11223;11216:12;11178:52;11249:61;11302:7;11291:8;11280:9;11276:24;11249:61;:::i;:::-;11239:71;;;11363:3;11352:9;11348:19;11335:33;-1:-1:-1;;;;;11383:8:75;11380:32;11377:52;;;11425:1;11422;11415:12;11377:52;11448:61;11501:7;11490:8;11479:9;11475:24;11448:61;:::i;:::-;11438:71;;;11562:3;11551:9;11547:19;11534:33;-1:-1:-1;;;;;11582:8:75;11579:32;11576:52;;;11624:1;11621;11614:12;11576:52;11647:61;11700:7;11689:8;11678:9;11674:24;11647:61;:::i;:::-;11637:71;;;10001:1713;;;;;;;;;;;:::o;12091:160::-;12156:20;;12212:13;;12205:21;12195:32;;12185:60;;12241:1;12238;12231:12;12256:619;12371:6;12379;12387;12395;12448:3;12436:9;12427:7;12423:23;12419:33;12416:53;;;12465:1;12462;12455:12;12416:53;12488:27;12505:9;12488:27;:::i;:::-;12478:37;;12565:2;12554:9;12550:18;12537:32;12578:31;12603:5;12578:31;:::i;:::-;12628:5;-1:-1:-1;12684:2:75;12669:18;;12656:32;-1:-1:-1;;;;;12700:30:75;;12697:50;;;12743:1;12740;12733:12;12697:50;12766:49;12807:7;12798:6;12787:9;12783:22;12766:49;:::i;:::-;12756:59;;;12834:35;12865:2;12854:9;12850:18;12834:35;:::i;:::-;12824:45;;12256:619;;;;;;;:::o;13365:344::-;13447:6;13500:2;13488:9;13479:7;13475:23;13471:32;13468:52;;;13516:1;13513;13506:12;13468:52;13556:9;13543:23;-1:-1:-1;;;;;13581:6:75;13578:30;13575:50;;;13621:1;13618;13611:12;13575:50;13644:59;13695:7;13686:6;13675:9;13671:22;13644:59;:::i;13714:250::-;13777:6;13785;13838:2;13826:9;13817:7;13813:23;13809:32;13806:52;;;13854:1;13851;13844:12;13806:52;13877:27;13894:9;13877:27;:::i;:::-;13867:37;;13923:35;13954:2;13943:9;13939:18;13923:35;:::i;13969:508::-;14046:6;14054;14062;14115:2;14103:9;14094:7;14090:23;14086:32;14083:52;;;14131:1;14128;14121:12;14083:52;14176:23;;;-1:-1:-1;14275:2:75;14260:18;;14247:32;14288:33;14247:32;14288:33;:::i;:::-;14340:7;-1:-1:-1;14399:2:75;14384:18;;14371:32;14412:33;14371:32;14412:33;:::i;:::-;14464:7;14454:17;;;13969:508;;;;;:::o;14482:526::-;14689:4;14674:20;;14678:9;14771:6;14647:4;14805:197;14819:4;14816:1;14813:11;14805:197;;;14882:13;;-1:-1:-1;;;;;14878:39:75;14866:52;;14947:4;14938:14;;;;14975:17;;;;14914:1;14832:9;14805:197;;15013:388;15081:6;15089;15142:2;15130:9;15121:7;15117:23;15113:32;15110:52;;;15158:1;15155;15148:12;15110:52;15197:9;15184:23;15216:31;15241:5;15216:31;:::i;:::-;15266:5;-1:-1:-1;15323:2:75;15308:18;;15295:32;15336:33;15295:32;15336:33;:::i;15406:366::-;15479:6;15487;15495;15548:2;15536:9;15527:7;15523:23;15519:32;15516:52;;;15564:1;15561;15554:12;15516:52;15587:27;15604:9;15587:27;:::i;:::-;15577:37;;15633:36;15665:2;15654:9;15650:18;15633:36;:::i;15777:380::-;15856:1;15852:12;;;;15899;;;15920:61;;15974:4;15966:6;15962:17;15952:27;;15920:61;16027:2;16019:6;16016:14;15996:18;15993:38;15990:161;;16073:10;16068:3;16064:20;16061:1;16054:31;16108:4;16105:1;16098:15;16136:4;16133:1;16126:15;15990:161;;15777:380;;;:::o;16162:127::-;16223:10;16218:3;16214:20;16211:1;16204:31;16254:4;16251:1;16244:15;16278:4;16275:1;16268:15;16294:127;16355:10;16350:3;16346:20;16343:1;16336:31;16386:4;16383:1;16376:15;16410:4;16407:1;16400:15;16426:148;16514:4;16493:12;;;16507;;;16489:31;;16532:13;;16529:39;;;16548:18;;:::i;16579:184::-;16649:6;16702:2;16690:9;16681:7;16677:23;16673:32;16670:52;;;16718:1;16715;16708:12;16670:52;-1:-1:-1;16741:16:75;;16579:184;-1:-1:-1;16579:184:75:o;16768:135::-;16807:3;16828:17;;;16825:43;;16848:18;;:::i;:::-;-1:-1:-1;16895:1:75;16884:13;;16768:135::o;17122:345::-;-1:-1:-1;;;;;17342:32:75;;;;17324:51;;17406:2;17391:18;;17384:34;;;;17449:2;17434:18;;17427:34;17312:2;17297:18;;17122:345::o;17472:125::-;17537:9;;;17558:10;;;17555:36;;;17571:18;;:::i;17602:375::-;17690:1;17708:5;17722:249;17743:1;17733:8;17730:15;17722:249;;;17793:4;17788:3;17784:14;17778:4;17775:24;17772:50;;;17802:18;;:::i;:::-;17852:1;17842:8;17838:16;17835:49;;;17866:16;;;;17835:49;17949:1;17945:16;;;;;17905:15;;17722:249;;;17602:375;;;;;;:::o;17982:902::-;18031:5;18061:8;18051:80;;-1:-1:-1;18102:1:75;18116:5;;18051:80;18150:4;18140:76;;-1:-1:-1;18187:1:75;18201:5;;18140:76;18232:4;18250:1;18245:59;;;;18318:1;18313:174;;;;18225:262;;18245:59;18275:1;18266:10;;18289:5;;;18313:174;18350:3;18340:8;18337:17;18334:43;;;18357:18;;:::i;:::-;-1:-1:-1;;18413:1:75;18399:16;;18472:5;;18225:262;;18571:2;18561:8;18558:16;18552:3;18546:4;18543:13;18539:36;18533:2;18523:8;18520:16;18515:2;18509:4;18506:12;18502:35;18499:77;18496:203;;;-1:-1:-1;18608:19:75;;;18684:5;;18496:203;18731:42;-1:-1:-1;;18756:8:75;18750:4;18731:42;:::i;:::-;18809:6;18805:1;18801:6;18797:19;18788:7;18785:32;18782:58;;;18820:18;;:::i;:::-;18858:20;;17982:902;-1:-1:-1;;;17982:902:75:o;18889:140::-;18947:5;18976:47;19017:4;19007:8;19003:19;18997:4;18976:47;:::i;19034:296::-;19217:4;19209:6;19205:17;19194:9;19187:36;19259:2;19254;19243:9;19239:18;19232:30;19168:4;19279:45;19320:2;19309:9;19305:18;19297:6;19279:45;:::i;19568:618::-;19754:2;19766:21;;;19836:13;;19739:18;;;19858:22;;;19706:4;;19937:15;;;19911:2;19896:18;;;19706:4;19980:180;19994:6;19991:1;19988:13;19980:180;;;20059:13;;20074:4;20055:24;20043:37;;20109:2;20135:15;;;;20100:12;;;;20016:1;20009:9;19980:180;;;-1:-1:-1;20177:3:75;;19568:618;-1:-1:-1;;;;;19568:618:75:o;20191:128::-;20258:9;;;20279:11;;;20276:37;;;20293:18;;:::i;20324:151::-;20414:4;20407:12;;;20393;;;20389:31;;20432:14;;20429:40;;;20449:18;;:::i;20480:175::-;20517:3;20561:4;20554:5;20550:16;20590:4;20581:7;20578:17;20575:43;;20598:18;;:::i;:::-;20647:1;20634:15;;20480:175;-1:-1:-1;;20480:175:75:o;20849:127::-;20910:10;20905:3;20901:20;20898:1;20891:31;20941:4;20938:1;20931:15;20965:4;20962:1;20955:15;21260:301;21389:3;21427:6;21421:13;21473:6;21466:4;21458:6;21454:17;21449:3;21443:37;21535:1;21499:16;;21524:13;;;-1:-1:-1;21499:16:75;21260:301;-1:-1:-1;21260:301:75:o;22174:251::-;22244:6;22297:2;22285:9;22276:7;22272:23;22268:32;22265:52;;;22313:1;22310;22303:12;22265:52;22345:9;22339:16;22364:31;22389:5;22364:31;:::i;22430:127::-;22491:10;22486:3;22482:20;22479:1;22472:31;22522:4;22519:1;22512:15;22546:4;22543:1;22536:15;22562:254;22592:1;22626:4;22623:1;22619:12;22650:3;22640:134;;22696:10;22691:3;22687:20;22684:1;22677:31;22731:4;22728:1;22721:15;22759:4;22756:1;22749:15;22640:134;22806:3;22799:4;22796:1;22792:12;22788:22;22783:27;;;22562:254;;;;:::o;23602:518::-;23704:2;23699:3;23696:11;23693:421;;;23740:5;23737:1;23730:16;23784:4;23781:1;23771:18;23854:2;23842:10;23838:19;23835:1;23831:27;23825:4;23821:38;23890:4;23878:10;23875:20;23872:47;;;-1:-1:-1;23913:4:75;23872:47;23968:2;23963:3;23959:12;23956:1;23952:20;23946:4;23942:31;23932:41;;24023:81;24041:2;24034:5;24031:13;24023:81;;;24100:1;24086:16;;24067:1;24056:13;24023:81;;24296:1299;24422:3;24416:10;-1:-1:-1;;;;;24441:6:75;24438:30;24435:56;;;24471:18;;:::i;:::-;24500:97;24590:6;24550:38;24582:4;24576:11;24550:38;:::i;:::-;24544:4;24500:97;:::i;:::-;24646:4;24677:2;24666:14;;24694:1;24689:649;;;;25382:1;25399:6;25396:89;;;-1:-1:-1;25451:19:75;;;25445:26;25396:89;-1:-1:-1;;24253:1:75;24249:11;;;24245:24;24241:29;24231:40;24277:1;24273:11;;;24228:57;25498:81;;24659:930;;24689:649;23549:1;23542:14;;;23586:4;23573:18;;-1:-1:-1;;24725:20:75;;;24843:222;24857:7;24854:1;24851:14;24843:222;;;24939:19;;;24933:26;24918:42;;25046:4;25031:20;;;;24999:1;24987:14;;;;24873:12;24843:222;;;24847:3;25093:6;25084:7;25081:19;25078:201;;;25154:19;;;25148:26;-1:-1:-1;;25237:1:75;25233:14;;;25249:3;25229:24;25225:37;25221:42;25206:58;25191:74;;25078:201;-1:-1:-1;;;;25325:1:75;25309:14;;;25305:22;25292:36;;-1:-1:-1;24296:1299:75:o"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FORWARD_TO_STRATEGY_ROLE()":"cd0e0f44","GUARDIAN_ROLE()":"24ea54f4","LP_ROLE()":"e1d39450","MAX_STRATEGIES()":"767f06ae","QUEUE_ADMIN_ROLE()":"367fee39","REBALANCER_ROLE()":"490b48f8","STRATEGY_ADMIN_ROLE()":"0b74ce8c","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","forwardToStrategy(uint8,uint8,bytes)":"3aaf9048","getBytesSlot(bytes32)":"47e57533","getForwardToStrategyRole(uint8,uint8)":"128b772f","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(string,string,address,address,address[],bytes[],uint8[],uint8[])":"6b3ea526","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","renounceRole(bytes32,address)":"36568abe","replaceStrategy(uint8,address,bytes,bool)":"7ac445a7","revokeRole(bytes32,address)":"d547741f","setRoleAdmin(bytes32,bytes32)":"1e4e0091","strategies()":"d9f9027f","supportsInterface(bytes4)":"01ffc9a7","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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"InvalidAsset\",\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FORWARD_TO_STRATEGY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LP_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_STRATEGIES\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"QUEUE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REBALANCER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STRATEGY_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"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\":\"getForwardToStrategyRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"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\":\"owner\",\"type\":\"address\"}],\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ret\",\"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\":\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"adminRole\",\"type\":\"bytes32\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"strategies\",\"outputs\":[{\"internalType\":\"contract IInvestStrategy[32]\",\"name\":\"\",\"type\":\"address[32]\"}],\"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\":\"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 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.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"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\"},\"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.\"},\"getForwardToStrategyRole(uint8,uint8)\":{\"details\":\"Returns the AccessControl 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\":{\"role\":\"The bytes32 role required to execute the call\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(string,string,address,address,address[],bytes[],uint8[],uint8[])\":{\"details\":\"Initializes the SingleStrategyERC4626\",\"params\":{\"admin_\":\"User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\",\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"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\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"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\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"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).\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"},\"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\":\"MultiStrategyERC4626\",\"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/MultiStrategyERC4626.sol\":\"MultiStrategyERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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\":\"0xddb5cd69d86cd5feb1b4732aba8c745b347159ee8e500f7af3cc33e9ca305c0d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc8a0079a984750f524796152cdd4882769771fe8e8329c085bc327dc957490d\",\"dweb:/ipfs/QmcKDFDrvisgX65QJhw6aLVvLiWPxozPww7ZFXSEZAEsns\"]},\"contracts/MultiStrategyERC4626.sol\":{\"keccak256\":\"0x64e0026e46afb7ffa8ddcf3b99796cb9fc28cc705a5da31701b07f7c2621cc7e\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://ff81fdf46ae8372777d46b65d035304735c65ed3088f751de58fcdd8bf55d870\",\"dweb:/ipfs/QmSkorH1ZWbx1bWHdBHPLHqTiZ8dWaBuJRmWWAPdU2x7We\"]},\"contracts/PermissionedERC4626.sol\":{\"keccak256\":\"0x2760466f73e34bf00a2710b08a47a9ca11d36ef8e965cc2a973613da91cffd21\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d05b8b13e64ea02b37f91980a0496e04e6d50a27fd0b708dc9a785d51732c15\",\"dweb:/ipfs/QmQjNATyUL5tuheXexHwZf4bZKDNp57GkcLth9xXxg1xes\"]},\"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":15803,"contract":"contracts/MultiStrategyERC4626.sol:MultiStrategyERC4626","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15807,"contract":"contracts/MultiStrategyERC4626.sol:MultiStrategyERC4626","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15812,"contract":"contracts/MultiStrategyERC4626.sol:MultiStrategyERC4626","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)22374)32_storage"},{"astId":17436,"contract":"contracts/MultiStrategyERC4626.sol:MultiStrategyERC4626","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)22374)32_storage":{"base":"t_contract(IInvestStrategy)22374","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)22374":{"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":"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":{"@_13871":{"entryPoint":null,"id":13871,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_2832":{"entryPoint":33,"id":2832,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"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:75","nodeType":"YulBlock","src":"0:216:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"113:101:75","nodeType":"YulBlock","src":"113:101:75","statements":[{"nativeSrc":"123:26:75","nodeType":"YulAssignment","src":"123:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:75","nodeType":"YulIdentifier","src":"135:9:75"},{"kind":"number","nativeSrc":"146:2:75","nodeType":"YulLiteral","src":"146:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:75","nodeType":"YulIdentifier","src":"131:3:75"},"nativeSrc":"131:18:75","nodeType":"YulFunctionCall","src":"131:18:75"},"variableNames":[{"name":"tail","nativeSrc":"123:4:75","nodeType":"YulIdentifier","src":"123:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:75","nodeType":"YulIdentifier","src":"165:9:75"},{"arguments":[{"name":"value0","nativeSrc":"180:6:75","nodeType":"YulIdentifier","src":"180:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:75","nodeType":"YulLiteral","src":"196:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:75","nodeType":"YulLiteral","src":"200:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:75","nodeType":"YulIdentifier","src":"192:3:75"},"nativeSrc":"192:10:75","nodeType":"YulFunctionCall","src":"192:10:75"},{"kind":"number","nativeSrc":"204:1:75","nodeType":"YulLiteral","src":"204:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:75","nodeType":"YulIdentifier","src":"188:3:75"},"nativeSrc":"188:18:75","nodeType":"YulFunctionCall","src":"188:18:75"}],"functionName":{"name":"and","nativeSrc":"176:3:75","nodeType":"YulIdentifier","src":"176:3:75"},"nativeSrc":"176:31:75","nodeType":"YulFunctionCall","src":"176:31:75"}],"functionName":{"name":"mstore","nativeSrc":"158:6:75","nodeType":"YulIdentifier","src":"158:6:75"},"nativeSrc":"158:50:75","nodeType":"YulFunctionCall","src":"158:50:75"},"nativeSrc":"158:50:75","nodeType":"YulExpressionStatement","src":"158:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:75","nodeType":"YulTypedName","src":"82:9:75","type":""},{"name":"value0","nativeSrc":"93:6:75","nodeType":"YulTypedName","src":"93:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:75","nodeType":"YulTypedName","src":"104:4:75","type":""}],"src":"14:200:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614fd66100f95f395f81816126460152818161266f01526127ab0152614fd65ff3fe60806040526004361061028b575f3560e01c80638cdf48a811610155578063ba087652116100be578063d905777e11610078578063d905777e14610803578063d9f9027f14610822578063dd62ed3e14610843578063e682324d14610862578063ef8b30f714610795578063f617eecc14610881575f5ffd5b8063ba08765214610738578063bd577eb614610757578063c63d75b614610776578063c6e6f59214610795578063ce96cb77146107b4578063d89b074d146107d3575f5ffd5b806396da35da1161010f57806396da35da1461066d578063a7ded2ea1461068c578063a9059cbb146106ab578063ad3cb1cc146106ca578063b3d7f6b9146106fa578063b460af9414610719575f5ffd5b80638cdf48a81461058d5780638eef8380146105c5578063914abf4f146105e457806392ce412e1461060357806394bf804d1461063a57806395d89b4114610659575f5ffd5b8063402d267d116101f757806352d1902d116101b157806352d1902d146104e95780636e553f65146104fd57806370a082311461051c578063767f06ae1461053b5780637ac445a71461054f5780637aeedf2a1461056e575f5ffd5b8063402d267d1461045857806347e57533146104775780634cdad506146102d75780634f1ef28614610496578063508a0538146104a957806351a2d6d1146104c8575f5ffd5b806318160ddd1161024857806318160ddd1461036557806323b872dd146103985780632e6863da146103b7578063313ce567146103e057806338d52e0f146104065780633aaf904814610439575f5ffd5b806301e1d1141461028f57806306fdde03146102b657806307a2d13a146102d7578063095ea7b3146102f65780630a28a477146103255780630a60458414610344575b5f5ffd5b34801561029a575f5ffd5b506102a3610895565b6040519081526020015b60405180910390f35b3480156102c1575f5ffd5b506102ca6108a3565b6040516102ad9190614322565b3480156102e2575f5ffd5b506102a36102f1366004614334565b610963565b348015610301575f5ffd5b5061031561031036600461435f565b610974565b60405190151581526020016102ad565b348015610330575f5ffd5b506102a361033f366004614334565b61098b565b34801561034f575f5ffd5b5061036361035e366004614389565b610997565b005b348015610370575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102a3565b3480156103a3575f5ffd5b506103156103b23660046143a9565b610a32565b3480156103c2575f5ffd5b505f516020614f215f395f51905f52546001600160801b03166102a3565b3480156103eb575f5ffd5b506103f4610a57565b60405160ff90911681526020016102ad565b348015610411575f5ffd5b505f516020614f815f395f51905f52546040516001600160a01b0390911681526020016102ad565b348015610444575f5ffd5b506102ca6104533660046144b1565b610a86565b348015610463575f5ffd5b506102a361047236600461450a565b610b0b565b348015610482575f5ffd5b506102ca610491366004614334565b610b14565b6103636104a4366004614525565b610c94565b3480156104b4575f5ffd5b506102a36104c3366004614389565b610caa565b3480156104d3575f5ffd5b506104dc610d24565b6040516102ad9190614571565b3480156104f4575f5ffd5b506102a3610d7c565b348015610508575f5ffd5b506102a36105173660046145a5565b610d97565b348015610527575f5ffd5b506102a361053636600461450a565b610df4565b348015610546575f5ffd5b506103f4602081565b34801561055a575f5ffd5b506103636105693660046145e0565b610e1a565b348015610579575f5ffd5b50610363610588366004614525565b610f53565b348015610598575f5ffd5b506105ac6105a736600461464e565b611158565b6040516001600160e01b031990911681526020016102ad565b3480156105d0575f5ffd5b506102a36105df36600461467f565b6111b7565b3480156105ef575f5ffd5b506103636105fe36600461473e565b6111d7565b34801561060e575f5ffd5b506102a361061d366004614334565b5f9081525f516020614f015f395f51905f52602052604090205490565b348015610645575f5ffd5b506102a36106543660046145a5565b611429565b348015610664575f5ffd5b506102ca611475565b348015610678575f5ffd5b5061036361068736600461476f565b6114b3565b348015610697575f5ffd5b506103636106a6366004614886565b611aca565b3480156106b6575f5ffd5b506103156106c536600461435f565b611be2565b3480156106d5575f5ffd5b506102ca604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610705575f5ffd5b506102a3610714366004614334565b611bef565b348015610724575f5ffd5b506102a361073336600461499d565b611bfb565b348015610743575f5ffd5b506102a361075236600461499d565b611c48565b348015610762575f5ffd5b5061036361077136600461473e565b611c95565b348015610781575f5ffd5b506102a361079036600461450a565b611ee1565b3480156107a0575f5ffd5b506102a36107af366004614334565b611f0d565b3480156107bf575f5ffd5b506102a36107ce36600461450a565b611f18565b3480156107de575f5ffd5b505f516020614f215f395f51905f5254600160801b90046001600160801b03166102a3565b34801561080e575f5ffd5b506102a361081d36600461450a565b611f2e565b34801561082d575f5ffd5b50610836611f73565b6040516102ad91906149dc565b34801561084e575f5ffd5b506102a361085d366004614a0d565b611fb9565b34801561086d575f5ffd5b506102a361087c366004614a39565b612002565b34801561088c575f5ffd5b506104dc6121f2565b5f61089e61222d565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614f415f395f51905f52916108e190614a62565b80601f016020809104026020016040519081016040528092919081815260200182805461090d90614a62565b80156109585780601f1061092f57610100808354040283529160200191610958565b820191905f5260205f20905b81548152906001019060200180831161093b57829003601f168201915b505050505091505090565b5f61096e825f6122a8565b92915050565b5f336109818185856122ff565b5060019392505050565b5f61096e826001612311565b5f516020614f215f395f51905f526109ae8261235f565b81546001600160801b03918216600160801b0291161781556109cf8361235f565b81546fffffffffffffffffffffffffffffffff19166001600160801b039190911617815560408051848152602081018490527fb60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b8591015b60405180910390a1505050565b5f33610a3f858285612392565b610a4a8585856123e2565b60019150505b9392505050565b5f805f516020614f815f395f51905f5290505f8154610a809190600160a01b900460ff16614aae565b91505090565b6060610a9384848461243f565b5f60028560ff1660208110610aaa57610aaa614ac7565b01546001600160a01b0316905080610ad557604051632711b74d60e11b815260040160405180910390fd5b610b02848460028860ff1660208110610af057610af0614ac7565b01546001600160a01b0316919061255d565b95945050505050565b5f61096e6125af565b60605f5b5f60028260208110610b2c57610b2c614ac7565b01546001600160a01b031614801590610b455750602081105b15610c7a5760028160208110610b5d57610b5d614ac7565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd09190614adb565b8303610c6a57825483908190610be590614a62565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1190614a62565b8015610c5c5780601f10610c3357610100808354040283529160200191610c5c565b820191905f5260205f20905b815481529060010190602001808311610c3f57829003601f168201915b505050505092505050919050565b610c7381614af2565b9050610b18565b5060405163213109dd60e11b815260040160405180910390fd5b610c9c61263b565b610ca682826126e4565b5050565b5f8281525f516020614f015f395f51905f5260205260408120805490839083610cd38385614b0a565b918290555060408051878152602081018590529081018290529093507f177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2915060600160405180910390a15092915050565b610d2c6142d5565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d445790505050505050905090565b5f610d856127a0565b505f516020614f615f395f51905f5290565b5f5f610da283610b0b565b905080841115610dd457828482604051633c8097d960e11b8152600401610dcb93929190614b31565b60405180910390fd5b5f610dde85611f0d565b9050610dec338587846127e9565b949350505050565b6001600160a01b03165f9081525f516020614f415f395f51905f52602052604090205490565b5f60028560ff1660208110610e3157610e31614ac7565b01546001600160a01b0316905080610e5c57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610e8b57505f60028260208110610e7d57610e7d614ac7565b01546001600160a01b031614155b15610f0157846001600160a01b031660028260208110610ead57610ead614ac7565b01546001600160a01b0316148015610ec857508560ff168114155b15610ef15760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610dcb565b610efa81614af2565b9050610e5e565b50610f16818585610f10612838565b86612857565b8360028660ff1660208110610f2d57610f2d614ac7565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610f7a57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610fa957505f60028260208110610f9b57610f9b614ac7565b01546001600160a01b031614155b1561100f57826001600160a01b031660028260208110610fcb57610fcb614ac7565b01546001600160a01b031603610fff5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610dcb565b61100881614af2565b9050610f7c565b601f19810161103457604051600162ad1fab60e01b0319815260040160405180910390fd5b826002826020811061104857611048614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055611072816001614b52565b5f826020811061108457611084614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055508060016110b19190614b52565b600182602081106110c4576110c4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506110ff6110ef612838565b6001600160a01b038516906129a5565b6111126001600160a01b03841683612a37565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff166020811061117057611170614ac7565b0154604080516001600160a01b039092166020830181905260ff86169183019190915291506060016040516020818303038152906040528051906020012091505092915050565b5f6111c98364ffffffffff8416614b79565b610a5090608085901b614b52565b6111df6142d5565b81515f90602010156112045760405163a29b1f1160e01b815260040160405180910390fd5b82518110156113af57602060ff1683828151811061122457611224614ac7565b602002602001015160ff1610158061127d57505f6001600160a01b0316600284838151811061125557611255614ac7565b602002602001015160ff166020811061127057611270614ac7565b01546001600160a01b0316145b1561129b5760405163a29b1f1160e01b815260040160405180910390fd5b818382815181106112ae576112ae614ac7565b602002602001015160ff16602081106112c9576112c9614ac7565b602002015115611310578281815181106112e5576112e5614ac7565b602002602001015160405163c41fdbb960e01b8152600401610dcb919060ff91909116815260200190565b60018284838151811061132557611325614ac7565b602002602001015160ff166020811061134057611340614ac7565b91151560209092020152825183908290811061135e5761135e614ac7565b602002602001015160016113729190614aae565b5f826020811061138457611384614ac7565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050611204565b6020811080156113dc57505f600282602081106113ce576113ce614ac7565b01546001600160a01b031614155b156113fa57604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec83604051610a259190614b8c565b5f5f61143483611ee1565b90508084111561145d5782848260405163284ff66760e01b8152600401610dcb93929190614b31565b5f61146785611bef565b9050610dec338583886127e9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614f415f395f51905f52916108e190614a62565b602060ff8316106114d757604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff16602081106114ee576114ee614ac7565b01546001600160a01b031690508061151957604051632711b74d60e11b815260040160405180910390fd5b811580156115375750611534816001600160a01b0316612a85565b15155b15611555576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561156f57506003546001600160a01b0316155b1561159057604051600162ad1fab60e01b0319815260040160405180910390fd5b5f61159c846001614aae565b60ff1690505b6020811080156115cf57505f600282602081106115c1576115c1614ac7565b01546001600160a01b031614155b1561163e57600281602081106115e7576115e7614ac7565b01546001600160a01b031660026115ff600184614bd1565b6020811061160f5761160f614ac7565b0180546001600160a01b0319166001600160a01b039290921691909117905561163781614af2565b90506115a2565b5f600261164c600184614bd1565b6020811061165c5761165c614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061169357611693614ac7565b602081049091015460ff601f9092166101000a900416158015906116b75750602083105b156119e957801561177b576116cd866001614aae565b60ff16600184602081106116e3576116e3614ac7565b602081049091015460ff601f9092166101000a90041611611704575f611707565b60015b6001846020811061171a5761171a614ac7565b602091828204019190069054906101000a900460ff1661173a9190614be4565b60016117468186614bd1565b6020811061175657611756614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555061184c565b611786866001614aae565b60ff166001846020811061179c5761179c614ac7565b602081049091015460ff601f9092166101000a900416036117bf5750600161184c565b6117ca866001614aae565b60ff16600184602081106117e0576117e0614ac7565b602081049091015460ff601f9092166101000a900416111561184c57600180846020811061181057611810614ac7565b602091828204019190068282829054906101000a900460ff166118339190614be4565b92506101000a81548160ff021916908360ff1602179055505b81156119095761185d866001614aae565b60ff165f846020811061187257611872614ac7565b602081049091015460ff601f9092166101000a90041611611893575f611896565b60015b5f84602081106118a8576118a8614ac7565b602091828204019190069054906101000a900460ff166118c89190614be4565b5f6118d4600186614bd1565b602081106118e4576118e4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506119d9565b611914866001614aae565b60ff165f846020811061192957611929614ac7565b602081049091015460ff601f9092166101000a9004160361194d57600191506119d9565b611958866001614aae565b60ff165f846020811061196d5761196d614ac7565b602081049091015460ff601f9092166101000a90041611156119d95760015f846020811061199d5761199d614ac7565b602091828204019190068282829054906101000a900460ff166119c09190614be4565b92506101000a81548160ff021916908360ff1602179055505b6119e283614af2565b9250611680565b5f806119f6600186614bd1565b60208110611a0657611a06614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055505f60018085611a359190614bd1565b60208110611a4557611a45614ac7565b602091828204019190066101000a81548160ff021916908360ff160217905550611a8185856001600160a01b0316612aee90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611b0e5750825b90505f826001600160401b03166001148015611b295750303b155b905081158015611b37575080155b15611b555760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b7f57845460ff60401b1916600160401b1785555b611b8e8c8c8c8c8c8c8c612c13565b8315611bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336109818185856123e2565b5f61096e8260016122a8565b5f5f611c0683611f18565b905080851115611c2f57828582604051633fa733bb60e21b8152600401610dcb93929190614b31565b5f611c398661098b565b9050610b023386868985612c4b565b5f5f611c5383611f2e565b905080851115611c7c57828582604051632e52afbb60e21b8152600401610dcb93929190614b31565b5f611c8686610963565b9050610b02338686848a612c4b565b611c9d6142d5565b81515f9060201015611cc25760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611e6157602060ff16838260ff1681518110611ce857611ce8614ac7565b602002602001015160ff16101580611d4457505f6001600160a01b03166002848360ff1681518110611d1c57611d1c614ac7565b602002602001015160ff1660208110611d3757611d37614ac7565b01546001600160a01b0316145b15611d625760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611d7857611d78614ac7565b602002602001015160ff1660208110611d9357611d93614ac7565b602002015115611db257828160ff16815181106112e5576112e5614ac7565b600182848360ff1681518110611dca57611dca614ac7565b602002602001015160ff1660208110611de557611de5614ac7565b911515602090920201528251839060ff8316908110611e0657611e06614ac7565b60200260200101516001611e1a9190614aae565b60018260ff1660208110611e3057611e30614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555080611e5a90614bfd565b9050611cc2565b602060ff8216108015611e9457505f600260ff831660208110611e8657611e86614ac7565b01546001600160a01b031614155b15611eb257604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051610a259190614b8c565b5f5f611eeb6125af565b90505f198114611f0457611eff815f612311565b610a50565b5f199392505050565b5f61096e825f612311565b5f5f611f2383612d5b565b9050610a5081612d6e565b5f5f611f3983612e03565b90505f611f46825f6122a8565b90505f611f5282612d6e565b9050818114611f6a57611f65815f612311565b610b02565b50909392505050565b611f7b6142d5565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611f92575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff851610158061201a5750602060ff841610155b1561203857604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff166020811061204f5761204f614ac7565b01546001600160a01b031690505f600260ff86166020811061207357612073614ac7565b01546001600160a01b0390811691508216158061209757506001600160a01b038116155b156120b557604051632711b74d60e11b815260040160405180910390fd5b5f1984036120d2576120cf826001600160a01b0316612a85565b93505b835f036120e3575f92505050610a50565b6120f5826001600160a01b0316612e0d565b84111561212a5761210e826001600160a01b0316612e0d565b604051633ce011d560e01b8152600401610dcb91815260200190565b61213c816001600160a01b0316612e3b565b84111561217157612155816001600160a01b0316612e3b565b6040516350a3e37560e11b8152600401610dcb91815260200190565b6121856001600160a01b038316855f612e69565b5061219a6001600160a01b038216855f612fa5565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b866040516121e091815260200190565b60405180910390a35091949350505050565b6121fa6142d5565b604080516104008101918290525f805460ff1682529091602090826001838601808411610d445790505050505050905090565b5f5f5b5f6002826020811061224457612244614ac7565b01546001600160a01b03161480159061225d5750602081105b156122a4576122886002826020811061227857612278614ac7565b01546001600160a01b0316612a85565b6122929083614b52565b915061229d81614af2565b9050612230565b5090565b5f610a506122b4610895565b6122bf906001614b52565b6122ca5f600a614cfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546122f69190614b52565b859190856130c6565b61230c8383836001613108565b505050565b5f610a5061232082600a614cfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461234c9190614b52565b612354610895565b6122f6906001614b52565b5f6001600160801b038211156122a4576040516306dfcc6560e41b81526080600482015260248101839052604401610dcb565b5f61239d8484611fb9565b90505f1981146123dc57818110156123ce57828183604051637dc7a0d960e11b8152600401610dcb93929190614b31565b6123dc84848484035f613108565b50505050565b6001600160a01b03831661240b57604051634b637e8f60e11b81525f6004820152602401610dcb565b6001600160a01b0382166124345760405163ec442f0560e01b81525f6004820152602401610dcb565b61230c8383836131eb565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124a09190614d0c565b90505f816001600160a01b031663b700961333306124be8989611158565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015612510573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125349190614d27565b509050806125565760405162d1953b60e31b8152336004820152602401610dcb565b5050505050565b6060610dec8383604051602401612575929190614d5c565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690613311565b5f5f5f5b5f600282602081106125c7576125c7614ac7565b01546001600160a01b0316148015906125e05750602081105b15612636576126148361260f600284602081106125ff576125ff614ac7565b01546001600160a01b0316612e3b565b61337a565b9350915081612626575f199250505090565b61262f81614af2565b90506125b3565b505090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806126c157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126b55f516020614f615f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126df5760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561273e575060408051601f3d908101601f1916820190925261273b91810190614adb565b60015b61276657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dcb565b5f516020614f615f395f51905f52811461279657604051632a87526960e21b815260048101829052602401610dcb565b61230c83836133a1565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126df5760405163703e46dd60e11b815260040160405180910390fd5b5f6127f26133f6565b90506127fd83613428565b5f8281525f516020614f015f395f51905f52602052604081208054909190612826908490614b0a565b90915550612556905085858585613454565b5f61089e5f516020614f815f395f51905f52546001600160a01b031690565b61286184836129a5565b60405163f3e0ffbf60e01b81523060048201526128d39086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156128a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128cd9190614adb565b83612e69565b506128de8582612aee565b6128e88484612a37565b6040516370a0823160e01b815230600482015261295a9085906001600160a01b038516906370a0823190602401602060405180830381865afa158015612930573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129549190614adb565b83612fa5565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa1580156129ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a109190614d0c565b6001600160a01b031614610ca65760405163e76673ef60e01b815260040160405180910390fd5b61230c81604051602401612a4b9190614322565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690613311565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612aca573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096e9190614adb565b8015612bc957604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251612b459190614d77565b5f60405180830381855af49150503d805f8114612b7d576040519150601f19603f3d011682016040523d82523d5f602084013e612b82565b606091505b5091509150816123dc577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612bbb9190614322565b60405180910390a150505050565b6040515f602482015261230c9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690613311565b612c1b613469565b612c236134b2565b612c2c856134ba565b612c3687876134cb565b612c42848484846134dd565b50505050505050565b5f612c546133f6565b90505f612c62600183614bd1565b5f8181525f516020614f015f395f51905f52602052604080822054858352908220549293505f516020614f215f395f51905f5292612c9f88614d8d565b612ca99190614b0a565b612cb39190614b0a565b90505f81128015612cdc57508154600160801b90046001600160801b0316612cda82614d8d565b115b15612d1557815460405163cc9a505360e01b815260048101839052600160801b9091046001600160801b03166024820152604401610dcb565b612d1e86613428565b5f85815260018401602052604081208054909190612d3d908490614da7565b90915550612d5090508989898989613a5e565b505050505050505050565b5f61096e612d6883610df4565b5f6122a8565b5f5f5f5b5f60028260208110612d8657612d86614ac7565b01546001600160a01b031614801590612d9f5750602081105b15612dfc57612dce8361260f60028460208110612dbe57612dbe614ac7565b01546001600160a01b0316612e0d565b93509150811580612ddf5750838310155b15612dec57509192915050565b612df581614af2565b9050612d72565b5050919050565b5f61096e82610df4565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612aaf565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612aaf565b5f8115612f4b575f5f856001600160a01b031685604051602401612e8f91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612ec49190614d77565b5f60405180830381855af49150503d805f8114612efc576040519150601f19603f3d011682016040523d82523d5f602084013e612f01565b606091505b509150915081612f43577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612f3a9190614322565b60405180910390a15b509050610a50565b612f9b83604051602401612f6191815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690613311565b5060019050610a50565b5f8115613076575f5f856001600160a01b031685604051602401612fcb91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b179052516130009190614d77565b5f60405180830381855af49150503d805f8114613038576040519150601f19603f3d011682016040523d82523d5f602084013e61303d565b606091505b509150915081612f43577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612f3a9190614322565b612f9b8360405160240161308c91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690613311565b5f6130f36130d383613a74565b80156130ee57505f84806130e9576130e9614b65565b868809115b151590565b6130fe868686613aa0565b610b029190614b52565b5f516020614f415f395f51905f526001600160a01b03851661313f5760405163e602df0560e01b81525f6004820152602401610dcb565b6001600160a01b03841661316857604051634a1406b160e11b81525f6004820152602401610dcb565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561255657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516131dc91815260200190565b60405180910390a35050505050565b5f516020614f415f395f51905f526001600160a01b0384166132255781816002015f82825461321a9190614b52565b909155506132829050565b6001600160a01b0384165f90815260208290526040902054828110156132645784818460405163391434e360e21b8152600401610dcb93929190614b31565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166132a05760028101805483900390556132be565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330391815260200190565b60405180910390a350505050565b60605f5f846001600160a01b03168460405161332d9190614d77565b5f60405180830381855af49150503d805f8114613365576040519150601f19603f3d011682016040523d82523d5f602084013e61336a565b606091505b5091509150610b02858383613b56565b5f8083830184811015613393575f5f925092505061339a565b6001925090505b9250929050565b6133aa82613bad565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133ee5761230c8282613311565b610ca6613c10565b5f516020614f215f395f51905f52545f906001600160801b031661341a8142614b79565b610a8090608083901b614b52565b5f6001600160ff1b038211156122a45760405163123baf0360e11b815260048101839052602401610dcb565b61346084848484613c2f565b6123dc82613cac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166126df57604051631afcd79f60e31b815260040160405180910390fd5b6126df613469565b6134c2613469565b6126e181613dc3565b6134d3613469565b610ca68282613e33565b835115806134ec575083516020105b806134f957508251845114155b8061350657508151845114155b8061351357508051845114155b1561353457604051600162ad1fab60e01b0319815260040160405180910390fd5b61353c6142d5565b6135446142d5565b5f5b86518110156139e7575f6001600160a01b031687828151811061356b5761356b614ac7565b60200260200101516001600160a01b03160361359a57604051632711b74d60e11b815260040160405180910390fd5b6135d66135a5612838565b8883815181106135b7576135b7614ac7565b60200260200101516001600160a01b03166129a590919063ffffffff16565b5f5b81811015613676578781815181106135f2576135f2614ac7565b60200260200101516001600160a01b031688838151811061361557613615614ac7565b60200260200101516001600160a01b03160361366e5787828151811061363d5761363d614ac7565b602002602001015160405163b5a9314f60e01b8152600401610dcb91906001600160a01b0391909116815260200190565b6001016135d8565b50865185828151811061368b5761368b614ac7565b602002602001015160ff161015806136d25750828582815181106136b1576136b1614ac7565b602002602001015160ff16602081106136cc576136cc614ac7565b60200201515b15613714578481815181106136e9576136e9614ac7565b602002602001015160405163306ccd5d60e11b8152600401610dcb919060ff91909116815260200190565b865184828151811061372857613728614ac7565b602002602001015160ff1610158061376f57508184828151811061374e5761374e614ac7565b602002602001015160ff166020811061376957613769614ac7565b60200201515b156137b15783818151811061378657613786614ac7565b6020026020010151604051632776924160e11b8152600401610dcb919060ff91909116815260200190565b6001838683815181106137c6576137c6614ac7565b602002602001015160ff16602081106137e1576137e1614ac7565b60200201901515908115158152505060018285838151811061380557613805614ac7565b602002602001015160ff166020811061382057613820614ac7565b91151560209092020152865187908290811061383e5761383e614ac7565b60200260200101516002826020811061385957613859614ac7565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061388f5761388f614ac7565b602002602001015160016138a39190614aae565b5f82602081106138b5576138b5614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055508381815181106138e7576138e7614ac7565b602002602001015160016138fb9190614aae565b6001826020811061390e5761390e614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555061397c86828151811061394357613943614ac7565b602002602001015188838151811061395d5761395d614ac7565b60200260200101516001600160a01b0316612a3790919063ffffffff16565b86818151811061398e5761398e614ac7565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f58826040516139d7919060ff91909116815260200190565b60405180910390a2600101613546565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec84604051613a179190614b8c565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051613a4e9190614b8c565b60405180910390a1505050505050565b613a6782613e83565b6125568585858585613f96565b5f6002826003811115613a8957613a89614dcd565b613a939190614de1565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03613ad457838281613aca57613aca614b65565b0492505050610a50565b808411613aeb57613aeb600385150260111861404a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606082613b6657611eff8261405b565b8151158015613b7d57506001600160a01b0384163b155b15613ba657604051639996b31560e01b81526001600160a01b0385166004820152602401610dcb565b5080610a50565b806001600160a01b03163b5f03613be257604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dcb565b5f516020614f615f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156126df5760405163b398979f60e01b815260040160405180910390fd5b5f516020614f815f395f51905f528054613c54906001600160a01b0316863086614084565b613c5e84836140eb565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d785856040516131dc929190918252602082015260400190565b805f5b8115801590613ce457505f8160208110613ccb57613ccb614ac7565b602081049091015460ff601f9092166101000a90041615155b8015613cf05750602081105b15613da3575f600260015f8460208110613d0c57613d0c614ac7565b602091828204019190069054906101000a900460ff16613d2c9190614be4565b60ff1660208110613d3f57613d3f614ac7565b01546001600160a01b031690505f613d5f84613d5a84612e3b565b61411f565b9050805f03613d6f575050613d93565b613d836001600160a01b038316825f612fa5565b50613d8e8185614bd1565b935050505b613d9c81614af2565b9050613caf565b508015610ca65760405163285a546d60e01b815260040160405180910390fd5b613dcb613469565b5f516020614f815f395f51905f525f80613de48461412e565b9150915081613df4576012613df6565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613e3b613469565b5f516020614f415f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613e748482614e46565b50600481016123dc8382614e46565b805f5b8115801590613ebc575060018160208110613ea357613ea3614ac7565b602081049091015460ff601f9092166101000a90041615155b8015613ec85750602081105b15613f76575f60026001808460208110613ee457613ee4614ac7565b602091828204019190069054906101000a900460ff16613f049190614be4565b60ff1660208110613f1757613f17614ac7565b01546001600160a01b031690505f613f3284613d5a84612e0d565b9050805f03613f42575050613f66565b613f566001600160a01b038316825f612e69565b50613f618185614bd1565b935050505b613f6f81614af2565b9050613e86565b508015610ca65760405163351dc55d60e21b815260040160405180910390fd5b5f516020614f815f395f51905f526001600160a01b0386811690851614613fc257613fc2848784612392565b613fcc8483614204565b8054613fe2906001600160a01b03168685614238565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db868660405161403a929190918252602082015260400190565b60405180910390a4505050505050565b634e487b715f52806020526024601cfd5b80511561406b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526123dc9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614269565b6001600160a01b0382166141145760405163ec442f0560e01b81525f6004820152602401610dcb565b610ca65f83836131eb565b5f828218828410028218610a50565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161417491614d77565b5f60405180830381855afa9150503d805f81146141ac576040519150601f19603f3d011682016040523d82523d5f602084013e6141b1565b606091505b50915091508180156141c557506020815110155b156141f8575f818060200190518101906141df9190614adb565b905060ff81116141f6576001969095509350505050565b505b505f9485945092505050565b6001600160a01b03821661422d57604051634b637e8f60e11b81525f6004820152602401610dcb565b610ca6825f836131eb565b6040516001600160a01b0383811660248301526044820183905261230c91859182169063a9059cbb906064016140b9565b5f5f60205f8451602086015f885af180614288576040513d5f823e3d81fd5b50505f513d9150811561429f5780600114156142ac565b6001600160a01b0384163b155b156123dc57604051635274afe760e01b81526001600160a01b0385166004820152602401610dcb565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a5060208301846142f4565b5f60208284031215614344575f5ffd5b5035919050565b6001600160a01b03811681146126e1575f5ffd5b5f5f60408385031215614370575f5ffd5b823561437b8161434b565b946020939093013593505050565b5f5f6040838503121561439a575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156143bb575f5ffd5b83356143c68161434b565b925060208401356143d68161434b565b929592945050506040919091013590565b803560ff811681146143f7575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614438576144386143fc565b604052919050565b5f82601f83011261444f575f5ffd5b8135602083015f5f6001600160401b0384111561446e5761446e6143fc565b50601f8301601f191660200161448381614410565b915050828152858383011115614497575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f606084860312156144c3575f5ffd5b6144cc846143e7565b92506144da602085016143e7565b915060408401356001600160401b038111156144f4575f5ffd5b61450086828701614440565b9150509250925092565b5f6020828403121561451a575f5ffd5b8135610a508161434b565b5f5f60408385031215614536575f5ffd5b82356145418161434b565b915060208301356001600160401b0381111561455b575f5ffd5b61456785828601614440565b9150509250929050565b610400810181835f5b602081101561459c57815160ff1683526020928301929091019060010161457a565b50505092915050565b5f5f604083850312156145b6575f5ffd5b8235915060208301356145c88161434b565b809150509250929050565b80151581146126e1575f5ffd5b5f5f5f5f608085870312156145f3575f5ffd5b6145fc856143e7565b9350602085013561460c8161434b565b925060408501356001600160401b03811115614626575f5ffd5b61463287828801614440565b9250506060850135614643816145d3565b939692955090935050565b5f5f6040838503121561465f575f5ffd5b614668836143e7565b9150614676602084016143e7565b90509250929050565b5f5f60408385031215614690575f5ffd5b82359150602083013564ffffffffff811681146145c8575f5ffd5b5f6001600160401b038211156146c3576146c36143fc565b5060051b60200190565b5f82601f8301126146dc575f5ffd5b81356146ef6146ea826146ab565b614410565b8082825260208201915060208360051b860101925085831115614710575f5ffd5b602085015b8381101561473457614726816143e7565b835260209283019201614715565b5095945050505050565b5f6020828403121561474e575f5ffd5b81356001600160401b03811115614763575f5ffd5b610dec848285016146cd565b5f5f60408385031215614780575f5ffd5b614789836143e7565b915060208301356145c8816145d3565b80356143f78161434b565b5f82601f8301126147b3575f5ffd5b81356147c16146ea826146ab565b8082825260208201915060208360051b8601019250858311156147e2575f5ffd5b602085015b838110156147345780356147fa8161434b565b8352602092830192016147e7565b5f82601f830112614817575f5ffd5b81356148256146ea826146ab565b8082825260208201915060208360051b860101925085831115614846575f5ffd5b602085015b838110156147345780356001600160401b03811115614868575f5ffd5b614877886020838a0101614440565b8452506020928301920161484b565b5f5f5f5f5f5f5f60e0888a03121561489c575f5ffd5b87356001600160401b038111156148b1575f5ffd5b6148bd8a828b01614440565b97505060208801356001600160401b038111156148d8575f5ffd5b6148e48a828b01614440565b9650506148f360408901614799565b945060608801356001600160401b0381111561490d575f5ffd5b6149198a828b016147a4565b94505060808801356001600160401b03811115614934575f5ffd5b6149408a828b01614808565b93505060a08801356001600160401b0381111561495b575f5ffd5b6149678a828b016146cd565b92505060c08801356001600160401b03811115614982575f5ffd5b61498e8a828b016146cd565b91505092959891949750929550565b5f5f5f606084860312156149af575f5ffd5b8335925060208401356149c18161434b565b915060408401356149d18161434b565b809150509250925092565b610400810181835f5b602081101561459c5781516001600160a01b03168352602092830192909101906001016149e5565b5f5f60408385031215614a1e575f5ffd5b8235614a298161434b565b915060208301356145c88161434b565b5f5f5f60608486031215614a4b575f5ffd5b614a54846143e7565b92506143d6602085016143e7565b600181811c90821680614a7657607f821691505b602082108103614a9457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561096e5761096e614a9a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614aeb575f5ffd5b5051919050565b5f60018201614b0357614b03614a9a565b5060010190565b8082018281125f831280158216821582161715614b2957614b29614a9a565b505092915050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561096e5761096e614a9a565b634e487b7160e01b5f52601260045260245ffd5b5f82614b8757614b87614b65565b500490565b602080825282518282018190525f918401906040840190835b81811015614bc657835160ff16835260209384019390920191600101614ba5565b509095945050505050565b8181038181111561096e5761096e614a9a565b60ff828116828216039081111561096e5761096e614a9a565b5f60ff821660ff8103614c1257614c12614a9a565b60010192915050565b6001815b6001841115614c5657808504811115614c3a57614c3a614a9a565b6001841615614c4857908102905b60019390931c928002614c1f565b935093915050565b5f82614c6c5750600161096e565b81614c7857505f61096e565b8160018114614c8e5760028114614c9857614cb4565b600191505061096e565b60ff841115614ca957614ca9614a9a565b50506001821b61096e565b5060208310610133831016604e8410600b8410161715614cd7575081810a61096e565b614ce35f198484614c1b565b805f1904821115614cf657614cf6614a9a565b029392505050565b5f610a5060ff841683614c5e565b5f60208284031215614d1c575f5ffd5b8151610a508161434b565b5f5f60408385031215614d38575f5ffd5b8251614d43816145d3565b602084015190925063ffffffff811681146145c8575f5ffd5b60ff83168152604060208201525f610dec60408301846142f4565b5f82518060208501845e5f920191825250919050565b5f600160ff1b8201614da157614da1614a9a565b505f0390565b8181035f831280158383131683831282161715614dc657614dc6614a9a565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680614df357614df3614b65565b8060ff84160691505092915050565b601f82111561230c57805f5260205f20601f840160051c81016020851015614e275750805b601f840160051c820191505b81811015612556575f8155600101614e33565b81516001600160401b03811115614e5f57614e5f6143fc565b614e7381614e6d8454614a62565b84614e02565b6020601f821160018114614ea5575f8315614e8e5750848201515b5f19600385901b1c1916600184901b178455612556565b5f84815260208120601f198516915b82811015614ed45787850151825560209485019460019092019101614eb4565b5084821015614ef157868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f01a2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220761bd0adfbc3d87113074f98c9621e1a113c12f2f43aaa6a07cfa8ed9c10a45564736f6c634300081c0033","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 0x4FD6 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x2646 ADD MSTORE DUP2 DUP2 PUSH2 0x266F ADD MSTORE PUSH2 0x27AB ADD MSTORE PUSH2 0x4FD6 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x28B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CDF48A8 GT PUSH2 0x155 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xBE JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x803 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x822 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x843 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x881 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x738 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x757 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x776 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xD89B074D EQ PUSH2 0x7D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x96DA35DA GT PUSH2 0x10F JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x6FA JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x719 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x8EEF8380 EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x92CE412E EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x659 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x508A0538 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x4C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x248 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x2E6863DA EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x439 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xA604584 EQ PUSH2 0x344 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x895 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 0x2C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x963 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x301 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x435F JUMP JUMPDEST PUSH2 0x974 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x33F CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x98B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x4389 JUMP JUMPDEST PUSH2 0x997 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x3B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A9 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3F4 PUSH2 0xA57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x444 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B1 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x463 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0xB14 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4525 JUMP JUMPDEST PUSH2 0xC94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4389 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4DC PUSH2 0xD24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x4571 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xD7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x508 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x517 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A5 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0xDF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3F4 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x569 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E0 JUMP JUMPDEST PUSH2 0xE1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x4525 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5AC PUSH2 0x5A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x467F JUMP JUMPDEST PUSH2 0x11B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x5FE CALLDATASIZE PUSH1 0x4 PUSH2 0x473E JUMP JUMPDEST PUSH2 0x11D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x61D CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A5 JUMP JUMPDEST PUSH2 0x1429 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x664 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x1475 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x678 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x476F JUMP JUMPDEST PUSH2 0x14B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x697 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x6A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4886 JUMP JUMPDEST PUSH2 0x1ACA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x6C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x435F JUMP JUMPDEST PUSH2 0x1BE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA 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 0x705 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x714 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x1BEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x724 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x733 CALLDATASIZE PUSH1 0x4 PUSH2 0x499D JUMP JUMPDEST PUSH2 0x1BFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x743 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x752 CALLDATASIZE PUSH1 0x4 PUSH2 0x499D JUMP JUMPDEST PUSH2 0x1C48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x762 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x771 CALLDATASIZE PUSH1 0x4 PUSH2 0x473E JUMP JUMPDEST PUSH2 0x1C95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x790 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1EE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x7AF CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x1F0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1F18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 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 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x81D CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1F2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x836 PUSH2 0x1F73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x49DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x85D CALLDATASIZE PUSH1 0x4 PUSH2 0x4A0D JUMP JUMPDEST PUSH2 0x1FB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x87C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A39 JUMP JUMPDEST PUSH2 0x2002 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4DC PUSH2 0x21F2 JUMP JUMPDEST PUSH0 PUSH2 0x89E PUSH2 0x222D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8E1 SWAP1 PUSH2 0x4A62 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 0x90D SWAP1 PUSH2 0x4A62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x958 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x92F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x958 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 0x93B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH0 PUSH2 0x22A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x981 DUP2 DUP6 DUP6 PUSH2 0x22FF JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH1 0x1 PUSH2 0x2311 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x9AE DUP3 PUSH2 0x235F 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 0x9CF DUP4 PUSH2 0x235F 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 0xA3F DUP6 DUP3 DUP6 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0xA4A DUP6 DUP6 DUP6 PUSH2 0x23E2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xA80 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4AAE JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA93 DUP5 DUP5 DUP5 PUSH2 0x243F JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xAAA JUMPI PUSH2 0xAAA PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xAD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB02 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xAF0 JUMPI PUSH2 0xAF0 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x255D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xB45 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xC7A JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xB5D JUMPI PUSH2 0xB5D PUSH2 0x4AC7 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 0xBAC 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 0xBD0 SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 SUB PUSH2 0xC6A JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xBE5 SWAP1 PUSH2 0x4A62 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 0xC11 SWAP1 PUSH2 0x4A62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC33 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C 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 0xC3F 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 0xC73 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xB18 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 0xC9C PUSH2 0x263B JUMP JUMPDEST PUSH2 0xCA6 DUP3 DUP3 PUSH2 0x26E4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 DUP4 PUSH2 0xCD3 DUP4 DUP6 PUSH2 0x4B0A 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 0xD2C PUSH2 0x42D5 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 0xD44 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xD85 PUSH2 0x27A0 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xDA2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xDD4 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xDDE DUP6 PUSH2 0x1F0D JUMP JUMPDEST SWAP1 POP PUSH2 0xDEC CALLER DUP6 DUP8 DUP5 PUSH2 0x27E9 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 0x4F41 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 0xE31 JUMPI PUSH2 0xE31 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xE5C 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 0xE8B JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE7D JUMPI PUSH2 0xE7D PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF01 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEAD JUMPI PUSH2 0xEAD PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xEC8 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xEF1 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 0xDCB JUMP JUMPDEST PUSH2 0xEFA DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xE5E JUMP JUMPDEST POP PUSH2 0xF16 DUP2 DUP6 DUP6 PUSH2 0xF10 PUSH2 0x2838 JUMP JUMPDEST DUP7 PUSH2 0x2857 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xF2D JUMPI PUSH2 0xF2D PUSH2 0x4AC7 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 0xF7A 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 0xFA9 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF9B JUMPI PUSH2 0xF9B PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x100F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xFCB JUMPI PUSH2 0xFCB PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xFFF 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 0xDCB JUMP JUMPDEST PUSH2 0x1008 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x1034 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 0x1048 JUMPI PUSH2 0x1048 PUSH2 0x4AC7 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 0x1072 DUP2 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1084 JUMPI PUSH2 0x1084 PUSH2 0x4AC7 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 0x10B1 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x10C4 JUMPI PUSH2 0x10C4 PUSH2 0x4AC7 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 0x10FF PUSH2 0x10EF PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x29A5 JUMP JUMPDEST PUSH2 0x1112 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2A37 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 0x1170 JUMPI PUSH2 0x1170 PUSH2 0x4AC7 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 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x11C9 DUP4 PUSH5 0xFFFFFFFFFF DUP5 AND PUSH2 0x4B79 JUMP JUMPDEST PUSH2 0xA50 SWAP1 PUSH1 0x80 DUP6 SWAP1 SHL PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x11DF PUSH2 0x42D5 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1204 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 0x13AF JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1224 JUMPI PUSH2 0x1224 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x127D JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1270 JUMPI PUSH2 0x1270 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x129B 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 0x12AE JUMPI PUSH2 0x12AE PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x12C9 JUMPI PUSH2 0x12C9 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1310 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI PUSH2 0x12E5 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x1325 JUMPI PUSH2 0x1325 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1340 JUMPI PUSH2 0x1340 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x135E JUMPI PUSH2 0x135E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1372 SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1384 JUMPI PUSH2 0x1384 PUSH2 0x4AC7 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 0x1204 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x13DC JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x13CE JUMPI PUSH2 0x13CE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x13FA 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 0xA25 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1434 DUP4 PUSH2 0x1EE1 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x145D JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1467 DUP6 PUSH2 0x1BEF JUMP JUMPDEST SWAP1 POP PUSH2 0xDEC CALLER DUP6 DUP4 DUP9 PUSH2 0x27E9 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8E1 SWAP1 PUSH2 0x4A62 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x14D7 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 0x14EE JUMPI PUSH2 0x14EE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1519 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 0x1537 JUMPI POP PUSH2 0x1534 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1555 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 0x156F JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1590 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 0x159C DUP5 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x15CF JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x15C1 JUMPI PUSH2 0x15C1 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x163E JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x15E7 JUMPI PUSH2 0x15E7 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x15FF PUSH1 0x1 DUP5 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x160F JUMPI PUSH2 0x160F PUSH2 0x4AC7 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 0x1637 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x15A2 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x164C PUSH1 0x1 DUP5 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x165C JUMPI PUSH2 0x165C PUSH2 0x4AC7 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 0x1693 JUMPI PUSH2 0x1693 PUSH2 0x4AC7 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 0x16B7 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x19E9 JUMPI DUP1 ISZERO PUSH2 0x177B JUMPI PUSH2 0x16CD DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16E3 JUMPI PUSH2 0x16E3 PUSH2 0x4AC7 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 0x1704 JUMPI PUSH0 PUSH2 0x1707 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x171A JUMPI PUSH2 0x171A PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x173A SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1746 DUP2 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1756 JUMPI PUSH2 0x1756 PUSH2 0x4AC7 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 0x184C JUMP JUMPDEST PUSH2 0x1786 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x179C JUMPI PUSH2 0x179C PUSH2 0x4AC7 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 0x17BF JUMPI POP PUSH1 0x1 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x17CA DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17E0 JUMPI PUSH2 0x17E0 PUSH2 0x4AC7 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 0x184C JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1810 JUMPI PUSH2 0x1810 PUSH2 0x4AC7 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 0x1833 SWAP2 SWAP1 PUSH2 0x4BE4 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 0x1909 JUMPI PUSH2 0x185D DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1872 JUMPI PUSH2 0x1872 PUSH2 0x4AC7 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 0x1893 JUMPI PUSH0 PUSH2 0x1896 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x18A8 JUMPI PUSH2 0x18A8 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18C8 SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH0 PUSH2 0x18D4 PUSH1 0x1 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x18E4 JUMPI PUSH2 0x18E4 PUSH2 0x4AC7 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 0x19D9 JUMP JUMPDEST PUSH2 0x1914 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1929 JUMPI PUSH2 0x1929 PUSH2 0x4AC7 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 0x194D JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x19D9 JUMP JUMPDEST PUSH2 0x1958 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x196D JUMPI PUSH2 0x196D PUSH2 0x4AC7 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 0x19D9 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x199D JUMPI PUSH2 0x199D PUSH2 0x4AC7 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 0x19C0 SWAP2 SWAP1 PUSH2 0x4BE4 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 0x19E2 DUP4 PUSH2 0x4AF2 JUMP JUMPDEST SWAP3 POP PUSH2 0x1680 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x19F6 PUSH1 0x1 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1A06 JUMPI PUSH2 0x1A06 PUSH2 0x4AC7 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 0x1A35 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1A45 JUMPI PUSH2 0x1A45 PUSH2 0x4AC7 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 0x1A81 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2AEE 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B0E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1B29 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B37 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1B55 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 0x1B7F JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1B8E DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2C13 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1BD4 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 0x981 DUP2 DUP6 DUP6 PUSH2 0x23E2 JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH1 0x1 PUSH2 0x22A8 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C06 DUP4 PUSH2 0x1F18 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1C2F JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1C39 DUP7 PUSH2 0x98B JUMP JUMPDEST SWAP1 POP PUSH2 0xB02 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2C4B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C53 DUP4 PUSH2 0x1F2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1C7C JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1C86 DUP7 PUSH2 0x963 JUMP JUMPDEST SWAP1 POP PUSH2 0xB02 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2C4B JUMP JUMPDEST PUSH2 0x1C9D PUSH2 0x42D5 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1CC2 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 0x1E61 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1CE8 JUMPI PUSH2 0x1CE8 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1D44 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1D1C JUMPI PUSH2 0x1D1C PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D37 JUMPI PUSH2 0x1D37 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1D62 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 0x1D78 JUMPI PUSH2 0x1D78 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D93 JUMPI PUSH2 0x1D93 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1DB2 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI PUSH2 0x12E5 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1DCA JUMPI PUSH2 0x1DCA PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1DE5 JUMPI PUSH2 0x1DE5 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1E06 JUMPI PUSH2 0x1E06 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1E1A SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E30 JUMPI PUSH2 0x1E30 PUSH2 0x4AC7 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 0x1E5A SWAP1 PUSH2 0x4BFD JUMP JUMPDEST SWAP1 POP PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1E94 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1E86 JUMPI PUSH2 0x1E86 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EB2 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 0xA25 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1EEB PUSH2 0x25AF JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1F04 JUMPI PUSH2 0x1EFF DUP2 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F23 DUP4 PUSH2 0x2D5B JUMP JUMPDEST SWAP1 POP PUSH2 0xA50 DUP2 PUSH2 0x2D6E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F39 DUP4 PUSH2 0x2E03 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F46 DUP3 PUSH0 PUSH2 0x22A8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F52 DUP3 PUSH2 0x2D6E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1F6A JUMPI PUSH2 0x1F65 DUP2 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1F7B PUSH2 0x42D5 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 0x1F92 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 0x201A JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x2038 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 0x204F JUMPI PUSH2 0x204F PUSH2 0x4AC7 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 0x2073 JUMPI PUSH2 0x2073 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2097 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x20B5 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 0x20D2 JUMPI PUSH2 0x20CF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x20E3 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x20F5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x212A JUMPI PUSH2 0x210E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x213C DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2171 JUMPI PUSH2 0x2155 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2185 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x219A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2FA5 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 0x21E0 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 0x21FA PUSH2 0x42D5 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 0xD44 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 0x2244 JUMPI PUSH2 0x2244 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x225D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x22A4 JUMPI PUSH2 0x2288 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2278 JUMPI PUSH2 0x2278 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST PUSH2 0x2292 SWAP1 DUP4 PUSH2 0x4B52 JUMP JUMPDEST SWAP2 POP PUSH2 0x229D DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2230 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH2 0x22B4 PUSH2 0x895 JUMP JUMPDEST PUSH2 0x22BF SWAP1 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x22CA PUSH0 PUSH1 0xA PUSH2 0x4CFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x22F6 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x30C6 JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3108 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH2 0x2320 DUP3 PUSH1 0xA PUSH2 0x4CFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x234C SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x2354 PUSH2 0x895 JUMP JUMPDEST PUSH2 0x22F6 SWAP1 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x22A4 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 0xDCB JUMP JUMPDEST PUSH0 PUSH2 0x239D DUP5 DUP5 PUSH2 0x1FB9 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x23DC JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x23CE JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH2 0x23DC DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x3108 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x240B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 DUP4 PUSH2 0x31EB 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 0x247C 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 0x24A0 SWAP2 SWAP1 PUSH2 0x4D0C JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x24BE DUP10 DUP10 PUSH2 0x1158 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 0x2510 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 0x2534 SWAP2 SWAP1 PUSH2 0x4D27 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2556 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDEC DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D5C 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 0x3311 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x25C7 JUMPI PUSH2 0x25C7 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x25E0 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2636 JUMPI PUSH2 0x2614 DUP4 PUSH2 0x260F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x25FF JUMPI PUSH2 0x25FF PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x337A JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x2626 JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x262F DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x25B3 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x26C1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26B5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 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 0x26DF 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 0x273E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x273B SWAP2 DUP2 ADD SWAP1 PUSH2 0x4ADB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2766 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 0xDCB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2796 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 PUSH2 0x33A1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x27F2 PUSH2 0x33F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x27FD DUP4 PUSH2 0x3428 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2826 SWAP1 DUP5 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2556 SWAP1 POP DUP6 DUP6 DUP6 DUP6 PUSH2 0x3454 JUMP JUMPDEST PUSH0 PUSH2 0x89E PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x2861 DUP5 DUP4 PUSH2 0x29A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x28D3 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 0x28A9 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 0x28CD SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x28DE DUP6 DUP3 PUSH2 0x2AEE JUMP JUMPDEST PUSH2 0x28E8 DUP5 DUP5 PUSH2 0x2A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x295A 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 0x2930 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 0x2954 SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 PUSH2 0x2FA5 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 0x29EC 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 0x2A10 SWAP2 SWAP1 PUSH2 0x4D0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x230C DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A4B SWAP2 SWAP1 PUSH2 0x4322 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 0x3311 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 0x2ACA 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 0x96E SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BC9 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 0x2B45 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2B7D 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 0x2B82 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x23DC JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2BBB SWAP2 SWAP1 PUSH2 0x4322 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 0x230C 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 0x3311 JUMP JUMPDEST PUSH2 0x2C1B PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x2C23 PUSH2 0x34B2 JUMP JUMPDEST PUSH2 0x2C2C DUP6 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x2C36 DUP8 DUP8 PUSH2 0x34CB JUMP JUMPDEST PUSH2 0x2C42 DUP5 DUP5 DUP5 DUP5 PUSH2 0x34DD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2C54 PUSH2 0x33F6 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2C62 PUSH1 0x1 DUP4 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP1 DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 PUSH2 0x2C9F DUP9 PUSH2 0x4D8D JUMP JUMPDEST PUSH2 0x2CA9 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH2 0x2CB3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SLT DUP1 ISZERO PUSH2 0x2CDC JUMPI POP DUP2 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2CDA DUP3 PUSH2 0x4D8D JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x2D15 JUMPI DUP2 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 0xDCB JUMP JUMPDEST PUSH2 0x2D1E DUP7 PUSH2 0x3428 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2D3D SWAP1 DUP5 SWAP1 PUSH2 0x4DA7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2D50 SWAP1 POP DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x3A5E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E PUSH2 0x2D68 DUP4 PUSH2 0xDF4 JUMP JUMPDEST PUSH0 PUSH2 0x22A8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2D86 JUMPI PUSH2 0x2D86 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2D9F JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2DFC JUMPI PUSH2 0x2DCE DUP4 PUSH2 0x260F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2DBE JUMPI PUSH2 0x2DBE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2DDF JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2DEC JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2DF5 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D72 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH2 0xDF4 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 0x2AAF 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 0x2AAF JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2F4B JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E8F 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 0x2EC4 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2EFC 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 0x2F01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2F43 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2F3A SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2F9B DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2F61 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 0x3311 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA50 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3076 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2FCB 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 0x3000 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3038 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 0x303D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2F43 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2F3A SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST PUSH2 0x2F9B DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x308C 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 0x3311 JUMP JUMPDEST PUSH0 PUSH2 0x30F3 PUSH2 0x30D3 DUP4 PUSH2 0x3A74 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x30EE JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x30E9 JUMPI PUSH2 0x30E9 PUSH2 0x4B65 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x30FE DUP7 DUP7 DUP7 PUSH2 0x3AA0 JUMP JUMPDEST PUSH2 0xB02 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x313F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3168 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB 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 0x2556 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 0x31DC 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 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3225 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x321A SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x3282 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 0x3264 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 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 0x32A0 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x32BE 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 0x3303 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x332D SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3365 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 0x336A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB02 DUP6 DUP4 DUP4 PUSH2 0x3B56 JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x3393 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x339A JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x33AA DUP3 PUSH2 0x3BAD 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 0x33EE JUMPI PUSH2 0x230C DUP3 DUP3 PUSH2 0x3311 JUMP JUMPDEST PUSH2 0xCA6 PUSH2 0x3C10 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x341A DUP2 TIMESTAMP PUSH2 0x4B79 JUMP JUMPDEST PUSH2 0xA80 SWAP1 PUSH1 0x80 DUP4 SWAP1 SHL PUSH2 0x4B52 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP3 GT ISZERO PUSH2 0x22A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x123BAF03 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x3460 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3C2F JUMP JUMPDEST PUSH2 0x23DC DUP3 PUSH2 0x3CAC JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26DF PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x34C2 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x26E1 DUP2 PUSH2 0x3DC3 JUMP JUMPDEST PUSH2 0x34D3 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0xCA6 DUP3 DUP3 PUSH2 0x3E33 JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x34EC JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x34F9 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3506 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3513 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x3534 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 0x353C PUSH2 0x42D5 JUMP JUMPDEST PUSH2 0x3544 PUSH2 0x42D5 JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x39E7 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x356B JUMPI PUSH2 0x356B PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x359A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35D6 PUSH2 0x35A5 PUSH2 0x2838 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35B7 JUMPI PUSH2 0x35B7 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3676 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x35F2 JUMPI PUSH2 0x35F2 PUSH2 0x4AC7 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 0x3615 JUMPI PUSH2 0x3615 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x366E JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x363D JUMPI PUSH2 0x363D PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x35D8 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x368B JUMPI PUSH2 0x368B PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x36D2 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36B1 JUMPI PUSH2 0x36B1 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x36CC JUMPI PUSH2 0x36CC PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3714 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36E9 JUMPI PUSH2 0x36E9 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x3728 JUMPI PUSH2 0x3728 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x376F JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x374E JUMPI PUSH2 0x374E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3769 JUMPI PUSH2 0x3769 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x37B1 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3786 JUMPI PUSH2 0x3786 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x37C6 JUMPI PUSH2 0x37C6 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x37E1 JUMPI PUSH2 0x37E1 PUSH2 0x4AC7 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 0x3805 JUMPI PUSH2 0x3805 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3820 JUMPI PUSH2 0x3820 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x383E JUMPI PUSH2 0x383E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3859 JUMPI PUSH2 0x3859 PUSH2 0x4AC7 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 0x388F JUMPI PUSH2 0x388F PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x38A3 SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x38B5 JUMPI PUSH2 0x38B5 PUSH2 0x4AC7 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 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x38FB SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x390E JUMPI PUSH2 0x390E PUSH2 0x4AC7 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 0x397C DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3943 JUMPI PUSH2 0x3943 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x395D JUMPI PUSH2 0x395D PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A37 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x398E JUMPI PUSH2 0x398E PUSH2 0x4AC7 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 0x39D7 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 0x3546 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x3A17 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x3A4E SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3A67 DUP3 PUSH2 0x3E83 JUMP JUMPDEST PUSH2 0x2556 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3F96 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A89 JUMPI PUSH2 0x3A89 PUSH2 0x4DCD JUMP JUMPDEST PUSH2 0x3A93 SWAP2 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x3AD4 JUMPI DUP4 DUP3 DUP2 PUSH2 0x3ACA JUMPI PUSH2 0x3ACA PUSH2 0x4B65 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA50 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3AEB JUMPI PUSH2 0x3AEB PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x404A 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3B66 JUMPI PUSH2 0x1EFF DUP3 PUSH2 0x405B JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3B7D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3BA6 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 0xDCB JUMP JUMPDEST POP DUP1 PUSH2 0xA50 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3BE2 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 0xDCB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 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 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x3C54 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x3C5E DUP5 DUP4 PUSH2 0x40EB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3CE4 JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3CCB JUMPI PUSH2 0x3CCB PUSH2 0x4AC7 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 0x3CF0 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3DA3 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3D0C JUMPI PUSH2 0x3D0C PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3D2C SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3D3F JUMPI PUSH2 0x3D3F PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3D5F DUP5 PUSH2 0x3D5A DUP5 PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x411F JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3D6F JUMPI POP POP PUSH2 0x3D93 JUMP JUMPDEST PUSH2 0x3D83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2FA5 JUMP JUMPDEST POP PUSH2 0x3D8E DUP2 DUP6 PUSH2 0x4BD1 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3D9C DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CAF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DCB PUSH2 0x3469 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x3DE4 DUP5 PUSH2 0x412E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3DF4 JUMPI PUSH1 0x12 PUSH2 0x3DF6 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 0x3E3B PUSH2 0x3469 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3E74 DUP5 DUP3 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x23DC DUP4 DUP3 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3EBC JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3EA3 JUMPI PUSH2 0x3EA3 PUSH2 0x4AC7 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 0x3EC8 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3F76 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3EE4 JUMPI PUSH2 0x3EE4 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3F04 SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3F17 JUMPI PUSH2 0x3F17 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3F32 DUP5 PUSH2 0x3D5A DUP5 PUSH2 0x2E0D JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3F42 JUMPI POP POP PUSH2 0x3F66 JUMP JUMPDEST PUSH2 0x3F56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x3F61 DUP2 DUP6 PUSH2 0x4BD1 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3F6F DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E86 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3FC2 JUMPI PUSH2 0x3FC2 DUP5 DUP8 DUP5 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0x3FCC DUP5 DUP4 PUSH2 0x4204 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3FE2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x4238 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x403A 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 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x406B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x23DC SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4114 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0xCA6 PUSH0 DUP4 DUP4 PUSH2 0x31EB JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x4174 SWAP2 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x41AC 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 0x41B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x41C5 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x41F8 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x41DF SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x41F6 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x422D JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0xCA6 DUP3 PUSH0 DUP4 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x230C SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x40B9 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x4288 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x429F JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x42AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x23DC 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 0xDCB 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 0xA50 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42F4 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4344 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 0x26E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4370 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x437B DUP2 PUSH2 0x434B 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 0x439A 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 0x43BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x43C6 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x43D6 DUP2 PUSH2 0x434B 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 0x43F7 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 0x4438 JUMPI PUSH2 0x4438 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x444F 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 0x446E JUMPI PUSH2 0x446E PUSH2 0x43FC JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x4483 DUP2 PUSH2 0x4410 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4497 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 0x44C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44CC DUP5 PUSH2 0x43E7 JUMP JUMPDEST SWAP3 POP PUSH2 0x44DA PUSH1 0x20 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4500 DUP7 DUP3 DUP8 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x451A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA50 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4536 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4541 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x455B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4567 DUP6 DUP3 DUP7 ADD PUSH2 0x4440 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 0x459C JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x457A JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x434B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x45F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45FC DUP6 PUSH2 0x43E7 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x460C DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4626 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4632 DUP8 DUP3 DUP9 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4643 DUP2 PUSH2 0x45D3 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x465F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4668 DUP4 PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH2 0x4676 PUSH1 0x20 DUP5 ADD PUSH2 0x43E7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x46C3 JUMPI PUSH2 0x46C3 PUSH2 0x43FC JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x46DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x46EF PUSH2 0x46EA DUP3 PUSH2 0x46AB JUMP JUMPDEST PUSH2 0x4410 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 0x4710 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH2 0x4726 DUP2 PUSH2 0x43E7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4715 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x474E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4763 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xDEC DUP5 DUP3 DUP6 ADD PUSH2 0x46CD JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4789 DUP4 PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x45D3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x43F7 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x47C1 PUSH2 0x46EA DUP3 PUSH2 0x46AB 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 0x47E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP1 CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x434B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x47E7 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4817 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4825 PUSH2 0x46EA DUP3 PUSH2 0x46AB 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 0x4846 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4868 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4877 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4440 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x484B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x489C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48BD DUP11 DUP3 DUP12 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48E4 DUP11 DUP3 DUP12 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x48F3 PUSH1 0x40 DUP10 ADD PUSH2 0x4799 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x490D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4919 DUP11 DUP3 DUP12 ADD PUSH2 0x47A4 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4934 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4940 DUP11 DUP3 DUP12 ADD PUSH2 0x4808 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x495B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4967 DUP11 DUP3 DUP12 ADD PUSH2 0x46CD JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4982 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x498E DUP11 DUP3 DUP12 ADD PUSH2 0x46CD 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 0x49AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x49C1 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x49D1 DUP2 PUSH2 0x434B 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 0x459C 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 0x49E5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A1E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A29 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A54 DUP5 PUSH2 0x43E7 JUMP JUMPDEST SWAP3 POP PUSH2 0x43D6 PUSH1 0x20 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A76 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A94 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 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A 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 0x4AEB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4B03 JUMPI PUSH2 0x4B03 PUSH2 0x4A9A 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 0x4B29 JUMPI PUSH2 0x4B29 PUSH2 0x4A9A 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 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x4B87 JUMPI PUSH2 0x4B87 PUSH2 0x4B65 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 0x4BC6 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BA5 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4C12 JUMPI PUSH2 0x4C12 PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4C56 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4C3A JUMPI PUSH2 0x4C3A PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4C48 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4C1F JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4C6C JUMPI POP PUSH1 0x1 PUSH2 0x96E JUMP JUMPDEST DUP2 PUSH2 0x4C78 JUMPI POP PUSH0 PUSH2 0x96E JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4C8E JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4C98 JUMPI PUSH2 0x4CB4 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x96E JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4CA9 JUMPI PUSH2 0x4CA9 PUSH2 0x4A9A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x96E JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4CD7 JUMPI POP DUP2 DUP2 EXP PUSH2 0x96E JUMP JUMPDEST PUSH2 0x4CE3 PUSH0 NOT DUP5 DUP5 PUSH2 0x4C1B JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4CF6 JUMPI PUSH2 0x4CF6 PUSH2 0x4A9A JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4C5E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA50 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D38 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4D43 DUP2 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xDEC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x42F4 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 0x4DA1 JUMPI PUSH2 0x4DA1 PUSH2 0x4A9A 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 0x4DC6 JUMPI PUSH2 0x4DC6 PUSH2 0x4A9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP 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 0x4DF3 JUMPI PUSH2 0x4DF3 PUSH2 0x4B65 JUMP JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x230C JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4E27 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2556 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4E33 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E5F JUMPI PUSH2 0x4E5F PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x4E73 DUP2 PUSH2 0x4E6D DUP5 SLOAD PUSH2 0x4A62 JUMP JUMPDEST DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4EA5 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x4E8E 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 0x2556 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4ED4 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x4EB4 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4EF1 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 ADD LOG2 0xAD 0xA5 0xD6 PUSH20 0xDBA5EECEA7C7503EE87E29913D0D36AE093E950D PUSH4 0x2F7B8689 0x1F STOP MSTORE 0xC6 ORIGIN SELFBALANCE 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0773E532DFEDE91F04B12A PUSH20 0xD3D2ACD361424F41F76B4FB79F090161E36B4E00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x1BD0ADFBC3D87113074F98C9621E1A113C12F2F43AAA6A SMOD 0xCF 0xA8 0xED SWAP13 LT LOG4 SSTORE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1154:5796:55:-:0;;;1171:4:8;1128:48;;1154:5796:55;;;;;;;;;-1:-1:-1;1504:22:48;:20;:22::i;:::-;1154:5796:55;;7711:422:7;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:7;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:7;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:7;-1:-1:-1;;;;;8035:33:7;;;;;8087:29;;158:50:75;;;8087:29:7;;146:2:75;131:18;8087:29:7;;;;;;;7981:146;7760:373;7711:422::o;14:200:75:-;1154:5796:55;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_STRATEGIES_15799":{"entryPoint":null,"id":15799,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@__AccessManagedMSV_init_13953":{"entryPoint":11283,"id":13953,"parameterSlots":7,"returnSlots":0},"@__ERC20_init_3114":{"entryPoint":13515,"id":3114,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3142":{"entryPoint":15923,"id":3142,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3757":{"entryPoint":13498,"id":3757,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3795":{"entryPoint":15811,"id":3795,"parameterSlots":1,"returnSlots":0},"@__MSVBase_init_unchained_16143":{"entryPoint":13533,"id":16143,"parameterSlots":4,"returnSlots":0},"@__UUPSUpgradeable_init_2918":{"entryPoint":13490,"id":2918,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":8959,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":12552,"id":3614,"parameterSlots":4,"returnSlots":0},"@_asset_13970":{"entryPoint":10296,"id":13970,"parameterSlots":0,"returnSlots":1},"@_authorizeUpgrade_13960":{"entryPoint":9953,"id":13960,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":16900,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":17001,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkForwardToStrategy_14236":{"entryPoint":9279,"id":14236,"parameterSlots":3,"returnSlots":0},"@_checkInitializing_2786":{"entryPoint":13417,"id":2786,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":15376,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":10144,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":9787,"id":2978,"parameterSlots":0,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":8872,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":8977,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_depositToStrategies_16450":{"entryPoint":15532,"id":16450,"parameterSlots":1,"returnSlots":0},"@_deposit_14152":{"entryPoint":13396,"id":14152,"parameterSlots":4,"returnSlots":0},"@_deposit_18335":{"entryPoint":10217,"id":18335,"parameterSlots":4,"returnSlots":0},"@_deposit_4364":{"entryPoint":15407,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"@_getLOMStorage_18038":{"entryPoint":null,"id":18038,"parameterSlots":0,"returnSlots":1},"@_isInitializing_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":1},"@_maxDepositable_16260":{"entryPoint":9647,"id":16260,"parameterSlots":0,"returnSlots":1},"@_maxWithdrawable_16202":{"entryPoint":11630,"id":16202,"parameterSlots":1,"returnSlots":1},"@_mint_3495":{"entryPoint":16619,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":16475,"id":9351,"parameterSlots":1,"returnSlots":0},"@_setImplementation_7796":{"entryPoint":15277,"id":7796,"parameterSlots":1,"returnSlots":0},"@_slotIndex_18198":{"entryPoint":13302,"id":18198,"parameterSlots":0,"returnSlots":1},"@_spendAllowance_3662":{"entryPoint":9106,"id":3662,"parameterSlots":3,"returnSlots":0},"@_totalAssets_16298":{"entryPoint":8749,"id":16298,"parameterSlots":0,"returnSlots":1},"@_transfer_3370":{"entryPoint":9186,"id":3370,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3862":{"entryPoint":16686,"id":3862,"parameterSlots":1,"returnSlots":2},"@_update_3462":{"entryPoint":12779,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":9956,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdrawFromStrategies_16374":{"entryPoint":16003,"id":16374,"parameterSlots":1,"returnSlots":0},"@_withdraw_14125":{"entryPoint":14942,"id":14125,"parameterSlots":5,"returnSlots":0},"@_withdraw_18296":{"entryPoint":11339,"id":18296,"parameterSlots":5,"returnSlots":0},"@_withdraw_4418":{"entryPoint":16278,"id":4418,"parameterSlots":5,"returnSlots":0},"@addStrategy_16764":{"entryPoint":3923,"id":16764,"parameterSlots":2,"returnSlots":0},"@allowance_3267":{"entryPoint":8121,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2420,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":null,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":3572,"id":3219,"parameterSlots":1,"returnSlots":1},"@changeDelta_18172":{"entryPoint":3242,"id":18172,"parameterSlots":2,"returnSlots":1},"@changeDepositQueue_17158":{"entryPoint":4567,"id":17158,"parameterSlots":1,"returnSlots":0},"@changeWithdrawQueue_17270":{"entryPoint":7317,"id":17270,"parameterSlots":1,"returnSlots":0},"@checkAsset_15637":{"entryPoint":10661,"id":15637,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3957":{"entryPoint":2403,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":7949,"id":3941,"parameterSlots":1,"returnSlots":1},"@dcConnect_15416":{"entryPoint":10807,"id":15416,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15585":{"entryPoint":12197,"id":15585,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15467":{"entryPoint":10990,"id":15467,"parameterSlots":2,"returnSlots":0},"@dcForward_15614":{"entryPoint":9565,"id":15614,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15526":{"entryPoint":11881,"id":15526,"parameterSlots":3,"returnSlots":1},"@decimals_3884":{"entryPoint":2647,"id":3884,"parameterSlots":0,"returnSlots":1},"@depositQueue_17420":{"entryPoint":8690,"id":17420,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":3479,"id":4126,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_16564":{"entryPoint":2694,"id":16564,"parameterSlots":3,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":13073,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getAssetsDelta_18112":{"entryPoint":null,"id":18112,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_16507":{"entryPoint":2836,"id":16507,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getForwardToStrategySelector_14183":{"entryPoint":4440,"id":14183,"parameterSlots":2,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@getOutflowLimitSlotSize_18085":{"entryPoint":null,"id":18085,"parameterSlots":0,"returnSlots":1},"@getOutflowLimit_18096":{"entryPoint":null,"id":18096,"parameterSlots":0,"returnSlots":1},"@initialize_13908":{"entryPoint":6858,"id":13908,"parameterSlots":7,"returnSlots":0},"@makeOutflowSlot_18136":{"entryPoint":4535,"id":18136,"parameterSlots":2,"returnSlots":1},"@maxDeposit_14049":{"entryPoint":2827,"id":14049,"parameterSlots":1,"returnSlots":1},"@maxDeposit_15756":{"entryPoint":11835,"id":15756,"parameterSlots":1,"returnSlots":1},"@maxMint_14084":{"entryPoint":7905,"id":14084,"parameterSlots":1,"returnSlots":1},"@maxRedeem_14036":{"entryPoint":7982,"id":14036,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":11779,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_13991":{"entryPoint":7960,"id":13991,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15774":{"entryPoint":11789,"id":15774,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":11611,"id":4005,"parameterSlots":1,"returnSlots":1},"@min_9938":{"entryPoint":16671,"id":9938,"parameterSlots":2,"returnSlots":1},"@mint_4170":{"entryPoint":5161,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":15008,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":12486,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":2211,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":16458,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":7151,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2443,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":3452,"id":2936,"parameterSlots":0,"returnSlots":1},"@rebalance_17397":{"entryPoint":8194,"id":17397,"parameterSlots":3,"returnSlots":1},"@redeem_4264":{"entryPoint":7240,"id":4264,"parameterSlots":3,"returnSlots":1},"@removeStrategy_17046":{"entryPoint":5299,"id":17046,"parameterSlots":2,"returnSlots":0},"@replaceStrategy_16653":{"entryPoint":3610,"id":16653,"parameterSlots":4,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":16516,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":16952,"id":8729,"parameterSlots":3,"returnSlots":0},"@setupOutflowLimit_18074":{"entryPoint":2455,"id":18074,"parameterSlots":2,"returnSlots":0},"@strategies_17409":{"entryPoint":8051,"id":17409,"parameterSlots":0,"returnSlots":1},"@strategyChange_15702":{"entryPoint":10327,"id":15702,"parameterSlots":5,"returnSlots":0},"@symbol_3174":{"entryPoint":5237,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toInt256_13063":{"entryPoint":13352,"id":13063,"parameterSlots":1,"returnSlots":1},"@toUint128_11784":{"entryPoint":9055,"id":11784,"parameterSlots":1,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_14095":{"entryPoint":2197,"id":14095,"parameterSlots":0,"returnSlots":1},"@totalAssets_15738":{"entryPoint":10885,"id":15738,"parameterSlots":1,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":2610,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":7138,"id":3243,"parameterSlots":2,"returnSlots":1},"@tryAdd_9747":{"entryPoint":13178,"id":9747,"parameterSlots":2,"returnSlots":2},"@unsignedRoundsUp_11308":{"entryPoint":14964,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":3220,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":13217,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":15190,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdrawQueue_17431":{"entryPoint":3364,"id":17431,"parameterSlots":0,"returnSlots":1},"@withdraw_4217":{"entryPoint":7163,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_array_bytes_dyn":{"entryPoint":18440,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_contract_IInvestStrategy_dyn":{"entryPoint":18340,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint8_dyn":{"entryPoint":18125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes":{"entryPoint":17472,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_contract_IERC20":{"entryPoint":18329,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":17674,"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":18957,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":17321,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":17701,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":17247,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":18238,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_boolt_uint32_fromMemory":{"entryPoint":19751,"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":19163,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IAccessManager_$7253_fromMemory":{"entryPoint":19724,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$dyn_memory_ptrt_array$_t_bytes_memory_ptr_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptrt_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":18566,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_uint256":{"entryPoint":17204,"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":17829,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":18845,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":17289,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_uint40":{"entryPoint":18047,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_bool":{"entryPoint":18287,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool":{"entryPoint":17888,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8t_uint8":{"entryPoint":17998,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr":{"entryPoint":17585,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_uint8t_uint256":{"entryPoint":19001,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17996":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17996t_int256":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint8":{"entryPoint":17383,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":17140,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":19831,"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_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":19249,"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_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed":{"entryPoint":18908,"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":17777,"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":19340,"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_$22374__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__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":17186,"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":19804,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17996__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17996_t_int256_t_int256__to_t_uint256_t_int256_t_int256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_memory":{"entryPoint":17424,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint8_dyn":{"entryPoint":18091,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_int256":{"entryPoint":19210,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":19282,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":19118,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":19321,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":19483,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":19710,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":19550,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_int256":{"entryPoint":19879,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":19409,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":19428,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":19970,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":20038,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":19042,"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":19186,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint8":{"entryPoint":19453,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":19937,"id":null,"parameterSlots":2,"returnSlots":1},"negate_t_int256":{"entryPoint":19853,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":19098,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":19301,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":19917,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":19143,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":17404,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":17227,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":17875,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:29047:75","nodeType":"YulBlock","src":"0:29047:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"246:239:75","nodeType":"YulBlock","src":"246:239:75","statements":[{"nativeSrc":"256:26:75","nodeType":"YulVariableDeclaration","src":"256:26:75","value":{"arguments":[{"name":"value","nativeSrc":"276:5:75","nodeType":"YulIdentifier","src":"276:5:75"}],"functionName":{"name":"mload","nativeSrc":"270:5:75","nodeType":"YulIdentifier","src":"270:5:75"},"nativeSrc":"270:12:75","nodeType":"YulFunctionCall","src":"270:12:75"},"variables":[{"name":"length","nativeSrc":"260:6:75","nodeType":"YulTypedName","src":"260:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"298:3:75","nodeType":"YulIdentifier","src":"298:3:75"},{"name":"length","nativeSrc":"303:6:75","nodeType":"YulIdentifier","src":"303:6:75"}],"functionName":{"name":"mstore","nativeSrc":"291:6:75","nodeType":"YulIdentifier","src":"291:6:75"},"nativeSrc":"291:19:75","nodeType":"YulFunctionCall","src":"291:19:75"},"nativeSrc":"291:19:75","nodeType":"YulExpressionStatement","src":"291:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"329:3:75","nodeType":"YulIdentifier","src":"329:3:75"},{"kind":"number","nativeSrc":"334:4:75","nodeType":"YulLiteral","src":"334:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"325:3:75","nodeType":"YulIdentifier","src":"325:3:75"},"nativeSrc":"325:14:75","nodeType":"YulFunctionCall","src":"325:14:75"},{"arguments":[{"name":"value","nativeSrc":"345:5:75","nodeType":"YulIdentifier","src":"345:5:75"},{"kind":"number","nativeSrc":"352:4:75","nodeType":"YulLiteral","src":"352:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"341:3:75","nodeType":"YulIdentifier","src":"341:3:75"},"nativeSrc":"341:16:75","nodeType":"YulFunctionCall","src":"341:16:75"},{"name":"length","nativeSrc":"359:6:75","nodeType":"YulIdentifier","src":"359:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"319:5:75","nodeType":"YulIdentifier","src":"319:5:75"},"nativeSrc":"319:47:75","nodeType":"YulFunctionCall","src":"319:47:75"},"nativeSrc":"319:47:75","nodeType":"YulExpressionStatement","src":"319:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"390:3:75","nodeType":"YulIdentifier","src":"390:3:75"},{"name":"length","nativeSrc":"395:6:75","nodeType":"YulIdentifier","src":"395:6:75"}],"functionName":{"name":"add","nativeSrc":"386:3:75","nodeType":"YulIdentifier","src":"386:3:75"},"nativeSrc":"386:16:75","nodeType":"YulFunctionCall","src":"386:16:75"},{"kind":"number","nativeSrc":"404:4:75","nodeType":"YulLiteral","src":"404:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"382:3:75","nodeType":"YulIdentifier","src":"382:3:75"},"nativeSrc":"382:27:75","nodeType":"YulFunctionCall","src":"382:27:75"},{"kind":"number","nativeSrc":"411:1:75","nodeType":"YulLiteral","src":"411:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"375:6:75","nodeType":"YulIdentifier","src":"375:6:75"},"nativeSrc":"375:38:75","nodeType":"YulFunctionCall","src":"375:38:75"},"nativeSrc":"375:38:75","nodeType":"YulExpressionStatement","src":"375:38:75"},{"nativeSrc":"422:57:75","nodeType":"YulAssignment","src":"422:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"437:3:75","nodeType":"YulIdentifier","src":"437:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"450:6:75","nodeType":"YulIdentifier","src":"450:6:75"},{"kind":"number","nativeSrc":"458:2:75","nodeType":"YulLiteral","src":"458:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"446:3:75","nodeType":"YulIdentifier","src":"446:3:75"},"nativeSrc":"446:15:75","nodeType":"YulFunctionCall","src":"446:15:75"},{"arguments":[{"kind":"number","nativeSrc":"467:2:75","nodeType":"YulLiteral","src":"467:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"463:3:75","nodeType":"YulIdentifier","src":"463:3:75"},"nativeSrc":"463:7:75","nodeType":"YulFunctionCall","src":"463:7:75"}],"functionName":{"name":"and","nativeSrc":"442:3:75","nodeType":"YulIdentifier","src":"442:3:75"},"nativeSrc":"442:29:75","nodeType":"YulFunctionCall","src":"442:29:75"}],"functionName":{"name":"add","nativeSrc":"433:3:75","nodeType":"YulIdentifier","src":"433:3:75"},"nativeSrc":"433:39:75","nodeType":"YulFunctionCall","src":"433:39:75"},{"kind":"number","nativeSrc":"474:4:75","nodeType":"YulLiteral","src":"474:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"429:3:75","nodeType":"YulIdentifier","src":"429:3:75"},"nativeSrc":"429:50:75","nodeType":"YulFunctionCall","src":"429:50:75"},"variableNames":[{"name":"end","nativeSrc":"422:3:75","nodeType":"YulIdentifier","src":"422:3:75"}]}]},"name":"abi_encode_string","nativeSrc":"196:289:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"223:5:75","nodeType":"YulTypedName","src":"223:5:75","type":""},{"name":"pos","nativeSrc":"230:3:75","nodeType":"YulTypedName","src":"230:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"238:3:75","nodeType":"YulTypedName","src":"238:3:75","type":""}],"src":"196:289:75"},{"body":{"nativeSrc":"611:99:75","nodeType":"YulBlock","src":"611:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"628:9:75","nodeType":"YulIdentifier","src":"628:9:75"},{"kind":"number","nativeSrc":"639:2:75","nodeType":"YulLiteral","src":"639:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"621:6:75","nodeType":"YulIdentifier","src":"621:6:75"},"nativeSrc":"621:21:75","nodeType":"YulFunctionCall","src":"621:21:75"},"nativeSrc":"621:21:75","nodeType":"YulExpressionStatement","src":"621:21:75"},{"nativeSrc":"651:53:75","nodeType":"YulAssignment","src":"651:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"677:6:75","nodeType":"YulIdentifier","src":"677:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"689:9:75","nodeType":"YulIdentifier","src":"689:9:75"},{"kind":"number","nativeSrc":"700:2:75","nodeType":"YulLiteral","src":"700:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"685:3:75","nodeType":"YulIdentifier","src":"685:3:75"},"nativeSrc":"685:18:75","nodeType":"YulFunctionCall","src":"685:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"659:17:75","nodeType":"YulIdentifier","src":"659:17:75"},"nativeSrc":"659:45:75","nodeType":"YulFunctionCall","src":"659:45:75"},"variableNames":[{"name":"tail","nativeSrc":"651:4:75","nodeType":"YulIdentifier","src":"651:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"490:220:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"580:9:75","nodeType":"YulTypedName","src":"580:9:75","type":""},{"name":"value0","nativeSrc":"591:6:75","nodeType":"YulTypedName","src":"591:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"602:4:75","nodeType":"YulTypedName","src":"602:4:75","type":""}],"src":"490:220:75"},{"body":{"nativeSrc":"785:156:75","nodeType":"YulBlock","src":"785:156:75","statements":[{"body":{"nativeSrc":"831:16:75","nodeType":"YulBlock","src":"831:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"840:1:75","nodeType":"YulLiteral","src":"840:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"843:1:75","nodeType":"YulLiteral","src":"843:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"833:6:75","nodeType":"YulIdentifier","src":"833:6:75"},"nativeSrc":"833:12:75","nodeType":"YulFunctionCall","src":"833:12:75"},"nativeSrc":"833:12:75","nodeType":"YulExpressionStatement","src":"833:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"806:7:75","nodeType":"YulIdentifier","src":"806:7:75"},{"name":"headStart","nativeSrc":"815:9:75","nodeType":"YulIdentifier","src":"815:9:75"}],"functionName":{"name":"sub","nativeSrc":"802:3:75","nodeType":"YulIdentifier","src":"802:3:75"},"nativeSrc":"802:23:75","nodeType":"YulFunctionCall","src":"802:23:75"},{"kind":"number","nativeSrc":"827:2:75","nodeType":"YulLiteral","src":"827:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"798:3:75","nodeType":"YulIdentifier","src":"798:3:75"},"nativeSrc":"798:32:75","nodeType":"YulFunctionCall","src":"798:32:75"},"nativeSrc":"795:52:75","nodeType":"YulIf","src":"795:52:75"},{"nativeSrc":"856:14:75","nodeType":"YulVariableDeclaration","src":"856:14:75","value":{"kind":"number","nativeSrc":"869:1:75","nodeType":"YulLiteral","src":"869:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"860:5:75","nodeType":"YulTypedName","src":"860:5:75","type":""}]},{"nativeSrc":"879:32:75","nodeType":"YulAssignment","src":"879:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"901:9:75","nodeType":"YulIdentifier","src":"901:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"888:12:75","nodeType":"YulIdentifier","src":"888:12:75"},"nativeSrc":"888:23:75","nodeType":"YulFunctionCall","src":"888:23:75"},"variableNames":[{"name":"value","nativeSrc":"879:5:75","nodeType":"YulIdentifier","src":"879:5:75"}]},{"nativeSrc":"920:15:75","nodeType":"YulAssignment","src":"920:15:75","value":{"name":"value","nativeSrc":"930:5:75","nodeType":"YulIdentifier","src":"930:5:75"},"variableNames":[{"name":"value0","nativeSrc":"920:6:75","nodeType":"YulIdentifier","src":"920:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"715:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"751:9:75","nodeType":"YulTypedName","src":"751:9:75","type":""},{"name":"dataEnd","nativeSrc":"762:7:75","nodeType":"YulTypedName","src":"762:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"774:6:75","nodeType":"YulTypedName","src":"774:6:75","type":""}],"src":"715:226:75"},{"body":{"nativeSrc":"991:86:75","nodeType":"YulBlock","src":"991:86:75","statements":[{"body":{"nativeSrc":"1055:16:75","nodeType":"YulBlock","src":"1055:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1064:1:75","nodeType":"YulLiteral","src":"1064:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1067:1:75","nodeType":"YulLiteral","src":"1067:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1057:6:75","nodeType":"YulIdentifier","src":"1057:6:75"},"nativeSrc":"1057:12:75","nodeType":"YulFunctionCall","src":"1057:12:75"},"nativeSrc":"1057:12:75","nodeType":"YulExpressionStatement","src":"1057:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1014:5:75","nodeType":"YulIdentifier","src":"1014:5:75"},{"arguments":[{"name":"value","nativeSrc":"1025:5:75","nodeType":"YulIdentifier","src":"1025:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1040:3:75","nodeType":"YulLiteral","src":"1040:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1045:1:75","nodeType":"YulLiteral","src":"1045:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1036:3:75","nodeType":"YulIdentifier","src":"1036:3:75"},"nativeSrc":"1036:11:75","nodeType":"YulFunctionCall","src":"1036:11:75"},{"kind":"number","nativeSrc":"1049:1:75","nodeType":"YulLiteral","src":"1049:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1032:3:75","nodeType":"YulIdentifier","src":"1032:3:75"},"nativeSrc":"1032:19:75","nodeType":"YulFunctionCall","src":"1032:19:75"}],"functionName":{"name":"and","nativeSrc":"1021:3:75","nodeType":"YulIdentifier","src":"1021:3:75"},"nativeSrc":"1021:31:75","nodeType":"YulFunctionCall","src":"1021:31:75"}],"functionName":{"name":"eq","nativeSrc":"1011:2:75","nodeType":"YulIdentifier","src":"1011:2:75"},"nativeSrc":"1011:42:75","nodeType":"YulFunctionCall","src":"1011:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1004:6:75","nodeType":"YulIdentifier","src":"1004:6:75"},"nativeSrc":"1004:50:75","nodeType":"YulFunctionCall","src":"1004:50:75"},"nativeSrc":"1001:70:75","nodeType":"YulIf","src":"1001:70:75"}]},"name":"validator_revert_address","nativeSrc":"946:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"980:5:75","nodeType":"YulTypedName","src":"980:5:75","type":""}],"src":"946:131:75"},{"body":{"nativeSrc":"1169:280:75","nodeType":"YulBlock","src":"1169:280:75","statements":[{"body":{"nativeSrc":"1215:16:75","nodeType":"YulBlock","src":"1215:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1224:1:75","nodeType":"YulLiteral","src":"1224:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1227:1:75","nodeType":"YulLiteral","src":"1227:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1217:6:75","nodeType":"YulIdentifier","src":"1217:6:75"},"nativeSrc":"1217:12:75","nodeType":"YulFunctionCall","src":"1217:12:75"},"nativeSrc":"1217:12:75","nodeType":"YulExpressionStatement","src":"1217:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1190:7:75","nodeType":"YulIdentifier","src":"1190:7:75"},{"name":"headStart","nativeSrc":"1199:9:75","nodeType":"YulIdentifier","src":"1199:9:75"}],"functionName":{"name":"sub","nativeSrc":"1186:3:75","nodeType":"YulIdentifier","src":"1186:3:75"},"nativeSrc":"1186:23:75","nodeType":"YulFunctionCall","src":"1186:23:75"},{"kind":"number","nativeSrc":"1211:2:75","nodeType":"YulLiteral","src":"1211:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1182:3:75","nodeType":"YulIdentifier","src":"1182:3:75"},"nativeSrc":"1182:32:75","nodeType":"YulFunctionCall","src":"1182:32:75"},"nativeSrc":"1179:52:75","nodeType":"YulIf","src":"1179:52:75"},{"nativeSrc":"1240:36:75","nodeType":"YulVariableDeclaration","src":"1240:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1266:9:75","nodeType":"YulIdentifier","src":"1266:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1253:12:75","nodeType":"YulIdentifier","src":"1253:12:75"},"nativeSrc":"1253:23:75","nodeType":"YulFunctionCall","src":"1253:23:75"},"variables":[{"name":"value","nativeSrc":"1244:5:75","nodeType":"YulTypedName","src":"1244:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1310:5:75","nodeType":"YulIdentifier","src":"1310:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1285:24:75","nodeType":"YulIdentifier","src":"1285:24:75"},"nativeSrc":"1285:31:75","nodeType":"YulFunctionCall","src":"1285:31:75"},"nativeSrc":"1285:31:75","nodeType":"YulExpressionStatement","src":"1285:31:75"},{"nativeSrc":"1325:15:75","nodeType":"YulAssignment","src":"1325:15:75","value":{"name":"value","nativeSrc":"1335:5:75","nodeType":"YulIdentifier","src":"1335:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1325:6:75","nodeType":"YulIdentifier","src":"1325:6:75"}]},{"nativeSrc":"1349:16:75","nodeType":"YulVariableDeclaration","src":"1349:16:75","value":{"kind":"number","nativeSrc":"1364:1:75","nodeType":"YulLiteral","src":"1364:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1353:7:75","nodeType":"YulTypedName","src":"1353:7:75","type":""}]},{"nativeSrc":"1374:43:75","nodeType":"YulAssignment","src":"1374:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1402:9:75","nodeType":"YulIdentifier","src":"1402:9:75"},{"kind":"number","nativeSrc":"1413:2:75","nodeType":"YulLiteral","src":"1413:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1398:3:75","nodeType":"YulIdentifier","src":"1398:3:75"},"nativeSrc":"1398:18:75","nodeType":"YulFunctionCall","src":"1398:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1385:12:75","nodeType":"YulIdentifier","src":"1385:12:75"},"nativeSrc":"1385:32:75","nodeType":"YulFunctionCall","src":"1385:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"1374:7:75","nodeType":"YulIdentifier","src":"1374:7:75"}]},{"nativeSrc":"1426:17:75","nodeType":"YulAssignment","src":"1426:17:75","value":{"name":"value_1","nativeSrc":"1436:7:75","nodeType":"YulIdentifier","src":"1436:7:75"},"variableNames":[{"name":"value1","nativeSrc":"1426:6:75","nodeType":"YulIdentifier","src":"1426:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1082:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1127:9:75","nodeType":"YulTypedName","src":"1127:9:75","type":""},{"name":"dataEnd","nativeSrc":"1138:7:75","nodeType":"YulTypedName","src":"1138:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1150:6:75","nodeType":"YulTypedName","src":"1150:6:75","type":""},{"name":"value1","nativeSrc":"1158:6:75","nodeType":"YulTypedName","src":"1158:6:75","type":""}],"src":"1082:367:75"},{"body":{"nativeSrc":"1549:92:75","nodeType":"YulBlock","src":"1549:92:75","statements":[{"nativeSrc":"1559:26:75","nodeType":"YulAssignment","src":"1559:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1571:9:75","nodeType":"YulIdentifier","src":"1571:9:75"},{"kind":"number","nativeSrc":"1582:2:75","nodeType":"YulLiteral","src":"1582:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1567:3:75","nodeType":"YulIdentifier","src":"1567:3:75"},"nativeSrc":"1567:18:75","nodeType":"YulFunctionCall","src":"1567:18:75"},"variableNames":[{"name":"tail","nativeSrc":"1559:4:75","nodeType":"YulIdentifier","src":"1559:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1601:9:75","nodeType":"YulIdentifier","src":"1601:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1626:6:75","nodeType":"YulIdentifier","src":"1626:6:75"}],"functionName":{"name":"iszero","nativeSrc":"1619:6:75","nodeType":"YulIdentifier","src":"1619:6:75"},"nativeSrc":"1619:14:75","nodeType":"YulFunctionCall","src":"1619:14:75"}],"functionName":{"name":"iszero","nativeSrc":"1612:6:75","nodeType":"YulIdentifier","src":"1612:6:75"},"nativeSrc":"1612:22:75","nodeType":"YulFunctionCall","src":"1612:22:75"}],"functionName":{"name":"mstore","nativeSrc":"1594:6:75","nodeType":"YulIdentifier","src":"1594:6:75"},"nativeSrc":"1594:41:75","nodeType":"YulFunctionCall","src":"1594:41:75"},"nativeSrc":"1594:41:75","nodeType":"YulExpressionStatement","src":"1594:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1454:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1518:9:75","nodeType":"YulTypedName","src":"1518:9:75","type":""},{"name":"value0","nativeSrc":"1529:6:75","nodeType":"YulTypedName","src":"1529:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1540:4:75","nodeType":"YulTypedName","src":"1540:4:75","type":""}],"src":"1454:187:75"},{"body":{"nativeSrc":"1733:259:75","nodeType":"YulBlock","src":"1733:259:75","statements":[{"body":{"nativeSrc":"1779:16:75","nodeType":"YulBlock","src":"1779:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1788:1:75","nodeType":"YulLiteral","src":"1788:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1791:1:75","nodeType":"YulLiteral","src":"1791:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1781:6:75","nodeType":"YulIdentifier","src":"1781:6:75"},"nativeSrc":"1781:12:75","nodeType":"YulFunctionCall","src":"1781:12:75"},"nativeSrc":"1781:12:75","nodeType":"YulExpressionStatement","src":"1781:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1754:7:75","nodeType":"YulIdentifier","src":"1754:7:75"},{"name":"headStart","nativeSrc":"1763:9:75","nodeType":"YulIdentifier","src":"1763:9:75"}],"functionName":{"name":"sub","nativeSrc":"1750:3:75","nodeType":"YulIdentifier","src":"1750:3:75"},"nativeSrc":"1750:23:75","nodeType":"YulFunctionCall","src":"1750:23:75"},{"kind":"number","nativeSrc":"1775:2:75","nodeType":"YulLiteral","src":"1775:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1746:3:75","nodeType":"YulIdentifier","src":"1746:3:75"},"nativeSrc":"1746:32:75","nodeType":"YulFunctionCall","src":"1746:32:75"},"nativeSrc":"1743:52:75","nodeType":"YulIf","src":"1743:52:75"},{"nativeSrc":"1804:14:75","nodeType":"YulVariableDeclaration","src":"1804:14:75","value":{"kind":"number","nativeSrc":"1817:1:75","nodeType":"YulLiteral","src":"1817:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1808:5:75","nodeType":"YulTypedName","src":"1808:5:75","type":""}]},{"nativeSrc":"1827:32:75","nodeType":"YulAssignment","src":"1827:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1849:9:75","nodeType":"YulIdentifier","src":"1849:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1836:12:75","nodeType":"YulIdentifier","src":"1836:12:75"},"nativeSrc":"1836:23:75","nodeType":"YulFunctionCall","src":"1836:23:75"},"variableNames":[{"name":"value","nativeSrc":"1827:5:75","nodeType":"YulIdentifier","src":"1827:5:75"}]},{"nativeSrc":"1868:15:75","nodeType":"YulAssignment","src":"1868:15:75","value":{"name":"value","nativeSrc":"1878:5:75","nodeType":"YulIdentifier","src":"1878:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1868:6:75","nodeType":"YulIdentifier","src":"1868:6:75"}]},{"nativeSrc":"1892:16:75","nodeType":"YulVariableDeclaration","src":"1892:16:75","value":{"kind":"number","nativeSrc":"1907:1:75","nodeType":"YulLiteral","src":"1907:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1896:7:75","nodeType":"YulTypedName","src":"1896:7:75","type":""}]},{"nativeSrc":"1917:43:75","nodeType":"YulAssignment","src":"1917:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1945:9:75","nodeType":"YulIdentifier","src":"1945:9:75"},{"kind":"number","nativeSrc":"1956:2:75","nodeType":"YulLiteral","src":"1956:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1941:3:75","nodeType":"YulIdentifier","src":"1941:3:75"},"nativeSrc":"1941:18:75","nodeType":"YulFunctionCall","src":"1941:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1928:12:75","nodeType":"YulIdentifier","src":"1928:12:75"},"nativeSrc":"1928:32:75","nodeType":"YulFunctionCall","src":"1928:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"1917:7:75","nodeType":"YulIdentifier","src":"1917:7:75"}]},{"nativeSrc":"1969:17:75","nodeType":"YulAssignment","src":"1969:17:75","value":{"name":"value_1","nativeSrc":"1979:7:75","nodeType":"YulIdentifier","src":"1979:7:75"},"variableNames":[{"name":"value1","nativeSrc":"1969:6:75","nodeType":"YulIdentifier","src":"1969:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"1646:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1691:9:75","nodeType":"YulTypedName","src":"1691:9:75","type":""},{"name":"dataEnd","nativeSrc":"1702:7:75","nodeType":"YulTypedName","src":"1702:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1714:6:75","nodeType":"YulTypedName","src":"1714:6:75","type":""},{"name":"value1","nativeSrc":"1722:6:75","nodeType":"YulTypedName","src":"1722:6:75","type":""}],"src":"1646:346:75"},{"body":{"nativeSrc":"2101:404:75","nodeType":"YulBlock","src":"2101:404:75","statements":[{"body":{"nativeSrc":"2147:16:75","nodeType":"YulBlock","src":"2147:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2156:1:75","nodeType":"YulLiteral","src":"2156:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2159:1:75","nodeType":"YulLiteral","src":"2159:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2149:6:75","nodeType":"YulIdentifier","src":"2149:6:75"},"nativeSrc":"2149:12:75","nodeType":"YulFunctionCall","src":"2149:12:75"},"nativeSrc":"2149:12:75","nodeType":"YulExpressionStatement","src":"2149:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2122:7:75","nodeType":"YulIdentifier","src":"2122:7:75"},{"name":"headStart","nativeSrc":"2131:9:75","nodeType":"YulIdentifier","src":"2131:9:75"}],"functionName":{"name":"sub","nativeSrc":"2118:3:75","nodeType":"YulIdentifier","src":"2118:3:75"},"nativeSrc":"2118:23:75","nodeType":"YulFunctionCall","src":"2118:23:75"},{"kind":"number","nativeSrc":"2143:2:75","nodeType":"YulLiteral","src":"2143:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2114:3:75","nodeType":"YulIdentifier","src":"2114:3:75"},"nativeSrc":"2114:32:75","nodeType":"YulFunctionCall","src":"2114:32:75"},"nativeSrc":"2111:52:75","nodeType":"YulIf","src":"2111:52:75"},{"nativeSrc":"2172:36:75","nodeType":"YulVariableDeclaration","src":"2172:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2198:9:75","nodeType":"YulIdentifier","src":"2198:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2185:12:75","nodeType":"YulIdentifier","src":"2185:12:75"},"nativeSrc":"2185:23:75","nodeType":"YulFunctionCall","src":"2185:23:75"},"variables":[{"name":"value","nativeSrc":"2176:5:75","nodeType":"YulTypedName","src":"2176:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2242:5:75","nodeType":"YulIdentifier","src":"2242:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2217:24:75","nodeType":"YulIdentifier","src":"2217:24:75"},"nativeSrc":"2217:31:75","nodeType":"YulFunctionCall","src":"2217:31:75"},"nativeSrc":"2217:31:75","nodeType":"YulExpressionStatement","src":"2217:31:75"},{"nativeSrc":"2257:15:75","nodeType":"YulAssignment","src":"2257:15:75","value":{"name":"value","nativeSrc":"2267:5:75","nodeType":"YulIdentifier","src":"2267:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2257:6:75","nodeType":"YulIdentifier","src":"2257:6:75"}]},{"nativeSrc":"2281:47:75","nodeType":"YulVariableDeclaration","src":"2281:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2313:9:75","nodeType":"YulIdentifier","src":"2313:9:75"},{"kind":"number","nativeSrc":"2324:2:75","nodeType":"YulLiteral","src":"2324:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2309:3:75","nodeType":"YulIdentifier","src":"2309:3:75"},"nativeSrc":"2309:18:75","nodeType":"YulFunctionCall","src":"2309:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2296:12:75","nodeType":"YulIdentifier","src":"2296:12:75"},"nativeSrc":"2296:32:75","nodeType":"YulFunctionCall","src":"2296:32:75"},"variables":[{"name":"value_1","nativeSrc":"2285:7:75","nodeType":"YulTypedName","src":"2285:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2362:7:75","nodeType":"YulIdentifier","src":"2362:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2337:24:75","nodeType":"YulIdentifier","src":"2337:24:75"},"nativeSrc":"2337:33:75","nodeType":"YulFunctionCall","src":"2337:33:75"},"nativeSrc":"2337:33:75","nodeType":"YulExpressionStatement","src":"2337:33:75"},{"nativeSrc":"2379:17:75","nodeType":"YulAssignment","src":"2379:17:75","value":{"name":"value_1","nativeSrc":"2389:7:75","nodeType":"YulIdentifier","src":"2389:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2379:6:75","nodeType":"YulIdentifier","src":"2379:6:75"}]},{"nativeSrc":"2405:16:75","nodeType":"YulVariableDeclaration","src":"2405:16:75","value":{"kind":"number","nativeSrc":"2420:1:75","nodeType":"YulLiteral","src":"2420:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"2409:7:75","nodeType":"YulTypedName","src":"2409:7:75","type":""}]},{"nativeSrc":"2430:43:75","nodeType":"YulAssignment","src":"2430:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2458:9:75","nodeType":"YulIdentifier","src":"2458:9:75"},{"kind":"number","nativeSrc":"2469:2:75","nodeType":"YulLiteral","src":"2469:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2454:3:75","nodeType":"YulIdentifier","src":"2454:3:75"},"nativeSrc":"2454:18:75","nodeType":"YulFunctionCall","src":"2454:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2441:12:75","nodeType":"YulIdentifier","src":"2441:12:75"},"nativeSrc":"2441:32:75","nodeType":"YulFunctionCall","src":"2441:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"2430:7:75","nodeType":"YulIdentifier","src":"2430:7:75"}]},{"nativeSrc":"2482:17:75","nodeType":"YulAssignment","src":"2482:17:75","value":{"name":"value_2","nativeSrc":"2492:7:75","nodeType":"YulIdentifier","src":"2492:7:75"},"variableNames":[{"name":"value2","nativeSrc":"2482:6:75","nodeType":"YulIdentifier","src":"2482:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"1997:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2051:9:75","nodeType":"YulTypedName","src":"2051:9:75","type":""},{"name":"dataEnd","nativeSrc":"2062:7:75","nodeType":"YulTypedName","src":"2062:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2074:6:75","nodeType":"YulTypedName","src":"2074:6:75","type":""},{"name":"value1","nativeSrc":"2082:6:75","nodeType":"YulTypedName","src":"2082:6:75","type":""},{"name":"value2","nativeSrc":"2090:6:75","nodeType":"YulTypedName","src":"2090:6:75","type":""}],"src":"1997:508:75"},{"body":{"nativeSrc":"2607:87:75","nodeType":"YulBlock","src":"2607:87:75","statements":[{"nativeSrc":"2617:26:75","nodeType":"YulAssignment","src":"2617:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2629:9:75","nodeType":"YulIdentifier","src":"2629:9:75"},{"kind":"number","nativeSrc":"2640:2:75","nodeType":"YulLiteral","src":"2640:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2625:3:75","nodeType":"YulIdentifier","src":"2625:3:75"},"nativeSrc":"2625:18:75","nodeType":"YulFunctionCall","src":"2625:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2617:4:75","nodeType":"YulIdentifier","src":"2617:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2659:9:75","nodeType":"YulIdentifier","src":"2659:9:75"},{"arguments":[{"name":"value0","nativeSrc":"2674:6:75","nodeType":"YulIdentifier","src":"2674:6:75"},{"kind":"number","nativeSrc":"2682:4:75","nodeType":"YulLiteral","src":"2682:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2670:3:75","nodeType":"YulIdentifier","src":"2670:3:75"},"nativeSrc":"2670:17:75","nodeType":"YulFunctionCall","src":"2670:17:75"}],"functionName":{"name":"mstore","nativeSrc":"2652:6:75","nodeType":"YulIdentifier","src":"2652:6:75"},"nativeSrc":"2652:36:75","nodeType":"YulFunctionCall","src":"2652:36:75"},"nativeSrc":"2652:36:75","nodeType":"YulExpressionStatement","src":"2652:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"2510:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2576:9:75","nodeType":"YulTypedName","src":"2576:9:75","type":""},{"name":"value0","nativeSrc":"2587:6:75","nodeType":"YulTypedName","src":"2587:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2598:4:75","nodeType":"YulTypedName","src":"2598:4:75","type":""}],"src":"2510:184:75"},{"body":{"nativeSrc":"2800:102:75","nodeType":"YulBlock","src":"2800:102:75","statements":[{"nativeSrc":"2810:26:75","nodeType":"YulAssignment","src":"2810:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2822:9:75","nodeType":"YulIdentifier","src":"2822:9:75"},{"kind":"number","nativeSrc":"2833:2:75","nodeType":"YulLiteral","src":"2833:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2818:3:75","nodeType":"YulIdentifier","src":"2818:3:75"},"nativeSrc":"2818:18:75","nodeType":"YulFunctionCall","src":"2818:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2810:4:75","nodeType":"YulIdentifier","src":"2810:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2852:9:75","nodeType":"YulIdentifier","src":"2852:9:75"},{"arguments":[{"name":"value0","nativeSrc":"2867:6:75","nodeType":"YulIdentifier","src":"2867:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2883:3:75","nodeType":"YulLiteral","src":"2883:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2888:1:75","nodeType":"YulLiteral","src":"2888:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2879:3:75","nodeType":"YulIdentifier","src":"2879:3:75"},"nativeSrc":"2879:11:75","nodeType":"YulFunctionCall","src":"2879:11:75"},{"kind":"number","nativeSrc":"2892:1:75","nodeType":"YulLiteral","src":"2892:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2875:3:75","nodeType":"YulIdentifier","src":"2875:3:75"},"nativeSrc":"2875:19:75","nodeType":"YulFunctionCall","src":"2875:19:75"}],"functionName":{"name":"and","nativeSrc":"2863:3:75","nodeType":"YulIdentifier","src":"2863:3:75"},"nativeSrc":"2863:32:75","nodeType":"YulFunctionCall","src":"2863:32:75"}],"functionName":{"name":"mstore","nativeSrc":"2845:6:75","nodeType":"YulIdentifier","src":"2845:6:75"},"nativeSrc":"2845:51:75","nodeType":"YulFunctionCall","src":"2845:51:75"},"nativeSrc":"2845:51:75","nodeType":"YulExpressionStatement","src":"2845:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2699:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2769:9:75","nodeType":"YulTypedName","src":"2769:9:75","type":""},{"name":"value0","nativeSrc":"2780:6:75","nodeType":"YulTypedName","src":"2780:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2791:4:75","nodeType":"YulTypedName","src":"2791:4:75","type":""}],"src":"2699:203:75"},{"body":{"nativeSrc":"2954:109:75","nodeType":"YulBlock","src":"2954:109:75","statements":[{"nativeSrc":"2964:29:75","nodeType":"YulAssignment","src":"2964:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"2986:6:75","nodeType":"YulIdentifier","src":"2986:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"2973:12:75","nodeType":"YulIdentifier","src":"2973:12:75"},"nativeSrc":"2973:20:75","nodeType":"YulFunctionCall","src":"2973:20:75"},"variableNames":[{"name":"value","nativeSrc":"2964:5:75","nodeType":"YulIdentifier","src":"2964:5:75"}]},{"body":{"nativeSrc":"3041:16:75","nodeType":"YulBlock","src":"3041:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3050:1:75","nodeType":"YulLiteral","src":"3050:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3053:1:75","nodeType":"YulLiteral","src":"3053:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3043:6:75","nodeType":"YulIdentifier","src":"3043:6:75"},"nativeSrc":"3043:12:75","nodeType":"YulFunctionCall","src":"3043:12:75"},"nativeSrc":"3043:12:75","nodeType":"YulExpressionStatement","src":"3043:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3015:5:75","nodeType":"YulIdentifier","src":"3015:5:75"},{"arguments":[{"name":"value","nativeSrc":"3026:5:75","nodeType":"YulIdentifier","src":"3026:5:75"},{"kind":"number","nativeSrc":"3033:4:75","nodeType":"YulLiteral","src":"3033:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3022:3:75","nodeType":"YulIdentifier","src":"3022:3:75"},"nativeSrc":"3022:16:75","nodeType":"YulFunctionCall","src":"3022:16:75"}],"functionName":{"name":"eq","nativeSrc":"3012:2:75","nodeType":"YulIdentifier","src":"3012:2:75"},"nativeSrc":"3012:27:75","nodeType":"YulFunctionCall","src":"3012:27:75"}],"functionName":{"name":"iszero","nativeSrc":"3005:6:75","nodeType":"YulIdentifier","src":"3005:6:75"},"nativeSrc":"3005:35:75","nodeType":"YulFunctionCall","src":"3005:35:75"},"nativeSrc":"3002:55:75","nodeType":"YulIf","src":"3002:55:75"}]},"name":"abi_decode_uint8","nativeSrc":"2907:156:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2933:6:75","nodeType":"YulTypedName","src":"2933:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"2944:5:75","nodeType":"YulTypedName","src":"2944:5:75","type":""}],"src":"2907:156:75"},{"body":{"nativeSrc":"3100:95:75","nodeType":"YulBlock","src":"3100:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3117:1:75","nodeType":"YulLiteral","src":"3117:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3124:3:75","nodeType":"YulLiteral","src":"3124:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3129:10:75","nodeType":"YulLiteral","src":"3129:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3120:3:75","nodeType":"YulIdentifier","src":"3120:3:75"},"nativeSrc":"3120:20:75","nodeType":"YulFunctionCall","src":"3120:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3110:6:75","nodeType":"YulIdentifier","src":"3110:6:75"},"nativeSrc":"3110:31:75","nodeType":"YulFunctionCall","src":"3110:31:75"},"nativeSrc":"3110:31:75","nodeType":"YulExpressionStatement","src":"3110:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3157:1:75","nodeType":"YulLiteral","src":"3157:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3160:4:75","nodeType":"YulLiteral","src":"3160:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3150:6:75","nodeType":"YulIdentifier","src":"3150:6:75"},"nativeSrc":"3150:15:75","nodeType":"YulFunctionCall","src":"3150:15:75"},"nativeSrc":"3150:15:75","nodeType":"YulExpressionStatement","src":"3150:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3181:1:75","nodeType":"YulLiteral","src":"3181:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3184:4:75","nodeType":"YulLiteral","src":"3184:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3174:6:75","nodeType":"YulIdentifier","src":"3174:6:75"},"nativeSrc":"3174:15:75","nodeType":"YulFunctionCall","src":"3174:15:75"},"nativeSrc":"3174:15:75","nodeType":"YulExpressionStatement","src":"3174:15:75"}]},"name":"panic_error_0x41","nativeSrc":"3068:127:75","nodeType":"YulFunctionDefinition","src":"3068:127:75"},{"body":{"nativeSrc":"3245:230:75","nodeType":"YulBlock","src":"3245:230:75","statements":[{"nativeSrc":"3255:19:75","nodeType":"YulAssignment","src":"3255:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"3271:2:75","nodeType":"YulLiteral","src":"3271:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"3265:5:75","nodeType":"YulIdentifier","src":"3265:5:75"},"nativeSrc":"3265:9:75","nodeType":"YulFunctionCall","src":"3265:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"3255:6:75","nodeType":"YulIdentifier","src":"3255:6:75"}]},{"nativeSrc":"3283:58:75","nodeType":"YulVariableDeclaration","src":"3283:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"3305:6:75","nodeType":"YulIdentifier","src":"3305:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"3321:4:75","nodeType":"YulIdentifier","src":"3321:4:75"},{"kind":"number","nativeSrc":"3327:2:75","nodeType":"YulLiteral","src":"3327:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3317:3:75","nodeType":"YulIdentifier","src":"3317:3:75"},"nativeSrc":"3317:13:75","nodeType":"YulFunctionCall","src":"3317:13:75"},{"arguments":[{"kind":"number","nativeSrc":"3336:2:75","nodeType":"YulLiteral","src":"3336:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3332:3:75","nodeType":"YulIdentifier","src":"3332:3:75"},"nativeSrc":"3332:7:75","nodeType":"YulFunctionCall","src":"3332:7:75"}],"functionName":{"name":"and","nativeSrc":"3313:3:75","nodeType":"YulIdentifier","src":"3313:3:75"},"nativeSrc":"3313:27:75","nodeType":"YulFunctionCall","src":"3313:27:75"}],"functionName":{"name":"add","nativeSrc":"3301:3:75","nodeType":"YulIdentifier","src":"3301:3:75"},"nativeSrc":"3301:40:75","nodeType":"YulFunctionCall","src":"3301:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"3287:10:75","nodeType":"YulTypedName","src":"3287:10:75","type":""}]},{"body":{"nativeSrc":"3416:22:75","nodeType":"YulBlock","src":"3416:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3418:16:75","nodeType":"YulIdentifier","src":"3418:16:75"},"nativeSrc":"3418:18:75","nodeType":"YulFunctionCall","src":"3418:18:75"},"nativeSrc":"3418:18:75","nodeType":"YulExpressionStatement","src":"3418:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3359:10:75","nodeType":"YulIdentifier","src":"3359:10:75"},{"kind":"number","nativeSrc":"3371:18:75","nodeType":"YulLiteral","src":"3371:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3356:2:75","nodeType":"YulIdentifier","src":"3356:2:75"},"nativeSrc":"3356:34:75","nodeType":"YulFunctionCall","src":"3356:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3395:10:75","nodeType":"YulIdentifier","src":"3395:10:75"},{"name":"memPtr","nativeSrc":"3407:6:75","nodeType":"YulIdentifier","src":"3407:6:75"}],"functionName":{"name":"lt","nativeSrc":"3392:2:75","nodeType":"YulIdentifier","src":"3392:2:75"},"nativeSrc":"3392:22:75","nodeType":"YulFunctionCall","src":"3392:22:75"}],"functionName":{"name":"or","nativeSrc":"3353:2:75","nodeType":"YulIdentifier","src":"3353:2:75"},"nativeSrc":"3353:62:75","nodeType":"YulFunctionCall","src":"3353:62:75"},"nativeSrc":"3350:88:75","nodeType":"YulIf","src":"3350:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3454:2:75","nodeType":"YulLiteral","src":"3454:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3458:10:75","nodeType":"YulIdentifier","src":"3458:10:75"}],"functionName":{"name":"mstore","nativeSrc":"3447:6:75","nodeType":"YulIdentifier","src":"3447:6:75"},"nativeSrc":"3447:22:75","nodeType":"YulFunctionCall","src":"3447:22:75"},"nativeSrc":"3447:22:75","nodeType":"YulExpressionStatement","src":"3447:22:75"}]},"name":"allocate_memory","nativeSrc":"3200:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"3225:4:75","nodeType":"YulTypedName","src":"3225:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"3234:6:75","nodeType":"YulTypedName","src":"3234:6:75","type":""}],"src":"3200:275:75"},{"body":{"nativeSrc":"3532:577:75","nodeType":"YulBlock","src":"3532:577:75","statements":[{"body":{"nativeSrc":"3581:16:75","nodeType":"YulBlock","src":"3581:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3590:1:75","nodeType":"YulLiteral","src":"3590:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3593:1:75","nodeType":"YulLiteral","src":"3593:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3583:6:75","nodeType":"YulIdentifier","src":"3583:6:75"},"nativeSrc":"3583:12:75","nodeType":"YulFunctionCall","src":"3583:12:75"},"nativeSrc":"3583:12:75","nodeType":"YulExpressionStatement","src":"3583:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3560:6:75","nodeType":"YulIdentifier","src":"3560:6:75"},{"kind":"number","nativeSrc":"3568:4:75","nodeType":"YulLiteral","src":"3568:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3556:3:75","nodeType":"YulIdentifier","src":"3556:3:75"},"nativeSrc":"3556:17:75","nodeType":"YulFunctionCall","src":"3556:17:75"},{"name":"end","nativeSrc":"3575:3:75","nodeType":"YulIdentifier","src":"3575:3:75"}],"functionName":{"name":"slt","nativeSrc":"3552:3:75","nodeType":"YulIdentifier","src":"3552:3:75"},"nativeSrc":"3552:27:75","nodeType":"YulFunctionCall","src":"3552:27:75"}],"functionName":{"name":"iszero","nativeSrc":"3545:6:75","nodeType":"YulIdentifier","src":"3545:6:75"},"nativeSrc":"3545:35:75","nodeType":"YulFunctionCall","src":"3545:35:75"},"nativeSrc":"3542:55:75","nodeType":"YulIf","src":"3542:55:75"},{"nativeSrc":"3606:34:75","nodeType":"YulVariableDeclaration","src":"3606:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"3633:6:75","nodeType":"YulIdentifier","src":"3633:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"3620:12:75","nodeType":"YulIdentifier","src":"3620:12:75"},"nativeSrc":"3620:20:75","nodeType":"YulFunctionCall","src":"3620:20:75"},"variables":[{"name":"length","nativeSrc":"3610:6:75","nodeType":"YulTypedName","src":"3610:6:75","type":""}]},{"nativeSrc":"3649:28:75","nodeType":"YulVariableDeclaration","src":"3649:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"3664:6:75","nodeType":"YulIdentifier","src":"3664:6:75"},{"kind":"number","nativeSrc":"3672:4:75","nodeType":"YulLiteral","src":"3672:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3660:3:75","nodeType":"YulIdentifier","src":"3660:3:75"},"nativeSrc":"3660:17:75","nodeType":"YulFunctionCall","src":"3660:17:75"},"variables":[{"name":"src","nativeSrc":"3653:3:75","nodeType":"YulTypedName","src":"3653:3:75","type":""}]},{"nativeSrc":"3686:16:75","nodeType":"YulVariableDeclaration","src":"3686:16:75","value":{"kind":"number","nativeSrc":"3701:1:75","nodeType":"YulLiteral","src":"3701:1:75","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"3690:7:75","nodeType":"YulTypedName","src":"3690:7:75","type":""}]},{"nativeSrc":"3711:13:75","nodeType":"YulVariableDeclaration","src":"3711:13:75","value":{"kind":"number","nativeSrc":"3723:1:75","nodeType":"YulLiteral","src":"3723:1:75","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3715:4:75","nodeType":"YulTypedName","src":"3715:4:75","type":""}]},{"body":{"nativeSrc":"3767:22:75","nodeType":"YulBlock","src":"3767:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3769:16:75","nodeType":"YulIdentifier","src":"3769:16:75"},"nativeSrc":"3769:18:75","nodeType":"YulFunctionCall","src":"3769:18:75"},"nativeSrc":"3769:18:75","nodeType":"YulExpressionStatement","src":"3769:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3739:6:75","nodeType":"YulIdentifier","src":"3739:6:75"},{"kind":"number","nativeSrc":"3747:18:75","nodeType":"YulLiteral","src":"3747:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3736:2:75","nodeType":"YulIdentifier","src":"3736:2:75"},"nativeSrc":"3736:30:75","nodeType":"YulFunctionCall","src":"3736:30:75"},"nativeSrc":"3733:56:75","nodeType":"YulIf","src":"3733:56:75"},{"nativeSrc":"3798:48:75","nodeType":"YulAssignment","src":"3798:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3818:6:75","nodeType":"YulIdentifier","src":"3818:6:75"},{"kind":"number","nativeSrc":"3826:2:75","nodeType":"YulLiteral","src":"3826:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3814:3:75","nodeType":"YulIdentifier","src":"3814:3:75"},"nativeSrc":"3814:15:75","nodeType":"YulFunctionCall","src":"3814:15:75"},{"arguments":[{"kind":"number","nativeSrc":"3835:2:75","nodeType":"YulLiteral","src":"3835:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3831:3:75","nodeType":"YulIdentifier","src":"3831:3:75"},"nativeSrc":"3831:7:75","nodeType":"YulFunctionCall","src":"3831:7:75"}],"functionName":{"name":"and","nativeSrc":"3810:3:75","nodeType":"YulIdentifier","src":"3810:3:75"},"nativeSrc":"3810:29:75","nodeType":"YulFunctionCall","src":"3810:29:75"},{"kind":"number","nativeSrc":"3841:4:75","nodeType":"YulLiteral","src":"3841:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3806:3:75","nodeType":"YulIdentifier","src":"3806:3:75"},"nativeSrc":"3806:40:75","nodeType":"YulFunctionCall","src":"3806:40:75"},"variableNames":[{"name":"size","nativeSrc":"3798:4:75","nodeType":"YulIdentifier","src":"3798:4:75"}]},{"nativeSrc":"3855:32:75","nodeType":"YulAssignment","src":"3855:32:75","value":{"arguments":[{"name":"size","nativeSrc":"3882:4:75","nodeType":"YulIdentifier","src":"3882:4:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"3866:15:75","nodeType":"YulIdentifier","src":"3866:15:75"},"nativeSrc":"3866:21:75","nodeType":"YulFunctionCall","src":"3866:21:75"},"variableNames":[{"name":"array_1","nativeSrc":"3855:7:75","nodeType":"YulIdentifier","src":"3855:7:75"}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"3903:7:75","nodeType":"YulIdentifier","src":"3903:7:75"},{"name":"length","nativeSrc":"3912:6:75","nodeType":"YulIdentifier","src":"3912:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3896:6:75","nodeType":"YulIdentifier","src":"3896:6:75"},"nativeSrc":"3896:23:75","nodeType":"YulFunctionCall","src":"3896:23:75"},"nativeSrc":"3896:23:75","nodeType":"YulExpressionStatement","src":"3896:23:75"},{"body":{"nativeSrc":"3957:16:75","nodeType":"YulBlock","src":"3957:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3966:1:75","nodeType":"YulLiteral","src":"3966:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3969:1:75","nodeType":"YulLiteral","src":"3969:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3959:6:75","nodeType":"YulIdentifier","src":"3959:6:75"},"nativeSrc":"3959:12:75","nodeType":"YulFunctionCall","src":"3959:12:75"},"nativeSrc":"3959:12:75","nodeType":"YulExpressionStatement","src":"3959:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3938:3:75","nodeType":"YulIdentifier","src":"3938:3:75"},{"name":"length","nativeSrc":"3943:6:75","nodeType":"YulIdentifier","src":"3943:6:75"}],"functionName":{"name":"add","nativeSrc":"3934:3:75","nodeType":"YulIdentifier","src":"3934:3:75"},"nativeSrc":"3934:16:75","nodeType":"YulFunctionCall","src":"3934:16:75"},{"name":"end","nativeSrc":"3952:3:75","nodeType":"YulIdentifier","src":"3952:3:75"}],"functionName":{"name":"gt","nativeSrc":"3931:2:75","nodeType":"YulIdentifier","src":"3931:2:75"},"nativeSrc":"3931:25:75","nodeType":"YulFunctionCall","src":"3931:25:75"},"nativeSrc":"3928:45:75","nodeType":"YulIf","src":"3928:45:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"3999:7:75","nodeType":"YulIdentifier","src":"3999:7:75"},{"kind":"number","nativeSrc":"4008:4:75","nodeType":"YulLiteral","src":"4008:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3995:3:75","nodeType":"YulIdentifier","src":"3995:3:75"},"nativeSrc":"3995:18:75","nodeType":"YulFunctionCall","src":"3995:18:75"},{"name":"src","nativeSrc":"4015:3:75","nodeType":"YulIdentifier","src":"4015:3:75"},{"name":"length","nativeSrc":"4020:6:75","nodeType":"YulIdentifier","src":"4020:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"3982:12:75","nodeType":"YulIdentifier","src":"3982:12:75"},"nativeSrc":"3982:45:75","nodeType":"YulFunctionCall","src":"3982:45:75"},"nativeSrc":"3982:45:75","nodeType":"YulExpressionStatement","src":"3982:45:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"4051:7:75","nodeType":"YulIdentifier","src":"4051:7:75"},{"name":"length","nativeSrc":"4060:6:75","nodeType":"YulIdentifier","src":"4060:6:75"}],"functionName":{"name":"add","nativeSrc":"4047:3:75","nodeType":"YulIdentifier","src":"4047:3:75"},"nativeSrc":"4047:20:75","nodeType":"YulFunctionCall","src":"4047:20:75"},{"kind":"number","nativeSrc":"4069:4:75","nodeType":"YulLiteral","src":"4069:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4043:3:75","nodeType":"YulIdentifier","src":"4043:3:75"},"nativeSrc":"4043:31:75","nodeType":"YulFunctionCall","src":"4043:31:75"},{"kind":"number","nativeSrc":"4076:1:75","nodeType":"YulLiteral","src":"4076:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4036:6:75","nodeType":"YulIdentifier","src":"4036:6:75"},"nativeSrc":"4036:42:75","nodeType":"YulFunctionCall","src":"4036:42:75"},"nativeSrc":"4036:42:75","nodeType":"YulExpressionStatement","src":"4036:42:75"},{"nativeSrc":"4087:16:75","nodeType":"YulAssignment","src":"4087:16:75","value":{"name":"array_1","nativeSrc":"4096:7:75","nodeType":"YulIdentifier","src":"4096:7:75"},"variableNames":[{"name":"array","nativeSrc":"4087:5:75","nodeType":"YulIdentifier","src":"4087:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"3480:629:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3506:6:75","nodeType":"YulTypedName","src":"3506:6:75","type":""},{"name":"end","nativeSrc":"3514:3:75","nodeType":"YulTypedName","src":"3514:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3522:5:75","nodeType":"YulTypedName","src":"3522:5:75","type":""}],"src":"3480:629:75"},{"body":{"nativeSrc":"4223:351:75","nodeType":"YulBlock","src":"4223:351:75","statements":[{"body":{"nativeSrc":"4269:16:75","nodeType":"YulBlock","src":"4269:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4278:1:75","nodeType":"YulLiteral","src":"4278:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4281:1:75","nodeType":"YulLiteral","src":"4281:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4271:6:75","nodeType":"YulIdentifier","src":"4271:6:75"},"nativeSrc":"4271:12:75","nodeType":"YulFunctionCall","src":"4271:12:75"},"nativeSrc":"4271:12:75","nodeType":"YulExpressionStatement","src":"4271:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4244:7:75","nodeType":"YulIdentifier","src":"4244:7:75"},{"name":"headStart","nativeSrc":"4253:9:75","nodeType":"YulIdentifier","src":"4253:9:75"}],"functionName":{"name":"sub","nativeSrc":"4240:3:75","nodeType":"YulIdentifier","src":"4240:3:75"},"nativeSrc":"4240:23:75","nodeType":"YulFunctionCall","src":"4240:23:75"},{"kind":"number","nativeSrc":"4265:2:75","nodeType":"YulLiteral","src":"4265:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"4236:3:75","nodeType":"YulIdentifier","src":"4236:3:75"},"nativeSrc":"4236:32:75","nodeType":"YulFunctionCall","src":"4236:32:75"},"nativeSrc":"4233:52:75","nodeType":"YulIf","src":"4233:52:75"},{"nativeSrc":"4294:37:75","nodeType":"YulAssignment","src":"4294:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4321:9:75","nodeType":"YulIdentifier","src":"4321:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"4304:16:75","nodeType":"YulIdentifier","src":"4304:16:75"},"nativeSrc":"4304:27:75","nodeType":"YulFunctionCall","src":"4304:27:75"},"variableNames":[{"name":"value0","nativeSrc":"4294:6:75","nodeType":"YulIdentifier","src":"4294:6:75"}]},{"nativeSrc":"4340:46:75","nodeType":"YulAssignment","src":"4340:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4371:9:75","nodeType":"YulIdentifier","src":"4371:9:75"},{"kind":"number","nativeSrc":"4382:2:75","nodeType":"YulLiteral","src":"4382:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4367:3:75","nodeType":"YulIdentifier","src":"4367:3:75"},"nativeSrc":"4367:18:75","nodeType":"YulFunctionCall","src":"4367:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"4350:16:75","nodeType":"YulIdentifier","src":"4350:16:75"},"nativeSrc":"4350:36:75","nodeType":"YulFunctionCall","src":"4350:36:75"},"variableNames":[{"name":"value1","nativeSrc":"4340:6:75","nodeType":"YulIdentifier","src":"4340:6:75"}]},{"nativeSrc":"4395:46:75","nodeType":"YulVariableDeclaration","src":"4395:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4426:9:75","nodeType":"YulIdentifier","src":"4426:9:75"},{"kind":"number","nativeSrc":"4437:2:75","nodeType":"YulLiteral","src":"4437:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4422:3:75","nodeType":"YulIdentifier","src":"4422:3:75"},"nativeSrc":"4422:18:75","nodeType":"YulFunctionCall","src":"4422:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4409:12:75","nodeType":"YulIdentifier","src":"4409:12:75"},"nativeSrc":"4409:32:75","nodeType":"YulFunctionCall","src":"4409:32:75"},"variables":[{"name":"offset","nativeSrc":"4399:6:75","nodeType":"YulTypedName","src":"4399:6:75","type":""}]},{"body":{"nativeSrc":"4484:16:75","nodeType":"YulBlock","src":"4484:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4493:1:75","nodeType":"YulLiteral","src":"4493:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4496:1:75","nodeType":"YulLiteral","src":"4496:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4486:6:75","nodeType":"YulIdentifier","src":"4486:6:75"},"nativeSrc":"4486:12:75","nodeType":"YulFunctionCall","src":"4486:12:75"},"nativeSrc":"4486:12:75","nodeType":"YulExpressionStatement","src":"4486:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4456:6:75","nodeType":"YulIdentifier","src":"4456:6:75"},{"kind":"number","nativeSrc":"4464:18:75","nodeType":"YulLiteral","src":"4464:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4453:2:75","nodeType":"YulIdentifier","src":"4453:2:75"},"nativeSrc":"4453:30:75","nodeType":"YulFunctionCall","src":"4453:30:75"},"nativeSrc":"4450:50:75","nodeType":"YulIf","src":"4450:50:75"},{"nativeSrc":"4509:59:75","nodeType":"YulAssignment","src":"4509:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4540:9:75","nodeType":"YulIdentifier","src":"4540:9:75"},{"name":"offset","nativeSrc":"4551:6:75","nodeType":"YulIdentifier","src":"4551:6:75"}],"functionName":{"name":"add","nativeSrc":"4536:3:75","nodeType":"YulIdentifier","src":"4536:3:75"},"nativeSrc":"4536:22:75","nodeType":"YulFunctionCall","src":"4536:22:75"},{"name":"dataEnd","nativeSrc":"4560:7:75","nodeType":"YulIdentifier","src":"4560:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4519:16:75","nodeType":"YulIdentifier","src":"4519:16:75"},"nativeSrc":"4519:49:75","nodeType":"YulFunctionCall","src":"4519:49:75"},"variableNames":[{"name":"value2","nativeSrc":"4509:6:75","nodeType":"YulIdentifier","src":"4509:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_bytes_memory_ptr","nativeSrc":"4114:460:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4173:9:75","nodeType":"YulTypedName","src":"4173:9:75","type":""},{"name":"dataEnd","nativeSrc":"4184:7:75","nodeType":"YulTypedName","src":"4184:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4196:6:75","nodeType":"YulTypedName","src":"4196:6:75","type":""},{"name":"value1","nativeSrc":"4204:6:75","nodeType":"YulTypedName","src":"4204:6:75","type":""},{"name":"value2","nativeSrc":"4212:6:75","nodeType":"YulTypedName","src":"4212:6:75","type":""}],"src":"4114:460:75"},{"body":{"nativeSrc":"4698:99:75","nodeType":"YulBlock","src":"4698:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4715:9:75","nodeType":"YulIdentifier","src":"4715:9:75"},{"kind":"number","nativeSrc":"4726:2:75","nodeType":"YulLiteral","src":"4726:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4708:6:75","nodeType":"YulIdentifier","src":"4708:6:75"},"nativeSrc":"4708:21:75","nodeType":"YulFunctionCall","src":"4708:21:75"},"nativeSrc":"4708:21:75","nodeType":"YulExpressionStatement","src":"4708:21:75"},{"nativeSrc":"4738:53:75","nodeType":"YulAssignment","src":"4738:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"4764:6:75","nodeType":"YulIdentifier","src":"4764:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"4776:9:75","nodeType":"YulIdentifier","src":"4776:9:75"},{"kind":"number","nativeSrc":"4787:2:75","nodeType":"YulLiteral","src":"4787:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4772:3:75","nodeType":"YulIdentifier","src":"4772:3:75"},"nativeSrc":"4772:18:75","nodeType":"YulFunctionCall","src":"4772:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"4746:17:75","nodeType":"YulIdentifier","src":"4746:17:75"},"nativeSrc":"4746:45:75","nodeType":"YulFunctionCall","src":"4746:45:75"},"variableNames":[{"name":"tail","nativeSrc":"4738:4:75","nodeType":"YulIdentifier","src":"4738:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"4579:218:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4667:9:75","nodeType":"YulTypedName","src":"4667:9:75","type":""},{"name":"value0","nativeSrc":"4678:6:75","nodeType":"YulTypedName","src":"4678:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4689:4:75","nodeType":"YulTypedName","src":"4689:4:75","type":""}],"src":"4579:218:75"},{"body":{"nativeSrc":"4872:177:75","nodeType":"YulBlock","src":"4872:177:75","statements":[{"body":{"nativeSrc":"4918:16:75","nodeType":"YulBlock","src":"4918:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4927:1:75","nodeType":"YulLiteral","src":"4927:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4930:1:75","nodeType":"YulLiteral","src":"4930:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4920:6:75","nodeType":"YulIdentifier","src":"4920:6:75"},"nativeSrc":"4920:12:75","nodeType":"YulFunctionCall","src":"4920:12:75"},"nativeSrc":"4920:12:75","nodeType":"YulExpressionStatement","src":"4920:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4893:7:75","nodeType":"YulIdentifier","src":"4893:7:75"},{"name":"headStart","nativeSrc":"4902:9:75","nodeType":"YulIdentifier","src":"4902:9:75"}],"functionName":{"name":"sub","nativeSrc":"4889:3:75","nodeType":"YulIdentifier","src":"4889:3:75"},"nativeSrc":"4889:23:75","nodeType":"YulFunctionCall","src":"4889:23:75"},{"kind":"number","nativeSrc":"4914:2:75","nodeType":"YulLiteral","src":"4914:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4885:3:75","nodeType":"YulIdentifier","src":"4885:3:75"},"nativeSrc":"4885:32:75","nodeType":"YulFunctionCall","src":"4885:32:75"},"nativeSrc":"4882:52:75","nodeType":"YulIf","src":"4882:52:75"},{"nativeSrc":"4943:36:75","nodeType":"YulVariableDeclaration","src":"4943:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4969:9:75","nodeType":"YulIdentifier","src":"4969:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4956:12:75","nodeType":"YulIdentifier","src":"4956:12:75"},"nativeSrc":"4956:23:75","nodeType":"YulFunctionCall","src":"4956:23:75"},"variables":[{"name":"value","nativeSrc":"4947:5:75","nodeType":"YulTypedName","src":"4947:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5013:5:75","nodeType":"YulIdentifier","src":"5013:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4988:24:75","nodeType":"YulIdentifier","src":"4988:24:75"},"nativeSrc":"4988:31:75","nodeType":"YulFunctionCall","src":"4988:31:75"},"nativeSrc":"4988:31:75","nodeType":"YulExpressionStatement","src":"4988:31:75"},{"nativeSrc":"5028:15:75","nodeType":"YulAssignment","src":"5028:15:75","value":{"name":"value","nativeSrc":"5038:5:75","nodeType":"YulIdentifier","src":"5038:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5028:6:75","nodeType":"YulIdentifier","src":"5028:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4802:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4838:9:75","nodeType":"YulTypedName","src":"4838:9:75","type":""},{"name":"dataEnd","nativeSrc":"4849:7:75","nodeType":"YulTypedName","src":"4849:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4861:6:75","nodeType":"YulTypedName","src":"4861:6:75","type":""}],"src":"4802:247:75"},{"body":{"nativeSrc":"5124:110:75","nodeType":"YulBlock","src":"5124:110:75","statements":[{"body":{"nativeSrc":"5170:16:75","nodeType":"YulBlock","src":"5170:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5179:1:75","nodeType":"YulLiteral","src":"5179:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5182:1:75","nodeType":"YulLiteral","src":"5182:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5172:6:75","nodeType":"YulIdentifier","src":"5172:6:75"},"nativeSrc":"5172:12:75","nodeType":"YulFunctionCall","src":"5172:12:75"},"nativeSrc":"5172:12:75","nodeType":"YulExpressionStatement","src":"5172:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5145:7:75","nodeType":"YulIdentifier","src":"5145:7:75"},{"name":"headStart","nativeSrc":"5154:9:75","nodeType":"YulIdentifier","src":"5154:9:75"}],"functionName":{"name":"sub","nativeSrc":"5141:3:75","nodeType":"YulIdentifier","src":"5141:3:75"},"nativeSrc":"5141:23:75","nodeType":"YulFunctionCall","src":"5141:23:75"},{"kind":"number","nativeSrc":"5166:2:75","nodeType":"YulLiteral","src":"5166:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5137:3:75","nodeType":"YulIdentifier","src":"5137:3:75"},"nativeSrc":"5137:32:75","nodeType":"YulFunctionCall","src":"5137:32:75"},"nativeSrc":"5134:52:75","nodeType":"YulIf","src":"5134:52:75"},{"nativeSrc":"5195:33:75","nodeType":"YulAssignment","src":"5195:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5218:9:75","nodeType":"YulIdentifier","src":"5218:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5205:12:75","nodeType":"YulIdentifier","src":"5205:12:75"},"nativeSrc":"5205:23:75","nodeType":"YulFunctionCall","src":"5205:23:75"},"variableNames":[{"name":"value0","nativeSrc":"5195:6:75","nodeType":"YulIdentifier","src":"5195:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"5054:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5090:9:75","nodeType":"YulTypedName","src":"5090:9:75","type":""},{"name":"dataEnd","nativeSrc":"5101:7:75","nodeType":"YulTypedName","src":"5101:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5113:6:75","nodeType":"YulTypedName","src":"5113:6:75","type":""}],"src":"5054:180:75"},{"body":{"nativeSrc":"5335:359:75","nodeType":"YulBlock","src":"5335:359:75","statements":[{"body":{"nativeSrc":"5381:16:75","nodeType":"YulBlock","src":"5381:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5390:1:75","nodeType":"YulLiteral","src":"5390:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5393:1:75","nodeType":"YulLiteral","src":"5393:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5383:6:75","nodeType":"YulIdentifier","src":"5383:6:75"},"nativeSrc":"5383:12:75","nodeType":"YulFunctionCall","src":"5383:12:75"},"nativeSrc":"5383:12:75","nodeType":"YulExpressionStatement","src":"5383:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5356:7:75","nodeType":"YulIdentifier","src":"5356:7:75"},{"name":"headStart","nativeSrc":"5365:9:75","nodeType":"YulIdentifier","src":"5365:9:75"}],"functionName":{"name":"sub","nativeSrc":"5352:3:75","nodeType":"YulIdentifier","src":"5352:3:75"},"nativeSrc":"5352:23:75","nodeType":"YulFunctionCall","src":"5352:23:75"},{"kind":"number","nativeSrc":"5377:2:75","nodeType":"YulLiteral","src":"5377:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5348:3:75","nodeType":"YulIdentifier","src":"5348:3:75"},"nativeSrc":"5348:32:75","nodeType":"YulFunctionCall","src":"5348:32:75"},"nativeSrc":"5345:52:75","nodeType":"YulIf","src":"5345:52:75"},{"nativeSrc":"5406:36:75","nodeType":"YulVariableDeclaration","src":"5406:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5432:9:75","nodeType":"YulIdentifier","src":"5432:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5419:12:75","nodeType":"YulIdentifier","src":"5419:12:75"},"nativeSrc":"5419:23:75","nodeType":"YulFunctionCall","src":"5419:23:75"},"variables":[{"name":"value","nativeSrc":"5410:5:75","nodeType":"YulTypedName","src":"5410:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"5476:5:75","nodeType":"YulIdentifier","src":"5476:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5451:24:75","nodeType":"YulIdentifier","src":"5451:24:75"},"nativeSrc":"5451:31:75","nodeType":"YulFunctionCall","src":"5451:31:75"},"nativeSrc":"5451:31:75","nodeType":"YulExpressionStatement","src":"5451:31:75"},{"nativeSrc":"5491:15:75","nodeType":"YulAssignment","src":"5491:15:75","value":{"name":"value","nativeSrc":"5501:5:75","nodeType":"YulIdentifier","src":"5501:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5491:6:75","nodeType":"YulIdentifier","src":"5491:6:75"}]},{"nativeSrc":"5515:46:75","nodeType":"YulVariableDeclaration","src":"5515:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5546:9:75","nodeType":"YulIdentifier","src":"5546:9:75"},{"kind":"number","nativeSrc":"5557:2:75","nodeType":"YulLiteral","src":"5557:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5542:3:75","nodeType":"YulIdentifier","src":"5542:3:75"},"nativeSrc":"5542:18:75","nodeType":"YulFunctionCall","src":"5542:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"5529:12:75","nodeType":"YulIdentifier","src":"5529:12:75"},"nativeSrc":"5529:32:75","nodeType":"YulFunctionCall","src":"5529:32:75"},"variables":[{"name":"offset","nativeSrc":"5519:6:75","nodeType":"YulTypedName","src":"5519:6:75","type":""}]},{"body":{"nativeSrc":"5604:16:75","nodeType":"YulBlock","src":"5604:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5613:1:75","nodeType":"YulLiteral","src":"5613:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5616:1:75","nodeType":"YulLiteral","src":"5616:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5606:6:75","nodeType":"YulIdentifier","src":"5606:6:75"},"nativeSrc":"5606:12:75","nodeType":"YulFunctionCall","src":"5606:12:75"},"nativeSrc":"5606:12:75","nodeType":"YulExpressionStatement","src":"5606:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5576:6:75","nodeType":"YulIdentifier","src":"5576:6:75"},{"kind":"number","nativeSrc":"5584:18:75","nodeType":"YulLiteral","src":"5584:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5573:2:75","nodeType":"YulIdentifier","src":"5573:2:75"},"nativeSrc":"5573:30:75","nodeType":"YulFunctionCall","src":"5573:30:75"},"nativeSrc":"5570:50:75","nodeType":"YulIf","src":"5570:50:75"},{"nativeSrc":"5629:59:75","nodeType":"YulAssignment","src":"5629:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5660:9:75","nodeType":"YulIdentifier","src":"5660:9:75"},{"name":"offset","nativeSrc":"5671:6:75","nodeType":"YulIdentifier","src":"5671:6:75"}],"functionName":{"name":"add","nativeSrc":"5656:3:75","nodeType":"YulIdentifier","src":"5656:3:75"},"nativeSrc":"5656:22:75","nodeType":"YulFunctionCall","src":"5656:22:75"},{"name":"dataEnd","nativeSrc":"5680:7:75","nodeType":"YulIdentifier","src":"5680:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5639:16:75","nodeType":"YulIdentifier","src":"5639:16:75"},"nativeSrc":"5639:49:75","nodeType":"YulFunctionCall","src":"5639:49:75"},"variableNames":[{"name":"value1","nativeSrc":"5629:6:75","nodeType":"YulIdentifier","src":"5629:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"5239:455:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5293:9:75","nodeType":"YulTypedName","src":"5293:9:75","type":""},{"name":"dataEnd","nativeSrc":"5304:7:75","nodeType":"YulTypedName","src":"5304:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5316:6:75","nodeType":"YulTypedName","src":"5316:6:75","type":""},{"name":"value1","nativeSrc":"5324:6:75","nodeType":"YulTypedName","src":"5324:6:75","type":""}],"src":"5239:455:75"},{"body":{"nativeSrc":"5816:207:75","nodeType":"YulBlock","src":"5816:207:75","statements":[{"body":{"nativeSrc":"5862:16:75","nodeType":"YulBlock","src":"5862:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5871:1:75","nodeType":"YulLiteral","src":"5871:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5874:1:75","nodeType":"YulLiteral","src":"5874:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5864:6:75","nodeType":"YulIdentifier","src":"5864:6:75"},"nativeSrc":"5864:12:75","nodeType":"YulFunctionCall","src":"5864:12:75"},"nativeSrc":"5864:12:75","nodeType":"YulExpressionStatement","src":"5864:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5837:7:75","nodeType":"YulIdentifier","src":"5837:7:75"},{"name":"headStart","nativeSrc":"5846:9:75","nodeType":"YulIdentifier","src":"5846:9:75"}],"functionName":{"name":"sub","nativeSrc":"5833:3:75","nodeType":"YulIdentifier","src":"5833:3:75"},"nativeSrc":"5833:23:75","nodeType":"YulFunctionCall","src":"5833:23:75"},{"kind":"number","nativeSrc":"5858:2:75","nodeType":"YulLiteral","src":"5858:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5829:3:75","nodeType":"YulIdentifier","src":"5829:3:75"},"nativeSrc":"5829:32:75","nodeType":"YulFunctionCall","src":"5829:32:75"},"nativeSrc":"5826:52:75","nodeType":"YulIf","src":"5826:52:75"},{"nativeSrc":"5887:14:75","nodeType":"YulVariableDeclaration","src":"5887:14:75","value":{"kind":"number","nativeSrc":"5900:1:75","nodeType":"YulLiteral","src":"5900:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5891:5:75","nodeType":"YulTypedName","src":"5891:5:75","type":""}]},{"nativeSrc":"5910:32:75","nodeType":"YulAssignment","src":"5910:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5932:9:75","nodeType":"YulIdentifier","src":"5932:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5919:12:75","nodeType":"YulIdentifier","src":"5919:12:75"},"nativeSrc":"5919:23:75","nodeType":"YulFunctionCall","src":"5919:23:75"},"variableNames":[{"name":"value","nativeSrc":"5910:5:75","nodeType":"YulIdentifier","src":"5910:5:75"}]},{"nativeSrc":"5951:15:75","nodeType":"YulAssignment","src":"5951:15:75","value":{"name":"value","nativeSrc":"5961:5:75","nodeType":"YulIdentifier","src":"5961:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5951:6:75","nodeType":"YulIdentifier","src":"5951:6:75"}]},{"nativeSrc":"5975:42:75","nodeType":"YulAssignment","src":"5975:42:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6002:9:75","nodeType":"YulIdentifier","src":"6002:9:75"},{"kind":"number","nativeSrc":"6013:2:75","nodeType":"YulLiteral","src":"6013:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5998:3:75","nodeType":"YulIdentifier","src":"5998:3:75"},"nativeSrc":"5998:18:75","nodeType":"YulFunctionCall","src":"5998:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"5985:12:75","nodeType":"YulIdentifier","src":"5985:12:75"},"nativeSrc":"5985:32:75","nodeType":"YulFunctionCall","src":"5985:32:75"},"variableNames":[{"name":"value1","nativeSrc":"5975:6:75","nodeType":"YulIdentifier","src":"5975:6:75"}]}]},"name":"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17996t_int256","nativeSrc":"5699:324:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5774:9:75","nodeType":"YulTypedName","src":"5774:9:75","type":""},{"name":"dataEnd","nativeSrc":"5785:7:75","nodeType":"YulTypedName","src":"5785:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5797:6:75","nodeType":"YulTypedName","src":"5797:6:75","type":""},{"name":"value1","nativeSrc":"5805:6:75","nodeType":"YulTypedName","src":"5805:6:75","type":""}],"src":"5699:324:75"},{"body":{"nativeSrc":"6127:76:75","nodeType":"YulBlock","src":"6127:76:75","statements":[{"nativeSrc":"6137:26:75","nodeType":"YulAssignment","src":"6137:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6149:9:75","nodeType":"YulIdentifier","src":"6149:9:75"},{"kind":"number","nativeSrc":"6160:2:75","nodeType":"YulLiteral","src":"6160:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6145:3:75","nodeType":"YulIdentifier","src":"6145:3:75"},"nativeSrc":"6145:18:75","nodeType":"YulFunctionCall","src":"6145:18:75"},"variableNames":[{"name":"tail","nativeSrc":"6137:4:75","nodeType":"YulIdentifier","src":"6137:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6179:9:75","nodeType":"YulIdentifier","src":"6179:9:75"},{"name":"value0","nativeSrc":"6190:6:75","nodeType":"YulIdentifier","src":"6190:6:75"}],"functionName":{"name":"mstore","nativeSrc":"6172:6:75","nodeType":"YulIdentifier","src":"6172:6:75"},"nativeSrc":"6172:25:75","nodeType":"YulFunctionCall","src":"6172:25:75"},"nativeSrc":"6172:25:75","nodeType":"YulExpressionStatement","src":"6172:25:75"}]},"name":"abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed","nativeSrc":"6028:175:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6096:9:75","nodeType":"YulTypedName","src":"6096:9:75","type":""},{"name":"value0","nativeSrc":"6107:6:75","nodeType":"YulTypedName","src":"6107:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6118:4:75","nodeType":"YulTypedName","src":"6118:4:75","type":""}],"src":"6028:175:75"},{"body":{"nativeSrc":"6353:337:75","nodeType":"YulBlock","src":"6353:337:75","statements":[{"nativeSrc":"6363:28:75","nodeType":"YulAssignment","src":"6363:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6375:9:75","nodeType":"YulIdentifier","src":"6375:9:75"},{"kind":"number","nativeSrc":"6386:4:75","nodeType":"YulLiteral","src":"6386:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"6371:3:75","nodeType":"YulIdentifier","src":"6371:3:75"},"nativeSrc":"6371:20:75","nodeType":"YulFunctionCall","src":"6371:20:75"},"variableNames":[{"name":"tail","nativeSrc":"6363:4:75","nodeType":"YulIdentifier","src":"6363:4:75"}]},{"nativeSrc":"6400:20:75","nodeType":"YulVariableDeclaration","src":"6400:20:75","value":{"name":"headStart","nativeSrc":"6411:9:75","nodeType":"YulIdentifier","src":"6411:9:75"},"variables":[{"name":"pos","nativeSrc":"6404:3:75","nodeType":"YulTypedName","src":"6404:3:75","type":""}]},{"nativeSrc":"6429:16:75","nodeType":"YulAssignment","src":"6429:16:75","value":{"name":"headStart","nativeSrc":"6436:9:75","nodeType":"YulIdentifier","src":"6436:9:75"},"variableNames":[{"name":"pos","nativeSrc":"6429:3:75","nodeType":"YulIdentifier","src":"6429:3:75"}]},{"nativeSrc":"6454:20:75","nodeType":"YulVariableDeclaration","src":"6454:20:75","value":{"name":"value0","nativeSrc":"6468:6:75","nodeType":"YulIdentifier","src":"6468:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"6458:6:75","nodeType":"YulTypedName","src":"6458:6:75","type":""}]},{"nativeSrc":"6483:10:75","nodeType":"YulVariableDeclaration","src":"6483:10:75","value":{"kind":"number","nativeSrc":"6492:1:75","nodeType":"YulLiteral","src":"6492:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"6487:1:75","nodeType":"YulTypedName","src":"6487:1:75","type":""}]},{"body":{"nativeSrc":"6549:135:75","nodeType":"YulBlock","src":"6549:135:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6570:3:75","nodeType":"YulIdentifier","src":"6570:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"6585:6:75","nodeType":"YulIdentifier","src":"6585:6:75"}],"functionName":{"name":"mload","nativeSrc":"6579:5:75","nodeType":"YulIdentifier","src":"6579:5:75"},"nativeSrc":"6579:13:75","nodeType":"YulFunctionCall","src":"6579:13:75"},{"kind":"number","nativeSrc":"6594:4:75","nodeType":"YulLiteral","src":"6594:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6575:3:75","nodeType":"YulIdentifier","src":"6575:3:75"},"nativeSrc":"6575:24:75","nodeType":"YulFunctionCall","src":"6575:24:75"}],"functionName":{"name":"mstore","nativeSrc":"6563:6:75","nodeType":"YulIdentifier","src":"6563:6:75"},"nativeSrc":"6563:37:75","nodeType":"YulFunctionCall","src":"6563:37:75"},"nativeSrc":"6563:37:75","nodeType":"YulExpressionStatement","src":"6563:37:75"},{"nativeSrc":"6613:21:75","nodeType":"YulAssignment","src":"6613:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"6624:3:75","nodeType":"YulIdentifier","src":"6624:3:75"},{"kind":"number","nativeSrc":"6629:4:75","nodeType":"YulLiteral","src":"6629:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6620:3:75","nodeType":"YulIdentifier","src":"6620:3:75"},"nativeSrc":"6620:14:75","nodeType":"YulFunctionCall","src":"6620:14:75"},"variableNames":[{"name":"pos","nativeSrc":"6613:3:75","nodeType":"YulIdentifier","src":"6613:3:75"}]},{"nativeSrc":"6647:27:75","nodeType":"YulAssignment","src":"6647:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"6661:6:75","nodeType":"YulIdentifier","src":"6661:6:75"},{"kind":"number","nativeSrc":"6669:4:75","nodeType":"YulLiteral","src":"6669:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6657:3:75","nodeType":"YulIdentifier","src":"6657:3:75"},"nativeSrc":"6657:17:75","nodeType":"YulFunctionCall","src":"6657:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"6647:6:75","nodeType":"YulIdentifier","src":"6647:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"6513:1:75","nodeType":"YulIdentifier","src":"6513:1:75"},{"kind":"number","nativeSrc":"6516:4:75","nodeType":"YulLiteral","src":"6516:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"6510:2:75","nodeType":"YulIdentifier","src":"6510:2:75"},"nativeSrc":"6510:11:75","nodeType":"YulFunctionCall","src":"6510:11:75"},"nativeSrc":"6502:182:75","nodeType":"YulForLoop","post":{"nativeSrc":"6522:18:75","nodeType":"YulBlock","src":"6522:18:75","statements":[{"nativeSrc":"6524:14:75","nodeType":"YulAssignment","src":"6524:14:75","value":{"arguments":[{"name":"i","nativeSrc":"6533:1:75","nodeType":"YulIdentifier","src":"6533:1:75"},{"kind":"number","nativeSrc":"6536:1:75","nodeType":"YulLiteral","src":"6536:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6529:3:75","nodeType":"YulIdentifier","src":"6529:3:75"},"nativeSrc":"6529:9:75","nodeType":"YulFunctionCall","src":"6529:9:75"},"variableNames":[{"name":"i","nativeSrc":"6524:1:75","nodeType":"YulIdentifier","src":"6524:1:75"}]}]},"pre":{"nativeSrc":"6506:3:75","nodeType":"YulBlock","src":"6506:3:75","statements":[]},"src":"6502:182:75"}]},"name":"abi_encode_tuple_t_array$_t_uint8_$32_memory_ptr__to_t_array$_t_uint8_$32_memory_ptr__fromStack_reversed","nativeSrc":"6208:482:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6322:9:75","nodeType":"YulTypedName","src":"6322:9:75","type":""},{"name":"value0","nativeSrc":"6333:6:75","nodeType":"YulTypedName","src":"6333:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6344:4:75","nodeType":"YulTypedName","src":"6344:4:75","type":""}],"src":"6208:482:75"},{"body":{"nativeSrc":"6796:76:75","nodeType":"YulBlock","src":"6796:76:75","statements":[{"nativeSrc":"6806:26:75","nodeType":"YulAssignment","src":"6806:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6818:9:75","nodeType":"YulIdentifier","src":"6818:9:75"},{"kind":"number","nativeSrc":"6829:2:75","nodeType":"YulLiteral","src":"6829:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6814:3:75","nodeType":"YulIdentifier","src":"6814:3:75"},"nativeSrc":"6814:18:75","nodeType":"YulFunctionCall","src":"6814:18:75"},"variableNames":[{"name":"tail","nativeSrc":"6806:4:75","nodeType":"YulIdentifier","src":"6806:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6848:9:75","nodeType":"YulIdentifier","src":"6848:9:75"},{"name":"value0","nativeSrc":"6859:6:75","nodeType":"YulIdentifier","src":"6859:6:75"}],"functionName":{"name":"mstore","nativeSrc":"6841:6:75","nodeType":"YulIdentifier","src":"6841:6:75"},"nativeSrc":"6841:25:75","nodeType":"YulFunctionCall","src":"6841:25:75"},"nativeSrc":"6841:25:75","nodeType":"YulExpressionStatement","src":"6841:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"6695:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6765:9:75","nodeType":"YulTypedName","src":"6765:9:75","type":""},{"name":"value0","nativeSrc":"6776:6:75","nodeType":"YulTypedName","src":"6776:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6787:4:75","nodeType":"YulTypedName","src":"6787:4:75","type":""}],"src":"6695:177:75"},{"body":{"nativeSrc":"6964:280:75","nodeType":"YulBlock","src":"6964:280:75","statements":[{"body":{"nativeSrc":"7010:16:75","nodeType":"YulBlock","src":"7010:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7019:1:75","nodeType":"YulLiteral","src":"7019:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7022:1:75","nodeType":"YulLiteral","src":"7022:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7012:6:75","nodeType":"YulIdentifier","src":"7012:6:75"},"nativeSrc":"7012:12:75","nodeType":"YulFunctionCall","src":"7012:12:75"},"nativeSrc":"7012:12:75","nodeType":"YulExpressionStatement","src":"7012:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6985:7:75","nodeType":"YulIdentifier","src":"6985:7:75"},{"name":"headStart","nativeSrc":"6994:9:75","nodeType":"YulIdentifier","src":"6994:9:75"}],"functionName":{"name":"sub","nativeSrc":"6981:3:75","nodeType":"YulIdentifier","src":"6981:3:75"},"nativeSrc":"6981:23:75","nodeType":"YulFunctionCall","src":"6981:23:75"},{"kind":"number","nativeSrc":"7006:2:75","nodeType":"YulLiteral","src":"7006:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6977:3:75","nodeType":"YulIdentifier","src":"6977:3:75"},"nativeSrc":"6977:32:75","nodeType":"YulFunctionCall","src":"6977:32:75"},"nativeSrc":"6974:52:75","nodeType":"YulIf","src":"6974:52:75"},{"nativeSrc":"7035:14:75","nodeType":"YulVariableDeclaration","src":"7035:14:75","value":{"kind":"number","nativeSrc":"7048:1:75","nodeType":"YulLiteral","src":"7048:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7039:5:75","nodeType":"YulTypedName","src":"7039:5:75","type":""}]},{"nativeSrc":"7058:32:75","nodeType":"YulAssignment","src":"7058:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7080:9:75","nodeType":"YulIdentifier","src":"7080:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7067:12:75","nodeType":"YulIdentifier","src":"7067:12:75"},"nativeSrc":"7067:23:75","nodeType":"YulFunctionCall","src":"7067:23:75"},"variableNames":[{"name":"value","nativeSrc":"7058:5:75","nodeType":"YulIdentifier","src":"7058:5:75"}]},{"nativeSrc":"7099:15:75","nodeType":"YulAssignment","src":"7099:15:75","value":{"name":"value","nativeSrc":"7109:5:75","nodeType":"YulIdentifier","src":"7109:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7099:6:75","nodeType":"YulIdentifier","src":"7099:6:75"}]},{"nativeSrc":"7123:47:75","nodeType":"YulVariableDeclaration","src":"7123:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7155:9:75","nodeType":"YulIdentifier","src":"7155:9:75"},{"kind":"number","nativeSrc":"7166:2:75","nodeType":"YulLiteral","src":"7166:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7151:3:75","nodeType":"YulIdentifier","src":"7151:3:75"},"nativeSrc":"7151:18:75","nodeType":"YulFunctionCall","src":"7151:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7138:12:75","nodeType":"YulIdentifier","src":"7138:12:75"},"nativeSrc":"7138:32:75","nodeType":"YulFunctionCall","src":"7138:32:75"},"variables":[{"name":"value_1","nativeSrc":"7127:7:75","nodeType":"YulTypedName","src":"7127:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7204:7:75","nodeType":"YulIdentifier","src":"7204:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7179:24:75","nodeType":"YulIdentifier","src":"7179:24:75"},"nativeSrc":"7179:33:75","nodeType":"YulFunctionCall","src":"7179:33:75"},"nativeSrc":"7179:33:75","nodeType":"YulExpressionStatement","src":"7179:33:75"},{"nativeSrc":"7221:17:75","nodeType":"YulAssignment","src":"7221:17:75","value":{"name":"value_1","nativeSrc":"7231:7:75","nodeType":"YulIdentifier","src":"7231:7:75"},"variableNames":[{"name":"value1","nativeSrc":"7221:6:75","nodeType":"YulIdentifier","src":"7221:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"6877:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6922:9:75","nodeType":"YulTypedName","src":"6922:9:75","type":""},{"name":"dataEnd","nativeSrc":"6933:7:75","nodeType":"YulTypedName","src":"6933:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6945:6:75","nodeType":"YulTypedName","src":"6945:6:75","type":""},{"name":"value1","nativeSrc":"6953:6:75","nodeType":"YulTypedName","src":"6953:6:75","type":""}],"src":"6877:367:75"},{"body":{"nativeSrc":"7291:76:75","nodeType":"YulBlock","src":"7291:76:75","statements":[{"body":{"nativeSrc":"7345:16:75","nodeType":"YulBlock","src":"7345:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7354:1:75","nodeType":"YulLiteral","src":"7354:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7357:1:75","nodeType":"YulLiteral","src":"7357:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7347:6:75","nodeType":"YulIdentifier","src":"7347:6:75"},"nativeSrc":"7347:12:75","nodeType":"YulFunctionCall","src":"7347:12:75"},"nativeSrc":"7347:12:75","nodeType":"YulExpressionStatement","src":"7347:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7314:5:75","nodeType":"YulIdentifier","src":"7314:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7335:5:75","nodeType":"YulIdentifier","src":"7335:5:75"}],"functionName":{"name":"iszero","nativeSrc":"7328:6:75","nodeType":"YulIdentifier","src":"7328:6:75"},"nativeSrc":"7328:13:75","nodeType":"YulFunctionCall","src":"7328:13:75"}],"functionName":{"name":"iszero","nativeSrc":"7321:6:75","nodeType":"YulIdentifier","src":"7321:6:75"},"nativeSrc":"7321:21:75","nodeType":"YulFunctionCall","src":"7321:21:75"}],"functionName":{"name":"eq","nativeSrc":"7311:2:75","nodeType":"YulIdentifier","src":"7311:2:75"},"nativeSrc":"7311:32:75","nodeType":"YulFunctionCall","src":"7311:32:75"}],"functionName":{"name":"iszero","nativeSrc":"7304:6:75","nodeType":"YulIdentifier","src":"7304:6:75"},"nativeSrc":"7304:40:75","nodeType":"YulFunctionCall","src":"7304:40:75"},"nativeSrc":"7301:60:75","nodeType":"YulIf","src":"7301:60:75"}]},"name":"validator_revert_bool","nativeSrc":"7249:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7280:5:75","nodeType":"YulTypedName","src":"7280:5:75","type":""}],"src":"7249:118:75"},{"body":{"nativeSrc":"7522:536:75","nodeType":"YulBlock","src":"7522:536:75","statements":[{"body":{"nativeSrc":"7569:16:75","nodeType":"YulBlock","src":"7569:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7578:1:75","nodeType":"YulLiteral","src":"7578:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7581:1:75","nodeType":"YulLiteral","src":"7581:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7571:6:75","nodeType":"YulIdentifier","src":"7571:6:75"},"nativeSrc":"7571:12:75","nodeType":"YulFunctionCall","src":"7571:12:75"},"nativeSrc":"7571:12:75","nodeType":"YulExpressionStatement","src":"7571:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7543:7:75","nodeType":"YulIdentifier","src":"7543:7:75"},{"name":"headStart","nativeSrc":"7552:9:75","nodeType":"YulIdentifier","src":"7552:9:75"}],"functionName":{"name":"sub","nativeSrc":"7539:3:75","nodeType":"YulIdentifier","src":"7539:3:75"},"nativeSrc":"7539:23:75","nodeType":"YulFunctionCall","src":"7539:23:75"},{"kind":"number","nativeSrc":"7564:3:75","nodeType":"YulLiteral","src":"7564:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"7535:3:75","nodeType":"YulIdentifier","src":"7535:3:75"},"nativeSrc":"7535:33:75","nodeType":"YulFunctionCall","src":"7535:33:75"},"nativeSrc":"7532:53:75","nodeType":"YulIf","src":"7532:53:75"},{"nativeSrc":"7594:37:75","nodeType":"YulAssignment","src":"7594:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7621:9:75","nodeType":"YulIdentifier","src":"7621:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"7604:16:75","nodeType":"YulIdentifier","src":"7604:16:75"},"nativeSrc":"7604:27:75","nodeType":"YulFunctionCall","src":"7604:27:75"},"variableNames":[{"name":"value0","nativeSrc":"7594:6:75","nodeType":"YulIdentifier","src":"7594:6:75"}]},{"nativeSrc":"7640:45:75","nodeType":"YulVariableDeclaration","src":"7640:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7670:9:75","nodeType":"YulIdentifier","src":"7670:9:75"},{"kind":"number","nativeSrc":"7681:2:75","nodeType":"YulLiteral","src":"7681:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7666:3:75","nodeType":"YulIdentifier","src":"7666:3:75"},"nativeSrc":"7666:18:75","nodeType":"YulFunctionCall","src":"7666:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7653:12:75","nodeType":"YulIdentifier","src":"7653:12:75"},"nativeSrc":"7653:32:75","nodeType":"YulFunctionCall","src":"7653:32:75"},"variables":[{"name":"value","nativeSrc":"7644:5:75","nodeType":"YulTypedName","src":"7644:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7719:5:75","nodeType":"YulIdentifier","src":"7719:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7694:24:75","nodeType":"YulIdentifier","src":"7694:24:75"},"nativeSrc":"7694:31:75","nodeType":"YulFunctionCall","src":"7694:31:75"},"nativeSrc":"7694:31:75","nodeType":"YulExpressionStatement","src":"7694:31:75"},{"nativeSrc":"7734:15:75","nodeType":"YulAssignment","src":"7734:15:75","value":{"name":"value","nativeSrc":"7744:5:75","nodeType":"YulIdentifier","src":"7744:5:75"},"variableNames":[{"name":"value1","nativeSrc":"7734:6:75","nodeType":"YulIdentifier","src":"7734:6:75"}]},{"nativeSrc":"7758:46:75","nodeType":"YulVariableDeclaration","src":"7758:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7789:9:75","nodeType":"YulIdentifier","src":"7789:9:75"},{"kind":"number","nativeSrc":"7800:2:75","nodeType":"YulLiteral","src":"7800:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7785:3:75","nodeType":"YulIdentifier","src":"7785:3:75"},"nativeSrc":"7785:18:75","nodeType":"YulFunctionCall","src":"7785:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7772:12:75","nodeType":"YulIdentifier","src":"7772:12:75"},"nativeSrc":"7772:32:75","nodeType":"YulFunctionCall","src":"7772:32:75"},"variables":[{"name":"offset","nativeSrc":"7762:6:75","nodeType":"YulTypedName","src":"7762:6:75","type":""}]},{"body":{"nativeSrc":"7847:16:75","nodeType":"YulBlock","src":"7847:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7856:1:75","nodeType":"YulLiteral","src":"7856:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7859:1:75","nodeType":"YulLiteral","src":"7859:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7849:6:75","nodeType":"YulIdentifier","src":"7849:6:75"},"nativeSrc":"7849:12:75","nodeType":"YulFunctionCall","src":"7849:12:75"},"nativeSrc":"7849:12:75","nodeType":"YulExpressionStatement","src":"7849:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7819:6:75","nodeType":"YulIdentifier","src":"7819:6:75"},{"kind":"number","nativeSrc":"7827:18:75","nodeType":"YulLiteral","src":"7827:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7816:2:75","nodeType":"YulIdentifier","src":"7816:2:75"},"nativeSrc":"7816:30:75","nodeType":"YulFunctionCall","src":"7816:30:75"},"nativeSrc":"7813:50:75","nodeType":"YulIf","src":"7813:50:75"},{"nativeSrc":"7872:59:75","nodeType":"YulAssignment","src":"7872:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7903:9:75","nodeType":"YulIdentifier","src":"7903:9:75"},{"name":"offset","nativeSrc":"7914:6:75","nodeType":"YulIdentifier","src":"7914:6:75"}],"functionName":{"name":"add","nativeSrc":"7899:3:75","nodeType":"YulIdentifier","src":"7899:3:75"},"nativeSrc":"7899:22:75","nodeType":"YulFunctionCall","src":"7899:22:75"},{"name":"dataEnd","nativeSrc":"7923:7:75","nodeType":"YulIdentifier","src":"7923:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"7882:16:75","nodeType":"YulIdentifier","src":"7882:16:75"},"nativeSrc":"7882:49:75","nodeType":"YulFunctionCall","src":"7882:49:75"},"variableNames":[{"name":"value2","nativeSrc":"7872:6:75","nodeType":"YulIdentifier","src":"7872:6:75"}]},{"nativeSrc":"7940:47:75","nodeType":"YulVariableDeclaration","src":"7940:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7972:9:75","nodeType":"YulIdentifier","src":"7972:9:75"},{"kind":"number","nativeSrc":"7983:2:75","nodeType":"YulLiteral","src":"7983:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7968:3:75","nodeType":"YulIdentifier","src":"7968:3:75"},"nativeSrc":"7968:18:75","nodeType":"YulFunctionCall","src":"7968:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7955:12:75","nodeType":"YulIdentifier","src":"7955:12:75"},"nativeSrc":"7955:32:75","nodeType":"YulFunctionCall","src":"7955:32:75"},"variables":[{"name":"value_1","nativeSrc":"7944:7:75","nodeType":"YulTypedName","src":"7944:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"8018:7:75","nodeType":"YulIdentifier","src":"8018:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7996:21:75","nodeType":"YulIdentifier","src":"7996:21:75"},"nativeSrc":"7996:30:75","nodeType":"YulFunctionCall","src":"7996:30:75"},"nativeSrc":"7996:30:75","nodeType":"YulExpressionStatement","src":"7996:30:75"},{"nativeSrc":"8035:17:75","nodeType":"YulAssignment","src":"8035:17:75","value":{"name":"value_1","nativeSrc":"8045:7:75","nodeType":"YulIdentifier","src":"8045:7:75"},"variableNames":[{"name":"value3","nativeSrc":"8035:6:75","nodeType":"YulIdentifier","src":"8035:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool","nativeSrc":"7372:686:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7464:9:75","nodeType":"YulTypedName","src":"7464:9:75","type":""},{"name":"dataEnd","nativeSrc":"7475:7:75","nodeType":"YulTypedName","src":"7475:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7487:6:75","nodeType":"YulTypedName","src":"7487:6:75","type":""},{"name":"value1","nativeSrc":"7495:6:75","nodeType":"YulTypedName","src":"7495:6:75","type":""},{"name":"value2","nativeSrc":"7503:6:75","nodeType":"YulTypedName","src":"7503:6:75","type":""},{"name":"value3","nativeSrc":"7511:6:75","nodeType":"YulTypedName","src":"7511:6:75","type":""}],"src":"7372:686:75"},{"body":{"nativeSrc":"8184:359:75","nodeType":"YulBlock","src":"8184:359:75","statements":[{"body":{"nativeSrc":"8230:16:75","nodeType":"YulBlock","src":"8230:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8239:1:75","nodeType":"YulLiteral","src":"8239:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8242:1:75","nodeType":"YulLiteral","src":"8242:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8232:6:75","nodeType":"YulIdentifier","src":"8232:6:75"},"nativeSrc":"8232:12:75","nodeType":"YulFunctionCall","src":"8232:12:75"},"nativeSrc":"8232:12:75","nodeType":"YulExpressionStatement","src":"8232:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8205:7:75","nodeType":"YulIdentifier","src":"8205:7:75"},{"name":"headStart","nativeSrc":"8214:9:75","nodeType":"YulIdentifier","src":"8214:9:75"}],"functionName":{"name":"sub","nativeSrc":"8201:3:75","nodeType":"YulIdentifier","src":"8201:3:75"},"nativeSrc":"8201:23:75","nodeType":"YulFunctionCall","src":"8201:23:75"},{"kind":"number","nativeSrc":"8226:2:75","nodeType":"YulLiteral","src":"8226:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8197:3:75","nodeType":"YulIdentifier","src":"8197:3:75"},"nativeSrc":"8197:32:75","nodeType":"YulFunctionCall","src":"8197:32:75"},"nativeSrc":"8194:52:75","nodeType":"YulIf","src":"8194:52:75"},{"nativeSrc":"8255:36:75","nodeType":"YulVariableDeclaration","src":"8255:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8281:9:75","nodeType":"YulIdentifier","src":"8281:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"8268:12:75","nodeType":"YulIdentifier","src":"8268:12:75"},"nativeSrc":"8268:23:75","nodeType":"YulFunctionCall","src":"8268:23:75"},"variables":[{"name":"value","nativeSrc":"8259:5:75","nodeType":"YulTypedName","src":"8259:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8325:5:75","nodeType":"YulIdentifier","src":"8325:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8300:24:75","nodeType":"YulIdentifier","src":"8300:24:75"},"nativeSrc":"8300:31:75","nodeType":"YulFunctionCall","src":"8300:31:75"},"nativeSrc":"8300:31:75","nodeType":"YulExpressionStatement","src":"8300:31:75"},{"nativeSrc":"8340:15:75","nodeType":"YulAssignment","src":"8340:15:75","value":{"name":"value","nativeSrc":"8350:5:75","nodeType":"YulIdentifier","src":"8350:5:75"},"variableNames":[{"name":"value0","nativeSrc":"8340:6:75","nodeType":"YulIdentifier","src":"8340:6:75"}]},{"nativeSrc":"8364:46:75","nodeType":"YulVariableDeclaration","src":"8364:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8395:9:75","nodeType":"YulIdentifier","src":"8395:9:75"},{"kind":"number","nativeSrc":"8406:2:75","nodeType":"YulLiteral","src":"8406:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8391:3:75","nodeType":"YulIdentifier","src":"8391:3:75"},"nativeSrc":"8391:18:75","nodeType":"YulFunctionCall","src":"8391:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8378:12:75","nodeType":"YulIdentifier","src":"8378:12:75"},"nativeSrc":"8378:32:75","nodeType":"YulFunctionCall","src":"8378:32:75"},"variables":[{"name":"offset","nativeSrc":"8368:6:75","nodeType":"YulTypedName","src":"8368:6:75","type":""}]},{"body":{"nativeSrc":"8453:16:75","nodeType":"YulBlock","src":"8453:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8462:1:75","nodeType":"YulLiteral","src":"8462:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8465:1:75","nodeType":"YulLiteral","src":"8465:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8455:6:75","nodeType":"YulIdentifier","src":"8455:6:75"},"nativeSrc":"8455:12:75","nodeType":"YulFunctionCall","src":"8455:12:75"},"nativeSrc":"8455:12:75","nodeType":"YulExpressionStatement","src":"8455:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8425:6:75","nodeType":"YulIdentifier","src":"8425:6:75"},{"kind":"number","nativeSrc":"8433:18:75","nodeType":"YulLiteral","src":"8433:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8422:2:75","nodeType":"YulIdentifier","src":"8422:2:75"},"nativeSrc":"8422:30:75","nodeType":"YulFunctionCall","src":"8422:30:75"},"nativeSrc":"8419:50:75","nodeType":"YulIf","src":"8419:50:75"},{"nativeSrc":"8478:59:75","nodeType":"YulAssignment","src":"8478:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8509:9:75","nodeType":"YulIdentifier","src":"8509:9:75"},{"name":"offset","nativeSrc":"8520:6:75","nodeType":"YulIdentifier","src":"8520:6:75"}],"functionName":{"name":"add","nativeSrc":"8505:3:75","nodeType":"YulIdentifier","src":"8505:3:75"},"nativeSrc":"8505:22:75","nodeType":"YulFunctionCall","src":"8505:22:75"},{"name":"dataEnd","nativeSrc":"8529:7:75","nodeType":"YulIdentifier","src":"8529:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"8488:16:75","nodeType":"YulIdentifier","src":"8488:16:75"},"nativeSrc":"8488:49:75","nodeType":"YulFunctionCall","src":"8488:49:75"},"variableNames":[{"name":"value1","nativeSrc":"8478:6:75","nodeType":"YulIdentifier","src":"8478:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr","nativeSrc":"8063:480:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8142:9:75","nodeType":"YulTypedName","src":"8142:9:75","type":""},{"name":"dataEnd","nativeSrc":"8153:7:75","nodeType":"YulTypedName","src":"8153:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8165:6:75","nodeType":"YulTypedName","src":"8165:6:75","type":""},{"name":"value1","nativeSrc":"8173:6:75","nodeType":"YulTypedName","src":"8173:6:75","type":""}],"src":"8063:480:75"},{"body":{"nativeSrc":"8631:169:75","nodeType":"YulBlock","src":"8631:169:75","statements":[{"body":{"nativeSrc":"8677:16:75","nodeType":"YulBlock","src":"8677:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8686:1:75","nodeType":"YulLiteral","src":"8686:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8689:1:75","nodeType":"YulLiteral","src":"8689:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8679:6:75","nodeType":"YulIdentifier","src":"8679:6:75"},"nativeSrc":"8679:12:75","nodeType":"YulFunctionCall","src":"8679:12:75"},"nativeSrc":"8679:12:75","nodeType":"YulExpressionStatement","src":"8679:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8652:7:75","nodeType":"YulIdentifier","src":"8652:7:75"},{"name":"headStart","nativeSrc":"8661:9:75","nodeType":"YulIdentifier","src":"8661:9:75"}],"functionName":{"name":"sub","nativeSrc":"8648:3:75","nodeType":"YulIdentifier","src":"8648:3:75"},"nativeSrc":"8648:23:75","nodeType":"YulFunctionCall","src":"8648:23:75"},{"kind":"number","nativeSrc":"8673:2:75","nodeType":"YulLiteral","src":"8673:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8644:3:75","nodeType":"YulIdentifier","src":"8644:3:75"},"nativeSrc":"8644:32:75","nodeType":"YulFunctionCall","src":"8644:32:75"},"nativeSrc":"8641:52:75","nodeType":"YulIf","src":"8641:52:75"},{"nativeSrc":"8702:37:75","nodeType":"YulAssignment","src":"8702:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8729:9:75","nodeType":"YulIdentifier","src":"8729:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8712:16:75","nodeType":"YulIdentifier","src":"8712:16:75"},"nativeSrc":"8712:27:75","nodeType":"YulFunctionCall","src":"8712:27:75"},"variableNames":[{"name":"value0","nativeSrc":"8702:6:75","nodeType":"YulIdentifier","src":"8702:6:75"}]},{"nativeSrc":"8748:46:75","nodeType":"YulAssignment","src":"8748:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8779:9:75","nodeType":"YulIdentifier","src":"8779:9:75"},{"kind":"number","nativeSrc":"8790:2:75","nodeType":"YulLiteral","src":"8790:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8775:3:75","nodeType":"YulIdentifier","src":"8775:3:75"},"nativeSrc":"8775:18:75","nodeType":"YulFunctionCall","src":"8775:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"8758:16:75","nodeType":"YulIdentifier","src":"8758:16:75"},"nativeSrc":"8758:36:75","nodeType":"YulFunctionCall","src":"8758:36:75"},"variableNames":[{"name":"value1","nativeSrc":"8748:6:75","nodeType":"YulIdentifier","src":"8748:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8","nativeSrc":"8548:252:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8589:9:75","nodeType":"YulTypedName","src":"8589:9:75","type":""},{"name":"dataEnd","nativeSrc":"8600:7:75","nodeType":"YulTypedName","src":"8600:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8612:6:75","nodeType":"YulTypedName","src":"8612:6:75","type":""},{"name":"value1","nativeSrc":"8620:6:75","nodeType":"YulTypedName","src":"8620:6:75","type":""}],"src":"8548:252:75"},{"body":{"nativeSrc":"8904:103:75","nodeType":"YulBlock","src":"8904:103:75","statements":[{"nativeSrc":"8914:26:75","nodeType":"YulAssignment","src":"8914:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8926:9:75","nodeType":"YulIdentifier","src":"8926:9:75"},{"kind":"number","nativeSrc":"8937:2:75","nodeType":"YulLiteral","src":"8937:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8922:3:75","nodeType":"YulIdentifier","src":"8922:3:75"},"nativeSrc":"8922:18:75","nodeType":"YulFunctionCall","src":"8922:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8914:4:75","nodeType":"YulIdentifier","src":"8914:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8956:9:75","nodeType":"YulIdentifier","src":"8956:9:75"},{"arguments":[{"name":"value0","nativeSrc":"8971:6:75","nodeType":"YulIdentifier","src":"8971:6:75"},{"arguments":[{"kind":"number","nativeSrc":"8983:3:75","nodeType":"YulLiteral","src":"8983:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"8988:10:75","nodeType":"YulLiteral","src":"8988:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"8979:3:75","nodeType":"YulIdentifier","src":"8979:3:75"},"nativeSrc":"8979:20:75","nodeType":"YulFunctionCall","src":"8979:20:75"}],"functionName":{"name":"and","nativeSrc":"8967:3:75","nodeType":"YulIdentifier","src":"8967:3:75"},"nativeSrc":"8967:33:75","nodeType":"YulFunctionCall","src":"8967:33:75"}],"functionName":{"name":"mstore","nativeSrc":"8949:6:75","nodeType":"YulIdentifier","src":"8949:6:75"},"nativeSrc":"8949:52:75","nodeType":"YulFunctionCall","src":"8949:52:75"},"nativeSrc":"8949:52:75","nodeType":"YulExpressionStatement","src":"8949:52:75"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"8805:202:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8873:9:75","nodeType":"YulTypedName","src":"8873:9:75","type":""},{"name":"value0","nativeSrc":"8884:6:75","nodeType":"YulTypedName","src":"8884:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8895:4:75","nodeType":"YulTypedName","src":"8895:4:75","type":""}],"src":"8805:202:75"},{"body":{"nativeSrc":"9098:314:75","nodeType":"YulBlock","src":"9098:314:75","statements":[{"body":{"nativeSrc":"9144:16:75","nodeType":"YulBlock","src":"9144:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9153:1:75","nodeType":"YulLiteral","src":"9153:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9156:1:75","nodeType":"YulLiteral","src":"9156:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9146:6:75","nodeType":"YulIdentifier","src":"9146:6:75"},"nativeSrc":"9146:12:75","nodeType":"YulFunctionCall","src":"9146:12:75"},"nativeSrc":"9146:12:75","nodeType":"YulExpressionStatement","src":"9146:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9119:7:75","nodeType":"YulIdentifier","src":"9119:7:75"},{"name":"headStart","nativeSrc":"9128:9:75","nodeType":"YulIdentifier","src":"9128:9:75"}],"functionName":{"name":"sub","nativeSrc":"9115:3:75","nodeType":"YulIdentifier","src":"9115:3:75"},"nativeSrc":"9115:23:75","nodeType":"YulFunctionCall","src":"9115:23:75"},{"kind":"number","nativeSrc":"9140:2:75","nodeType":"YulLiteral","src":"9140:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9111:3:75","nodeType":"YulIdentifier","src":"9111:3:75"},"nativeSrc":"9111:32:75","nodeType":"YulFunctionCall","src":"9111:32:75"},"nativeSrc":"9108:52:75","nodeType":"YulIf","src":"9108:52:75"},{"nativeSrc":"9169:14:75","nodeType":"YulVariableDeclaration","src":"9169:14:75","value":{"kind":"number","nativeSrc":"9182:1:75","nodeType":"YulLiteral","src":"9182:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"9173:5:75","nodeType":"YulTypedName","src":"9173:5:75","type":""}]},{"nativeSrc":"9192:32:75","nodeType":"YulAssignment","src":"9192:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9214:9:75","nodeType":"YulIdentifier","src":"9214:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"9201:12:75","nodeType":"YulIdentifier","src":"9201:12:75"},"nativeSrc":"9201:23:75","nodeType":"YulFunctionCall","src":"9201:23:75"},"variableNames":[{"name":"value","nativeSrc":"9192:5:75","nodeType":"YulIdentifier","src":"9192:5:75"}]},{"nativeSrc":"9233:15:75","nodeType":"YulAssignment","src":"9233:15:75","value":{"name":"value","nativeSrc":"9243:5:75","nodeType":"YulIdentifier","src":"9243:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9233:6:75","nodeType":"YulIdentifier","src":"9233:6:75"}]},{"nativeSrc":"9257:47:75","nodeType":"YulVariableDeclaration","src":"9257:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9289:9:75","nodeType":"YulIdentifier","src":"9289:9:75"},{"kind":"number","nativeSrc":"9300:2:75","nodeType":"YulLiteral","src":"9300:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9285:3:75","nodeType":"YulIdentifier","src":"9285:3:75"},"nativeSrc":"9285:18:75","nodeType":"YulFunctionCall","src":"9285:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9272:12:75","nodeType":"YulIdentifier","src":"9272:12:75"},"nativeSrc":"9272:32:75","nodeType":"YulFunctionCall","src":"9272:32:75"},"variables":[{"name":"value_1","nativeSrc":"9261:7:75","nodeType":"YulTypedName","src":"9261:7:75","type":""}]},{"body":{"nativeSrc":"9364:16:75","nodeType":"YulBlock","src":"9364:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9373:1:75","nodeType":"YulLiteral","src":"9373:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9376:1:75","nodeType":"YulLiteral","src":"9376:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9366:6:75","nodeType":"YulIdentifier","src":"9366:6:75"},"nativeSrc":"9366:12:75","nodeType":"YulFunctionCall","src":"9366:12:75"},"nativeSrc":"9366:12:75","nodeType":"YulExpressionStatement","src":"9366:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9326:7:75","nodeType":"YulIdentifier","src":"9326:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"9339:7:75","nodeType":"YulIdentifier","src":"9339:7:75"},{"kind":"number","nativeSrc":"9348:12:75","nodeType":"YulLiteral","src":"9348:12:75","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"9335:3:75","nodeType":"YulIdentifier","src":"9335:3:75"},"nativeSrc":"9335:26:75","nodeType":"YulFunctionCall","src":"9335:26:75"}],"functionName":{"name":"eq","nativeSrc":"9323:2:75","nodeType":"YulIdentifier","src":"9323:2:75"},"nativeSrc":"9323:39:75","nodeType":"YulFunctionCall","src":"9323:39:75"}],"functionName":{"name":"iszero","nativeSrc":"9316:6:75","nodeType":"YulIdentifier","src":"9316:6:75"},"nativeSrc":"9316:47:75","nodeType":"YulFunctionCall","src":"9316:47:75"},"nativeSrc":"9313:67:75","nodeType":"YulIf","src":"9313:67:75"},{"nativeSrc":"9389:17:75","nodeType":"YulAssignment","src":"9389:17:75","value":{"name":"value_1","nativeSrc":"9399:7:75","nodeType":"YulIdentifier","src":"9399:7:75"},"variableNames":[{"name":"value1","nativeSrc":"9389:6:75","nodeType":"YulIdentifier","src":"9389:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_uint40","nativeSrc":"9012:400:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9056:9:75","nodeType":"YulTypedName","src":"9056:9:75","type":""},{"name":"dataEnd","nativeSrc":"9067:7:75","nodeType":"YulTypedName","src":"9067:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9079:6:75","nodeType":"YulTypedName","src":"9079:6:75","type":""},{"name":"value1","nativeSrc":"9087:6:75","nodeType":"YulTypedName","src":"9087:6:75","type":""}],"src":"9012:400:75"},{"body":{"nativeSrc":"9549:76:75","nodeType":"YulBlock","src":"9549:76:75","statements":[{"nativeSrc":"9559:26:75","nodeType":"YulAssignment","src":"9559:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9571:9:75","nodeType":"YulIdentifier","src":"9571:9:75"},{"kind":"number","nativeSrc":"9582:2:75","nodeType":"YulLiteral","src":"9582:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9567:3:75","nodeType":"YulIdentifier","src":"9567:3:75"},"nativeSrc":"9567:18:75","nodeType":"YulFunctionCall","src":"9567:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9559:4:75","nodeType":"YulIdentifier","src":"9559:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9601:9:75","nodeType":"YulIdentifier","src":"9601:9:75"},{"name":"value0","nativeSrc":"9612:6:75","nodeType":"YulIdentifier","src":"9612:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9594:6:75","nodeType":"YulIdentifier","src":"9594:6:75"},"nativeSrc":"9594:25:75","nodeType":"YulFunctionCall","src":"9594:25:75"},"nativeSrc":"9594:25:75","nodeType":"YulExpressionStatement","src":"9594:25:75"}]},"name":"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17996__to_t_uint256__fromStack_reversed","nativeSrc":"9417:208:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9518:9:75","nodeType":"YulTypedName","src":"9518:9:75","type":""},{"name":"value0","nativeSrc":"9529:6:75","nodeType":"YulTypedName","src":"9529:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9540:4:75","nodeType":"YulTypedName","src":"9540:4:75","type":""}],"src":"9417:208:75"},{"body":{"nativeSrc":"9697:114:75","nodeType":"YulBlock","src":"9697:114:75","statements":[{"body":{"nativeSrc":"9741:22:75","nodeType":"YulBlock","src":"9741:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9743:16:75","nodeType":"YulIdentifier","src":"9743:16:75"},"nativeSrc":"9743:18:75","nodeType":"YulFunctionCall","src":"9743:18:75"},"nativeSrc":"9743:18:75","nodeType":"YulExpressionStatement","src":"9743:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"9713:6:75","nodeType":"YulIdentifier","src":"9713:6:75"},{"kind":"number","nativeSrc":"9721:18:75","nodeType":"YulLiteral","src":"9721:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9710:2:75","nodeType":"YulIdentifier","src":"9710:2:75"},"nativeSrc":"9710:30:75","nodeType":"YulFunctionCall","src":"9710:30:75"},"nativeSrc":"9707:56:75","nodeType":"YulIf","src":"9707:56:75"},{"nativeSrc":"9772:33:75","nodeType":"YulAssignment","src":"9772:33:75","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9788:1:75","nodeType":"YulLiteral","src":"9788:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"9791:6:75","nodeType":"YulIdentifier","src":"9791:6:75"}],"functionName":{"name":"shl","nativeSrc":"9784:3:75","nodeType":"YulIdentifier","src":"9784:3:75"},"nativeSrc":"9784:14:75","nodeType":"YulFunctionCall","src":"9784:14:75"},{"kind":"number","nativeSrc":"9800:4:75","nodeType":"YulLiteral","src":"9800:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9780:3:75","nodeType":"YulIdentifier","src":"9780:3:75"},"nativeSrc":"9780:25:75","nodeType":"YulFunctionCall","src":"9780:25:75"},"variableNames":[{"name":"size","nativeSrc":"9772:4:75","nodeType":"YulIdentifier","src":"9772:4:75"}]}]},"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"9630:181:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"9677:6:75","nodeType":"YulTypedName","src":"9677:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"9688:4:75","nodeType":"YulTypedName","src":"9688:4:75","type":""}],"src":"9630:181:75"},{"body":{"nativeSrc":"9878:607:75","nodeType":"YulBlock","src":"9878:607:75","statements":[{"body":{"nativeSrc":"9927:16:75","nodeType":"YulBlock","src":"9927:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9936:1:75","nodeType":"YulLiteral","src":"9936:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9939:1:75","nodeType":"YulLiteral","src":"9939:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9929:6:75","nodeType":"YulIdentifier","src":"9929:6:75"},"nativeSrc":"9929:12:75","nodeType":"YulFunctionCall","src":"9929:12:75"},"nativeSrc":"9929:12:75","nodeType":"YulExpressionStatement","src":"9929:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"9906:6:75","nodeType":"YulIdentifier","src":"9906:6:75"},{"kind":"number","nativeSrc":"9914:4:75","nodeType":"YulLiteral","src":"9914:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"9902:3:75","nodeType":"YulIdentifier","src":"9902:3:75"},"nativeSrc":"9902:17:75","nodeType":"YulFunctionCall","src":"9902:17:75"},{"name":"end","nativeSrc":"9921:3:75","nodeType":"YulIdentifier","src":"9921:3:75"}],"functionName":{"name":"slt","nativeSrc":"9898:3:75","nodeType":"YulIdentifier","src":"9898:3:75"},"nativeSrc":"9898:27:75","nodeType":"YulFunctionCall","src":"9898:27:75"}],"functionName":{"name":"iszero","nativeSrc":"9891:6:75","nodeType":"YulIdentifier","src":"9891:6:75"},"nativeSrc":"9891:35:75","nodeType":"YulFunctionCall","src":"9891:35:75"},"nativeSrc":"9888:55:75","nodeType":"YulIf","src":"9888:55:75"},{"nativeSrc":"9952:34:75","nodeType":"YulVariableDeclaration","src":"9952:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"9979:6:75","nodeType":"YulIdentifier","src":"9979:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"9966:12:75","nodeType":"YulIdentifier","src":"9966:12:75"},"nativeSrc":"9966:20:75","nodeType":"YulFunctionCall","src":"9966:20:75"},"variables":[{"name":"length","nativeSrc":"9956:6:75","nodeType":"YulTypedName","src":"9956:6:75","type":""}]},{"nativeSrc":"9995:73:75","nodeType":"YulVariableDeclaration","src":"9995:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10060:6:75","nodeType":"YulIdentifier","src":"10060:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"10022:37:75","nodeType":"YulIdentifier","src":"10022:37:75"},"nativeSrc":"10022:45:75","nodeType":"YulFunctionCall","src":"10022:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"10006:15:75","nodeType":"YulIdentifier","src":"10006:15:75"},"nativeSrc":"10006:62:75","nodeType":"YulFunctionCall","src":"10006:62:75"},"variables":[{"name":"dst","nativeSrc":"9999:3:75","nodeType":"YulTypedName","src":"9999:3:75","type":""}]},{"nativeSrc":"10077:18:75","nodeType":"YulVariableDeclaration","src":"10077:18:75","value":{"name":"dst","nativeSrc":"10092:3:75","nodeType":"YulIdentifier","src":"10092:3:75"},"variables":[{"name":"array_1","nativeSrc":"10081:7:75","nodeType":"YulTypedName","src":"10081:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"10111:3:75","nodeType":"YulIdentifier","src":"10111:3:75"},{"name":"length","nativeSrc":"10116:6:75","nodeType":"YulIdentifier","src":"10116:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10104:6:75","nodeType":"YulIdentifier","src":"10104:6:75"},"nativeSrc":"10104:19:75","nodeType":"YulFunctionCall","src":"10104:19:75"},"nativeSrc":"10104:19:75","nodeType":"YulExpressionStatement","src":"10104:19:75"},{"nativeSrc":"10132:21:75","nodeType":"YulAssignment","src":"10132:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"10143:3:75","nodeType":"YulIdentifier","src":"10143:3:75"},{"kind":"number","nativeSrc":"10148:4:75","nodeType":"YulLiteral","src":"10148:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10139:3:75","nodeType":"YulIdentifier","src":"10139:3:75"},"nativeSrc":"10139:14:75","nodeType":"YulFunctionCall","src":"10139:14:75"},"variableNames":[{"name":"dst","nativeSrc":"10132:3:75","nodeType":"YulIdentifier","src":"10132:3:75"}]},{"nativeSrc":"10162:52:75","nodeType":"YulVariableDeclaration","src":"10162:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10184:6:75","nodeType":"YulIdentifier","src":"10184:6:75"},{"arguments":[{"kind":"number","nativeSrc":"10196:1:75","nodeType":"YulLiteral","src":"10196:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"10199:6:75","nodeType":"YulIdentifier","src":"10199:6:75"}],"functionName":{"name":"shl","nativeSrc":"10192:3:75","nodeType":"YulIdentifier","src":"10192:3:75"},"nativeSrc":"10192:14:75","nodeType":"YulFunctionCall","src":"10192:14:75"}],"functionName":{"name":"add","nativeSrc":"10180:3:75","nodeType":"YulIdentifier","src":"10180:3:75"},"nativeSrc":"10180:27:75","nodeType":"YulFunctionCall","src":"10180:27:75"},{"kind":"number","nativeSrc":"10209:4:75","nodeType":"YulLiteral","src":"10209:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10176:3:75","nodeType":"YulIdentifier","src":"10176:3:75"},"nativeSrc":"10176:38:75","nodeType":"YulFunctionCall","src":"10176:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"10166:6:75","nodeType":"YulTypedName","src":"10166:6:75","type":""}]},{"body":{"nativeSrc":"10242:16:75","nodeType":"YulBlock","src":"10242:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10251:1:75","nodeType":"YulLiteral","src":"10251:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10254:1:75","nodeType":"YulLiteral","src":"10254:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10244:6:75","nodeType":"YulIdentifier","src":"10244:6:75"},"nativeSrc":"10244:12:75","nodeType":"YulFunctionCall","src":"10244:12:75"},"nativeSrc":"10244:12:75","nodeType":"YulExpressionStatement","src":"10244:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"10229:6:75","nodeType":"YulIdentifier","src":"10229:6:75"},{"name":"end","nativeSrc":"10237:3:75","nodeType":"YulIdentifier","src":"10237:3:75"}],"functionName":{"name":"gt","nativeSrc":"10226:2:75","nodeType":"YulIdentifier","src":"10226:2:75"},"nativeSrc":"10226:15:75","nodeType":"YulFunctionCall","src":"10226:15:75"},"nativeSrc":"10223:35:75","nodeType":"YulIf","src":"10223:35:75"},{"nativeSrc":"10267:28:75","nodeType":"YulVariableDeclaration","src":"10267:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"10282:6:75","nodeType":"YulIdentifier","src":"10282:6:75"},{"kind":"number","nativeSrc":"10290:4:75","nodeType":"YulLiteral","src":"10290:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10278:3:75","nodeType":"YulIdentifier","src":"10278:3:75"},"nativeSrc":"10278:17:75","nodeType":"YulFunctionCall","src":"10278:17:75"},"variables":[{"name":"src","nativeSrc":"10271:3:75","nodeType":"YulTypedName","src":"10271:3:75","type":""}]},{"body":{"nativeSrc":"10362:92:75","nodeType":"YulBlock","src":"10362:92:75","statements":[{"expression":{"arguments":[{"name":"dst","nativeSrc":"10383:3:75","nodeType":"YulIdentifier","src":"10383:3:75"},{"arguments":[{"name":"src","nativeSrc":"10405:3:75","nodeType":"YulIdentifier","src":"10405:3:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"10388:16:75","nodeType":"YulIdentifier","src":"10388:16:75"},"nativeSrc":"10388:21:75","nodeType":"YulFunctionCall","src":"10388:21:75"}],"functionName":{"name":"mstore","nativeSrc":"10376:6:75","nodeType":"YulIdentifier","src":"10376:6:75"},"nativeSrc":"10376:34:75","nodeType":"YulFunctionCall","src":"10376:34:75"},"nativeSrc":"10376:34:75","nodeType":"YulExpressionStatement","src":"10376:34:75"},{"nativeSrc":"10423:21:75","nodeType":"YulAssignment","src":"10423:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"10434:3:75","nodeType":"YulIdentifier","src":"10434:3:75"},{"kind":"number","nativeSrc":"10439:4:75","nodeType":"YulLiteral","src":"10439:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10430:3:75","nodeType":"YulIdentifier","src":"10430:3:75"},"nativeSrc":"10430:14:75","nodeType":"YulFunctionCall","src":"10430:14:75"},"variableNames":[{"name":"dst","nativeSrc":"10423:3:75","nodeType":"YulIdentifier","src":"10423:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"10315:3:75","nodeType":"YulIdentifier","src":"10315:3:75"},{"name":"srcEnd","nativeSrc":"10320:6:75","nodeType":"YulIdentifier","src":"10320:6:75"}],"functionName":{"name":"lt","nativeSrc":"10312:2:75","nodeType":"YulIdentifier","src":"10312:2:75"},"nativeSrc":"10312:15:75","nodeType":"YulFunctionCall","src":"10312:15:75"},"nativeSrc":"10304:150:75","nodeType":"YulForLoop","post":{"nativeSrc":"10328:25:75","nodeType":"YulBlock","src":"10328:25:75","statements":[{"nativeSrc":"10330:21:75","nodeType":"YulAssignment","src":"10330:21:75","value":{"arguments":[{"name":"src","nativeSrc":"10341:3:75","nodeType":"YulIdentifier","src":"10341:3:75"},{"kind":"number","nativeSrc":"10346:4:75","nodeType":"YulLiteral","src":"10346:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10337:3:75","nodeType":"YulIdentifier","src":"10337:3:75"},"nativeSrc":"10337:14:75","nodeType":"YulFunctionCall","src":"10337:14:75"},"variableNames":[{"name":"src","nativeSrc":"10330:3:75","nodeType":"YulIdentifier","src":"10330:3:75"}]}]},"pre":{"nativeSrc":"10308:3:75","nodeType":"YulBlock","src":"10308:3:75","statements":[]},"src":"10304:150:75"},{"nativeSrc":"10463:16:75","nodeType":"YulAssignment","src":"10463:16:75","value":{"name":"array_1","nativeSrc":"10472:7:75","nodeType":"YulIdentifier","src":"10472:7:75"},"variableNames":[{"name":"array","nativeSrc":"10463:5:75","nodeType":"YulIdentifier","src":"10463:5:75"}]}]},"name":"abi_decode_array_uint8_dyn","nativeSrc":"9816:669:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"9852:6:75","nodeType":"YulTypedName","src":"9852:6:75","type":""},{"name":"end","nativeSrc":"9860:3:75","nodeType":"YulTypedName","src":"9860:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"9868:5:75","nodeType":"YulTypedName","src":"9868:5:75","type":""}],"src":"9816:669:75"},{"body":{"nativeSrc":"10583:251:75","nodeType":"YulBlock","src":"10583:251:75","statements":[{"body":{"nativeSrc":"10629:16:75","nodeType":"YulBlock","src":"10629:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10638:1:75","nodeType":"YulLiteral","src":"10638:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10641:1:75","nodeType":"YulLiteral","src":"10641:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10631:6:75","nodeType":"YulIdentifier","src":"10631:6:75"},"nativeSrc":"10631:12:75","nodeType":"YulFunctionCall","src":"10631:12:75"},"nativeSrc":"10631:12:75","nodeType":"YulExpressionStatement","src":"10631:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10604:7:75","nodeType":"YulIdentifier","src":"10604:7:75"},{"name":"headStart","nativeSrc":"10613:9:75","nodeType":"YulIdentifier","src":"10613:9:75"}],"functionName":{"name":"sub","nativeSrc":"10600:3:75","nodeType":"YulIdentifier","src":"10600:3:75"},"nativeSrc":"10600:23:75","nodeType":"YulFunctionCall","src":"10600:23:75"},{"kind":"number","nativeSrc":"10625:2:75","nodeType":"YulLiteral","src":"10625:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10596:3:75","nodeType":"YulIdentifier","src":"10596:3:75"},"nativeSrc":"10596:32:75","nodeType":"YulFunctionCall","src":"10596:32:75"},"nativeSrc":"10593:52:75","nodeType":"YulIf","src":"10593:52:75"},{"nativeSrc":"10654:37:75","nodeType":"YulVariableDeclaration","src":"10654:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10681:9:75","nodeType":"YulIdentifier","src":"10681:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"10668:12:75","nodeType":"YulIdentifier","src":"10668:12:75"},"nativeSrc":"10668:23:75","nodeType":"YulFunctionCall","src":"10668:23:75"},"variables":[{"name":"offset","nativeSrc":"10658:6:75","nodeType":"YulTypedName","src":"10658:6:75","type":""}]},{"body":{"nativeSrc":"10734:16:75","nodeType":"YulBlock","src":"10734:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10743:1:75","nodeType":"YulLiteral","src":"10743:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10746:1:75","nodeType":"YulLiteral","src":"10746:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10736:6:75","nodeType":"YulIdentifier","src":"10736:6:75"},"nativeSrc":"10736:12:75","nodeType":"YulFunctionCall","src":"10736:12:75"},"nativeSrc":"10736:12:75","nodeType":"YulExpressionStatement","src":"10736:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10706:6:75","nodeType":"YulIdentifier","src":"10706:6:75"},{"kind":"number","nativeSrc":"10714:18:75","nodeType":"YulLiteral","src":"10714:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10703:2:75","nodeType":"YulIdentifier","src":"10703:2:75"},"nativeSrc":"10703:30:75","nodeType":"YulFunctionCall","src":"10703:30:75"},"nativeSrc":"10700:50:75","nodeType":"YulIf","src":"10700:50:75"},{"nativeSrc":"10759:69:75","nodeType":"YulAssignment","src":"10759:69:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10800:9:75","nodeType":"YulIdentifier","src":"10800:9:75"},{"name":"offset","nativeSrc":"10811:6:75","nodeType":"YulIdentifier","src":"10811:6:75"}],"functionName":{"name":"add","nativeSrc":"10796:3:75","nodeType":"YulIdentifier","src":"10796:3:75"},"nativeSrc":"10796:22:75","nodeType":"YulFunctionCall","src":"10796:22:75"},{"name":"dataEnd","nativeSrc":"10820:7:75","nodeType":"YulIdentifier","src":"10820:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"10769:26:75","nodeType":"YulIdentifier","src":"10769:26:75"},"nativeSrc":"10769:59:75","nodeType":"YulFunctionCall","src":"10769:59:75"},"variableNames":[{"name":"value0","nativeSrc":"10759:6:75","nodeType":"YulIdentifier","src":"10759:6:75"}]}]},"name":"abi_decode_tuple_t_array$_t_uint8_$dyn_memory_ptr","nativeSrc":"10490:344:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10549:9:75","nodeType":"YulTypedName","src":"10549:9:75","type":""},{"name":"dataEnd","nativeSrc":"10560:7:75","nodeType":"YulTypedName","src":"10560:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10572:6:75","nodeType":"YulTypedName","src":"10572:6:75","type":""}],"src":"10490:344:75"},{"body":{"nativeSrc":"10940:156:75","nodeType":"YulBlock","src":"10940:156:75","statements":[{"body":{"nativeSrc":"10986:16:75","nodeType":"YulBlock","src":"10986:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10995:1:75","nodeType":"YulLiteral","src":"10995:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10998:1:75","nodeType":"YulLiteral","src":"10998:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10988:6:75","nodeType":"YulIdentifier","src":"10988:6:75"},"nativeSrc":"10988:12:75","nodeType":"YulFunctionCall","src":"10988:12:75"},"nativeSrc":"10988:12:75","nodeType":"YulExpressionStatement","src":"10988:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10961:7:75","nodeType":"YulIdentifier","src":"10961:7:75"},{"name":"headStart","nativeSrc":"10970:9:75","nodeType":"YulIdentifier","src":"10970:9:75"}],"functionName":{"name":"sub","nativeSrc":"10957:3:75","nodeType":"YulIdentifier","src":"10957:3:75"},"nativeSrc":"10957:23:75","nodeType":"YulFunctionCall","src":"10957:23:75"},{"kind":"number","nativeSrc":"10982:2:75","nodeType":"YulLiteral","src":"10982:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10953:3:75","nodeType":"YulIdentifier","src":"10953:3:75"},"nativeSrc":"10953:32:75","nodeType":"YulFunctionCall","src":"10953:32:75"},"nativeSrc":"10950:52:75","nodeType":"YulIf","src":"10950:52:75"},{"nativeSrc":"11011:14:75","nodeType":"YulVariableDeclaration","src":"11011:14:75","value":{"kind":"number","nativeSrc":"11024:1:75","nodeType":"YulLiteral","src":"11024:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11015:5:75","nodeType":"YulTypedName","src":"11015:5:75","type":""}]},{"nativeSrc":"11034:32:75","nodeType":"YulAssignment","src":"11034:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11056:9:75","nodeType":"YulIdentifier","src":"11056:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"11043:12:75","nodeType":"YulIdentifier","src":"11043:12:75"},"nativeSrc":"11043:23:75","nodeType":"YulFunctionCall","src":"11043:23:75"},"variableNames":[{"name":"value","nativeSrc":"11034:5:75","nodeType":"YulIdentifier","src":"11034:5:75"}]},{"nativeSrc":"11075:15:75","nodeType":"YulAssignment","src":"11075:15:75","value":{"name":"value","nativeSrc":"11085:5:75","nodeType":"YulIdentifier","src":"11085:5:75"},"variableNames":[{"name":"value0","nativeSrc":"11075:6:75","nodeType":"YulIdentifier","src":"11075:6:75"}]}]},"name":"abi_decode_tuple_t_userDefinedValueType$_SlotIndex_$17996","nativeSrc":"10839:257:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10906:9:75","nodeType":"YulTypedName","src":"10906:9:75","type":""},{"name":"dataEnd","nativeSrc":"10917:7:75","nodeType":"YulTypedName","src":"10917:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10929:6:75","nodeType":"YulTypedName","src":"10929:6:75","type":""}],"src":"10839:257:75"},{"body":{"nativeSrc":"11183:229:75","nodeType":"YulBlock","src":"11183:229:75","statements":[{"body":{"nativeSrc":"11229:16:75","nodeType":"YulBlock","src":"11229:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11238:1:75","nodeType":"YulLiteral","src":"11238:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11241:1:75","nodeType":"YulLiteral","src":"11241:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11231:6:75","nodeType":"YulIdentifier","src":"11231:6:75"},"nativeSrc":"11231:12:75","nodeType":"YulFunctionCall","src":"11231:12:75"},"nativeSrc":"11231:12:75","nodeType":"YulExpressionStatement","src":"11231:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11204:7:75","nodeType":"YulIdentifier","src":"11204:7:75"},{"name":"headStart","nativeSrc":"11213:9:75","nodeType":"YulIdentifier","src":"11213:9:75"}],"functionName":{"name":"sub","nativeSrc":"11200:3:75","nodeType":"YulIdentifier","src":"11200:3:75"},"nativeSrc":"11200:23:75","nodeType":"YulFunctionCall","src":"11200:23:75"},{"kind":"number","nativeSrc":"11225:2:75","nodeType":"YulLiteral","src":"11225:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"11196:3:75","nodeType":"YulIdentifier","src":"11196:3:75"},"nativeSrc":"11196:32:75","nodeType":"YulFunctionCall","src":"11196:32:75"},"nativeSrc":"11193:52:75","nodeType":"YulIf","src":"11193:52:75"},{"nativeSrc":"11254:37:75","nodeType":"YulAssignment","src":"11254:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11281:9:75","nodeType":"YulIdentifier","src":"11281:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"11264:16:75","nodeType":"YulIdentifier","src":"11264:16:75"},"nativeSrc":"11264:27:75","nodeType":"YulFunctionCall","src":"11264:27:75"},"variableNames":[{"name":"value0","nativeSrc":"11254:6:75","nodeType":"YulIdentifier","src":"11254:6:75"}]},{"nativeSrc":"11300:45:75","nodeType":"YulVariableDeclaration","src":"11300:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11330:9:75","nodeType":"YulIdentifier","src":"11330:9:75"},{"kind":"number","nativeSrc":"11341:2:75","nodeType":"YulLiteral","src":"11341:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11326:3:75","nodeType":"YulIdentifier","src":"11326:3:75"},"nativeSrc":"11326:18:75","nodeType":"YulFunctionCall","src":"11326:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"11313:12:75","nodeType":"YulIdentifier","src":"11313:12:75"},"nativeSrc":"11313:32:75","nodeType":"YulFunctionCall","src":"11313:32:75"},"variables":[{"name":"value","nativeSrc":"11304:5:75","nodeType":"YulTypedName","src":"11304:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11376:5:75","nodeType":"YulIdentifier","src":"11376:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"11354:21:75","nodeType":"YulIdentifier","src":"11354:21:75"},"nativeSrc":"11354:28:75","nodeType":"YulFunctionCall","src":"11354:28:75"},"nativeSrc":"11354:28:75","nodeType":"YulExpressionStatement","src":"11354:28:75"},{"nativeSrc":"11391:15:75","nodeType":"YulAssignment","src":"11391:15:75","value":{"name":"value","nativeSrc":"11401:5:75","nodeType":"YulIdentifier","src":"11401:5:75"},"variableNames":[{"name":"value1","nativeSrc":"11391:6:75","nodeType":"YulIdentifier","src":"11391:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bool","nativeSrc":"11101:311:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11141:9:75","nodeType":"YulTypedName","src":"11141:9:75","type":""},{"name":"dataEnd","nativeSrc":"11152:7:75","nodeType":"YulTypedName","src":"11152:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11164:6:75","nodeType":"YulTypedName","src":"11164:6:75","type":""},{"name":"value1","nativeSrc":"11172:6:75","nodeType":"YulTypedName","src":"11172:6:75","type":""}],"src":"11101:311:75"},{"body":{"nativeSrc":"11474:85:75","nodeType":"YulBlock","src":"11474:85:75","statements":[{"nativeSrc":"11484:29:75","nodeType":"YulAssignment","src":"11484:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"11506:6:75","nodeType":"YulIdentifier","src":"11506:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"11493:12:75","nodeType":"YulIdentifier","src":"11493:12:75"},"nativeSrc":"11493:20:75","nodeType":"YulFunctionCall","src":"11493:20:75"},"variableNames":[{"name":"value","nativeSrc":"11484:5:75","nodeType":"YulIdentifier","src":"11484:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11547:5:75","nodeType":"YulIdentifier","src":"11547:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11522:24:75","nodeType":"YulIdentifier","src":"11522:24:75"},"nativeSrc":"11522:31:75","nodeType":"YulFunctionCall","src":"11522:31:75"},"nativeSrc":"11522:31:75","nodeType":"YulExpressionStatement","src":"11522:31:75"}]},"name":"abi_decode_contract_IERC20","nativeSrc":"11417:142:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11453:6:75","nodeType":"YulTypedName","src":"11453:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"11464:5:75","nodeType":"YulTypedName","src":"11464:5:75","type":""}],"src":"11417:142:75"},{"body":{"nativeSrc":"11645:678:75","nodeType":"YulBlock","src":"11645:678:75","statements":[{"body":{"nativeSrc":"11694:16:75","nodeType":"YulBlock","src":"11694:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11703:1:75","nodeType":"YulLiteral","src":"11703:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11706:1:75","nodeType":"YulLiteral","src":"11706:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11696:6:75","nodeType":"YulIdentifier","src":"11696:6:75"},"nativeSrc":"11696:12:75","nodeType":"YulFunctionCall","src":"11696:12:75"},"nativeSrc":"11696:12:75","nodeType":"YulExpressionStatement","src":"11696:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11673:6:75","nodeType":"YulIdentifier","src":"11673:6:75"},{"kind":"number","nativeSrc":"11681:4:75","nodeType":"YulLiteral","src":"11681:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"11669:3:75","nodeType":"YulIdentifier","src":"11669:3:75"},"nativeSrc":"11669:17:75","nodeType":"YulFunctionCall","src":"11669:17:75"},{"name":"end","nativeSrc":"11688:3:75","nodeType":"YulIdentifier","src":"11688:3:75"}],"functionName":{"name":"slt","nativeSrc":"11665:3:75","nodeType":"YulIdentifier","src":"11665:3:75"},"nativeSrc":"11665:27:75","nodeType":"YulFunctionCall","src":"11665:27:75"}],"functionName":{"name":"iszero","nativeSrc":"11658:6:75","nodeType":"YulIdentifier","src":"11658:6:75"},"nativeSrc":"11658:35:75","nodeType":"YulFunctionCall","src":"11658:35:75"},"nativeSrc":"11655:55:75","nodeType":"YulIf","src":"11655:55:75"},{"nativeSrc":"11719:34:75","nodeType":"YulVariableDeclaration","src":"11719:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"11746:6:75","nodeType":"YulIdentifier","src":"11746:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"11733:12:75","nodeType":"YulIdentifier","src":"11733:12:75"},"nativeSrc":"11733:20:75","nodeType":"YulFunctionCall","src":"11733:20:75"},"variables":[{"name":"length","nativeSrc":"11723:6:75","nodeType":"YulTypedName","src":"11723:6:75","type":""}]},{"nativeSrc":"11762:73:75","nodeType":"YulVariableDeclaration","src":"11762:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"11827:6:75","nodeType":"YulIdentifier","src":"11827:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"11789:37:75","nodeType":"YulIdentifier","src":"11789:37:75"},"nativeSrc":"11789:45:75","nodeType":"YulFunctionCall","src":"11789:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"11773:15:75","nodeType":"YulIdentifier","src":"11773:15:75"},"nativeSrc":"11773:62:75","nodeType":"YulFunctionCall","src":"11773:62:75"},"variables":[{"name":"dst","nativeSrc":"11766:3:75","nodeType":"YulTypedName","src":"11766:3:75","type":""}]},{"nativeSrc":"11844:18:75","nodeType":"YulVariableDeclaration","src":"11844:18:75","value":{"name":"dst","nativeSrc":"11859:3:75","nodeType":"YulIdentifier","src":"11859:3:75"},"variables":[{"name":"array_1","nativeSrc":"11848:7:75","nodeType":"YulTypedName","src":"11848:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"11878:3:75","nodeType":"YulIdentifier","src":"11878:3:75"},{"name":"length","nativeSrc":"11883:6:75","nodeType":"YulIdentifier","src":"11883:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11871:6:75","nodeType":"YulIdentifier","src":"11871:6:75"},"nativeSrc":"11871:19:75","nodeType":"YulFunctionCall","src":"11871:19:75"},"nativeSrc":"11871:19:75","nodeType":"YulExpressionStatement","src":"11871:19:75"},{"nativeSrc":"11899:21:75","nodeType":"YulAssignment","src":"11899:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"11910:3:75","nodeType":"YulIdentifier","src":"11910:3:75"},{"kind":"number","nativeSrc":"11915:4:75","nodeType":"YulLiteral","src":"11915:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11906:3:75","nodeType":"YulIdentifier","src":"11906:3:75"},"nativeSrc":"11906:14:75","nodeType":"YulFunctionCall","src":"11906:14:75"},"variableNames":[{"name":"dst","nativeSrc":"11899:3:75","nodeType":"YulIdentifier","src":"11899:3:75"}]},{"nativeSrc":"11929:52:75","nodeType":"YulVariableDeclaration","src":"11929:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"11951:6:75","nodeType":"YulIdentifier","src":"11951:6:75"},{"arguments":[{"kind":"number","nativeSrc":"11963:1:75","nodeType":"YulLiteral","src":"11963:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"11966:6:75","nodeType":"YulIdentifier","src":"11966:6:75"}],"functionName":{"name":"shl","nativeSrc":"11959:3:75","nodeType":"YulIdentifier","src":"11959:3:75"},"nativeSrc":"11959:14:75","nodeType":"YulFunctionCall","src":"11959:14:75"}],"functionName":{"name":"add","nativeSrc":"11947:3:75","nodeType":"YulIdentifier","src":"11947:3:75"},"nativeSrc":"11947:27:75","nodeType":"YulFunctionCall","src":"11947:27:75"},{"kind":"number","nativeSrc":"11976:4:75","nodeType":"YulLiteral","src":"11976:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11943:3:75","nodeType":"YulIdentifier","src":"11943:3:75"},"nativeSrc":"11943:38:75","nodeType":"YulFunctionCall","src":"11943:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"11933:6:75","nodeType":"YulTypedName","src":"11933:6:75","type":""}]},{"body":{"nativeSrc":"12009:16:75","nodeType":"YulBlock","src":"12009:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12018:1:75","nodeType":"YulLiteral","src":"12018:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12021:1:75","nodeType":"YulLiteral","src":"12021:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12011:6:75","nodeType":"YulIdentifier","src":"12011:6:75"},"nativeSrc":"12011:12:75","nodeType":"YulFunctionCall","src":"12011:12:75"},"nativeSrc":"12011:12:75","nodeType":"YulExpressionStatement","src":"12011:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"11996:6:75","nodeType":"YulIdentifier","src":"11996:6:75"},{"name":"end","nativeSrc":"12004:3:75","nodeType":"YulIdentifier","src":"12004:3:75"}],"functionName":{"name":"gt","nativeSrc":"11993:2:75","nodeType":"YulIdentifier","src":"11993:2:75"},"nativeSrc":"11993:15:75","nodeType":"YulFunctionCall","src":"11993:15:75"},"nativeSrc":"11990:35:75","nodeType":"YulIf","src":"11990:35:75"},{"nativeSrc":"12034:28:75","nodeType":"YulVariableDeclaration","src":"12034:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"12049:6:75","nodeType":"YulIdentifier","src":"12049:6:75"},{"kind":"number","nativeSrc":"12057:4:75","nodeType":"YulLiteral","src":"12057:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12045:3:75","nodeType":"YulIdentifier","src":"12045:3:75"},"nativeSrc":"12045:17:75","nodeType":"YulFunctionCall","src":"12045:17:75"},"variables":[{"name":"src","nativeSrc":"12038:3:75","nodeType":"YulTypedName","src":"12038:3:75","type":""}]},{"body":{"nativeSrc":"12129:163:75","nodeType":"YulBlock","src":"12129:163:75","statements":[{"nativeSrc":"12143:30:75","nodeType":"YulVariableDeclaration","src":"12143:30:75","value":{"arguments":[{"name":"src","nativeSrc":"12169:3:75","nodeType":"YulIdentifier","src":"12169:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"12156:12:75","nodeType":"YulIdentifier","src":"12156:12:75"},"nativeSrc":"12156:17:75","nodeType":"YulFunctionCall","src":"12156:17:75"},"variables":[{"name":"value","nativeSrc":"12147:5:75","nodeType":"YulTypedName","src":"12147:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12211:5:75","nodeType":"YulIdentifier","src":"12211:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"12186:24:75","nodeType":"YulIdentifier","src":"12186:24:75"},"nativeSrc":"12186:31:75","nodeType":"YulFunctionCall","src":"12186:31:75"},"nativeSrc":"12186:31:75","nodeType":"YulExpressionStatement","src":"12186:31:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"12237:3:75","nodeType":"YulIdentifier","src":"12237:3:75"},{"name":"value","nativeSrc":"12242:5:75","nodeType":"YulIdentifier","src":"12242:5:75"}],"functionName":{"name":"mstore","nativeSrc":"12230:6:75","nodeType":"YulIdentifier","src":"12230:6:75"},"nativeSrc":"12230:18:75","nodeType":"YulFunctionCall","src":"12230:18:75"},"nativeSrc":"12230:18:75","nodeType":"YulExpressionStatement","src":"12230:18:75"},{"nativeSrc":"12261:21:75","nodeType":"YulAssignment","src":"12261:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"12272:3:75","nodeType":"YulIdentifier","src":"12272:3:75"},{"kind":"number","nativeSrc":"12277:4:75","nodeType":"YulLiteral","src":"12277:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12268:3:75","nodeType":"YulIdentifier","src":"12268:3:75"},"nativeSrc":"12268:14:75","nodeType":"YulFunctionCall","src":"12268:14:75"},"variableNames":[{"name":"dst","nativeSrc":"12261:3:75","nodeType":"YulIdentifier","src":"12261:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"12082:3:75","nodeType":"YulIdentifier","src":"12082:3:75"},{"name":"srcEnd","nativeSrc":"12087:6:75","nodeType":"YulIdentifier","src":"12087:6:75"}],"functionName":{"name":"lt","nativeSrc":"12079:2:75","nodeType":"YulIdentifier","src":"12079:2:75"},"nativeSrc":"12079:15:75","nodeType":"YulFunctionCall","src":"12079:15:75"},"nativeSrc":"12071:221:75","nodeType":"YulForLoop","post":{"nativeSrc":"12095:25:75","nodeType":"YulBlock","src":"12095:25:75","statements":[{"nativeSrc":"12097:21:75","nodeType":"YulAssignment","src":"12097:21:75","value":{"arguments":[{"name":"src","nativeSrc":"12108:3:75","nodeType":"YulIdentifier","src":"12108:3:75"},{"kind":"number","nativeSrc":"12113:4:75","nodeType":"YulLiteral","src":"12113:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12104:3:75","nodeType":"YulIdentifier","src":"12104:3:75"},"nativeSrc":"12104:14:75","nodeType":"YulFunctionCall","src":"12104:14:75"},"variableNames":[{"name":"src","nativeSrc":"12097:3:75","nodeType":"YulIdentifier","src":"12097:3:75"}]}]},"pre":{"nativeSrc":"12075:3:75","nodeType":"YulBlock","src":"12075:3:75","statements":[]},"src":"12071:221:75"},{"nativeSrc":"12301:16:75","nodeType":"YulAssignment","src":"12301:16:75","value":{"name":"array_1","nativeSrc":"12310:7:75","nodeType":"YulIdentifier","src":"12310:7:75"},"variableNames":[{"name":"array","nativeSrc":"12301:5:75","nodeType":"YulIdentifier","src":"12301:5:75"}]}]},"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"11564:759:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"11619:6:75","nodeType":"YulTypedName","src":"11619:6:75","type":""},{"name":"end","nativeSrc":"11627:3:75","nodeType":"YulTypedName","src":"11627:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"11635:5:75","nodeType":"YulTypedName","src":"11635:5:75","type":""}],"src":"11564:759:75"},{"body":{"nativeSrc":"12390:761:75","nodeType":"YulBlock","src":"12390:761:75","statements":[{"body":{"nativeSrc":"12439:16:75","nodeType":"YulBlock","src":"12439:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12448:1:75","nodeType":"YulLiteral","src":"12448:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12451:1:75","nodeType":"YulLiteral","src":"12451:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12441:6:75","nodeType":"YulIdentifier","src":"12441:6:75"},"nativeSrc":"12441:12:75","nodeType":"YulFunctionCall","src":"12441:12:75"},"nativeSrc":"12441:12:75","nodeType":"YulExpressionStatement","src":"12441:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"12418:6:75","nodeType":"YulIdentifier","src":"12418:6:75"},{"kind":"number","nativeSrc":"12426:4:75","nodeType":"YulLiteral","src":"12426:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"12414:3:75","nodeType":"YulIdentifier","src":"12414:3:75"},"nativeSrc":"12414:17:75","nodeType":"YulFunctionCall","src":"12414:17:75"},{"name":"end","nativeSrc":"12433:3:75","nodeType":"YulIdentifier","src":"12433:3:75"}],"functionName":{"name":"slt","nativeSrc":"12410:3:75","nodeType":"YulIdentifier","src":"12410:3:75"},"nativeSrc":"12410:27:75","nodeType":"YulFunctionCall","src":"12410:27:75"}],"functionName":{"name":"iszero","nativeSrc":"12403:6:75","nodeType":"YulIdentifier","src":"12403:6:75"},"nativeSrc":"12403:35:75","nodeType":"YulFunctionCall","src":"12403:35:75"},"nativeSrc":"12400:55:75","nodeType":"YulIf","src":"12400:55:75"},{"nativeSrc":"12464:34:75","nodeType":"YulVariableDeclaration","src":"12464:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"12491:6:75","nodeType":"YulIdentifier","src":"12491:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"12478:12:75","nodeType":"YulIdentifier","src":"12478:12:75"},"nativeSrc":"12478:20:75","nodeType":"YulFunctionCall","src":"12478:20:75"},"variables":[{"name":"length","nativeSrc":"12468:6:75","nodeType":"YulTypedName","src":"12468:6:75","type":""}]},{"nativeSrc":"12507:73:75","nodeType":"YulVariableDeclaration","src":"12507:73:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"12572:6:75","nodeType":"YulIdentifier","src":"12572:6:75"}],"functionName":{"name":"array_allocation_size_array_uint8_dyn","nativeSrc":"12534:37:75","nodeType":"YulIdentifier","src":"12534:37:75"},"nativeSrc":"12534:45:75","nodeType":"YulFunctionCall","src":"12534:45:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"12518:15:75","nodeType":"YulIdentifier","src":"12518:15:75"},"nativeSrc":"12518:62:75","nodeType":"YulFunctionCall","src":"12518:62:75"},"variables":[{"name":"dst","nativeSrc":"12511:3:75","nodeType":"YulTypedName","src":"12511:3:75","type":""}]},{"nativeSrc":"12589:18:75","nodeType":"YulVariableDeclaration","src":"12589:18:75","value":{"name":"dst","nativeSrc":"12604:3:75","nodeType":"YulIdentifier","src":"12604:3:75"},"variables":[{"name":"array_1","nativeSrc":"12593:7:75","nodeType":"YulTypedName","src":"12593:7:75","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"12623:3:75","nodeType":"YulIdentifier","src":"12623:3:75"},{"name":"length","nativeSrc":"12628:6:75","nodeType":"YulIdentifier","src":"12628:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12616:6:75","nodeType":"YulIdentifier","src":"12616:6:75"},"nativeSrc":"12616:19:75","nodeType":"YulFunctionCall","src":"12616:19:75"},"nativeSrc":"12616:19:75","nodeType":"YulExpressionStatement","src":"12616:19:75"},{"nativeSrc":"12644:21:75","nodeType":"YulAssignment","src":"12644:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"12655:3:75","nodeType":"YulIdentifier","src":"12655:3:75"},{"kind":"number","nativeSrc":"12660:4:75","nodeType":"YulLiteral","src":"12660:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12651:3:75","nodeType":"YulIdentifier","src":"12651:3:75"},"nativeSrc":"12651:14:75","nodeType":"YulFunctionCall","src":"12651:14:75"},"variableNames":[{"name":"dst","nativeSrc":"12644:3:75","nodeType":"YulIdentifier","src":"12644:3:75"}]},{"nativeSrc":"12674:52:75","nodeType":"YulVariableDeclaration","src":"12674:52:75","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"12696:6:75","nodeType":"YulIdentifier","src":"12696:6:75"},{"arguments":[{"kind":"number","nativeSrc":"12708:1:75","nodeType":"YulLiteral","src":"12708:1:75","type":"","value":"5"},{"name":"length","nativeSrc":"12711:6:75","nodeType":"YulIdentifier","src":"12711:6:75"}],"functionName":{"name":"shl","nativeSrc":"12704:3:75","nodeType":"YulIdentifier","src":"12704:3:75"},"nativeSrc":"12704:14:75","nodeType":"YulFunctionCall","src":"12704:14:75"}],"functionName":{"name":"add","nativeSrc":"12692:3:75","nodeType":"YulIdentifier","src":"12692:3:75"},"nativeSrc":"12692:27:75","nodeType":"YulFunctionCall","src":"12692:27:75"},{"kind":"number","nativeSrc":"12721:4:75","nodeType":"YulLiteral","src":"12721:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12688:3:75","nodeType":"YulIdentifier","src":"12688:3:75"},"nativeSrc":"12688:38:75","nodeType":"YulFunctionCall","src":"12688:38:75"},"variables":[{"name":"srcEnd","nativeSrc":"12678:6:75","nodeType":"YulTypedName","src":"12678:6:75","type":""}]},{"body":{"nativeSrc":"12754:16:75","nodeType":"YulBlock","src":"12754:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12763:1:75","nodeType":"YulLiteral","src":"12763:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12766:1:75","nodeType":"YulLiteral","src":"12766:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12756:6:75","nodeType":"YulIdentifier","src":"12756:6:75"},"nativeSrc":"12756:12:75","nodeType":"YulFunctionCall","src":"12756:12:75"},"nativeSrc":"12756:12:75","nodeType":"YulExpressionStatement","src":"12756:12:75"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"12741:6:75","nodeType":"YulIdentifier","src":"12741:6:75"},{"name":"end","nativeSrc":"12749:3:75","nodeType":"YulIdentifier","src":"12749:3:75"}],"functionName":{"name":"gt","nativeSrc":"12738:2:75","nodeType":"YulIdentifier","src":"12738:2:75"},"nativeSrc":"12738:15:75","nodeType":"YulFunctionCall","src":"12738:15:75"},"nativeSrc":"12735:35:75","nodeType":"YulIf","src":"12735:35:75"},{"nativeSrc":"12779:28:75","nodeType":"YulVariableDeclaration","src":"12779:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"12794:6:75","nodeType":"YulIdentifier","src":"12794:6:75"},{"kind":"number","nativeSrc":"12802:4:75","nodeType":"YulLiteral","src":"12802:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12790:3:75","nodeType":"YulIdentifier","src":"12790:3:75"},"nativeSrc":"12790:17:75","nodeType":"YulFunctionCall","src":"12790:17:75"},"variables":[{"name":"src","nativeSrc":"12783:3:75","nodeType":"YulTypedName","src":"12783:3:75","type":""}]},{"body":{"nativeSrc":"12874:246:75","nodeType":"YulBlock","src":"12874:246:75","statements":[{"nativeSrc":"12888:36:75","nodeType":"YulVariableDeclaration","src":"12888:36:75","value":{"arguments":[{"name":"src","nativeSrc":"12920:3:75","nodeType":"YulIdentifier","src":"12920:3:75"}],"functionName":{"name":"calldataload","nativeSrc":"12907:12:75","nodeType":"YulIdentifier","src":"12907:12:75"},"nativeSrc":"12907:17:75","nodeType":"YulFunctionCall","src":"12907:17:75"},"variables":[{"name":"innerOffset","nativeSrc":"12892:11:75","nodeType":"YulTypedName","src":"12892:11:75","type":""}]},{"body":{"nativeSrc":"12976:16:75","nodeType":"YulBlock","src":"12976:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12985:1:75","nodeType":"YulLiteral","src":"12985:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12988:1:75","nodeType":"YulLiteral","src":"12988:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12978:6:75","nodeType":"YulIdentifier","src":"12978:6:75"},"nativeSrc":"12978:12:75","nodeType":"YulFunctionCall","src":"12978:12:75"},"nativeSrc":"12978:12:75","nodeType":"YulExpressionStatement","src":"12978:12:75"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"12943:11:75","nodeType":"YulIdentifier","src":"12943:11:75"},{"kind":"number","nativeSrc":"12956:18:75","nodeType":"YulLiteral","src":"12956:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12940:2:75","nodeType":"YulIdentifier","src":"12940:2:75"},"nativeSrc":"12940:35:75","nodeType":"YulFunctionCall","src":"12940:35:75"},"nativeSrc":"12937:55:75","nodeType":"YulIf","src":"12937:55:75"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"13012:3:75","nodeType":"YulIdentifier","src":"13012:3:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"13042:6:75","nodeType":"YulIdentifier","src":"13042:6:75"},{"name":"innerOffset","nativeSrc":"13050:11:75","nodeType":"YulIdentifier","src":"13050:11:75"}],"functionName":{"name":"add","nativeSrc":"13038:3:75","nodeType":"YulIdentifier","src":"13038:3:75"},"nativeSrc":"13038:24:75","nodeType":"YulFunctionCall","src":"13038:24:75"},{"kind":"number","nativeSrc":"13064:4:75","nodeType":"YulLiteral","src":"13064:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13034:3:75","nodeType":"YulIdentifier","src":"13034:3:75"},"nativeSrc":"13034:35:75","nodeType":"YulFunctionCall","src":"13034:35:75"},{"name":"end","nativeSrc":"13071:3:75","nodeType":"YulIdentifier","src":"13071:3:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13017:16:75","nodeType":"YulIdentifier","src":"13017:16:75"},"nativeSrc":"13017:58:75","nodeType":"YulFunctionCall","src":"13017:58:75"}],"functionName":{"name":"mstore","nativeSrc":"13005:6:75","nodeType":"YulIdentifier","src":"13005:6:75"},"nativeSrc":"13005:71:75","nodeType":"YulFunctionCall","src":"13005:71:75"},"nativeSrc":"13005:71:75","nodeType":"YulExpressionStatement","src":"13005:71:75"},{"nativeSrc":"13089:21:75","nodeType":"YulAssignment","src":"13089:21:75","value":{"arguments":[{"name":"dst","nativeSrc":"13100:3:75","nodeType":"YulIdentifier","src":"13100:3:75"},{"kind":"number","nativeSrc":"13105:4:75","nodeType":"YulLiteral","src":"13105:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13096:3:75","nodeType":"YulIdentifier","src":"13096:3:75"},"nativeSrc":"13096:14:75","nodeType":"YulFunctionCall","src":"13096:14:75"},"variableNames":[{"name":"dst","nativeSrc":"13089:3:75","nodeType":"YulIdentifier","src":"13089:3:75"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"12827:3:75","nodeType":"YulIdentifier","src":"12827:3:75"},{"name":"srcEnd","nativeSrc":"12832:6:75","nodeType":"YulIdentifier","src":"12832:6:75"}],"functionName":{"name":"lt","nativeSrc":"12824:2:75","nodeType":"YulIdentifier","src":"12824:2:75"},"nativeSrc":"12824:15:75","nodeType":"YulFunctionCall","src":"12824:15:75"},"nativeSrc":"12816:304:75","nodeType":"YulForLoop","post":{"nativeSrc":"12840:25:75","nodeType":"YulBlock","src":"12840:25:75","statements":[{"nativeSrc":"12842:21:75","nodeType":"YulAssignment","src":"12842:21:75","value":{"arguments":[{"name":"src","nativeSrc":"12853:3:75","nodeType":"YulIdentifier","src":"12853:3:75"},{"kind":"number","nativeSrc":"12858:4:75","nodeType":"YulLiteral","src":"12858:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12849:3:75","nodeType":"YulIdentifier","src":"12849:3:75"},"nativeSrc":"12849:14:75","nodeType":"YulFunctionCall","src":"12849:14:75"},"variableNames":[{"name":"src","nativeSrc":"12842:3:75","nodeType":"YulIdentifier","src":"12842:3:75"}]}]},"pre":{"nativeSrc":"12820:3:75","nodeType":"YulBlock","src":"12820:3:75","statements":[]},"src":"12816:304:75"},{"nativeSrc":"13129:16:75","nodeType":"YulAssignment","src":"13129:16:75","value":{"name":"array_1","nativeSrc":"13138:7:75","nodeType":"YulIdentifier","src":"13138:7:75"},"variableNames":[{"name":"array","nativeSrc":"13129:5:75","nodeType":"YulIdentifier","src":"13129:5:75"}]}]},"name":"abi_decode_array_bytes_dyn","nativeSrc":"12328:823:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"12364:6:75","nodeType":"YulTypedName","src":"12364:6:75","type":""},{"name":"end","nativeSrc":"12372:3:75","nodeType":"YulTypedName","src":"12372:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"12380:5:75","nodeType":"YulTypedName","src":"12380:5:75","type":""}],"src":"12328:823:75"},{"body":{"nativeSrc":"13493:1309:75","nodeType":"YulBlock","src":"13493:1309:75","statements":[{"body":{"nativeSrc":"13540:16:75","nodeType":"YulBlock","src":"13540:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13549:1:75","nodeType":"YulLiteral","src":"13549:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13552:1:75","nodeType":"YulLiteral","src":"13552:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13542:6:75","nodeType":"YulIdentifier","src":"13542:6:75"},"nativeSrc":"13542:12:75","nodeType":"YulFunctionCall","src":"13542:12:75"},"nativeSrc":"13542:12:75","nodeType":"YulExpressionStatement","src":"13542:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13514:7:75","nodeType":"YulIdentifier","src":"13514:7:75"},{"name":"headStart","nativeSrc":"13523:9:75","nodeType":"YulIdentifier","src":"13523:9:75"}],"functionName":{"name":"sub","nativeSrc":"13510:3:75","nodeType":"YulIdentifier","src":"13510:3:75"},"nativeSrc":"13510:23:75","nodeType":"YulFunctionCall","src":"13510:23:75"},{"kind":"number","nativeSrc":"13535:3:75","nodeType":"YulLiteral","src":"13535:3:75","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"13506:3:75","nodeType":"YulIdentifier","src":"13506:3:75"},"nativeSrc":"13506:33:75","nodeType":"YulFunctionCall","src":"13506:33:75"},"nativeSrc":"13503:53:75","nodeType":"YulIf","src":"13503:53:75"},{"nativeSrc":"13565:37:75","nodeType":"YulVariableDeclaration","src":"13565:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13592:9:75","nodeType":"YulIdentifier","src":"13592:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"13579:12:75","nodeType":"YulIdentifier","src":"13579:12:75"},"nativeSrc":"13579:23:75","nodeType":"YulFunctionCall","src":"13579:23:75"},"variables":[{"name":"offset","nativeSrc":"13569:6:75","nodeType":"YulTypedName","src":"13569:6:75","type":""}]},{"body":{"nativeSrc":"13645:16:75","nodeType":"YulBlock","src":"13645:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13654:1:75","nodeType":"YulLiteral","src":"13654:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13657:1:75","nodeType":"YulLiteral","src":"13657:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13647:6:75","nodeType":"YulIdentifier","src":"13647:6:75"},"nativeSrc":"13647:12:75","nodeType":"YulFunctionCall","src":"13647:12:75"},"nativeSrc":"13647:12:75","nodeType":"YulExpressionStatement","src":"13647:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13617:6:75","nodeType":"YulIdentifier","src":"13617:6:75"},{"kind":"number","nativeSrc":"13625:18:75","nodeType":"YulLiteral","src":"13625:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13614:2:75","nodeType":"YulIdentifier","src":"13614:2:75"},"nativeSrc":"13614:30:75","nodeType":"YulFunctionCall","src":"13614:30:75"},"nativeSrc":"13611:50:75","nodeType":"YulIf","src":"13611:50:75"},{"nativeSrc":"13670:59:75","nodeType":"YulAssignment","src":"13670:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13701:9:75","nodeType":"YulIdentifier","src":"13701:9:75"},{"name":"offset","nativeSrc":"13712:6:75","nodeType":"YulIdentifier","src":"13712:6:75"}],"functionName":{"name":"add","nativeSrc":"13697:3:75","nodeType":"YulIdentifier","src":"13697:3:75"},"nativeSrc":"13697:22:75","nodeType":"YulFunctionCall","src":"13697:22:75"},{"name":"dataEnd","nativeSrc":"13721:7:75","nodeType":"YulIdentifier","src":"13721:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13680:16:75","nodeType":"YulIdentifier","src":"13680:16:75"},"nativeSrc":"13680:49:75","nodeType":"YulFunctionCall","src":"13680:49:75"},"variableNames":[{"name":"value0","nativeSrc":"13670:6:75","nodeType":"YulIdentifier","src":"13670:6:75"}]},{"nativeSrc":"13738:48:75","nodeType":"YulVariableDeclaration","src":"13738:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13771:9:75","nodeType":"YulIdentifier","src":"13771:9:75"},{"kind":"number","nativeSrc":"13782:2:75","nodeType":"YulLiteral","src":"13782:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13767:3:75","nodeType":"YulIdentifier","src":"13767:3:75"},"nativeSrc":"13767:18:75","nodeType":"YulFunctionCall","src":"13767:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"13754:12:75","nodeType":"YulIdentifier","src":"13754:12:75"},"nativeSrc":"13754:32:75","nodeType":"YulFunctionCall","src":"13754:32:75"},"variables":[{"name":"offset_1","nativeSrc":"13742:8:75","nodeType":"YulTypedName","src":"13742:8:75","type":""}]},{"body":{"nativeSrc":"13831:16:75","nodeType":"YulBlock","src":"13831:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13840:1:75","nodeType":"YulLiteral","src":"13840:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13843:1:75","nodeType":"YulLiteral","src":"13843:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13833:6:75","nodeType":"YulIdentifier","src":"13833:6:75"},"nativeSrc":"13833:12:75","nodeType":"YulFunctionCall","src":"13833:12:75"},"nativeSrc":"13833:12:75","nodeType":"YulExpressionStatement","src":"13833:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"13801:8:75","nodeType":"YulIdentifier","src":"13801:8:75"},{"kind":"number","nativeSrc":"13811:18:75","nodeType":"YulLiteral","src":"13811:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13798:2:75","nodeType":"YulIdentifier","src":"13798:2:75"},"nativeSrc":"13798:32:75","nodeType":"YulFunctionCall","src":"13798:32:75"},"nativeSrc":"13795:52:75","nodeType":"YulIf","src":"13795:52:75"},{"nativeSrc":"13856:61:75","nodeType":"YulAssignment","src":"13856:61:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13887:9:75","nodeType":"YulIdentifier","src":"13887:9:75"},{"name":"offset_1","nativeSrc":"13898:8:75","nodeType":"YulIdentifier","src":"13898:8:75"}],"functionName":{"name":"add","nativeSrc":"13883:3:75","nodeType":"YulIdentifier","src":"13883:3:75"},"nativeSrc":"13883:24:75","nodeType":"YulFunctionCall","src":"13883:24:75"},{"name":"dataEnd","nativeSrc":"13909:7:75","nodeType":"YulIdentifier","src":"13909:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"13866:16:75","nodeType":"YulIdentifier","src":"13866:16:75"},"nativeSrc":"13866:51:75","nodeType":"YulFunctionCall","src":"13866:51:75"},"variableNames":[{"name":"value1","nativeSrc":"13856:6:75","nodeType":"YulIdentifier","src":"13856:6:75"}]},{"nativeSrc":"13926:56:75","nodeType":"YulAssignment","src":"13926:56:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13967:9:75","nodeType":"YulIdentifier","src":"13967:9:75"},{"kind":"number","nativeSrc":"13978:2:75","nodeType":"YulLiteral","src":"13978:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13963:3:75","nodeType":"YulIdentifier","src":"13963:3:75"},"nativeSrc":"13963:18:75","nodeType":"YulFunctionCall","src":"13963:18:75"}],"functionName":{"name":"abi_decode_contract_IERC20","nativeSrc":"13936:26:75","nodeType":"YulIdentifier","src":"13936:26:75"},"nativeSrc":"13936:46:75","nodeType":"YulFunctionCall","src":"13936:46:75"},"variableNames":[{"name":"value2","nativeSrc":"13926:6:75","nodeType":"YulIdentifier","src":"13926:6:75"}]},{"nativeSrc":"13991:48:75","nodeType":"YulVariableDeclaration","src":"13991:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14024:9:75","nodeType":"YulIdentifier","src":"14024:9:75"},{"kind":"number","nativeSrc":"14035:2:75","nodeType":"YulLiteral","src":"14035:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14020:3:75","nodeType":"YulIdentifier","src":"14020:3:75"},"nativeSrc":"14020:18:75","nodeType":"YulFunctionCall","src":"14020:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"14007:12:75","nodeType":"YulIdentifier","src":"14007:12:75"},"nativeSrc":"14007:32:75","nodeType":"YulFunctionCall","src":"14007:32:75"},"variables":[{"name":"offset_2","nativeSrc":"13995:8:75","nodeType":"YulTypedName","src":"13995:8:75","type":""}]},{"body":{"nativeSrc":"14084:16:75","nodeType":"YulBlock","src":"14084:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14093:1:75","nodeType":"YulLiteral","src":"14093:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14096:1:75","nodeType":"YulLiteral","src":"14096:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14086:6:75","nodeType":"YulIdentifier","src":"14086:6:75"},"nativeSrc":"14086:12:75","nodeType":"YulFunctionCall","src":"14086:12:75"},"nativeSrc":"14086:12:75","nodeType":"YulExpressionStatement","src":"14086:12:75"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"14054:8:75","nodeType":"YulIdentifier","src":"14054:8:75"},{"kind":"number","nativeSrc":"14064:18:75","nodeType":"YulLiteral","src":"14064:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14051:2:75","nodeType":"YulIdentifier","src":"14051:2:75"},"nativeSrc":"14051:32:75","nodeType":"YulFunctionCall","src":"14051:32:75"},"nativeSrc":"14048:52:75","nodeType":"YulIf","src":"14048:52:75"},{"nativeSrc":"14109:90:75","nodeType":"YulAssignment","src":"14109:90:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14169:9:75","nodeType":"YulIdentifier","src":"14169:9:75"},{"name":"offset_2","nativeSrc":"14180:8:75","nodeType":"YulIdentifier","src":"14180:8:75"}],"functionName":{"name":"add","nativeSrc":"14165:3:75","nodeType":"YulIdentifier","src":"14165:3:75"},"nativeSrc":"14165:24:75","nodeType":"YulFunctionCall","src":"14165:24:75"},{"name":"dataEnd","nativeSrc":"14191:7:75","nodeType":"YulIdentifier","src":"14191:7:75"}],"functionName":{"name":"abi_decode_array_contract_IInvestStrategy_dyn","nativeSrc":"14119:45:75","nodeType":"YulIdentifier","src":"14119:45:75"},"nativeSrc":"14119:80:75","nodeType":"YulFunctionCall","src":"14119:80:75"},"variableNames":[{"name":"value3","nativeSrc":"14109:6:75","nodeType":"YulIdentifier","src":"14109:6:75"}]},{"nativeSrc":"14208:49:75","nodeType":"YulVariableDeclaration","src":"14208:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14241:9:75","nodeType":"YulIdentifier","src":"14241:9:75"},{"kind":"number","nativeSrc":"14252:3:75","nodeType":"YulLiteral","src":"14252:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14237:3:75","nodeType":"YulIdentifier","src":"14237:3:75"},"nativeSrc":"14237:19:75","nodeType":"YulFunctionCall","src":"14237:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"14224:12:75","nodeType":"YulIdentifier","src":"14224:12:75"},"nativeSrc":"14224:33:75","nodeType":"YulFunctionCall","src":"14224:33:75"},"variables":[{"name":"offset_3","nativeSrc":"14212:8:75","nodeType":"YulTypedName","src":"14212:8:75","type":""}]},{"body":{"nativeSrc":"14302:16:75","nodeType":"YulBlock","src":"14302:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14311:1:75","nodeType":"YulLiteral","src":"14311:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14314:1:75","nodeType":"YulLiteral","src":"14314:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14304:6:75","nodeType":"YulIdentifier","src":"14304:6:75"},"nativeSrc":"14304:12:75","nodeType":"YulFunctionCall","src":"14304:12:75"},"nativeSrc":"14304:12:75","nodeType":"YulExpressionStatement","src":"14304:12:75"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"14272:8:75","nodeType":"YulIdentifier","src":"14272:8:75"},{"kind":"number","nativeSrc":"14282:18:75","nodeType":"YulLiteral","src":"14282:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14269:2:75","nodeType":"YulIdentifier","src":"14269:2:75"},"nativeSrc":"14269:32:75","nodeType":"YulFunctionCall","src":"14269:32:75"},"nativeSrc":"14266:52:75","nodeType":"YulIf","src":"14266:52:75"},{"nativeSrc":"14327:71:75","nodeType":"YulAssignment","src":"14327:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14368:9:75","nodeType":"YulIdentifier","src":"14368:9:75"},{"name":"offset_3","nativeSrc":"14379:8:75","nodeType":"YulIdentifier","src":"14379:8:75"}],"functionName":{"name":"add","nativeSrc":"14364:3:75","nodeType":"YulIdentifier","src":"14364:3:75"},"nativeSrc":"14364:24:75","nodeType":"YulFunctionCall","src":"14364:24:75"},{"name":"dataEnd","nativeSrc":"14390:7:75","nodeType":"YulIdentifier","src":"14390:7:75"}],"functionName":{"name":"abi_decode_array_bytes_dyn","nativeSrc":"14337:26:75","nodeType":"YulIdentifier","src":"14337:26:75"},"nativeSrc":"14337:61:75","nodeType":"YulFunctionCall","src":"14337:61:75"},"variableNames":[{"name":"value4","nativeSrc":"14327:6:75","nodeType":"YulIdentifier","src":"14327:6:75"}]},{"nativeSrc":"14407:49:75","nodeType":"YulVariableDeclaration","src":"14407:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14440:9:75","nodeType":"YulIdentifier","src":"14440:9:75"},{"kind":"number","nativeSrc":"14451:3:75","nodeType":"YulLiteral","src":"14451:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14436:3:75","nodeType":"YulIdentifier","src":"14436:3:75"},"nativeSrc":"14436:19:75","nodeType":"YulFunctionCall","src":"14436:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"14423:12:75","nodeType":"YulIdentifier","src":"14423:12:75"},"nativeSrc":"14423:33:75","nodeType":"YulFunctionCall","src":"14423:33:75"},"variables":[{"name":"offset_4","nativeSrc":"14411:8:75","nodeType":"YulTypedName","src":"14411:8:75","type":""}]},{"body":{"nativeSrc":"14501:16:75","nodeType":"YulBlock","src":"14501:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14510:1:75","nodeType":"YulLiteral","src":"14510:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14513:1:75","nodeType":"YulLiteral","src":"14513:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14503:6:75","nodeType":"YulIdentifier","src":"14503:6:75"},"nativeSrc":"14503:12:75","nodeType":"YulFunctionCall","src":"14503:12:75"},"nativeSrc":"14503:12:75","nodeType":"YulExpressionStatement","src":"14503:12:75"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"14471:8:75","nodeType":"YulIdentifier","src":"14471:8:75"},{"kind":"number","nativeSrc":"14481:18:75","nodeType":"YulLiteral","src":"14481:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14468:2:75","nodeType":"YulIdentifier","src":"14468:2:75"},"nativeSrc":"14468:32:75","nodeType":"YulFunctionCall","src":"14468:32:75"},"nativeSrc":"14465:52:75","nodeType":"YulIf","src":"14465:52:75"},{"nativeSrc":"14526:71:75","nodeType":"YulAssignment","src":"14526:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14567:9:75","nodeType":"YulIdentifier","src":"14567:9:75"},{"name":"offset_4","nativeSrc":"14578:8:75","nodeType":"YulIdentifier","src":"14578:8:75"}],"functionName":{"name":"add","nativeSrc":"14563:3:75","nodeType":"YulIdentifier","src":"14563:3:75"},"nativeSrc":"14563:24:75","nodeType":"YulFunctionCall","src":"14563:24:75"},{"name":"dataEnd","nativeSrc":"14589:7:75","nodeType":"YulIdentifier","src":"14589:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"14536:26:75","nodeType":"YulIdentifier","src":"14536:26:75"},"nativeSrc":"14536:61:75","nodeType":"YulFunctionCall","src":"14536:61:75"},"variableNames":[{"name":"value5","nativeSrc":"14526:6:75","nodeType":"YulIdentifier","src":"14526:6:75"}]},{"nativeSrc":"14606:49:75","nodeType":"YulVariableDeclaration","src":"14606:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14639:9:75","nodeType":"YulIdentifier","src":"14639:9:75"},{"kind":"number","nativeSrc":"14650:3:75","nodeType":"YulLiteral","src":"14650:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14635:3:75","nodeType":"YulIdentifier","src":"14635:3:75"},"nativeSrc":"14635:19:75","nodeType":"YulFunctionCall","src":"14635:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"14622:12:75","nodeType":"YulIdentifier","src":"14622:12:75"},"nativeSrc":"14622:33:75","nodeType":"YulFunctionCall","src":"14622:33:75"},"variables":[{"name":"offset_5","nativeSrc":"14610:8:75","nodeType":"YulTypedName","src":"14610:8:75","type":""}]},{"body":{"nativeSrc":"14700:16:75","nodeType":"YulBlock","src":"14700:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14709:1:75","nodeType":"YulLiteral","src":"14709:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14712:1:75","nodeType":"YulLiteral","src":"14712:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14702:6:75","nodeType":"YulIdentifier","src":"14702:6:75"},"nativeSrc":"14702:12:75","nodeType":"YulFunctionCall","src":"14702:12:75"},"nativeSrc":"14702:12:75","nodeType":"YulExpressionStatement","src":"14702:12:75"}]},"condition":{"arguments":[{"name":"offset_5","nativeSrc":"14670:8:75","nodeType":"YulIdentifier","src":"14670:8:75"},{"kind":"number","nativeSrc":"14680:18:75","nodeType":"YulLiteral","src":"14680:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14667:2:75","nodeType":"YulIdentifier","src":"14667:2:75"},"nativeSrc":"14667:32:75","nodeType":"YulFunctionCall","src":"14667:32:75"},"nativeSrc":"14664:52:75","nodeType":"YulIf","src":"14664:52:75"},{"nativeSrc":"14725:71:75","nodeType":"YulAssignment","src":"14725:71:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14766:9:75","nodeType":"YulIdentifier","src":"14766:9:75"},{"name":"offset_5","nativeSrc":"14777:8:75","nodeType":"YulIdentifier","src":"14777:8:75"}],"functionName":{"name":"add","nativeSrc":"14762:3:75","nodeType":"YulIdentifier","src":"14762:3:75"},"nativeSrc":"14762:24:75","nodeType":"YulFunctionCall","src":"14762:24:75"},{"name":"dataEnd","nativeSrc":"14788:7:75","nodeType":"YulIdentifier","src":"14788:7:75"}],"functionName":{"name":"abi_decode_array_uint8_dyn","nativeSrc":"14735:26:75","nodeType":"YulIdentifier","src":"14735:26:75"},"nativeSrc":"14735:61:75","nodeType":"YulFunctionCall","src":"14735:61:75"},"variableNames":[{"name":"value6","nativeSrc":"14725:6:75","nodeType":"YulIdentifier","src":"14725:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_contract$_IERC20_$8656t_array$_t_contract$_IInvestStrategy_$22374_$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:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13411:9:75","nodeType":"YulTypedName","src":"13411:9:75","type":""},{"name":"dataEnd","nativeSrc":"13422:7:75","nodeType":"YulTypedName","src":"13422:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13434:6:75","nodeType":"YulTypedName","src":"13434:6:75","type":""},{"name":"value1","nativeSrc":"13442:6:75","nodeType":"YulTypedName","src":"13442:6:75","type":""},{"name":"value2","nativeSrc":"13450:6:75","nodeType":"YulTypedName","src":"13450:6:75","type":""},{"name":"value3","nativeSrc":"13458:6:75","nodeType":"YulTypedName","src":"13458:6:75","type":""},{"name":"value4","nativeSrc":"13466:6:75","nodeType":"YulTypedName","src":"13466:6:75","type":""},{"name":"value5","nativeSrc":"13474:6:75","nodeType":"YulTypedName","src":"13474:6:75","type":""},{"name":"value6","nativeSrc":"13482:6:75","nodeType":"YulTypedName","src":"13482:6:75","type":""}],"src":"13156:1646:75"},{"body":{"nativeSrc":"14911:404:75","nodeType":"YulBlock","src":"14911:404:75","statements":[{"body":{"nativeSrc":"14957:16:75","nodeType":"YulBlock","src":"14957:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14966:1:75","nodeType":"YulLiteral","src":"14966:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14969:1:75","nodeType":"YulLiteral","src":"14969:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14959:6:75","nodeType":"YulIdentifier","src":"14959:6:75"},"nativeSrc":"14959:12:75","nodeType":"YulFunctionCall","src":"14959:12:75"},"nativeSrc":"14959:12:75","nodeType":"YulExpressionStatement","src":"14959:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14932:7:75","nodeType":"YulIdentifier","src":"14932:7:75"},{"name":"headStart","nativeSrc":"14941:9:75","nodeType":"YulIdentifier","src":"14941:9:75"}],"functionName":{"name":"sub","nativeSrc":"14928:3:75","nodeType":"YulIdentifier","src":"14928:3:75"},"nativeSrc":"14928:23:75","nodeType":"YulFunctionCall","src":"14928:23:75"},{"kind":"number","nativeSrc":"14953:2:75","nodeType":"YulLiteral","src":"14953:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14924:3:75","nodeType":"YulIdentifier","src":"14924:3:75"},"nativeSrc":"14924:32:75","nodeType":"YulFunctionCall","src":"14924:32:75"},"nativeSrc":"14921:52:75","nodeType":"YulIf","src":"14921:52:75"},{"nativeSrc":"14982:14:75","nodeType":"YulVariableDeclaration","src":"14982:14:75","value":{"kind":"number","nativeSrc":"14995:1:75","nodeType":"YulLiteral","src":"14995:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"14986:5:75","nodeType":"YulTypedName","src":"14986:5:75","type":""}]},{"nativeSrc":"15005:32:75","nodeType":"YulAssignment","src":"15005:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15027:9:75","nodeType":"YulIdentifier","src":"15027:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"15014:12:75","nodeType":"YulIdentifier","src":"15014:12:75"},"nativeSrc":"15014:23:75","nodeType":"YulFunctionCall","src":"15014:23:75"},"variableNames":[{"name":"value","nativeSrc":"15005:5:75","nodeType":"YulIdentifier","src":"15005:5:75"}]},{"nativeSrc":"15046:15:75","nodeType":"YulAssignment","src":"15046:15:75","value":{"name":"value","nativeSrc":"15056:5:75","nodeType":"YulIdentifier","src":"15056:5:75"},"variableNames":[{"name":"value0","nativeSrc":"15046:6:75","nodeType":"YulIdentifier","src":"15046:6:75"}]},{"nativeSrc":"15070:47:75","nodeType":"YulVariableDeclaration","src":"15070:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15102:9:75","nodeType":"YulIdentifier","src":"15102:9:75"},{"kind":"number","nativeSrc":"15113:2:75","nodeType":"YulLiteral","src":"15113:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15098:3:75","nodeType":"YulIdentifier","src":"15098:3:75"},"nativeSrc":"15098:18:75","nodeType":"YulFunctionCall","src":"15098:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"15085:12:75","nodeType":"YulIdentifier","src":"15085:12:75"},"nativeSrc":"15085:32:75","nodeType":"YulFunctionCall","src":"15085:32:75"},"variables":[{"name":"value_1","nativeSrc":"15074:7:75","nodeType":"YulTypedName","src":"15074:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"15151:7:75","nodeType":"YulIdentifier","src":"15151:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15126:24:75","nodeType":"YulIdentifier","src":"15126:24:75"},"nativeSrc":"15126:33:75","nodeType":"YulFunctionCall","src":"15126:33:75"},"nativeSrc":"15126:33:75","nodeType":"YulExpressionStatement","src":"15126:33:75"},{"nativeSrc":"15168:17:75","nodeType":"YulAssignment","src":"15168:17:75","value":{"name":"value_1","nativeSrc":"15178:7:75","nodeType":"YulIdentifier","src":"15178:7:75"},"variableNames":[{"name":"value1","nativeSrc":"15168:6:75","nodeType":"YulIdentifier","src":"15168:6:75"}]},{"nativeSrc":"15194:47:75","nodeType":"YulVariableDeclaration","src":"15194:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15226:9:75","nodeType":"YulIdentifier","src":"15226:9:75"},{"kind":"number","nativeSrc":"15237:2:75","nodeType":"YulLiteral","src":"15237:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15222:3:75","nodeType":"YulIdentifier","src":"15222:3:75"},"nativeSrc":"15222:18:75","nodeType":"YulFunctionCall","src":"15222:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"15209:12:75","nodeType":"YulIdentifier","src":"15209:12:75"},"nativeSrc":"15209:32:75","nodeType":"YulFunctionCall","src":"15209:32:75"},"variables":[{"name":"value_2","nativeSrc":"15198:7:75","nodeType":"YulTypedName","src":"15198:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"15275:7:75","nodeType":"YulIdentifier","src":"15275:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15250:24:75","nodeType":"YulIdentifier","src":"15250:24:75"},"nativeSrc":"15250:33:75","nodeType":"YulFunctionCall","src":"15250:33:75"},"nativeSrc":"15250:33:75","nodeType":"YulExpressionStatement","src":"15250:33:75"},{"nativeSrc":"15292:17:75","nodeType":"YulAssignment","src":"15292:17:75","value":{"name":"value_2","nativeSrc":"15302:7:75","nodeType":"YulIdentifier","src":"15302:7:75"},"variableNames":[{"name":"value2","nativeSrc":"15292:6:75","nodeType":"YulIdentifier","src":"15292:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"14807:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14861:9:75","nodeType":"YulTypedName","src":"14861:9:75","type":""},{"name":"dataEnd","nativeSrc":"14872:7:75","nodeType":"YulTypedName","src":"14872:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14884:6:75","nodeType":"YulTypedName","src":"14884:6:75","type":""},{"name":"value1","nativeSrc":"14892:6:75","nodeType":"YulTypedName","src":"14892:6:75","type":""},{"name":"value2","nativeSrc":"14900:6:75","nodeType":"YulTypedName","src":"14900:6:75","type":""}],"src":"14807:508:75"},{"body":{"nativeSrc":"15494:352:75","nodeType":"YulBlock","src":"15494:352:75","statements":[{"nativeSrc":"15504:28:75","nodeType":"YulAssignment","src":"15504:28:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15516:9:75","nodeType":"YulIdentifier","src":"15516:9:75"},{"kind":"number","nativeSrc":"15527:4:75","nodeType":"YulLiteral","src":"15527:4:75","type":"","value":"1024"}],"functionName":{"name":"add","nativeSrc":"15512:3:75","nodeType":"YulIdentifier","src":"15512:3:75"},"nativeSrc":"15512:20:75","nodeType":"YulFunctionCall","src":"15512:20:75"},"variableNames":[{"name":"tail","nativeSrc":"15504:4:75","nodeType":"YulIdentifier","src":"15504:4:75"}]},{"nativeSrc":"15541:20:75","nodeType":"YulVariableDeclaration","src":"15541:20:75","value":{"name":"headStart","nativeSrc":"15552:9:75","nodeType":"YulIdentifier","src":"15552:9:75"},"variables":[{"name":"pos","nativeSrc":"15545:3:75","nodeType":"YulTypedName","src":"15545:3:75","type":""}]},{"nativeSrc":"15570:16:75","nodeType":"YulAssignment","src":"15570:16:75","value":{"name":"headStart","nativeSrc":"15577:9:75","nodeType":"YulIdentifier","src":"15577:9:75"},"variableNames":[{"name":"pos","nativeSrc":"15570:3:75","nodeType":"YulIdentifier","src":"15570:3:75"}]},{"nativeSrc":"15595:20:75","nodeType":"YulVariableDeclaration","src":"15595:20:75","value":{"name":"value0","nativeSrc":"15609:6:75","nodeType":"YulIdentifier","src":"15609:6:75"},"variables":[{"name":"srcPtr","nativeSrc":"15599:6:75","nodeType":"YulTypedName","src":"15599:6:75","type":""}]},{"nativeSrc":"15624:10:75","nodeType":"YulVariableDeclaration","src":"15624:10:75","value":{"kind":"number","nativeSrc":"15633:1:75","nodeType":"YulLiteral","src":"15633:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15628:1:75","nodeType":"YulTypedName","src":"15628:1:75","type":""}]},{"body":{"nativeSrc":"15690:150:75","nodeType":"YulBlock","src":"15690:150:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15711:3:75","nodeType":"YulIdentifier","src":"15711:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"15726:6:75","nodeType":"YulIdentifier","src":"15726:6:75"}],"functionName":{"name":"mload","nativeSrc":"15720:5:75","nodeType":"YulIdentifier","src":"15720:5:75"},"nativeSrc":"15720:13:75","nodeType":"YulFunctionCall","src":"15720:13:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15743:3:75","nodeType":"YulLiteral","src":"15743:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"15748:1:75","nodeType":"YulLiteral","src":"15748:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15739:3:75","nodeType":"YulIdentifier","src":"15739:3:75"},"nativeSrc":"15739:11:75","nodeType":"YulFunctionCall","src":"15739:11:75"},{"kind":"number","nativeSrc":"15752:1:75","nodeType":"YulLiteral","src":"15752:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15735:3:75","nodeType":"YulIdentifier","src":"15735:3:75"},"nativeSrc":"15735:19:75","nodeType":"YulFunctionCall","src":"15735:19:75"}],"functionName":{"name":"and","nativeSrc":"15716:3:75","nodeType":"YulIdentifier","src":"15716:3:75"},"nativeSrc":"15716:39:75","nodeType":"YulFunctionCall","src":"15716:39:75"}],"functionName":{"name":"mstore","nativeSrc":"15704:6:75","nodeType":"YulIdentifier","src":"15704:6:75"},"nativeSrc":"15704:52:75","nodeType":"YulFunctionCall","src":"15704:52:75"},"nativeSrc":"15704:52:75","nodeType":"YulExpressionStatement","src":"15704:52:75"},{"nativeSrc":"15769:21:75","nodeType":"YulAssignment","src":"15769:21:75","value":{"arguments":[{"name":"pos","nativeSrc":"15780:3:75","nodeType":"YulIdentifier","src":"15780:3:75"},{"kind":"number","nativeSrc":"15785:4:75","nodeType":"YulLiteral","src":"15785:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15776:3:75","nodeType":"YulIdentifier","src":"15776:3:75"},"nativeSrc":"15776:14:75","nodeType":"YulFunctionCall","src":"15776:14:75"},"variableNames":[{"name":"pos","nativeSrc":"15769:3:75","nodeType":"YulIdentifier","src":"15769:3:75"}]},{"nativeSrc":"15803:27:75","nodeType":"YulAssignment","src":"15803:27:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"15817:6:75","nodeType":"YulIdentifier","src":"15817:6:75"},{"kind":"number","nativeSrc":"15825:4:75","nodeType":"YulLiteral","src":"15825:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15813:3:75","nodeType":"YulIdentifier","src":"15813:3:75"},"nativeSrc":"15813:17:75","nodeType":"YulFunctionCall","src":"15813:17:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"15803:6:75","nodeType":"YulIdentifier","src":"15803:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15654:1:75","nodeType":"YulIdentifier","src":"15654:1:75"},{"kind":"number","nativeSrc":"15657:4:75","nodeType":"YulLiteral","src":"15657:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"15651:2:75","nodeType":"YulIdentifier","src":"15651:2:75"},"nativeSrc":"15651:11:75","nodeType":"YulFunctionCall","src":"15651:11:75"},"nativeSrc":"15643:197:75","nodeType":"YulForLoop","post":{"nativeSrc":"15663:18:75","nodeType":"YulBlock","src":"15663:18:75","statements":[{"nativeSrc":"15665:14:75","nodeType":"YulAssignment","src":"15665:14:75","value":{"arguments":[{"name":"i","nativeSrc":"15674:1:75","nodeType":"YulIdentifier","src":"15674:1:75"},{"kind":"number","nativeSrc":"15677:1:75","nodeType":"YulLiteral","src":"15677:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15670:3:75","nodeType":"YulIdentifier","src":"15670:3:75"},"nativeSrc":"15670:9:75","nodeType":"YulFunctionCall","src":"15670:9:75"},"variableNames":[{"name":"i","nativeSrc":"15665:1:75","nodeType":"YulIdentifier","src":"15665:1:75"}]}]},"pre":{"nativeSrc":"15647:3:75","nodeType":"YulBlock","src":"15647:3:75","statements":[]},"src":"15643:197:75"}]},"name":"abi_encode_tuple_t_array$_t_contract$_IInvestStrategy_$22374_$32_memory_ptr__to_t_array$_t_address_$32_memory_ptr__fromStack_reversed","nativeSrc":"15320:526:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15463:9:75","nodeType":"YulTypedName","src":"15463:9:75","type":""},{"name":"value0","nativeSrc":"15474:6:75","nodeType":"YulTypedName","src":"15474:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15485:4:75","nodeType":"YulTypedName","src":"15485:4:75","type":""}],"src":"15320:526:75"},{"body":{"nativeSrc":"15938:301:75","nodeType":"YulBlock","src":"15938:301:75","statements":[{"body":{"nativeSrc":"15984:16:75","nodeType":"YulBlock","src":"15984:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15993:1:75","nodeType":"YulLiteral","src":"15993:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15996:1:75","nodeType":"YulLiteral","src":"15996:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15986:6:75","nodeType":"YulIdentifier","src":"15986:6:75"},"nativeSrc":"15986:12:75","nodeType":"YulFunctionCall","src":"15986:12:75"},"nativeSrc":"15986:12:75","nodeType":"YulExpressionStatement","src":"15986:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15959:7:75","nodeType":"YulIdentifier","src":"15959:7:75"},{"name":"headStart","nativeSrc":"15968:9:75","nodeType":"YulIdentifier","src":"15968:9:75"}],"functionName":{"name":"sub","nativeSrc":"15955:3:75","nodeType":"YulIdentifier","src":"15955:3:75"},"nativeSrc":"15955:23:75","nodeType":"YulFunctionCall","src":"15955:23:75"},{"kind":"number","nativeSrc":"15980:2:75","nodeType":"YulLiteral","src":"15980:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"15951:3:75","nodeType":"YulIdentifier","src":"15951:3:75"},"nativeSrc":"15951:32:75","nodeType":"YulFunctionCall","src":"15951:32:75"},"nativeSrc":"15948:52:75","nodeType":"YulIf","src":"15948:52:75"},{"nativeSrc":"16009:36:75","nodeType":"YulVariableDeclaration","src":"16009:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16035:9:75","nodeType":"YulIdentifier","src":"16035:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"16022:12:75","nodeType":"YulIdentifier","src":"16022:12:75"},"nativeSrc":"16022:23:75","nodeType":"YulFunctionCall","src":"16022:23:75"},"variables":[{"name":"value","nativeSrc":"16013:5:75","nodeType":"YulTypedName","src":"16013:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16079:5:75","nodeType":"YulIdentifier","src":"16079:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16054:24:75","nodeType":"YulIdentifier","src":"16054:24:75"},"nativeSrc":"16054:31:75","nodeType":"YulFunctionCall","src":"16054:31:75"},"nativeSrc":"16054:31:75","nodeType":"YulExpressionStatement","src":"16054:31:75"},{"nativeSrc":"16094:15:75","nodeType":"YulAssignment","src":"16094:15:75","value":{"name":"value","nativeSrc":"16104:5:75","nodeType":"YulIdentifier","src":"16104:5:75"},"variableNames":[{"name":"value0","nativeSrc":"16094:6:75","nodeType":"YulIdentifier","src":"16094:6:75"}]},{"nativeSrc":"16118:47:75","nodeType":"YulVariableDeclaration","src":"16118:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16150:9:75","nodeType":"YulIdentifier","src":"16150:9:75"},{"kind":"number","nativeSrc":"16161:2:75","nodeType":"YulLiteral","src":"16161:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16146:3:75","nodeType":"YulIdentifier","src":"16146:3:75"},"nativeSrc":"16146:18:75","nodeType":"YulFunctionCall","src":"16146:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"16133:12:75","nodeType":"YulIdentifier","src":"16133:12:75"},"nativeSrc":"16133:32:75","nodeType":"YulFunctionCall","src":"16133:32:75"},"variables":[{"name":"value_1","nativeSrc":"16122:7:75","nodeType":"YulTypedName","src":"16122:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"16199:7:75","nodeType":"YulIdentifier","src":"16199:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16174:24:75","nodeType":"YulIdentifier","src":"16174:24:75"},"nativeSrc":"16174:33:75","nodeType":"YulFunctionCall","src":"16174:33:75"},"nativeSrc":"16174:33:75","nodeType":"YulExpressionStatement","src":"16174:33:75"},{"nativeSrc":"16216:17:75","nodeType":"YulAssignment","src":"16216:17:75","value":{"name":"value_1","nativeSrc":"16226:7:75","nodeType":"YulIdentifier","src":"16226:7:75"},"variableNames":[{"name":"value1","nativeSrc":"16216:6:75","nodeType":"YulIdentifier","src":"16216:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"15851:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15896:9:75","nodeType":"YulTypedName","src":"15896:9:75","type":""},{"name":"dataEnd","nativeSrc":"15907:7:75","nodeType":"YulTypedName","src":"15907:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15919:6:75","nodeType":"YulTypedName","src":"15919:6:75","type":""},{"name":"value1","nativeSrc":"15927:6:75","nodeType":"YulTypedName","src":"15927:6:75","type":""}],"src":"15851:388:75"},{"body":{"nativeSrc":"16344:266:75","nodeType":"YulBlock","src":"16344:266:75","statements":[{"body":{"nativeSrc":"16390:16:75","nodeType":"YulBlock","src":"16390:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16399:1:75","nodeType":"YulLiteral","src":"16399:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16402:1:75","nodeType":"YulLiteral","src":"16402:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16392:6:75","nodeType":"YulIdentifier","src":"16392:6:75"},"nativeSrc":"16392:12:75","nodeType":"YulFunctionCall","src":"16392:12:75"},"nativeSrc":"16392:12:75","nodeType":"YulExpressionStatement","src":"16392:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16365:7:75","nodeType":"YulIdentifier","src":"16365:7:75"},{"name":"headStart","nativeSrc":"16374:9:75","nodeType":"YulIdentifier","src":"16374:9:75"}],"functionName":{"name":"sub","nativeSrc":"16361:3:75","nodeType":"YulIdentifier","src":"16361:3:75"},"nativeSrc":"16361:23:75","nodeType":"YulFunctionCall","src":"16361:23:75"},{"kind":"number","nativeSrc":"16386:2:75","nodeType":"YulLiteral","src":"16386:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"16357:3:75","nodeType":"YulIdentifier","src":"16357:3:75"},"nativeSrc":"16357:32:75","nodeType":"YulFunctionCall","src":"16357:32:75"},"nativeSrc":"16354:52:75","nodeType":"YulIf","src":"16354:52:75"},{"nativeSrc":"16415:37:75","nodeType":"YulAssignment","src":"16415:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16442:9:75","nodeType":"YulIdentifier","src":"16442:9:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"16425:16:75","nodeType":"YulIdentifier","src":"16425:16:75"},"nativeSrc":"16425:27:75","nodeType":"YulFunctionCall","src":"16425:27:75"},"variableNames":[{"name":"value0","nativeSrc":"16415:6:75","nodeType":"YulIdentifier","src":"16415:6:75"}]},{"nativeSrc":"16461:46:75","nodeType":"YulAssignment","src":"16461:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16492:9:75","nodeType":"YulIdentifier","src":"16492:9:75"},{"kind":"number","nativeSrc":"16503:2:75","nodeType":"YulLiteral","src":"16503:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16488:3:75","nodeType":"YulIdentifier","src":"16488:3:75"},"nativeSrc":"16488:18:75","nodeType":"YulFunctionCall","src":"16488:18:75"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"16471:16:75","nodeType":"YulIdentifier","src":"16471:16:75"},"nativeSrc":"16471:36:75","nodeType":"YulFunctionCall","src":"16471:36:75"},"variableNames":[{"name":"value1","nativeSrc":"16461:6:75","nodeType":"YulIdentifier","src":"16461:6:75"}]},{"nativeSrc":"16516:14:75","nodeType":"YulVariableDeclaration","src":"16516:14:75","value":{"kind":"number","nativeSrc":"16529:1:75","nodeType":"YulLiteral","src":"16529:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"16520:5:75","nodeType":"YulTypedName","src":"16520:5:75","type":""}]},{"nativeSrc":"16539:41:75","nodeType":"YulAssignment","src":"16539:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16565:9:75","nodeType":"YulIdentifier","src":"16565:9:75"},{"kind":"number","nativeSrc":"16576:2:75","nodeType":"YulLiteral","src":"16576:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16561:3:75","nodeType":"YulIdentifier","src":"16561:3:75"},"nativeSrc":"16561:18:75","nodeType":"YulFunctionCall","src":"16561:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"16548:12:75","nodeType":"YulIdentifier","src":"16548:12:75"},"nativeSrc":"16548:32:75","nodeType":"YulFunctionCall","src":"16548:32:75"},"variableNames":[{"name":"value","nativeSrc":"16539:5:75","nodeType":"YulIdentifier","src":"16539:5:75"}]},{"nativeSrc":"16589:15:75","nodeType":"YulAssignment","src":"16589:15:75","value":{"name":"value","nativeSrc":"16599:5:75","nodeType":"YulIdentifier","src":"16599:5:75"},"variableNames":[{"name":"value2","nativeSrc":"16589:6:75","nodeType":"YulIdentifier","src":"16589:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_uint8t_uint256","nativeSrc":"16244:366:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16294:9:75","nodeType":"YulTypedName","src":"16294:9:75","type":""},{"name":"dataEnd","nativeSrc":"16305:7:75","nodeType":"YulTypedName","src":"16305:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16317:6:75","nodeType":"YulTypedName","src":"16317:6:75","type":""},{"name":"value1","nativeSrc":"16325:6:75","nodeType":"YulTypedName","src":"16325:6:75","type":""},{"name":"value2","nativeSrc":"16333:6:75","nodeType":"YulTypedName","src":"16333:6:75","type":""}],"src":"16244:366:75"},{"body":{"nativeSrc":"16670:325:75","nodeType":"YulBlock","src":"16670:325:75","statements":[{"nativeSrc":"16680:22:75","nodeType":"YulAssignment","src":"16680:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"16694:1:75","nodeType":"YulLiteral","src":"16694:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"16697:4:75","nodeType":"YulIdentifier","src":"16697:4:75"}],"functionName":{"name":"shr","nativeSrc":"16690:3:75","nodeType":"YulIdentifier","src":"16690:3:75"},"nativeSrc":"16690:12:75","nodeType":"YulFunctionCall","src":"16690:12:75"},"variableNames":[{"name":"length","nativeSrc":"16680:6:75","nodeType":"YulIdentifier","src":"16680:6:75"}]},{"nativeSrc":"16711:38:75","nodeType":"YulVariableDeclaration","src":"16711:38:75","value":{"arguments":[{"name":"data","nativeSrc":"16741:4:75","nodeType":"YulIdentifier","src":"16741:4:75"},{"kind":"number","nativeSrc":"16747:1:75","nodeType":"YulLiteral","src":"16747:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"16737:3:75","nodeType":"YulIdentifier","src":"16737:3:75"},"nativeSrc":"16737:12:75","nodeType":"YulFunctionCall","src":"16737:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"16715:18:75","nodeType":"YulTypedName","src":"16715:18:75","type":""}]},{"body":{"nativeSrc":"16788:31:75","nodeType":"YulBlock","src":"16788:31:75","statements":[{"nativeSrc":"16790:27:75","nodeType":"YulAssignment","src":"16790:27:75","value":{"arguments":[{"name":"length","nativeSrc":"16804:6:75","nodeType":"YulIdentifier","src":"16804:6:75"},{"kind":"number","nativeSrc":"16812:4:75","nodeType":"YulLiteral","src":"16812:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"16800:3:75","nodeType":"YulIdentifier","src":"16800:3:75"},"nativeSrc":"16800:17:75","nodeType":"YulFunctionCall","src":"16800:17:75"},"variableNames":[{"name":"length","nativeSrc":"16790:6:75","nodeType":"YulIdentifier","src":"16790:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"16768:18:75","nodeType":"YulIdentifier","src":"16768:18:75"}],"functionName":{"name":"iszero","nativeSrc":"16761:6:75","nodeType":"YulIdentifier","src":"16761:6:75"},"nativeSrc":"16761:26:75","nodeType":"YulFunctionCall","src":"16761:26:75"},"nativeSrc":"16758:61:75","nodeType":"YulIf","src":"16758:61:75"},{"body":{"nativeSrc":"16878:111:75","nodeType":"YulBlock","src":"16878:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16899:1:75","nodeType":"YulLiteral","src":"16899:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16906:3:75","nodeType":"YulLiteral","src":"16906:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16911:10:75","nodeType":"YulLiteral","src":"16911:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16902:3:75","nodeType":"YulIdentifier","src":"16902:3:75"},"nativeSrc":"16902:20:75","nodeType":"YulFunctionCall","src":"16902:20:75"}],"functionName":{"name":"mstore","nativeSrc":"16892:6:75","nodeType":"YulIdentifier","src":"16892:6:75"},"nativeSrc":"16892:31:75","nodeType":"YulFunctionCall","src":"16892:31:75"},"nativeSrc":"16892:31:75","nodeType":"YulExpressionStatement","src":"16892:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16943:1:75","nodeType":"YulLiteral","src":"16943:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"16946:4:75","nodeType":"YulLiteral","src":"16946:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"16936:6:75","nodeType":"YulIdentifier","src":"16936:6:75"},"nativeSrc":"16936:15:75","nodeType":"YulFunctionCall","src":"16936:15:75"},"nativeSrc":"16936:15:75","nodeType":"YulExpressionStatement","src":"16936:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16971:1:75","nodeType":"YulLiteral","src":"16971:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16974:4:75","nodeType":"YulLiteral","src":"16974:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16964:6:75","nodeType":"YulIdentifier","src":"16964:6:75"},"nativeSrc":"16964:15:75","nodeType":"YulFunctionCall","src":"16964:15:75"},"nativeSrc":"16964:15:75","nodeType":"YulExpressionStatement","src":"16964:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"16834:18:75","nodeType":"YulIdentifier","src":"16834:18:75"},{"arguments":[{"name":"length","nativeSrc":"16857:6:75","nodeType":"YulIdentifier","src":"16857:6:75"},{"kind":"number","nativeSrc":"16865:2:75","nodeType":"YulLiteral","src":"16865:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"16854:2:75","nodeType":"YulIdentifier","src":"16854:2:75"},"nativeSrc":"16854:14:75","nodeType":"YulFunctionCall","src":"16854:14:75"}],"functionName":{"name":"eq","nativeSrc":"16831:2:75","nodeType":"YulIdentifier","src":"16831:2:75"},"nativeSrc":"16831:38:75","nodeType":"YulFunctionCall","src":"16831:38:75"},"nativeSrc":"16828:161:75","nodeType":"YulIf","src":"16828:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"16615:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"16650:4:75","nodeType":"YulTypedName","src":"16650:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"16659:6:75","nodeType":"YulTypedName","src":"16659:6:75","type":""}],"src":"16615:380:75"},{"body":{"nativeSrc":"17129:119:75","nodeType":"YulBlock","src":"17129:119:75","statements":[{"nativeSrc":"17139:26:75","nodeType":"YulAssignment","src":"17139:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17151:9:75","nodeType":"YulIdentifier","src":"17151:9:75"},{"kind":"number","nativeSrc":"17162:2:75","nodeType":"YulLiteral","src":"17162:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17147:3:75","nodeType":"YulIdentifier","src":"17147:3:75"},"nativeSrc":"17147:18:75","nodeType":"YulFunctionCall","src":"17147:18:75"},"variableNames":[{"name":"tail","nativeSrc":"17139:4:75","nodeType":"YulIdentifier","src":"17139:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17181:9:75","nodeType":"YulIdentifier","src":"17181:9:75"},{"name":"value0","nativeSrc":"17192:6:75","nodeType":"YulIdentifier","src":"17192:6:75"}],"functionName":{"name":"mstore","nativeSrc":"17174:6:75","nodeType":"YulIdentifier","src":"17174:6:75"},"nativeSrc":"17174:25:75","nodeType":"YulFunctionCall","src":"17174:25:75"},"nativeSrc":"17174:25:75","nodeType":"YulExpressionStatement","src":"17174:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17219:9:75","nodeType":"YulIdentifier","src":"17219:9:75"},{"kind":"number","nativeSrc":"17230:2:75","nodeType":"YulLiteral","src":"17230:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17215:3:75","nodeType":"YulIdentifier","src":"17215:3:75"},"nativeSrc":"17215:18:75","nodeType":"YulFunctionCall","src":"17215:18:75"},{"name":"value1","nativeSrc":"17235:6:75","nodeType":"YulIdentifier","src":"17235:6:75"}],"functionName":{"name":"mstore","nativeSrc":"17208:6:75","nodeType":"YulIdentifier","src":"17208:6:75"},"nativeSrc":"17208:34:75","nodeType":"YulFunctionCall","src":"17208:34:75"},"nativeSrc":"17208:34:75","nodeType":"YulExpressionStatement","src":"17208:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17000:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17090:9:75","nodeType":"YulTypedName","src":"17090:9:75","type":""},{"name":"value1","nativeSrc":"17101:6:75","nodeType":"YulTypedName","src":"17101:6:75","type":""},{"name":"value0","nativeSrc":"17109:6:75","nodeType":"YulTypedName","src":"17109:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17120:4:75","nodeType":"YulTypedName","src":"17120:4:75","type":""}],"src":"17000:248:75"},{"body":{"nativeSrc":"17285:95:75","nodeType":"YulBlock","src":"17285:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17302:1:75","nodeType":"YulLiteral","src":"17302:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"17309:3:75","nodeType":"YulLiteral","src":"17309:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17314:10:75","nodeType":"YulLiteral","src":"17314:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"17305:3:75","nodeType":"YulIdentifier","src":"17305:3:75"},"nativeSrc":"17305:20:75","nodeType":"YulFunctionCall","src":"17305:20:75"}],"functionName":{"name":"mstore","nativeSrc":"17295:6:75","nodeType":"YulIdentifier","src":"17295:6:75"},"nativeSrc":"17295:31:75","nodeType":"YulFunctionCall","src":"17295:31:75"},"nativeSrc":"17295:31:75","nodeType":"YulExpressionStatement","src":"17295:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17342:1:75","nodeType":"YulLiteral","src":"17342:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"17345:4:75","nodeType":"YulLiteral","src":"17345:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"17335:6:75","nodeType":"YulIdentifier","src":"17335:6:75"},"nativeSrc":"17335:15:75","nodeType":"YulFunctionCall","src":"17335:15:75"},"nativeSrc":"17335:15:75","nodeType":"YulExpressionStatement","src":"17335:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17366:1:75","nodeType":"YulLiteral","src":"17366:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"17369:4:75","nodeType":"YulLiteral","src":"17369:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17359:6:75","nodeType":"YulIdentifier","src":"17359:6:75"},"nativeSrc":"17359:15:75","nodeType":"YulFunctionCall","src":"17359:15:75"},"nativeSrc":"17359:15:75","nodeType":"YulExpressionStatement","src":"17359:15:75"}]},"name":"panic_error_0x11","nativeSrc":"17253:127:75","nodeType":"YulFunctionDefinition","src":"17253:127:75"},{"body":{"nativeSrc":"17431:102:75","nodeType":"YulBlock","src":"17431:102:75","statements":[{"nativeSrc":"17441:38:75","nodeType":"YulAssignment","src":"17441:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"17456:1:75","nodeType":"YulIdentifier","src":"17456:1:75"},{"kind":"number","nativeSrc":"17459:4:75","nodeType":"YulLiteral","src":"17459:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17452:3:75","nodeType":"YulIdentifier","src":"17452:3:75"},"nativeSrc":"17452:12:75","nodeType":"YulFunctionCall","src":"17452:12:75"},{"arguments":[{"name":"y","nativeSrc":"17470:1:75","nodeType":"YulIdentifier","src":"17470:1:75"},{"kind":"number","nativeSrc":"17473:4:75","nodeType":"YulLiteral","src":"17473:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17466:3:75","nodeType":"YulIdentifier","src":"17466:3:75"},"nativeSrc":"17466:12:75","nodeType":"YulFunctionCall","src":"17466:12:75"}],"functionName":{"name":"add","nativeSrc":"17448:3:75","nodeType":"YulIdentifier","src":"17448:3:75"},"nativeSrc":"17448:31:75","nodeType":"YulFunctionCall","src":"17448:31:75"},"variableNames":[{"name":"sum","nativeSrc":"17441:3:75","nodeType":"YulIdentifier","src":"17441:3:75"}]},{"body":{"nativeSrc":"17505:22:75","nodeType":"YulBlock","src":"17505:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17507:16:75","nodeType":"YulIdentifier","src":"17507:16:75"},"nativeSrc":"17507:18:75","nodeType":"YulFunctionCall","src":"17507:18:75"},"nativeSrc":"17507:18:75","nodeType":"YulExpressionStatement","src":"17507:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"17494:3:75","nodeType":"YulIdentifier","src":"17494:3:75"},{"kind":"number","nativeSrc":"17499:4:75","nodeType":"YulLiteral","src":"17499:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"17491:2:75","nodeType":"YulIdentifier","src":"17491:2:75"},"nativeSrc":"17491:13:75","nodeType":"YulFunctionCall","src":"17491:13:75"},"nativeSrc":"17488:39:75","nodeType":"YulIf","src":"17488:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"17385:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"17414:1:75","nodeType":"YulTypedName","src":"17414:1:75","type":""},{"name":"y","nativeSrc":"17417:1:75","nodeType":"YulTypedName","src":"17417:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"17423:3:75","nodeType":"YulTypedName","src":"17423:3:75","type":""}],"src":"17385:148:75"},{"body":{"nativeSrc":"17570:95:75","nodeType":"YulBlock","src":"17570:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17587:1:75","nodeType":"YulLiteral","src":"17587:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"17594:3:75","nodeType":"YulLiteral","src":"17594:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"17599:10:75","nodeType":"YulLiteral","src":"17599:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"17590:3:75","nodeType":"YulIdentifier","src":"17590:3:75"},"nativeSrc":"17590:20:75","nodeType":"YulFunctionCall","src":"17590:20:75"}],"functionName":{"name":"mstore","nativeSrc":"17580:6:75","nodeType":"YulIdentifier","src":"17580:6:75"},"nativeSrc":"17580:31:75","nodeType":"YulFunctionCall","src":"17580:31:75"},"nativeSrc":"17580:31:75","nodeType":"YulExpressionStatement","src":"17580:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17627:1:75","nodeType":"YulLiteral","src":"17627:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"17630:4:75","nodeType":"YulLiteral","src":"17630:4:75","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"17620:6:75","nodeType":"YulIdentifier","src":"17620:6:75"},"nativeSrc":"17620:15:75","nodeType":"YulFunctionCall","src":"17620:15:75"},"nativeSrc":"17620:15:75","nodeType":"YulExpressionStatement","src":"17620:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17651:1:75","nodeType":"YulLiteral","src":"17651:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"17654:4:75","nodeType":"YulLiteral","src":"17654:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"17644:6:75","nodeType":"YulIdentifier","src":"17644:6:75"},"nativeSrc":"17644:15:75","nodeType":"YulFunctionCall","src":"17644:15:75"},"nativeSrc":"17644:15:75","nodeType":"YulExpressionStatement","src":"17644:15:75"}]},"name":"panic_error_0x32","nativeSrc":"17538:127:75","nodeType":"YulFunctionDefinition","src":"17538:127:75"},{"body":{"nativeSrc":"17751:103:75","nodeType":"YulBlock","src":"17751:103:75","statements":[{"body":{"nativeSrc":"17797:16:75","nodeType":"YulBlock","src":"17797:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17806:1:75","nodeType":"YulLiteral","src":"17806:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"17809:1:75","nodeType":"YulLiteral","src":"17809:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17799:6:75","nodeType":"YulIdentifier","src":"17799:6:75"},"nativeSrc":"17799:12:75","nodeType":"YulFunctionCall","src":"17799:12:75"},"nativeSrc":"17799:12:75","nodeType":"YulExpressionStatement","src":"17799:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"17772:7:75","nodeType":"YulIdentifier","src":"17772:7:75"},{"name":"headStart","nativeSrc":"17781:9:75","nodeType":"YulIdentifier","src":"17781:9:75"}],"functionName":{"name":"sub","nativeSrc":"17768:3:75","nodeType":"YulIdentifier","src":"17768:3:75"},"nativeSrc":"17768:23:75","nodeType":"YulFunctionCall","src":"17768:23:75"},{"kind":"number","nativeSrc":"17793:2:75","nodeType":"YulLiteral","src":"17793:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"17764:3:75","nodeType":"YulIdentifier","src":"17764:3:75"},"nativeSrc":"17764:32:75","nodeType":"YulFunctionCall","src":"17764:32:75"},"nativeSrc":"17761:52:75","nodeType":"YulIf","src":"17761:52:75"},{"nativeSrc":"17822:26:75","nodeType":"YulAssignment","src":"17822:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"17838:9:75","nodeType":"YulIdentifier","src":"17838:9:75"}],"functionName":{"name":"mload","nativeSrc":"17832:5:75","nodeType":"YulIdentifier","src":"17832:5:75"},"nativeSrc":"17832:16:75","nodeType":"YulFunctionCall","src":"17832:16:75"},"variableNames":[{"name":"value0","nativeSrc":"17822:6:75","nodeType":"YulIdentifier","src":"17822:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"17670:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17717:9:75","nodeType":"YulTypedName","src":"17717:9:75","type":""},{"name":"dataEnd","nativeSrc":"17728:7:75","nodeType":"YulTypedName","src":"17728:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"17740:6:75","nodeType":"YulTypedName","src":"17740:6:75","type":""}],"src":"17670:184:75"},{"body":{"nativeSrc":"17906:88:75","nodeType":"YulBlock","src":"17906:88:75","statements":[{"body":{"nativeSrc":"17937:22:75","nodeType":"YulBlock","src":"17937:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17939:16:75","nodeType":"YulIdentifier","src":"17939:16:75"},"nativeSrc":"17939:18:75","nodeType":"YulFunctionCall","src":"17939:18:75"},"nativeSrc":"17939:18:75","nodeType":"YulExpressionStatement","src":"17939:18:75"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"17922:5:75","nodeType":"YulIdentifier","src":"17922:5:75"},{"arguments":[{"kind":"number","nativeSrc":"17933:1:75","nodeType":"YulLiteral","src":"17933:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17929:3:75","nodeType":"YulIdentifier","src":"17929:3:75"},"nativeSrc":"17929:6:75","nodeType":"YulFunctionCall","src":"17929:6:75"}],"functionName":{"name":"eq","nativeSrc":"17919:2:75","nodeType":"YulIdentifier","src":"17919:2:75"},"nativeSrc":"17919:17:75","nodeType":"YulFunctionCall","src":"17919:17:75"},"nativeSrc":"17916:43:75","nodeType":"YulIf","src":"17916:43:75"},{"nativeSrc":"17968:20:75","nodeType":"YulAssignment","src":"17968:20:75","value":{"arguments":[{"name":"value","nativeSrc":"17979:5:75","nodeType":"YulIdentifier","src":"17979:5:75"},{"kind":"number","nativeSrc":"17986:1:75","nodeType":"YulLiteral","src":"17986:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17975:3:75","nodeType":"YulIdentifier","src":"17975:3:75"},"nativeSrc":"17975:13:75","nodeType":"YulFunctionCall","src":"17975:13:75"},"variableNames":[{"name":"ret","nativeSrc":"17968:3:75","nodeType":"YulIdentifier","src":"17968:3:75"}]}]},"name":"increment_t_uint256","nativeSrc":"17859:135:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"17888:5:75","nodeType":"YulTypedName","src":"17888:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"17898:3:75","nodeType":"YulTypedName","src":"17898:3:75","type":""}],"src":"17859:135:75"},{"body":{"nativeSrc":"18046:169:75","nodeType":"YulBlock","src":"18046:169:75","statements":[{"nativeSrc":"18056:16:75","nodeType":"YulAssignment","src":"18056:16:75","value":{"arguments":[{"name":"x","nativeSrc":"18067:1:75","nodeType":"YulIdentifier","src":"18067:1:75"},{"name":"y","nativeSrc":"18070:1:75","nodeType":"YulIdentifier","src":"18070:1:75"}],"functionName":{"name":"add","nativeSrc":"18063:3:75","nodeType":"YulIdentifier","src":"18063:3:75"},"nativeSrc":"18063:9:75","nodeType":"YulFunctionCall","src":"18063:9:75"},"variableNames":[{"name":"sum","nativeSrc":"18056:3:75","nodeType":"YulIdentifier","src":"18056:3:75"}]},{"nativeSrc":"18081:21:75","nodeType":"YulVariableDeclaration","src":"18081:21:75","value":{"arguments":[{"name":"sum","nativeSrc":"18095:3:75","nodeType":"YulIdentifier","src":"18095:3:75"},{"name":"y","nativeSrc":"18100:1:75","nodeType":"YulIdentifier","src":"18100:1:75"}],"functionName":{"name":"slt","nativeSrc":"18091:3:75","nodeType":"YulIdentifier","src":"18091:3:75"},"nativeSrc":"18091:11:75","nodeType":"YulFunctionCall","src":"18091:11:75"},"variables":[{"name":"_1","nativeSrc":"18085:2:75","nodeType":"YulTypedName","src":"18085:2:75","type":""}]},{"nativeSrc":"18111:19:75","nodeType":"YulVariableDeclaration","src":"18111:19:75","value":{"arguments":[{"name":"x","nativeSrc":"18125:1:75","nodeType":"YulIdentifier","src":"18125:1:75"},{"kind":"number","nativeSrc":"18128:1:75","nodeType":"YulLiteral","src":"18128:1:75","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"18121:3:75","nodeType":"YulIdentifier","src":"18121:3:75"},"nativeSrc":"18121:9:75","nodeType":"YulFunctionCall","src":"18121:9:75"},"variables":[{"name":"_2","nativeSrc":"18115:2:75","nodeType":"YulTypedName","src":"18115:2:75","type":""}]},{"body":{"nativeSrc":"18187:22:75","nodeType":"YulBlock","src":"18187:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"18189:16:75","nodeType":"YulIdentifier","src":"18189:16:75"},"nativeSrc":"18189:18:75","nodeType":"YulFunctionCall","src":"18189:18:75"},"nativeSrc":"18189:18:75","nodeType":"YulExpressionStatement","src":"18189:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18156:2:75","nodeType":"YulIdentifier","src":"18156:2:75"}],"functionName":{"name":"iszero","nativeSrc":"18149:6:75","nodeType":"YulIdentifier","src":"18149:6:75"},"nativeSrc":"18149:10:75","nodeType":"YulFunctionCall","src":"18149:10:75"},{"name":"_1","nativeSrc":"18161:2:75","nodeType":"YulIdentifier","src":"18161:2:75"}],"functionName":{"name":"and","nativeSrc":"18145:3:75","nodeType":"YulIdentifier","src":"18145:3:75"},"nativeSrc":"18145:19:75","nodeType":"YulFunctionCall","src":"18145:19:75"},{"arguments":[{"name":"_2","nativeSrc":"18170:2:75","nodeType":"YulIdentifier","src":"18170:2:75"},{"arguments":[{"name":"_1","nativeSrc":"18181:2:75","nodeType":"YulIdentifier","src":"18181:2:75"}],"functionName":{"name":"iszero","nativeSrc":"18174:6:75","nodeType":"YulIdentifier","src":"18174:6:75"},"nativeSrc":"18174:10:75","nodeType":"YulFunctionCall","src":"18174:10:75"}],"functionName":{"name":"and","nativeSrc":"18166:3:75","nodeType":"YulIdentifier","src":"18166:3:75"},"nativeSrc":"18166:19:75","nodeType":"YulFunctionCall","src":"18166:19:75"}],"functionName":{"name":"or","nativeSrc":"18142:2:75","nodeType":"YulIdentifier","src":"18142:2:75"},"nativeSrc":"18142:44:75","nodeType":"YulFunctionCall","src":"18142:44:75"},"nativeSrc":"18139:70:75","nodeType":"YulIf","src":"18139:70:75"}]},"name":"checked_add_t_int256","nativeSrc":"17999:216:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"18029:1:75","nodeType":"YulTypedName","src":"18029:1:75","type":""},{"name":"y","nativeSrc":"18032:1:75","nodeType":"YulTypedName","src":"18032:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"18038:3:75","nodeType":"YulTypedName","src":"18038:3:75","type":""}],"src":"17999:216:75"},{"body":{"nativeSrc":"18404:162:75","nodeType":"YulBlock","src":"18404:162:75","statements":[{"nativeSrc":"18414:26:75","nodeType":"YulAssignment","src":"18414:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18426:9:75","nodeType":"YulIdentifier","src":"18426:9:75"},{"kind":"number","nativeSrc":"18437:2:75","nodeType":"YulLiteral","src":"18437:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18422:3:75","nodeType":"YulIdentifier","src":"18422:3:75"},"nativeSrc":"18422:18:75","nodeType":"YulFunctionCall","src":"18422:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18414:4:75","nodeType":"YulIdentifier","src":"18414:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18456:9:75","nodeType":"YulIdentifier","src":"18456:9:75"},{"name":"value0","nativeSrc":"18467:6:75","nodeType":"YulIdentifier","src":"18467:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18449:6:75","nodeType":"YulIdentifier","src":"18449:6:75"},"nativeSrc":"18449:25:75","nodeType":"YulFunctionCall","src":"18449:25:75"},"nativeSrc":"18449:25:75","nodeType":"YulExpressionStatement","src":"18449:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18494:9:75","nodeType":"YulIdentifier","src":"18494:9:75"},{"kind":"number","nativeSrc":"18505:2:75","nodeType":"YulLiteral","src":"18505:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18490:3:75","nodeType":"YulIdentifier","src":"18490:3:75"},"nativeSrc":"18490:18:75","nodeType":"YulFunctionCall","src":"18490:18:75"},{"name":"value1","nativeSrc":"18510:6:75","nodeType":"YulIdentifier","src":"18510:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18483:6:75","nodeType":"YulIdentifier","src":"18483:6:75"},"nativeSrc":"18483:34:75","nodeType":"YulFunctionCall","src":"18483:34:75"},"nativeSrc":"18483:34:75","nodeType":"YulExpressionStatement","src":"18483:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18537:9:75","nodeType":"YulIdentifier","src":"18537:9:75"},{"kind":"number","nativeSrc":"18548:2:75","nodeType":"YulLiteral","src":"18548:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18533:3:75","nodeType":"YulIdentifier","src":"18533:3:75"},"nativeSrc":"18533:18:75","nodeType":"YulFunctionCall","src":"18533:18:75"},{"name":"value2","nativeSrc":"18553:6:75","nodeType":"YulIdentifier","src":"18553:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18526:6:75","nodeType":"YulIdentifier","src":"18526:6:75"},"nativeSrc":"18526:34:75","nodeType":"YulFunctionCall","src":"18526:34:75"},"nativeSrc":"18526:34:75","nodeType":"YulExpressionStatement","src":"18526:34:75"}]},"name":"abi_encode_tuple_t_userDefinedValueType$_SlotIndex_$17996_t_int256_t_int256__to_t_uint256_t_int256_t_int256__fromStack_reversed","nativeSrc":"18220:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18357:9:75","nodeType":"YulTypedName","src":"18357:9:75","type":""},{"name":"value2","nativeSrc":"18368:6:75","nodeType":"YulTypedName","src":"18368:6:75","type":""},{"name":"value1","nativeSrc":"18376:6:75","nodeType":"YulTypedName","src":"18376:6:75","type":""},{"name":"value0","nativeSrc":"18384:6:75","nodeType":"YulTypedName","src":"18384:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18395:4:75","nodeType":"YulTypedName","src":"18395:4:75","type":""}],"src":"18220:346:75"},{"body":{"nativeSrc":"18728:188:75","nodeType":"YulBlock","src":"18728:188:75","statements":[{"nativeSrc":"18738:26:75","nodeType":"YulAssignment","src":"18738:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"18750:9:75","nodeType":"YulIdentifier","src":"18750:9:75"},{"kind":"number","nativeSrc":"18761:2:75","nodeType":"YulLiteral","src":"18761:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18746:3:75","nodeType":"YulIdentifier","src":"18746:3:75"},"nativeSrc":"18746:18:75","nodeType":"YulFunctionCall","src":"18746:18:75"},"variableNames":[{"name":"tail","nativeSrc":"18738:4:75","nodeType":"YulIdentifier","src":"18738:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18780:9:75","nodeType":"YulIdentifier","src":"18780:9:75"},{"arguments":[{"name":"value0","nativeSrc":"18795:6:75","nodeType":"YulIdentifier","src":"18795:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18811:3:75","nodeType":"YulLiteral","src":"18811:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"18816:1:75","nodeType":"YulLiteral","src":"18816:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18807:3:75","nodeType":"YulIdentifier","src":"18807:3:75"},"nativeSrc":"18807:11:75","nodeType":"YulFunctionCall","src":"18807:11:75"},{"kind":"number","nativeSrc":"18820:1:75","nodeType":"YulLiteral","src":"18820:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18803:3:75","nodeType":"YulIdentifier","src":"18803:3:75"},"nativeSrc":"18803:19:75","nodeType":"YulFunctionCall","src":"18803:19:75"}],"functionName":{"name":"and","nativeSrc":"18791:3:75","nodeType":"YulIdentifier","src":"18791:3:75"},"nativeSrc":"18791:32:75","nodeType":"YulFunctionCall","src":"18791:32:75"}],"functionName":{"name":"mstore","nativeSrc":"18773:6:75","nodeType":"YulIdentifier","src":"18773:6:75"},"nativeSrc":"18773:51:75","nodeType":"YulFunctionCall","src":"18773:51:75"},"nativeSrc":"18773:51:75","nodeType":"YulExpressionStatement","src":"18773:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18844:9:75","nodeType":"YulIdentifier","src":"18844:9:75"},{"kind":"number","nativeSrc":"18855:2:75","nodeType":"YulLiteral","src":"18855:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18840:3:75","nodeType":"YulIdentifier","src":"18840:3:75"},"nativeSrc":"18840:18:75","nodeType":"YulFunctionCall","src":"18840:18:75"},{"name":"value1","nativeSrc":"18860:6:75","nodeType":"YulIdentifier","src":"18860:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18833:6:75","nodeType":"YulIdentifier","src":"18833:6:75"},"nativeSrc":"18833:34:75","nodeType":"YulFunctionCall","src":"18833:34:75"},"nativeSrc":"18833:34:75","nodeType":"YulExpressionStatement","src":"18833:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18887:9:75","nodeType":"YulIdentifier","src":"18887:9:75"},{"kind":"number","nativeSrc":"18898:2:75","nodeType":"YulLiteral","src":"18898:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18883:3:75","nodeType":"YulIdentifier","src":"18883:3:75"},"nativeSrc":"18883:18:75","nodeType":"YulFunctionCall","src":"18883:18:75"},{"name":"value2","nativeSrc":"18903:6:75","nodeType":"YulIdentifier","src":"18903:6:75"}],"functionName":{"name":"mstore","nativeSrc":"18876:6:75","nodeType":"YulIdentifier","src":"18876:6:75"},"nativeSrc":"18876:34:75","nodeType":"YulFunctionCall","src":"18876:34:75"},"nativeSrc":"18876:34:75","nodeType":"YulExpressionStatement","src":"18876:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"18571:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18681:9:75","nodeType":"YulTypedName","src":"18681:9:75","type":""},{"name":"value2","nativeSrc":"18692:6:75","nodeType":"YulTypedName","src":"18692:6:75","type":""},{"name":"value1","nativeSrc":"18700:6:75","nodeType":"YulTypedName","src":"18700:6:75","type":""},{"name":"value0","nativeSrc":"18708:6:75","nodeType":"YulTypedName","src":"18708:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18719:4:75","nodeType":"YulTypedName","src":"18719:4:75","type":""}],"src":"18571:345:75"},{"body":{"nativeSrc":"19047:102:75","nodeType":"YulBlock","src":"19047:102:75","statements":[{"nativeSrc":"19057:26:75","nodeType":"YulAssignment","src":"19057:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19069:9:75","nodeType":"YulIdentifier","src":"19069:9:75"},{"kind":"number","nativeSrc":"19080:2:75","nodeType":"YulLiteral","src":"19080:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19065:3:75","nodeType":"YulIdentifier","src":"19065:3:75"},"nativeSrc":"19065:18:75","nodeType":"YulFunctionCall","src":"19065:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19057:4:75","nodeType":"YulIdentifier","src":"19057:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19099:9:75","nodeType":"YulIdentifier","src":"19099:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19114:6:75","nodeType":"YulIdentifier","src":"19114:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19130:3:75","nodeType":"YulLiteral","src":"19130:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"19135:1:75","nodeType":"YulLiteral","src":"19135:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19126:3:75","nodeType":"YulIdentifier","src":"19126:3:75"},"nativeSrc":"19126:11:75","nodeType":"YulFunctionCall","src":"19126:11:75"},{"kind":"number","nativeSrc":"19139:1:75","nodeType":"YulLiteral","src":"19139:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19122:3:75","nodeType":"YulIdentifier","src":"19122:3:75"},"nativeSrc":"19122:19:75","nodeType":"YulFunctionCall","src":"19122:19:75"}],"functionName":{"name":"and","nativeSrc":"19110:3:75","nodeType":"YulIdentifier","src":"19110:3:75"},"nativeSrc":"19110:32:75","nodeType":"YulFunctionCall","src":"19110:32:75"}],"functionName":{"name":"mstore","nativeSrc":"19092:6:75","nodeType":"YulIdentifier","src":"19092:6:75"},"nativeSrc":"19092:51:75","nodeType":"YulFunctionCall","src":"19092:51:75"},"nativeSrc":"19092:51:75","nodeType":"YulExpressionStatement","src":"19092:51:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374__to_t_address__fromStack_reversed","nativeSrc":"18921:228:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19016:9:75","nodeType":"YulTypedName","src":"19016:9:75","type":""},{"name":"value0","nativeSrc":"19027:6:75","nodeType":"YulTypedName","src":"19027:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19038:4:75","nodeType":"YulTypedName","src":"19038:4:75","type":""}],"src":"18921:228:75"},{"body":{"nativeSrc":"19202:77:75","nodeType":"YulBlock","src":"19202:77:75","statements":[{"nativeSrc":"19212:16:75","nodeType":"YulAssignment","src":"19212:16:75","value":{"arguments":[{"name":"x","nativeSrc":"19223:1:75","nodeType":"YulIdentifier","src":"19223:1:75"},{"name":"y","nativeSrc":"19226:1:75","nodeType":"YulIdentifier","src":"19226:1:75"}],"functionName":{"name":"add","nativeSrc":"19219:3:75","nodeType":"YulIdentifier","src":"19219:3:75"},"nativeSrc":"19219:9:75","nodeType":"YulFunctionCall","src":"19219:9:75"},"variableNames":[{"name":"sum","nativeSrc":"19212:3:75","nodeType":"YulIdentifier","src":"19212:3:75"}]},{"body":{"nativeSrc":"19251:22:75","nodeType":"YulBlock","src":"19251:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"19253:16:75","nodeType":"YulIdentifier","src":"19253:16:75"},"nativeSrc":"19253:18:75","nodeType":"YulFunctionCall","src":"19253:18:75"},"nativeSrc":"19253:18:75","nodeType":"YulExpressionStatement","src":"19253:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"19243:1:75","nodeType":"YulIdentifier","src":"19243:1:75"},{"name":"sum","nativeSrc":"19246:3:75","nodeType":"YulIdentifier","src":"19246:3:75"}],"functionName":{"name":"gt","nativeSrc":"19240:2:75","nodeType":"YulIdentifier","src":"19240:2:75"},"nativeSrc":"19240:10:75","nodeType":"YulFunctionCall","src":"19240:10:75"},"nativeSrc":"19237:36:75","nodeType":"YulIf","src":"19237:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"19154:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19185:1:75","nodeType":"YulTypedName","src":"19185:1:75","type":""},{"name":"y","nativeSrc":"19188:1:75","nodeType":"YulTypedName","src":"19188:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"19194:3:75","nodeType":"YulTypedName","src":"19194:3:75","type":""}],"src":"19154:125:75"},{"body":{"nativeSrc":"19409:156:75","nodeType":"YulBlock","src":"19409:156:75","statements":[{"nativeSrc":"19419:26:75","nodeType":"YulAssignment","src":"19419:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"19431:9:75","nodeType":"YulIdentifier","src":"19431:9:75"},{"kind":"number","nativeSrc":"19442:2:75","nodeType":"YulLiteral","src":"19442:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"19427:3:75","nodeType":"YulIdentifier","src":"19427:3:75"},"nativeSrc":"19427:18:75","nodeType":"YulFunctionCall","src":"19427:18:75"},"variableNames":[{"name":"tail","nativeSrc":"19419:4:75","nodeType":"YulIdentifier","src":"19419:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19461:9:75","nodeType":"YulIdentifier","src":"19461:9:75"},{"arguments":[{"name":"value0","nativeSrc":"19476:6:75","nodeType":"YulIdentifier","src":"19476:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19492:3:75","nodeType":"YulLiteral","src":"19492:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"19497:1:75","nodeType":"YulLiteral","src":"19497:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19488:3:75","nodeType":"YulIdentifier","src":"19488:3:75"},"nativeSrc":"19488:11:75","nodeType":"YulFunctionCall","src":"19488:11:75"},{"kind":"number","nativeSrc":"19501:1:75","nodeType":"YulLiteral","src":"19501:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19484:3:75","nodeType":"YulIdentifier","src":"19484:3:75"},"nativeSrc":"19484:19:75","nodeType":"YulFunctionCall","src":"19484:19:75"}],"functionName":{"name":"and","nativeSrc":"19472:3:75","nodeType":"YulIdentifier","src":"19472:3:75"},"nativeSrc":"19472:32:75","nodeType":"YulFunctionCall","src":"19472:32:75"}],"functionName":{"name":"mstore","nativeSrc":"19454:6:75","nodeType":"YulIdentifier","src":"19454:6:75"},"nativeSrc":"19454:51:75","nodeType":"YulFunctionCall","src":"19454:51:75"},"nativeSrc":"19454:51:75","nodeType":"YulExpressionStatement","src":"19454:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"19525:9:75","nodeType":"YulIdentifier","src":"19525:9:75"},{"kind":"number","nativeSrc":"19536:2:75","nodeType":"YulLiteral","src":"19536:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19521:3:75","nodeType":"YulIdentifier","src":"19521:3:75"},"nativeSrc":"19521:18:75","nodeType":"YulFunctionCall","src":"19521:18:75"},{"arguments":[{"name":"value1","nativeSrc":"19545:6:75","nodeType":"YulIdentifier","src":"19545:6:75"},{"kind":"number","nativeSrc":"19553:4:75","nodeType":"YulLiteral","src":"19553:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"19541:3:75","nodeType":"YulIdentifier","src":"19541:3:75"},"nativeSrc":"19541:17:75","nodeType":"YulFunctionCall","src":"19541:17:75"}],"functionName":{"name":"mstore","nativeSrc":"19514:6:75","nodeType":"YulIdentifier","src":"19514:6:75"},"nativeSrc":"19514:45:75","nodeType":"YulFunctionCall","src":"19514:45:75"},"nativeSrc":"19514:45:75","nodeType":"YulExpressionStatement","src":"19514:45:75"}]},"name":"abi_encode_tuple_t_address_t_uint8__to_t_address_t_uint8__fromStack_reversed","nativeSrc":"19284:281:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19370:9:75","nodeType":"YulTypedName","src":"19370:9:75","type":""},{"name":"value1","nativeSrc":"19381:6:75","nodeType":"YulTypedName","src":"19381:6:75","type":""},{"name":"value0","nativeSrc":"19389:6:75","nodeType":"YulTypedName","src":"19389:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19400:4:75","nodeType":"YulTypedName","src":"19400:4:75","type":""}],"src":"19284:281:75"},{"body":{"nativeSrc":"19602:95:75","nodeType":"YulBlock","src":"19602:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19619:1:75","nodeType":"YulLiteral","src":"19619:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"19626:3:75","nodeType":"YulLiteral","src":"19626:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"19631:10:75","nodeType":"YulLiteral","src":"19631:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"19622:3:75","nodeType":"YulIdentifier","src":"19622:3:75"},"nativeSrc":"19622:20:75","nodeType":"YulFunctionCall","src":"19622:20:75"}],"functionName":{"name":"mstore","nativeSrc":"19612:6:75","nodeType":"YulIdentifier","src":"19612:6:75"},"nativeSrc":"19612:31:75","nodeType":"YulFunctionCall","src":"19612:31:75"},"nativeSrc":"19612:31:75","nodeType":"YulExpressionStatement","src":"19612:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19659:1:75","nodeType":"YulLiteral","src":"19659:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"19662:4:75","nodeType":"YulLiteral","src":"19662:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"19652:6:75","nodeType":"YulIdentifier","src":"19652:6:75"},"nativeSrc":"19652:15:75","nodeType":"YulFunctionCall","src":"19652:15:75"},"nativeSrc":"19652:15:75","nodeType":"YulExpressionStatement","src":"19652:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19683:1:75","nodeType":"YulLiteral","src":"19683:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"19686:4:75","nodeType":"YulLiteral","src":"19686:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"19676:6:75","nodeType":"YulIdentifier","src":"19676:6:75"},"nativeSrc":"19676:15:75","nodeType":"YulFunctionCall","src":"19676:15:75"},"nativeSrc":"19676:15:75","nodeType":"YulExpressionStatement","src":"19676:15:75"}]},"name":"panic_error_0x12","nativeSrc":"19570:127:75","nodeType":"YulFunctionDefinition","src":"19570:127:75"},{"body":{"nativeSrc":"19748:74:75","nodeType":"YulBlock","src":"19748:74:75","statements":[{"body":{"nativeSrc":"19771:22:75","nodeType":"YulBlock","src":"19771:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"19773:16:75","nodeType":"YulIdentifier","src":"19773:16:75"},"nativeSrc":"19773:18:75","nodeType":"YulFunctionCall","src":"19773:18:75"},"nativeSrc":"19773:18:75","nodeType":"YulExpressionStatement","src":"19773:18:75"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"19768:1:75","nodeType":"YulIdentifier","src":"19768:1:75"}],"functionName":{"name":"iszero","nativeSrc":"19761:6:75","nodeType":"YulIdentifier","src":"19761:6:75"},"nativeSrc":"19761:9:75","nodeType":"YulFunctionCall","src":"19761:9:75"},"nativeSrc":"19758:35:75","nodeType":"YulIf","src":"19758:35:75"},{"nativeSrc":"19802:14:75","nodeType":"YulAssignment","src":"19802:14:75","value":{"arguments":[{"name":"x","nativeSrc":"19811:1:75","nodeType":"YulIdentifier","src":"19811:1:75"},{"name":"y","nativeSrc":"19814:1:75","nodeType":"YulIdentifier","src":"19814:1:75"}],"functionName":{"name":"div","nativeSrc":"19807:3:75","nodeType":"YulIdentifier","src":"19807:3:75"},"nativeSrc":"19807:9:75","nodeType":"YulFunctionCall","src":"19807:9:75"},"variableNames":[{"name":"r","nativeSrc":"19802:1:75","nodeType":"YulIdentifier","src":"19802:1:75"}]}]},"name":"checked_div_t_uint256","nativeSrc":"19702:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"19733:1:75","nodeType":"YulTypedName","src":"19733:1:75","type":""},{"name":"y","nativeSrc":"19736:1:75","nodeType":"YulTypedName","src":"19736:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"19742:1:75","nodeType":"YulTypedName","src":"19742:1:75","type":""}],"src":"19702:120:75"},{"body":{"nativeSrc":"19974:471:75","nodeType":"YulBlock","src":"19974:471:75","statements":[{"nativeSrc":"19984:32:75","nodeType":"YulVariableDeclaration","src":"19984:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20002:9:75","nodeType":"YulIdentifier","src":"20002:9:75"},{"kind":"number","nativeSrc":"20013:2:75","nodeType":"YulLiteral","src":"20013:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19998:3:75","nodeType":"YulIdentifier","src":"19998:3:75"},"nativeSrc":"19998:18:75","nodeType":"YulFunctionCall","src":"19998:18:75"},"variables":[{"name":"tail_1","nativeSrc":"19988:6:75","nodeType":"YulTypedName","src":"19988:6:75","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20032:9:75","nodeType":"YulIdentifier","src":"20032:9:75"},{"kind":"number","nativeSrc":"20043:2:75","nodeType":"YulLiteral","src":"20043:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"20025:6:75","nodeType":"YulIdentifier","src":"20025:6:75"},"nativeSrc":"20025:21:75","nodeType":"YulFunctionCall","src":"20025:21:75"},"nativeSrc":"20025:21:75","nodeType":"YulExpressionStatement","src":"20025:21:75"},{"nativeSrc":"20055:17:75","nodeType":"YulVariableDeclaration","src":"20055:17:75","value":{"name":"tail_1","nativeSrc":"20066:6:75","nodeType":"YulIdentifier","src":"20066:6:75"},"variables":[{"name":"pos","nativeSrc":"20059:3:75","nodeType":"YulTypedName","src":"20059:3:75","type":""}]},{"nativeSrc":"20081:27:75","nodeType":"YulVariableDeclaration","src":"20081:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"20101:6:75","nodeType":"YulIdentifier","src":"20101:6:75"}],"functionName":{"name":"mload","nativeSrc":"20095:5:75","nodeType":"YulIdentifier","src":"20095:5:75"},"nativeSrc":"20095:13:75","nodeType":"YulFunctionCall","src":"20095:13:75"},"variables":[{"name":"length","nativeSrc":"20085:6:75","nodeType":"YulTypedName","src":"20085:6:75","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"20124:6:75","nodeType":"YulIdentifier","src":"20124:6:75"},{"name":"length","nativeSrc":"20132:6:75","nodeType":"YulIdentifier","src":"20132:6:75"}],"functionName":{"name":"mstore","nativeSrc":"20117:6:75","nodeType":"YulIdentifier","src":"20117:6:75"},"nativeSrc":"20117:22:75","nodeType":"YulFunctionCall","src":"20117:22:75"},"nativeSrc":"20117:22:75","nodeType":"YulExpressionStatement","src":"20117:22:75"},{"nativeSrc":"20148:25:75","nodeType":"YulAssignment","src":"20148:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20159:9:75","nodeType":"YulIdentifier","src":"20159:9:75"},{"kind":"number","nativeSrc":"20170:2:75","nodeType":"YulLiteral","src":"20170:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"20155:3:75","nodeType":"YulIdentifier","src":"20155:3:75"},"nativeSrc":"20155:18:75","nodeType":"YulFunctionCall","src":"20155:18:75"},"variableNames":[{"name":"pos","nativeSrc":"20148:3:75","nodeType":"YulIdentifier","src":"20148:3:75"}]},{"nativeSrc":"20182:29:75","nodeType":"YulVariableDeclaration","src":"20182:29:75","value":{"arguments":[{"name":"value0","nativeSrc":"20200:6:75","nodeType":"YulIdentifier","src":"20200:6:75"},{"kind":"number","nativeSrc":"20208:2:75","nodeType":"YulLiteral","src":"20208:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20196:3:75","nodeType":"YulIdentifier","src":"20196:3:75"},"nativeSrc":"20196:15:75","nodeType":"YulFunctionCall","src":"20196:15:75"},"variables":[{"name":"srcPtr","nativeSrc":"20186:6:75","nodeType":"YulTypedName","src":"20186:6:75","type":""}]},{"nativeSrc":"20220:10:75","nodeType":"YulVariableDeclaration","src":"20220:10:75","value":{"kind":"number","nativeSrc":"20229:1:75","nodeType":"YulLiteral","src":"20229:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"20224:1:75","nodeType":"YulTypedName","src":"20224:1:75","type":""}]},{"body":{"nativeSrc":"20288:131:75","nodeType":"YulBlock","src":"20288:131:75","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"20309:3:75","nodeType":"YulIdentifier","src":"20309:3:75"},{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"20324:6:75","nodeType":"YulIdentifier","src":"20324:6:75"}],"functionName":{"name":"mload","nativeSrc":"20318:5:75","nodeType":"YulIdentifier","src":"20318:5:75"},"nativeSrc":"20318:13:75","nodeType":"YulFunctionCall","src":"20318:13:75"},{"kind":"number","nativeSrc":"20333:4:75","nodeType":"YulLiteral","src":"20333:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20314:3:75","nodeType":"YulIdentifier","src":"20314:3:75"},"nativeSrc":"20314:24:75","nodeType":"YulFunctionCall","src":"20314:24:75"}],"functionName":{"name":"mstore","nativeSrc":"20302:6:75","nodeType":"YulIdentifier","src":"20302:6:75"},"nativeSrc":"20302:37:75","nodeType":"YulFunctionCall","src":"20302:37:75"},"nativeSrc":"20302:37:75","nodeType":"YulExpressionStatement","src":"20302:37:75"},{"nativeSrc":"20352:19:75","nodeType":"YulAssignment","src":"20352:19:75","value":{"arguments":[{"name":"pos","nativeSrc":"20363:3:75","nodeType":"YulIdentifier","src":"20363:3:75"},{"kind":"number","nativeSrc":"20368:2:75","nodeType":"YulLiteral","src":"20368:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20359:3:75","nodeType":"YulIdentifier","src":"20359:3:75"},"nativeSrc":"20359:12:75","nodeType":"YulFunctionCall","src":"20359:12:75"},"variableNames":[{"name":"pos","nativeSrc":"20352:3:75","nodeType":"YulIdentifier","src":"20352:3:75"}]},{"nativeSrc":"20384:25:75","nodeType":"YulAssignment","src":"20384:25:75","value":{"arguments":[{"name":"srcPtr","nativeSrc":"20398:6:75","nodeType":"YulIdentifier","src":"20398:6:75"},{"kind":"number","nativeSrc":"20406:2:75","nodeType":"YulLiteral","src":"20406:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20394:3:75","nodeType":"YulIdentifier","src":"20394:3:75"},"nativeSrc":"20394:15:75","nodeType":"YulFunctionCall","src":"20394:15:75"},"variableNames":[{"name":"srcPtr","nativeSrc":"20384:6:75","nodeType":"YulIdentifier","src":"20384:6:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"20250:1:75","nodeType":"YulIdentifier","src":"20250:1:75"},{"name":"length","nativeSrc":"20253:6:75","nodeType":"YulIdentifier","src":"20253:6:75"}],"functionName":{"name":"lt","nativeSrc":"20247:2:75","nodeType":"YulIdentifier","src":"20247:2:75"},"nativeSrc":"20247:13:75","nodeType":"YulFunctionCall","src":"20247:13:75"},"nativeSrc":"20239:180:75","nodeType":"YulForLoop","post":{"nativeSrc":"20261:18:75","nodeType":"YulBlock","src":"20261:18:75","statements":[{"nativeSrc":"20263:14:75","nodeType":"YulAssignment","src":"20263:14:75","value":{"arguments":[{"name":"i","nativeSrc":"20272:1:75","nodeType":"YulIdentifier","src":"20272:1:75"},{"kind":"number","nativeSrc":"20275:1:75","nodeType":"YulLiteral","src":"20275:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"20268:3:75","nodeType":"YulIdentifier","src":"20268:3:75"},"nativeSrc":"20268:9:75","nodeType":"YulFunctionCall","src":"20268:9:75"},"variableNames":[{"name":"i","nativeSrc":"20263:1:75","nodeType":"YulIdentifier","src":"20263:1:75"}]}]},"pre":{"nativeSrc":"20243:3:75","nodeType":"YulBlock","src":"20243:3:75","statements":[]},"src":"20239:180:75"},{"nativeSrc":"20428:11:75","nodeType":"YulAssignment","src":"20428:11:75","value":{"name":"pos","nativeSrc":"20436:3:75","nodeType":"YulIdentifier","src":"20436:3:75"},"variableNames":[{"name":"tail","nativeSrc":"20428:4:75","nodeType":"YulIdentifier","src":"20428:4:75"}]}]},"name":"abi_encode_tuple_t_array$_t_uint8_$dyn_memory_ptr__to_t_array$_t_uint8_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"19827:618:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19943:9:75","nodeType":"YulTypedName","src":"19943:9:75","type":""},{"name":"value0","nativeSrc":"19954:6:75","nodeType":"YulTypedName","src":"19954:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19965:4:75","nodeType":"YulTypedName","src":"19965:4:75","type":""}],"src":"19827:618:75"},{"body":{"nativeSrc":"20499:79:75","nodeType":"YulBlock","src":"20499:79:75","statements":[{"nativeSrc":"20509:17:75","nodeType":"YulAssignment","src":"20509:17:75","value":{"arguments":[{"name":"x","nativeSrc":"20521:1:75","nodeType":"YulIdentifier","src":"20521:1:75"},{"name":"y","nativeSrc":"20524:1:75","nodeType":"YulIdentifier","src":"20524:1:75"}],"functionName":{"name":"sub","nativeSrc":"20517:3:75","nodeType":"YulIdentifier","src":"20517:3:75"},"nativeSrc":"20517:9:75","nodeType":"YulFunctionCall","src":"20517:9:75"},"variableNames":[{"name":"diff","nativeSrc":"20509:4:75","nodeType":"YulIdentifier","src":"20509:4:75"}]},{"body":{"nativeSrc":"20550:22:75","nodeType":"YulBlock","src":"20550:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20552:16:75","nodeType":"YulIdentifier","src":"20552:16:75"},"nativeSrc":"20552:18:75","nodeType":"YulFunctionCall","src":"20552:18:75"},"nativeSrc":"20552:18:75","nodeType":"YulExpressionStatement","src":"20552:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20541:4:75","nodeType":"YulIdentifier","src":"20541:4:75"},{"name":"x","nativeSrc":"20547:1:75","nodeType":"YulIdentifier","src":"20547:1:75"}],"functionName":{"name":"gt","nativeSrc":"20538:2:75","nodeType":"YulIdentifier","src":"20538:2:75"},"nativeSrc":"20538:11:75","nodeType":"YulFunctionCall","src":"20538:11:75"},"nativeSrc":"20535:37:75","nodeType":"YulIf","src":"20535:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"20450:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20481:1:75","nodeType":"YulTypedName","src":"20481:1:75","type":""},{"name":"y","nativeSrc":"20484:1:75","nodeType":"YulTypedName","src":"20484:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20490:4:75","nodeType":"YulTypedName","src":"20490:4:75","type":""}],"src":"20450:128:75"},{"body":{"nativeSrc":"20630:104:75","nodeType":"YulBlock","src":"20630:104:75","statements":[{"nativeSrc":"20640:39:75","nodeType":"YulAssignment","src":"20640:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"20656:1:75","nodeType":"YulIdentifier","src":"20656:1:75"},{"kind":"number","nativeSrc":"20659:4:75","nodeType":"YulLiteral","src":"20659:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20652:3:75","nodeType":"YulIdentifier","src":"20652:3:75"},"nativeSrc":"20652:12:75","nodeType":"YulFunctionCall","src":"20652:12:75"},{"arguments":[{"name":"y","nativeSrc":"20670:1:75","nodeType":"YulIdentifier","src":"20670:1:75"},{"kind":"number","nativeSrc":"20673:4:75","nodeType":"YulLiteral","src":"20673:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"20666:3:75","nodeType":"YulIdentifier","src":"20666:3:75"},"nativeSrc":"20666:12:75","nodeType":"YulFunctionCall","src":"20666:12:75"}],"functionName":{"name":"sub","nativeSrc":"20648:3:75","nodeType":"YulIdentifier","src":"20648:3:75"},"nativeSrc":"20648:31:75","nodeType":"YulFunctionCall","src":"20648:31:75"},"variableNames":[{"name":"diff","nativeSrc":"20640:4:75","nodeType":"YulIdentifier","src":"20640:4:75"}]},{"body":{"nativeSrc":"20706:22:75","nodeType":"YulBlock","src":"20706:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"20708:16:75","nodeType":"YulIdentifier","src":"20708:16:75"},"nativeSrc":"20708:18:75","nodeType":"YulFunctionCall","src":"20708:18:75"},"nativeSrc":"20708:18:75","nodeType":"YulExpressionStatement","src":"20708:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"20694:4:75","nodeType":"YulIdentifier","src":"20694:4:75"},{"kind":"number","nativeSrc":"20700:4:75","nodeType":"YulLiteral","src":"20700:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"20691:2:75","nodeType":"YulIdentifier","src":"20691:2:75"},"nativeSrc":"20691:14:75","nodeType":"YulFunctionCall","src":"20691:14:75"},"nativeSrc":"20688:40:75","nodeType":"YulIf","src":"20688:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"20583:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"20612:1:75","nodeType":"YulTypedName","src":"20612:1:75","type":""},{"name":"y","nativeSrc":"20615:1:75","nodeType":"YulTypedName","src":"20615:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"20621:4:75","nodeType":"YulTypedName","src":"20621:4:75","type":""}],"src":"20583:151:75"},{"body":{"nativeSrc":"20847:101:75","nodeType":"YulBlock","src":"20847:101:75","statements":[{"nativeSrc":"20857:26:75","nodeType":"YulAssignment","src":"20857:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"20869:9:75","nodeType":"YulIdentifier","src":"20869:9:75"},{"kind":"number","nativeSrc":"20880:2:75","nodeType":"YulLiteral","src":"20880:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20865:3:75","nodeType":"YulIdentifier","src":"20865:3:75"},"nativeSrc":"20865:18:75","nodeType":"YulFunctionCall","src":"20865:18:75"},"variableNames":[{"name":"tail","nativeSrc":"20857:4:75","nodeType":"YulIdentifier","src":"20857:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20899:9:75","nodeType":"YulIdentifier","src":"20899:9:75"},{"arguments":[{"name":"value0","nativeSrc":"20914:6:75","nodeType":"YulIdentifier","src":"20914:6:75"},{"kind":"number","nativeSrc":"20922:18:75","nodeType":"YulLiteral","src":"20922:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"20910:3:75","nodeType":"YulIdentifier","src":"20910:3:75"},"nativeSrc":"20910:31:75","nodeType":"YulFunctionCall","src":"20910:31:75"}],"functionName":{"name":"mstore","nativeSrc":"20892:6:75","nodeType":"YulIdentifier","src":"20892:6:75"},"nativeSrc":"20892:50:75","nodeType":"YulFunctionCall","src":"20892:50:75"},"nativeSrc":"20892:50:75","nodeType":"YulExpressionStatement","src":"20892:50:75"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"20739:209:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20816:9:75","nodeType":"YulTypedName","src":"20816:9:75","type":""},{"name":"value0","nativeSrc":"20827:6:75","nodeType":"YulTypedName","src":"20827:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20838:4:75","nodeType":"YulTypedName","src":"20838:4:75","type":""}],"src":"20739:209:75"},{"body":{"nativeSrc":"20998:130:75","nodeType":"YulBlock","src":"20998:130:75","statements":[{"nativeSrc":"21008:31:75","nodeType":"YulVariableDeclaration","src":"21008:31:75","value":{"arguments":[{"name":"value","nativeSrc":"21027:5:75","nodeType":"YulIdentifier","src":"21027:5:75"},{"kind":"number","nativeSrc":"21034:4:75","nodeType":"YulLiteral","src":"21034:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"21023:3:75","nodeType":"YulIdentifier","src":"21023:3:75"},"nativeSrc":"21023:16:75","nodeType":"YulFunctionCall","src":"21023:16:75"},"variables":[{"name":"value_1","nativeSrc":"21012:7:75","nodeType":"YulTypedName","src":"21012:7:75","type":""}]},{"body":{"nativeSrc":"21069:22:75","nodeType":"YulBlock","src":"21069:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21071:16:75","nodeType":"YulIdentifier","src":"21071:16:75"},"nativeSrc":"21071:18:75","nodeType":"YulFunctionCall","src":"21071:18:75"},"nativeSrc":"21071:18:75","nodeType":"YulExpressionStatement","src":"21071:18:75"}]},"condition":{"arguments":[{"name":"value_1","nativeSrc":"21054:7:75","nodeType":"YulIdentifier","src":"21054:7:75"},{"kind":"number","nativeSrc":"21063:4:75","nodeType":"YulLiteral","src":"21063:4:75","type":"","value":"0xff"}],"functionName":{"name":"eq","nativeSrc":"21051:2:75","nodeType":"YulIdentifier","src":"21051:2:75"},"nativeSrc":"21051:17:75","nodeType":"YulFunctionCall","src":"21051:17:75"},"nativeSrc":"21048:43:75","nodeType":"YulIf","src":"21048:43:75"},{"nativeSrc":"21100:22:75","nodeType":"YulAssignment","src":"21100:22:75","value":{"arguments":[{"name":"value_1","nativeSrc":"21111:7:75","nodeType":"YulIdentifier","src":"21111:7:75"},{"kind":"number","nativeSrc":"21120:1:75","nodeType":"YulLiteral","src":"21120:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"21107:3:75","nodeType":"YulIdentifier","src":"21107:3:75"},"nativeSrc":"21107:15:75","nodeType":"YulFunctionCall","src":"21107:15:75"},"variableNames":[{"name":"ret","nativeSrc":"21100:3:75","nodeType":"YulIdentifier","src":"21100:3:75"}]}]},"name":"increment_t_uint8","nativeSrc":"20953:175:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20980:5:75","nodeType":"YulTypedName","src":"20980:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"20990:3:75","nodeType":"YulTypedName","src":"20990:3:75","type":""}],"src":"20953:175:75"},{"body":{"nativeSrc":"21202:306:75","nodeType":"YulBlock","src":"21202:306:75","statements":[{"nativeSrc":"21212:10:75","nodeType":"YulAssignment","src":"21212:10:75","value":{"kind":"number","nativeSrc":"21221:1:75","nodeType":"YulLiteral","src":"21221:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21212:5:75","nodeType":"YulIdentifier","src":"21212:5:75"}]},{"nativeSrc":"21231:13:75","nodeType":"YulAssignment","src":"21231:13:75","value":{"name":"_base","nativeSrc":"21239:5:75","nodeType":"YulIdentifier","src":"21239:5:75"},"variableNames":[{"name":"base","nativeSrc":"21231:4:75","nodeType":"YulIdentifier","src":"21231:4:75"}]},{"body":{"nativeSrc":"21289:213:75","nodeType":"YulBlock","src":"21289:213:75","statements":[{"body":{"nativeSrc":"21331:22:75","nodeType":"YulBlock","src":"21331:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21333:16:75","nodeType":"YulIdentifier","src":"21333:16:75"},"nativeSrc":"21333:18:75","nodeType":"YulFunctionCall","src":"21333:18:75"},"nativeSrc":"21333:18:75","nodeType":"YulExpressionStatement","src":"21333:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"21309:4:75","nodeType":"YulIdentifier","src":"21309:4:75"},{"arguments":[{"name":"max","nativeSrc":"21319:3:75","nodeType":"YulIdentifier","src":"21319:3:75"},{"name":"base","nativeSrc":"21324:4:75","nodeType":"YulIdentifier","src":"21324:4:75"}],"functionName":{"name":"div","nativeSrc":"21315:3:75","nodeType":"YulIdentifier","src":"21315:3:75"},"nativeSrc":"21315:14:75","nodeType":"YulFunctionCall","src":"21315:14:75"}],"functionName":{"name":"gt","nativeSrc":"21306:2:75","nodeType":"YulIdentifier","src":"21306:2:75"},"nativeSrc":"21306:24:75","nodeType":"YulFunctionCall","src":"21306:24:75"},"nativeSrc":"21303:50:75","nodeType":"YulIf","src":"21303:50:75"},{"body":{"nativeSrc":"21386:29:75","nodeType":"YulBlock","src":"21386:29:75","statements":[{"nativeSrc":"21388:25:75","nodeType":"YulAssignment","src":"21388:25:75","value":{"arguments":[{"name":"power","nativeSrc":"21401:5:75","nodeType":"YulIdentifier","src":"21401:5:75"},{"name":"base","nativeSrc":"21408:4:75","nodeType":"YulIdentifier","src":"21408:4:75"}],"functionName":{"name":"mul","nativeSrc":"21397:3:75","nodeType":"YulIdentifier","src":"21397:3:75"},"nativeSrc":"21397:16:75","nodeType":"YulFunctionCall","src":"21397:16:75"},"variableNames":[{"name":"power","nativeSrc":"21388:5:75","nodeType":"YulIdentifier","src":"21388:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21373:8:75","nodeType":"YulIdentifier","src":"21373:8:75"},{"kind":"number","nativeSrc":"21383:1:75","nodeType":"YulLiteral","src":"21383:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"21369:3:75","nodeType":"YulIdentifier","src":"21369:3:75"},"nativeSrc":"21369:16:75","nodeType":"YulFunctionCall","src":"21369:16:75"},"nativeSrc":"21366:49:75","nodeType":"YulIf","src":"21366:49:75"},{"nativeSrc":"21428:23:75","nodeType":"YulAssignment","src":"21428:23:75","value":{"arguments":[{"name":"base","nativeSrc":"21440:4:75","nodeType":"YulIdentifier","src":"21440:4:75"},{"name":"base","nativeSrc":"21446:4:75","nodeType":"YulIdentifier","src":"21446:4:75"}],"functionName":{"name":"mul","nativeSrc":"21436:3:75","nodeType":"YulIdentifier","src":"21436:3:75"},"nativeSrc":"21436:15:75","nodeType":"YulFunctionCall","src":"21436:15:75"},"variableNames":[{"name":"base","nativeSrc":"21428:4:75","nodeType":"YulIdentifier","src":"21428:4:75"}]},{"nativeSrc":"21464:28:75","nodeType":"YulAssignment","src":"21464:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"21480:1:75","nodeType":"YulLiteral","src":"21480:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"21483:8:75","nodeType":"YulIdentifier","src":"21483:8:75"}],"functionName":{"name":"shr","nativeSrc":"21476:3:75","nodeType":"YulIdentifier","src":"21476:3:75"},"nativeSrc":"21476:16:75","nodeType":"YulFunctionCall","src":"21476:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"21464:8:75","nodeType":"YulIdentifier","src":"21464:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21264:8:75","nodeType":"YulIdentifier","src":"21264:8:75"},{"kind":"number","nativeSrc":"21274:1:75","nodeType":"YulLiteral","src":"21274:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"21261:2:75","nodeType":"YulIdentifier","src":"21261:2:75"},"nativeSrc":"21261:15:75","nodeType":"YulFunctionCall","src":"21261:15:75"},"nativeSrc":"21253:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"21277:3:75","nodeType":"YulBlock","src":"21277:3:75","statements":[]},"pre":{"nativeSrc":"21257:3:75","nodeType":"YulBlock","src":"21257:3:75","statements":[]},"src":"21253:249:75"}]},"name":"checked_exp_helper","nativeSrc":"21133:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"21161:5:75","nodeType":"YulTypedName","src":"21161:5:75","type":""},{"name":"exponent","nativeSrc":"21168:8:75","nodeType":"YulTypedName","src":"21168:8:75","type":""},{"name":"max","nativeSrc":"21178:3:75","nodeType":"YulTypedName","src":"21178:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"21186:5:75","nodeType":"YulTypedName","src":"21186:5:75","type":""},{"name":"base","nativeSrc":"21193:4:75","nodeType":"YulTypedName","src":"21193:4:75","type":""}],"src":"21133:375:75"},{"body":{"nativeSrc":"21572:843:75","nodeType":"YulBlock","src":"21572:843:75","statements":[{"body":{"nativeSrc":"21610:52:75","nodeType":"YulBlock","src":"21610:52:75","statements":[{"nativeSrc":"21624:10:75","nodeType":"YulAssignment","src":"21624:10:75","value":{"kind":"number","nativeSrc":"21633:1:75","nodeType":"YulLiteral","src":"21633:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21624:5:75","nodeType":"YulIdentifier","src":"21624:5:75"}]},{"nativeSrc":"21647:5:75","nodeType":"YulLeave","src":"21647:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21592:8:75","nodeType":"YulIdentifier","src":"21592:8:75"}],"functionName":{"name":"iszero","nativeSrc":"21585:6:75","nodeType":"YulIdentifier","src":"21585:6:75"},"nativeSrc":"21585:16:75","nodeType":"YulFunctionCall","src":"21585:16:75"},"nativeSrc":"21582:80:75","nodeType":"YulIf","src":"21582:80:75"},{"body":{"nativeSrc":"21695:52:75","nodeType":"YulBlock","src":"21695:52:75","statements":[{"nativeSrc":"21709:10:75","nodeType":"YulAssignment","src":"21709:10:75","value":{"kind":"number","nativeSrc":"21718:1:75","nodeType":"YulLiteral","src":"21718:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"21709:5:75","nodeType":"YulIdentifier","src":"21709:5:75"}]},{"nativeSrc":"21732:5:75","nodeType":"YulLeave","src":"21732:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"21681:4:75","nodeType":"YulIdentifier","src":"21681:4:75"}],"functionName":{"name":"iszero","nativeSrc":"21674:6:75","nodeType":"YulIdentifier","src":"21674:6:75"},"nativeSrc":"21674:12:75","nodeType":"YulFunctionCall","src":"21674:12:75"},"nativeSrc":"21671:76:75","nodeType":"YulIf","src":"21671:76:75"},{"cases":[{"body":{"nativeSrc":"21783:52:75","nodeType":"YulBlock","src":"21783:52:75","statements":[{"nativeSrc":"21797:10:75","nodeType":"YulAssignment","src":"21797:10:75","value":{"kind":"number","nativeSrc":"21806:1:75","nodeType":"YulLiteral","src":"21806:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"21797:5:75","nodeType":"YulIdentifier","src":"21797:5:75"}]},{"nativeSrc":"21820:5:75","nodeType":"YulLeave","src":"21820:5:75"}]},"nativeSrc":"21776:59:75","nodeType":"YulCase","src":"21776:59:75","value":{"kind":"number","nativeSrc":"21781:1:75","nodeType":"YulLiteral","src":"21781:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"21851:167:75","nodeType":"YulBlock","src":"21851:167:75","statements":[{"body":{"nativeSrc":"21886:22:75","nodeType":"YulBlock","src":"21886:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"21888:16:75","nodeType":"YulIdentifier","src":"21888:16:75"},"nativeSrc":"21888:18:75","nodeType":"YulFunctionCall","src":"21888:18:75"},"nativeSrc":"21888:18:75","nodeType":"YulExpressionStatement","src":"21888:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"21871:8:75","nodeType":"YulIdentifier","src":"21871:8:75"},{"kind":"number","nativeSrc":"21881:3:75","nodeType":"YulLiteral","src":"21881:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"21868:2:75","nodeType":"YulIdentifier","src":"21868:2:75"},"nativeSrc":"21868:17:75","nodeType":"YulFunctionCall","src":"21868:17:75"},"nativeSrc":"21865:43:75","nodeType":"YulIf","src":"21865:43:75"},{"nativeSrc":"21921:25:75","nodeType":"YulAssignment","src":"21921:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"21934:8:75","nodeType":"YulIdentifier","src":"21934:8:75"},{"kind":"number","nativeSrc":"21944:1:75","nodeType":"YulLiteral","src":"21944:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21930:3:75","nodeType":"YulIdentifier","src":"21930:3:75"},"nativeSrc":"21930:16:75","nodeType":"YulFunctionCall","src":"21930:16:75"},"variableNames":[{"name":"power","nativeSrc":"21921:5:75","nodeType":"YulIdentifier","src":"21921:5:75"}]},{"nativeSrc":"21959:11:75","nodeType":"YulVariableDeclaration","src":"21959:11:75","value":{"kind":"number","nativeSrc":"21969:1:75","nodeType":"YulLiteral","src":"21969:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"21963:2:75","nodeType":"YulTypedName","src":"21963:2:75","type":""}]},{"nativeSrc":"21983:7:75","nodeType":"YulAssignment","src":"21983:7:75","value":{"kind":"number","nativeSrc":"21989:1:75","nodeType":"YulLiteral","src":"21989:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"21983:2:75","nodeType":"YulIdentifier","src":"21983:2:75"}]},{"nativeSrc":"22003:5:75","nodeType":"YulLeave","src":"22003:5:75"}]},"nativeSrc":"21844:174:75","nodeType":"YulCase","src":"21844:174:75","value":{"kind":"number","nativeSrc":"21849:1:75","nodeType":"YulLiteral","src":"21849:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"21763:4:75","nodeType":"YulIdentifier","src":"21763:4:75"},"nativeSrc":"21756:262:75","nodeType":"YulSwitch","src":"21756:262:75"},{"body":{"nativeSrc":"22116:114:75","nodeType":"YulBlock","src":"22116:114:75","statements":[{"nativeSrc":"22130:28:75","nodeType":"YulAssignment","src":"22130:28:75","value":{"arguments":[{"name":"base","nativeSrc":"22143:4:75","nodeType":"YulIdentifier","src":"22143:4:75"},{"name":"exponent","nativeSrc":"22149:8:75","nodeType":"YulIdentifier","src":"22149:8:75"}],"functionName":{"name":"exp","nativeSrc":"22139:3:75","nodeType":"YulIdentifier","src":"22139:3:75"},"nativeSrc":"22139:19:75","nodeType":"YulFunctionCall","src":"22139:19:75"},"variableNames":[{"name":"power","nativeSrc":"22130:5:75","nodeType":"YulIdentifier","src":"22130:5:75"}]},{"nativeSrc":"22171:11:75","nodeType":"YulVariableDeclaration","src":"22171:11:75","value":{"kind":"number","nativeSrc":"22181:1:75","nodeType":"YulLiteral","src":"22181:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"22175:2:75","nodeType":"YulTypedName","src":"22175:2:75","type":""}]},{"nativeSrc":"22195:7:75","nodeType":"YulAssignment","src":"22195:7:75","value":{"kind":"number","nativeSrc":"22201:1:75","nodeType":"YulLiteral","src":"22201:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"22195:2:75","nodeType":"YulIdentifier","src":"22195:2:75"}]},{"nativeSrc":"22215:5:75","nodeType":"YulLeave","src":"22215:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"22040:4:75","nodeType":"YulIdentifier","src":"22040:4:75"},{"kind":"number","nativeSrc":"22046:2:75","nodeType":"YulLiteral","src":"22046:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"22037:2:75","nodeType":"YulIdentifier","src":"22037:2:75"},"nativeSrc":"22037:12:75","nodeType":"YulFunctionCall","src":"22037:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"22054:8:75","nodeType":"YulIdentifier","src":"22054:8:75"},{"kind":"number","nativeSrc":"22064:2:75","nodeType":"YulLiteral","src":"22064:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"22051:2:75","nodeType":"YulIdentifier","src":"22051:2:75"},"nativeSrc":"22051:16:75","nodeType":"YulFunctionCall","src":"22051:16:75"}],"functionName":{"name":"and","nativeSrc":"22033:3:75","nodeType":"YulIdentifier","src":"22033:3:75"},"nativeSrc":"22033:35:75","nodeType":"YulFunctionCall","src":"22033:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"22077:4:75","nodeType":"YulIdentifier","src":"22077:4:75"},{"kind":"number","nativeSrc":"22083:3:75","nodeType":"YulLiteral","src":"22083:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"22074:2:75","nodeType":"YulIdentifier","src":"22074:2:75"},"nativeSrc":"22074:13:75","nodeType":"YulFunctionCall","src":"22074:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"22092:8:75","nodeType":"YulIdentifier","src":"22092:8:75"},{"kind":"number","nativeSrc":"22102:2:75","nodeType":"YulLiteral","src":"22102:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"22089:2:75","nodeType":"YulIdentifier","src":"22089:2:75"},"nativeSrc":"22089:16:75","nodeType":"YulFunctionCall","src":"22089:16:75"}],"functionName":{"name":"and","nativeSrc":"22070:3:75","nodeType":"YulIdentifier","src":"22070:3:75"},"nativeSrc":"22070:36:75","nodeType":"YulFunctionCall","src":"22070:36:75"}],"functionName":{"name":"or","nativeSrc":"22030:2:75","nodeType":"YulIdentifier","src":"22030:2:75"},"nativeSrc":"22030:77:75","nodeType":"YulFunctionCall","src":"22030:77:75"},"nativeSrc":"22027:203:75","nodeType":"YulIf","src":"22027:203:75"},{"nativeSrc":"22239:65:75","nodeType":"YulVariableDeclaration","src":"22239:65:75","value":{"arguments":[{"name":"base","nativeSrc":"22281:4:75","nodeType":"YulIdentifier","src":"22281:4:75"},{"name":"exponent","nativeSrc":"22287:8:75","nodeType":"YulIdentifier","src":"22287:8:75"},{"arguments":[{"kind":"number","nativeSrc":"22301:1:75","nodeType":"YulLiteral","src":"22301:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"22297:3:75","nodeType":"YulIdentifier","src":"22297:3:75"},"nativeSrc":"22297:6:75","nodeType":"YulFunctionCall","src":"22297:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"22262:18:75","nodeType":"YulIdentifier","src":"22262:18:75"},"nativeSrc":"22262:42:75","nodeType":"YulFunctionCall","src":"22262:42:75"},"variables":[{"name":"power_1","nativeSrc":"22243:7:75","nodeType":"YulTypedName","src":"22243:7:75","type":""},{"name":"base_1","nativeSrc":"22252:6:75","nodeType":"YulTypedName","src":"22252:6:75","type":""}]},{"body":{"nativeSrc":"22349:22:75","nodeType":"YulBlock","src":"22349:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"22351:16:75","nodeType":"YulIdentifier","src":"22351:16:75"},"nativeSrc":"22351:18:75","nodeType":"YulFunctionCall","src":"22351:18:75"},"nativeSrc":"22351:18:75","nodeType":"YulExpressionStatement","src":"22351:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"22319:7:75","nodeType":"YulIdentifier","src":"22319:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22336:1:75","nodeType":"YulLiteral","src":"22336:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"22332:3:75","nodeType":"YulIdentifier","src":"22332:3:75"},"nativeSrc":"22332:6:75","nodeType":"YulFunctionCall","src":"22332:6:75"},{"name":"base_1","nativeSrc":"22340:6:75","nodeType":"YulIdentifier","src":"22340:6:75"}],"functionName":{"name":"div","nativeSrc":"22328:3:75","nodeType":"YulIdentifier","src":"22328:3:75"},"nativeSrc":"22328:19:75","nodeType":"YulFunctionCall","src":"22328:19:75"}],"functionName":{"name":"gt","nativeSrc":"22316:2:75","nodeType":"YulIdentifier","src":"22316:2:75"},"nativeSrc":"22316:32:75","nodeType":"YulFunctionCall","src":"22316:32:75"},"nativeSrc":"22313:58:75","nodeType":"YulIf","src":"22313:58:75"},{"nativeSrc":"22380:29:75","nodeType":"YulAssignment","src":"22380:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"22393:7:75","nodeType":"YulIdentifier","src":"22393:7:75"},{"name":"base_1","nativeSrc":"22402:6:75","nodeType":"YulIdentifier","src":"22402:6:75"}],"functionName":{"name":"mul","nativeSrc":"22389:3:75","nodeType":"YulIdentifier","src":"22389:3:75"},"nativeSrc":"22389:20:75","nodeType":"YulFunctionCall","src":"22389:20:75"},"variableNames":[{"name":"power","nativeSrc":"22380:5:75","nodeType":"YulIdentifier","src":"22380:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"21513:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"21543:4:75","nodeType":"YulTypedName","src":"21543:4:75","type":""},{"name":"exponent","nativeSrc":"21549:8:75","nodeType":"YulTypedName","src":"21549:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"21562:5:75","nodeType":"YulTypedName","src":"21562:5:75","type":""}],"src":"21513:902:75"},{"body":{"nativeSrc":"22488:72:75","nodeType":"YulBlock","src":"22488:72:75","statements":[{"nativeSrc":"22498:56:75","nodeType":"YulAssignment","src":"22498:56:75","value":{"arguments":[{"name":"base","nativeSrc":"22528:4:75","nodeType":"YulIdentifier","src":"22528:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"22538:8:75","nodeType":"YulIdentifier","src":"22538:8:75"},{"kind":"number","nativeSrc":"22548:4:75","nodeType":"YulLiteral","src":"22548:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22534:3:75","nodeType":"YulIdentifier","src":"22534:3:75"},"nativeSrc":"22534:19:75","nodeType":"YulFunctionCall","src":"22534:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"22507:20:75","nodeType":"YulIdentifier","src":"22507:20:75"},"nativeSrc":"22507:47:75","nodeType":"YulFunctionCall","src":"22507:47:75"},"variableNames":[{"name":"power","nativeSrc":"22498:5:75","nodeType":"YulIdentifier","src":"22498:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"22420:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"22459:4:75","nodeType":"YulTypedName","src":"22459:4:75","type":""},{"name":"exponent","nativeSrc":"22465:8:75","nodeType":"YulTypedName","src":"22465:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"22478:5:75","nodeType":"YulTypedName","src":"22478:5:75","type":""}],"src":"22420:140:75"},{"body":{"nativeSrc":"22702:130:75","nodeType":"YulBlock","src":"22702:130:75","statements":[{"nativeSrc":"22712:26:75","nodeType":"YulAssignment","src":"22712:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"22724:9:75","nodeType":"YulIdentifier","src":"22724:9:75"},{"kind":"number","nativeSrc":"22735:2:75","nodeType":"YulLiteral","src":"22735:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22720:3:75","nodeType":"YulIdentifier","src":"22720:3:75"},"nativeSrc":"22720:18:75","nodeType":"YulFunctionCall","src":"22720:18:75"},"variableNames":[{"name":"tail","nativeSrc":"22712:4:75","nodeType":"YulIdentifier","src":"22712:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22754:9:75","nodeType":"YulIdentifier","src":"22754:9:75"},{"arguments":[{"name":"value0","nativeSrc":"22769:6:75","nodeType":"YulIdentifier","src":"22769:6:75"},{"kind":"number","nativeSrc":"22777:4:75","nodeType":"YulLiteral","src":"22777:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"22765:3:75","nodeType":"YulIdentifier","src":"22765:3:75"},"nativeSrc":"22765:17:75","nodeType":"YulFunctionCall","src":"22765:17:75"}],"functionName":{"name":"mstore","nativeSrc":"22747:6:75","nodeType":"YulIdentifier","src":"22747:6:75"},"nativeSrc":"22747:36:75","nodeType":"YulFunctionCall","src":"22747:36:75"},"nativeSrc":"22747:36:75","nodeType":"YulExpressionStatement","src":"22747:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22803:9:75","nodeType":"YulIdentifier","src":"22803:9:75"},{"kind":"number","nativeSrc":"22814:2:75","nodeType":"YulLiteral","src":"22814:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22799:3:75","nodeType":"YulIdentifier","src":"22799:3:75"},"nativeSrc":"22799:18:75","nodeType":"YulFunctionCall","src":"22799:18:75"},{"name":"value1","nativeSrc":"22819:6:75","nodeType":"YulIdentifier","src":"22819:6:75"}],"functionName":{"name":"mstore","nativeSrc":"22792:6:75","nodeType":"YulIdentifier","src":"22792:6:75"},"nativeSrc":"22792:34:75","nodeType":"YulFunctionCall","src":"22792:34:75"},"nativeSrc":"22792:34:75","nodeType":"YulExpressionStatement","src":"22792:34:75"}]},"name":"abi_encode_tuple_t_rational_128_by_1_t_uint256__to_t_uint8_t_uint256__fromStack_reversed","nativeSrc":"22565:267:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22663:9:75","nodeType":"YulTypedName","src":"22663:9:75","type":""},{"name":"value1","nativeSrc":"22674:6:75","nodeType":"YulTypedName","src":"22674:6:75","type":""},{"name":"value0","nativeSrc":"22682:6:75","nodeType":"YulTypedName","src":"22682:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22693:4:75","nodeType":"YulTypedName","src":"22693:4:75","type":""}],"src":"22565:267:75"},{"body":{"nativeSrc":"22941:170:75","nodeType":"YulBlock","src":"22941:170:75","statements":[{"body":{"nativeSrc":"22987:16:75","nodeType":"YulBlock","src":"22987:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22996:1:75","nodeType":"YulLiteral","src":"22996:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"22999:1:75","nodeType":"YulLiteral","src":"22999:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22989:6:75","nodeType":"YulIdentifier","src":"22989:6:75"},"nativeSrc":"22989:12:75","nodeType":"YulFunctionCall","src":"22989:12:75"},"nativeSrc":"22989:12:75","nodeType":"YulExpressionStatement","src":"22989:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22962:7:75","nodeType":"YulIdentifier","src":"22962:7:75"},{"name":"headStart","nativeSrc":"22971:9:75","nodeType":"YulIdentifier","src":"22971:9:75"}],"functionName":{"name":"sub","nativeSrc":"22958:3:75","nodeType":"YulIdentifier","src":"22958:3:75"},"nativeSrc":"22958:23:75","nodeType":"YulFunctionCall","src":"22958:23:75"},{"kind":"number","nativeSrc":"22983:2:75","nodeType":"YulLiteral","src":"22983:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22954:3:75","nodeType":"YulIdentifier","src":"22954:3:75"},"nativeSrc":"22954:32:75","nodeType":"YulFunctionCall","src":"22954:32:75"},"nativeSrc":"22951:52:75","nodeType":"YulIf","src":"22951:52:75"},{"nativeSrc":"23012:29:75","nodeType":"YulVariableDeclaration","src":"23012:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23031:9:75","nodeType":"YulIdentifier","src":"23031:9:75"}],"functionName":{"name":"mload","nativeSrc":"23025:5:75","nodeType":"YulIdentifier","src":"23025:5:75"},"nativeSrc":"23025:16:75","nodeType":"YulFunctionCall","src":"23025:16:75"},"variables":[{"name":"value","nativeSrc":"23016:5:75","nodeType":"YulTypedName","src":"23016:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23075:5:75","nodeType":"YulIdentifier","src":"23075:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"23050:24:75","nodeType":"YulIdentifier","src":"23050:24:75"},"nativeSrc":"23050:31:75","nodeType":"YulFunctionCall","src":"23050:31:75"},"nativeSrc":"23050:31:75","nodeType":"YulExpressionStatement","src":"23050:31:75"},{"nativeSrc":"23090:15:75","nodeType":"YulAssignment","src":"23090:15:75","value":{"name":"value","nativeSrc":"23100:5:75","nodeType":"YulIdentifier","src":"23100:5:75"},"variableNames":[{"name":"value0","nativeSrc":"23090:6:75","nodeType":"YulIdentifier","src":"23090:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IAccessManager_$7253_fromMemory","nativeSrc":"22837:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22907:9:75","nodeType":"YulTypedName","src":"22907:9:75","type":""},{"name":"dataEnd","nativeSrc":"22918:7:75","nodeType":"YulTypedName","src":"22918:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22930:6:75","nodeType":"YulTypedName","src":"22930:6:75","type":""}],"src":"22837:274:75"},{"body":{"nativeSrc":"23271:241:75","nodeType":"YulBlock","src":"23271:241:75","statements":[{"nativeSrc":"23281:26:75","nodeType":"YulAssignment","src":"23281:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23293:9:75","nodeType":"YulIdentifier","src":"23293:9:75"},{"kind":"number","nativeSrc":"23304:2:75","nodeType":"YulLiteral","src":"23304:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"23289:3:75","nodeType":"YulIdentifier","src":"23289:3:75"},"nativeSrc":"23289:18:75","nodeType":"YulFunctionCall","src":"23289:18:75"},"variableNames":[{"name":"tail","nativeSrc":"23281:4:75","nodeType":"YulIdentifier","src":"23281:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23323:9:75","nodeType":"YulIdentifier","src":"23323:9:75"},{"arguments":[{"name":"value0","nativeSrc":"23338:6:75","nodeType":"YulIdentifier","src":"23338:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23354:3:75","nodeType":"YulLiteral","src":"23354:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23359:1:75","nodeType":"YulLiteral","src":"23359:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23350:3:75","nodeType":"YulIdentifier","src":"23350:3:75"},"nativeSrc":"23350:11:75","nodeType":"YulFunctionCall","src":"23350:11:75"},{"kind":"number","nativeSrc":"23363:1:75","nodeType":"YulLiteral","src":"23363:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23346:3:75","nodeType":"YulIdentifier","src":"23346:3:75"},"nativeSrc":"23346:19:75","nodeType":"YulFunctionCall","src":"23346:19:75"}],"functionName":{"name":"and","nativeSrc":"23334:3:75","nodeType":"YulIdentifier","src":"23334:3:75"},"nativeSrc":"23334:32:75","nodeType":"YulFunctionCall","src":"23334:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23316:6:75","nodeType":"YulIdentifier","src":"23316:6:75"},"nativeSrc":"23316:51:75","nodeType":"YulFunctionCall","src":"23316:51:75"},"nativeSrc":"23316:51:75","nodeType":"YulExpressionStatement","src":"23316:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23387:9:75","nodeType":"YulIdentifier","src":"23387:9:75"},{"kind":"number","nativeSrc":"23398:2:75","nodeType":"YulLiteral","src":"23398:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23383:3:75","nodeType":"YulIdentifier","src":"23383:3:75"},"nativeSrc":"23383:18:75","nodeType":"YulFunctionCall","src":"23383:18:75"},{"arguments":[{"name":"value1","nativeSrc":"23407:6:75","nodeType":"YulIdentifier","src":"23407:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23423:3:75","nodeType":"YulLiteral","src":"23423:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"23428:1:75","nodeType":"YulLiteral","src":"23428:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23419:3:75","nodeType":"YulIdentifier","src":"23419:3:75"},"nativeSrc":"23419:11:75","nodeType":"YulFunctionCall","src":"23419:11:75"},{"kind":"number","nativeSrc":"23432:1:75","nodeType":"YulLiteral","src":"23432:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23415:3:75","nodeType":"YulIdentifier","src":"23415:3:75"},"nativeSrc":"23415:19:75","nodeType":"YulFunctionCall","src":"23415:19:75"}],"functionName":{"name":"and","nativeSrc":"23403:3:75","nodeType":"YulIdentifier","src":"23403:3:75"},"nativeSrc":"23403:32:75","nodeType":"YulFunctionCall","src":"23403:32:75"}],"functionName":{"name":"mstore","nativeSrc":"23376:6:75","nodeType":"YulIdentifier","src":"23376:6:75"},"nativeSrc":"23376:60:75","nodeType":"YulFunctionCall","src":"23376:60:75"},"nativeSrc":"23376:60:75","nodeType":"YulExpressionStatement","src":"23376:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23456:9:75","nodeType":"YulIdentifier","src":"23456:9:75"},{"kind":"number","nativeSrc":"23467:2:75","nodeType":"YulLiteral","src":"23467:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23452:3:75","nodeType":"YulIdentifier","src":"23452:3:75"},"nativeSrc":"23452:18:75","nodeType":"YulFunctionCall","src":"23452:18:75"},{"arguments":[{"name":"value2","nativeSrc":"23476:6:75","nodeType":"YulIdentifier","src":"23476:6:75"},{"arguments":[{"kind":"number","nativeSrc":"23488:3:75","nodeType":"YulLiteral","src":"23488:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"23493:10:75","nodeType":"YulLiteral","src":"23493:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"23484:3:75","nodeType":"YulIdentifier","src":"23484:3:75"},"nativeSrc":"23484:20:75","nodeType":"YulFunctionCall","src":"23484:20:75"}],"functionName":{"name":"and","nativeSrc":"23472:3:75","nodeType":"YulIdentifier","src":"23472:3:75"},"nativeSrc":"23472:33:75","nodeType":"YulFunctionCall","src":"23472:33:75"}],"functionName":{"name":"mstore","nativeSrc":"23445:6:75","nodeType":"YulIdentifier","src":"23445:6:75"},"nativeSrc":"23445:61:75","nodeType":"YulFunctionCall","src":"23445:61:75"},"nativeSrc":"23445:61:75","nodeType":"YulExpressionStatement","src":"23445:61:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_bytes4__to_t_address_t_address_t_bytes4__fromStack_reversed","nativeSrc":"23116:396:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23224:9:75","nodeType":"YulTypedName","src":"23224:9:75","type":""},{"name":"value2","nativeSrc":"23235:6:75","nodeType":"YulTypedName","src":"23235:6:75","type":""},{"name":"value1","nativeSrc":"23243:6:75","nodeType":"YulTypedName","src":"23243:6:75","type":""},{"name":"value0","nativeSrc":"23251:6:75","nodeType":"YulTypedName","src":"23251:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23262:4:75","nodeType":"YulTypedName","src":"23262:4:75","type":""}],"src":"23116:396:75"},{"body":{"nativeSrc":"23611:316:75","nodeType":"YulBlock","src":"23611:316:75","statements":[{"body":{"nativeSrc":"23657:16:75","nodeType":"YulBlock","src":"23657:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23666:1:75","nodeType":"YulLiteral","src":"23666:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23669:1:75","nodeType":"YulLiteral","src":"23669:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23659:6:75","nodeType":"YulIdentifier","src":"23659:6:75"},"nativeSrc":"23659:12:75","nodeType":"YulFunctionCall","src":"23659:12:75"},"nativeSrc":"23659:12:75","nodeType":"YulExpressionStatement","src":"23659:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"23632:7:75","nodeType":"YulIdentifier","src":"23632:7:75"},{"name":"headStart","nativeSrc":"23641:9:75","nodeType":"YulIdentifier","src":"23641:9:75"}],"functionName":{"name":"sub","nativeSrc":"23628:3:75","nodeType":"YulIdentifier","src":"23628:3:75"},"nativeSrc":"23628:23:75","nodeType":"YulFunctionCall","src":"23628:23:75"},{"kind":"number","nativeSrc":"23653:2:75","nodeType":"YulLiteral","src":"23653:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"23624:3:75","nodeType":"YulIdentifier","src":"23624:3:75"},"nativeSrc":"23624:32:75","nodeType":"YulFunctionCall","src":"23624:32:75"},"nativeSrc":"23621:52:75","nodeType":"YulIf","src":"23621:52:75"},{"nativeSrc":"23682:29:75","nodeType":"YulVariableDeclaration","src":"23682:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"23701:9:75","nodeType":"YulIdentifier","src":"23701:9:75"}],"functionName":{"name":"mload","nativeSrc":"23695:5:75","nodeType":"YulIdentifier","src":"23695:5:75"},"nativeSrc":"23695:16:75","nodeType":"YulFunctionCall","src":"23695:16:75"},"variables":[{"name":"value","nativeSrc":"23686:5:75","nodeType":"YulTypedName","src":"23686:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23742:5:75","nodeType":"YulIdentifier","src":"23742:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"23720:21:75","nodeType":"YulIdentifier","src":"23720:21:75"},"nativeSrc":"23720:28:75","nodeType":"YulFunctionCall","src":"23720:28:75"},"nativeSrc":"23720:28:75","nodeType":"YulExpressionStatement","src":"23720:28:75"},{"nativeSrc":"23757:15:75","nodeType":"YulAssignment","src":"23757:15:75","value":{"name":"value","nativeSrc":"23767:5:75","nodeType":"YulIdentifier","src":"23767:5:75"},"variableNames":[{"name":"value0","nativeSrc":"23757:6:75","nodeType":"YulIdentifier","src":"23757:6:75"}]},{"nativeSrc":"23781:40:75","nodeType":"YulVariableDeclaration","src":"23781:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23806:9:75","nodeType":"YulIdentifier","src":"23806:9:75"},{"kind":"number","nativeSrc":"23817:2:75","nodeType":"YulLiteral","src":"23817:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23802:3:75","nodeType":"YulIdentifier","src":"23802:3:75"},"nativeSrc":"23802:18:75","nodeType":"YulFunctionCall","src":"23802:18:75"}],"functionName":{"name":"mload","nativeSrc":"23796:5:75","nodeType":"YulIdentifier","src":"23796:5:75"},"nativeSrc":"23796:25:75","nodeType":"YulFunctionCall","src":"23796:25:75"},"variables":[{"name":"value_1","nativeSrc":"23785:7:75","nodeType":"YulTypedName","src":"23785:7:75","type":""}]},{"body":{"nativeSrc":"23879:16:75","nodeType":"YulBlock","src":"23879:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23888:1:75","nodeType":"YulLiteral","src":"23888:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"23891:1:75","nodeType":"YulLiteral","src":"23891:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23881:6:75","nodeType":"YulIdentifier","src":"23881:6:75"},"nativeSrc":"23881:12:75","nodeType":"YulFunctionCall","src":"23881:12:75"},"nativeSrc":"23881:12:75","nodeType":"YulExpressionStatement","src":"23881:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"23843:7:75","nodeType":"YulIdentifier","src":"23843:7:75"},{"arguments":[{"name":"value_1","nativeSrc":"23856:7:75","nodeType":"YulIdentifier","src":"23856:7:75"},{"kind":"number","nativeSrc":"23865:10:75","nodeType":"YulLiteral","src":"23865:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"23852:3:75","nodeType":"YulIdentifier","src":"23852:3:75"},"nativeSrc":"23852:24:75","nodeType":"YulFunctionCall","src":"23852:24:75"}],"functionName":{"name":"eq","nativeSrc":"23840:2:75","nodeType":"YulIdentifier","src":"23840:2:75"},"nativeSrc":"23840:37:75","nodeType":"YulFunctionCall","src":"23840:37:75"}],"functionName":{"name":"iszero","nativeSrc":"23833:6:75","nodeType":"YulIdentifier","src":"23833:6:75"},"nativeSrc":"23833:45:75","nodeType":"YulFunctionCall","src":"23833:45:75"},"nativeSrc":"23830:65:75","nodeType":"YulIf","src":"23830:65:75"},{"nativeSrc":"23904:17:75","nodeType":"YulAssignment","src":"23904:17:75","value":{"name":"value_1","nativeSrc":"23914:7:75","nodeType":"YulIdentifier","src":"23914:7:75"},"variableNames":[{"name":"value1","nativeSrc":"23904:6:75","nodeType":"YulIdentifier","src":"23904:6:75"}]}]},"name":"abi_decode_tuple_t_boolt_uint32_fromMemory","nativeSrc":"23517:410:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23569:9:75","nodeType":"YulTypedName","src":"23569:9:75","type":""},{"name":"dataEnd","nativeSrc":"23580:7:75","nodeType":"YulTypedName","src":"23580:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"23592:6:75","nodeType":"YulTypedName","src":"23592:6:75","type":""},{"name":"value1","nativeSrc":"23600:6:75","nodeType":"YulTypedName","src":"23600:6:75","type":""}],"src":"23517:410:75"},{"body":{"nativeSrc":"24075:153:75","nodeType":"YulBlock","src":"24075:153:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24092:9:75","nodeType":"YulIdentifier","src":"24092:9:75"},{"arguments":[{"name":"value0","nativeSrc":"24107:6:75","nodeType":"YulIdentifier","src":"24107:6:75"},{"kind":"number","nativeSrc":"24115:4:75","nodeType":"YulLiteral","src":"24115:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"24103:3:75","nodeType":"YulIdentifier","src":"24103:3:75"},"nativeSrc":"24103:17:75","nodeType":"YulFunctionCall","src":"24103:17:75"}],"functionName":{"name":"mstore","nativeSrc":"24085:6:75","nodeType":"YulIdentifier","src":"24085:6:75"},"nativeSrc":"24085:36:75","nodeType":"YulFunctionCall","src":"24085:36:75"},"nativeSrc":"24085:36:75","nodeType":"YulExpressionStatement","src":"24085:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24141:9:75","nodeType":"YulIdentifier","src":"24141:9:75"},{"kind":"number","nativeSrc":"24152:2:75","nodeType":"YulLiteral","src":"24152:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24137:3:75","nodeType":"YulIdentifier","src":"24137:3:75"},"nativeSrc":"24137:18:75","nodeType":"YulFunctionCall","src":"24137:18:75"},{"kind":"number","nativeSrc":"24157:2:75","nodeType":"YulLiteral","src":"24157:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"24130:6:75","nodeType":"YulIdentifier","src":"24130:6:75"},"nativeSrc":"24130:30:75","nodeType":"YulFunctionCall","src":"24130:30:75"},"nativeSrc":"24130:30:75","nodeType":"YulExpressionStatement","src":"24130:30:75"},{"nativeSrc":"24169:53:75","nodeType":"YulAssignment","src":"24169:53:75","value":{"arguments":[{"name":"value1","nativeSrc":"24195:6:75","nodeType":"YulIdentifier","src":"24195:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"24207:9:75","nodeType":"YulIdentifier","src":"24207:9:75"},{"kind":"number","nativeSrc":"24218:2:75","nodeType":"YulLiteral","src":"24218:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24203:3:75","nodeType":"YulIdentifier","src":"24203:3:75"},"nativeSrc":"24203:18:75","nodeType":"YulFunctionCall","src":"24203:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24177:17:75","nodeType":"YulIdentifier","src":"24177:17:75"},"nativeSrc":"24177:45:75","nodeType":"YulFunctionCall","src":"24177:45:75"},"variableNames":[{"name":"tail","nativeSrc":"24169:4:75","nodeType":"YulIdentifier","src":"24169:4:75"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"23932:296:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24036:9:75","nodeType":"YulTypedName","src":"24036:9:75","type":""},{"name":"value1","nativeSrc":"24047:6:75","nodeType":"YulTypedName","src":"24047:6:75","type":""},{"name":"value0","nativeSrc":"24055:6:75","nodeType":"YulTypedName","src":"24055:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24066:4:75","nodeType":"YulTypedName","src":"24066:4:75","type":""}],"src":"23932:296:75"},{"body":{"nativeSrc":"24314:103:75","nodeType":"YulBlock","src":"24314:103:75","statements":[{"body":{"nativeSrc":"24360:16:75","nodeType":"YulBlock","src":"24360:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"24369:1:75","nodeType":"YulLiteral","src":"24369:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"24372:1:75","nodeType":"YulLiteral","src":"24372:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"24362:6:75","nodeType":"YulIdentifier","src":"24362:6:75"},"nativeSrc":"24362:12:75","nodeType":"YulFunctionCall","src":"24362:12:75"},"nativeSrc":"24362:12:75","nodeType":"YulExpressionStatement","src":"24362:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"24335:7:75","nodeType":"YulIdentifier","src":"24335:7:75"},{"name":"headStart","nativeSrc":"24344:9:75","nodeType":"YulIdentifier","src":"24344:9:75"}],"functionName":{"name":"sub","nativeSrc":"24331:3:75","nodeType":"YulIdentifier","src":"24331:3:75"},"nativeSrc":"24331:23:75","nodeType":"YulFunctionCall","src":"24331:23:75"},{"kind":"number","nativeSrc":"24356:2:75","nodeType":"YulLiteral","src":"24356:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"24327:3:75","nodeType":"YulIdentifier","src":"24327:3:75"},"nativeSrc":"24327:32:75","nodeType":"YulFunctionCall","src":"24327:32:75"},"nativeSrc":"24324:52:75","nodeType":"YulIf","src":"24324:52:75"},{"nativeSrc":"24385:26:75","nodeType":"YulAssignment","src":"24385:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"24401:9:75","nodeType":"YulIdentifier","src":"24401:9:75"}],"functionName":{"name":"mload","nativeSrc":"24395:5:75","nodeType":"YulIdentifier","src":"24395:5:75"},"nativeSrc":"24395:16:75","nodeType":"YulFunctionCall","src":"24395:16:75"},"variableNames":[{"name":"value0","nativeSrc":"24385:6:75","nodeType":"YulIdentifier","src":"24385:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"24233:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24280:9:75","nodeType":"YulTypedName","src":"24280:9:75","type":""},{"name":"dataEnd","nativeSrc":"24291:7:75","nodeType":"YulTypedName","src":"24291:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"24303:6:75","nodeType":"YulTypedName","src":"24303:6:75","type":""}],"src":"24233:184:75"},{"body":{"nativeSrc":"24601:171:75","nodeType":"YulBlock","src":"24601:171:75","statements":[{"nativeSrc":"24611:26:75","nodeType":"YulAssignment","src":"24611:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"24623:9:75","nodeType":"YulIdentifier","src":"24623:9:75"},{"kind":"number","nativeSrc":"24634:2:75","nodeType":"YulLiteral","src":"24634:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24619:3:75","nodeType":"YulIdentifier","src":"24619:3:75"},"nativeSrc":"24619:18:75","nodeType":"YulFunctionCall","src":"24619:18:75"},"variableNames":[{"name":"tail","nativeSrc":"24611:4:75","nodeType":"YulIdentifier","src":"24611:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24653:9:75","nodeType":"YulIdentifier","src":"24653:9:75"},{"arguments":[{"name":"value0","nativeSrc":"24668:6:75","nodeType":"YulIdentifier","src":"24668:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24684:3:75","nodeType":"YulLiteral","src":"24684:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"24689:1:75","nodeType":"YulLiteral","src":"24689:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24680:3:75","nodeType":"YulIdentifier","src":"24680:3:75"},"nativeSrc":"24680:11:75","nodeType":"YulFunctionCall","src":"24680:11:75"},{"kind":"number","nativeSrc":"24693:1:75","nodeType":"YulLiteral","src":"24693:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24676:3:75","nodeType":"YulIdentifier","src":"24676:3:75"},"nativeSrc":"24676:19:75","nodeType":"YulFunctionCall","src":"24676:19:75"}],"functionName":{"name":"and","nativeSrc":"24664:3:75","nodeType":"YulIdentifier","src":"24664:3:75"},"nativeSrc":"24664:32:75","nodeType":"YulFunctionCall","src":"24664:32:75"}],"functionName":{"name":"mstore","nativeSrc":"24646:6:75","nodeType":"YulIdentifier","src":"24646:6:75"},"nativeSrc":"24646:51:75","nodeType":"YulFunctionCall","src":"24646:51:75"},"nativeSrc":"24646:51:75","nodeType":"YulExpressionStatement","src":"24646:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24717:9:75","nodeType":"YulIdentifier","src":"24717:9:75"},{"kind":"number","nativeSrc":"24728:2:75","nodeType":"YulLiteral","src":"24728:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24713:3:75","nodeType":"YulIdentifier","src":"24713:3:75"},"nativeSrc":"24713:18:75","nodeType":"YulFunctionCall","src":"24713:18:75"},{"arguments":[{"name":"value1","nativeSrc":"24737:6:75","nodeType":"YulIdentifier","src":"24737:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24753:3:75","nodeType":"YulLiteral","src":"24753:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"24758:1:75","nodeType":"YulLiteral","src":"24758:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24749:3:75","nodeType":"YulIdentifier","src":"24749:3:75"},"nativeSrc":"24749:11:75","nodeType":"YulFunctionCall","src":"24749:11:75"},{"kind":"number","nativeSrc":"24762:1:75","nodeType":"YulLiteral","src":"24762:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24745:3:75","nodeType":"YulIdentifier","src":"24745:3:75"},"nativeSrc":"24745:19:75","nodeType":"YulFunctionCall","src":"24745:19:75"}],"functionName":{"name":"and","nativeSrc":"24733:3:75","nodeType":"YulIdentifier","src":"24733:3:75"},"nativeSrc":"24733:32:75","nodeType":"YulFunctionCall","src":"24733:32:75"}],"functionName":{"name":"mstore","nativeSrc":"24706:6:75","nodeType":"YulIdentifier","src":"24706:6:75"},"nativeSrc":"24706:60:75","nodeType":"YulFunctionCall","src":"24706:60:75"},"nativeSrc":"24706:60:75","nodeType":"YulExpressionStatement","src":"24706:60:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__to_t_address_t_address__fromStack_reversed","nativeSrc":"24422:350:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24562:9:75","nodeType":"YulTypedName","src":"24562:9:75","type":""},{"name":"value1","nativeSrc":"24573:6:75","nodeType":"YulTypedName","src":"24573:6:75","type":""},{"name":"value0","nativeSrc":"24581:6:75","nodeType":"YulTypedName","src":"24581:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24592:4:75","nodeType":"YulTypedName","src":"24592:4:75","type":""}],"src":"24422:350:75"},{"body":{"nativeSrc":"24858:170:75","nodeType":"YulBlock","src":"24858:170:75","statements":[{"body":{"nativeSrc":"24904:16:75","nodeType":"YulBlock","src":"24904:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"24913:1:75","nodeType":"YulLiteral","src":"24913:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"24916:1:75","nodeType":"YulLiteral","src":"24916:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"24906:6:75","nodeType":"YulIdentifier","src":"24906:6:75"},"nativeSrc":"24906:12:75","nodeType":"YulFunctionCall","src":"24906:12:75"},"nativeSrc":"24906:12:75","nodeType":"YulExpressionStatement","src":"24906:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"24879:7:75","nodeType":"YulIdentifier","src":"24879:7:75"},{"name":"headStart","nativeSrc":"24888:9:75","nodeType":"YulIdentifier","src":"24888:9:75"}],"functionName":{"name":"sub","nativeSrc":"24875:3:75","nodeType":"YulIdentifier","src":"24875:3:75"},"nativeSrc":"24875:23:75","nodeType":"YulFunctionCall","src":"24875:23:75"},{"kind":"number","nativeSrc":"24900:2:75","nodeType":"YulLiteral","src":"24900:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"24871:3:75","nodeType":"YulIdentifier","src":"24871:3:75"},"nativeSrc":"24871:32:75","nodeType":"YulFunctionCall","src":"24871:32:75"},"nativeSrc":"24868:52:75","nodeType":"YulIf","src":"24868:52:75"},{"nativeSrc":"24929:29:75","nodeType":"YulVariableDeclaration","src":"24929:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"24948:9:75","nodeType":"YulIdentifier","src":"24948:9:75"}],"functionName":{"name":"mload","nativeSrc":"24942:5:75","nodeType":"YulIdentifier","src":"24942:5:75"},"nativeSrc":"24942:16:75","nodeType":"YulFunctionCall","src":"24942:16:75"},"variables":[{"name":"value","nativeSrc":"24933:5:75","nodeType":"YulTypedName","src":"24933:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"24992:5:75","nodeType":"YulIdentifier","src":"24992:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"24967:24:75","nodeType":"YulIdentifier","src":"24967:24:75"},"nativeSrc":"24967:31:75","nodeType":"YulFunctionCall","src":"24967:31:75"},"nativeSrc":"24967:31:75","nodeType":"YulExpressionStatement","src":"24967:31:75"},{"nativeSrc":"25007:15:75","nodeType":"YulAssignment","src":"25007:15:75","value":{"name":"value","nativeSrc":"25017:5:75","nodeType":"YulIdentifier","src":"25017:5:75"},"variableNames":[{"name":"value0","nativeSrc":"25007:6:75","nodeType":"YulIdentifier","src":"25007:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"24777:251:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24824:9:75","nodeType":"YulTypedName","src":"24824:9:75","type":""},{"name":"dataEnd","nativeSrc":"24835:7:75","nodeType":"YulTypedName","src":"24835:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"24847:6:75","nodeType":"YulTypedName","src":"24847:6:75","type":""}],"src":"24777:251:75"},{"body":{"nativeSrc":"25170:164:75","nodeType":"YulBlock","src":"25170:164:75","statements":[{"nativeSrc":"25180:27:75","nodeType":"YulVariableDeclaration","src":"25180:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"25200:6:75","nodeType":"YulIdentifier","src":"25200:6:75"}],"functionName":{"name":"mload","nativeSrc":"25194:5:75","nodeType":"YulIdentifier","src":"25194:5:75"},"nativeSrc":"25194:13:75","nodeType":"YulFunctionCall","src":"25194:13:75"},"variables":[{"name":"length","nativeSrc":"25184:6:75","nodeType":"YulTypedName","src":"25184:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"25222:3:75","nodeType":"YulIdentifier","src":"25222:3:75"},{"arguments":[{"name":"value0","nativeSrc":"25231:6:75","nodeType":"YulIdentifier","src":"25231:6:75"},{"kind":"number","nativeSrc":"25239:4:75","nodeType":"YulLiteral","src":"25239:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25227:3:75","nodeType":"YulIdentifier","src":"25227:3:75"},"nativeSrc":"25227:17:75","nodeType":"YulFunctionCall","src":"25227:17:75"},{"name":"length","nativeSrc":"25246:6:75","nodeType":"YulIdentifier","src":"25246:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"25216:5:75","nodeType":"YulIdentifier","src":"25216:5:75"},"nativeSrc":"25216:37:75","nodeType":"YulFunctionCall","src":"25216:37:75"},"nativeSrc":"25216:37:75","nodeType":"YulExpressionStatement","src":"25216:37:75"},{"nativeSrc":"25262:26:75","nodeType":"YulVariableDeclaration","src":"25262:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"25276:3:75","nodeType":"YulIdentifier","src":"25276:3:75"},{"name":"length","nativeSrc":"25281:6:75","nodeType":"YulIdentifier","src":"25281:6:75"}],"functionName":{"name":"add","nativeSrc":"25272:3:75","nodeType":"YulIdentifier","src":"25272:3:75"},"nativeSrc":"25272:16:75","nodeType":"YulFunctionCall","src":"25272:16:75"},"variables":[{"name":"_1","nativeSrc":"25266:2:75","nodeType":"YulTypedName","src":"25266:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"25304:2:75","nodeType":"YulIdentifier","src":"25304:2:75"},{"kind":"number","nativeSrc":"25308:1:75","nodeType":"YulLiteral","src":"25308:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"25297:6:75","nodeType":"YulIdentifier","src":"25297:6:75"},"nativeSrc":"25297:13:75","nodeType":"YulFunctionCall","src":"25297:13:75"},"nativeSrc":"25297:13:75","nodeType":"YulExpressionStatement","src":"25297:13:75"},{"nativeSrc":"25319:9:75","nodeType":"YulAssignment","src":"25319:9:75","value":{"name":"_1","nativeSrc":"25326:2:75","nodeType":"YulIdentifier","src":"25326:2:75"},"variableNames":[{"name":"end","nativeSrc":"25319:3:75","nodeType":"YulIdentifier","src":"25319:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"25033:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"25146:3:75","nodeType":"YulTypedName","src":"25146:3:75","type":""},{"name":"value0","nativeSrc":"25151:6:75","nodeType":"YulTypedName","src":"25151:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"25162:3:75","nodeType":"YulTypedName","src":"25162:3:75","type":""}],"src":"25033:301:75"},{"body":{"nativeSrc":"25382:93:75","nodeType":"YulBlock","src":"25382:93:75","statements":[{"body":{"nativeSrc":"25418:22:75","nodeType":"YulBlock","src":"25418:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"25420:16:75","nodeType":"YulIdentifier","src":"25420:16:75"},"nativeSrc":"25420:18:75","nodeType":"YulFunctionCall","src":"25420:18:75"},"nativeSrc":"25420:18:75","nodeType":"YulExpressionStatement","src":"25420:18:75"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"25398:5:75","nodeType":"YulIdentifier","src":"25398:5:75"},{"arguments":[{"kind":"number","nativeSrc":"25409:3:75","nodeType":"YulLiteral","src":"25409:3:75","type":"","value":"255"},{"kind":"number","nativeSrc":"25414:1:75","nodeType":"YulLiteral","src":"25414:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"25405:3:75","nodeType":"YulIdentifier","src":"25405:3:75"},"nativeSrc":"25405:11:75","nodeType":"YulFunctionCall","src":"25405:11:75"}],"functionName":{"name":"eq","nativeSrc":"25395:2:75","nodeType":"YulIdentifier","src":"25395:2:75"},"nativeSrc":"25395:22:75","nodeType":"YulFunctionCall","src":"25395:22:75"},"nativeSrc":"25392:48:75","nodeType":"YulIf","src":"25392:48:75"},{"nativeSrc":"25449:20:75","nodeType":"YulAssignment","src":"25449:20:75","value":{"arguments":[{"kind":"number","nativeSrc":"25460:1:75","nodeType":"YulLiteral","src":"25460:1:75","type":"","value":"0"},{"name":"value","nativeSrc":"25463:5:75","nodeType":"YulIdentifier","src":"25463:5:75"}],"functionName":{"name":"sub","nativeSrc":"25456:3:75","nodeType":"YulIdentifier","src":"25456:3:75"},"nativeSrc":"25456:13:75","nodeType":"YulFunctionCall","src":"25456:13:75"},"variableNames":[{"name":"ret","nativeSrc":"25449:3:75","nodeType":"YulIdentifier","src":"25449:3:75"}]}]},"name":"negate_t_int256","nativeSrc":"25339:136:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"25364:5:75","nodeType":"YulTypedName","src":"25364:5:75","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"25374:3:75","nodeType":"YulTypedName","src":"25374:3:75","type":""}],"src":"25339:136:75"},{"body":{"nativeSrc":"25607:160:75","nodeType":"YulBlock","src":"25607:160:75","statements":[{"nativeSrc":"25617:26:75","nodeType":"YulAssignment","src":"25617:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"25629:9:75","nodeType":"YulIdentifier","src":"25629:9:75"},{"kind":"number","nativeSrc":"25640:2:75","nodeType":"YulLiteral","src":"25640:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25625:3:75","nodeType":"YulIdentifier","src":"25625:3:75"},"nativeSrc":"25625:18:75","nodeType":"YulFunctionCall","src":"25625:18:75"},"variableNames":[{"name":"tail","nativeSrc":"25617:4:75","nodeType":"YulIdentifier","src":"25617:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25659:9:75","nodeType":"YulIdentifier","src":"25659:9:75"},{"name":"value0","nativeSrc":"25670:6:75","nodeType":"YulIdentifier","src":"25670:6:75"}],"functionName":{"name":"mstore","nativeSrc":"25652:6:75","nodeType":"YulIdentifier","src":"25652:6:75"},"nativeSrc":"25652:25:75","nodeType":"YulFunctionCall","src":"25652:25:75"},"nativeSrc":"25652:25:75","nodeType":"YulExpressionStatement","src":"25652:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25697:9:75","nodeType":"YulIdentifier","src":"25697:9:75"},{"kind":"number","nativeSrc":"25708:2:75","nodeType":"YulLiteral","src":"25708:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"25693:3:75","nodeType":"YulIdentifier","src":"25693:3:75"},"nativeSrc":"25693:18:75","nodeType":"YulFunctionCall","src":"25693:18:75"},{"arguments":[{"name":"value1","nativeSrc":"25717:6:75","nodeType":"YulIdentifier","src":"25717:6:75"},{"kind":"number","nativeSrc":"25725:34:75","nodeType":"YulLiteral","src":"25725:34:75","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"25713:3:75","nodeType":"YulIdentifier","src":"25713:3:75"},"nativeSrc":"25713:47:75","nodeType":"YulFunctionCall","src":"25713:47:75"}],"functionName":{"name":"mstore","nativeSrc":"25686:6:75","nodeType":"YulIdentifier","src":"25686:6:75"},"nativeSrc":"25686:75:75","nodeType":"YulFunctionCall","src":"25686:75:75"},"nativeSrc":"25686:75:75","nodeType":"YulExpressionStatement","src":"25686:75:75"}]},"name":"abi_encode_tuple_t_int256_t_uint128__to_t_int256_t_uint256__fromStack_reversed","nativeSrc":"25480:287:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25568:9:75","nodeType":"YulTypedName","src":"25568:9:75","type":""},{"name":"value1","nativeSrc":"25579:6:75","nodeType":"YulTypedName","src":"25579:6:75","type":""},{"name":"value0","nativeSrc":"25587:6:75","nodeType":"YulTypedName","src":"25587:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25598:4:75","nodeType":"YulTypedName","src":"25598:4:75","type":""}],"src":"25480:287:75"},{"body":{"nativeSrc":"25820:152:75","nodeType":"YulBlock","src":"25820:152:75","statements":[{"nativeSrc":"25830:17:75","nodeType":"YulAssignment","src":"25830:17:75","value":{"arguments":[{"name":"x","nativeSrc":"25842:1:75","nodeType":"YulIdentifier","src":"25842:1:75"},{"name":"y","nativeSrc":"25845:1:75","nodeType":"YulIdentifier","src":"25845:1:75"}],"functionName":{"name":"sub","nativeSrc":"25838:3:75","nodeType":"YulIdentifier","src":"25838:3:75"},"nativeSrc":"25838:9:75","nodeType":"YulFunctionCall","src":"25838:9:75"},"variableNames":[{"name":"diff","nativeSrc":"25830:4:75","nodeType":"YulIdentifier","src":"25830:4:75"}]},{"nativeSrc":"25856:19:75","nodeType":"YulVariableDeclaration","src":"25856:19:75","value":{"arguments":[{"name":"y","nativeSrc":"25870:1:75","nodeType":"YulIdentifier","src":"25870:1:75"},{"kind":"number","nativeSrc":"25873:1:75","nodeType":"YulLiteral","src":"25873:1:75","type":"","value":"0"}],"functionName":{"name":"slt","nativeSrc":"25866:3:75","nodeType":"YulIdentifier","src":"25866:3:75"},"nativeSrc":"25866:9:75","nodeType":"YulFunctionCall","src":"25866:9:75"},"variables":[{"name":"_1","nativeSrc":"25860:2:75","nodeType":"YulTypedName","src":"25860:2:75","type":""}]},{"body":{"nativeSrc":"25944:22:75","nodeType":"YulBlock","src":"25944:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"25946:16:75","nodeType":"YulIdentifier","src":"25946:16:75"},"nativeSrc":"25946:18:75","nodeType":"YulFunctionCall","src":"25946:18:75"},"nativeSrc":"25946:18:75","nodeType":"YulExpressionStatement","src":"25946:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"25901:2:75","nodeType":"YulIdentifier","src":"25901:2:75"}],"functionName":{"name":"iszero","nativeSrc":"25894:6:75","nodeType":"YulIdentifier","src":"25894:6:75"},"nativeSrc":"25894:10:75","nodeType":"YulFunctionCall","src":"25894:10:75"},{"arguments":[{"name":"diff","nativeSrc":"25910:4:75","nodeType":"YulIdentifier","src":"25910:4:75"},{"name":"x","nativeSrc":"25916:1:75","nodeType":"YulIdentifier","src":"25916:1:75"}],"functionName":{"name":"sgt","nativeSrc":"25906:3:75","nodeType":"YulIdentifier","src":"25906:3:75"},"nativeSrc":"25906:12:75","nodeType":"YulFunctionCall","src":"25906:12:75"}],"functionName":{"name":"and","nativeSrc":"25890:3:75","nodeType":"YulIdentifier","src":"25890:3:75"},"nativeSrc":"25890:29:75","nodeType":"YulFunctionCall","src":"25890:29:75"},{"arguments":[{"name":"_1","nativeSrc":"25925:2:75","nodeType":"YulIdentifier","src":"25925:2:75"},{"arguments":[{"name":"diff","nativeSrc":"25933:4:75","nodeType":"YulIdentifier","src":"25933:4:75"},{"name":"x","nativeSrc":"25939:1:75","nodeType":"YulIdentifier","src":"25939:1:75"}],"functionName":{"name":"slt","nativeSrc":"25929:3:75","nodeType":"YulIdentifier","src":"25929:3:75"},"nativeSrc":"25929:12:75","nodeType":"YulFunctionCall","src":"25929:12:75"}],"functionName":{"name":"and","nativeSrc":"25921:3:75","nodeType":"YulIdentifier","src":"25921:3:75"},"nativeSrc":"25921:21:75","nodeType":"YulFunctionCall","src":"25921:21:75"}],"functionName":{"name":"or","nativeSrc":"25887:2:75","nodeType":"YulIdentifier","src":"25887:2:75"},"nativeSrc":"25887:56:75","nodeType":"YulFunctionCall","src":"25887:56:75"},"nativeSrc":"25884:82:75","nodeType":"YulIf","src":"25884:82:75"}]},"name":"checked_sub_t_int256","nativeSrc":"25772:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"25802:1:75","nodeType":"YulTypedName","src":"25802:1:75","type":""},{"name":"y","nativeSrc":"25805:1:75","nodeType":"YulTypedName","src":"25805:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"25811:4:75","nodeType":"YulTypedName","src":"25811:4:75","type":""}],"src":"25772:200:75"},{"body":{"nativeSrc":"26009:95:75","nodeType":"YulBlock","src":"26009:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26026:1:75","nodeType":"YulLiteral","src":"26026:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"26033:3:75","nodeType":"YulLiteral","src":"26033:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"26038:10:75","nodeType":"YulLiteral","src":"26038:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"26029:3:75","nodeType":"YulIdentifier","src":"26029:3:75"},"nativeSrc":"26029:20:75","nodeType":"YulFunctionCall","src":"26029:20:75"}],"functionName":{"name":"mstore","nativeSrc":"26019:6:75","nodeType":"YulIdentifier","src":"26019:6:75"},"nativeSrc":"26019:31:75","nodeType":"YulFunctionCall","src":"26019:31:75"},"nativeSrc":"26019:31:75","nodeType":"YulExpressionStatement","src":"26019:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"26066:1:75","nodeType":"YulLiteral","src":"26066:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"26069:4:75","nodeType":"YulLiteral","src":"26069:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"26059:6:75","nodeType":"YulIdentifier","src":"26059:6:75"},"nativeSrc":"26059:15:75","nodeType":"YulFunctionCall","src":"26059:15:75"},"nativeSrc":"26059:15:75","nodeType":"YulExpressionStatement","src":"26059:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"26090:1:75","nodeType":"YulLiteral","src":"26090:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"26093:4:75","nodeType":"YulLiteral","src":"26093:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"26083:6:75","nodeType":"YulIdentifier","src":"26083:6:75"},"nativeSrc":"26083:15:75","nodeType":"YulFunctionCall","src":"26083:15:75"},"nativeSrc":"26083:15:75","nodeType":"YulExpressionStatement","src":"26083:15:75"}]},"name":"panic_error_0x21","nativeSrc":"25977:127:75","nodeType":"YulFunctionDefinition","src":"25977:127:75"},{"body":{"nativeSrc":"26145:121:75","nodeType":"YulBlock","src":"26145:121:75","statements":[{"nativeSrc":"26155:23:75","nodeType":"YulVariableDeclaration","src":"26155:23:75","value":{"arguments":[{"name":"y","nativeSrc":"26170:1:75","nodeType":"YulIdentifier","src":"26170:1:75"},{"kind":"number","nativeSrc":"26173:4:75","nodeType":"YulLiteral","src":"26173:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"26166:3:75","nodeType":"YulIdentifier","src":"26166:3:75"},"nativeSrc":"26166:12:75","nodeType":"YulFunctionCall","src":"26166:12:75"},"variables":[{"name":"y_1","nativeSrc":"26159:3:75","nodeType":"YulTypedName","src":"26159:3:75","type":""}]},{"body":{"nativeSrc":"26202:22:75","nodeType":"YulBlock","src":"26202:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"26204:16:75","nodeType":"YulIdentifier","src":"26204:16:75"},"nativeSrc":"26204:18:75","nodeType":"YulFunctionCall","src":"26204:18:75"},"nativeSrc":"26204:18:75","nodeType":"YulExpressionStatement","src":"26204:18:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"26197:3:75","nodeType":"YulIdentifier","src":"26197:3:75"}],"functionName":{"name":"iszero","nativeSrc":"26190:6:75","nodeType":"YulIdentifier","src":"26190:6:75"},"nativeSrc":"26190:11:75","nodeType":"YulFunctionCall","src":"26190:11:75"},"nativeSrc":"26187:37:75","nodeType":"YulIf","src":"26187:37:75"},{"nativeSrc":"26233:27:75","nodeType":"YulAssignment","src":"26233:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"26246:1:75","nodeType":"YulIdentifier","src":"26246:1:75"},{"kind":"number","nativeSrc":"26249:4:75","nodeType":"YulLiteral","src":"26249:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"26242:3:75","nodeType":"YulIdentifier","src":"26242:3:75"},"nativeSrc":"26242:12:75","nodeType":"YulFunctionCall","src":"26242:12:75"},{"name":"y_1","nativeSrc":"26256:3:75","nodeType":"YulIdentifier","src":"26256:3:75"}],"functionName":{"name":"mod","nativeSrc":"26238:3:75","nodeType":"YulIdentifier","src":"26238:3:75"},"nativeSrc":"26238:22:75","nodeType":"YulFunctionCall","src":"26238:22:75"},"variableNames":[{"name":"r","nativeSrc":"26233:1:75","nodeType":"YulIdentifier","src":"26233:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"26109:157:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"26130:1:75","nodeType":"YulTypedName","src":"26130:1:75","type":""},{"name":"y","nativeSrc":"26133:1:75","nodeType":"YulTypedName","src":"26133:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"26139:1:75","nodeType":"YulTypedName","src":"26139:1:75","type":""}],"src":"26109:157:75"},{"body":{"nativeSrc":"26327:65:75","nodeType":"YulBlock","src":"26327:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26344:1:75","nodeType":"YulLiteral","src":"26344:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"26347:3:75","nodeType":"YulIdentifier","src":"26347:3:75"}],"functionName":{"name":"mstore","nativeSrc":"26337:6:75","nodeType":"YulIdentifier","src":"26337:6:75"},"nativeSrc":"26337:14:75","nodeType":"YulFunctionCall","src":"26337:14:75"},"nativeSrc":"26337:14:75","nodeType":"YulExpressionStatement","src":"26337:14:75"},{"nativeSrc":"26360:26:75","nodeType":"YulAssignment","src":"26360:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"26378:1:75","nodeType":"YulLiteral","src":"26378:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"26381:4:75","nodeType":"YulLiteral","src":"26381:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"26368:9:75","nodeType":"YulIdentifier","src":"26368:9:75"},"nativeSrc":"26368:18:75","nodeType":"YulFunctionCall","src":"26368:18:75"},"variableNames":[{"name":"data","nativeSrc":"26360:4:75","nodeType":"YulIdentifier","src":"26360:4:75"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"26271:121:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"26310:3:75","nodeType":"YulTypedName","src":"26310:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"26318:4:75","nodeType":"YulTypedName","src":"26318:4:75","type":""}],"src":"26271:121:75"},{"body":{"nativeSrc":"26478:437:75","nodeType":"YulBlock","src":"26478:437:75","statements":[{"body":{"nativeSrc":"26511:398:75","nodeType":"YulBlock","src":"26511:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26532:1:75","nodeType":"YulLiteral","src":"26532:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"26535:5:75","nodeType":"YulIdentifier","src":"26535:5:75"}],"functionName":{"name":"mstore","nativeSrc":"26525:6:75","nodeType":"YulIdentifier","src":"26525:6:75"},"nativeSrc":"26525:16:75","nodeType":"YulFunctionCall","src":"26525:16:75"},"nativeSrc":"26525:16:75","nodeType":"YulExpressionStatement","src":"26525:16:75"},{"nativeSrc":"26554:30:75","nodeType":"YulVariableDeclaration","src":"26554:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"26576:1:75","nodeType":"YulLiteral","src":"26576:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"26579:4:75","nodeType":"YulLiteral","src":"26579:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"26566:9:75","nodeType":"YulIdentifier","src":"26566:9:75"},"nativeSrc":"26566:18:75","nodeType":"YulFunctionCall","src":"26566:18:75"},"variables":[{"name":"data","nativeSrc":"26558:4:75","nodeType":"YulTypedName","src":"26558:4:75","type":""}]},{"nativeSrc":"26597:57:75","nodeType":"YulVariableDeclaration","src":"26597:57:75","value":{"arguments":[{"name":"data","nativeSrc":"26620:4:75","nodeType":"YulIdentifier","src":"26620:4:75"},{"arguments":[{"kind":"number","nativeSrc":"26630:1:75","nodeType":"YulLiteral","src":"26630:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"26637:10:75","nodeType":"YulIdentifier","src":"26637:10:75"},{"kind":"number","nativeSrc":"26649:2:75","nodeType":"YulLiteral","src":"26649:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"26633:3:75","nodeType":"YulIdentifier","src":"26633:3:75"},"nativeSrc":"26633:19:75","nodeType":"YulFunctionCall","src":"26633:19:75"}],"functionName":{"name":"shr","nativeSrc":"26626:3:75","nodeType":"YulIdentifier","src":"26626:3:75"},"nativeSrc":"26626:27:75","nodeType":"YulFunctionCall","src":"26626:27:75"}],"functionName":{"name":"add","nativeSrc":"26616:3:75","nodeType":"YulIdentifier","src":"26616:3:75"},"nativeSrc":"26616:38:75","nodeType":"YulFunctionCall","src":"26616:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"26601:11:75","nodeType":"YulTypedName","src":"26601:11:75","type":""}]},{"body":{"nativeSrc":"26691:23:75","nodeType":"YulBlock","src":"26691:23:75","statements":[{"nativeSrc":"26693:19:75","nodeType":"YulAssignment","src":"26693:19:75","value":{"name":"data","nativeSrc":"26708:4:75","nodeType":"YulIdentifier","src":"26708:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"26693:11:75","nodeType":"YulIdentifier","src":"26693:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"26673:10:75","nodeType":"YulIdentifier","src":"26673:10:75"},{"kind":"number","nativeSrc":"26685:4:75","nodeType":"YulLiteral","src":"26685:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"26670:2:75","nodeType":"YulIdentifier","src":"26670:2:75"},"nativeSrc":"26670:20:75","nodeType":"YulFunctionCall","src":"26670:20:75"},"nativeSrc":"26667:47:75","nodeType":"YulIf","src":"26667:47:75"},{"nativeSrc":"26727:41:75","nodeType":"YulVariableDeclaration","src":"26727:41:75","value":{"arguments":[{"name":"data","nativeSrc":"26741:4:75","nodeType":"YulIdentifier","src":"26741:4:75"},{"arguments":[{"kind":"number","nativeSrc":"26751:1:75","nodeType":"YulLiteral","src":"26751:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"26758:3:75","nodeType":"YulIdentifier","src":"26758:3:75"},{"kind":"number","nativeSrc":"26763:2:75","nodeType":"YulLiteral","src":"26763:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"26754:3:75","nodeType":"YulIdentifier","src":"26754:3:75"},"nativeSrc":"26754:12:75","nodeType":"YulFunctionCall","src":"26754:12:75"}],"functionName":{"name":"shr","nativeSrc":"26747:3:75","nodeType":"YulIdentifier","src":"26747:3:75"},"nativeSrc":"26747:20:75","nodeType":"YulFunctionCall","src":"26747:20:75"}],"functionName":{"name":"add","nativeSrc":"26737:3:75","nodeType":"YulIdentifier","src":"26737:3:75"},"nativeSrc":"26737:31:75","nodeType":"YulFunctionCall","src":"26737:31:75"},"variables":[{"name":"_1","nativeSrc":"26731:2:75","nodeType":"YulTypedName","src":"26731:2:75","type":""}]},{"nativeSrc":"26781:24:75","nodeType":"YulVariableDeclaration","src":"26781:24:75","value":{"name":"deleteStart","nativeSrc":"26794:11:75","nodeType":"YulIdentifier","src":"26794:11:75"},"variables":[{"name":"start","nativeSrc":"26785:5:75","nodeType":"YulTypedName","src":"26785:5:75","type":""}]},{"body":{"nativeSrc":"26879:20:75","nodeType":"YulBlock","src":"26879:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"26888:5:75","nodeType":"YulIdentifier","src":"26888:5:75"},{"kind":"number","nativeSrc":"26895:1:75","nodeType":"YulLiteral","src":"26895:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"26881:6:75","nodeType":"YulIdentifier","src":"26881:6:75"},"nativeSrc":"26881:16:75","nodeType":"YulFunctionCall","src":"26881:16:75"},"nativeSrc":"26881:16:75","nodeType":"YulExpressionStatement","src":"26881:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"26829:5:75","nodeType":"YulIdentifier","src":"26829:5:75"},{"name":"_1","nativeSrc":"26836:2:75","nodeType":"YulIdentifier","src":"26836:2:75"}],"functionName":{"name":"lt","nativeSrc":"26826:2:75","nodeType":"YulIdentifier","src":"26826:2:75"},"nativeSrc":"26826:13:75","nodeType":"YulFunctionCall","src":"26826:13:75"},"nativeSrc":"26818:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"26840:26:75","nodeType":"YulBlock","src":"26840:26:75","statements":[{"nativeSrc":"26842:22:75","nodeType":"YulAssignment","src":"26842:22:75","value":{"arguments":[{"name":"start","nativeSrc":"26855:5:75","nodeType":"YulIdentifier","src":"26855:5:75"},{"kind":"number","nativeSrc":"26862:1:75","nodeType":"YulLiteral","src":"26862:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"26851:3:75","nodeType":"YulIdentifier","src":"26851:3:75"},"nativeSrc":"26851:13:75","nodeType":"YulFunctionCall","src":"26851:13:75"},"variableNames":[{"name":"start","nativeSrc":"26842:5:75","nodeType":"YulIdentifier","src":"26842:5:75"}]}]},"pre":{"nativeSrc":"26822:3:75","nodeType":"YulBlock","src":"26822:3:75","statements":[]},"src":"26818:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"26494:3:75","nodeType":"YulIdentifier","src":"26494:3:75"},{"kind":"number","nativeSrc":"26499:2:75","nodeType":"YulLiteral","src":"26499:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"26491:2:75","nodeType":"YulIdentifier","src":"26491:2:75"},"nativeSrc":"26491:11:75","nodeType":"YulFunctionCall","src":"26491:11:75"},"nativeSrc":"26488:421:75","nodeType":"YulIf","src":"26488:421:75"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"26397:518:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"26450:5:75","nodeType":"YulTypedName","src":"26450:5:75","type":""},{"name":"len","nativeSrc":"26457:3:75","nodeType":"YulTypedName","src":"26457:3:75","type":""},{"name":"startIndex","nativeSrc":"26462:10:75","nodeType":"YulTypedName","src":"26462:10:75","type":""}],"src":"26397:518:75"},{"body":{"nativeSrc":"27005:81:75","nodeType":"YulBlock","src":"27005:81:75","statements":[{"nativeSrc":"27015:65:75","nodeType":"YulAssignment","src":"27015:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"27030:4:75","nodeType":"YulIdentifier","src":"27030:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"27048:1:75","nodeType":"YulLiteral","src":"27048:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"27051:3:75","nodeType":"YulIdentifier","src":"27051:3:75"}],"functionName":{"name":"shl","nativeSrc":"27044:3:75","nodeType":"YulIdentifier","src":"27044:3:75"},"nativeSrc":"27044:11:75","nodeType":"YulFunctionCall","src":"27044:11:75"},{"arguments":[{"kind":"number","nativeSrc":"27061:1:75","nodeType":"YulLiteral","src":"27061:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"27057:3:75","nodeType":"YulIdentifier","src":"27057:3:75"},"nativeSrc":"27057:6:75","nodeType":"YulFunctionCall","src":"27057:6:75"}],"functionName":{"name":"shr","nativeSrc":"27040:3:75","nodeType":"YulIdentifier","src":"27040:3:75"},"nativeSrc":"27040:24:75","nodeType":"YulFunctionCall","src":"27040:24:75"}],"functionName":{"name":"not","nativeSrc":"27036:3:75","nodeType":"YulIdentifier","src":"27036:3:75"},"nativeSrc":"27036:29:75","nodeType":"YulFunctionCall","src":"27036:29:75"}],"functionName":{"name":"and","nativeSrc":"27026:3:75","nodeType":"YulIdentifier","src":"27026:3:75"},"nativeSrc":"27026:40:75","nodeType":"YulFunctionCall","src":"27026:40:75"},{"arguments":[{"kind":"number","nativeSrc":"27072:1:75","nodeType":"YulLiteral","src":"27072:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"27075:3:75","nodeType":"YulIdentifier","src":"27075:3:75"}],"functionName":{"name":"shl","nativeSrc":"27068:3:75","nodeType":"YulIdentifier","src":"27068:3:75"},"nativeSrc":"27068:11:75","nodeType":"YulFunctionCall","src":"27068:11:75"}],"functionName":{"name":"or","nativeSrc":"27023:2:75","nodeType":"YulIdentifier","src":"27023:2:75"},"nativeSrc":"27023:57:75","nodeType":"YulFunctionCall","src":"27023:57:75"},"variableNames":[{"name":"used","nativeSrc":"27015:4:75","nodeType":"YulIdentifier","src":"27015:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"26920:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"26982:4:75","nodeType":"YulTypedName","src":"26982:4:75","type":""},{"name":"len","nativeSrc":"26988:3:75","nodeType":"YulTypedName","src":"26988:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"26996:4:75","nodeType":"YulTypedName","src":"26996:4:75","type":""}],"src":"26920:166:75"},{"body":{"nativeSrc":"27187:1203:75","nodeType":"YulBlock","src":"27187:1203:75","statements":[{"nativeSrc":"27197:24:75","nodeType":"YulVariableDeclaration","src":"27197:24:75","value":{"arguments":[{"name":"src","nativeSrc":"27217:3:75","nodeType":"YulIdentifier","src":"27217:3:75"}],"functionName":{"name":"mload","nativeSrc":"27211:5:75","nodeType":"YulIdentifier","src":"27211:5:75"},"nativeSrc":"27211:10:75","nodeType":"YulFunctionCall","src":"27211:10:75"},"variables":[{"name":"newLen","nativeSrc":"27201:6:75","nodeType":"YulTypedName","src":"27201:6:75","type":""}]},{"body":{"nativeSrc":"27264:22:75","nodeType":"YulBlock","src":"27264:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"27266:16:75","nodeType":"YulIdentifier","src":"27266:16:75"},"nativeSrc":"27266:18:75","nodeType":"YulFunctionCall","src":"27266:18:75"},"nativeSrc":"27266:18:75","nodeType":"YulExpressionStatement","src":"27266:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"27236:6:75","nodeType":"YulIdentifier","src":"27236:6:75"},{"kind":"number","nativeSrc":"27244:18:75","nodeType":"YulLiteral","src":"27244:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"27233:2:75","nodeType":"YulIdentifier","src":"27233:2:75"},"nativeSrc":"27233:30:75","nodeType":"YulFunctionCall","src":"27233:30:75"},"nativeSrc":"27230:56:75","nodeType":"YulIf","src":"27230:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"27339:4:75","nodeType":"YulIdentifier","src":"27339:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"27377:4:75","nodeType":"YulIdentifier","src":"27377:4:75"}],"functionName":{"name":"sload","nativeSrc":"27371:5:75","nodeType":"YulIdentifier","src":"27371:5:75"},"nativeSrc":"27371:11:75","nodeType":"YulFunctionCall","src":"27371:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"27345:25:75","nodeType":"YulIdentifier","src":"27345:25:75"},"nativeSrc":"27345:38:75","nodeType":"YulFunctionCall","src":"27345:38:75"},{"name":"newLen","nativeSrc":"27385:6:75","nodeType":"YulIdentifier","src":"27385:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"27295:43:75","nodeType":"YulIdentifier","src":"27295:43:75"},"nativeSrc":"27295:97:75","nodeType":"YulFunctionCall","src":"27295:97:75"},"nativeSrc":"27295:97:75","nodeType":"YulExpressionStatement","src":"27295:97:75"},{"nativeSrc":"27401:18:75","nodeType":"YulVariableDeclaration","src":"27401:18:75","value":{"kind":"number","nativeSrc":"27418:1:75","nodeType":"YulLiteral","src":"27418:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"27405:9:75","nodeType":"YulTypedName","src":"27405:9:75","type":""}]},{"nativeSrc":"27428:17:75","nodeType":"YulAssignment","src":"27428:17:75","value":{"kind":"number","nativeSrc":"27441:4:75","nodeType":"YulLiteral","src":"27441:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"27428:9:75","nodeType":"YulIdentifier","src":"27428:9:75"}]},{"cases":[{"body":{"nativeSrc":"27491:642:75","nodeType":"YulBlock","src":"27491:642:75","statements":[{"nativeSrc":"27505:35:75","nodeType":"YulVariableDeclaration","src":"27505:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"27524:6:75","nodeType":"YulIdentifier","src":"27524:6:75"},{"arguments":[{"kind":"number","nativeSrc":"27536:2:75","nodeType":"YulLiteral","src":"27536:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"27532:3:75","nodeType":"YulIdentifier","src":"27532:3:75"},"nativeSrc":"27532:7:75","nodeType":"YulFunctionCall","src":"27532:7:75"}],"functionName":{"name":"and","nativeSrc":"27520:3:75","nodeType":"YulIdentifier","src":"27520:3:75"},"nativeSrc":"27520:20:75","nodeType":"YulFunctionCall","src":"27520:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"27509:7:75","nodeType":"YulTypedName","src":"27509:7:75","type":""}]},{"nativeSrc":"27553:49:75","nodeType":"YulVariableDeclaration","src":"27553:49:75","value":{"arguments":[{"name":"slot","nativeSrc":"27597:4:75","nodeType":"YulIdentifier","src":"27597:4:75"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"27567:29:75","nodeType":"YulIdentifier","src":"27567:29:75"},"nativeSrc":"27567:35:75","nodeType":"YulFunctionCall","src":"27567:35:75"},"variables":[{"name":"dstPtr","nativeSrc":"27557:6:75","nodeType":"YulTypedName","src":"27557:6:75","type":""}]},{"nativeSrc":"27615:10:75","nodeType":"YulVariableDeclaration","src":"27615:10:75","value":{"kind":"number","nativeSrc":"27624:1:75","nodeType":"YulLiteral","src":"27624:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"27619:1:75","nodeType":"YulTypedName","src":"27619:1:75","type":""}]},{"body":{"nativeSrc":"27695:165:75","nodeType":"YulBlock","src":"27695:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"27720:6:75","nodeType":"YulIdentifier","src":"27720:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"27738:3:75","nodeType":"YulIdentifier","src":"27738:3:75"},{"name":"srcOffset","nativeSrc":"27743:9:75","nodeType":"YulIdentifier","src":"27743:9:75"}],"functionName":{"name":"add","nativeSrc":"27734:3:75","nodeType":"YulIdentifier","src":"27734:3:75"},"nativeSrc":"27734:19:75","nodeType":"YulFunctionCall","src":"27734:19:75"}],"functionName":{"name":"mload","nativeSrc":"27728:5:75","nodeType":"YulIdentifier","src":"27728:5:75"},"nativeSrc":"27728:26:75","nodeType":"YulFunctionCall","src":"27728:26:75"}],"functionName":{"name":"sstore","nativeSrc":"27713:6:75","nodeType":"YulIdentifier","src":"27713:6:75"},"nativeSrc":"27713:42:75","nodeType":"YulFunctionCall","src":"27713:42:75"},"nativeSrc":"27713:42:75","nodeType":"YulExpressionStatement","src":"27713:42:75"},{"nativeSrc":"27772:24:75","nodeType":"YulAssignment","src":"27772:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"27786:6:75","nodeType":"YulIdentifier","src":"27786:6:75"},{"kind":"number","nativeSrc":"27794:1:75","nodeType":"YulLiteral","src":"27794:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"27782:3:75","nodeType":"YulIdentifier","src":"27782:3:75"},"nativeSrc":"27782:14:75","nodeType":"YulFunctionCall","src":"27782:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"27772:6:75","nodeType":"YulIdentifier","src":"27772:6:75"}]},{"nativeSrc":"27813:33:75","nodeType":"YulAssignment","src":"27813:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"27830:9:75","nodeType":"YulIdentifier","src":"27830:9:75"},{"kind":"number","nativeSrc":"27841:4:75","nodeType":"YulLiteral","src":"27841:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"27826:3:75","nodeType":"YulIdentifier","src":"27826:3:75"},"nativeSrc":"27826:20:75","nodeType":"YulFunctionCall","src":"27826:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"27813:9:75","nodeType":"YulIdentifier","src":"27813:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"27649:1:75","nodeType":"YulIdentifier","src":"27649:1:75"},{"name":"loopEnd","nativeSrc":"27652:7:75","nodeType":"YulIdentifier","src":"27652:7:75"}],"functionName":{"name":"lt","nativeSrc":"27646:2:75","nodeType":"YulIdentifier","src":"27646:2:75"},"nativeSrc":"27646:14:75","nodeType":"YulFunctionCall","src":"27646:14:75"},"nativeSrc":"27638:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"27661:21:75","nodeType":"YulBlock","src":"27661:21:75","statements":[{"nativeSrc":"27663:17:75","nodeType":"YulAssignment","src":"27663:17:75","value":{"arguments":[{"name":"i","nativeSrc":"27672:1:75","nodeType":"YulIdentifier","src":"27672:1:75"},{"kind":"number","nativeSrc":"27675:4:75","nodeType":"YulLiteral","src":"27675:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"27668:3:75","nodeType":"YulIdentifier","src":"27668:3:75"},"nativeSrc":"27668:12:75","nodeType":"YulFunctionCall","src":"27668:12:75"},"variableNames":[{"name":"i","nativeSrc":"27663:1:75","nodeType":"YulIdentifier","src":"27663:1:75"}]}]},"pre":{"nativeSrc":"27642:3:75","nodeType":"YulBlock","src":"27642:3:75","statements":[]},"src":"27638:222:75"},{"body":{"nativeSrc":"27908:166:75","nodeType":"YulBlock","src":"27908:166:75","statements":[{"nativeSrc":"27926:43:75","nodeType":"YulVariableDeclaration","src":"27926:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"27953:3:75","nodeType":"YulIdentifier","src":"27953:3:75"},{"name":"srcOffset","nativeSrc":"27958:9:75","nodeType":"YulIdentifier","src":"27958:9:75"}],"functionName":{"name":"add","nativeSrc":"27949:3:75","nodeType":"YulIdentifier","src":"27949:3:75"},"nativeSrc":"27949:19:75","nodeType":"YulFunctionCall","src":"27949:19:75"}],"functionName":{"name":"mload","nativeSrc":"27943:5:75","nodeType":"YulIdentifier","src":"27943:5:75"},"nativeSrc":"27943:26:75","nodeType":"YulFunctionCall","src":"27943:26:75"},"variables":[{"name":"lastValue","nativeSrc":"27930:9:75","nodeType":"YulTypedName","src":"27930:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"27993:6:75","nodeType":"YulIdentifier","src":"27993:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"28005:9:75","nodeType":"YulIdentifier","src":"28005:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28032:1:75","nodeType":"YulLiteral","src":"28032:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"28035:6:75","nodeType":"YulIdentifier","src":"28035:6:75"}],"functionName":{"name":"shl","nativeSrc":"28028:3:75","nodeType":"YulIdentifier","src":"28028:3:75"},"nativeSrc":"28028:14:75","nodeType":"YulFunctionCall","src":"28028:14:75"},{"kind":"number","nativeSrc":"28044:3:75","nodeType":"YulLiteral","src":"28044:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"28024:3:75","nodeType":"YulIdentifier","src":"28024:3:75"},"nativeSrc":"28024:24:75","nodeType":"YulFunctionCall","src":"28024:24:75"},{"arguments":[{"kind":"number","nativeSrc":"28054:1:75","nodeType":"YulLiteral","src":"28054:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"28050:3:75","nodeType":"YulIdentifier","src":"28050:3:75"},"nativeSrc":"28050:6:75","nodeType":"YulFunctionCall","src":"28050:6:75"}],"functionName":{"name":"shr","nativeSrc":"28020:3:75","nodeType":"YulIdentifier","src":"28020:3:75"},"nativeSrc":"28020:37:75","nodeType":"YulFunctionCall","src":"28020:37:75"}],"functionName":{"name":"not","nativeSrc":"28016:3:75","nodeType":"YulIdentifier","src":"28016:3:75"},"nativeSrc":"28016:42:75","nodeType":"YulFunctionCall","src":"28016:42:75"}],"functionName":{"name":"and","nativeSrc":"28001:3:75","nodeType":"YulIdentifier","src":"28001:3:75"},"nativeSrc":"28001:58:75","nodeType":"YulFunctionCall","src":"28001:58:75"}],"functionName":{"name":"sstore","nativeSrc":"27986:6:75","nodeType":"YulIdentifier","src":"27986:6:75"},"nativeSrc":"27986:74:75","nodeType":"YulFunctionCall","src":"27986:74:75"},"nativeSrc":"27986:74:75","nodeType":"YulExpressionStatement","src":"27986:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"27879:7:75","nodeType":"YulIdentifier","src":"27879:7:75"},{"name":"newLen","nativeSrc":"27888:6:75","nodeType":"YulIdentifier","src":"27888:6:75"}],"functionName":{"name":"lt","nativeSrc":"27876:2:75","nodeType":"YulIdentifier","src":"27876:2:75"},"nativeSrc":"27876:19:75","nodeType":"YulFunctionCall","src":"27876:19:75"},"nativeSrc":"27873:201:75","nodeType":"YulIf","src":"27873:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28094:4:75","nodeType":"YulIdentifier","src":"28094:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28108:1:75","nodeType":"YulLiteral","src":"28108:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"28111:6:75","nodeType":"YulIdentifier","src":"28111:6:75"}],"functionName":{"name":"shl","nativeSrc":"28104:3:75","nodeType":"YulIdentifier","src":"28104:3:75"},"nativeSrc":"28104:14:75","nodeType":"YulFunctionCall","src":"28104:14:75"},{"kind":"number","nativeSrc":"28120:1:75","nodeType":"YulLiteral","src":"28120:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28100:3:75","nodeType":"YulIdentifier","src":"28100:3:75"},"nativeSrc":"28100:22:75","nodeType":"YulFunctionCall","src":"28100:22:75"}],"functionName":{"name":"sstore","nativeSrc":"28087:6:75","nodeType":"YulIdentifier","src":"28087:6:75"},"nativeSrc":"28087:36:75","nodeType":"YulFunctionCall","src":"28087:36:75"},"nativeSrc":"28087:36:75","nodeType":"YulExpressionStatement","src":"28087:36:75"}]},"nativeSrc":"27484:649:75","nodeType":"YulCase","src":"27484:649:75","value":{"kind":"number","nativeSrc":"27489:1:75","nodeType":"YulLiteral","src":"27489:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"28150:234:75","nodeType":"YulBlock","src":"28150:234:75","statements":[{"nativeSrc":"28164:14:75","nodeType":"YulVariableDeclaration","src":"28164:14:75","value":{"kind":"number","nativeSrc":"28177:1:75","nodeType":"YulLiteral","src":"28177:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"28168:5:75","nodeType":"YulTypedName","src":"28168:5:75","type":""}]},{"body":{"nativeSrc":"28213:67:75","nodeType":"YulBlock","src":"28213:67:75","statements":[{"nativeSrc":"28231:35:75","nodeType":"YulAssignment","src":"28231:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28250:3:75","nodeType":"YulIdentifier","src":"28250:3:75"},{"name":"srcOffset","nativeSrc":"28255:9:75","nodeType":"YulIdentifier","src":"28255:9:75"}],"functionName":{"name":"add","nativeSrc":"28246:3:75","nodeType":"YulIdentifier","src":"28246:3:75"},"nativeSrc":"28246:19:75","nodeType":"YulFunctionCall","src":"28246:19:75"}],"functionName":{"name":"mload","nativeSrc":"28240:5:75","nodeType":"YulIdentifier","src":"28240:5:75"},"nativeSrc":"28240:26:75","nodeType":"YulFunctionCall","src":"28240:26:75"},"variableNames":[{"name":"value","nativeSrc":"28231:5:75","nodeType":"YulIdentifier","src":"28231:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"28194:6:75","nodeType":"YulIdentifier","src":"28194:6:75"},"nativeSrc":"28191:89:75","nodeType":"YulIf","src":"28191:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28300:4:75","nodeType":"YulIdentifier","src":"28300:4:75"},{"arguments":[{"name":"value","nativeSrc":"28359:5:75","nodeType":"YulIdentifier","src":"28359:5:75"},{"name":"newLen","nativeSrc":"28366:6:75","nodeType":"YulIdentifier","src":"28366:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"28306:52:75","nodeType":"YulIdentifier","src":"28306:52:75"},"nativeSrc":"28306:67:75","nodeType":"YulFunctionCall","src":"28306:67:75"}],"functionName":{"name":"sstore","nativeSrc":"28293:6:75","nodeType":"YulIdentifier","src":"28293:6:75"},"nativeSrc":"28293:81:75","nodeType":"YulFunctionCall","src":"28293:81:75"},"nativeSrc":"28293:81:75","nodeType":"YulExpressionStatement","src":"28293:81:75"}]},"nativeSrc":"28142:242:75","nodeType":"YulCase","src":"28142:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"27464:6:75","nodeType":"YulIdentifier","src":"27464:6:75"},{"kind":"number","nativeSrc":"27472:2:75","nodeType":"YulLiteral","src":"27472:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"27461:2:75","nodeType":"YulIdentifier","src":"27461:2:75"},"nativeSrc":"27461:14:75","nodeType":"YulFunctionCall","src":"27461:14:75"},"nativeSrc":"27454:930:75","nodeType":"YulSwitch","src":"27454:930:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"27091:1299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"27172:4:75","nodeType":"YulTypedName","src":"27172:4:75","type":""},{"name":"src","nativeSrc":"27178:3:75","nodeType":"YulTypedName","src":"27178:3:75","type":""}],"src":"27091:1299:75"},{"body":{"nativeSrc":"28552:214:75","nodeType":"YulBlock","src":"28552:214:75","statements":[{"nativeSrc":"28562:26:75","nodeType":"YulAssignment","src":"28562:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"28574:9:75","nodeType":"YulIdentifier","src":"28574:9:75"},{"kind":"number","nativeSrc":"28585:2:75","nodeType":"YulLiteral","src":"28585:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"28570:3:75","nodeType":"YulIdentifier","src":"28570:3:75"},"nativeSrc":"28570:18:75","nodeType":"YulFunctionCall","src":"28570:18:75"},"variableNames":[{"name":"tail","nativeSrc":"28562:4:75","nodeType":"YulIdentifier","src":"28562:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"28604:9:75","nodeType":"YulIdentifier","src":"28604:9:75"},{"arguments":[{"name":"value0","nativeSrc":"28619:6:75","nodeType":"YulIdentifier","src":"28619:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28635:3:75","nodeType":"YulLiteral","src":"28635:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"28640:1:75","nodeType":"YulLiteral","src":"28640:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"28631:3:75","nodeType":"YulIdentifier","src":"28631:3:75"},"nativeSrc":"28631:11:75","nodeType":"YulFunctionCall","src":"28631:11:75"},{"kind":"number","nativeSrc":"28644:1:75","nodeType":"YulLiteral","src":"28644:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"28627:3:75","nodeType":"YulIdentifier","src":"28627:3:75"},"nativeSrc":"28627:19:75","nodeType":"YulFunctionCall","src":"28627:19:75"}],"functionName":{"name":"and","nativeSrc":"28615:3:75","nodeType":"YulIdentifier","src":"28615:3:75"},"nativeSrc":"28615:32:75","nodeType":"YulFunctionCall","src":"28615:32:75"}],"functionName":{"name":"mstore","nativeSrc":"28597:6:75","nodeType":"YulIdentifier","src":"28597:6:75"},"nativeSrc":"28597:51:75","nodeType":"YulFunctionCall","src":"28597:51:75"},"nativeSrc":"28597:51:75","nodeType":"YulExpressionStatement","src":"28597:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28668:9:75","nodeType":"YulIdentifier","src":"28668:9:75"},{"kind":"number","nativeSrc":"28679:2:75","nodeType":"YulLiteral","src":"28679:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"28664:3:75","nodeType":"YulIdentifier","src":"28664:3:75"},"nativeSrc":"28664:18:75","nodeType":"YulFunctionCall","src":"28664:18:75"},{"arguments":[{"name":"value1","nativeSrc":"28688:6:75","nodeType":"YulIdentifier","src":"28688:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28704:3:75","nodeType":"YulLiteral","src":"28704:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"28709:1:75","nodeType":"YulLiteral","src":"28709:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"28700:3:75","nodeType":"YulIdentifier","src":"28700:3:75"},"nativeSrc":"28700:11:75","nodeType":"YulFunctionCall","src":"28700:11:75"},{"kind":"number","nativeSrc":"28713:1:75","nodeType":"YulLiteral","src":"28713:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"28696:3:75","nodeType":"YulIdentifier","src":"28696:3:75"},"nativeSrc":"28696:19:75","nodeType":"YulFunctionCall","src":"28696:19:75"}],"functionName":{"name":"and","nativeSrc":"28684:3:75","nodeType":"YulIdentifier","src":"28684:3:75"},"nativeSrc":"28684:32:75","nodeType":"YulFunctionCall","src":"28684:32:75"}],"functionName":{"name":"mstore","nativeSrc":"28657:6:75","nodeType":"YulIdentifier","src":"28657:6:75"},"nativeSrc":"28657:60:75","nodeType":"YulFunctionCall","src":"28657:60:75"},"nativeSrc":"28657:60:75","nodeType":"YulExpressionStatement","src":"28657:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"28737:9:75","nodeType":"YulIdentifier","src":"28737:9:75"},{"kind":"number","nativeSrc":"28748:2:75","nodeType":"YulLiteral","src":"28748:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"28733:3:75","nodeType":"YulIdentifier","src":"28733:3:75"},"nativeSrc":"28733:18:75","nodeType":"YulFunctionCall","src":"28733:18:75"},{"name":"value2","nativeSrc":"28753:6:75","nodeType":"YulIdentifier","src":"28753:6:75"}],"functionName":{"name":"mstore","nativeSrc":"28726:6:75","nodeType":"YulIdentifier","src":"28726:6:75"},"nativeSrc":"28726:34:75","nodeType":"YulFunctionCall","src":"28726:34:75"},"nativeSrc":"28726:34:75","nodeType":"YulExpressionStatement","src":"28726:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"28395:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"28505:9:75","nodeType":"YulTypedName","src":"28505:9:75","type":""},{"name":"value2","nativeSrc":"28516:6:75","nodeType":"YulTypedName","src":"28516:6:75","type":""},{"name":"value1","nativeSrc":"28524:6:75","nodeType":"YulTypedName","src":"28524:6:75","type":""},{"name":"value0","nativeSrc":"28532:6:75","nodeType":"YulTypedName","src":"28532:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"28543:4:75","nodeType":"YulTypedName","src":"28543:4:75","type":""}],"src":"28395:371:75"},{"body":{"nativeSrc":"28900:145:75","nodeType":"YulBlock","src":"28900:145:75","statements":[{"nativeSrc":"28910:26:75","nodeType":"YulAssignment","src":"28910:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"28922:9:75","nodeType":"YulIdentifier","src":"28922:9:75"},{"kind":"number","nativeSrc":"28933:2:75","nodeType":"YulLiteral","src":"28933:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"28918:3:75","nodeType":"YulIdentifier","src":"28918:3:75"},"nativeSrc":"28918:18:75","nodeType":"YulFunctionCall","src":"28918:18:75"},"variableNames":[{"name":"tail","nativeSrc":"28910:4:75","nodeType":"YulIdentifier","src":"28910:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"28952:9:75","nodeType":"YulIdentifier","src":"28952:9:75"},{"arguments":[{"name":"value0","nativeSrc":"28967:6:75","nodeType":"YulIdentifier","src":"28967:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28983:3:75","nodeType":"YulLiteral","src":"28983:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"28988:1:75","nodeType":"YulLiteral","src":"28988:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"28979:3:75","nodeType":"YulIdentifier","src":"28979:3:75"},"nativeSrc":"28979:11:75","nodeType":"YulFunctionCall","src":"28979:11:75"},{"kind":"number","nativeSrc":"28992:1:75","nodeType":"YulLiteral","src":"28992:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"28975:3:75","nodeType":"YulIdentifier","src":"28975:3:75"},"nativeSrc":"28975:19:75","nodeType":"YulFunctionCall","src":"28975:19:75"}],"functionName":{"name":"and","nativeSrc":"28963:3:75","nodeType":"YulIdentifier","src":"28963:3:75"},"nativeSrc":"28963:32:75","nodeType":"YulFunctionCall","src":"28963:32:75"}],"functionName":{"name":"mstore","nativeSrc":"28945:6:75","nodeType":"YulIdentifier","src":"28945:6:75"},"nativeSrc":"28945:51:75","nodeType":"YulFunctionCall","src":"28945:51:75"},"nativeSrc":"28945:51:75","nodeType":"YulExpressionStatement","src":"28945:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29016:9:75","nodeType":"YulIdentifier","src":"29016:9:75"},{"kind":"number","nativeSrc":"29027:2:75","nodeType":"YulLiteral","src":"29027:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29012:3:75","nodeType":"YulIdentifier","src":"29012:3:75"},"nativeSrc":"29012:18:75","nodeType":"YulFunctionCall","src":"29012:18:75"},{"name":"value1","nativeSrc":"29032:6:75","nodeType":"YulIdentifier","src":"29032:6:75"}],"functionName":{"name":"mstore","nativeSrc":"29005:6:75","nodeType":"YulIdentifier","src":"29005:6:75"},"nativeSrc":"29005:34:75","nodeType":"YulFunctionCall","src":"29005:34:75"},"nativeSrc":"29005:34:75","nodeType":"YulExpressionStatement","src":"29005:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"28771:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"28861:9:75","nodeType":"YulTypedName","src":"28861:9:75","type":""},{"name":"value1","nativeSrc":"28872:6:75","nodeType":"YulTypedName","src":"28872:6:75","type":""},{"name":"value0","nativeSrc":"28880:6:75","nodeType":"YulTypedName","src":"28880:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"28891:4:75","nodeType":"YulTypedName","src":"28891:4:75","type":""}],"src":"28771:274:75"}]},"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_$17996t_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_$22374t_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_$22374t_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_$17996__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_$17996(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_$8656t_array$_t_contract$_IInvestStrategy_$22374_$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_$22374_$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_$17996_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_$22374__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_$7253_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_$22374_t_contract$_IInvestStrategy_$22374__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    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_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}","id":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":9798},{"length":32,"start":9839},{"length":32,"start":10155}]},"linkReferences":{},"object":"60806040526004361061028b575f3560e01c80638cdf48a811610155578063ba087652116100be578063d905777e11610078578063d905777e14610803578063d9f9027f14610822578063dd62ed3e14610843578063e682324d14610862578063ef8b30f714610795578063f617eecc14610881575f5ffd5b8063ba08765214610738578063bd577eb614610757578063c63d75b614610776578063c6e6f59214610795578063ce96cb77146107b4578063d89b074d146107d3575f5ffd5b806396da35da1161010f57806396da35da1461066d578063a7ded2ea1461068c578063a9059cbb146106ab578063ad3cb1cc146106ca578063b3d7f6b9146106fa578063b460af9414610719575f5ffd5b80638cdf48a81461058d5780638eef8380146105c5578063914abf4f146105e457806392ce412e1461060357806394bf804d1461063a57806395d89b4114610659575f5ffd5b8063402d267d116101f757806352d1902d116101b157806352d1902d146104e95780636e553f65146104fd57806370a082311461051c578063767f06ae1461053b5780637ac445a71461054f5780637aeedf2a1461056e575f5ffd5b8063402d267d1461045857806347e57533146104775780634cdad506146102d75780634f1ef28614610496578063508a0538146104a957806351a2d6d1146104c8575f5ffd5b806318160ddd1161024857806318160ddd1461036557806323b872dd146103985780632e6863da146103b7578063313ce567146103e057806338d52e0f146104065780633aaf904814610439575f5ffd5b806301e1d1141461028f57806306fdde03146102b657806307a2d13a146102d7578063095ea7b3146102f65780630a28a477146103255780630a60458414610344575b5f5ffd5b34801561029a575f5ffd5b506102a3610895565b6040519081526020015b60405180910390f35b3480156102c1575f5ffd5b506102ca6108a3565b6040516102ad9190614322565b3480156102e2575f5ffd5b506102a36102f1366004614334565b610963565b348015610301575f5ffd5b5061031561031036600461435f565b610974565b60405190151581526020016102ad565b348015610330575f5ffd5b506102a361033f366004614334565b61098b565b34801561034f575f5ffd5b5061036361035e366004614389565b610997565b005b348015610370575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102a3565b3480156103a3575f5ffd5b506103156103b23660046143a9565b610a32565b3480156103c2575f5ffd5b505f516020614f215f395f51905f52546001600160801b03166102a3565b3480156103eb575f5ffd5b506103f4610a57565b60405160ff90911681526020016102ad565b348015610411575f5ffd5b505f516020614f815f395f51905f52546040516001600160a01b0390911681526020016102ad565b348015610444575f5ffd5b506102ca6104533660046144b1565b610a86565b348015610463575f5ffd5b506102a361047236600461450a565b610b0b565b348015610482575f5ffd5b506102ca610491366004614334565b610b14565b6103636104a4366004614525565b610c94565b3480156104b4575f5ffd5b506102a36104c3366004614389565b610caa565b3480156104d3575f5ffd5b506104dc610d24565b6040516102ad9190614571565b3480156104f4575f5ffd5b506102a3610d7c565b348015610508575f5ffd5b506102a36105173660046145a5565b610d97565b348015610527575f5ffd5b506102a361053636600461450a565b610df4565b348015610546575f5ffd5b506103f4602081565b34801561055a575f5ffd5b506103636105693660046145e0565b610e1a565b348015610579575f5ffd5b50610363610588366004614525565b610f53565b348015610598575f5ffd5b506105ac6105a736600461464e565b611158565b6040516001600160e01b031990911681526020016102ad565b3480156105d0575f5ffd5b506102a36105df36600461467f565b6111b7565b3480156105ef575f5ffd5b506103636105fe36600461473e565b6111d7565b34801561060e575f5ffd5b506102a361061d366004614334565b5f9081525f516020614f015f395f51905f52602052604090205490565b348015610645575f5ffd5b506102a36106543660046145a5565b611429565b348015610664575f5ffd5b506102ca611475565b348015610678575f5ffd5b5061036361068736600461476f565b6114b3565b348015610697575f5ffd5b506103636106a6366004614886565b611aca565b3480156106b6575f5ffd5b506103156106c536600461435f565b611be2565b3480156106d5575f5ffd5b506102ca604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610705575f5ffd5b506102a3610714366004614334565b611bef565b348015610724575f5ffd5b506102a361073336600461499d565b611bfb565b348015610743575f5ffd5b506102a361075236600461499d565b611c48565b348015610762575f5ffd5b5061036361077136600461473e565b611c95565b348015610781575f5ffd5b506102a361079036600461450a565b611ee1565b3480156107a0575f5ffd5b506102a36107af366004614334565b611f0d565b3480156107bf575f5ffd5b506102a36107ce36600461450a565b611f18565b3480156107de575f5ffd5b505f516020614f215f395f51905f5254600160801b90046001600160801b03166102a3565b34801561080e575f5ffd5b506102a361081d36600461450a565b611f2e565b34801561082d575f5ffd5b50610836611f73565b6040516102ad91906149dc565b34801561084e575f5ffd5b506102a361085d366004614a0d565b611fb9565b34801561086d575f5ffd5b506102a361087c366004614a39565b612002565b34801561088c575f5ffd5b506104dc6121f2565b5f61089e61222d565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614f415f395f51905f52916108e190614a62565b80601f016020809104026020016040519081016040528092919081815260200182805461090d90614a62565b80156109585780601f1061092f57610100808354040283529160200191610958565b820191905f5260205f20905b81548152906001019060200180831161093b57829003601f168201915b505050505091505090565b5f61096e825f6122a8565b92915050565b5f336109818185856122ff565b5060019392505050565b5f61096e826001612311565b5f516020614f215f395f51905f526109ae8261235f565b81546001600160801b03918216600160801b0291161781556109cf8361235f565b81546fffffffffffffffffffffffffffffffff19166001600160801b039190911617815560408051848152602081018490527fb60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b8591015b60405180910390a1505050565b5f33610a3f858285612392565b610a4a8585856123e2565b60019150505b9392505050565b5f805f516020614f815f395f51905f5290505f8154610a809190600160a01b900460ff16614aae565b91505090565b6060610a9384848461243f565b5f60028560ff1660208110610aaa57610aaa614ac7565b01546001600160a01b0316905080610ad557604051632711b74d60e11b815260040160405180910390fd5b610b02848460028860ff1660208110610af057610af0614ac7565b01546001600160a01b0316919061255d565b95945050505050565b5f61096e6125af565b60605f5b5f60028260208110610b2c57610b2c614ac7565b01546001600160a01b031614801590610b455750602081105b15610c7a5760028160208110610b5d57610b5d614ac7565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd09190614adb565b8303610c6a57825483908190610be590614a62565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1190614a62565b8015610c5c5780601f10610c3357610100808354040283529160200191610c5c565b820191905f5260205f20905b815481529060010190602001808311610c3f57829003601f168201915b505050505092505050919050565b610c7381614af2565b9050610b18565b5060405163213109dd60e11b815260040160405180910390fd5b610c9c61263b565b610ca682826126e4565b5050565b5f8281525f516020614f015f395f51905f5260205260408120805490839083610cd38385614b0a565b918290555060408051878152602081018590529081018290529093507f177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2915060600160405180910390a15092915050565b610d2c6142d5565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d445790505050505050905090565b5f610d856127a0565b505f516020614f615f395f51905f5290565b5f5f610da283610b0b565b905080841115610dd457828482604051633c8097d960e11b8152600401610dcb93929190614b31565b60405180910390fd5b5f610dde85611f0d565b9050610dec338587846127e9565b949350505050565b6001600160a01b03165f9081525f516020614f415f395f51905f52602052604090205490565b5f60028560ff1660208110610e3157610e31614ac7565b01546001600160a01b0316905080610e5c57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610e8b57505f60028260208110610e7d57610e7d614ac7565b01546001600160a01b031614155b15610f0157846001600160a01b031660028260208110610ead57610ead614ac7565b01546001600160a01b0316148015610ec857508560ff168114155b15610ef15760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610dcb565b610efa81614af2565b9050610e5e565b50610f16818585610f10612838565b86612857565b8360028660ff1660208110610f2d57610f2d614ac7565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610f7a57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610fa957505f60028260208110610f9b57610f9b614ac7565b01546001600160a01b031614155b1561100f57826001600160a01b031660028260208110610fcb57610fcb614ac7565b01546001600160a01b031603610fff5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610dcb565b61100881614af2565b9050610f7c565b601f19810161103457604051600162ad1fab60e01b0319815260040160405180910390fd5b826002826020811061104857611048614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055611072816001614b52565b5f826020811061108457611084614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055508060016110b19190614b52565b600182602081106110c4576110c4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506110ff6110ef612838565b6001600160a01b038516906129a5565b6111126001600160a01b03841683612a37565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff166020811061117057611170614ac7565b0154604080516001600160a01b039092166020830181905260ff86169183019190915291506060016040516020818303038152906040528051906020012091505092915050565b5f6111c98364ffffffffff8416614b79565b610a5090608085901b614b52565b6111df6142d5565b81515f90602010156112045760405163a29b1f1160e01b815260040160405180910390fd5b82518110156113af57602060ff1683828151811061122457611224614ac7565b602002602001015160ff1610158061127d57505f6001600160a01b0316600284838151811061125557611255614ac7565b602002602001015160ff166020811061127057611270614ac7565b01546001600160a01b0316145b1561129b5760405163a29b1f1160e01b815260040160405180910390fd5b818382815181106112ae576112ae614ac7565b602002602001015160ff16602081106112c9576112c9614ac7565b602002015115611310578281815181106112e5576112e5614ac7565b602002602001015160405163c41fdbb960e01b8152600401610dcb919060ff91909116815260200190565b60018284838151811061132557611325614ac7565b602002602001015160ff166020811061134057611340614ac7565b91151560209092020152825183908290811061135e5761135e614ac7565b602002602001015160016113729190614aae565b5f826020811061138457611384614ac7565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050611204565b6020811080156113dc57505f600282602081106113ce576113ce614ac7565b01546001600160a01b031614155b156113fa57604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec83604051610a259190614b8c565b5f5f61143483611ee1565b90508084111561145d5782848260405163284ff66760e01b8152600401610dcb93929190614b31565b5f61146785611bef565b9050610dec338583886127e9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614f415f395f51905f52916108e190614a62565b602060ff8316106114d757604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff16602081106114ee576114ee614ac7565b01546001600160a01b031690508061151957604051632711b74d60e11b815260040160405180910390fd5b811580156115375750611534816001600160a01b0316612a85565b15155b15611555576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561156f57506003546001600160a01b0316155b1561159057604051600162ad1fab60e01b0319815260040160405180910390fd5b5f61159c846001614aae565b60ff1690505b6020811080156115cf57505f600282602081106115c1576115c1614ac7565b01546001600160a01b031614155b1561163e57600281602081106115e7576115e7614ac7565b01546001600160a01b031660026115ff600184614bd1565b6020811061160f5761160f614ac7565b0180546001600160a01b0319166001600160a01b039290921691909117905561163781614af2565b90506115a2565b5f600261164c600184614bd1565b6020811061165c5761165c614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061169357611693614ac7565b602081049091015460ff601f9092166101000a900416158015906116b75750602083105b156119e957801561177b576116cd866001614aae565b60ff16600184602081106116e3576116e3614ac7565b602081049091015460ff601f9092166101000a90041611611704575f611707565b60015b6001846020811061171a5761171a614ac7565b602091828204019190069054906101000a900460ff1661173a9190614be4565b60016117468186614bd1565b6020811061175657611756614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555061184c565b611786866001614aae565b60ff166001846020811061179c5761179c614ac7565b602081049091015460ff601f9092166101000a900416036117bf5750600161184c565b6117ca866001614aae565b60ff16600184602081106117e0576117e0614ac7565b602081049091015460ff601f9092166101000a900416111561184c57600180846020811061181057611810614ac7565b602091828204019190068282829054906101000a900460ff166118339190614be4565b92506101000a81548160ff021916908360ff1602179055505b81156119095761185d866001614aae565b60ff165f846020811061187257611872614ac7565b602081049091015460ff601f9092166101000a90041611611893575f611896565b60015b5f84602081106118a8576118a8614ac7565b602091828204019190069054906101000a900460ff166118c89190614be4565b5f6118d4600186614bd1565b602081106118e4576118e4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506119d9565b611914866001614aae565b60ff165f846020811061192957611929614ac7565b602081049091015460ff601f9092166101000a9004160361194d57600191506119d9565b611958866001614aae565b60ff165f846020811061196d5761196d614ac7565b602081049091015460ff601f9092166101000a90041611156119d95760015f846020811061199d5761199d614ac7565b602091828204019190068282829054906101000a900460ff166119c09190614be4565b92506101000a81548160ff021916908360ff1602179055505b6119e283614af2565b9250611680565b5f806119f6600186614bd1565b60208110611a0657611a06614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055505f60018085611a359190614bd1565b60208110611a4557611a45614ac7565b602091828204019190066101000a81548160ff021916908360ff160217905550611a8185856001600160a01b0316612aee90919063ffffffff16565b60405160ff871681526001600160a01b038516907f978014566e371fef52158b004e150b6e1fd723f5aa3d8c9aa2a7c98ddb0e65b89060200160405180910390a2505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611b0e5750825b90505f826001600160401b03166001148015611b295750303b155b905081158015611b37575080155b15611b555760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b7f57845460ff60401b1916600160401b1785555b611b8e8c8c8c8c8c8c8c612c13565b8315611bd457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f336109818185856123e2565b5f61096e8260016122a8565b5f5f611c0683611f18565b905080851115611c2f57828582604051633fa733bb60e21b8152600401610dcb93929190614b31565b5f611c398661098b565b9050610b023386868985612c4b565b5f5f611c5383611f2e565b905080851115611c7c57828582604051632e52afbb60e21b8152600401610dcb93929190614b31565b5f611c8686610963565b9050610b02338686848a612c4b565b611c9d6142d5565b81515f9060201015611cc25760405163a29b1f1160e01b815260040160405180910390fd5b82518160ff161015611e6157602060ff16838260ff1681518110611ce857611ce8614ac7565b602002602001015160ff16101580611d4457505f6001600160a01b03166002848360ff1681518110611d1c57611d1c614ac7565b602002602001015160ff1660208110611d3757611d37614ac7565b01546001600160a01b0316145b15611d625760405163a29b1f1160e01b815260040160405180910390fd5b81838260ff1681518110611d7857611d78614ac7565b602002602001015160ff1660208110611d9357611d93614ac7565b602002015115611db257828160ff16815181106112e5576112e5614ac7565b600182848360ff1681518110611dca57611dca614ac7565b602002602001015160ff1660208110611de557611de5614ac7565b911515602090920201528251839060ff8316908110611e0657611e06614ac7565b60200260200101516001611e1a9190614aae565b60018260ff1660208110611e3057611e30614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555080611e5a90614bfd565b9050611cc2565b602060ff8216108015611e9457505f600260ff831660208110611e8657611e86614ac7565b01546001600160a01b031614155b15611eb257604051636712b27b60e01b815260040160405180910390fd5b7f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051610a259190614b8c565b5f5f611eeb6125af565b90505f198114611f0457611eff815f612311565b610a50565b5f199392505050565b5f61096e825f612311565b5f5f611f2383612d5b565b9050610a5081612d6e565b5f5f611f3983612e03565b90505f611f46825f6122a8565b90505f611f5282612d6e565b9050818114611f6a57611f65815f612311565b610b02565b50909392505050565b611f7b6142d5565b604080516104008101918290529060029060209082845b81546001600160a01b03168152600190910190602001808311611f92575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f602060ff851610158061201a5750602060ff841610155b1561203857604051632711b74d60e11b815260040160405180910390fd5b5f60028560ff166020811061204f5761204f614ac7565b01546001600160a01b031690505f600260ff86166020811061207357612073614ac7565b01546001600160a01b0390811691508216158061209757506001600160a01b038116155b156120b557604051632711b74d60e11b815260040160405180910390fd5b5f1984036120d2576120cf826001600160a01b0316612a85565b93505b835f036120e3575f92505050610a50565b6120f5826001600160a01b0316612e0d565b84111561212a5761210e826001600160a01b0316612e0d565b604051633ce011d560e01b8152600401610dcb91815260200190565b61213c816001600160a01b0316612e3b565b84111561217157612155816001600160a01b0316612e3b565b6040516350a3e37560e11b8152600401610dcb91815260200190565b6121856001600160a01b038316855f612e69565b5061219a6001600160a01b038216855f612fa5565b50806001600160a01b0316826001600160a01b03167fb0850b8e0f9e8315dde3c9f9f31138283e6bbe16cd29e8552eb1dcdf9fac9e3b866040516121e091815260200190565b60405180910390a35091949350505050565b6121fa6142d5565b604080516104008101918290525f805460ff1682529091602090826001838601808411610d445790505050505050905090565b5f5f5b5f6002826020811061224457612244614ac7565b01546001600160a01b03161480159061225d5750602081105b156122a4576122886002826020811061227857612278614ac7565b01546001600160a01b0316612a85565b6122929083614b52565b915061229d81614af2565b9050612230565b5090565b5f610a506122b4610895565b6122bf906001614b52565b6122ca5f600a614cfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546122f69190614b52565b859190856130c6565b61230c8383836001613108565b505050565b5f610a5061232082600a614cfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461234c9190614b52565b612354610895565b6122f6906001614b52565b5f6001600160801b038211156122a4576040516306dfcc6560e41b81526080600482015260248101839052604401610dcb565b5f61239d8484611fb9565b90505f1981146123dc57818110156123ce57828183604051637dc7a0d960e11b8152600401610dcb93929190614b31565b6123dc84848484035f613108565b50505050565b6001600160a01b03831661240b57604051634b637e8f60e11b81525f6004820152602401610dcb565b6001600160a01b0382166124345760405163ec442f0560e01b81525f6004820152602401610dcb565b61230c8383836131eb565b5f306001600160a01b0316633a7b7a396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561247c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124a09190614d0c565b90505f816001600160a01b031663b700961333306124be8989611158565b60405160e085901b6001600160e01b031990811682526001600160a01b0394851660048301529290931660248401521660448201526064016040805180830381865afa158015612510573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125349190614d27565b509050806125565760405162d1953b60e31b8152336004820152602401610dcb565b5050505050565b6060610dec8383604051602401612575929190614d5c565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690613311565b5f5f5f5b5f600282602081106125c7576125c7614ac7565b01546001600160a01b0316148015906125e05750602081105b15612636576126148361260f600284602081106125ff576125ff614ac7565b01546001600160a01b0316612e3b565b61337a565b9350915081612626575f199250505090565b61262f81614af2565b90506125b3565b505090565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806126c157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126b55f516020614f615f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156126df5760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561273e575060408051601f3d908101601f1916820190925261273b91810190614adb565b60015b61276657604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610dcb565b5f516020614f615f395f51905f52811461279657604051632a87526960e21b815260048101829052602401610dcb565b61230c83836133a1565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126df5760405163703e46dd60e11b815260040160405180910390fd5b5f6127f26133f6565b90506127fd83613428565b5f8281525f516020614f015f395f51905f52602052604081208054909190612826908490614b0a565b90915550612556905085858585613454565b5f61089e5f516020614f815f395f51905f52546001600160a01b031690565b61286184836129a5565b60405163f3e0ffbf60e01b81523060048201526128d39086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa1580156128a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128cd9190614adb565b83612e69565b506128de8582612aee565b6128e88484612a37565b6040516370a0823160e01b815230600482015261295a9085906001600160a01b038516906370a0823190602401602060405180830381865afa158015612930573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129549190614adb565b83612fa5565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa1580156129ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a109190614d0c565b6001600160a01b031614610ca65760405163e76673ef60e01b815260040160405180910390fd5b61230c81604051602401612a4b9190614322565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690613311565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015612aca573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096e9190614adb565b8015612bc957604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b17905251612b459190614d77565b5f60405180830381855af49150503d805f8114612b7d576040519150601f19603f3d011682016040523d82523d5f602084013e612b82565b606091505b5091509150816123dc577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf881604051612bbb9190614322565b60405180910390a150505050565b6040515f602482015261230c9060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690613311565b612c1b613469565b612c236134b2565b612c2c856134ba565b612c3687876134cb565b612c42848484846134dd565b50505050505050565b5f612c546133f6565b90505f612c62600183614bd1565b5f8181525f516020614f015f395f51905f52602052604080822054858352908220549293505f516020614f215f395f51905f5292612c9f88614d8d565b612ca99190614b0a565b612cb39190614b0a565b90505f81128015612cdc57508154600160801b90046001600160801b0316612cda82614d8d565b115b15612d1557815460405163cc9a505360e01b815260048101839052600160801b9091046001600160801b03166024820152604401610dcb565b612d1e86613428565b5f85815260018401602052604081208054909190612d3d908490614da7565b90915550612d5090508989898989613a5e565b505050505050505050565b5f61096e612d6883610df4565b5f6122a8565b5f5f5f5b5f60028260208110612d8657612d86614ac7565b01546001600160a01b031614801590612d9f5750602081105b15612dfc57612dce8361260f60028460208110612dbe57612dbe614ac7565b01546001600160a01b0316612e0d565b93509150811580612ddf5750838310155b15612dec57509192915050565b612df581614af2565b9050612d72565b5050919050565b5f61096e82610df4565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb7790602401612aaf565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d90602401612aaf565b5f8115612f4b575f5f856001600160a01b031685604051602401612e8f91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251612ec49190614d77565b5f60405180830381855af49150503d805f8114612efc576040519150601f19603f3d011682016040523d82523d5f602084013e612f01565b606091505b509150915081612f43577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051612f3a9190614322565b60405180910390a15b509050610a50565b612f9b83604051602401612f6191815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690613311565b5060019050610a50565b5f8115613076575f5f856001600160a01b031685604051602401612fcb91815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b179052516130009190614d77565b5f60405180830381855af49150503d805f8114613038576040519150601f19603f3d011682016040523d82523d5f602084013e61303d565b606091505b509150915081612f43577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051612f3a9190614322565b612f9b8360405160240161308c91815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690613311565b5f6130f36130d383613a74565b80156130ee57505f84806130e9576130e9614b65565b868809115b151590565b6130fe868686613aa0565b610b029190614b52565b5f516020614f415f395f51905f526001600160a01b03851661313f5760405163e602df0560e01b81525f6004820152602401610dcb565b6001600160a01b03841661316857604051634a1406b160e11b81525f6004820152602401610dcb565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561255657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516131dc91815260200190565b60405180910390a35050505050565b5f516020614f415f395f51905f526001600160a01b0384166132255781816002015f82825461321a9190614b52565b909155506132829050565b6001600160a01b0384165f90815260208290526040902054828110156132645784818460405163391434e360e21b8152600401610dcb93929190614b31565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166132a05760028101805483900390556132be565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161330391815260200190565b60405180910390a350505050565b60605f5f846001600160a01b03168460405161332d9190614d77565b5f60405180830381855af49150503d805f8114613365576040519150601f19603f3d011682016040523d82523d5f602084013e61336a565b606091505b5091509150610b02858383613b56565b5f8083830184811015613393575f5f925092505061339a565b6001925090505b9250929050565b6133aa82613bad565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156133ee5761230c8282613311565b610ca6613c10565b5f516020614f215f395f51905f52545f906001600160801b031661341a8142614b79565b610a8090608083901b614b52565b5f6001600160ff1b038211156122a45760405163123baf0360e11b815260048101839052602401610dcb565b61346084848484613c2f565b6123dc82613cac565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166126df57604051631afcd79f60e31b815260040160405180910390fd5b6126df613469565b6134c2613469565b6126e181613dc3565b6134d3613469565b610ca68282613e33565b835115806134ec575083516020105b806134f957508251845114155b8061350657508151845114155b8061351357508051845114155b1561353457604051600162ad1fab60e01b0319815260040160405180910390fd5b61353c6142d5565b6135446142d5565b5f5b86518110156139e7575f6001600160a01b031687828151811061356b5761356b614ac7565b60200260200101516001600160a01b03160361359a57604051632711b74d60e11b815260040160405180910390fd5b6135d66135a5612838565b8883815181106135b7576135b7614ac7565b60200260200101516001600160a01b03166129a590919063ffffffff16565b5f5b81811015613676578781815181106135f2576135f2614ac7565b60200260200101516001600160a01b031688838151811061361557613615614ac7565b60200260200101516001600160a01b03160361366e5787828151811061363d5761363d614ac7565b602002602001015160405163b5a9314f60e01b8152600401610dcb91906001600160a01b0391909116815260200190565b6001016135d8565b50865185828151811061368b5761368b614ac7565b602002602001015160ff161015806136d25750828582815181106136b1576136b1614ac7565b602002602001015160ff16602081106136cc576136cc614ac7565b60200201515b15613714578481815181106136e9576136e9614ac7565b602002602001015160405163306ccd5d60e11b8152600401610dcb919060ff91909116815260200190565b865184828151811061372857613728614ac7565b602002602001015160ff1610158061376f57508184828151811061374e5761374e614ac7565b602002602001015160ff166020811061376957613769614ac7565b60200201515b156137b15783818151811061378657613786614ac7565b6020026020010151604051632776924160e11b8152600401610dcb919060ff91909116815260200190565b6001838683815181106137c6576137c6614ac7565b602002602001015160ff16602081106137e1576137e1614ac7565b60200201901515908115158152505060018285838151811061380557613805614ac7565b602002602001015160ff166020811061382057613820614ac7565b91151560209092020152865187908290811061383e5761383e614ac7565b60200260200101516002826020811061385957613859614ac7565b015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555084818151811061388f5761388f614ac7565b602002602001015160016138a39190614aae565b5f82602081106138b5576138b5614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055508381815181106138e7576138e7614ac7565b602002602001015160016138fb9190614aae565b6001826020811061390e5761390e614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555061397c86828151811061394357613943614ac7565b602002602001015188838151811061395d5761395d614ac7565b60200260200101516001600160a01b0316612a3790919063ffffffff16565b86818151811061398e5761398e614ac7565b60200260200101516001600160a01b03167f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f58826040516139d7919060ff91909116815260200190565b60405180910390a2600101613546565b507f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec84604051613a179190614b8c565b60405180910390a17f3c56b6bca0d55eda581f8f2819d1f85d3b91cfcc24914a8fa39d301796d8964c83604051613a4e9190614b8c565b60405180910390a1505050505050565b613a6782613e83565b6125568585858585613f96565b5f6002826003811115613a8957613a89614dcd565b613a939190614de1565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03613ad457838281613aca57613aca614b65565b0492505050610a50565b808411613aeb57613aeb600385150260111861404a565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b606082613b6657611eff8261405b565b8151158015613b7d57506001600160a01b0384163b155b15613ba657604051639996b31560e01b81526001600160a01b0385166004820152602401610dcb565b5080610a50565b806001600160a01b03163b5f03613be257604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610dcb565b5f516020614f615f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156126df5760405163b398979f60e01b815260040160405180910390fd5b5f516020614f815f395f51905f528054613c54906001600160a01b0316863086614084565b613c5e84836140eb565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d785856040516131dc929190918252602082015260400190565b805f5b8115801590613ce457505f8160208110613ccb57613ccb614ac7565b602081049091015460ff601f9092166101000a90041615155b8015613cf05750602081105b15613da3575f600260015f8460208110613d0c57613d0c614ac7565b602091828204019190069054906101000a900460ff16613d2c9190614be4565b60ff1660208110613d3f57613d3f614ac7565b01546001600160a01b031690505f613d5f84613d5a84612e3b565b61411f565b9050805f03613d6f575050613d93565b613d836001600160a01b038316825f612fa5565b50613d8e8185614bd1565b935050505b613d9c81614af2565b9050613caf565b508015610ca65760405163285a546d60e01b815260040160405180910390fd5b613dcb613469565b5f516020614f815f395f51905f525f80613de48461412e565b9150915081613df4576012613df6565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b613e3b613469565b5f516020614f415f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03613e748482614e46565b50600481016123dc8382614e46565b805f5b8115801590613ebc575060018160208110613ea357613ea3614ac7565b602081049091015460ff601f9092166101000a90041615155b8015613ec85750602081105b15613f76575f60026001808460208110613ee457613ee4614ac7565b602091828204019190069054906101000a900460ff16613f049190614be4565b60ff1660208110613f1757613f17614ac7565b01546001600160a01b031690505f613f3284613d5a84612e0d565b9050805f03613f42575050613f66565b613f566001600160a01b038316825f612e69565b50613f618185614bd1565b935050505b613f6f81614af2565b9050613e86565b508015610ca65760405163351dc55d60e21b815260040160405180910390fd5b5f516020614f815f395f51905f526001600160a01b0386811690851614613fc257613fc2848784612392565b613fcc8483614204565b8054613fe2906001600160a01b03168685614238565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db868660405161403a929190918252602082015260400190565b60405180910390a4505050505050565b634e487b715f52806020526024601cfd5b80511561406b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526123dc9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614269565b6001600160a01b0382166141145760405163ec442f0560e01b81525f6004820152602401610dcb565b610ca65f83836131eb565b5f828218828410028218610a50565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161417491614d77565b5f60405180830381855afa9150503d805f81146141ac576040519150601f19603f3d011682016040523d82523d5f602084013e6141b1565b606091505b50915091508180156141c557506020815110155b156141f8575f818060200190518101906141df9190614adb565b905060ff81116141f6576001969095509350505050565b505b505f9485945092505050565b6001600160a01b03821661422d57604051634b637e8f60e11b81525f6004820152602401610dcb565b610ca6825f836131eb565b6040516001600160a01b0383811660248301526044820183905261230c91859182169063a9059cbb906064016140b9565b5f5f60205f8451602086015f885af180614288576040513d5f823e3d81fd5b50505f513d9150811561429f5780600114156142ac565b6001600160a01b0384163b155b156123dc57604051635274afe760e01b81526001600160a01b0385166004820152602401610dcb565b6040518061040001604052806020906020820280368337509192915050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a5060208301846142f4565b5f60208284031215614344575f5ffd5b5035919050565b6001600160a01b03811681146126e1575f5ffd5b5f5f60408385031215614370575f5ffd5b823561437b8161434b565b946020939093013593505050565b5f5f6040838503121561439a575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156143bb575f5ffd5b83356143c68161434b565b925060208401356143d68161434b565b929592945050506040919091013590565b803560ff811681146143f7575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715614438576144386143fc565b604052919050565b5f82601f83011261444f575f5ffd5b8135602083015f5f6001600160401b0384111561446e5761446e6143fc565b50601f8301601f191660200161448381614410565b915050828152858383011115614497575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f5f606084860312156144c3575f5ffd5b6144cc846143e7565b92506144da602085016143e7565b915060408401356001600160401b038111156144f4575f5ffd5b61450086828701614440565b9150509250925092565b5f6020828403121561451a575f5ffd5b8135610a508161434b565b5f5f60408385031215614536575f5ffd5b82356145418161434b565b915060208301356001600160401b0381111561455b575f5ffd5b61456785828601614440565b9150509250929050565b610400810181835f5b602081101561459c57815160ff1683526020928301929091019060010161457a565b50505092915050565b5f5f604083850312156145b6575f5ffd5b8235915060208301356145c88161434b565b809150509250929050565b80151581146126e1575f5ffd5b5f5f5f5f608085870312156145f3575f5ffd5b6145fc856143e7565b9350602085013561460c8161434b565b925060408501356001600160401b03811115614626575f5ffd5b61463287828801614440565b9250506060850135614643816145d3565b939692955090935050565b5f5f6040838503121561465f575f5ffd5b614668836143e7565b9150614676602084016143e7565b90509250929050565b5f5f60408385031215614690575f5ffd5b82359150602083013564ffffffffff811681146145c8575f5ffd5b5f6001600160401b038211156146c3576146c36143fc565b5060051b60200190565b5f82601f8301126146dc575f5ffd5b81356146ef6146ea826146ab565b614410565b8082825260208201915060208360051b860101925085831115614710575f5ffd5b602085015b8381101561473457614726816143e7565b835260209283019201614715565b5095945050505050565b5f6020828403121561474e575f5ffd5b81356001600160401b03811115614763575f5ffd5b610dec848285016146cd565b5f5f60408385031215614780575f5ffd5b614789836143e7565b915060208301356145c8816145d3565b80356143f78161434b565b5f82601f8301126147b3575f5ffd5b81356147c16146ea826146ab565b8082825260208201915060208360051b8601019250858311156147e2575f5ffd5b602085015b838110156147345780356147fa8161434b565b8352602092830192016147e7565b5f82601f830112614817575f5ffd5b81356148256146ea826146ab565b8082825260208201915060208360051b860101925085831115614846575f5ffd5b602085015b838110156147345780356001600160401b03811115614868575f5ffd5b614877886020838a0101614440565b8452506020928301920161484b565b5f5f5f5f5f5f5f60e0888a03121561489c575f5ffd5b87356001600160401b038111156148b1575f5ffd5b6148bd8a828b01614440565b97505060208801356001600160401b038111156148d8575f5ffd5b6148e48a828b01614440565b9650506148f360408901614799565b945060608801356001600160401b0381111561490d575f5ffd5b6149198a828b016147a4565b94505060808801356001600160401b03811115614934575f5ffd5b6149408a828b01614808565b93505060a08801356001600160401b0381111561495b575f5ffd5b6149678a828b016146cd565b92505060c08801356001600160401b03811115614982575f5ffd5b61498e8a828b016146cd565b91505092959891949750929550565b5f5f5f606084860312156149af575f5ffd5b8335925060208401356149c18161434b565b915060408401356149d18161434b565b809150509250925092565b610400810181835f5b602081101561459c5781516001600160a01b03168352602092830192909101906001016149e5565b5f5f60408385031215614a1e575f5ffd5b8235614a298161434b565b915060208301356145c88161434b565b5f5f5f60608486031215614a4b575f5ffd5b614a54846143e7565b92506143d6602085016143e7565b600181811c90821680614a7657607f821691505b602082108103614a9457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561096e5761096e614a9a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614aeb575f5ffd5b5051919050565b5f60018201614b0357614b03614a9a565b5060010190565b8082018281125f831280158216821582161715614b2957614b29614a9a565b505092915050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561096e5761096e614a9a565b634e487b7160e01b5f52601260045260245ffd5b5f82614b8757614b87614b65565b500490565b602080825282518282018190525f918401906040840190835b81811015614bc657835160ff16835260209384019390920191600101614ba5565b509095945050505050565b8181038181111561096e5761096e614a9a565b60ff828116828216039081111561096e5761096e614a9a565b5f60ff821660ff8103614c1257614c12614a9a565b60010192915050565b6001815b6001841115614c5657808504811115614c3a57614c3a614a9a565b6001841615614c4857908102905b60019390931c928002614c1f565b935093915050565b5f82614c6c5750600161096e565b81614c7857505f61096e565b8160018114614c8e5760028114614c9857614cb4565b600191505061096e565b60ff841115614ca957614ca9614a9a565b50506001821b61096e565b5060208310610133831016604e8410600b8410161715614cd7575081810a61096e565b614ce35f198484614c1b565b805f1904821115614cf657614cf6614a9a565b029392505050565b5f610a5060ff841683614c5e565b5f60208284031215614d1c575f5ffd5b8151610a508161434b565b5f5f60408385031215614d38575f5ffd5b8251614d43816145d3565b602084015190925063ffffffff811681146145c8575f5ffd5b60ff83168152604060208201525f610dec60408301846142f4565b5f82518060208501845e5f920191825250919050565b5f600160ff1b8201614da157614da1614a9a565b505f0390565b8181035f831280158383131683831282161715614dc657614dc6614a9a565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680614df357614df3614b65565b8060ff84160691505092915050565b601f82111561230c57805f5260205f20601f840160051c81016020851015614e275750805b601f840160051c820191505b81811015612556575f8155600101614e33565b81516001600160401b03811115614e5f57614e5f6143fc565b614e7381614e6d8454614a62565b84614e02565b6020601f821160018114614ea5575f8315614e8e5750848201515b5f19600385901b1c1916600184901b178455612556565b5f84815260208120601f198516915b82811015614ed45787850151825560209485019460019092019101614eb4565b5084821015614ef157868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f01a2ada5d673dba5eecea7c7503ee87e29913d0d36ae093e950d632f7b86891f0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220761bd0adfbc3d87113074f98c9621e1a113c12f2f43aaa6a07cfa8ed9c10a45564736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x28B JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8CDF48A8 GT PUSH2 0x155 JUMPI DUP1 PUSH4 0xBA087652 GT PUSH2 0xBE JUMPI DUP1 PUSH4 0xD905777E GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x803 JUMPI DUP1 PUSH4 0xD9F9027F EQ PUSH2 0x822 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x843 JUMPI DUP1 PUSH4 0xE682324D EQ PUSH2 0x862 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xF617EECC EQ PUSH2 0x881 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBA087652 EQ PUSH2 0x738 JUMPI DUP1 PUSH4 0xBD577EB6 EQ PUSH2 0x757 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x776 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x7B4 JUMPI DUP1 PUSH4 0xD89B074D EQ PUSH2 0x7D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x96DA35DA GT PUSH2 0x10F JUMPI DUP1 PUSH4 0x96DA35DA EQ PUSH2 0x66D JUMPI DUP1 PUSH4 0xA7DED2EA EQ PUSH2 0x68C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6AB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x6CA JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x6FA JUMPI DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x719 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8CDF48A8 EQ PUSH2 0x58D JUMPI DUP1 PUSH4 0x8EEF8380 EQ PUSH2 0x5C5 JUMPI DUP1 PUSH4 0x914ABF4F EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0x92CE412E EQ PUSH2 0x603 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x659 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D GT PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x1B1 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x4FD JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x767F06AE EQ PUSH2 0x53B JUMPI DUP1 PUSH4 0x7AC445A7 EQ PUSH2 0x54F JUMPI DUP1 PUSH4 0x7AEEDF2A EQ PUSH2 0x56E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x402D267D EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x508A0538 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0x51A2D6D1 EQ PUSH2 0x4C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x248 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x365 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x398 JUMPI DUP1 PUSH4 0x2E6863DA EQ PUSH2 0x3B7 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0x3AAF9048 EQ PUSH2 0x439 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2B6 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xA604584 EQ PUSH2 0x344 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x895 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 0x2C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x8A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x963 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x301 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x310 CALLDATASIZE PUSH1 0x4 PUSH2 0x435F JUMP JUMPDEST PUSH2 0x974 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x33F CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x98B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x35E CALLDATASIZE PUSH1 0x4 PUSH2 0x4389 JUMP JUMPDEST PUSH2 0x997 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x3B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x43A9 JUMP JUMPDEST PUSH2 0xA32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3F4 PUSH2 0xA57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x444 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x44B1 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x463 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x472 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x491 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0xB14 JUMP JUMPDEST PUSH2 0x363 PUSH2 0x4A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4525 JUMP JUMPDEST PUSH2 0xC94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x4C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4389 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4DC PUSH2 0xD24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x4571 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0xD7C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x508 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x517 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A5 JUMP JUMPDEST PUSH2 0xD97 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x527 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x536 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0xDF4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3F4 PUSH1 0x20 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x55A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x569 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E0 JUMP JUMPDEST PUSH2 0xE1A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x588 CALLDATASIZE PUSH1 0x4 PUSH2 0x4525 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5AC PUSH2 0x5A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x464E JUMP JUMPDEST PUSH2 0x1158 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x5DF CALLDATASIZE PUSH1 0x4 PUSH2 0x467F JUMP JUMPDEST PUSH2 0x11B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x5FE CALLDATASIZE PUSH1 0x4 PUSH2 0x473E JUMP JUMPDEST PUSH2 0x11D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x61D CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x645 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x654 CALLDATASIZE PUSH1 0x4 PUSH2 0x45A5 JUMP JUMPDEST PUSH2 0x1429 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x664 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA PUSH2 0x1475 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x678 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x687 CALLDATASIZE PUSH1 0x4 PUSH2 0x476F JUMP JUMPDEST PUSH2 0x14B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x697 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x6A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4886 JUMP JUMPDEST PUSH2 0x1ACA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x315 PUSH2 0x6C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x435F JUMP JUMPDEST PUSH2 0x1BE2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2CA 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 0x705 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x714 CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x1BEF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x724 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x733 CALLDATASIZE PUSH1 0x4 PUSH2 0x499D JUMP JUMPDEST PUSH2 0x1BFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x743 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x752 CALLDATASIZE PUSH1 0x4 PUSH2 0x499D JUMP JUMPDEST PUSH2 0x1C48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x762 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x363 PUSH2 0x771 CALLDATASIZE PUSH1 0x4 PUSH2 0x473E JUMP JUMPDEST PUSH2 0x1C95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x790 CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1EE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x7AF CALLDATASIZE PUSH1 0x4 PUSH2 0x4334 JUMP JUMPDEST PUSH2 0x1F0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1F18 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 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 0x2A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x81D CALLDATASIZE PUSH1 0x4 PUSH2 0x450A JUMP JUMPDEST PUSH2 0x1F2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x836 PUSH2 0x1F73 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2AD SWAP2 SWAP1 PUSH2 0x49DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x85D CALLDATASIZE PUSH1 0x4 PUSH2 0x4A0D JUMP JUMPDEST PUSH2 0x1FB9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A3 PUSH2 0x87C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A39 JUMP JUMPDEST PUSH2 0x2002 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x88C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4DC PUSH2 0x21F2 JUMP JUMPDEST PUSH0 PUSH2 0x89E PUSH2 0x222D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8E1 SWAP1 PUSH2 0x4A62 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 0x90D SWAP1 PUSH2 0x4A62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x958 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x92F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x958 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 0x93B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH0 PUSH2 0x22A8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x981 DUP2 DUP6 DUP6 PUSH2 0x22FF JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH1 0x1 PUSH2 0x2311 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x9AE DUP3 PUSH2 0x235F 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 0x9CF DUP4 PUSH2 0x235F 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 0xA3F DUP6 DUP3 DUP6 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0xA4A DUP6 DUP6 DUP6 PUSH2 0x23E2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xA80 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x4AAE JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA93 DUP5 DUP5 DUP5 PUSH2 0x243F JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP6 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xAAA JUMPI PUSH2 0xAAA PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xAD5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB02 DUP5 DUP5 PUSH1 0x2 DUP9 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xAF0 JUMPI PUSH2 0xAF0 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x255D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x60 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0xB45 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0xC7A JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0xB5D JUMPI PUSH2 0xB5D PUSH2 0x4AC7 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 0xBAC 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 0xBD0 SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 SUB PUSH2 0xC6A JUMPI DUP3 SLOAD DUP4 SWAP1 DUP2 SWAP1 PUSH2 0xBE5 SWAP1 PUSH2 0x4A62 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 0xC11 SWAP1 PUSH2 0x4A62 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC5C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC33 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC5C 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 0xC3F 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 0xC73 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xB18 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 0xC9C PUSH2 0x263B JUMP JUMPDEST PUSH2 0xCA6 DUP3 DUP3 PUSH2 0x26E4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 DUP4 SWAP1 DUP4 PUSH2 0xCD3 DUP4 DUP6 PUSH2 0x4B0A 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 0xD2C PUSH2 0x42D5 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 0xD44 JUMPI SWAP1 POP POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xD85 PUSH2 0x27A0 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xDA2 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xDD4 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xDDE DUP6 PUSH2 0x1F0D JUMP JUMPDEST SWAP1 POP PUSH2 0xDEC CALLER DUP6 DUP8 DUP5 PUSH2 0x27E9 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 0x4F41 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 0xE31 JUMPI PUSH2 0xE31 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0xE5C 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 0xE8B JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xE7D JUMPI PUSH2 0xE7D PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF01 JUMPI DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xEAD JUMPI PUSH2 0xEAD PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0xEC8 JUMPI POP DUP6 PUSH1 0xFF AND DUP2 EQ ISZERO JUMPDEST ISZERO PUSH2 0xEF1 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 0xDCB JUMP JUMPDEST PUSH2 0xEFA DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xE5E JUMP JUMPDEST POP PUSH2 0xF16 DUP2 DUP6 DUP6 PUSH2 0xF10 PUSH2 0x2838 JUMP JUMPDEST DUP7 PUSH2 0x2857 JUMP JUMPDEST DUP4 PUSH1 0x2 DUP7 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0xF2D JUMPI PUSH2 0xF2D PUSH2 0x4AC7 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 0xF7A 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 0xFA9 JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xF9B JUMPI PUSH2 0xF9B PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x100F JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0xFCB JUMPI PUSH2 0xFCB PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xFFF 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 0xDCB JUMP JUMPDEST PUSH2 0x1008 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF7C JUMP JUMPDEST PUSH1 0x1F NOT DUP2 ADD PUSH2 0x1034 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 0x1048 JUMPI PUSH2 0x1048 PUSH2 0x4AC7 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 0x1072 DUP2 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1084 JUMPI PUSH2 0x1084 PUSH2 0x4AC7 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 0x10B1 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x10C4 JUMPI PUSH2 0x10C4 PUSH2 0x4AC7 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 0x10FF PUSH2 0x10EF PUSH2 0x2838 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH2 0x29A5 JUMP JUMPDEST PUSH2 0x1112 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x2A37 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 0x1170 JUMPI PUSH2 0x1170 PUSH2 0x4AC7 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 PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x11C9 DUP4 PUSH5 0xFFFFFFFFFF DUP5 AND PUSH2 0x4B79 JUMP JUMPDEST PUSH2 0xA50 SWAP1 PUSH1 0x80 DUP6 SWAP1 SHL PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x11DF PUSH2 0x42D5 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1204 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 0x13AF JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1224 JUMPI PUSH2 0x1224 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x127D JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1255 JUMPI PUSH2 0x1255 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1270 JUMPI PUSH2 0x1270 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x129B 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 0x12AE JUMPI PUSH2 0x12AE PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x12C9 JUMPI PUSH2 0x12C9 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1310 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI PUSH2 0x12E5 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xC41FDBB9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x1325 JUMPI PUSH2 0x1325 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1340 JUMPI PUSH2 0x1340 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x135E JUMPI PUSH2 0x135E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1372 SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x1384 JUMPI PUSH2 0x1384 PUSH2 0x4AC7 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 0x1204 JUMP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x13DC JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x13CE JUMPI PUSH2 0x13CE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x13FA 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 0xA25 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1434 DUP4 PUSH2 0x1EE1 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x145D JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1467 DUP6 PUSH2 0x1BEF JUMP JUMPDEST SWAP1 POP PUSH2 0xDEC CALLER DUP6 DUP4 DUP9 PUSH2 0x27E9 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x8E1 SWAP1 PUSH2 0x4A62 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP4 AND LT PUSH2 0x14D7 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 0x14EE JUMPI PUSH2 0x14EE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP1 PUSH2 0x1519 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 0x1537 JUMPI POP PUSH2 0x1534 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x1555 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 0x156F JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST ISZERO PUSH2 0x1590 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 0x159C DUP5 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND SWAP1 POP JUMPDEST PUSH1 0x20 DUP2 LT DUP1 ISZERO PUSH2 0x15CF JUMPI POP PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x15C1 JUMPI PUSH2 0x15C1 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x163E JUMPI PUSH1 0x2 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x15E7 JUMPI PUSH2 0x15E7 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 PUSH2 0x15FF PUSH1 0x1 DUP5 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x160F JUMPI PUSH2 0x160F PUSH2 0x4AC7 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 0x1637 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x15A2 JUMP JUMPDEST PUSH0 PUSH1 0x2 PUSH2 0x164C PUSH1 0x1 DUP5 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x165C JUMPI PUSH2 0x165C PUSH2 0x4AC7 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 0x1693 JUMPI PUSH2 0x1693 PUSH2 0x4AC7 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 0x16B7 JUMPI POP PUSH1 0x20 DUP4 LT JUMPDEST ISZERO PUSH2 0x19E9 JUMPI DUP1 ISZERO PUSH2 0x177B JUMPI PUSH2 0x16CD DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x16E3 JUMPI PUSH2 0x16E3 PUSH2 0x4AC7 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 0x1704 JUMPI PUSH0 PUSH2 0x1707 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x171A JUMPI PUSH2 0x171A PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x173A SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x1746 DUP2 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1756 JUMPI PUSH2 0x1756 PUSH2 0x4AC7 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 0x184C JUMP JUMPDEST PUSH2 0x1786 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x179C JUMPI PUSH2 0x179C PUSH2 0x4AC7 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 0x17BF JUMPI POP PUSH1 0x1 PUSH2 0x184C JUMP JUMPDEST PUSH2 0x17CA DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x17E0 JUMPI PUSH2 0x17E0 PUSH2 0x4AC7 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 0x184C JUMPI PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1810 JUMPI PUSH2 0x1810 PUSH2 0x4AC7 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 0x1833 SWAP2 SWAP1 PUSH2 0x4BE4 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 0x1909 JUMPI PUSH2 0x185D DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1872 JUMPI PUSH2 0x1872 PUSH2 0x4AC7 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 0x1893 JUMPI PUSH0 PUSH2 0x1896 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x18A8 JUMPI PUSH2 0x18A8 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x18C8 SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH0 PUSH2 0x18D4 PUSH1 0x1 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x18E4 JUMPI PUSH2 0x18E4 PUSH2 0x4AC7 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 0x19D9 JUMP JUMPDEST PUSH2 0x1914 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x1929 JUMPI PUSH2 0x1929 PUSH2 0x4AC7 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 0x194D JUMPI PUSH1 0x1 SWAP2 POP PUSH2 0x19D9 JUMP JUMPDEST PUSH2 0x1958 DUP7 PUSH1 0x1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0xFF AND PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x196D JUMPI PUSH2 0x196D PUSH2 0x4AC7 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 0x19D9 JUMPI PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x199D JUMPI PUSH2 0x199D PUSH2 0x4AC7 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 0x19C0 SWAP2 SWAP1 PUSH2 0x4BE4 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 0x19E2 DUP4 PUSH2 0x4AF2 JUMP JUMPDEST SWAP3 POP PUSH2 0x1680 JUMP JUMPDEST PUSH0 DUP1 PUSH2 0x19F6 PUSH1 0x1 DUP7 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1A06 JUMPI PUSH2 0x1A06 PUSH2 0x4AC7 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 0x1A35 SWAP2 SWAP1 PUSH2 0x4BD1 JUMP JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x1A45 JUMPI PUSH2 0x1A45 PUSH2 0x4AC7 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 0x1A81 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2AEE 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B0E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x1B29 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1B37 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1B55 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 0x1B7F JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1B8E DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2C13 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x1BD4 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 0x981 DUP2 DUP6 DUP6 PUSH2 0x23E2 JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH1 0x1 PUSH2 0x22A8 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C06 DUP4 PUSH2 0x1F18 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1C2F JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1C39 DUP7 PUSH2 0x98B JUMP JUMPDEST SWAP1 POP PUSH2 0xB02 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x2C4B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1C53 DUP4 PUSH2 0x1F2E JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x1C7C JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH0 PUSH2 0x1C86 DUP7 PUSH2 0x963 JUMP JUMPDEST SWAP1 POP PUSH2 0xB02 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x2C4B JUMP JUMPDEST PUSH2 0x1C9D PUSH2 0x42D5 JUMP JUMPDEST DUP2 MLOAD PUSH0 SWAP1 PUSH1 0x20 LT ISZERO PUSH2 0x1CC2 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 0x1E61 JUMPI PUSH1 0x20 PUSH1 0xFF AND DUP4 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1CE8 JUMPI PUSH2 0x1CE8 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x1D44 JUMPI POP PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x2 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1D1C JUMPI PUSH2 0x1D1C PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D37 JUMPI PUSH2 0x1D37 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x1D62 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 0x1D78 JUMPI PUSH2 0x1D78 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1D93 JUMPI PUSH2 0x1D93 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD ISZERO PUSH2 0x1DB2 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x12E5 JUMPI PUSH2 0x12E5 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP5 DUP4 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x1DCA JUMPI PUSH2 0x1DCA PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1DE5 JUMPI PUSH2 0x1DE5 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP3 MLOAD DUP4 SWAP1 PUSH1 0xFF DUP4 AND SWAP1 DUP2 LT PUSH2 0x1E06 JUMPI PUSH2 0x1E06 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1E1A SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x1E30 JUMPI PUSH2 0x1E30 PUSH2 0x4AC7 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 0x1E5A SWAP1 PUSH2 0x4BFD JUMP JUMPDEST SWAP1 POP PUSH2 0x1CC2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0xFF DUP3 AND LT DUP1 ISZERO PUSH2 0x1E94 JUMPI POP PUSH0 PUSH1 0x2 PUSH1 0xFF DUP4 AND PUSH1 0x20 DUP2 LT PUSH2 0x1E86 JUMPI PUSH2 0x1E86 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1EB2 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 0xA25 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1EEB PUSH2 0x25AF JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x1F04 JUMPI PUSH2 0x1EFF DUP2 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH0 NOT SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F23 DUP4 PUSH2 0x2D5B JUMP JUMPDEST SWAP1 POP PUSH2 0xA50 DUP2 PUSH2 0x2D6E JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x1F39 DUP4 PUSH2 0x2E03 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F46 DUP3 PUSH0 PUSH2 0x22A8 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x1F52 DUP3 PUSH2 0x2D6E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1F6A JUMPI PUSH2 0x1F65 DUP2 PUSH0 PUSH2 0x2311 JUMP JUMPDEST PUSH2 0xB02 JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1F7B PUSH2 0x42D5 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 0x1F92 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 0x201A JUMPI POP PUSH1 0x20 PUSH1 0xFF DUP5 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x2038 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 0x204F JUMPI PUSH2 0x204F PUSH2 0x4AC7 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 0x2073 JUMPI PUSH2 0x2073 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 POP DUP3 AND ISZERO DUP1 PUSH2 0x2097 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x20B5 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 0x20D2 JUMPI PUSH2 0x20CF DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH0 SUB PUSH2 0x20E3 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x20F5 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x212A JUMPI PUSH2 0x210E DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3CE011D5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x213C DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x2171 JUMPI PUSH2 0x2155 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x50A3E375 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH2 0x2185 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP6 PUSH0 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x219A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 PUSH0 PUSH2 0x2FA5 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 0x21E0 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 0x21FA PUSH2 0x42D5 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 0xD44 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 0x2244 JUMPI PUSH2 0x2244 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x225D JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x22A4 JUMPI PUSH2 0x2288 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2278 JUMPI PUSH2 0x2278 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A85 JUMP JUMPDEST PUSH2 0x2292 SWAP1 DUP4 PUSH2 0x4B52 JUMP JUMPDEST SWAP2 POP PUSH2 0x229D DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2230 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH2 0x22B4 PUSH2 0x895 JUMP JUMPDEST PUSH2 0x22BF SWAP1 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x22CA PUSH0 PUSH1 0xA PUSH2 0x4CFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x22F6 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x30C6 JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3108 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH2 0x2320 DUP3 PUSH1 0xA PUSH2 0x4CFE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x234C SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH2 0x2354 PUSH2 0x895 JUMP JUMPDEST PUSH2 0x22F6 SWAP1 PUSH1 0x1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 GT ISZERO PUSH2 0x22A4 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 0xDCB JUMP JUMPDEST PUSH0 PUSH2 0x239D DUP5 DUP5 PUSH2 0x1FB9 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x23DC JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x23CE JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 JUMP JUMPDEST PUSH2 0x23DC DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x3108 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x240B JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 DUP4 PUSH2 0x31EB 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 0x247C 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 0x24A0 SWAP2 SWAP1 PUSH2 0x4D0C JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB7009613 CALLER ADDRESS PUSH2 0x24BE DUP10 DUP10 PUSH2 0x1158 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 0x2510 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 0x2534 SWAP2 SWAP1 PUSH2 0x4D27 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH2 0x2556 JUMPI PUSH1 0x40 MLOAD PUSH3 0xD1953B PUSH1 0xE3 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xDEC DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D5C 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 0x3311 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x25C7 JUMPI PUSH2 0x25C7 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x25E0 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2636 JUMPI PUSH2 0x2614 DUP4 PUSH2 0x260F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x25FF JUMPI PUSH2 0x25FF PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x337A JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 PUSH2 0x2626 JUMPI PUSH0 NOT SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH2 0x262F DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x25B3 JUMP JUMPDEST POP POP SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x26C1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x26B5 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 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 0x26DF 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 0x273E JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x273B SWAP2 DUP2 ADD SWAP1 PUSH2 0x4ADB JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2766 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 0xDCB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x2796 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x230C DUP4 DUP4 PUSH2 0x33A1 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x27F2 PUSH2 0x33F6 JUMP JUMPDEST SWAP1 POP PUSH2 0x27FD DUP4 PUSH2 0x3428 JUMP JUMPDEST PUSH0 DUP3 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2826 SWAP1 DUP5 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2556 SWAP1 POP DUP6 DUP6 DUP6 DUP6 PUSH2 0x3454 JUMP JUMPDEST PUSH0 PUSH2 0x89E PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x2861 DUP5 DUP4 PUSH2 0x29A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x28D3 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 0x28A9 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 0x28CD SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x28DE DUP6 DUP3 PUSH2 0x2AEE JUMP JUMPDEST PUSH2 0x28E8 DUP5 DUP5 PUSH2 0x2A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x295A 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 0x2930 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 0x2954 SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP4 PUSH2 0x2FA5 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 0x29EC 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 0x2A10 SWAP2 SWAP1 PUSH2 0x4D0C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE76673EF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x230C DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A4B SWAP2 SWAP1 PUSH2 0x4322 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 0x3311 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 0x2ACA 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 0x96E SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BC9 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 0x2B45 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2B7D 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 0x2B82 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x23DC JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2BBB SWAP2 SWAP1 PUSH2 0x4322 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 0x230C 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 0x3311 JUMP JUMPDEST PUSH2 0x2C1B PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x2C23 PUSH2 0x34B2 JUMP JUMPDEST PUSH2 0x2C2C DUP6 PUSH2 0x34BA JUMP JUMPDEST PUSH2 0x2C36 DUP8 DUP8 PUSH2 0x34CB JUMP JUMPDEST PUSH2 0x2C42 DUP5 DUP5 DUP5 DUP5 PUSH2 0x34DD JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2C54 PUSH2 0x33F6 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x2C62 PUSH1 0x1 DUP4 PUSH2 0x4BD1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F01 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SLOAD DUP6 DUP4 MSTORE SWAP1 DUP3 KECCAK256 SLOAD SWAP3 SWAP4 POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP3 PUSH2 0x2C9F DUP9 PUSH2 0x4D8D JUMP JUMPDEST PUSH2 0x2CA9 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST PUSH2 0x2CB3 SWAP2 SWAP1 PUSH2 0x4B0A JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 SLT DUP1 ISZERO PUSH2 0x2CDC JUMPI POP DUP2 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x2CDA DUP3 PUSH2 0x4D8D JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x2D15 JUMPI DUP2 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 0xDCB JUMP JUMPDEST PUSH2 0x2D1E DUP7 PUSH2 0x3428 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 SWAP1 PUSH2 0x2D3D SWAP1 DUP5 SWAP1 PUSH2 0x4DA7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x2D50 SWAP1 POP DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x3A5E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96E PUSH2 0x2D68 DUP4 PUSH2 0xDF4 JUMP JUMPDEST PUSH0 PUSH2 0x22A8 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x2D86 JUMPI PUSH2 0x2D86 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2D9F JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x2DFC JUMPI PUSH2 0x2DCE DUP4 PUSH2 0x260F PUSH1 0x2 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x2DBE JUMPI PUSH2 0x2DBE PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2E0D JUMP JUMPDEST SWAP4 POP SWAP2 POP DUP2 ISZERO DUP1 PUSH2 0x2DDF JUMPI POP DUP4 DUP4 LT ISZERO JUMPDEST ISZERO PUSH2 0x2DEC JUMPI POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2DF5 DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D72 JUMP JUMPDEST POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x96E DUP3 PUSH2 0xDF4 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 0x2AAF 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 0x2AAF JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x2F4B JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2E8F 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 0x2EC4 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2EFC 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 0x2F01 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2F43 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2F3A SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA50 JUMP JUMPDEST PUSH2 0x2F9B DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2F61 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 0x3311 JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA50 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x3076 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2FCB 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 0x3000 SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3038 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 0x303D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2F43 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2F3A SWAP2 SWAP1 PUSH2 0x4322 JUMP JUMPDEST PUSH2 0x2F9B DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x308C 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 0x3311 JUMP JUMPDEST PUSH0 PUSH2 0x30F3 PUSH2 0x30D3 DUP4 PUSH2 0x3A74 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x30EE JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x30E9 JUMPI PUSH2 0x30E9 PUSH2 0x4B65 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x30FE DUP7 DUP7 DUP7 PUSH2 0x3AA0 JUMP JUMPDEST PUSH2 0xB02 SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x313F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3168 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB 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 0x2556 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 0x31DC 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 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3225 JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x321A SWAP2 SWAP1 PUSH2 0x4B52 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x3282 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 0x3264 JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B31 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 0x32A0 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x32BE 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 0x3303 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 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x332D SWAP2 SWAP1 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x3365 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 0x336A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB02 DUP6 DUP4 DUP4 PUSH2 0x3B56 JUMP JUMPDEST PUSH0 DUP1 DUP4 DUP4 ADD DUP5 DUP2 LT ISZERO PUSH2 0x3393 JUMPI PUSH0 PUSH0 SWAP3 POP SWAP3 POP POP PUSH2 0x339A JUMP JUMPDEST PUSH1 0x1 SWAP3 POP SWAP1 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x33AA DUP3 PUSH2 0x3BAD 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 0x33EE JUMPI PUSH2 0x230C DUP3 DUP3 PUSH2 0x3311 JUMP JUMPDEST PUSH2 0xCA6 PUSH2 0x3C10 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F21 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x341A DUP2 TIMESTAMP PUSH2 0x4B79 JUMP JUMPDEST PUSH2 0xA80 SWAP1 PUSH1 0x80 DUP4 SWAP1 SHL PUSH2 0x4B52 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP3 GT ISZERO PUSH2 0x22A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x123BAF03 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0x3460 DUP5 DUP5 DUP5 DUP5 PUSH2 0x3C2F JUMP JUMPDEST PUSH2 0x23DC DUP3 PUSH2 0x3CAC JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x26DF PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x34C2 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0x26E1 DUP2 PUSH2 0x3DC3 JUMP JUMPDEST PUSH2 0x34D3 PUSH2 0x3469 JUMP JUMPDEST PUSH2 0xCA6 DUP3 DUP3 PUSH2 0x3E33 JUMP JUMPDEST DUP4 MLOAD ISZERO DUP1 PUSH2 0x34EC JUMPI POP DUP4 MLOAD PUSH1 0x20 LT JUMPDEST DUP1 PUSH2 0x34F9 JUMPI POP DUP3 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3506 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x3513 JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x3534 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 0x353C PUSH2 0x42D5 JUMP JUMPDEST PUSH2 0x3544 PUSH2 0x42D5 JUMP JUMPDEST PUSH0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x39E7 JUMPI PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x356B JUMPI PUSH2 0x356B PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x359A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2711B74D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x35D6 PUSH2 0x35A5 PUSH2 0x2838 JUMP JUMPDEST DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35B7 JUMPI PUSH2 0x35B7 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x29A5 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3676 JUMPI DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x35F2 JUMPI PUSH2 0x35F2 PUSH2 0x4AC7 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 0x3615 JUMPI PUSH2 0x3615 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x366E JUMPI DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x363D JUMPI PUSH2 0x363D PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0xB5A9314F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x35D8 JUMP JUMPDEST POP DUP7 MLOAD DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x368B JUMPI PUSH2 0x368B PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x36D2 JUMPI POP DUP3 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x36B1 JUMPI PUSH2 0x36B1 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x36CC JUMPI PUSH2 0x36CC PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x3714 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x36E9 JUMPI PUSH2 0x36E9 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x306CCD5D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x3728 JUMPI PUSH2 0x3728 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND LT ISZERO DUP1 PUSH2 0x376F JUMPI POP DUP2 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x374E JUMPI PUSH2 0x374E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3769 JUMPI PUSH2 0x3769 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL ADD MLOAD JUMPDEST ISZERO PUSH2 0x37B1 JUMPI DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3786 JUMPI PUSH2 0x3786 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x27769241 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDCB 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 0x37C6 JUMPI PUSH2 0x37C6 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x37E1 JUMPI PUSH2 0x37E1 PUSH2 0x4AC7 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 0x3805 JUMPI PUSH2 0x3805 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3820 JUMPI PUSH2 0x3820 PUSH2 0x4AC7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP1 SWAP3 MUL ADD MSTORE DUP7 MLOAD DUP8 SWAP1 DUP3 SWAP1 DUP2 LT PUSH2 0x383E JUMPI PUSH2 0x383E PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x2 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x3859 JUMPI PUSH2 0x3859 PUSH2 0x4AC7 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 0x388F JUMPI PUSH2 0x388F PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x38A3 SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x38B5 JUMPI PUSH2 0x38B5 PUSH2 0x4AC7 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 0x38E7 JUMPI PUSH2 0x38E7 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x38FB SWAP2 SWAP1 PUSH2 0x4AAE JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x20 DUP2 LT PUSH2 0x390E JUMPI PUSH2 0x390E PUSH2 0x4AC7 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 0x397C DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3943 JUMPI PUSH2 0x3943 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x395D JUMPI PUSH2 0x395D PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2A37 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x398E JUMPI PUSH2 0x398E PUSH2 0x4AC7 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 0x39D7 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 0x3546 JUMP JUMPDEST POP PUSH32 0x193FC4E628C27AE3CA098952DFC16A40425B44E7B0A97F4CC59D0F267F47CAEC DUP5 PUSH1 0x40 MLOAD PUSH2 0x3A17 SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x3C56B6BCA0D55EDA581F8F2819D1F85D3B91CFCC24914A8FA39D301796D8964C DUP4 PUSH1 0x40 MLOAD PUSH2 0x3A4E SWAP2 SWAP1 PUSH2 0x4B8C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3A67 DUP3 PUSH2 0x3E83 JUMP JUMPDEST PUSH2 0x2556 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x3F96 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3A89 JUMPI PUSH2 0x3A89 PUSH2 0x4DCD JUMP JUMPDEST PUSH2 0x3A93 SWAP2 SWAP1 PUSH2 0x4DE1 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x3AD4 JUMPI DUP4 DUP3 DUP2 PUSH2 0x3ACA JUMPI PUSH2 0x3ACA PUSH2 0x4B65 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA50 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3AEB JUMPI PUSH2 0x3AEB PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x404A 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3B66 JUMPI PUSH2 0x1EFF DUP3 PUSH2 0x405B JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3B7D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3BA6 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 0xDCB JUMP JUMPDEST POP DUP1 PUSH2 0xA50 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x3BE2 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 0xDCB JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F61 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 0x26DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x3C54 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x4084 JUMP JUMPDEST PUSH2 0x3C5E DUP5 DUP4 PUSH2 0x40EB JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x31DC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3CE4 JUMPI POP PUSH0 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3CCB JUMPI PUSH2 0x3CCB PUSH2 0x4AC7 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 0x3CF0 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3DA3 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 PUSH0 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3D0C JUMPI PUSH2 0x3D0C PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3D2C SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3D3F JUMPI PUSH2 0x3D3F PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3D5F DUP5 PUSH2 0x3D5A DUP5 PUSH2 0x2E3B JUMP JUMPDEST PUSH2 0x411F JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3D6F JUMPI POP POP PUSH2 0x3D93 JUMP JUMPDEST PUSH2 0x3D83 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2FA5 JUMP JUMPDEST POP PUSH2 0x3D8E DUP2 DUP6 PUSH2 0x4BD1 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3D9C DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CAF JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x285A546D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3DCB PUSH2 0x3469 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x3DE4 DUP5 PUSH2 0x412E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x3DF4 JUMPI PUSH1 0x12 PUSH2 0x3DF6 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 0x3E3B PUSH2 0x3469 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F41 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x3E74 DUP5 DUP3 PUSH2 0x4E46 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0x23DC DUP4 DUP3 PUSH2 0x4E46 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3EBC JUMPI POP PUSH1 0x1 DUP2 PUSH1 0x20 DUP2 LT PUSH2 0x3EA3 JUMPI PUSH2 0x3EA3 PUSH2 0x4AC7 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 0x3EC8 JUMPI POP PUSH1 0x20 DUP2 LT JUMPDEST ISZERO PUSH2 0x3F76 JUMPI PUSH0 PUSH1 0x2 PUSH1 0x1 DUP1 DUP5 PUSH1 0x20 DUP2 LT PUSH2 0x3EE4 JUMPI PUSH2 0x3EE4 PUSH2 0x4AC7 JUMP JUMPDEST PUSH1 0x20 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3F04 SWAP2 SWAP1 PUSH2 0x4BE4 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP2 LT PUSH2 0x3F17 JUMPI PUSH2 0x3F17 PUSH2 0x4AC7 JUMP JUMPDEST ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH0 PUSH2 0x3F32 DUP5 PUSH2 0x3D5A DUP5 PUSH2 0x2E0D JUMP JUMPDEST SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x3F42 JUMPI POP POP PUSH2 0x3F66 JUMP JUMPDEST PUSH2 0x3F56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP3 PUSH0 PUSH2 0x2E69 JUMP JUMPDEST POP PUSH2 0x3F61 DUP2 DUP6 PUSH2 0x4BD1 JUMP JUMPDEST SWAP4 POP POP POP JUMPDEST PUSH2 0x3F6F DUP2 PUSH2 0x4AF2 JUMP JUMPDEST SWAP1 POP PUSH2 0x3E86 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xCA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x351DC55D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x4F81 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x3FC2 JUMPI PUSH2 0x3FC2 DUP5 DUP8 DUP5 PUSH2 0x2392 JUMP JUMPDEST PUSH2 0x3FCC DUP5 DUP4 PUSH2 0x4204 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x3FE2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x4238 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x403A 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 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x406B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x23DC SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x4269 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4114 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0xCA6 PUSH0 DUP4 DUP4 PUSH2 0x31EB JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x4174 SWAP2 PUSH2 0x4D77 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x41AC 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 0x41B1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x41C5 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x41F8 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x41DF SWAP2 SWAP1 PUSH2 0x4ADB JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x41F6 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x422D JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDCB JUMP JUMPDEST PUSH2 0xCA6 DUP3 PUSH0 DUP4 PUSH2 0x31EB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x230C SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x40B9 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x4288 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x429F JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x42AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x23DC 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 0xDCB 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 0xA50 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42F4 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4344 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 0x26E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4370 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x437B DUP2 PUSH2 0x434B 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 0x439A 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 0x43BB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x43C6 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x43D6 DUP2 PUSH2 0x434B 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 0x43F7 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 0x4438 JUMPI PUSH2 0x4438 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x444F 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 0x446E JUMPI PUSH2 0x446E PUSH2 0x43FC JUMP JUMPDEST POP PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x4483 DUP2 PUSH2 0x4410 JUMP JUMPDEST SWAP2 POP POP DUP3 DUP2 MSTORE DUP6 DUP4 DUP4 ADD GT ISZERO PUSH2 0x4497 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 0x44C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x44CC DUP5 PUSH2 0x43E7 JUMP JUMPDEST SWAP3 POP PUSH2 0x44DA PUSH1 0x20 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4500 DUP7 DUP3 DUP8 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x451A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA50 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4536 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4541 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x455B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4567 DUP6 DUP3 DUP7 ADD PUSH2 0x4440 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 0x459C JUMPI DUP2 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x457A JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x45B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x434B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x26E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x45F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x45FC DUP6 PUSH2 0x43E7 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x460C DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4626 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4632 DUP8 DUP3 DUP9 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x4643 DUP2 PUSH2 0x45D3 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x465F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4668 DUP4 PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH2 0x4676 PUSH1 0x20 DUP5 ADD PUSH2 0x43E7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4690 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x46C3 JUMPI PUSH2 0x46C3 PUSH2 0x43FC JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x46DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x46EF PUSH2 0x46EA DUP3 PUSH2 0x46AB JUMP JUMPDEST PUSH2 0x4410 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 0x4710 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH2 0x4726 DUP2 PUSH2 0x43E7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x4715 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x474E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4763 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xDEC DUP5 DUP3 DUP6 ADD PUSH2 0x46CD JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4780 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4789 DUP4 PUSH2 0x43E7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x45D3 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x43F7 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x47B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x47C1 PUSH2 0x46EA DUP3 PUSH2 0x46AB 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 0x47E2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP1 CALLDATALOAD PUSH2 0x47FA DUP2 PUSH2 0x434B JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x47E7 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4817 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4825 PUSH2 0x46EA DUP3 PUSH2 0x46AB 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 0x4846 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4868 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4877 DUP9 PUSH1 0x20 DUP4 DUP11 ADD ADD PUSH2 0x4440 JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x484B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x489C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48BD DUP11 DUP3 DUP12 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x48D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x48E4 DUP11 DUP3 DUP12 ADD PUSH2 0x4440 JUMP JUMPDEST SWAP7 POP POP PUSH2 0x48F3 PUSH1 0x40 DUP10 ADD PUSH2 0x4799 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x490D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4919 DUP11 DUP3 DUP12 ADD PUSH2 0x47A4 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4934 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4940 DUP11 DUP3 DUP12 ADD PUSH2 0x4808 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x495B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4967 DUP11 DUP3 DUP12 ADD PUSH2 0x46CD JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4982 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x498E DUP11 DUP3 DUP12 ADD PUSH2 0x46CD 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 0x49AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x49C1 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x49D1 DUP2 PUSH2 0x434B 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 0x459C 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 0x49E5 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4A1E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4A29 DUP2 PUSH2 0x434B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x45C8 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4A4B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x4A54 DUP5 PUSH2 0x43E7 JUMP JUMPDEST SWAP3 POP PUSH2 0x43D6 PUSH1 0x20 DUP6 ADD PUSH2 0x43E7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4A76 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4A94 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 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A 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 0x4AEB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x4B03 JUMPI PUSH2 0x4B03 PUSH2 0x4A9A 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 0x4B29 JUMPI PUSH2 0x4B29 PUSH2 0x4A9A 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 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x4B87 JUMPI PUSH2 0x4B87 PUSH2 0x4B65 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 0x4BC6 JUMPI DUP4 MLOAD PUSH1 0xFF AND DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4BA5 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x96E JUMPI PUSH2 0x96E PUSH2 0x4A9A JUMP JUMPDEST PUSH0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 SUB PUSH2 0x4C12 JUMPI PUSH2 0x4C12 PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x4C56 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x4C3A JUMPI PUSH2 0x4C3A PUSH2 0x4A9A JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x4C48 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x4C1F JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x4C6C JUMPI POP PUSH1 0x1 PUSH2 0x96E JUMP JUMPDEST DUP2 PUSH2 0x4C78 JUMPI POP PUSH0 PUSH2 0x96E JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4C8E JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4C98 JUMPI PUSH2 0x4CB4 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x96E JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4CA9 JUMPI PUSH2 0x4CA9 PUSH2 0x4A9A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x96E JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x4CD7 JUMPI POP DUP2 DUP2 EXP PUSH2 0x96E JUMP JUMPDEST PUSH2 0x4CE3 PUSH0 NOT DUP5 DUP5 PUSH2 0x4C1B JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x4CF6 JUMPI PUSH2 0x4CF6 PUSH2 0x4A9A JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA50 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x4C5E JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA50 DUP2 PUSH2 0x434B JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D38 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4D43 DUP2 PUSH2 0x45D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xDEC PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x42F4 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 0x4DA1 JUMPI PUSH2 0x4DA1 PUSH2 0x4A9A 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 0x4DC6 JUMPI PUSH2 0x4DC6 PUSH2 0x4A9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP 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 0x4DF3 JUMPI PUSH2 0x4DF3 PUSH2 0x4B65 JUMP JUMPDEST DUP1 PUSH1 0xFF DUP5 AND MOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x230C JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4E27 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2556 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4E33 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E5F JUMPI PUSH2 0x4E5F PUSH2 0x43FC JUMP JUMPDEST PUSH2 0x4E73 DUP2 PUSH2 0x4E6D DUP5 SLOAD PUSH2 0x4A62 JUMP JUMPDEST DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4EA5 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x4E8E 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 0x2556 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4ED4 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x4EB4 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x4EF1 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 ADD LOG2 0xAD 0xA5 0xD6 PUSH20 0xDBA5EECEA7C7503EE87E29913D0D36AE093E950D PUSH4 0x2F7B8689 0x1F STOP MSTORE 0xC6 ORIGIN SELFBALANCE 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC0773E532DFEDE91F04B12A PUSH20 0xD3D2ACD361424F41F76B4FB79F090161E36B4E00 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH23 0x1BD0ADFBC3D87113074F98C9621E1A113C12F2F43AAA6A SMOD 0xCF 0xA8 0xED SWAP13 LT LOG4 SSTORE PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1154:5796:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4278:109:48;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;4278:109:48;;;;;;;;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;:::-;;;1619:14:75;;1612:22;1594:41;;1582:2;1567:18;5210:186:9;1454:187:75;8777:147:10;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;2674:231:55:-;;;;;;;;;;-1:-1:-1;2674:231:55;;;;;:::i;:::-;;:::i;:::-;;3896:152:9;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;5988:244;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;2978:110:55:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3058:25:55;-1:-1:-1;;;;;3058:25:55;2978:110;;6612:221:10;;;;;;;;;;;;;:::i;:::-;;;2682:4:75;2670:17;;;2652:36;;2640:2;2625:18;6612:221:10;2510:184:75;6877:153:10;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;7014:8:10;6877:153;;-1:-1:-1;;;;;7014:8:10;;;2845:51:75;;2833:2;2818:18;6877:153:10;2699:203:75;9918:404:53;;;;;;;;;;-1:-1:-1;9918:404:53;;;;;:::i;:::-;;:::i;3875:115:48:-;;;;;;;;;;-1:-1:-1;3875:115:48;;;;;:::i;:::-;;:::i;8263:386:53:-;;;;;;;;;;-1:-1:-1;8263:386:53;;;;;:::i;:::-;;:::i;4161:214:8:-;;;;;;:::i;:::-;;:::i;5105:274:55:-;;;;;;;;;;-1:-1:-1;5105:274:55;;;;;:::i;:::-;;:::i;19698:110:53:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3708:134:8:-;;;;;;;;;;;;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;1743:41:53:-;;;;;;;;;;;;1782:2;1743:41;;11182:650;;;;;;;;;;-1:-1:-1;11182:650:53;;;;;:::i;:::-;;:::i;12121:662::-;;;;;;;;;;-1:-1:-1;12121:662:53;;;;;:::i;:::-;;:::i;5566:342:48:-;;;;;;;;;;-1:-1:-1;5566:342:48;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;8967:33:75;;;8949:52;;8937:2;8922:18;5566:342:48;8805:202:75;4278:169:55;;;;;;;;;;-1:-1:-1;4278:169:55;;;;;:::i;:::-;;:::i;15692:733:53:-;;;;;;;;;;-1:-1:-1;15692:733:53;;;;;:::i;:::-;;:::i;3665:123:55:-;;;;;;;;;;-1:-1:-1;3665:123:55;;;;;:::i;:::-;3728:6;3749:34;;;-1:-1:-1;;;;;;;;;;;3749:34:55;;;;;;;3665:123;9603:380:10;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;13159:2217:53:-;;;;;;;;;;-1:-1:-1;13159:2217:53;;;;;:::i;:::-;;:::i;2114:392:48:-;;;;;;;;;;-1:-1:-1;2114:392:48;;;;;:::i;:::-;;:::i;4472:178:9:-;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;10488:405::-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;16749:744:53:-;;;;;;;;;;-1:-1:-1;16749:744:53;;;;;:::i;:::-;;:::i;4021:226:48:-;;;;;;;;;;-1:-1:-1;4021:226:48;;;;;:::i;:::-;;:::i;7309:148:10:-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;3273:182:48:-;;;;;;;;;;-1:-1:-1;3273:182:48;;;;;:::i;:::-;;:::i;3195:99:55:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3267:22:55;-1:-1:-1;;;3267:22:55;;-1:-1:-1;;;;;3267:22:55;3195:99;;3486:358:48;;;;;;;;;;-1:-1:-1;3486:358:48;;;;;:::i;:::-;;:::i;19143:114:53:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;17964:1009:53:-;;;;;;;;;;-1:-1:-1;17964:1009:53;;;;;:::i;:::-;;:::i;19423:108::-;;;;;;;;;;;;;:::i;4278:109:48:-;4339:14;4368;:12;:14::i;:::-;4361:21;;4278:109;:::o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;:::-;7600:52;7511:148;-1:-1:-1;;7511:148:10:o;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;2674:231:55:-;-1:-1:-1;;;;;;;;;;;2804:17:55;:5;:15;:17::i;:::-;2794:27;;-1:-1:-1;;;;;2794:27:55;;;-1:-1:-1;;;2794:27:55;;;;;;2840:20;:8;:18;:20::i;:::-;2827:33;;-1:-1:-1;;2827:33:55;-1:-1:-1;;;;;2827:33:55;;;;;;;2871:29;;;17174:25:75;;;17230:2;17215:18;;17208:34;;;2871:29:55;;17147:18:75;2871:29:55;;;;;;;;2743:162;2674:231;;:::o;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;:::-;6778:48;;;6612:221;:::o;9918:404:53:-;10046:12;10066:57;10090:13;10105:6;10113:9;10066:23;:57::i;:::-;10129:24;10156:11;10168:13;10156:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10156:26:53;;-1:-1:-1;10156:26:53;10188:61;;10232:17;;-1:-1:-1;;;10232:17:53;;;;;;;;;;;10188:61;10262:55;10299:6;10307:9;10262:11;10274:13;10262:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;10262:26:53;;:55;:36;:55::i;:::-;10255:62;9918:404;-1:-1:-1;;;;;9918:404:53:o;3875:115:48:-;3942:11;3968:17;:15;:17::i;8263:386:53:-;8331:12;8356:9;8351:253;8409:1;8367:11;8379:1;8367:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;8367:14:53;:45;;;;:67;;-1:-1:-1;1782:2:53;8416:18;;8367:67;8351:253;;;8461:11;8473:1;8461:14;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;8461:14:53;-1:-1:-1;;;;;8461:26:53;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8453:4;:36;8449:149;;8575:14;;8560:4;;;;8575:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8263:386;;;:::o;8449:149::-;8436:3;;;:::i;:::-;;;8351:253;;;;8616:28;;-1:-1:-1;;;8616:28:53;;;;;;;;;;;4161:214:8;2655:13;:11;:13::i;:::-;4322:46:::1;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;5105:274:55:-;5180:15;5221:34;;;-1:-1:-1;;;;;;;;;;;5221:34:55;;;;;;;;5310:11;;5180:15;5272:49;5310:11;5221:34;5272:49;:::i;:::-;;;;;-1:-1:-1;5332:42:55;;;18449:25:75;;;18505:2;18490:18;;18483:34;;;18533:18;;;18526:34;;;5272:49:55;;-1:-1:-1;5332:42:55;;-1:-1:-1;18437:2:75;18422:18;5332:42:55;;;;;;;5197:182;5105:274;;;;:::o;19698:110:53:-;19746:28;;:::i;:::-;19782:21;;;;;;;;;;;19789:14;;19782:21;;19789:14;-1:-1:-1;19782:21:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19698:110;:::o;3708:134:8:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;11182:650:53:-;11341:24;11368:11;11380:13;11368:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11368:26:53;;-1:-1:-1;11368:26:53;11400:61;;11444:17;;-1:-1:-1;;;11444:17:53;;;;;;;;;;;11400:61;11472:9;11467:200;1782:2;11483:18;;:67;;;;-1:-1:-1;11547:1:53;11505:11;11517:1;11505:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11505:14:53;:45;;11483:67;11467:200;;;11587:11;-1:-1:-1;;;;;11569:29:53;:11;11581:1;11569:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;11569:14:53;:29;:51;;;;;11607:13;11602:18;;:1;:18;;11569:51;11565:95;;;11629:31;;-1:-1:-1;;;11629:31:53;;-1:-1:-1;;;;;2863:32:75;;11629:31:53;;;2845:51:75;2818:18;;11629:31:53;2699:203:75;11565:95:53;11552:3;;;:::i;:::-;;;11467:200;;;;11672:109;11708:8;11718:11;11731:16;11764:8;:6;:8::i;:::-;11775:5;11672:35;:109::i;:::-;11816:11;11787;11799:13;11787:26;;;;;;;;;:::i;:::-;;:40;;-1:-1:-1;;;;;;11787:40:53;-1:-1:-1;;;;;11787:40:53;;;;;;;;;;-1:-1:-1;;;;;11182:650:53:o;12121:662::-;-1:-1:-1;;;;;12227:34:53;;12223:64;;12270:17;;-1:-1:-1;;;12270:17:53;;;;;;;;;;;12223:64;12293:9;12308:169;1782:2;12315:18;;:67;;;;-1:-1:-1;12379:1:53;12337:11;12349:1;12337:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12337:14:53;:45;;12315:67;12308:169;;;12419:11;-1:-1:-1;;;;;12401:29:53;:11;12413:1;12401:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;12401:14:53;:29;12397:73;;12439:31;;-1:-1:-1;;;12439:31:53;;-1:-1:-1;;;;;2863:32:75;;12439:31:53;;;2845:51:75;2818:18;;12439:31:53;2699:203:75;12397:73:53;12384:3;;;:::i;:::-;;;12308:169;;;-1:-1:-1;;12486:19:53;;12482:57;;12514:25;;-1:-1:-1;;;;;;12514:25:53;;;;;;;;;;;12482:57;12562:11;12545;12557:1;12545:14;;;;;;;:::i;:::-;;:28;;-1:-1:-1;;;;;;12545:28:53;-1:-1:-1;;;;;12545:28:53;;;;;;;;;;12604:5;:1;-1:-1:-1;12604:5:53;:::i;:::-;12579:13;12593:1;12579:16;;;;;;;:::i;:::-;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12642:1;12646;12642:5;;;;:::i;:::-;12616:14;12631:1;12616:17;;;;;;;:::i;:::-;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12654;12677:8;:6;:8::i;:::-;-1:-1:-1;;;;;12654:22:53;;;;:32::i;:::-;12692:39;-1:-1:-1;;;;;12692:21:53;;12714:16;12692:21;:39::i;:::-;12742:36;;2682:4:75;2670:17;;2652:36;;-1:-1:-1;;;;;12742:36:53;;;;;2640:2:75;2625:18;12742:36:53;;;;;;;12217:566;12121:662;;:::o;5566:342:48:-;5660:15;5789:16;5816:11;5828:13;5816:26;;;;;;;;;:::i;:::-;;;5873:28;;;-1:-1:-1;;;;;5816:26:48;;;5873:28;;;19454:51:75;;;19553:4;19541:17;;19521:18;;;19514:45;;;;5816:26:48;-1:-1:-1;19427:18:75;;5873:28:48;;;;;;;;;;;;5863:39;;;;;;5849:54;;;5566:342;;;;:::o;4278:169:55:-;4362:9;4421:20;4433:8;4421:20;;;;:::i;:::-;4401:40;;4414:3;4402:15;;;4401:40;:::i;15692:733:53:-;15774:32;;:::i;:::-;15835:23;;15812:9;;1782:2;-1:-1:-1;15831:67:53;;;15884:14;;-1:-1:-1;;;15884:14:53;;;;;;;;;;;15831:67;15915:16;:23;15911:1;:27;15904:371;;;1782:2;15957:37;;:16;15974:1;15957:19;;;;;;;;:::i;:::-;;;;;;;:37;;;;:96;;;;16051:1;-1:-1:-1;;;;;15998:55:53;16006:11;16018:16;16035:1;16018:19;;;;;;;;:::i;:::-;;;;;;;16006:32;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16006:32:53;15998:55;15957:96;15953:131;;;16070:14;;-1:-1:-1;;;16070:14:53;;;;;;;;;;;15953:131;16096:4;16101:16;16118:1;16101:19;;;;;;;;:::i;:::-;;;;;;;16096:25;;;;;;;;;:::i;:::-;;;;;16092:86;;;16158:16;16175:1;16158:19;;;;;;;;:::i;:::-;;;;;;;16130:48;;-1:-1:-1;;;16130:48:53;;;;;;;2682:4:75;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;16092:86:53;16214:4;16186;16191:16;16208:1;16191:19;;;;;;;;:::i;:::-;;;;;;;16186:25;;;;;;;;;:::i;:::-;:32;;;:25;;;;;:32;16245:19;;;;16262:1;;16245:19;;;;;;:::i;:::-;;;;;;;16267:1;16245:23;;;;:::i;:::-;16226:13;16240:1;16226:16;;;;;;;:::i;:::-;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15940:3;;;;;15904:371;;;1782:2;16284:18;;:59;;;;-1:-1:-1;16341:1:53;16314:11;16326:1;16314:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;16314:14:53;16306:37;;16284:59;16280:92;;;16352:20;;-1:-1:-1;;;16352:20:53;;;;;;;;;;;16280:92;16383:37;16403:16;16383:37;;;;;;:::i;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;13159:2217:53:-;1782:2;13241:31;;;;13237:61;;13281:17;;-1:-1:-1;;;13281:17:53;;;;;;;;;;;13237:61;13304:24;13331:11;13343:13;13331:26;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13331:26:53;;-1:-1:-1;13331:26:53;13363:61;;13407:17;;-1:-1:-1;;;13407:17:53;;;;;;;;;;;13363:61;13435:5;13434:6;:37;;;;;13444:22;:8;-1:-1:-1;;;;;13444:20:53;;:22::i;:::-;:27;;13434:37;13430:82;;;13480:32;;-1:-1:-1;;;13480:32:53;;;;;;;;;;;13430:82;13563:18;;;;:59;;;;-1:-1:-1;13593:14:53;;-1:-1:-1;;;;;13593:14:53;13585:37;13563:59;13559:97;;;13631:25;;-1:-1:-1;;;;;;13631:25:53;;;;;;;;;;;13559:97;13713:9;13725:17;:13;13741:1;13725:17;:::i;:::-;13713:29;;;;13748:131;1782:2;13755:18;;:67;;;;-1:-1:-1;13819:1:53;13777:11;13789:1;13777:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13777:14:53;:45;;13755:67;13748:131;;;13858:11;13870:1;13858:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;13858:14:53;13837:11;13849:5;13858:14;13849:1;:5;:::i;:::-;13837:18;;;;;;;:::i;:::-;;:35;;-1:-1:-1;;;;;;13837:35:53;-1:-1:-1;;;;;13837:35:53;;;;;;;;;;13824:3;;;:::i;:::-;;;13748:131;;;13929:1;13884:11;13896:5;13900:1;13896;:5;:::i;:::-;13884:18;;;;;;;:::i;:::-;;:48;;-1:-1:-1;;;;;;13884:48:53;-1:-1:-1;;;;;13884:48:53;;;;;;;;;;-1:-1:-1;;;;14035:1191:53;14047:14;14062:1;14047:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:22;;;;:44;;-1:-1:-1;1782:2:53;14073:18;;14047:44;14035:1191;;;14110:13;14106:544;;;14278:17;:13;14294:1;14278:17;:::i;:::-;14257:39;;:14;14272:1;14257:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14256:49;;14304:1;14256:49;;;14300:1;14256:49;14235:14;14250:1;14235:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:71;;;;:::i;:::-;14211:14;14226:5;14211:14;14226:1;:5;:::i;:::-;14211:21;;;;;;;:::i;:::-;;;;;;;;;;:95;;;;;;;;;;;;;;;;;;14106:544;;;14357:17;:13;14373:1;14357:17;:::i;:::-;14335:40;;:14;14350:1;14335:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:40;14331:311;;-1:-1:-1;14483:4:53;14331:311;;;14529:17;:13;14545:1;14529:17;:::i;:::-;14508:39;;:14;14523:1;14508:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14504:138;;;14630:1;14609:14;14624:1;14609:17;;;;;;;:::i;:::-;;;;;;;;;;:22;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14504:138;14688:12;14684:536;;;14852:17;:13;14868:1;14852:17;:::i;:::-;14832:38;;:13;14846:1;14832:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;14831:48;;14878:1;14831:48;;;14874:1;14831:48;14811:13;14825:1;14811:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:69;;;;:::i;:::-;14788:13;14802:5;14806:1;14802;:5;:::i;:::-;14788:20;;;;;;;:::i;:::-;;;;;;;;;;:92;;;;;;;;;;;;;;;;;;14684:536;;;14930:17;:13;14946:1;14930:17;:::i;:::-;14909:39;;:13;14923:1;14909:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:39;14905:307;;15055:4;15040:19;;14905:307;;;15100:17;:13;15116:1;15100:17;:::i;:::-;15080:38;;:13;15094:1;15080:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:38;15076:136;;;15200:1;15180:13;15194:1;15180:16;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15076:136;14093:3;;;:::i;:::-;;;14035:1191;;;15254:1;;15245:5;15249:1;15245;:5;:::i;:::-;15231:20;;;;;;;:::i;:::-;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15285:1;15261:14;15280:1;15276;:5;;;;:::i;:::-;15261:21;;;;;;;:::i;:::-;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;15292:28;15314:5;15292:8;-1:-1:-1;;;;;15292:21:53;;;:28;;;;:::i;:::-;15331:40;;2682:4:75;2670:17;;2652:36;;-1:-1:-1;;;;;15331:40:53;;;;;2640:2:75;2625:18;15331:40:53;;;;;;;13231:2145;;;;13159:2217;;:::o;2114:392:48:-;8870:21:7;4302:15;;-1:-1:-1;;;4302:15:7;;;;4301:16;;-1:-1:-1;;;;;4348:14:7;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:7;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:7;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:7;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:7;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:7;-1:-1:-1;;;5013:22:7;;;4979:67;2391:110:48::1;2415:5;2422:7;2431:6;2439:11;2452:17;2471:13;2486:14;2391:23;:110::i;:::-;5070:14:7::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:7;;;5142:14;;-1:-1:-1;20892:50:75;;5142:14:7;;20880:2:75;20865:18;5142:14:7;;;;;;;5066:101;4092:1081;;;;;2114:392:48;;;;;;;:::o;4472:178:9:-;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;10488:405::-;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;16749:744:53:-;16833:32;;:::i;:::-;16892:24;;16871:7;;1782:2;-1:-1:-1;16888:68:53;;;16942:14;;-1:-1:-1;;;16942:14:53;;;;;;;;;;;16888:68;16973:17;:24;16969:1;:28;;;16962:379;;;1782:2;17016:38;;:17;17034:1;17016:20;;;;;;;;;;:::i;:::-;;;;;;;:38;;;;:98;;;;17112:1;-1:-1:-1;;;;;17058:56:53;17066:11;17078:17;17096:1;17078:20;;;;;;;;;;:::i;:::-;;;;;;;17066:33;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17066:33:53;17058:56;17016:98;17012:133;;;17131:14;;-1:-1:-1;;;17131:14:53;;;;;;;;;;;17012:133;17157:4;17162:17;17180:1;17162:20;;;;;;;;;;:::i;:::-;;;;;;;17157:26;;;;;;;;;:::i;:::-;;;;;17153:88;;;17220:17;17238:1;17220:20;;;;;;;;;;:::i;17153:88::-;17278:4;17249;17254:17;17272:1;17254:20;;;;;;;;;;:::i;:::-;;;;;;;17249:26;;;;;;;;;:::i;:::-;:33;;;:26;;;;;:33;17310:20;;;;;;;;;;;;;;:::i;:::-;;;;;;;17333:1;17310:24;;;;:::i;:::-;17290:14;17305:1;17290:17;;;;;;;;;:::i;:::-;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;16999:3;;;;:::i;:::-;;;16962:379;;;1782:2;17350:18;;;;:59;;;;-1:-1:-1;17407:1:53;17380:11;:14;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;17380:14:53;17372:37;;17350:59;17346:92;;;17418:20;;-1:-1:-1;;;17418:20:53;;;;;;;;;;;17346:92;17449:39;17470:17;17449:39;;;;;;:::i;4021:226:48:-;4085:7;4100:14;4117:17;:15;:17::i;:::-;4100:34;;-1:-1:-1;;4147:6:48;:27;:95;;4197:45;4214:6;4222:19;4197:16;:45::i;:::-;4147:95;;;-1:-1:-1;;4140:102:48;4021:226;-1:-1:-1;;;4021:226:48:o;7309:148:10:-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;3273:182:48:-;3347:7;3362:19;3384:24;3402:5;3384:17;:24::i;:::-;3362:46;;3421:29;3438:11;3421:16;:29::i;3486:358::-;3558:7;3573:14;3590:22;3606:5;3590:15;:22::i;:::-;3573:39;;3618:19;3640:45;3657:6;3665:19;3640:16;:45::i;:::-;3618:67;;3691:17;3711:29;3728:11;3711:16;:29::i;:::-;3691:49;;3767:11;3754:9;:24;3753:86;;3791:48;3808:9;3819:19;3791:16;:48::i;:::-;3753:86;;;-1:-1:-1;3782:6:48;;3746:93;-1:-1:-1;;;3486:358:48:o;19143:114:53:-;19188:38;;:::i;:::-;19234:18;;;;;;;;;;;19241:11;;19234:18;;19241:11;19234:18;;;;-1:-1:-1;;;;;19234:18:53;;;;;;;;;;;;;;;;;;;;;;19143:114;:::o;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;17964:1009:53:-;18067:7;1782:2;18086:33;;;;;;:68;;-1:-1:-1;1782:2:53;18123:31;;;;;18086:68;18082:98;;;18163:17;;-1:-1:-1;;;18163:17:53;;;;;;;;;;;18082:98;18186:28;18217:11;18229:15;18217:28;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18217:28:53;;-1:-1:-1;18217:28:53;18280:11;:26;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;18280:26:53;;;;-1:-1:-1;18316:35:53;;;;:72;;-1:-1:-1;;;;;;18355:33:53;;;18316:72;18312:102;;;18397:17;;-1:-1:-1;;;18397:17:53;;;;;;;;;;;18312:102;-1:-1:-1;;18424:6:53;:27;18420:68;;18462:26;:12;-1:-1:-1;;;;;18462:24:53;;:26::i;:::-;18453:35;;18420:68;18498:6;18508:1;18498:11;18494:25;;18518:1;18511:8;;;;;;18494:25;18606:26;:12;-1:-1:-1;;;;;18606:24:53;;:26::i;:::-;18597:6;:35;18593:109;;;18675:26;:12;-1:-1:-1;;;;;18675:24:53;;:26::i;:::-;18641:61;;-1:-1:-1;;;18641:61:53;;;;;;160:25:75;;148:2;133:18;;14:177;18593:109:53;18721:23;:10;-1:-1:-1;;;;;18721:21:53;;:23::i;:::-;18712:6;:32;18708:102;;;18786:23;:10;-1:-1:-1;;;;;18786:21:53;;:23::i;:::-;18753:57;;-1:-1:-1;;;18753:57:53;;;;;;160:25:75;;148:2;133:18;;14:177;18708:102:53;18816:38;-1:-1:-1;;;;;18816:23:53;;18840:6;18848:5;18816:23;:38::i;:::-;-1:-1:-1;18860:35:53;-1:-1:-1;;;;;18860:20:53;;18881:6;18889:5;18860:20;:35::i;:::-;;18930:10;-1:-1:-1;;;;;18906:43:53;18916:12;-1:-1:-1;;;;;18906:43:53;;18942:6;18906:43;;;;160:25:75;;148:2;133:18;;14:177;18906:43:53;;;;;;;;-1:-1:-1;18962:6:53;;17964:1009;-1:-1:-1;;;;17964:1009:53:o;19423:108::-;19470:28;;:::i;:::-;19506:20;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;-1:-1:-1;19506:20:53;;;;;;;;;;;;;;;;;;19423:108;:::o;6108:208::-;6155:14;6182:9;6177:135;6228:1;6201:11;6213:1;6201:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6201:14:53;6193:37;;;;:59;;-1:-1:-1;1782:2:53;6234:18;;6193:59;6177:135;;;6277:28;:11;6289:1;6277:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6277:14:53;:26;:28::i;:::-;6267:38;;;;:::i;:::-;;-1:-1:-1;6254:3:53;;;:::i;:::-;;;6177:135;;;;6108:208;:::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;:::-;10001:128;;;:::o;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;9264:218:43:-;9321:7;-1:-1:-1;;;;;9344:25:43;;9340:105;;;9392:42;;-1:-1:-1;;;9392:42:43;;9423:3;9392:42;;;22747:36:75;22799:18;;;22792:34;;;22720:18;;9392:42:43;22565:267:75;11745:477:9;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;:::-;11834:388;11745:477;;;:::o;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;2845:51:75;2818:18;;6729:30:9;2699:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;2845:51:75;2818:18;;6822:32:9;2699:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;5938:912:48:-;6291:20;6349:4;-1:-1:-1;;;;;6314:57:48;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6291:82;;6380:14;6400:5;-1:-1:-1;;;;;6400:13:48;;6414:10;6434:4;6441:51;6470:13;6485:6;6441:28;:51::i;:::-;6400:93;;;;;;-1:-1:-1;;;;;;6400:93:48;;;;;-1:-1:-1;;;;;23334:32:75;;;6400:93:48;;;23316:51:75;23403:32;;;;23383:18;;;23376:60;23472:33;23452:18;;;23445:61;23289:18;;6400:93:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6379:114;;;6771:9;6766:79;;6789:56;;-1:-1:-1;;;6789:56:48;;6834:10;6789:56;;;2845:51:75;2818:18;;6789:56:48;2699:203:75;6766:79:48;6043:807;;5938:912;;;:::o;4743:249:52:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:52;-1:-1:-1;;;4916:70:52;;;-1:-1:-1;;;;;4877:38:52;;;;:110::i;5678:321:53:-;5728:11;5747:15;5773:9;5768:211;5819:1;5792:11;5804:1;5792:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5792:14:53;5784:37;;;;:59;;-1:-1:-1;1782:2:53;5825:18;;5784:59;5768:211;;;5878:45;5890:3;5895:27;:11;5907:1;5895:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5895:14:53;:25;:27::i;:::-;5878:11;:45::i;:::-;5858:65;-1:-1:-1;5858:65:53;-1:-1:-1;5858:65:53;5931:41;;-1:-1:-1;;5948:24:53;;;;5678:321;:::o;5931:41::-;5845:3;;;:::i;:::-;;;5768:211;;;;5984:10;5678:321;:::o;4603:312:8:-;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;3085:69:48:-;;:::o;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;2863:32:75;;6518:60:8;;;2845:51:75;2818:18;;6518:60:8;2699:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;6614:334:55;6799:14;6816:12;:10;:12::i;:::-;6799:29;;6872:17;:6;:15;:17::i;:::-;6834:34;;;;-1:-1:-1;;;;;;;;;;;6834:34:55;;;;;:55;;:34;;;:55;;;;;:::i;:::-;;;;-1:-1:-1;6895:48:55;;-1:-1:-1;6910:6:55;6918:8;6928:6;6936;6895:14;:48::i;3158:84:48:-;3208:7;3230;-1:-1:-1;;;;;;;;;;;7014:8:10;-1:-1:-1;;;;;7014:8:10;;6877:153;5914:843:52;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:52;;6344:4;6312:38;;;2845:51:75;6288:70:52;;6299:11;;-1:-1:-1;;;;;6312:23:52;;;;;2818:18:75;;6312:38:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:52;;6686:4;6662:30;;;2845:51:75;6639:61:52;;6649:11;;-1:-1:-1;;;;;6662:15:52;;;;;2818:18:75;;6662:30:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:52;;;-1:-1:-1;;;;;24664:32:75;;;24646:51;;24733:32;;24728:2;24713:18;;24706:60;6711:41:52;;24619:18:75;6711:41:52;;;;;;;5914:843;;;;;:::o;5181:159::-;5266:29;;-1:-1:-1;;;5266:29:52;;5289:4;5266:29;;;2845:51:75;-1:-1:-1;;;;;5266:38:52;;;;:14;;;;;;2818:18:75;;5266:29:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:52;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:52;;;;;;;;;;;1120:193;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:52;-1:-1:-1;;;1250:57:52;;;-1:-1:-1;;;;;1211:38:52;;;;:97::i;7489:132::-;7581:35;;-1:-1:-1;;;7581:35:52;;7610:4;7581:35;;;2845:51:75;7559:7:52;;-1:-1:-1;;;;;7581:20:52;;;;;2818:18:75;;7581:35:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1729:465::-;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;1594:41:75;1881:12:52;;;;-1:-1:-1;;;;;1922:30:52;;;1567:18:75;;1962:48:52;;;-1:-1:-1;;1962:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:52;-1:-1:-1;;;1962:48:52;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;4161:214:8;;:::o;1804:386:52:-;2133:49;;2176:5;2133:49;;;1594:41:75;2094:89:52;;1567:18:75;;2133:49:52;;;-1:-1:-1;;2133:49:52;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:52;-1:-1:-1;;;2133:49:52;;;-1:-1:-1;;;;;2094:38:52;;;;:89::i;2561:473:48:-;6931:20:7;:18;:20::i;:::-;2850:24:48::1;:22;:24::i;:::-;2880:22;2895:6;2880:14;:22::i;:::-;2908:28;2921:5;2928:7;2908:12;:28::i;:::-;2942:87;2967:11;2980:17;2999:13;3014:14;2942:24;:87::i;:::-;2561:473:::0;;;;;;;:::o;5610:963:55:-;5766:14;5783:12;:10;:12::i;:::-;5766:29;-1:-1:-1;5850:18:55;5886:26;5911:1;5766:29;5886:26;:::i;:::-;5919:20;6031:23;;;-1:-1:-1;;;;;;;;;;;6031:23:55;;;;;;;6009:19;;;;;;;5850:63;;-1:-1:-1;;;;;;;;;;;;2217:16:55;5991:15;5999:6;5991:15;:::i;:::-;:37;;;;:::i;:::-;:63;;;;:::i;:::-;5964:90;;6304:1;6284:17;:21;:62;;;;-1:-1:-1;6339:7:55;;-1:-1:-1;;;6339:7:55;;-1:-1:-1;;;;;6339:7:55;6317:18;6318:17;6317:18;:::i;:::-;6309:37;6284:62;6280:115;;;6387:7;;6355:40;;-1:-1:-1;;;6355:40:55;;;;;25652:25:75;;;-1:-1:-1;;;6387:7:55;;;-1:-1:-1;;;;;6387:7:55;25693:18:75;;;25686:75;25625:18;;6355:40:55;25480:287:75;6280:115:55;6489:17;:6;:15;:17::i;:::-;6466:19;;;;:13;;;:19;;;;;:40;;:19;;;:40;;;;;:::i;:::-;;;;-1:-1:-1;6512:56:55;;-1:-1:-1;6528:6:55;6536:8;6546:5;6553:6;6561;6512:15;:56::i;:::-;5760:813;;;;5610:963;;;;;:::o;8017:153:10:-;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;5166:340:53:-;5230:11;5249:15;5275:9;5270:216;5321:1;5294:11;5306:1;5294:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5294:14:53;5286:37;;;;:59;;-1:-1:-1;1782:2:53;5327:18;;5286:59;5270:216;;;5380:46;5392:3;5397:28;:11;5409:1;5397:14;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5397:14:53;:26;:28::i;5380:46::-;5360:66;-1:-1:-1;5360:66:53;-1:-1:-1;5438:11:53;;;:27;;;5460:5;5453:3;:12;;5438:27;5434:45;;;-1:-1:-1;5474:5:53;;5166:340;-1:-1:-1;;5166:340:53:o;5434:45::-;5347:3;;;:::i;:::-;;;5270:216;;;;5491:10;5166:340;;;:::o;8218:112:10:-;8281:7;8307:16;8317:5;8307:9;:16::i;8054:132:52:-;8146:35;;-1:-1:-1;;;8146:35:52;;8175:4;8146:35;;;2845:51:75;8124:7:52;;-1:-1:-1;;;;;8146:20:52;;;;;2818:18:75;;8146:35:52;2699:203:75;7771:130:52;7862:34;;-1:-1:-1;;;7862:34:52;;7890:4;7862:34;;;2845:51:75;7840:7:52;;-1:-1:-1;;;;;7862:19:52;;;;;2818:18:75;;7862:34:52;2699:203:75;2735:544:52;2833:4;2849:11;2845:430;;;2928:12;2942:23;2977:8;-1:-1:-1;;;;;2969:30:52;3050:6;3009:48;;;;;;160:25:75;;148:2;133:18;;14:177;3009:48:52;;;;-1:-1:-1;;3009:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:52;-1:-1:-1;;;3009:48:52;;;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:52;-1:-1:-1;3126:14:52;;2845:430;3161:88;3241:6;3200:48;;;;;;160:25:75;;148:2;133:18;;14:177;3200:48:52;;;;-1:-1:-1;;3200:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:52;-1:-1:-1;;;3200:48:52;;;-1:-1:-1;;;;;3161:38:52;;;;: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:52;4129:6;4089:47;;;;;;160:25:75;;148:2;133:18;;14:177;4089:47:52;;;;-1:-1:-1;;4089:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:52;-1:-1:-1;;;4089:47:52;;;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:75;;148:2;133:18;;14:177;4278:47:52;;;;-1:-1:-1;;4278:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:52;-1:-1:-1;;;4278:47:52;;;-1:-1:-1;;;;;4239:38:52;;;;:87::i;9351:238:42:-;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;2845:51:75;2818:18;;11183:32:9;2699:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;2845:51:75;2818:18;;11283:31:9;2699:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11415:31:9;;;;;;;;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220:1170;;;:::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;586:231:42:-;647:12;;723:5;;;746;;;742:28;;;761:5;768:1;753:17;;;;;;;742:28;792:4;;-1:-1:-1;798:1:42;-1:-1:-1;586:231:42;;;;;;:::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;5383:186:55:-;-1:-1:-1;;;;;;;;;;;5464:25:55;5428:9;;-1:-1:-1;;;;;5464:25:55;5537:26;5464:25;5537:15;:26;:::i;:::-;5517:46;;5530:3;5518:15;;;5517:46;:::i;34380:314:43:-;34436:6;-1:-1:-1;;;;;34557:5:43;:33;34553:105;;;34613:34;;-1:-1:-1;;;34613:34:43;;;;;160:25:75;;;133:18;;34613:34:43;14:177:75;4723:316:48;4910:48;4925:6;4933:8;4943:6;4951;4910:14;:48::i;:::-;5006:28;5027:6;5006:20;:28::i;7084:141:7:-;8870:21;8560:40;-1:-1:-1;;;8560:40:7;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:7;;;;;;;;;;;2970:67:8;6931:20:7;:18;:20::i;5090:114:10:-;6931:20:7;:18;:20::i;:::-;5165:32:10::1;5190:6;5165:24;:32::i;2282:147:9:-:0;6931:20:7;:18;:20::i;:::-;2384:38:9::1;2407:5;2414:7;2384:22;:38::i;3295:1867:53:-:0;3508:18;;:23;;:68;;-1:-1:-1;3541:18:53;;1782:2;-1:-1:-1;3508:68:53;: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:53;;;;;;;;;;;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:53;3948:11;3960:1;3948:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3940:37:53;;3936:67;;3986:17;;-1:-1:-1;;;3986:17:53;;;;;;;;;;;3936:67;4011:35;4037:8;:6;:8::i;:::-;4011:11;4023:1;4011:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4011:25:53;;;:35;;;;:::i;:::-;4104:9;4099:126;4119:1;4115;:5;4099:126;;;4159:11;4171:1;4159:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;:11;4153:1;4141:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4141:32:53;;4137:79;;4201:11;4213:1;4201:14;;;;;;;;:::i;:::-;;;;;;;4182:34;;-1:-1:-1;;;4182:34:53;;;;;;;-1:-1:-1;;;;;2863:32:75;;;;2845:51;;2833:2;2818:18;;2699:203;4137:79:53;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:53;;;;;;;2682:4:75;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;4319:144:53;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:53;;;;;;;2682:4:75;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;4471:149:53;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:53;;;;;-1:-1:-1;;;;;4728:31:53;;;;;;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:53;;;:46;;;;:::i;:::-;5034:11;5046:1;5034:14;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;5020:39:53;;5056:1;5020:39;;;;;2682:4:75;2670:17;;;;2652:36;;2640:2;2625:18;;2510:184;5020:39:53;;;;;;;;3923:3;;3883:1183;;;;5076:34;5096:13;5076:34;;;;;;:::i;:::-;;;;;;;;5121:36;5142:14;5121:36;;;;;;:::i;:::-;;;;;;;;3491:1671;;3295:1867;;;;:::o;4428:254:48:-;4584:31;4608:6;4584:23;:31::i;:::-;4621:56;4637:6;4645:8;4655:5;4662:6;4670;4621:15;:56::i;28183:122:42:-;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;4589:408::-;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;2863:32:75;;4917:24:34;;;2845:51:75;2818:18;;4917:24:34;2699:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;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:75;;1805:47:27;;;2845:51:75;2818:18;;1805:47:27;2699:203:75;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;;;;;;;;;;;11631:890:10;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;17174:25:75;;;17230:2;17215:18;;17208:34;17162:2;17147:18;;17000:248;7474:595:53;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:53;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:53;;-1:-1:-1;7745:33:53;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:53;;7906:9;7917:5;7887:18;:36::i;:::-;-1:-1:-1;7931:17:53;7939:9;7931:17;;:::i;:::-;;;7710:245;;7631:324;7705:3;;;:::i;:::-;;;7631:324;;;-1:-1:-1;7964:9:53;;7960:36;;7982:14;;-1:-1:-1;;;7982:14:53;;;;;;;;;;;5210:304:10;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;5295:24:10::1;::::0;5390:28:::1;5411:6:::0;5390:20:::1;:28::i;:::-;5352:66;;;;5452:7;:28;;5478:2;5452:28;;;5462:13;5452:28;5428:52:::0;;-1:-1:-1;;;;;;5490:17:10;-1:-1:-1;;;5428:52:10::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;5490:17:10;;-1:-1:-1;;;;;5490:17:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;5210:304:10:o;2435:216:9:-;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:9;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:9::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;6629:539:53:-: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:53;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:53;;-1:-1:-1;6835:34:53;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:53;;7001:10;7013:5;6981:19;:38::i;:::-;-1:-1:-1;7027:18:53;7035:10;7027:18;;:::i;:::-;;;6800:252;;6720:332;6795:3;;;:::i;:::-;;;6720:332;;;-1:-1:-1;7061:9:53;;7057:37;;7079:15;;-1:-1:-1;;;7079:15:53;;;;;;;;;;;12588:974:10;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;17174:25:75;;;17230:2;17215:18;;17208:34;17162:2;17147:18;;17000:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;1776:194:38:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;5543:487:34;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;1670:188:33;1797:53;;-1:-1:-1;;;;;28615:32:75;;;1797:53:33;;;28597:51:75;28684:32;;;28664:18;;;28657:60;28733:18;;;28726:34;;;1770:81:33;;1790:5;;1812:18;;;;;28570::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;2845:51:75;2818:18;;8847:32:9;2699:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;3371:111:42:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;5657:550:10;5851:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5851:43:10;-1:-1:-1;;;5851:43:10;;;5811:93;;5724:7;;;;;;;;-1:-1:-1;;;;;5811:26:10;;;:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:140;;;;5918:7;:39;;;;;5955:2;5929:15;:22;:28;;5918:39;5914:260;;;5973:24;6011:15;6000:38;;;;;;;;;;;;:::i;:::-;5973:65;-1:-1:-1;6076:15:10;6056:35;;6052:112;;6119:4;;6131:16;;-1:-1:-1;5657:550:10;-1:-1:-1;;;;5657:550:10:o;6052:112::-;5959:215;5914:260;-1:-1:-1;6191:5:10;;;;-1:-1:-1;5657:550:10;-1:-1:-1;;;5657:550:10:o;9259:206:9:-;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;2845:51:75;2818:18;;9373:30:9;2699:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;28963:32:75;;;1380:43:33;;;28945:51:75;29012:18;;;29005:34;;;1353:71:33;;1373:5;;1395:14;;;;;28918:18:75;;1380:43:33;28771:274:75;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;2863:32:75;;8401:40:33;;;2845:51:75;2818:18;;8401:40:33;2699:203:75;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;196:289:75:-;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:75;;715:226;-1:-1:-1;715:226:75:o;946:131::-;-1:-1:-1;;;;;1021:31:75;;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:75: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:75;;;1956:2;1941:18;;;1928:32;;-1:-1:-1;1646:346:75: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:75;2309:18;;2296:32;2337:33;2296:32;2337:33;:::i;:::-;1997:508;;2389:7;;-1:-1:-1;;;2469:2:75;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:75;3301:40;;-1:-1:-1;;;;;3356:34:75;;3392:22;;;3353:62;3350:88;;;3418:18;;:::i;:::-;3454:2;3447:22;3200:275;;-1:-1:-1;3200:275:75: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:75;3736:30;3733:56;;;3769:18;;:::i;:::-;-1:-1:-1;3835:2:75;3814:15;;-1:-1:-1;;3810:29:75;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:75;3480:629;-1:-1:-1;;;3480:629:75: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:75;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:75;5542:18;;5529:32;-1:-1:-1;;;;;5573:30:75;;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:75;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:75;7785:18;;7772:32;-1:-1:-1;;;;;7816:30:75;;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:75;;-1:-1:-1;;7372:686:75: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:75;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:75;9710:30;9707:56;;;9743:18;;:::i;:::-;-1:-1:-1;9788:1:75;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:75;9816:669;-1:-1:-1;;;;;9816:669:75: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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;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:75;15098:18;;15085:32;15126:33;15085:32;15126:33;:::i;:::-;15178:7;-1:-1:-1;15237:2:75;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:75;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:75;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:75;;17670:184;-1:-1:-1;17670:184:75:o;17859:135::-;17898:3;17919:17;;;17916:43;;17939:18;;:::i;:::-;-1:-1:-1;17986:1:75;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:75;;;;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:75;;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:75;;19827:618;-1:-1:-1;;;;;19827:618:75: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:75: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:75;21647:5;;21582:80;21681:4;21671:76;;-1:-1:-1;21718:1:75;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:75;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:75;;;22215:5;;22027:203;22262:42;-1:-1:-1;;22287:8:75;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:75: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:75;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:75;25033:301;-1:-1:-1;25033:301:75:o;25339:136::-;25374:3;-1:-1:-1;;;25395:22:75;;25392:48;;25420:18;;:::i;:::-;-1:-1:-1;25460:1:75;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;:::-;25884:82;25772:200;;;;:::o;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:75;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:75;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:75;;;28240:26;28191:89;-1:-1:-1;;27048:1:75;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:75;;;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:75;28028:14;;;28044:3;28024:24;28020:37;28016:42;28001:58;27986:74;;27873:201;-1:-1:-1;;;;28120:1:75;28104:14;;;28100:22;28087:36;;-1:-1:-1;27091:1299:75: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","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.28+commit.7893614a\"},\"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\":\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"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\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"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\"},\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"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.\"}},\"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\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts/access/manager/IAccessManager.sol\":{\"keccak256\":\"0x9be2d08a326515805bc9cf6315b7953f8d1ebe88abf48c2d645fb1fa8211a0e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e750d656e37efaefbb2300051ec2c4c725db266c5ff89bc985f7ecb8d214c4f4\",\"dweb:/ipfs/QmT51FsZes2n2nrLLh3d8YkBYKY43CtwScZxixcLGzL9r6\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"]},\"contracts/AccessManagedMSV.sol\":{\"keccak256\":\"0x0bd3c73b98d8f589f198b85d0f870caa730435d74268eb89f8a928919b7ded2f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8529211a463240a672a7997009100ac1573ff417058802e24db6109d3855da00\",\"dweb:/ipfs/QmRyoGisqnPa8aWFc73dG8ekjMxevxBGfnuwvUrzd9pMXz\"]},\"contracts/AccessManagedProxy.sol\":{\"keccak256\":\"0xaf5aa782fd0c86e1b8489abe11fdc124c81413fe76a376566dc7dde2bc53db17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12bfec7192cbd6792719056cbbe2a076c57faa40ccb088d71a345c99a4108e34\",\"dweb:/ipfs/QmQ4hnbw1JiKAwFRpJbTv3NcR1uP97hLWvauwHdwjMmFuz\"]},\"contracts/InvestStrategyClient.sol\":{\"keccak256\":\"0x3c8fff73042023381eb750ba13a9066475d208e99bde568e1243f0e1e282c894\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f8283ffa5c512e482b0065d9391c7060ebc1fa5968c55e6a05958480b7facb6\",\"dweb:/ipfs/QmT4N9Z19b6AUXpXtg23d3ijBExyKuRJBeQ3o8WCobgpfT\"]},\"contracts/MSVBase.sol\":{\"keccak256\":\"0xddb5cd69d86cd5feb1b4732aba8c745b347159ee8e500f7af3cc33e9ca305c0d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc8a0079a984750f524796152cdd4882769771fe8e8329c085bc327dc957490d\",\"dweb:/ipfs/QmcKDFDrvisgX65QJhw6aLVvLiWPxozPww7ZFXSEZAEsns\"]},\"contracts/OutflowLimitedAMMSV.sol\":{\"keccak256\":\"0x5704cf6b4ce2ad4f10be036ea32d128d85cfbc6861208e58ae59b51423e0abbe\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4bc775130d7147c44b2918db040bbe531ee53519429dfedb71ee1ee4ae414990\",\"dweb:/ipfs/QmVF3cic5DtQRVwKMrY12f2i9Zn8DvUxGAz2oDW7sdYV9w\"]},\"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":15803,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_depositQueue","offset":0,"slot":"0","type":"t_array(t_uint8)32_storage"},{"astId":15807,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_withdrawQueue","offset":0,"slot":"1","type":"t_array(t_uint8)32_storage"},{"astId":15812,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"_strategies","offset":0,"slot":"2","type":"t_array(t_contract(IInvestStrategy)22374)32_storage"},{"astId":17436,"contract":"contracts/OutflowLimitedAMMSV.sol:OutflowLimitedAMMSV","label":"__gap","offset":0,"slot":"34","type":"t_array(t_uint256)16_storage"}],"types":{"t_array(t_contract(IInvestStrategy)22374)32_storage":{"base":"t_contract(IInvestStrategy)22374","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)22374":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/PermissionedERC4626.sol":{"PermissionedERC4626":{"abi":[{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","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":[{"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":[{"internalType":"address","name":"asset","type":"address"}],"name":"InvalidAsset","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","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":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":{},"generatedSources":[],"linkReferences":{},"object":"60a0604052306080523480156012575f5ffd5b50608051611e1a6100395f395f8181610f2201528181610f4b01526110ae0152611e1a5ff3fe60806040526004361061021d575f3560e01c80636e553f651161011e578063b460af94116100a8578063d547741f1161006d578063d547741f14610624578063d905777e14610643578063dd62ed3e14610662578063e1d3945014610681578063ef8b30f7146105e6575f5ffd5b8063b460af94146105a8578063ba087652146105c7578063c63d75b614610451578063c6e6f592146105e6578063ce96cb7714610605575f5ffd5b806395d89b41116100ee57806395d89b4114610513578063a217fddf14610527578063a9059cbb1461053a578063ad3cb1cc14610559578063b3d7f6b914610589575f5ffd5b80636e553f651461049757806370a08231146104b657806391d14854146104d557806394bf804d146104f4575f5ffd5b8063248a9ca3116101aa57806338d52e0f1161016f57806338d52e0f1461041e578063402d267d146104515780634cdad506146102985780634f1ef2861461047057806352d1902d14610483575f5ffd5b8063248a9ca31461036857806324ea54f4146103875780632f2ff15d146103ba578063313ce567146103d957806336568abe146103ff575f5ffd5b8063095ea7b3116101f0578063095ea7b3146102b75780630a28a477146102d657806318160ddd146102f55780631e4e00911461032857806323b872dd14610349575f5ffd5b806301e1d1141461022157806301ffc9a71461024857806306fdde031461027757806307a2d13a14610298575b5f5ffd5b34801561022c575f5ffd5b506102356106b4565b6040519081526020015b60405180910390f35b348015610253575f5ffd5b506102676102623660046118cc565b610734565b604051901515815260200161023f565b348015610282575f5ffd5b5061028b61076a565b60405161023f91906118f3565b3480156102a3575f5ffd5b506102356102b2366004611928565b61082a565b3480156102c2575f5ffd5b506102676102d136600461195a565b610835565b3480156102e1575f5ffd5b506102356102f0366004611928565b61084c565b348015610300575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610235565b348015610333575f5ffd5b50610347610342366004611982565b610858565b005b348015610354575f5ffd5b506102676103633660046119a2565b610871565b348015610373575f5ffd5b50610235610382366004611928565b610896565b348015610392575f5ffd5b506102357f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b3480156103c5575f5ffd5b506103476103d43660046119dc565b6108b6565b3480156103e4575f5ffd5b506103ed6108d8565b60405160ff909116815260200161023f565b34801561040a575f5ffd5b506103476104193660046119dc565b610901565b348015610429575f5ffd5b505f516020611dc55f395f51905f52546040516001600160a01b03909116815260200161023f565b34801561045c575f5ffd5b5061023561046b366004611a06565b610934565b61034761047e366004611a33565b610971565b34801561048e575f5ffd5b50610235610990565b3480156104a2575f5ffd5b506102356104b13660046119dc565b6109ab565b3480156104c1575f5ffd5b506102356104d0366004611a06565b610a08565b3480156104e0575f5ffd5b506102676104ef3660046119dc565b610a2e565b3480156104ff575f5ffd5b5061023561050e3660046119dc565b610a64565b34801561051e575f5ffd5b5061028b610ab0565b348015610532575f5ffd5b506102355f81565b348015610545575f5ffd5b5061026761055436600461195a565b610aee565b348015610564575f5ffd5b5061028b604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610594575f5ffd5b506102356105a3366004611928565b610afb565b3480156105b3575f5ffd5b506102356105c2366004611af7565b610b07565b3480156105d2575f5ffd5b506102356105e1366004611af7565b610b5d565b3480156105f1575f5ffd5b50610235610600366004611928565b610baa565b348015610610575f5ffd5b5061023561061f366004611a06565b610bb5565b34801561062f575f5ffd5b5061034761063e3660046119dc565b610bc8565b34801561064e575f5ffd5b5061023561065d366004611a06565b610be4565b34801561066d575f5ffd5b5061023561067c366004611b30565b610bee565b34801561068c575f5ffd5b506102357fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b5f805f516020611dc55f395f51905f5280546040516370a0823160e01b81523060048201529192506001600160a01b0316906370a0823190602401602060405180830381865afa15801561070a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e9190611b58565b91505090565b5f6001600160e01b03198216637965db0b60e01b148061076457506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020611d655f395f51905f52916107a890611b6f565b80601f01602080910402602001604051908101604052809291908181526020018280546107d490611b6f565b801561081f5780601f106107f65761010080835404028352916020019161081f565b820191905f5260205f20905b81548152906001019060200180831161080257829003601f168201915b505050505091505090565b5f610764825f610c37565b5f33610842818585610c8e565b5060019392505050565b5f610764826001610c9b565b5f61086281610ce9565b61086c8383610cf6565b505050565b5f3361087e858285610d56565b610889858585610da0565b60019150505b9392505050565b5f9081525f516020611da55f395f51905f52602052604090206001015490565b6108bf82610896565b6108c881610ce9565b6108d28383610dfd565b50505050565b5f805f516020611dc55f395f51905f5290505f815461072e9190600160a01b900460ff16611bbb565b6001600160a01b038116331461092a5760405163334bd91960e11b815260040160405180910390fd5b61086c8282610e9e565b5f61095f7fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a683610a2e565b61096a57505f919050565b5f19610764565b610979610f17565b61098282610fbd565b61098c8282610fe7565b5050565b5f6109996110a3565b505f516020611d855f395f51905f5290565b5f5f6109b683610934565b9050808411156109e857828482604051633c8097d960e11b81526004016109df93929190611bd4565b60405180910390fd5b5f6109f285610baa565b9050610a00338587846110ec565b949350505050565b6001600160a01b03165f9081525f516020611d655f395f51905f52602052604090205490565b5f9182525f516020611da55f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f610a6f83610934565b905080841115610a985782848260405163284ff66760e01b81526004016109df93929190611bd4565b5f610aa285610afb565b9050610a00338583886110ec565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020611d655f395f51905f52916107a890611b6f565b5f33610842818585610da0565b5f610764826001610c37565b5f5f610b1283610bb5565b905080851115610b3b57828582604051633fa733bb60e21b81526004016109df93929190611bd4565b5f610b458661084c565b9050610b543386868985611178565b95945050505050565b5f5f610b6883610be4565b905080851115610b9157828582604051632e52afbb60e21b81526004016109df93929190611bd4565b5f610b9b8661082a565b9050610b54338686848a611178565b5f610764825f610c9b565b5f610764610bc283610a08565b5f610c37565b610bd182610896565b610bda81610ce9565b6108d28383610e9e565b5f61076482610a08565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f61088f610c436106b4565b610c4e906001611bf5565b610c595f600a611ceb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610c859190611bf5565b8591908561122c565b61086c838383600161126e565b5f61088f610caa82600a611ceb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610cd69190611bf5565b610cde6106b4565b610c85906001611bf5565b610cf38133611349565b50565b5f516020611da55f395f51905f525f610d0e84610896565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f610d618484610bee565b90505f1981146108d25781811015610d9257828183604051637dc7a0d960e11b81526004016109df93929190611bd4565b6108d284848484035f61126e565b6001600160a01b038316610dc957604051634b637e8f60e11b81525f60048201526024016109df565b6001600160a01b038216610df25760405163ec442f0560e01b81525f60048201526024016109df565b61086c838383611382565b5f5f516020611da55f395f51905f52610e168484610a2e565b610e95575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610e4b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610764565b5f915050610764565b5f5f516020611da55f395f51905f52610eb78484610a2e565b15610e95575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610764565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f9d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f915f516020611d855f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610fbb5760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504161098c81610ce9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611041575060408051601f3d908101601f1916820190925261103e91810190611b58565b60015b61106957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016109df565b5f516020611d855f395f51905f52811461109957604051632a87526960e21b8152600481018290526024016109df565b61086c83836114a8565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fbb5760405163703e46dd60e11b815260040160405180910390fd5b5f516020611dc55f395f51905f528054611111906001600160a01b03168630866114fd565b61111b8483611564565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611169929190918252602082015260400190565b60405180910390a35050505050565b5f516020611dc55f395f51905f526001600160a01b03868116908516146111a4576111a4848784610d56565b6111ae8483611598565b80546111c4906001600160a01b031686856115cc565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db868660405161121c929190918252602082015260400190565b60405180910390a4505050505050565b5f611259611239836115fd565b801561125457505f848061124f5761124f611cf9565b868809115b151590565b611264868686611629565b610b549190611bf5565b5f516020611d655f395f51905f526001600160a01b0385166112a55760405163e602df0560e01b81525f60048201526024016109df565b6001600160a01b0384166112ce57604051634a1406b160e11b81525f60048201526024016109df565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561134257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161116991815260200190565b5050505050565b6113538282610a2e565b61098c5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016109df565b5f516020611d655f395f51905f526001600160a01b0384166113bc5781816002015f8282546113b19190611bf5565b909155506114199050565b6001600160a01b0384165f90815260208290526040902054828110156113fb5784818460405163391434e360e21b81526004016109df93929190611bd4565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611437576002810180548390039055611455565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161149a91815260200190565b60405180910390a350505050565b6114b1826116df565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156114f55761086c8282611742565b61098c6117ab565b6040516001600160a01b0384811660248301528381166044830152606482018390526108d29186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506117ca565b6001600160a01b03821661158d5760405163ec442f0560e01b81525f60048201526024016109df565b61098c5f8383611382565b6001600160a01b0382166115c157604051634b637e8f60e11b81525f60048201526024016109df565b61098c825f83611382565b6040516001600160a01b0383811660248301526044820183905261086c91859182169063a9059cbb90606401611532565b5f600282600381111561161257611612611d0d565b61161c9190611d21565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f0361165d5783828161165357611653611cf9565b049250505061088f565b808411611674576116746003851502601118611836565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361171457604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109df565b5f516020611d855f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161175e9190611d4e565b5f60405180830381855af49150503d805f8114611796576040519150601f19603f3d011682016040523d82523d5f602084013e61179b565b606091505b5091509150610b54858383611847565b3415610fbb5760405163b398979f60e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af1806117e9576040513d5f823e3d81fd5b50505f513d9150811561180057806001141561180d565b6001600160a01b0384163b155b156108d257604051635274afe760e01b81526001600160a01b03851660048201526024016109df565b634e487b715f52806020526024601cfd5b60608261185c57611857826118a3565b61088f565b815115801561187357506001600160a01b0384163b155b1561189c57604051639996b31560e01b81526001600160a01b03851660048201526024016109df565b508061088f565b8051156118b35780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f602082840312156118dc575f5ffd5b81356001600160e01b03198116811461088f575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611938575f5ffd5b5035919050565b80356001600160a01b0381168114611955575f5ffd5b919050565b5f5f6040838503121561196b575f5ffd5b6119748361193f565b946020939093013593505050565b5f5f60408385031215611993575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156119b4575f5ffd5b6119bd8461193f565b92506119cb6020850161193f565b929592945050506040919091013590565b5f5f604083850312156119ed575f5ffd5b823591506119fd6020840161193f565b90509250929050565b5f60208284031215611a16575f5ffd5b61088f8261193f565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611a44575f5ffd5b611a4d8361193f565b9150602083013567ffffffffffffffff811115611a68575f5ffd5b8301601f81018513611a78575f5ffd5b803567ffffffffffffffff811115611a9257611a92611a1f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ac157611ac1611a1f565b604052818152828201602001871015611ad8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611b09575f5ffd5b83359250611b196020850161193f565b9150611b276040850161193f565b90509250925092565b5f5f60408385031215611b41575f5ffd5b611b4a8361193f565b91506119fd6020840161193f565b5f60208284031215611b68575f5ffd5b5051919050565b600181811c90821680611b8357607f821691505b602082108103611ba157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561076457610764611ba7565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561076457610764611ba7565b6001815b6001841115611c4357808504811115611c2757611c27611ba7565b6001841615611c3557908102905b60019390931c928002611c0c565b935093915050565b5f82611c5957506001610764565b81611c6557505f610764565b8160018114611c7b5760028114611c8557611ca1565b6001915050610764565b60ff841115611c9657611c96611ba7565b50506001821b610764565b5060208310610133831016604e8410600b8410161715611cc4575081810a610764565b611cd05f198484611c08565b805f1904821115611ce357611ce3611ba7565b029392505050565b5f61088f60ff841683611c4b565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611d3f57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220d5f28cf5a8f3980c642578ba7711c64ee145289e49779e99879b30ad248cc28064736f6c634300081c0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0x12 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x1E1A PUSH2 0x39 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0xF22 ADD MSTORE DUP2 DUP2 PUSH2 0xF4B ADD MSTORE PUSH2 0x10AE ADD MSTORE PUSH2 0x1E1A PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E553F65 GT PUSH2 0x11E JUMPI DUP1 PUSH4 0xB460AF94 GT PUSH2 0xA8 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x643 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x5E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x605 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x559 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x589 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x4F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1AA JUMPI DUP1 PUSH4 0x38D52E0F GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x483 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x349 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x298 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x6B4 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 0x253 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x18F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x82A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x195A JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x2F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x84C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x235 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x1982 JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x363 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x871 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x373 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x8B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x8D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x429 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0x934 JUMP JUMPDEST PUSH2 0x347 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x1A33 JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x9AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x50E CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xA64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x545 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x195A JUMP JUMPDEST PUSH2 0xAEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B 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 0x594 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF7 JUMP JUMPDEST PUSH2 0xB07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF7 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0xBAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x610 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x63E CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xBC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x65D CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x67C CALLDATASIZE PUSH1 0x4 PUSH2 0x1B30 JUMP JUMPDEST PUSH2 0xBEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP 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 0x70A 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 0x72E SWAP2 SWAP1 PUSH2 0x1B58 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x764 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7A8 SWAP1 PUSH2 0x1B6F 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 0x7D4 SWAP1 PUSH2 0x1B6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x81F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81F 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 0x802 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH0 PUSH2 0xC37 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x842 DUP2 DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH1 0x1 PUSH2 0xC9B JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 PUSH2 0xCF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x87E DUP6 DUP3 DUP6 PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x889 DUP6 DUP6 DUP6 PUSH2 0xDA0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8BF DUP3 PUSH2 0x896 JUMP JUMPDEST PUSH2 0x8C8 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0xDFD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x72E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x86C DUP3 DUP3 PUSH2 0xE9E JUMP JUMPDEST PUSH0 PUSH2 0x95F PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x96A JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x764 JUMP JUMPDEST PUSH2 0x979 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x982 DUP3 PUSH2 0xFBD JUMP JUMPDEST PUSH2 0x98C DUP3 DUP3 PUSH2 0xFE7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x999 PUSH2 0x10A3 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x9B6 DUP4 PUSH2 0x934 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x9E8 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x9F2 DUP6 PUSH2 0xBAA JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 CALLER DUP6 DUP8 DUP5 PUSH2 0x10EC 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 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA6F DUP4 PUSH2 0x934 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xA98 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xAA2 DUP6 PUSH2 0xAFB JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 CALLER DUP6 DUP4 DUP9 PUSH2 0x10EC JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7A8 SWAP1 PUSH2 0x1B6F JUMP JUMPDEST PUSH0 CALLER PUSH2 0x842 DUP2 DUP6 DUP6 PUSH2 0xDA0 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH1 0x1 PUSH2 0xC37 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB12 DUP4 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xB3B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xB45 DUP7 PUSH2 0x84C JUMP JUMPDEST SWAP1 POP PUSH2 0xB54 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x1178 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB68 DUP4 PUSH2 0xBE4 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xB91 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xB9B DUP7 PUSH2 0x82A JUMP JUMPDEST SWAP1 POP PUSH2 0xB54 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x1178 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH0 PUSH2 0xC9B JUMP JUMPDEST PUSH0 PUSH2 0x764 PUSH2 0xBC2 DUP4 PUSH2 0xA08 JUMP JUMPDEST PUSH0 PUSH2 0xC37 JUMP JUMPDEST PUSH2 0xBD1 DUP3 PUSH2 0x896 JUMP JUMPDEST PUSH2 0xBDA DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0xE9E JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH2 0xA08 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 0x88F PUSH2 0xC43 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0xC4E SWAP1 PUSH1 0x1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xC59 PUSH0 PUSH1 0xA PUSH2 0x1CEB JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x126E JUMP JUMPDEST PUSH0 PUSH2 0x88F PUSH2 0xCAA DUP3 PUSH1 0xA PUSH2 0x1CEB JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xCD6 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xCDE PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0xC85 SWAP1 PUSH1 0x1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xCF3 DUP2 CALLER PUSH2 0x1349 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0xD0E DUP5 PUSH2 0x896 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD61 DUP5 DUP5 PUSH2 0xBEE JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xD92 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0x8D2 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0xE16 DUP5 DUP5 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0xE95 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xE4B CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0xEB7 DUP5 DUP5 PUSH2 0xA2E JUMP JUMPDEST ISZERO PUSH2 0xE95 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xF9D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF91 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 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 0xFBB 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0x98C DUP2 PUSH2 0xCE9 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 0x1041 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x103E SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B58 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1069 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 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 PUSH2 0x14A8 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xFBB 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 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1111 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x14FD JUMP JUMPDEST PUSH2 0x111B DUP5 DUP4 PUSH2 0x1564 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1169 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x11A4 JUMPI PUSH2 0x11A4 DUP5 DUP8 DUP5 PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x11AE DUP5 DUP4 PUSH2 0x1598 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x11C4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x15CC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x121C 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 POP JUMP JUMPDEST PUSH0 PUSH2 0x1259 PUSH2 0x1239 DUP4 PUSH2 0x15FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1254 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x124F JUMPI PUSH2 0x124F PUSH2 0x1CF9 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1264 DUP7 DUP7 DUP7 PUSH2 0x1629 JUMP JUMPDEST PUSH2 0xB54 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x12A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x12CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF 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 0x1342 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 0x1169 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1353 DUP3 DUP3 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x98C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x13BC JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1419 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 0x13FB JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 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 0x1437 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1455 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 0x149A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x14B1 DUP3 PUSH2 0x16DF 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 0x14F5 JUMPI PUSH2 0x86C DUP3 DUP3 PUSH2 0x1742 JUMP JUMPDEST PUSH2 0x98C PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x8D2 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x17CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x158D JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x98C PUSH0 DUP4 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15C1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x98C DUP3 PUSH0 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x86C SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x1532 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1612 JUMPI PUSH2 0x1612 PUSH2 0x1D0D JUMP JUMPDEST PUSH2 0x161C SWAP2 SWAP1 PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x165D JUMPI DUP4 DUP3 DUP2 PUSH2 0x1653 JUMPI PUSH2 0x1653 PUSH2 0x1CF9 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x88F JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1674 JUMPI PUSH2 0x1674 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1836 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1714 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 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 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 PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x1D4E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1796 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 0x179B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB54 DUP6 DUP4 DUP4 PUSH2 0x1847 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x17E9 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x1800 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x180D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x8D2 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 0x9DF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x185C JUMPI PUSH2 0x1857 DUP3 PUSH2 0x18A3 JUMP JUMPDEST PUSH2 0x88F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1873 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x189C 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 0x9DF JUMP JUMPDEST POP DUP1 PUSH2 0x88F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x18B3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x88F JUMPI PUSH0 PUSH0 REVERT 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 0x1938 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 0x1955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x196B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1974 DUP4 PUSH2 0x193F 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 0x1993 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 0x19B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x19BD DUP5 PUSH2 0x193F JUMP JUMPDEST SWAP3 POP PUSH2 0x19CB PUSH1 0x20 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x19FD PUSH1 0x20 DUP5 ADD PUSH2 0x193F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x88F DUP3 PUSH2 0x193F JUMP 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 0x1A44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1A4D DUP4 PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A68 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1A78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A92 JUMPI PUSH2 0x1A92 PUSH2 0x1A1F 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 0x1AC1 JUMPI PUSH2 0x1AC1 PUSH2 0x1A1F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1AD8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B09 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1B19 PUSH1 0x20 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH2 0x1B27 PUSH1 0x40 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B41 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1B4A DUP4 PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH2 0x19FD PUSH1 0x20 DUP5 ADD PUSH2 0x193F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B68 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1B83 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1BA1 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 0x764 JUMPI PUSH2 0x764 PUSH2 0x1BA7 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 0x764 JUMPI PUSH2 0x764 PUSH2 0x1BA7 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1C43 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1C27 JUMPI PUSH2 0x1C27 PUSH2 0x1BA7 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1C35 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C0C JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1C59 JUMPI POP PUSH1 0x1 PUSH2 0x764 JUMP JUMPDEST DUP2 PUSH2 0x1C65 JUMPI POP PUSH0 PUSH2 0x764 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1C7B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1C85 JUMPI PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1C96 JUMPI PUSH2 0x1C96 PUSH2 0x1BA7 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x764 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1CC4 JUMPI POP DUP2 DUP2 EXP PUSH2 0x764 JUMP JUMPDEST PUSH2 0x1CD0 PUSH0 NOT DUP5 DUP5 PUSH2 0x1C08 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1CE3 JUMPI PUSH2 0x1CE3 PUSH2 0x1BA7 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x88F PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1C4B 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 0x1D3F 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 PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CALLCODE DUP13 CREATE2 0xA8 RETURN SWAP9 0xC PUSH5 0x2578BA7711 0xC6 0x4E 0xE1 GASLIMIT 0x28 SWAP15 BLOBHASH PUSH24 0x9E99879B30AD248CC28064736F6C634300081C0033000000 ","sourceMap":"941:1666:56:-:0;;;1171:4:8;1128:48;;941:1666:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_2276":{"entryPoint":null,"id":2276,"parameterSlots":0,"returnSlots":0},"@GUARDIAN_ROLE_18371":{"entryPoint":null,"id":18371,"parameterSlots":0,"returnSlots":0},"@LP_ROLE_18366":{"entryPoint":null,"id":18366,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":3214,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":4718,"id":3614,"parameterSlots":4,"returnSlots":0},"@_authorizeUpgrade_18449":{"entryPoint":4029,"id":18449,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":5528,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":6090,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":6059,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":4259,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":3863,"id":2978,"parameterSlots":0,"returnSlots":0},"@_checkRole_2377":{"entryPoint":3305,"id":2377,"parameterSlots":1,"returnSlots":0},"@_checkRole_2398":{"entryPoint":4937,"id":2398,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":3127,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":3227,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_deposit_4364":{"entryPoint":4332,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getAccessControlStorage_2294":{"entryPoint":null,"id":2294,"parameterSlots":0,"returnSlots":1},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_grantRole_2563":{"entryPoint":3581,"id":2563,"parameterSlots":2,"returnSlots":1},"@_mint_3495":{"entryPoint":5476,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":6307,"id":9351,"parameterSlots":1,"returnSlots":0},"@_revokeRole_2609":{"entryPoint":3742,"id":2609,"parameterSlots":2,"returnSlots":1},"@_setImplementation_7796":{"entryPoint":5855,"id":7796,"parameterSlots":1,"returnSlots":0},"@_setRoleAdmin_2516":{"entryPoint":3318,"id":2516,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_3662":{"entryPoint":3414,"id":3662,"parameterSlots":3,"returnSlots":0},"@_transfer_3370":{"entryPoint":3488,"id":3370,"parameterSlots":3,"returnSlots":0},"@_update_3462":{"entryPoint":4994,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":4071,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdraw_4418":{"entryPoint":4472,"id":4418,"parameterSlots":5,"returnSlots":0},"@allowance_3267":{"entryPoint":3054,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2101,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":null,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":2568,"id":3219,"parameterSlots":1,"returnSlots":1},"@convertToAssets_3957":{"entryPoint":2090,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":2986,"id":3941,"parameterSlots":1,"returnSlots":1},"@decimals_3884":{"entryPoint":2264,"id":3884,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":2475,"id":4126,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":5954,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_2419":{"entryPoint":2198,"id":2419,"parameterSlots":1,"returnSlots":1},"@grantRole_2438":{"entryPoint":2230,"id":2438,"parameterSlots":2,"returnSlots":0},"@hasRole_2364":{"entryPoint":2606,"id":2364,"parameterSlots":2,"returnSlots":1},"@maxDeposit_18488":{"entryPoint":2356,"id":18488,"parameterSlots":1,"returnSlots":1},"@maxDeposit_3972":{"entryPoint":null,"id":3972,"parameterSlots":1,"returnSlots":1},"@maxMint_18511":{"entryPoint":null,"id":18511,"parameterSlots":1,"returnSlots":1},"@maxMint_3987":{"entryPoint":null,"id":3987,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":3044,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":2997,"id":4005,"parameterSlots":1,"returnSlots":1},"@mint_4170":{"entryPoint":2660,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":5673,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":4652,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":1898,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":6198,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":2811,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2124,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":2448,"id":2936,"parameterSlots":0,"returnSlots":1},"@redeem_4264":{"entryPoint":2909,"id":4264,"parameterSlots":3,"returnSlots":1},"@renounceRole_2480":{"entryPoint":2305,"id":2480,"parameterSlots":2,"returnSlots":0},"@revokeRole_2457":{"entryPoint":3016,"id":2457,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":5373,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":5580,"id":8729,"parameterSlots":3,"returnSlots":0},"@setRoleAdmin_18465":{"entryPoint":2136,"id":18465,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2339":{"entryPoint":1844,"id":2339,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4512":{"entryPoint":null,"id":4512,"parameterSlots":1,"returnSlots":1},"@symbol_3174":{"entryPoint":2736,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_3925":{"entryPoint":1716,"id":3925,"parameterSlots":0,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":2161,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":2798,"id":3243,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_11308":{"entryPoint":5629,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":2417,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":5288,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":6215,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdraw_4217":{"entryPoint":2823,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_address":{"entryPoint":6463,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":6662,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6960,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":6562,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":6707,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":6490,"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":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":6620,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":6530,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":6348,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":6440,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":7000,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":6903,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7502,"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_address_t_bytes32__to_t_address_t_bytes32__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":7124,"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_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6387,"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},"checked_add_t_uint256":{"entryPoint":7157,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":7099,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7176,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7403,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7243,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":7023,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint8":{"entryPoint":7457,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":7079,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":7417,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":7437,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6687,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:10929:75","nodeType":"YulBlock","src":"0:10929:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"265:217:75","nodeType":"YulBlock","src":"265:217:75","statements":[{"body":{"nativeSrc":"311:16:75","nodeType":"YulBlock","src":"311:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"320:1:75","nodeType":"YulLiteral","src":"320:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"323:1:75","nodeType":"YulLiteral","src":"323:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"313:6:75","nodeType":"YulIdentifier","src":"313:6:75"},"nativeSrc":"313:12:75","nodeType":"YulFunctionCall","src":"313:12:75"},"nativeSrc":"313:12:75","nodeType":"YulExpressionStatement","src":"313:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"286:7:75","nodeType":"YulIdentifier","src":"286:7:75"},{"name":"headStart","nativeSrc":"295:9:75","nodeType":"YulIdentifier","src":"295:9:75"}],"functionName":{"name":"sub","nativeSrc":"282:3:75","nodeType":"YulIdentifier","src":"282:3:75"},"nativeSrc":"282:23:75","nodeType":"YulFunctionCall","src":"282:23:75"},{"kind":"number","nativeSrc":"307:2:75","nodeType":"YulLiteral","src":"307:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"278:3:75","nodeType":"YulIdentifier","src":"278:3:75"},"nativeSrc":"278:32:75","nodeType":"YulFunctionCall","src":"278:32:75"},"nativeSrc":"275:52:75","nodeType":"YulIf","src":"275:52:75"},{"nativeSrc":"336:36:75","nodeType":"YulVariableDeclaration","src":"336:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"362:9:75","nodeType":"YulIdentifier","src":"362:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"349:12:75","nodeType":"YulIdentifier","src":"349:12:75"},"nativeSrc":"349:23:75","nodeType":"YulFunctionCall","src":"349:23:75"},"variables":[{"name":"value","nativeSrc":"340:5:75","nodeType":"YulTypedName","src":"340:5:75","type":""}]},{"body":{"nativeSrc":"436:16:75","nodeType":"YulBlock","src":"436:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"445:1:75","nodeType":"YulLiteral","src":"445:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"448:1:75","nodeType":"YulLiteral","src":"448:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"438:6:75","nodeType":"YulIdentifier","src":"438:6:75"},"nativeSrc":"438:12:75","nodeType":"YulFunctionCall","src":"438:12:75"},"nativeSrc":"438:12:75","nodeType":"YulExpressionStatement","src":"438:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"394:5:75","nodeType":"YulIdentifier","src":"394:5:75"},{"arguments":[{"name":"value","nativeSrc":"405:5:75","nodeType":"YulIdentifier","src":"405:5:75"},{"arguments":[{"kind":"number","nativeSrc":"416:3:75","nodeType":"YulLiteral","src":"416:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"421:10:75","nodeType":"YulLiteral","src":"421:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"412:3:75","nodeType":"YulIdentifier","src":"412:3:75"},"nativeSrc":"412:20:75","nodeType":"YulFunctionCall","src":"412:20:75"}],"functionName":{"name":"and","nativeSrc":"401:3:75","nodeType":"YulIdentifier","src":"401:3:75"},"nativeSrc":"401:32:75","nodeType":"YulFunctionCall","src":"401:32:75"}],"functionName":{"name":"eq","nativeSrc":"391:2:75","nodeType":"YulIdentifier","src":"391:2:75"},"nativeSrc":"391:43:75","nodeType":"YulFunctionCall","src":"391:43:75"}],"functionName":{"name":"iszero","nativeSrc":"384:6:75","nodeType":"YulIdentifier","src":"384:6:75"},"nativeSrc":"384:51:75","nodeType":"YulFunctionCall","src":"384:51:75"},"nativeSrc":"381:71:75","nodeType":"YulIf","src":"381:71:75"},{"nativeSrc":"461:15:75","nodeType":"YulAssignment","src":"461:15:75","value":{"name":"value","nativeSrc":"471:5:75","nodeType":"YulIdentifier","src":"471:5:75"},"variableNames":[{"name":"value0","nativeSrc":"461:6:75","nodeType":"YulIdentifier","src":"461:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"196:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"231:9:75","nodeType":"YulTypedName","src":"231:9:75","type":""},{"name":"dataEnd","nativeSrc":"242:7:75","nodeType":"YulTypedName","src":"242:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"254:6:75","nodeType":"YulTypedName","src":"254:6:75","type":""}],"src":"196:286:75"},{"body":{"nativeSrc":"582:92:75","nodeType":"YulBlock","src":"582:92:75","statements":[{"nativeSrc":"592:26:75","nodeType":"YulAssignment","src":"592:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"604:9:75","nodeType":"YulIdentifier","src":"604:9:75"},{"kind":"number","nativeSrc":"615:2:75","nodeType":"YulLiteral","src":"615:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"600:3:75","nodeType":"YulIdentifier","src":"600:3:75"},"nativeSrc":"600:18:75","nodeType":"YulFunctionCall","src":"600:18:75"},"variableNames":[{"name":"tail","nativeSrc":"592:4:75","nodeType":"YulIdentifier","src":"592:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"634:9:75","nodeType":"YulIdentifier","src":"634:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"659:6:75","nodeType":"YulIdentifier","src":"659:6:75"}],"functionName":{"name":"iszero","nativeSrc":"652:6:75","nodeType":"YulIdentifier","src":"652:6:75"},"nativeSrc":"652:14:75","nodeType":"YulFunctionCall","src":"652:14:75"}],"functionName":{"name":"iszero","nativeSrc":"645:6:75","nodeType":"YulIdentifier","src":"645:6:75"},"nativeSrc":"645:22:75","nodeType":"YulFunctionCall","src":"645:22:75"}],"functionName":{"name":"mstore","nativeSrc":"627:6:75","nodeType":"YulIdentifier","src":"627:6:75"},"nativeSrc":"627:41:75","nodeType":"YulFunctionCall","src":"627:41:75"},"nativeSrc":"627:41:75","nodeType":"YulExpressionStatement","src":"627:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"487:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"551:9:75","nodeType":"YulTypedName","src":"551:9:75","type":""},{"name":"value0","nativeSrc":"562:6:75","nodeType":"YulTypedName","src":"562:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"573:4:75","nodeType":"YulTypedName","src":"573:4:75","type":""}],"src":"487:187:75"},{"body":{"nativeSrc":"800:297:75","nodeType":"YulBlock","src":"800:297:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"817:9:75","nodeType":"YulIdentifier","src":"817:9:75"},{"kind":"number","nativeSrc":"828:2:75","nodeType":"YulLiteral","src":"828:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"810:6:75","nodeType":"YulIdentifier","src":"810:6:75"},"nativeSrc":"810:21:75","nodeType":"YulFunctionCall","src":"810:21:75"},"nativeSrc":"810:21:75","nodeType":"YulExpressionStatement","src":"810:21:75"},{"nativeSrc":"840:27:75","nodeType":"YulVariableDeclaration","src":"840:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"860:6:75","nodeType":"YulIdentifier","src":"860:6:75"}],"functionName":{"name":"mload","nativeSrc":"854:5:75","nodeType":"YulIdentifier","src":"854:5:75"},"nativeSrc":"854:13:75","nodeType":"YulFunctionCall","src":"854:13:75"},"variables":[{"name":"length","nativeSrc":"844:6:75","nodeType":"YulTypedName","src":"844:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"887:9:75","nodeType":"YulIdentifier","src":"887:9:75"},{"kind":"number","nativeSrc":"898:2:75","nodeType":"YulLiteral","src":"898:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"883:3:75","nodeType":"YulIdentifier","src":"883:3:75"},"nativeSrc":"883:18:75","nodeType":"YulFunctionCall","src":"883:18:75"},{"name":"length","nativeSrc":"903:6:75","nodeType":"YulIdentifier","src":"903:6:75"}],"functionName":{"name":"mstore","nativeSrc":"876:6:75","nodeType":"YulIdentifier","src":"876:6:75"},"nativeSrc":"876:34:75","nodeType":"YulFunctionCall","src":"876:34:75"},"nativeSrc":"876:34:75","nodeType":"YulExpressionStatement","src":"876:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"929:9:75","nodeType":"YulIdentifier","src":"929:9:75"},{"kind":"number","nativeSrc":"940:2:75","nodeType":"YulLiteral","src":"940:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"925:3:75","nodeType":"YulIdentifier","src":"925:3:75"},"nativeSrc":"925:18:75","nodeType":"YulFunctionCall","src":"925:18:75"},{"arguments":[{"name":"value0","nativeSrc":"949:6:75","nodeType":"YulIdentifier","src":"949:6:75"},{"kind":"number","nativeSrc":"957:2:75","nodeType":"YulLiteral","src":"957:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"945:3:75","nodeType":"YulIdentifier","src":"945:3:75"},"nativeSrc":"945:15:75","nodeType":"YulFunctionCall","src":"945:15:75"},{"name":"length","nativeSrc":"962:6:75","nodeType":"YulIdentifier","src":"962:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"919:5:75","nodeType":"YulIdentifier","src":"919:5:75"},"nativeSrc":"919:50:75","nodeType":"YulFunctionCall","src":"919:50:75"},"nativeSrc":"919:50:75","nodeType":"YulExpressionStatement","src":"919:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"993:9:75","nodeType":"YulIdentifier","src":"993:9:75"},{"name":"length","nativeSrc":"1004:6:75","nodeType":"YulIdentifier","src":"1004:6:75"}],"functionName":{"name":"add","nativeSrc":"989:3:75","nodeType":"YulIdentifier","src":"989:3:75"},"nativeSrc":"989:22:75","nodeType":"YulFunctionCall","src":"989:22:75"},{"kind":"number","nativeSrc":"1013:2:75","nodeType":"YulLiteral","src":"1013:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"985:3:75","nodeType":"YulIdentifier","src":"985:3:75"},"nativeSrc":"985:31:75","nodeType":"YulFunctionCall","src":"985:31:75"},{"kind":"number","nativeSrc":"1018:1:75","nodeType":"YulLiteral","src":"1018:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"978:6:75","nodeType":"YulIdentifier","src":"978:6:75"},"nativeSrc":"978:42:75","nodeType":"YulFunctionCall","src":"978:42:75"},"nativeSrc":"978:42:75","nodeType":"YulExpressionStatement","src":"978:42:75"},{"nativeSrc":"1029:62:75","nodeType":"YulAssignment","src":"1029:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1045:9:75","nodeType":"YulIdentifier","src":"1045:9:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1064:6:75","nodeType":"YulIdentifier","src":"1064:6:75"},{"kind":"number","nativeSrc":"1072:2:75","nodeType":"YulLiteral","src":"1072:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1060:3:75","nodeType":"YulIdentifier","src":"1060:3:75"},"nativeSrc":"1060:15:75","nodeType":"YulFunctionCall","src":"1060:15:75"},{"arguments":[{"kind":"number","nativeSrc":"1081:2:75","nodeType":"YulLiteral","src":"1081:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1077:3:75","nodeType":"YulIdentifier","src":"1077:3:75"},"nativeSrc":"1077:7:75","nodeType":"YulFunctionCall","src":"1077:7:75"}],"functionName":{"name":"and","nativeSrc":"1056:3:75","nodeType":"YulIdentifier","src":"1056:3:75"},"nativeSrc":"1056:29:75","nodeType":"YulFunctionCall","src":"1056:29:75"}],"functionName":{"name":"add","nativeSrc":"1041:3:75","nodeType":"YulIdentifier","src":"1041:3:75"},"nativeSrc":"1041:45:75","nodeType":"YulFunctionCall","src":"1041:45:75"},{"kind":"number","nativeSrc":"1088:2:75","nodeType":"YulLiteral","src":"1088:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1037:3:75","nodeType":"YulIdentifier","src":"1037:3:75"},"nativeSrc":"1037:54:75","nodeType":"YulFunctionCall","src":"1037:54:75"},"variableNames":[{"name":"tail","nativeSrc":"1029:4:75","nodeType":"YulIdentifier","src":"1029:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"679:418:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"769:9:75","nodeType":"YulTypedName","src":"769:9:75","type":""},{"name":"value0","nativeSrc":"780:6:75","nodeType":"YulTypedName","src":"780:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"791:4:75","nodeType":"YulTypedName","src":"791:4:75","type":""}],"src":"679:418:75"},{"body":{"nativeSrc":"1172:156:75","nodeType":"YulBlock","src":"1172:156:75","statements":[{"body":{"nativeSrc":"1218:16:75","nodeType":"YulBlock","src":"1218:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1227:1:75","nodeType":"YulLiteral","src":"1227:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1230:1:75","nodeType":"YulLiteral","src":"1230:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1220:6:75","nodeType":"YulIdentifier","src":"1220:6:75"},"nativeSrc":"1220:12:75","nodeType":"YulFunctionCall","src":"1220:12:75"},"nativeSrc":"1220:12:75","nodeType":"YulExpressionStatement","src":"1220:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1193:7:75","nodeType":"YulIdentifier","src":"1193:7:75"},{"name":"headStart","nativeSrc":"1202:9:75","nodeType":"YulIdentifier","src":"1202:9:75"}],"functionName":{"name":"sub","nativeSrc":"1189:3:75","nodeType":"YulIdentifier","src":"1189:3:75"},"nativeSrc":"1189:23:75","nodeType":"YulFunctionCall","src":"1189:23:75"},{"kind":"number","nativeSrc":"1214:2:75","nodeType":"YulLiteral","src":"1214:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1185:3:75","nodeType":"YulIdentifier","src":"1185:3:75"},"nativeSrc":"1185:32:75","nodeType":"YulFunctionCall","src":"1185:32:75"},"nativeSrc":"1182:52:75","nodeType":"YulIf","src":"1182:52:75"},{"nativeSrc":"1243:14:75","nodeType":"YulVariableDeclaration","src":"1243:14:75","value":{"kind":"number","nativeSrc":"1256:1:75","nodeType":"YulLiteral","src":"1256:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1247:5:75","nodeType":"YulTypedName","src":"1247:5:75","type":""}]},{"nativeSrc":"1266:32:75","nodeType":"YulAssignment","src":"1266:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1288:9:75","nodeType":"YulIdentifier","src":"1288:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1275:12:75","nodeType":"YulIdentifier","src":"1275:12:75"},"nativeSrc":"1275:23:75","nodeType":"YulFunctionCall","src":"1275:23:75"},"variableNames":[{"name":"value","nativeSrc":"1266:5:75","nodeType":"YulIdentifier","src":"1266:5:75"}]},{"nativeSrc":"1307:15:75","nodeType":"YulAssignment","src":"1307:15:75","value":{"name":"value","nativeSrc":"1317:5:75","nodeType":"YulIdentifier","src":"1317:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1307:6:75","nodeType":"YulIdentifier","src":"1307:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1102:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1138:9:75","nodeType":"YulTypedName","src":"1138:9:75","type":""},{"name":"dataEnd","nativeSrc":"1149:7:75","nodeType":"YulTypedName","src":"1149:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1161:6:75","nodeType":"YulTypedName","src":"1161:6:75","type":""}],"src":"1102:226:75"},{"body":{"nativeSrc":"1382:124:75","nodeType":"YulBlock","src":"1382:124:75","statements":[{"nativeSrc":"1392:29:75","nodeType":"YulAssignment","src":"1392:29:75","value":{"arguments":[{"name":"offset","nativeSrc":"1414:6:75","nodeType":"YulIdentifier","src":"1414:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"1401:12:75","nodeType":"YulIdentifier","src":"1401:12:75"},"nativeSrc":"1401:20:75","nodeType":"YulFunctionCall","src":"1401:20:75"},"variableNames":[{"name":"value","nativeSrc":"1392:5:75","nodeType":"YulIdentifier","src":"1392:5:75"}]},{"body":{"nativeSrc":"1484:16:75","nodeType":"YulBlock","src":"1484:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1493:1:75","nodeType":"YulLiteral","src":"1493:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1496:1:75","nodeType":"YulLiteral","src":"1496:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1486:6:75","nodeType":"YulIdentifier","src":"1486:6:75"},"nativeSrc":"1486:12:75","nodeType":"YulFunctionCall","src":"1486:12:75"},"nativeSrc":"1486:12:75","nodeType":"YulExpressionStatement","src":"1486:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1443:5:75","nodeType":"YulIdentifier","src":"1443:5:75"},{"arguments":[{"name":"value","nativeSrc":"1454:5:75","nodeType":"YulIdentifier","src":"1454:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1469:3:75","nodeType":"YulLiteral","src":"1469:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1474:1:75","nodeType":"YulLiteral","src":"1474:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1465:3:75","nodeType":"YulIdentifier","src":"1465:3:75"},"nativeSrc":"1465:11:75","nodeType":"YulFunctionCall","src":"1465:11:75"},{"kind":"number","nativeSrc":"1478:1:75","nodeType":"YulLiteral","src":"1478:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1461:3:75","nodeType":"YulIdentifier","src":"1461:3:75"},"nativeSrc":"1461:19:75","nodeType":"YulFunctionCall","src":"1461:19:75"}],"functionName":{"name":"and","nativeSrc":"1450:3:75","nodeType":"YulIdentifier","src":"1450:3:75"},"nativeSrc":"1450:31:75","nodeType":"YulFunctionCall","src":"1450:31:75"}],"functionName":{"name":"eq","nativeSrc":"1440:2:75","nodeType":"YulIdentifier","src":"1440:2:75"},"nativeSrc":"1440:42:75","nodeType":"YulFunctionCall","src":"1440:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1433:6:75","nodeType":"YulIdentifier","src":"1433:6:75"},"nativeSrc":"1433:50:75","nodeType":"YulFunctionCall","src":"1433:50:75"},"nativeSrc":"1430:70:75","nodeType":"YulIf","src":"1430:70:75"}]},"name":"abi_decode_address","nativeSrc":"1333:173:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1361:6:75","nodeType":"YulTypedName","src":"1361:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1372:5:75","nodeType":"YulTypedName","src":"1372:5:75","type":""}],"src":"1333:173:75"},{"body":{"nativeSrc":"1598:213:75","nodeType":"YulBlock","src":"1598:213:75","statements":[{"body":{"nativeSrc":"1644:16:75","nodeType":"YulBlock","src":"1644:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1653:1:75","nodeType":"YulLiteral","src":"1653:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1656:1:75","nodeType":"YulLiteral","src":"1656:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1646:6:75","nodeType":"YulIdentifier","src":"1646:6:75"},"nativeSrc":"1646:12:75","nodeType":"YulFunctionCall","src":"1646:12:75"},"nativeSrc":"1646:12:75","nodeType":"YulExpressionStatement","src":"1646:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1619:7:75","nodeType":"YulIdentifier","src":"1619:7:75"},{"name":"headStart","nativeSrc":"1628:9:75","nodeType":"YulIdentifier","src":"1628:9:75"}],"functionName":{"name":"sub","nativeSrc":"1615:3:75","nodeType":"YulIdentifier","src":"1615:3:75"},"nativeSrc":"1615:23:75","nodeType":"YulFunctionCall","src":"1615:23:75"},{"kind":"number","nativeSrc":"1640:2:75","nodeType":"YulLiteral","src":"1640:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1611:3:75","nodeType":"YulIdentifier","src":"1611:3:75"},"nativeSrc":"1611:32:75","nodeType":"YulFunctionCall","src":"1611:32:75"},"nativeSrc":"1608:52:75","nodeType":"YulIf","src":"1608:52:75"},{"nativeSrc":"1669:39:75","nodeType":"YulAssignment","src":"1669:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1698:9:75","nodeType":"YulIdentifier","src":"1698:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1679:18:75","nodeType":"YulIdentifier","src":"1679:18:75"},"nativeSrc":"1679:29:75","nodeType":"YulFunctionCall","src":"1679:29:75"},"variableNames":[{"name":"value0","nativeSrc":"1669:6:75","nodeType":"YulIdentifier","src":"1669:6:75"}]},{"nativeSrc":"1717:14:75","nodeType":"YulVariableDeclaration","src":"1717:14:75","value":{"kind":"number","nativeSrc":"1730:1:75","nodeType":"YulLiteral","src":"1730:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1721:5:75","nodeType":"YulTypedName","src":"1721:5:75","type":""}]},{"nativeSrc":"1740:41:75","nodeType":"YulAssignment","src":"1740:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1766:9:75","nodeType":"YulIdentifier","src":"1766:9:75"},{"kind":"number","nativeSrc":"1777:2:75","nodeType":"YulLiteral","src":"1777:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1762:3:75","nodeType":"YulIdentifier","src":"1762:3:75"},"nativeSrc":"1762:18:75","nodeType":"YulFunctionCall","src":"1762:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1749:12:75","nodeType":"YulIdentifier","src":"1749:12:75"},"nativeSrc":"1749:32:75","nodeType":"YulFunctionCall","src":"1749:32:75"},"variableNames":[{"name":"value","nativeSrc":"1740:5:75","nodeType":"YulIdentifier","src":"1740:5:75"}]},{"nativeSrc":"1790:15:75","nodeType":"YulAssignment","src":"1790:15:75","value":{"name":"value","nativeSrc":"1800:5:75","nodeType":"YulIdentifier","src":"1800:5:75"},"variableNames":[{"name":"value1","nativeSrc":"1790:6:75","nodeType":"YulIdentifier","src":"1790:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1511:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1556:9:75","nodeType":"YulTypedName","src":"1556:9:75","type":""},{"name":"dataEnd","nativeSrc":"1567:7:75","nodeType":"YulTypedName","src":"1567:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1579:6:75","nodeType":"YulTypedName","src":"1579:6:75","type":""},{"name":"value1","nativeSrc":"1587:6:75","nodeType":"YulTypedName","src":"1587:6:75","type":""}],"src":"1511:300:75"},{"body":{"nativeSrc":"1903:259:75","nodeType":"YulBlock","src":"1903:259:75","statements":[{"body":{"nativeSrc":"1949:16:75","nodeType":"YulBlock","src":"1949:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1958:1:75","nodeType":"YulLiteral","src":"1958:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1961:1:75","nodeType":"YulLiteral","src":"1961:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1951:6:75","nodeType":"YulIdentifier","src":"1951:6:75"},"nativeSrc":"1951:12:75","nodeType":"YulFunctionCall","src":"1951:12:75"},"nativeSrc":"1951:12:75","nodeType":"YulExpressionStatement","src":"1951:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1924:7:75","nodeType":"YulIdentifier","src":"1924:7:75"},{"name":"headStart","nativeSrc":"1933:9:75","nodeType":"YulIdentifier","src":"1933:9:75"}],"functionName":{"name":"sub","nativeSrc":"1920:3:75","nodeType":"YulIdentifier","src":"1920:3:75"},"nativeSrc":"1920:23:75","nodeType":"YulFunctionCall","src":"1920:23:75"},{"kind":"number","nativeSrc":"1945:2:75","nodeType":"YulLiteral","src":"1945:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1916:3:75","nodeType":"YulIdentifier","src":"1916:3:75"},"nativeSrc":"1916:32:75","nodeType":"YulFunctionCall","src":"1916:32:75"},"nativeSrc":"1913:52:75","nodeType":"YulIf","src":"1913:52:75"},{"nativeSrc":"1974:14:75","nodeType":"YulVariableDeclaration","src":"1974:14:75","value":{"kind":"number","nativeSrc":"1987:1:75","nodeType":"YulLiteral","src":"1987:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1978:5:75","nodeType":"YulTypedName","src":"1978:5:75","type":""}]},{"nativeSrc":"1997:32:75","nodeType":"YulAssignment","src":"1997:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2019:9:75","nodeType":"YulIdentifier","src":"2019:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2006:12:75","nodeType":"YulIdentifier","src":"2006:12:75"},"nativeSrc":"2006:23:75","nodeType":"YulFunctionCall","src":"2006:23:75"},"variableNames":[{"name":"value","nativeSrc":"1997:5:75","nodeType":"YulIdentifier","src":"1997:5:75"}]},{"nativeSrc":"2038:15:75","nodeType":"YulAssignment","src":"2038:15:75","value":{"name":"value","nativeSrc":"2048:5:75","nodeType":"YulIdentifier","src":"2048:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2038:6:75","nodeType":"YulIdentifier","src":"2038:6:75"}]},{"nativeSrc":"2062:16:75","nodeType":"YulVariableDeclaration","src":"2062:16:75","value":{"kind":"number","nativeSrc":"2077:1:75","nodeType":"YulLiteral","src":"2077:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"2066:7:75","nodeType":"YulTypedName","src":"2066:7:75","type":""}]},{"nativeSrc":"2087:43:75","nodeType":"YulAssignment","src":"2087:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2115:9:75","nodeType":"YulIdentifier","src":"2115:9:75"},{"kind":"number","nativeSrc":"2126:2:75","nodeType":"YulLiteral","src":"2126:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2111:3:75","nodeType":"YulIdentifier","src":"2111:3:75"},"nativeSrc":"2111:18:75","nodeType":"YulFunctionCall","src":"2111:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2098:12:75","nodeType":"YulIdentifier","src":"2098:12:75"},"nativeSrc":"2098:32:75","nodeType":"YulFunctionCall","src":"2098:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"2087:7:75","nodeType":"YulIdentifier","src":"2087:7:75"}]},{"nativeSrc":"2139:17:75","nodeType":"YulAssignment","src":"2139:17:75","value":{"name":"value_1","nativeSrc":"2149:7:75","nodeType":"YulIdentifier","src":"2149:7:75"},"variableNames":[{"name":"value1","nativeSrc":"2139:6:75","nodeType":"YulIdentifier","src":"2139:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nativeSrc":"1816:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1861:9:75","nodeType":"YulTypedName","src":"1861:9:75","type":""},{"name":"dataEnd","nativeSrc":"1872:7:75","nodeType":"YulTypedName","src":"1872:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1884:6:75","nodeType":"YulTypedName","src":"1884:6:75","type":""},{"name":"value1","nativeSrc":"1892:6:75","nodeType":"YulTypedName","src":"1892:6:75","type":""}],"src":"1816:346:75"},{"body":{"nativeSrc":"2271:270:75","nodeType":"YulBlock","src":"2271:270:75","statements":[{"body":{"nativeSrc":"2317:16:75","nodeType":"YulBlock","src":"2317:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2326:1:75","nodeType":"YulLiteral","src":"2326:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2329:1:75","nodeType":"YulLiteral","src":"2329:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2319:6:75","nodeType":"YulIdentifier","src":"2319:6:75"},"nativeSrc":"2319:12:75","nodeType":"YulFunctionCall","src":"2319:12:75"},"nativeSrc":"2319:12:75","nodeType":"YulExpressionStatement","src":"2319:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2292:7:75","nodeType":"YulIdentifier","src":"2292:7:75"},{"name":"headStart","nativeSrc":"2301:9:75","nodeType":"YulIdentifier","src":"2301:9:75"}],"functionName":{"name":"sub","nativeSrc":"2288:3:75","nodeType":"YulIdentifier","src":"2288:3:75"},"nativeSrc":"2288:23:75","nodeType":"YulFunctionCall","src":"2288:23:75"},{"kind":"number","nativeSrc":"2313:2:75","nodeType":"YulLiteral","src":"2313:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2284:3:75","nodeType":"YulIdentifier","src":"2284:3:75"},"nativeSrc":"2284:32:75","nodeType":"YulFunctionCall","src":"2284:32:75"},"nativeSrc":"2281:52:75","nodeType":"YulIf","src":"2281:52:75"},{"nativeSrc":"2342:39:75","nodeType":"YulAssignment","src":"2342:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2371:9:75","nodeType":"YulIdentifier","src":"2371:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2352:18:75","nodeType":"YulIdentifier","src":"2352:18:75"},"nativeSrc":"2352:29:75","nodeType":"YulFunctionCall","src":"2352:29:75"},"variableNames":[{"name":"value0","nativeSrc":"2342:6:75","nodeType":"YulIdentifier","src":"2342:6:75"}]},{"nativeSrc":"2390:48:75","nodeType":"YulAssignment","src":"2390:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2423:9:75","nodeType":"YulIdentifier","src":"2423:9:75"},{"kind":"number","nativeSrc":"2434:2:75","nodeType":"YulLiteral","src":"2434:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2419:3:75","nodeType":"YulIdentifier","src":"2419:3:75"},"nativeSrc":"2419:18:75","nodeType":"YulFunctionCall","src":"2419:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2400:18:75","nodeType":"YulIdentifier","src":"2400:18:75"},"nativeSrc":"2400:38:75","nodeType":"YulFunctionCall","src":"2400:38:75"},"variableNames":[{"name":"value1","nativeSrc":"2390:6:75","nodeType":"YulIdentifier","src":"2390:6:75"}]},{"nativeSrc":"2447:14:75","nodeType":"YulVariableDeclaration","src":"2447:14:75","value":{"kind":"number","nativeSrc":"2460:1:75","nodeType":"YulLiteral","src":"2460:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2451:5:75","nodeType":"YulTypedName","src":"2451:5:75","type":""}]},{"nativeSrc":"2470:41:75","nodeType":"YulAssignment","src":"2470:41:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2496:9:75","nodeType":"YulIdentifier","src":"2496:9:75"},{"kind":"number","nativeSrc":"2507:2:75","nodeType":"YulLiteral","src":"2507:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2492:3:75","nodeType":"YulIdentifier","src":"2492:3:75"},"nativeSrc":"2492:18:75","nodeType":"YulFunctionCall","src":"2492:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2479:12:75","nodeType":"YulIdentifier","src":"2479:12:75"},"nativeSrc":"2479:32:75","nodeType":"YulFunctionCall","src":"2479:32:75"},"variableNames":[{"name":"value","nativeSrc":"2470:5:75","nodeType":"YulIdentifier","src":"2470:5:75"}]},{"nativeSrc":"2520:15:75","nodeType":"YulAssignment","src":"2520:15:75","value":{"name":"value","nativeSrc":"2530:5:75","nodeType":"YulIdentifier","src":"2530:5:75"},"variableNames":[{"name":"value2","nativeSrc":"2520:6:75","nodeType":"YulIdentifier","src":"2520:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"2167:374:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2221:9:75","nodeType":"YulTypedName","src":"2221:9:75","type":""},{"name":"dataEnd","nativeSrc":"2232:7:75","nodeType":"YulTypedName","src":"2232:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2244:6:75","nodeType":"YulTypedName","src":"2244:6:75","type":""},{"name":"value1","nativeSrc":"2252:6:75","nodeType":"YulTypedName","src":"2252:6:75","type":""},{"name":"value2","nativeSrc":"2260:6:75","nodeType":"YulTypedName","src":"2260:6:75","type":""}],"src":"2167:374:75"},{"body":{"nativeSrc":"2616:156:75","nodeType":"YulBlock","src":"2616:156:75","statements":[{"body":{"nativeSrc":"2662:16:75","nodeType":"YulBlock","src":"2662:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2671:1:75","nodeType":"YulLiteral","src":"2671:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2674:1:75","nodeType":"YulLiteral","src":"2674:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2664:6:75","nodeType":"YulIdentifier","src":"2664:6:75"},"nativeSrc":"2664:12:75","nodeType":"YulFunctionCall","src":"2664:12:75"},"nativeSrc":"2664:12:75","nodeType":"YulExpressionStatement","src":"2664:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2637:7:75","nodeType":"YulIdentifier","src":"2637:7:75"},{"name":"headStart","nativeSrc":"2646:9:75","nodeType":"YulIdentifier","src":"2646:9:75"}],"functionName":{"name":"sub","nativeSrc":"2633:3:75","nodeType":"YulIdentifier","src":"2633:3:75"},"nativeSrc":"2633:23:75","nodeType":"YulFunctionCall","src":"2633:23:75"},{"kind":"number","nativeSrc":"2658:2:75","nodeType":"YulLiteral","src":"2658:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2629:3:75","nodeType":"YulIdentifier","src":"2629:3:75"},"nativeSrc":"2629:32:75","nodeType":"YulFunctionCall","src":"2629:32:75"},"nativeSrc":"2626:52:75","nodeType":"YulIf","src":"2626:52:75"},{"nativeSrc":"2687:14:75","nodeType":"YulVariableDeclaration","src":"2687:14:75","value":{"kind":"number","nativeSrc":"2700:1:75","nodeType":"YulLiteral","src":"2700:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2691:5:75","nodeType":"YulTypedName","src":"2691:5:75","type":""}]},{"nativeSrc":"2710:32:75","nodeType":"YulAssignment","src":"2710:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2732:9:75","nodeType":"YulIdentifier","src":"2732:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2719:12:75","nodeType":"YulIdentifier","src":"2719:12:75"},"nativeSrc":"2719:23:75","nodeType":"YulFunctionCall","src":"2719:23:75"},"variableNames":[{"name":"value","nativeSrc":"2710:5:75","nodeType":"YulIdentifier","src":"2710:5:75"}]},{"nativeSrc":"2751:15:75","nodeType":"YulAssignment","src":"2751:15:75","value":{"name":"value","nativeSrc":"2761:5:75","nodeType":"YulIdentifier","src":"2761:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2751:6:75","nodeType":"YulIdentifier","src":"2751:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"2546:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2582:9:75","nodeType":"YulTypedName","src":"2582:9:75","type":""},{"name":"dataEnd","nativeSrc":"2593:7:75","nodeType":"YulTypedName","src":"2593:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2605:6:75","nodeType":"YulTypedName","src":"2605:6:75","type":""}],"src":"2546:226:75"},{"body":{"nativeSrc":"2878:76:75","nodeType":"YulBlock","src":"2878:76:75","statements":[{"nativeSrc":"2888:26:75","nodeType":"YulAssignment","src":"2888:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2900:9:75","nodeType":"YulIdentifier","src":"2900:9:75"},{"kind":"number","nativeSrc":"2911:2:75","nodeType":"YulLiteral","src":"2911:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2896:3:75","nodeType":"YulIdentifier","src":"2896:3:75"},"nativeSrc":"2896:18:75","nodeType":"YulFunctionCall","src":"2896:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2888:4:75","nodeType":"YulIdentifier","src":"2888:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2930:9:75","nodeType":"YulIdentifier","src":"2930:9:75"},{"name":"value0","nativeSrc":"2941:6:75","nodeType":"YulIdentifier","src":"2941:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2923:6:75","nodeType":"YulIdentifier","src":"2923:6:75"},"nativeSrc":"2923:25:75","nodeType":"YulFunctionCall","src":"2923:25:75"},"nativeSrc":"2923:25:75","nodeType":"YulExpressionStatement","src":"2923:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"2777:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2847:9:75","nodeType":"YulTypedName","src":"2847:9:75","type":""},{"name":"value0","nativeSrc":"2858:6:75","nodeType":"YulTypedName","src":"2858:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2869:4:75","nodeType":"YulTypedName","src":"2869:4:75","type":""}],"src":"2777:177:75"},{"body":{"nativeSrc":"3046:213:75","nodeType":"YulBlock","src":"3046:213:75","statements":[{"body":{"nativeSrc":"3092:16:75","nodeType":"YulBlock","src":"3092:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3101:1:75","nodeType":"YulLiteral","src":"3101:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3104:1:75","nodeType":"YulLiteral","src":"3104:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3094:6:75","nodeType":"YulIdentifier","src":"3094:6:75"},"nativeSrc":"3094:12:75","nodeType":"YulFunctionCall","src":"3094:12:75"},"nativeSrc":"3094:12:75","nodeType":"YulExpressionStatement","src":"3094:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3067:7:75","nodeType":"YulIdentifier","src":"3067:7:75"},{"name":"headStart","nativeSrc":"3076:9:75","nodeType":"YulIdentifier","src":"3076:9:75"}],"functionName":{"name":"sub","nativeSrc":"3063:3:75","nodeType":"YulIdentifier","src":"3063:3:75"},"nativeSrc":"3063:23:75","nodeType":"YulFunctionCall","src":"3063:23:75"},{"kind":"number","nativeSrc":"3088:2:75","nodeType":"YulLiteral","src":"3088:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3059:3:75","nodeType":"YulIdentifier","src":"3059:3:75"},"nativeSrc":"3059:32:75","nodeType":"YulFunctionCall","src":"3059:32:75"},"nativeSrc":"3056:52:75","nodeType":"YulIf","src":"3056:52:75"},{"nativeSrc":"3117:14:75","nodeType":"YulVariableDeclaration","src":"3117:14:75","value":{"kind":"number","nativeSrc":"3130:1:75","nodeType":"YulLiteral","src":"3130:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3121:5:75","nodeType":"YulTypedName","src":"3121:5:75","type":""}]},{"nativeSrc":"3140:32:75","nodeType":"YulAssignment","src":"3140:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3162:9:75","nodeType":"YulIdentifier","src":"3162:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3149:12:75","nodeType":"YulIdentifier","src":"3149:12:75"},"nativeSrc":"3149:23:75","nodeType":"YulFunctionCall","src":"3149:23:75"},"variableNames":[{"name":"value","nativeSrc":"3140:5:75","nodeType":"YulIdentifier","src":"3140:5:75"}]},{"nativeSrc":"3181:15:75","nodeType":"YulAssignment","src":"3181:15:75","value":{"name":"value","nativeSrc":"3191:5:75","nodeType":"YulIdentifier","src":"3191:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3181:6:75","nodeType":"YulIdentifier","src":"3181:6:75"}]},{"nativeSrc":"3205:48:75","nodeType":"YulAssignment","src":"3205:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3238:9:75","nodeType":"YulIdentifier","src":"3238:9:75"},{"kind":"number","nativeSrc":"3249:2:75","nodeType":"YulLiteral","src":"3249:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3234:3:75","nodeType":"YulIdentifier","src":"3234:3:75"},"nativeSrc":"3234:18:75","nodeType":"YulFunctionCall","src":"3234:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3215:18:75","nodeType":"YulIdentifier","src":"3215:18:75"},"nativeSrc":"3215:38:75","nodeType":"YulFunctionCall","src":"3215:38:75"},"variableNames":[{"name":"value1","nativeSrc":"3205:6:75","nodeType":"YulIdentifier","src":"3205:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"2959:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3004:9:75","nodeType":"YulTypedName","src":"3004:9:75","type":""},{"name":"dataEnd","nativeSrc":"3015:7:75","nodeType":"YulTypedName","src":"3015:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3027:6:75","nodeType":"YulTypedName","src":"3027:6:75","type":""},{"name":"value1","nativeSrc":"3035:6:75","nodeType":"YulTypedName","src":"3035:6:75","type":""}],"src":"2959:300:75"},{"body":{"nativeSrc":"3361:87:75","nodeType":"YulBlock","src":"3361:87:75","statements":[{"nativeSrc":"3371:26:75","nodeType":"YulAssignment","src":"3371:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3383:9:75","nodeType":"YulIdentifier","src":"3383:9:75"},{"kind":"number","nativeSrc":"3394:2:75","nodeType":"YulLiteral","src":"3394:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3379:3:75","nodeType":"YulIdentifier","src":"3379:3:75"},"nativeSrc":"3379:18:75","nodeType":"YulFunctionCall","src":"3379:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3371:4:75","nodeType":"YulIdentifier","src":"3371:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3413:9:75","nodeType":"YulIdentifier","src":"3413:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3428:6:75","nodeType":"YulIdentifier","src":"3428:6:75"},{"kind":"number","nativeSrc":"3436:4:75","nodeType":"YulLiteral","src":"3436:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3424:3:75","nodeType":"YulIdentifier","src":"3424:3:75"},"nativeSrc":"3424:17:75","nodeType":"YulFunctionCall","src":"3424:17:75"}],"functionName":{"name":"mstore","nativeSrc":"3406:6:75","nodeType":"YulIdentifier","src":"3406:6:75"},"nativeSrc":"3406:36:75","nodeType":"YulFunctionCall","src":"3406:36:75"},"nativeSrc":"3406:36:75","nodeType":"YulExpressionStatement","src":"3406:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"3264:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3330:9:75","nodeType":"YulTypedName","src":"3330:9:75","type":""},{"name":"value0","nativeSrc":"3341:6:75","nodeType":"YulTypedName","src":"3341:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3352:4:75","nodeType":"YulTypedName","src":"3352:4:75","type":""}],"src":"3264:184:75"},{"body":{"nativeSrc":"3554:102:75","nodeType":"YulBlock","src":"3554:102:75","statements":[{"nativeSrc":"3564:26:75","nodeType":"YulAssignment","src":"3564:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3576:9:75","nodeType":"YulIdentifier","src":"3576:9:75"},{"kind":"number","nativeSrc":"3587:2:75","nodeType":"YulLiteral","src":"3587:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3572:3:75","nodeType":"YulIdentifier","src":"3572:3:75"},"nativeSrc":"3572:18:75","nodeType":"YulFunctionCall","src":"3572:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3564:4:75","nodeType":"YulIdentifier","src":"3564:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3606:9:75","nodeType":"YulIdentifier","src":"3606:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3621:6:75","nodeType":"YulIdentifier","src":"3621:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3637:3:75","nodeType":"YulLiteral","src":"3637:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3642:1:75","nodeType":"YulLiteral","src":"3642:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3633:3:75","nodeType":"YulIdentifier","src":"3633:3:75"},"nativeSrc":"3633:11:75","nodeType":"YulFunctionCall","src":"3633:11:75"},{"kind":"number","nativeSrc":"3646:1:75","nodeType":"YulLiteral","src":"3646:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3629:3:75","nodeType":"YulIdentifier","src":"3629:3:75"},"nativeSrc":"3629:19:75","nodeType":"YulFunctionCall","src":"3629:19:75"}],"functionName":{"name":"and","nativeSrc":"3617:3:75","nodeType":"YulIdentifier","src":"3617:3:75"},"nativeSrc":"3617:32:75","nodeType":"YulFunctionCall","src":"3617:32:75"}],"functionName":{"name":"mstore","nativeSrc":"3599:6:75","nodeType":"YulIdentifier","src":"3599:6:75"},"nativeSrc":"3599:51:75","nodeType":"YulFunctionCall","src":"3599:51:75"},"nativeSrc":"3599:51:75","nodeType":"YulExpressionStatement","src":"3599:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3453:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3523:9:75","nodeType":"YulTypedName","src":"3523:9:75","type":""},{"name":"value0","nativeSrc":"3534:6:75","nodeType":"YulTypedName","src":"3534:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3545:4:75","nodeType":"YulTypedName","src":"3545:4:75","type":""}],"src":"3453:203:75"},{"body":{"nativeSrc":"3731:116:75","nodeType":"YulBlock","src":"3731:116:75","statements":[{"body":{"nativeSrc":"3777:16:75","nodeType":"YulBlock","src":"3777:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3786:1:75","nodeType":"YulLiteral","src":"3786:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3789:1:75","nodeType":"YulLiteral","src":"3789:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3779:6:75","nodeType":"YulIdentifier","src":"3779:6:75"},"nativeSrc":"3779:12:75","nodeType":"YulFunctionCall","src":"3779:12:75"},"nativeSrc":"3779:12:75","nodeType":"YulExpressionStatement","src":"3779:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3752:7:75","nodeType":"YulIdentifier","src":"3752:7:75"},{"name":"headStart","nativeSrc":"3761:9:75","nodeType":"YulIdentifier","src":"3761:9:75"}],"functionName":{"name":"sub","nativeSrc":"3748:3:75","nodeType":"YulIdentifier","src":"3748:3:75"},"nativeSrc":"3748:23:75","nodeType":"YulFunctionCall","src":"3748:23:75"},{"kind":"number","nativeSrc":"3773:2:75","nodeType":"YulLiteral","src":"3773:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3744:3:75","nodeType":"YulIdentifier","src":"3744:3:75"},"nativeSrc":"3744:32:75","nodeType":"YulFunctionCall","src":"3744:32:75"},"nativeSrc":"3741:52:75","nodeType":"YulIf","src":"3741:52:75"},{"nativeSrc":"3802:39:75","nodeType":"YulAssignment","src":"3802:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3831:9:75","nodeType":"YulIdentifier","src":"3831:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3812:18:75","nodeType":"YulIdentifier","src":"3812:18:75"},"nativeSrc":"3812:29:75","nodeType":"YulFunctionCall","src":"3812:29:75"},"variableNames":[{"name":"value0","nativeSrc":"3802:6:75","nodeType":"YulIdentifier","src":"3802:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3661:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3697:9:75","nodeType":"YulTypedName","src":"3697:9:75","type":""},{"name":"dataEnd","nativeSrc":"3708:7:75","nodeType":"YulTypedName","src":"3708:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3720:6:75","nodeType":"YulTypedName","src":"3720:6:75","type":""}],"src":"3661:186:75"},{"body":{"nativeSrc":"3884:95:75","nodeType":"YulBlock","src":"3884:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3901:1:75","nodeType":"YulLiteral","src":"3901:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3908:3:75","nodeType":"YulLiteral","src":"3908:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3913:10:75","nodeType":"YulLiteral","src":"3913:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3904:3:75","nodeType":"YulIdentifier","src":"3904:3:75"},"nativeSrc":"3904:20:75","nodeType":"YulFunctionCall","src":"3904:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3894:6:75","nodeType":"YulIdentifier","src":"3894:6:75"},"nativeSrc":"3894:31:75","nodeType":"YulFunctionCall","src":"3894:31:75"},"nativeSrc":"3894:31:75","nodeType":"YulExpressionStatement","src":"3894:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3941:1:75","nodeType":"YulLiteral","src":"3941:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3944:4:75","nodeType":"YulLiteral","src":"3944:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3934:6:75","nodeType":"YulIdentifier","src":"3934:6:75"},"nativeSrc":"3934:15:75","nodeType":"YulFunctionCall","src":"3934:15:75"},"nativeSrc":"3934:15:75","nodeType":"YulExpressionStatement","src":"3934:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3965:1:75","nodeType":"YulLiteral","src":"3965:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3968:4:75","nodeType":"YulLiteral","src":"3968:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3958:6:75","nodeType":"YulIdentifier","src":"3958:6:75"},"nativeSrc":"3958:15:75","nodeType":"YulFunctionCall","src":"3958:15:75"},"nativeSrc":"3958:15:75","nodeType":"YulExpressionStatement","src":"3958:15:75"}]},"name":"panic_error_0x41","nativeSrc":"3852:127:75","nodeType":"YulFunctionDefinition","src":"3852:127:75"},{"body":{"nativeSrc":"4080:922:75","nodeType":"YulBlock","src":"4080:922:75","statements":[{"body":{"nativeSrc":"4126:16:75","nodeType":"YulBlock","src":"4126:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4135:1:75","nodeType":"YulLiteral","src":"4135:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4138:1:75","nodeType":"YulLiteral","src":"4138:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4128:6:75","nodeType":"YulIdentifier","src":"4128:6:75"},"nativeSrc":"4128:12:75","nodeType":"YulFunctionCall","src":"4128:12:75"},"nativeSrc":"4128:12:75","nodeType":"YulExpressionStatement","src":"4128:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4101:7:75","nodeType":"YulIdentifier","src":"4101:7:75"},{"name":"headStart","nativeSrc":"4110:9:75","nodeType":"YulIdentifier","src":"4110:9:75"}],"functionName":{"name":"sub","nativeSrc":"4097:3:75","nodeType":"YulIdentifier","src":"4097:3:75"},"nativeSrc":"4097:23:75","nodeType":"YulFunctionCall","src":"4097:23:75"},{"kind":"number","nativeSrc":"4122:2:75","nodeType":"YulLiteral","src":"4122:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4093:3:75","nodeType":"YulIdentifier","src":"4093:3:75"},"nativeSrc":"4093:32:75","nodeType":"YulFunctionCall","src":"4093:32:75"},"nativeSrc":"4090:52:75","nodeType":"YulIf","src":"4090:52:75"},{"nativeSrc":"4151:39:75","nodeType":"YulAssignment","src":"4151:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4180:9:75","nodeType":"YulIdentifier","src":"4180:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4161:18:75","nodeType":"YulIdentifier","src":"4161:18:75"},"nativeSrc":"4161:29:75","nodeType":"YulFunctionCall","src":"4161:29:75"},"variableNames":[{"name":"value0","nativeSrc":"4151:6:75","nodeType":"YulIdentifier","src":"4151:6:75"}]},{"nativeSrc":"4199:46:75","nodeType":"YulVariableDeclaration","src":"4199:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4230:9:75","nodeType":"YulIdentifier","src":"4230:9:75"},{"kind":"number","nativeSrc":"4241:2:75","nodeType":"YulLiteral","src":"4241:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4226:3:75","nodeType":"YulIdentifier","src":"4226:3:75"},"nativeSrc":"4226:18:75","nodeType":"YulFunctionCall","src":"4226:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4213:12:75","nodeType":"YulIdentifier","src":"4213:12:75"},"nativeSrc":"4213:32:75","nodeType":"YulFunctionCall","src":"4213:32:75"},"variables":[{"name":"offset","nativeSrc":"4203:6:75","nodeType":"YulTypedName","src":"4203:6:75","type":""}]},{"body":{"nativeSrc":"4288:16:75","nodeType":"YulBlock","src":"4288:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4297:1:75","nodeType":"YulLiteral","src":"4297:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4300:1:75","nodeType":"YulLiteral","src":"4300:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4290:6:75","nodeType":"YulIdentifier","src":"4290:6:75"},"nativeSrc":"4290:12:75","nodeType":"YulFunctionCall","src":"4290:12:75"},"nativeSrc":"4290:12:75","nodeType":"YulExpressionStatement","src":"4290:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4260:6:75","nodeType":"YulIdentifier","src":"4260:6:75"},{"kind":"number","nativeSrc":"4268:18:75","nodeType":"YulLiteral","src":"4268:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4257:2:75","nodeType":"YulIdentifier","src":"4257:2:75"},"nativeSrc":"4257:30:75","nodeType":"YulFunctionCall","src":"4257:30:75"},"nativeSrc":"4254:50:75","nodeType":"YulIf","src":"4254:50:75"},{"nativeSrc":"4313:32:75","nodeType":"YulVariableDeclaration","src":"4313:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4327:9:75","nodeType":"YulIdentifier","src":"4327:9:75"},{"name":"offset","nativeSrc":"4338:6:75","nodeType":"YulIdentifier","src":"4338:6:75"}],"functionName":{"name":"add","nativeSrc":"4323:3:75","nodeType":"YulIdentifier","src":"4323:3:75"},"nativeSrc":"4323:22:75","nodeType":"YulFunctionCall","src":"4323:22:75"},"variables":[{"name":"_1","nativeSrc":"4317:2:75","nodeType":"YulTypedName","src":"4317:2:75","type":""}]},{"body":{"nativeSrc":"4393:16:75","nodeType":"YulBlock","src":"4393:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4402:1:75","nodeType":"YulLiteral","src":"4402:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4405:1:75","nodeType":"YulLiteral","src":"4405:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4395:6:75","nodeType":"YulIdentifier","src":"4395:6:75"},"nativeSrc":"4395:12:75","nodeType":"YulFunctionCall","src":"4395:12:75"},"nativeSrc":"4395:12:75","nodeType":"YulExpressionStatement","src":"4395:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4372:2:75","nodeType":"YulIdentifier","src":"4372:2:75"},{"kind":"number","nativeSrc":"4376:4:75","nodeType":"YulLiteral","src":"4376:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4368:3:75","nodeType":"YulIdentifier","src":"4368:3:75"},"nativeSrc":"4368:13:75","nodeType":"YulFunctionCall","src":"4368:13:75"},{"name":"dataEnd","nativeSrc":"4383:7:75","nodeType":"YulIdentifier","src":"4383:7:75"}],"functionName":{"name":"slt","nativeSrc":"4364:3:75","nodeType":"YulIdentifier","src":"4364:3:75"},"nativeSrc":"4364:27:75","nodeType":"YulFunctionCall","src":"4364:27:75"}],"functionName":{"name":"iszero","nativeSrc":"4357:6:75","nodeType":"YulIdentifier","src":"4357:6:75"},"nativeSrc":"4357:35:75","nodeType":"YulFunctionCall","src":"4357:35:75"},"nativeSrc":"4354:55:75","nodeType":"YulIf","src":"4354:55:75"},{"nativeSrc":"4418:30:75","nodeType":"YulVariableDeclaration","src":"4418:30:75","value":{"arguments":[{"name":"_1","nativeSrc":"4445:2:75","nodeType":"YulIdentifier","src":"4445:2:75"}],"functionName":{"name":"calldataload","nativeSrc":"4432:12:75","nodeType":"YulIdentifier","src":"4432:12:75"},"nativeSrc":"4432:16:75","nodeType":"YulFunctionCall","src":"4432:16:75"},"variables":[{"name":"length","nativeSrc":"4422:6:75","nodeType":"YulTypedName","src":"4422:6:75","type":""}]},{"body":{"nativeSrc":"4491:22:75","nodeType":"YulBlock","src":"4491:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4493:16:75","nodeType":"YulIdentifier","src":"4493:16:75"},"nativeSrc":"4493:18:75","nodeType":"YulFunctionCall","src":"4493:18:75"},"nativeSrc":"4493:18:75","nodeType":"YulExpressionStatement","src":"4493:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4463:6:75","nodeType":"YulIdentifier","src":"4463:6:75"},{"kind":"number","nativeSrc":"4471:18:75","nodeType":"YulLiteral","src":"4471:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4460:2:75","nodeType":"YulIdentifier","src":"4460:2:75"},"nativeSrc":"4460:30:75","nodeType":"YulFunctionCall","src":"4460:30:75"},"nativeSrc":"4457:56:75","nodeType":"YulIf","src":"4457:56:75"},{"nativeSrc":"4522:23:75","nodeType":"YulVariableDeclaration","src":"4522:23:75","value":{"arguments":[{"kind":"number","nativeSrc":"4542:2:75","nodeType":"YulLiteral","src":"4542:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4536:5:75","nodeType":"YulIdentifier","src":"4536:5:75"},"nativeSrc":"4536:9:75","nodeType":"YulFunctionCall","src":"4536:9:75"},"variables":[{"name":"memPtr","nativeSrc":"4526:6:75","nodeType":"YulTypedName","src":"4526:6:75","type":""}]},{"nativeSrc":"4554:85:75","nodeType":"YulVariableDeclaration","src":"4554:85:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"4576:6:75","nodeType":"YulIdentifier","src":"4576:6:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"4600:6:75","nodeType":"YulIdentifier","src":"4600:6:75"},{"kind":"number","nativeSrc":"4608:4:75","nodeType":"YulLiteral","src":"4608:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4596:3:75","nodeType":"YulIdentifier","src":"4596:3:75"},"nativeSrc":"4596:17:75","nodeType":"YulFunctionCall","src":"4596:17:75"},{"arguments":[{"kind":"number","nativeSrc":"4619:2:75","nodeType":"YulLiteral","src":"4619:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4615:3:75","nodeType":"YulIdentifier","src":"4615:3:75"},"nativeSrc":"4615:7:75","nodeType":"YulFunctionCall","src":"4615:7:75"}],"functionName":{"name":"and","nativeSrc":"4592:3:75","nodeType":"YulIdentifier","src":"4592:3:75"},"nativeSrc":"4592:31:75","nodeType":"YulFunctionCall","src":"4592:31:75"},{"kind":"number","nativeSrc":"4625:2:75","nodeType":"YulLiteral","src":"4625:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"4588:3:75","nodeType":"YulIdentifier","src":"4588:3:75"},"nativeSrc":"4588:40:75","nodeType":"YulFunctionCall","src":"4588:40:75"},{"arguments":[{"kind":"number","nativeSrc":"4634:2:75","nodeType":"YulLiteral","src":"4634:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"4630:3:75","nodeType":"YulIdentifier","src":"4630:3:75"},"nativeSrc":"4630:7:75","nodeType":"YulFunctionCall","src":"4630:7:75"}],"functionName":{"name":"and","nativeSrc":"4584:3:75","nodeType":"YulIdentifier","src":"4584:3:75"},"nativeSrc":"4584:54:75","nodeType":"YulFunctionCall","src":"4584:54:75"}],"functionName":{"name":"add","nativeSrc":"4572:3:75","nodeType":"YulIdentifier","src":"4572:3:75"},"nativeSrc":"4572:67:75","nodeType":"YulFunctionCall","src":"4572:67:75"},"variables":[{"name":"newFreePtr","nativeSrc":"4558:10:75","nodeType":"YulTypedName","src":"4558:10:75","type":""}]},{"body":{"nativeSrc":"4714:22:75","nodeType":"YulBlock","src":"4714:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4716:16:75","nodeType":"YulIdentifier","src":"4716:16:75"},"nativeSrc":"4716:18:75","nodeType":"YulFunctionCall","src":"4716:18:75"},"nativeSrc":"4716:18:75","nodeType":"YulExpressionStatement","src":"4716:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4657:10:75","nodeType":"YulIdentifier","src":"4657:10:75"},{"kind":"number","nativeSrc":"4669:18:75","nodeType":"YulLiteral","src":"4669:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4654:2:75","nodeType":"YulIdentifier","src":"4654:2:75"},"nativeSrc":"4654:34:75","nodeType":"YulFunctionCall","src":"4654:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4693:10:75","nodeType":"YulIdentifier","src":"4693:10:75"},{"name":"memPtr","nativeSrc":"4705:6:75","nodeType":"YulIdentifier","src":"4705:6:75"}],"functionName":{"name":"lt","nativeSrc":"4690:2:75","nodeType":"YulIdentifier","src":"4690:2:75"},"nativeSrc":"4690:22:75","nodeType":"YulFunctionCall","src":"4690:22:75"}],"functionName":{"name":"or","nativeSrc":"4651:2:75","nodeType":"YulIdentifier","src":"4651:2:75"},"nativeSrc":"4651:62:75","nodeType":"YulFunctionCall","src":"4651:62:75"},"nativeSrc":"4648:88:75","nodeType":"YulIf","src":"4648:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4752:2:75","nodeType":"YulLiteral","src":"4752:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4756:10:75","nodeType":"YulIdentifier","src":"4756:10:75"}],"functionName":{"name":"mstore","nativeSrc":"4745:6:75","nodeType":"YulIdentifier","src":"4745:6:75"},"nativeSrc":"4745:22:75","nodeType":"YulFunctionCall","src":"4745:22:75"},"nativeSrc":"4745:22:75","nodeType":"YulExpressionStatement","src":"4745:22:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4783:6:75","nodeType":"YulIdentifier","src":"4783:6:75"},{"name":"length","nativeSrc":"4791:6:75","nodeType":"YulIdentifier","src":"4791:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4776:6:75","nodeType":"YulIdentifier","src":"4776:6:75"},"nativeSrc":"4776:22:75","nodeType":"YulFunctionCall","src":"4776:22:75"},"nativeSrc":"4776:22:75","nodeType":"YulExpressionStatement","src":"4776:22:75"},{"body":{"nativeSrc":"4848:16:75","nodeType":"YulBlock","src":"4848:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4857:1:75","nodeType":"YulLiteral","src":"4857:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4860:1:75","nodeType":"YulLiteral","src":"4860:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4850:6:75","nodeType":"YulIdentifier","src":"4850:6:75"},"nativeSrc":"4850:12:75","nodeType":"YulFunctionCall","src":"4850:12:75"},"nativeSrc":"4850:12:75","nodeType":"YulExpressionStatement","src":"4850:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4821:2:75","nodeType":"YulIdentifier","src":"4821:2:75"},{"name":"length","nativeSrc":"4825:6:75","nodeType":"YulIdentifier","src":"4825:6:75"}],"functionName":{"name":"add","nativeSrc":"4817:3:75","nodeType":"YulIdentifier","src":"4817:3:75"},"nativeSrc":"4817:15:75","nodeType":"YulFunctionCall","src":"4817:15:75"},{"kind":"number","nativeSrc":"4834:2:75","nodeType":"YulLiteral","src":"4834:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4813:3:75","nodeType":"YulIdentifier","src":"4813:3:75"},"nativeSrc":"4813:24:75","nodeType":"YulFunctionCall","src":"4813:24:75"},{"name":"dataEnd","nativeSrc":"4839:7:75","nodeType":"YulIdentifier","src":"4839:7:75"}],"functionName":{"name":"gt","nativeSrc":"4810:2:75","nodeType":"YulIdentifier","src":"4810:2:75"},"nativeSrc":"4810:37:75","nodeType":"YulFunctionCall","src":"4810:37:75"},"nativeSrc":"4807:57:75","nodeType":"YulIf","src":"4807:57:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4890:6:75","nodeType":"YulIdentifier","src":"4890:6:75"},{"kind":"number","nativeSrc":"4898:2:75","nodeType":"YulLiteral","src":"4898:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4886:3:75","nodeType":"YulIdentifier","src":"4886:3:75"},"nativeSrc":"4886:15:75","nodeType":"YulFunctionCall","src":"4886:15:75"},{"arguments":[{"name":"_1","nativeSrc":"4907:2:75","nodeType":"YulIdentifier","src":"4907:2:75"},{"kind":"number","nativeSrc":"4911:2:75","nodeType":"YulLiteral","src":"4911:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4903:3:75","nodeType":"YulIdentifier","src":"4903:3:75"},"nativeSrc":"4903:11:75","nodeType":"YulFunctionCall","src":"4903:11:75"},{"name":"length","nativeSrc":"4916:6:75","nodeType":"YulIdentifier","src":"4916:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"4873:12:75","nodeType":"YulIdentifier","src":"4873:12:75"},"nativeSrc":"4873:50:75","nodeType":"YulFunctionCall","src":"4873:50:75"},"nativeSrc":"4873:50:75","nodeType":"YulExpressionStatement","src":"4873:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4947:6:75","nodeType":"YulIdentifier","src":"4947:6:75"},{"name":"length","nativeSrc":"4955:6:75","nodeType":"YulIdentifier","src":"4955:6:75"}],"functionName":{"name":"add","nativeSrc":"4943:3:75","nodeType":"YulIdentifier","src":"4943:3:75"},"nativeSrc":"4943:19:75","nodeType":"YulFunctionCall","src":"4943:19:75"},{"kind":"number","nativeSrc":"4964:2:75","nodeType":"YulLiteral","src":"4964:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4939:3:75","nodeType":"YulIdentifier","src":"4939:3:75"},"nativeSrc":"4939:28:75","nodeType":"YulFunctionCall","src":"4939:28:75"},{"kind":"number","nativeSrc":"4969:1:75","nodeType":"YulLiteral","src":"4969:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4932:6:75","nodeType":"YulIdentifier","src":"4932:6:75"},"nativeSrc":"4932:39:75","nodeType":"YulFunctionCall","src":"4932:39:75"},"nativeSrc":"4932:39:75","nodeType":"YulExpressionStatement","src":"4932:39:75"},{"nativeSrc":"4980:16:75","nodeType":"YulAssignment","src":"4980:16:75","value":{"name":"memPtr","nativeSrc":"4990:6:75","nodeType":"YulIdentifier","src":"4990:6:75"},"variableNames":[{"name":"value1","nativeSrc":"4980:6:75","nodeType":"YulIdentifier","src":"4980:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"3984:1018:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4038:9:75","nodeType":"YulTypedName","src":"4038:9:75","type":""},{"name":"dataEnd","nativeSrc":"4049:7:75","nodeType":"YulTypedName","src":"4049:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4061:6:75","nodeType":"YulTypedName","src":"4061:6:75","type":""},{"name":"value1","nativeSrc":"4069:6:75","nodeType":"YulTypedName","src":"4069:6:75","type":""}],"src":"3984:1018:75"},{"body":{"nativeSrc":"5094:213:75","nodeType":"YulBlock","src":"5094:213:75","statements":[{"body":{"nativeSrc":"5140:16:75","nodeType":"YulBlock","src":"5140:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5149:1:75","nodeType":"YulLiteral","src":"5149:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5152:1:75","nodeType":"YulLiteral","src":"5152:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5142:6:75","nodeType":"YulIdentifier","src":"5142:6:75"},"nativeSrc":"5142:12:75","nodeType":"YulFunctionCall","src":"5142:12:75"},"nativeSrc":"5142:12:75","nodeType":"YulExpressionStatement","src":"5142:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5115:7:75","nodeType":"YulIdentifier","src":"5115:7:75"},{"name":"headStart","nativeSrc":"5124:9:75","nodeType":"YulIdentifier","src":"5124:9:75"}],"functionName":{"name":"sub","nativeSrc":"5111:3:75","nodeType":"YulIdentifier","src":"5111:3:75"},"nativeSrc":"5111:23:75","nodeType":"YulFunctionCall","src":"5111:23:75"},{"kind":"number","nativeSrc":"5136:2:75","nodeType":"YulLiteral","src":"5136:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5107:3:75","nodeType":"YulIdentifier","src":"5107:3:75"},"nativeSrc":"5107:32:75","nodeType":"YulFunctionCall","src":"5107:32:75"},"nativeSrc":"5104:52:75","nodeType":"YulIf","src":"5104:52:75"},{"nativeSrc":"5165:14:75","nodeType":"YulVariableDeclaration","src":"5165:14:75","value":{"kind":"number","nativeSrc":"5178:1:75","nodeType":"YulLiteral","src":"5178:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5169:5:75","nodeType":"YulTypedName","src":"5169:5:75","type":""}]},{"nativeSrc":"5188:32:75","nodeType":"YulAssignment","src":"5188:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5210:9:75","nodeType":"YulIdentifier","src":"5210:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5197:12:75","nodeType":"YulIdentifier","src":"5197:12:75"},"nativeSrc":"5197:23:75","nodeType":"YulFunctionCall","src":"5197:23:75"},"variableNames":[{"name":"value","nativeSrc":"5188:5:75","nodeType":"YulIdentifier","src":"5188:5:75"}]},{"nativeSrc":"5229:15:75","nodeType":"YulAssignment","src":"5229:15:75","value":{"name":"value","nativeSrc":"5239:5:75","nodeType":"YulIdentifier","src":"5239:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5229:6:75","nodeType":"YulIdentifier","src":"5229:6:75"}]},{"nativeSrc":"5253:48:75","nodeType":"YulAssignment","src":"5253:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5286:9:75","nodeType":"YulIdentifier","src":"5286:9:75"},{"kind":"number","nativeSrc":"5297:2:75","nodeType":"YulLiteral","src":"5297:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5282:3:75","nodeType":"YulIdentifier","src":"5282:3:75"},"nativeSrc":"5282:18:75","nodeType":"YulFunctionCall","src":"5282:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5263:18:75","nodeType":"YulIdentifier","src":"5263:18:75"},"nativeSrc":"5263:38:75","nodeType":"YulFunctionCall","src":"5263:38:75"},"variableNames":[{"name":"value1","nativeSrc":"5253:6:75","nodeType":"YulIdentifier","src":"5253:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"5007:300:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5052:9:75","nodeType":"YulTypedName","src":"5052:9:75","type":""},{"name":"dataEnd","nativeSrc":"5063:7:75","nodeType":"YulTypedName","src":"5063:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5075:6:75","nodeType":"YulTypedName","src":"5075:6:75","type":""},{"name":"value1","nativeSrc":"5083:6:75","nodeType":"YulTypedName","src":"5083:6:75","type":""}],"src":"5007:300:75"},{"body":{"nativeSrc":"5416:270:75","nodeType":"YulBlock","src":"5416:270:75","statements":[{"body":{"nativeSrc":"5462:16:75","nodeType":"YulBlock","src":"5462:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5471:1:75","nodeType":"YulLiteral","src":"5471:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5474:1:75","nodeType":"YulLiteral","src":"5474:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5464:6:75","nodeType":"YulIdentifier","src":"5464:6:75"},"nativeSrc":"5464:12:75","nodeType":"YulFunctionCall","src":"5464:12:75"},"nativeSrc":"5464:12:75","nodeType":"YulExpressionStatement","src":"5464:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5437:7:75","nodeType":"YulIdentifier","src":"5437:7:75"},{"name":"headStart","nativeSrc":"5446:9:75","nodeType":"YulIdentifier","src":"5446:9:75"}],"functionName":{"name":"sub","nativeSrc":"5433:3:75","nodeType":"YulIdentifier","src":"5433:3:75"},"nativeSrc":"5433:23:75","nodeType":"YulFunctionCall","src":"5433:23:75"},{"kind":"number","nativeSrc":"5458:2:75","nodeType":"YulLiteral","src":"5458:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5429:3:75","nodeType":"YulIdentifier","src":"5429:3:75"},"nativeSrc":"5429:32:75","nodeType":"YulFunctionCall","src":"5429:32:75"},"nativeSrc":"5426:52:75","nodeType":"YulIf","src":"5426:52:75"},{"nativeSrc":"5487:14:75","nodeType":"YulVariableDeclaration","src":"5487:14:75","value":{"kind":"number","nativeSrc":"5500:1:75","nodeType":"YulLiteral","src":"5500:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5491:5:75","nodeType":"YulTypedName","src":"5491:5:75","type":""}]},{"nativeSrc":"5510:32:75","nodeType":"YulAssignment","src":"5510:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5532:9:75","nodeType":"YulIdentifier","src":"5532:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5519:12:75","nodeType":"YulIdentifier","src":"5519:12:75"},"nativeSrc":"5519:23:75","nodeType":"YulFunctionCall","src":"5519:23:75"},"variableNames":[{"name":"value","nativeSrc":"5510:5:75","nodeType":"YulIdentifier","src":"5510:5:75"}]},{"nativeSrc":"5551:15:75","nodeType":"YulAssignment","src":"5551:15:75","value":{"name":"value","nativeSrc":"5561:5:75","nodeType":"YulIdentifier","src":"5561:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5551:6:75","nodeType":"YulIdentifier","src":"5551:6:75"}]},{"nativeSrc":"5575:48:75","nodeType":"YulAssignment","src":"5575:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5608:9:75","nodeType":"YulIdentifier","src":"5608:9:75"},{"kind":"number","nativeSrc":"5619:2:75","nodeType":"YulLiteral","src":"5619:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5604:3:75","nodeType":"YulIdentifier","src":"5604:3:75"},"nativeSrc":"5604:18:75","nodeType":"YulFunctionCall","src":"5604:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5585:18:75","nodeType":"YulIdentifier","src":"5585:18:75"},"nativeSrc":"5585:38:75","nodeType":"YulFunctionCall","src":"5585:38:75"},"variableNames":[{"name":"value1","nativeSrc":"5575:6:75","nodeType":"YulIdentifier","src":"5575:6:75"}]},{"nativeSrc":"5632:48:75","nodeType":"YulAssignment","src":"5632:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5665:9:75","nodeType":"YulIdentifier","src":"5665:9:75"},{"kind":"number","nativeSrc":"5676:2:75","nodeType":"YulLiteral","src":"5676:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5661:3:75","nodeType":"YulIdentifier","src":"5661:3:75"},"nativeSrc":"5661:18:75","nodeType":"YulFunctionCall","src":"5661:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5642:18:75","nodeType":"YulIdentifier","src":"5642:18:75"},"nativeSrc":"5642:38:75","nodeType":"YulFunctionCall","src":"5642:38:75"},"variableNames":[{"name":"value2","nativeSrc":"5632:6:75","nodeType":"YulIdentifier","src":"5632:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"5312:374:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5366:9:75","nodeType":"YulTypedName","src":"5366:9:75","type":""},{"name":"dataEnd","nativeSrc":"5377:7:75","nodeType":"YulTypedName","src":"5377:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5389:6:75","nodeType":"YulTypedName","src":"5389:6:75","type":""},{"name":"value1","nativeSrc":"5397:6:75","nodeType":"YulTypedName","src":"5397:6:75","type":""},{"name":"value2","nativeSrc":"5405:6:75","nodeType":"YulTypedName","src":"5405:6:75","type":""}],"src":"5312:374:75"},{"body":{"nativeSrc":"5778:173:75","nodeType":"YulBlock","src":"5778:173:75","statements":[{"body":{"nativeSrc":"5824:16:75","nodeType":"YulBlock","src":"5824:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5833:1:75","nodeType":"YulLiteral","src":"5833:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5836:1:75","nodeType":"YulLiteral","src":"5836:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5826:6:75","nodeType":"YulIdentifier","src":"5826:6:75"},"nativeSrc":"5826:12:75","nodeType":"YulFunctionCall","src":"5826:12:75"},"nativeSrc":"5826:12:75","nodeType":"YulExpressionStatement","src":"5826:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5799:7:75","nodeType":"YulIdentifier","src":"5799:7:75"},{"name":"headStart","nativeSrc":"5808:9:75","nodeType":"YulIdentifier","src":"5808:9:75"}],"functionName":{"name":"sub","nativeSrc":"5795:3:75","nodeType":"YulIdentifier","src":"5795:3:75"},"nativeSrc":"5795:23:75","nodeType":"YulFunctionCall","src":"5795:23:75"},{"kind":"number","nativeSrc":"5820:2:75","nodeType":"YulLiteral","src":"5820:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5791:3:75","nodeType":"YulIdentifier","src":"5791:3:75"},"nativeSrc":"5791:32:75","nodeType":"YulFunctionCall","src":"5791:32:75"},"nativeSrc":"5788:52:75","nodeType":"YulIf","src":"5788:52:75"},{"nativeSrc":"5849:39:75","nodeType":"YulAssignment","src":"5849:39:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5878:9:75","nodeType":"YulIdentifier","src":"5878:9:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5859:18:75","nodeType":"YulIdentifier","src":"5859:18:75"},"nativeSrc":"5859:29:75","nodeType":"YulFunctionCall","src":"5859:29:75"},"variableNames":[{"name":"value0","nativeSrc":"5849:6:75","nodeType":"YulIdentifier","src":"5849:6:75"}]},{"nativeSrc":"5897:48:75","nodeType":"YulAssignment","src":"5897:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5930:9:75","nodeType":"YulIdentifier","src":"5930:9:75"},{"kind":"number","nativeSrc":"5941:2:75","nodeType":"YulLiteral","src":"5941:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5926:3:75","nodeType":"YulIdentifier","src":"5926:3:75"},"nativeSrc":"5926:18:75","nodeType":"YulFunctionCall","src":"5926:18:75"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5907:18:75","nodeType":"YulIdentifier","src":"5907:18:75"},"nativeSrc":"5907:38:75","nodeType":"YulFunctionCall","src":"5907:38:75"},"variableNames":[{"name":"value1","nativeSrc":"5897:6:75","nodeType":"YulIdentifier","src":"5897:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"5691:260:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5736:9:75","nodeType":"YulTypedName","src":"5736:9:75","type":""},{"name":"dataEnd","nativeSrc":"5747:7:75","nodeType":"YulTypedName","src":"5747:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5759:6:75","nodeType":"YulTypedName","src":"5759:6:75","type":""},{"name":"value1","nativeSrc":"5767:6:75","nodeType":"YulTypedName","src":"5767:6:75","type":""}],"src":"5691:260:75"},{"body":{"nativeSrc":"6037:103:75","nodeType":"YulBlock","src":"6037:103:75","statements":[{"body":{"nativeSrc":"6083:16:75","nodeType":"YulBlock","src":"6083:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6092:1:75","nodeType":"YulLiteral","src":"6092:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6095:1:75","nodeType":"YulLiteral","src":"6095:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6085:6:75","nodeType":"YulIdentifier","src":"6085:6:75"},"nativeSrc":"6085:12:75","nodeType":"YulFunctionCall","src":"6085:12:75"},"nativeSrc":"6085:12:75","nodeType":"YulExpressionStatement","src":"6085:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6058:7:75","nodeType":"YulIdentifier","src":"6058:7:75"},{"name":"headStart","nativeSrc":"6067:9:75","nodeType":"YulIdentifier","src":"6067:9:75"}],"functionName":{"name":"sub","nativeSrc":"6054:3:75","nodeType":"YulIdentifier","src":"6054:3:75"},"nativeSrc":"6054:23:75","nodeType":"YulFunctionCall","src":"6054:23:75"},{"kind":"number","nativeSrc":"6079:2:75","nodeType":"YulLiteral","src":"6079:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6050:3:75","nodeType":"YulIdentifier","src":"6050:3:75"},"nativeSrc":"6050:32:75","nodeType":"YulFunctionCall","src":"6050:32:75"},"nativeSrc":"6047:52:75","nodeType":"YulIf","src":"6047:52:75"},{"nativeSrc":"6108:26:75","nodeType":"YulAssignment","src":"6108:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6124:9:75","nodeType":"YulIdentifier","src":"6124:9:75"}],"functionName":{"name":"mload","nativeSrc":"6118:5:75","nodeType":"YulIdentifier","src":"6118:5:75"},"nativeSrc":"6118:16:75","nodeType":"YulFunctionCall","src":"6118:16:75"},"variableNames":[{"name":"value0","nativeSrc":"6108:6:75","nodeType":"YulIdentifier","src":"6108:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5956:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6003:9:75","nodeType":"YulTypedName","src":"6003:9:75","type":""},{"name":"dataEnd","nativeSrc":"6014:7:75","nodeType":"YulTypedName","src":"6014:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6026:6:75","nodeType":"YulTypedName","src":"6026:6:75","type":""}],"src":"5956:184:75"},{"body":{"nativeSrc":"6200:325:75","nodeType":"YulBlock","src":"6200:325:75","statements":[{"nativeSrc":"6210:22:75","nodeType":"YulAssignment","src":"6210:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"6224:1:75","nodeType":"YulLiteral","src":"6224:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"6227:4:75","nodeType":"YulIdentifier","src":"6227:4:75"}],"functionName":{"name":"shr","nativeSrc":"6220:3:75","nodeType":"YulIdentifier","src":"6220:3:75"},"nativeSrc":"6220:12:75","nodeType":"YulFunctionCall","src":"6220:12:75"},"variableNames":[{"name":"length","nativeSrc":"6210:6:75","nodeType":"YulIdentifier","src":"6210:6:75"}]},{"nativeSrc":"6241:38:75","nodeType":"YulVariableDeclaration","src":"6241:38:75","value":{"arguments":[{"name":"data","nativeSrc":"6271:4:75","nodeType":"YulIdentifier","src":"6271:4:75"},{"kind":"number","nativeSrc":"6277:1:75","nodeType":"YulLiteral","src":"6277:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"6267:3:75","nodeType":"YulIdentifier","src":"6267:3:75"},"nativeSrc":"6267:12:75","nodeType":"YulFunctionCall","src":"6267:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"6245:18:75","nodeType":"YulTypedName","src":"6245:18:75","type":""}]},{"body":{"nativeSrc":"6318:31:75","nodeType":"YulBlock","src":"6318:31:75","statements":[{"nativeSrc":"6320:27:75","nodeType":"YulAssignment","src":"6320:27:75","value":{"arguments":[{"name":"length","nativeSrc":"6334:6:75","nodeType":"YulIdentifier","src":"6334:6:75"},{"kind":"number","nativeSrc":"6342:4:75","nodeType":"YulLiteral","src":"6342:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"6330:3:75","nodeType":"YulIdentifier","src":"6330:3:75"},"nativeSrc":"6330:17:75","nodeType":"YulFunctionCall","src":"6330:17:75"},"variableNames":[{"name":"length","nativeSrc":"6320:6:75","nodeType":"YulIdentifier","src":"6320:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"6298:18:75","nodeType":"YulIdentifier","src":"6298:18:75"}],"functionName":{"name":"iszero","nativeSrc":"6291:6:75","nodeType":"YulIdentifier","src":"6291:6:75"},"nativeSrc":"6291:26:75","nodeType":"YulFunctionCall","src":"6291:26:75"},"nativeSrc":"6288:61:75","nodeType":"YulIf","src":"6288:61:75"},{"body":{"nativeSrc":"6408:111:75","nodeType":"YulBlock","src":"6408:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6429:1:75","nodeType":"YulLiteral","src":"6429:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6436:3:75","nodeType":"YulLiteral","src":"6436:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"6441:10:75","nodeType":"YulLiteral","src":"6441:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6432:3:75","nodeType":"YulIdentifier","src":"6432:3:75"},"nativeSrc":"6432:20:75","nodeType":"YulFunctionCall","src":"6432:20:75"}],"functionName":{"name":"mstore","nativeSrc":"6422:6:75","nodeType":"YulIdentifier","src":"6422:6:75"},"nativeSrc":"6422:31:75","nodeType":"YulFunctionCall","src":"6422:31:75"},"nativeSrc":"6422:31:75","nodeType":"YulExpressionStatement","src":"6422:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6473:1:75","nodeType":"YulLiteral","src":"6473:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"6476:4:75","nodeType":"YulLiteral","src":"6476:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"6466:6:75","nodeType":"YulIdentifier","src":"6466:6:75"},"nativeSrc":"6466:15:75","nodeType":"YulFunctionCall","src":"6466:15:75"},"nativeSrc":"6466:15:75","nodeType":"YulExpressionStatement","src":"6466:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6501:1:75","nodeType":"YulLiteral","src":"6501:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6504:4:75","nodeType":"YulLiteral","src":"6504:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6494:6:75","nodeType":"YulIdentifier","src":"6494:6:75"},"nativeSrc":"6494:15:75","nodeType":"YulFunctionCall","src":"6494:15:75"},"nativeSrc":"6494:15:75","nodeType":"YulExpressionStatement","src":"6494:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"6364:18:75","nodeType":"YulIdentifier","src":"6364:18:75"},{"arguments":[{"name":"length","nativeSrc":"6387:6:75","nodeType":"YulIdentifier","src":"6387:6:75"},{"kind":"number","nativeSrc":"6395:2:75","nodeType":"YulLiteral","src":"6395:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"6384:2:75","nodeType":"YulIdentifier","src":"6384:2:75"},"nativeSrc":"6384:14:75","nodeType":"YulFunctionCall","src":"6384:14:75"}],"functionName":{"name":"eq","nativeSrc":"6361:2:75","nodeType":"YulIdentifier","src":"6361:2:75"},"nativeSrc":"6361:38:75","nodeType":"YulFunctionCall","src":"6361:38:75"},"nativeSrc":"6358:161:75","nodeType":"YulIf","src":"6358:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"6145:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"6180:4:75","nodeType":"YulTypedName","src":"6180:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"6189:6:75","nodeType":"YulTypedName","src":"6189:6:75","type":""}],"src":"6145:380:75"},{"body":{"nativeSrc":"6562:95:75","nodeType":"YulBlock","src":"6562:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6579:1:75","nodeType":"YulLiteral","src":"6579:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6586:3:75","nodeType":"YulLiteral","src":"6586:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"6591:10:75","nodeType":"YulLiteral","src":"6591:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6582:3:75","nodeType":"YulIdentifier","src":"6582:3:75"},"nativeSrc":"6582:20:75","nodeType":"YulFunctionCall","src":"6582:20:75"}],"functionName":{"name":"mstore","nativeSrc":"6572:6:75","nodeType":"YulIdentifier","src":"6572:6:75"},"nativeSrc":"6572:31:75","nodeType":"YulFunctionCall","src":"6572:31:75"},"nativeSrc":"6572:31:75","nodeType":"YulExpressionStatement","src":"6572:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6619:1:75","nodeType":"YulLiteral","src":"6619:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"6622:4:75","nodeType":"YulLiteral","src":"6622:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"6612:6:75","nodeType":"YulIdentifier","src":"6612:6:75"},"nativeSrc":"6612:15:75","nodeType":"YulFunctionCall","src":"6612:15:75"},"nativeSrc":"6612:15:75","nodeType":"YulExpressionStatement","src":"6612:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6643:1:75","nodeType":"YulLiteral","src":"6643:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6646:4:75","nodeType":"YulLiteral","src":"6646:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6636:6:75","nodeType":"YulIdentifier","src":"6636:6:75"},"nativeSrc":"6636:15:75","nodeType":"YulFunctionCall","src":"6636:15:75"},"nativeSrc":"6636:15:75","nodeType":"YulExpressionStatement","src":"6636:15:75"}]},"name":"panic_error_0x11","nativeSrc":"6530:127:75","nodeType":"YulFunctionDefinition","src":"6530:127:75"},{"body":{"nativeSrc":"6708:102:75","nodeType":"YulBlock","src":"6708:102:75","statements":[{"nativeSrc":"6718:38:75","nodeType":"YulAssignment","src":"6718:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"6733:1:75","nodeType":"YulIdentifier","src":"6733:1:75"},{"kind":"number","nativeSrc":"6736:4:75","nodeType":"YulLiteral","src":"6736:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6729:3:75","nodeType":"YulIdentifier","src":"6729:3:75"},"nativeSrc":"6729:12:75","nodeType":"YulFunctionCall","src":"6729:12:75"},{"arguments":[{"name":"y","nativeSrc":"6747:1:75","nodeType":"YulIdentifier","src":"6747:1:75"},{"kind":"number","nativeSrc":"6750:4:75","nodeType":"YulLiteral","src":"6750:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6743:3:75","nodeType":"YulIdentifier","src":"6743:3:75"},"nativeSrc":"6743:12:75","nodeType":"YulFunctionCall","src":"6743:12:75"}],"functionName":{"name":"add","nativeSrc":"6725:3:75","nodeType":"YulIdentifier","src":"6725:3:75"},"nativeSrc":"6725:31:75","nodeType":"YulFunctionCall","src":"6725:31:75"},"variableNames":[{"name":"sum","nativeSrc":"6718:3:75","nodeType":"YulIdentifier","src":"6718:3:75"}]},{"body":{"nativeSrc":"6782:22:75","nodeType":"YulBlock","src":"6782:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"6784:16:75","nodeType":"YulIdentifier","src":"6784:16:75"},"nativeSrc":"6784:18:75","nodeType":"YulFunctionCall","src":"6784:18:75"},"nativeSrc":"6784:18:75","nodeType":"YulExpressionStatement","src":"6784:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"6771:3:75","nodeType":"YulIdentifier","src":"6771:3:75"},{"kind":"number","nativeSrc":"6776:4:75","nodeType":"YulLiteral","src":"6776:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"6768:2:75","nodeType":"YulIdentifier","src":"6768:2:75"},"nativeSrc":"6768:13:75","nodeType":"YulFunctionCall","src":"6768:13:75"},"nativeSrc":"6765:39:75","nodeType":"YulIf","src":"6765:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"6662:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"6691:1:75","nodeType":"YulTypedName","src":"6691:1:75","type":""},{"name":"y","nativeSrc":"6694:1:75","nodeType":"YulTypedName","src":"6694:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"6700:3:75","nodeType":"YulTypedName","src":"6700:3:75","type":""}],"src":"6662:148:75"},{"body":{"nativeSrc":"6972:188:75","nodeType":"YulBlock","src":"6972:188:75","statements":[{"nativeSrc":"6982:26:75","nodeType":"YulAssignment","src":"6982:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6994:9:75","nodeType":"YulIdentifier","src":"6994:9:75"},{"kind":"number","nativeSrc":"7005:2:75","nodeType":"YulLiteral","src":"7005:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6990:3:75","nodeType":"YulIdentifier","src":"6990:3:75"},"nativeSrc":"6990:18:75","nodeType":"YulFunctionCall","src":"6990:18:75"},"variableNames":[{"name":"tail","nativeSrc":"6982:4:75","nodeType":"YulIdentifier","src":"6982:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7024:9:75","nodeType":"YulIdentifier","src":"7024:9:75"},{"arguments":[{"name":"value0","nativeSrc":"7039:6:75","nodeType":"YulIdentifier","src":"7039:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7055:3:75","nodeType":"YulLiteral","src":"7055:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7060:1:75","nodeType":"YulLiteral","src":"7060:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7051:3:75","nodeType":"YulIdentifier","src":"7051:3:75"},"nativeSrc":"7051:11:75","nodeType":"YulFunctionCall","src":"7051:11:75"},{"kind":"number","nativeSrc":"7064:1:75","nodeType":"YulLiteral","src":"7064:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7047:3:75","nodeType":"YulIdentifier","src":"7047:3:75"},"nativeSrc":"7047:19:75","nodeType":"YulFunctionCall","src":"7047:19:75"}],"functionName":{"name":"and","nativeSrc":"7035:3:75","nodeType":"YulIdentifier","src":"7035:3:75"},"nativeSrc":"7035:32:75","nodeType":"YulFunctionCall","src":"7035:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7017:6:75","nodeType":"YulIdentifier","src":"7017:6:75"},"nativeSrc":"7017:51:75","nodeType":"YulFunctionCall","src":"7017:51:75"},"nativeSrc":"7017:51:75","nodeType":"YulExpressionStatement","src":"7017:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7088:9:75","nodeType":"YulIdentifier","src":"7088:9:75"},{"kind":"number","nativeSrc":"7099:2:75","nodeType":"YulLiteral","src":"7099:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7084:3:75","nodeType":"YulIdentifier","src":"7084:3:75"},"nativeSrc":"7084:18:75","nodeType":"YulFunctionCall","src":"7084:18:75"},{"name":"value1","nativeSrc":"7104:6:75","nodeType":"YulIdentifier","src":"7104:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7077:6:75","nodeType":"YulIdentifier","src":"7077:6:75"},"nativeSrc":"7077:34:75","nodeType":"YulFunctionCall","src":"7077:34:75"},"nativeSrc":"7077:34:75","nodeType":"YulExpressionStatement","src":"7077:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7131:9:75","nodeType":"YulIdentifier","src":"7131:9:75"},{"kind":"number","nativeSrc":"7142:2:75","nodeType":"YulLiteral","src":"7142:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7127:3:75","nodeType":"YulIdentifier","src":"7127:3:75"},"nativeSrc":"7127:18:75","nodeType":"YulFunctionCall","src":"7127:18:75"},{"name":"value2","nativeSrc":"7147:6:75","nodeType":"YulIdentifier","src":"7147:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7120:6:75","nodeType":"YulIdentifier","src":"7120:6:75"},"nativeSrc":"7120:34:75","nodeType":"YulFunctionCall","src":"7120:34:75"},"nativeSrc":"7120:34:75","nodeType":"YulExpressionStatement","src":"7120:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"6815:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6925:9:75","nodeType":"YulTypedName","src":"6925:9:75","type":""},{"name":"value2","nativeSrc":"6936:6:75","nodeType":"YulTypedName","src":"6936:6:75","type":""},{"name":"value1","nativeSrc":"6944:6:75","nodeType":"YulTypedName","src":"6944:6:75","type":""},{"name":"value0","nativeSrc":"6952:6:75","nodeType":"YulTypedName","src":"6952:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6963:4:75","nodeType":"YulTypedName","src":"6963:4:75","type":""}],"src":"6815:345:75"},{"body":{"nativeSrc":"7213:77:75","nodeType":"YulBlock","src":"7213:77:75","statements":[{"nativeSrc":"7223:16:75","nodeType":"YulAssignment","src":"7223:16:75","value":{"arguments":[{"name":"x","nativeSrc":"7234:1:75","nodeType":"YulIdentifier","src":"7234:1:75"},{"name":"y","nativeSrc":"7237:1:75","nodeType":"YulIdentifier","src":"7237:1:75"}],"functionName":{"name":"add","nativeSrc":"7230:3:75","nodeType":"YulIdentifier","src":"7230:3:75"},"nativeSrc":"7230:9:75","nodeType":"YulFunctionCall","src":"7230:9:75"},"variableNames":[{"name":"sum","nativeSrc":"7223:3:75","nodeType":"YulIdentifier","src":"7223:3:75"}]},{"body":{"nativeSrc":"7262:22:75","nodeType":"YulBlock","src":"7262:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7264:16:75","nodeType":"YulIdentifier","src":"7264:16:75"},"nativeSrc":"7264:18:75","nodeType":"YulFunctionCall","src":"7264:18:75"},"nativeSrc":"7264:18:75","nodeType":"YulExpressionStatement","src":"7264:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"7254:1:75","nodeType":"YulIdentifier","src":"7254:1:75"},{"name":"sum","nativeSrc":"7257:3:75","nodeType":"YulIdentifier","src":"7257:3:75"}],"functionName":{"name":"gt","nativeSrc":"7251:2:75","nodeType":"YulIdentifier","src":"7251:2:75"},"nativeSrc":"7251:10:75","nodeType":"YulFunctionCall","src":"7251:10:75"},"nativeSrc":"7248:36:75","nodeType":"YulIf","src":"7248:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"7165:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"7196:1:75","nodeType":"YulTypedName","src":"7196:1:75","type":""},{"name":"y","nativeSrc":"7199:1:75","nodeType":"YulTypedName","src":"7199:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"7205:3:75","nodeType":"YulTypedName","src":"7205:3:75","type":""}],"src":"7165:125:75"},{"body":{"nativeSrc":"7364:306:75","nodeType":"YulBlock","src":"7364:306:75","statements":[{"nativeSrc":"7374:10:75","nodeType":"YulAssignment","src":"7374:10:75","value":{"kind":"number","nativeSrc":"7383:1:75","nodeType":"YulLiteral","src":"7383:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"7374:5:75","nodeType":"YulIdentifier","src":"7374:5:75"}]},{"nativeSrc":"7393:13:75","nodeType":"YulAssignment","src":"7393:13:75","value":{"name":"_base","nativeSrc":"7401:5:75","nodeType":"YulIdentifier","src":"7401:5:75"},"variableNames":[{"name":"base","nativeSrc":"7393:4:75","nodeType":"YulIdentifier","src":"7393:4:75"}]},{"body":{"nativeSrc":"7451:213:75","nodeType":"YulBlock","src":"7451:213:75","statements":[{"body":{"nativeSrc":"7493:22:75","nodeType":"YulBlock","src":"7493:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"7495:16:75","nodeType":"YulIdentifier","src":"7495:16:75"},"nativeSrc":"7495:18:75","nodeType":"YulFunctionCall","src":"7495:18:75"},"nativeSrc":"7495:18:75","nodeType":"YulExpressionStatement","src":"7495:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"7471:4:75","nodeType":"YulIdentifier","src":"7471:4:75"},{"arguments":[{"name":"max","nativeSrc":"7481:3:75","nodeType":"YulIdentifier","src":"7481:3:75"},{"name":"base","nativeSrc":"7486:4:75","nodeType":"YulIdentifier","src":"7486:4:75"}],"functionName":{"name":"div","nativeSrc":"7477:3:75","nodeType":"YulIdentifier","src":"7477:3:75"},"nativeSrc":"7477:14:75","nodeType":"YulFunctionCall","src":"7477:14:75"}],"functionName":{"name":"gt","nativeSrc":"7468:2:75","nodeType":"YulIdentifier","src":"7468:2:75"},"nativeSrc":"7468:24:75","nodeType":"YulFunctionCall","src":"7468:24:75"},"nativeSrc":"7465:50:75","nodeType":"YulIf","src":"7465:50:75"},{"body":{"nativeSrc":"7548:29:75","nodeType":"YulBlock","src":"7548:29:75","statements":[{"nativeSrc":"7550:25:75","nodeType":"YulAssignment","src":"7550:25:75","value":{"arguments":[{"name":"power","nativeSrc":"7563:5:75","nodeType":"YulIdentifier","src":"7563:5:75"},{"name":"base","nativeSrc":"7570:4:75","nodeType":"YulIdentifier","src":"7570:4:75"}],"functionName":{"name":"mul","nativeSrc":"7559:3:75","nodeType":"YulIdentifier","src":"7559:3:75"},"nativeSrc":"7559:16:75","nodeType":"YulFunctionCall","src":"7559:16:75"},"variableNames":[{"name":"power","nativeSrc":"7550:5:75","nodeType":"YulIdentifier","src":"7550:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7535:8:75","nodeType":"YulIdentifier","src":"7535:8:75"},{"kind":"number","nativeSrc":"7545:1:75","nodeType":"YulLiteral","src":"7545:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"7531:3:75","nodeType":"YulIdentifier","src":"7531:3:75"},"nativeSrc":"7531:16:75","nodeType":"YulFunctionCall","src":"7531:16:75"},"nativeSrc":"7528:49:75","nodeType":"YulIf","src":"7528:49:75"},{"nativeSrc":"7590:23:75","nodeType":"YulAssignment","src":"7590:23:75","value":{"arguments":[{"name":"base","nativeSrc":"7602:4:75","nodeType":"YulIdentifier","src":"7602:4:75"},{"name":"base","nativeSrc":"7608:4:75","nodeType":"YulIdentifier","src":"7608:4:75"}],"functionName":{"name":"mul","nativeSrc":"7598:3:75","nodeType":"YulIdentifier","src":"7598:3:75"},"nativeSrc":"7598:15:75","nodeType":"YulFunctionCall","src":"7598:15:75"},"variableNames":[{"name":"base","nativeSrc":"7590:4:75","nodeType":"YulIdentifier","src":"7590:4:75"}]},{"nativeSrc":"7626:28:75","nodeType":"YulAssignment","src":"7626:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"7642:1:75","nodeType":"YulLiteral","src":"7642:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"7645:8:75","nodeType":"YulIdentifier","src":"7645:8:75"}],"functionName":{"name":"shr","nativeSrc":"7638:3:75","nodeType":"YulIdentifier","src":"7638:3:75"},"nativeSrc":"7638:16:75","nodeType":"YulFunctionCall","src":"7638:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"7626:8:75","nodeType":"YulIdentifier","src":"7626:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7426:8:75","nodeType":"YulIdentifier","src":"7426:8:75"},{"kind":"number","nativeSrc":"7436:1:75","nodeType":"YulLiteral","src":"7436:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"7423:2:75","nodeType":"YulIdentifier","src":"7423:2:75"},"nativeSrc":"7423:15:75","nodeType":"YulFunctionCall","src":"7423:15:75"},"nativeSrc":"7415:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"7439:3:75","nodeType":"YulBlock","src":"7439:3:75","statements":[]},"pre":{"nativeSrc":"7419:3:75","nodeType":"YulBlock","src":"7419:3:75","statements":[]},"src":"7415:249:75"}]},"name":"checked_exp_helper","nativeSrc":"7295:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"7323:5:75","nodeType":"YulTypedName","src":"7323:5:75","type":""},{"name":"exponent","nativeSrc":"7330:8:75","nodeType":"YulTypedName","src":"7330:8:75","type":""},{"name":"max","nativeSrc":"7340:3:75","nodeType":"YulTypedName","src":"7340:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7348:5:75","nodeType":"YulTypedName","src":"7348:5:75","type":""},{"name":"base","nativeSrc":"7355:4:75","nodeType":"YulTypedName","src":"7355:4:75","type":""}],"src":"7295:375:75"},{"body":{"nativeSrc":"7734:843:75","nodeType":"YulBlock","src":"7734:843:75","statements":[{"body":{"nativeSrc":"7772:52:75","nodeType":"YulBlock","src":"7772:52:75","statements":[{"nativeSrc":"7786:10:75","nodeType":"YulAssignment","src":"7786:10:75","value":{"kind":"number","nativeSrc":"7795:1:75","nodeType":"YulLiteral","src":"7795:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"7786:5:75","nodeType":"YulIdentifier","src":"7786:5:75"}]},{"nativeSrc":"7809:5:75","nodeType":"YulLeave","src":"7809:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"7754:8:75","nodeType":"YulIdentifier","src":"7754:8:75"}],"functionName":{"name":"iszero","nativeSrc":"7747:6:75","nodeType":"YulIdentifier","src":"7747:6:75"},"nativeSrc":"7747:16:75","nodeType":"YulFunctionCall","src":"7747:16:75"},"nativeSrc":"7744:80:75","nodeType":"YulIf","src":"7744:80:75"},{"body":{"nativeSrc":"7857:52:75","nodeType":"YulBlock","src":"7857:52:75","statements":[{"nativeSrc":"7871:10:75","nodeType":"YulAssignment","src":"7871:10:75","value":{"kind":"number","nativeSrc":"7880:1:75","nodeType":"YulLiteral","src":"7880:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"7871:5:75","nodeType":"YulIdentifier","src":"7871:5:75"}]},{"nativeSrc":"7894:5:75","nodeType":"YulLeave","src":"7894:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"7843:4:75","nodeType":"YulIdentifier","src":"7843:4:75"}],"functionName":{"name":"iszero","nativeSrc":"7836:6:75","nodeType":"YulIdentifier","src":"7836:6:75"},"nativeSrc":"7836:12:75","nodeType":"YulFunctionCall","src":"7836:12:75"},"nativeSrc":"7833:76:75","nodeType":"YulIf","src":"7833:76:75"},{"cases":[{"body":{"nativeSrc":"7945:52:75","nodeType":"YulBlock","src":"7945:52:75","statements":[{"nativeSrc":"7959:10:75","nodeType":"YulAssignment","src":"7959:10:75","value":{"kind":"number","nativeSrc":"7968:1:75","nodeType":"YulLiteral","src":"7968:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"7959:5:75","nodeType":"YulIdentifier","src":"7959:5:75"}]},{"nativeSrc":"7982:5:75","nodeType":"YulLeave","src":"7982:5:75"}]},"nativeSrc":"7938:59:75","nodeType":"YulCase","src":"7938:59:75","value":{"kind":"number","nativeSrc":"7943:1:75","nodeType":"YulLiteral","src":"7943:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"8013:167:75","nodeType":"YulBlock","src":"8013:167:75","statements":[{"body":{"nativeSrc":"8048:22:75","nodeType":"YulBlock","src":"8048:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"8050:16:75","nodeType":"YulIdentifier","src":"8050:16:75"},"nativeSrc":"8050:18:75","nodeType":"YulFunctionCall","src":"8050:18:75"},"nativeSrc":"8050:18:75","nodeType":"YulExpressionStatement","src":"8050:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"8033:8:75","nodeType":"YulIdentifier","src":"8033:8:75"},{"kind":"number","nativeSrc":"8043:3:75","nodeType":"YulLiteral","src":"8043:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"8030:2:75","nodeType":"YulIdentifier","src":"8030:2:75"},"nativeSrc":"8030:17:75","nodeType":"YulFunctionCall","src":"8030:17:75"},"nativeSrc":"8027:43:75","nodeType":"YulIf","src":"8027:43:75"},{"nativeSrc":"8083:25:75","nodeType":"YulAssignment","src":"8083:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"8096:8:75","nodeType":"YulIdentifier","src":"8096:8:75"},{"kind":"number","nativeSrc":"8106:1:75","nodeType":"YulLiteral","src":"8106:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8092:3:75","nodeType":"YulIdentifier","src":"8092:3:75"},"nativeSrc":"8092:16:75","nodeType":"YulFunctionCall","src":"8092:16:75"},"variableNames":[{"name":"power","nativeSrc":"8083:5:75","nodeType":"YulIdentifier","src":"8083:5:75"}]},{"nativeSrc":"8121:11:75","nodeType":"YulVariableDeclaration","src":"8121:11:75","value":{"kind":"number","nativeSrc":"8131:1:75","nodeType":"YulLiteral","src":"8131:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"8125:2:75","nodeType":"YulTypedName","src":"8125:2:75","type":""}]},{"nativeSrc":"8145:7:75","nodeType":"YulAssignment","src":"8145:7:75","value":{"kind":"number","nativeSrc":"8151:1:75","nodeType":"YulLiteral","src":"8151:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"8145:2:75","nodeType":"YulIdentifier","src":"8145:2:75"}]},{"nativeSrc":"8165:5:75","nodeType":"YulLeave","src":"8165:5:75"}]},"nativeSrc":"8006:174:75","nodeType":"YulCase","src":"8006:174:75","value":{"kind":"number","nativeSrc":"8011:1:75","nodeType":"YulLiteral","src":"8011:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"7925:4:75","nodeType":"YulIdentifier","src":"7925:4:75"},"nativeSrc":"7918:262:75","nodeType":"YulSwitch","src":"7918:262:75"},{"body":{"nativeSrc":"8278:114:75","nodeType":"YulBlock","src":"8278:114:75","statements":[{"nativeSrc":"8292:28:75","nodeType":"YulAssignment","src":"8292:28:75","value":{"arguments":[{"name":"base","nativeSrc":"8305:4:75","nodeType":"YulIdentifier","src":"8305:4:75"},{"name":"exponent","nativeSrc":"8311:8:75","nodeType":"YulIdentifier","src":"8311:8:75"}],"functionName":{"name":"exp","nativeSrc":"8301:3:75","nodeType":"YulIdentifier","src":"8301:3:75"},"nativeSrc":"8301:19:75","nodeType":"YulFunctionCall","src":"8301:19:75"},"variableNames":[{"name":"power","nativeSrc":"8292:5:75","nodeType":"YulIdentifier","src":"8292:5:75"}]},{"nativeSrc":"8333:11:75","nodeType":"YulVariableDeclaration","src":"8333:11:75","value":{"kind":"number","nativeSrc":"8343:1:75","nodeType":"YulLiteral","src":"8343:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"8337:2:75","nodeType":"YulTypedName","src":"8337:2:75","type":""}]},{"nativeSrc":"8357:7:75","nodeType":"YulAssignment","src":"8357:7:75","value":{"kind":"number","nativeSrc":"8363:1:75","nodeType":"YulLiteral","src":"8363:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"8357:2:75","nodeType":"YulIdentifier","src":"8357:2:75"}]},{"nativeSrc":"8377:5:75","nodeType":"YulLeave","src":"8377:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"8202:4:75","nodeType":"YulIdentifier","src":"8202:4:75"},{"kind":"number","nativeSrc":"8208:2:75","nodeType":"YulLiteral","src":"8208:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"8199:2:75","nodeType":"YulIdentifier","src":"8199:2:75"},"nativeSrc":"8199:12:75","nodeType":"YulFunctionCall","src":"8199:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"8216:8:75","nodeType":"YulIdentifier","src":"8216:8:75"},{"kind":"number","nativeSrc":"8226:2:75","nodeType":"YulLiteral","src":"8226:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"8213:2:75","nodeType":"YulIdentifier","src":"8213:2:75"},"nativeSrc":"8213:16:75","nodeType":"YulFunctionCall","src":"8213:16:75"}],"functionName":{"name":"and","nativeSrc":"8195:3:75","nodeType":"YulIdentifier","src":"8195:3:75"},"nativeSrc":"8195:35:75","nodeType":"YulFunctionCall","src":"8195:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"8239:4:75","nodeType":"YulIdentifier","src":"8239:4:75"},{"kind":"number","nativeSrc":"8245:3:75","nodeType":"YulLiteral","src":"8245:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"8236:2:75","nodeType":"YulIdentifier","src":"8236:2:75"},"nativeSrc":"8236:13:75","nodeType":"YulFunctionCall","src":"8236:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"8254:8:75","nodeType":"YulIdentifier","src":"8254:8:75"},{"kind":"number","nativeSrc":"8264:2:75","nodeType":"YulLiteral","src":"8264:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8251:2:75","nodeType":"YulIdentifier","src":"8251:2:75"},"nativeSrc":"8251:16:75","nodeType":"YulFunctionCall","src":"8251:16:75"}],"functionName":{"name":"and","nativeSrc":"8232:3:75","nodeType":"YulIdentifier","src":"8232:3:75"},"nativeSrc":"8232:36:75","nodeType":"YulFunctionCall","src":"8232:36:75"}],"functionName":{"name":"or","nativeSrc":"8192:2:75","nodeType":"YulIdentifier","src":"8192:2:75"},"nativeSrc":"8192:77:75","nodeType":"YulFunctionCall","src":"8192:77:75"},"nativeSrc":"8189:203:75","nodeType":"YulIf","src":"8189:203:75"},{"nativeSrc":"8401:65:75","nodeType":"YulVariableDeclaration","src":"8401:65:75","value":{"arguments":[{"name":"base","nativeSrc":"8443:4:75","nodeType":"YulIdentifier","src":"8443:4:75"},{"name":"exponent","nativeSrc":"8449:8:75","nodeType":"YulIdentifier","src":"8449:8:75"},{"arguments":[{"kind":"number","nativeSrc":"8463:1:75","nodeType":"YulLiteral","src":"8463:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"8459:3:75","nodeType":"YulIdentifier","src":"8459:3:75"},"nativeSrc":"8459:6:75","nodeType":"YulFunctionCall","src":"8459:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"8424:18:75","nodeType":"YulIdentifier","src":"8424:18:75"},"nativeSrc":"8424:42:75","nodeType":"YulFunctionCall","src":"8424:42:75"},"variables":[{"name":"power_1","nativeSrc":"8405:7:75","nodeType":"YulTypedName","src":"8405:7:75","type":""},{"name":"base_1","nativeSrc":"8414:6:75","nodeType":"YulTypedName","src":"8414:6:75","type":""}]},{"body":{"nativeSrc":"8511:22:75","nodeType":"YulBlock","src":"8511:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"8513:16:75","nodeType":"YulIdentifier","src":"8513:16:75"},"nativeSrc":"8513:18:75","nodeType":"YulFunctionCall","src":"8513:18:75"},"nativeSrc":"8513:18:75","nodeType":"YulExpressionStatement","src":"8513:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"8481:7:75","nodeType":"YulIdentifier","src":"8481:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8498:1:75","nodeType":"YulLiteral","src":"8498:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"8494:3:75","nodeType":"YulIdentifier","src":"8494:3:75"},"nativeSrc":"8494:6:75","nodeType":"YulFunctionCall","src":"8494:6:75"},{"name":"base_1","nativeSrc":"8502:6:75","nodeType":"YulIdentifier","src":"8502:6:75"}],"functionName":{"name":"div","nativeSrc":"8490:3:75","nodeType":"YulIdentifier","src":"8490:3:75"},"nativeSrc":"8490:19:75","nodeType":"YulFunctionCall","src":"8490:19:75"}],"functionName":{"name":"gt","nativeSrc":"8478:2:75","nodeType":"YulIdentifier","src":"8478:2:75"},"nativeSrc":"8478:32:75","nodeType":"YulFunctionCall","src":"8478:32:75"},"nativeSrc":"8475:58:75","nodeType":"YulIf","src":"8475:58:75"},{"nativeSrc":"8542:29:75","nodeType":"YulAssignment","src":"8542:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"8555:7:75","nodeType":"YulIdentifier","src":"8555:7:75"},{"name":"base_1","nativeSrc":"8564:6:75","nodeType":"YulIdentifier","src":"8564:6:75"}],"functionName":{"name":"mul","nativeSrc":"8551:3:75","nodeType":"YulIdentifier","src":"8551:3:75"},"nativeSrc":"8551:20:75","nodeType":"YulFunctionCall","src":"8551:20:75"},"variableNames":[{"name":"power","nativeSrc":"8542:5:75","nodeType":"YulIdentifier","src":"8542:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"7675:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"7705:4:75","nodeType":"YulTypedName","src":"7705:4:75","type":""},{"name":"exponent","nativeSrc":"7711:8:75","nodeType":"YulTypedName","src":"7711:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"7724:5:75","nodeType":"YulTypedName","src":"7724:5:75","type":""}],"src":"7675:902:75"},{"body":{"nativeSrc":"8650:72:75","nodeType":"YulBlock","src":"8650:72:75","statements":[{"nativeSrc":"8660:56:75","nodeType":"YulAssignment","src":"8660:56:75","value":{"arguments":[{"name":"base","nativeSrc":"8690:4:75","nodeType":"YulIdentifier","src":"8690:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"8700:8:75","nodeType":"YulIdentifier","src":"8700:8:75"},{"kind":"number","nativeSrc":"8710:4:75","nodeType":"YulLiteral","src":"8710:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"8696:3:75","nodeType":"YulIdentifier","src":"8696:3:75"},"nativeSrc":"8696:19:75","nodeType":"YulFunctionCall","src":"8696:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"8669:20:75","nodeType":"YulIdentifier","src":"8669:20:75"},"nativeSrc":"8669:47:75","nodeType":"YulFunctionCall","src":"8669:47:75"},"variableNames":[{"name":"power","nativeSrc":"8660:5:75","nodeType":"YulIdentifier","src":"8660:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"8582:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"8621:4:75","nodeType":"YulTypedName","src":"8621:4:75","type":""},{"name":"exponent","nativeSrc":"8627:8:75","nodeType":"YulTypedName","src":"8627:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"8640:5:75","nodeType":"YulTypedName","src":"8640:5:75","type":""}],"src":"8582:140:75"},{"body":{"nativeSrc":"8808:103:75","nodeType":"YulBlock","src":"8808:103:75","statements":[{"body":{"nativeSrc":"8854:16:75","nodeType":"YulBlock","src":"8854:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8863:1:75","nodeType":"YulLiteral","src":"8863:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8866:1:75","nodeType":"YulLiteral","src":"8866:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8856:6:75","nodeType":"YulIdentifier","src":"8856:6:75"},"nativeSrc":"8856:12:75","nodeType":"YulFunctionCall","src":"8856:12:75"},"nativeSrc":"8856:12:75","nodeType":"YulExpressionStatement","src":"8856:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8829:7:75","nodeType":"YulIdentifier","src":"8829:7:75"},{"name":"headStart","nativeSrc":"8838:9:75","nodeType":"YulIdentifier","src":"8838:9:75"}],"functionName":{"name":"sub","nativeSrc":"8825:3:75","nodeType":"YulIdentifier","src":"8825:3:75"},"nativeSrc":"8825:23:75","nodeType":"YulFunctionCall","src":"8825:23:75"},{"kind":"number","nativeSrc":"8850:2:75","nodeType":"YulLiteral","src":"8850:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8821:3:75","nodeType":"YulIdentifier","src":"8821:3:75"},"nativeSrc":"8821:32:75","nodeType":"YulFunctionCall","src":"8821:32:75"},"nativeSrc":"8818:52:75","nodeType":"YulIf","src":"8818:52:75"},{"nativeSrc":"8879:26:75","nodeType":"YulAssignment","src":"8879:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8895:9:75","nodeType":"YulIdentifier","src":"8895:9:75"}],"functionName":{"name":"mload","nativeSrc":"8889:5:75","nodeType":"YulIdentifier","src":"8889:5:75"},"nativeSrc":"8889:16:75","nodeType":"YulFunctionCall","src":"8889:16:75"},"variableNames":[{"name":"value0","nativeSrc":"8879:6:75","nodeType":"YulIdentifier","src":"8879:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"8727:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8774:9:75","nodeType":"YulTypedName","src":"8774:9:75","type":""},{"name":"dataEnd","nativeSrc":"8785:7:75","nodeType":"YulTypedName","src":"8785:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8797:6:75","nodeType":"YulTypedName","src":"8797:6:75","type":""}],"src":"8727:184:75"},{"body":{"nativeSrc":"9045:119:75","nodeType":"YulBlock","src":"9045:119:75","statements":[{"nativeSrc":"9055:26:75","nodeType":"YulAssignment","src":"9055:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9067:9:75","nodeType":"YulIdentifier","src":"9067:9:75"},{"kind":"number","nativeSrc":"9078:2:75","nodeType":"YulLiteral","src":"9078:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9063:3:75","nodeType":"YulIdentifier","src":"9063:3:75"},"nativeSrc":"9063:18:75","nodeType":"YulFunctionCall","src":"9063:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9055:4:75","nodeType":"YulIdentifier","src":"9055:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9097:9:75","nodeType":"YulIdentifier","src":"9097:9:75"},{"name":"value0","nativeSrc":"9108:6:75","nodeType":"YulIdentifier","src":"9108:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9090:6:75","nodeType":"YulIdentifier","src":"9090:6:75"},"nativeSrc":"9090:25:75","nodeType":"YulFunctionCall","src":"9090:25:75"},"nativeSrc":"9090:25:75","nodeType":"YulExpressionStatement","src":"9090:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9135:9:75","nodeType":"YulIdentifier","src":"9135:9:75"},{"kind":"number","nativeSrc":"9146:2:75","nodeType":"YulLiteral","src":"9146:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9131:3:75","nodeType":"YulIdentifier","src":"9131:3:75"},"nativeSrc":"9131:18:75","nodeType":"YulFunctionCall","src":"9131:18:75"},{"name":"value1","nativeSrc":"9151:6:75","nodeType":"YulIdentifier","src":"9151:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9124:6:75","nodeType":"YulIdentifier","src":"9124:6:75"},"nativeSrc":"9124:34:75","nodeType":"YulFunctionCall","src":"9124:34:75"},"nativeSrc":"9124:34:75","nodeType":"YulExpressionStatement","src":"9124:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"8916:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9006:9:75","nodeType":"YulTypedName","src":"9006:9:75","type":""},{"name":"value1","nativeSrc":"9017:6:75","nodeType":"YulTypedName","src":"9017:6:75","type":""},{"name":"value0","nativeSrc":"9025:6:75","nodeType":"YulTypedName","src":"9025:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9036:4:75","nodeType":"YulTypedName","src":"9036:4:75","type":""}],"src":"8916:248:75"},{"body":{"nativeSrc":"9201:95:75","nodeType":"YulBlock","src":"9201:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9218:1:75","nodeType":"YulLiteral","src":"9218:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9225:3:75","nodeType":"YulLiteral","src":"9225:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"9230:10:75","nodeType":"YulLiteral","src":"9230:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9221:3:75","nodeType":"YulIdentifier","src":"9221:3:75"},"nativeSrc":"9221:20:75","nodeType":"YulFunctionCall","src":"9221:20:75"}],"functionName":{"name":"mstore","nativeSrc":"9211:6:75","nodeType":"YulIdentifier","src":"9211:6:75"},"nativeSrc":"9211:31:75","nodeType":"YulFunctionCall","src":"9211:31:75"},"nativeSrc":"9211:31:75","nodeType":"YulExpressionStatement","src":"9211:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9258:1:75","nodeType":"YulLiteral","src":"9258:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"9261:4:75","nodeType":"YulLiteral","src":"9261:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"9251:6:75","nodeType":"YulIdentifier","src":"9251:6:75"},"nativeSrc":"9251:15:75","nodeType":"YulFunctionCall","src":"9251:15:75"},"nativeSrc":"9251:15:75","nodeType":"YulExpressionStatement","src":"9251:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9282:1:75","nodeType":"YulLiteral","src":"9282:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9285:4:75","nodeType":"YulLiteral","src":"9285:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9275:6:75","nodeType":"YulIdentifier","src":"9275:6:75"},"nativeSrc":"9275:15:75","nodeType":"YulFunctionCall","src":"9275:15:75"},"nativeSrc":"9275:15:75","nodeType":"YulExpressionStatement","src":"9275:15:75"}]},"name":"panic_error_0x12","nativeSrc":"9169:127:75","nodeType":"YulFunctionDefinition","src":"9169:127:75"},{"body":{"nativeSrc":"9430:145:75","nodeType":"YulBlock","src":"9430:145:75","statements":[{"nativeSrc":"9440:26:75","nodeType":"YulAssignment","src":"9440:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9452:9:75","nodeType":"YulIdentifier","src":"9452:9:75"},{"kind":"number","nativeSrc":"9463:2:75","nodeType":"YulLiteral","src":"9463:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9448:3:75","nodeType":"YulIdentifier","src":"9448:3:75"},"nativeSrc":"9448:18:75","nodeType":"YulFunctionCall","src":"9448:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9440:4:75","nodeType":"YulIdentifier","src":"9440:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9482:9:75","nodeType":"YulIdentifier","src":"9482:9:75"},{"arguments":[{"name":"value0","nativeSrc":"9497:6:75","nodeType":"YulIdentifier","src":"9497:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9513:3:75","nodeType":"YulLiteral","src":"9513:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"9518:1:75","nodeType":"YulLiteral","src":"9518:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9509:3:75","nodeType":"YulIdentifier","src":"9509:3:75"},"nativeSrc":"9509:11:75","nodeType":"YulFunctionCall","src":"9509:11:75"},{"kind":"number","nativeSrc":"9522:1:75","nodeType":"YulLiteral","src":"9522:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9505:3:75","nodeType":"YulIdentifier","src":"9505:3:75"},"nativeSrc":"9505:19:75","nodeType":"YulFunctionCall","src":"9505:19:75"}],"functionName":{"name":"and","nativeSrc":"9493:3:75","nodeType":"YulIdentifier","src":"9493:3:75"},"nativeSrc":"9493:32:75","nodeType":"YulFunctionCall","src":"9493:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9475:6:75","nodeType":"YulIdentifier","src":"9475:6:75"},"nativeSrc":"9475:51:75","nodeType":"YulFunctionCall","src":"9475:51:75"},"nativeSrc":"9475:51:75","nodeType":"YulExpressionStatement","src":"9475:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9546:9:75","nodeType":"YulIdentifier","src":"9546:9:75"},{"kind":"number","nativeSrc":"9557:2:75","nodeType":"YulLiteral","src":"9557:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9542:3:75","nodeType":"YulIdentifier","src":"9542:3:75"},"nativeSrc":"9542:18:75","nodeType":"YulFunctionCall","src":"9542:18:75"},{"name":"value1","nativeSrc":"9562:6:75","nodeType":"YulIdentifier","src":"9562:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9535:6:75","nodeType":"YulIdentifier","src":"9535:6:75"},"nativeSrc":"9535:34:75","nodeType":"YulFunctionCall","src":"9535:34:75"},"nativeSrc":"9535:34:75","nodeType":"YulExpressionStatement","src":"9535:34:75"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"9301:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9391:9:75","nodeType":"YulTypedName","src":"9391:9:75","type":""},{"name":"value1","nativeSrc":"9402:6:75","nodeType":"YulTypedName","src":"9402:6:75","type":""},{"name":"value0","nativeSrc":"9410:6:75","nodeType":"YulTypedName","src":"9410:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9421:4:75","nodeType":"YulTypedName","src":"9421:4:75","type":""}],"src":"9301:274:75"},{"body":{"nativeSrc":"9737:214:75","nodeType":"YulBlock","src":"9737:214:75","statements":[{"nativeSrc":"9747:26:75","nodeType":"YulAssignment","src":"9747:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9759:9:75","nodeType":"YulIdentifier","src":"9759:9:75"},{"kind":"number","nativeSrc":"9770:2:75","nodeType":"YulLiteral","src":"9770:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9755:3:75","nodeType":"YulIdentifier","src":"9755:3:75"},"nativeSrc":"9755:18:75","nodeType":"YulFunctionCall","src":"9755:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9747:4:75","nodeType":"YulIdentifier","src":"9747:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9789:9:75","nodeType":"YulIdentifier","src":"9789:9:75"},{"arguments":[{"name":"value0","nativeSrc":"9804:6:75","nodeType":"YulIdentifier","src":"9804:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9820:3:75","nodeType":"YulLiteral","src":"9820:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"9825:1:75","nodeType":"YulLiteral","src":"9825:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9816:3:75","nodeType":"YulIdentifier","src":"9816:3:75"},"nativeSrc":"9816:11:75","nodeType":"YulFunctionCall","src":"9816:11:75"},{"kind":"number","nativeSrc":"9829:1:75","nodeType":"YulLiteral","src":"9829:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9812:3:75","nodeType":"YulIdentifier","src":"9812:3:75"},"nativeSrc":"9812:19:75","nodeType":"YulFunctionCall","src":"9812:19:75"}],"functionName":{"name":"and","nativeSrc":"9800:3:75","nodeType":"YulIdentifier","src":"9800:3:75"},"nativeSrc":"9800:32:75","nodeType":"YulFunctionCall","src":"9800:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9782:6:75","nodeType":"YulIdentifier","src":"9782:6:75"},"nativeSrc":"9782:51:75","nodeType":"YulFunctionCall","src":"9782:51:75"},"nativeSrc":"9782:51:75","nodeType":"YulExpressionStatement","src":"9782:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9853:9:75","nodeType":"YulIdentifier","src":"9853:9:75"},{"kind":"number","nativeSrc":"9864:2:75","nodeType":"YulLiteral","src":"9864:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9849:3:75","nodeType":"YulIdentifier","src":"9849:3:75"},"nativeSrc":"9849:18:75","nodeType":"YulFunctionCall","src":"9849:18:75"},{"arguments":[{"name":"value1","nativeSrc":"9873:6:75","nodeType":"YulIdentifier","src":"9873:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9889:3:75","nodeType":"YulLiteral","src":"9889:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"9894:1:75","nodeType":"YulLiteral","src":"9894:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9885:3:75","nodeType":"YulIdentifier","src":"9885:3:75"},"nativeSrc":"9885:11:75","nodeType":"YulFunctionCall","src":"9885:11:75"},{"kind":"number","nativeSrc":"9898:1:75","nodeType":"YulLiteral","src":"9898:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9881:3:75","nodeType":"YulIdentifier","src":"9881:3:75"},"nativeSrc":"9881:19:75","nodeType":"YulFunctionCall","src":"9881:19:75"}],"functionName":{"name":"and","nativeSrc":"9869:3:75","nodeType":"YulIdentifier","src":"9869:3:75"},"nativeSrc":"9869:32:75","nodeType":"YulFunctionCall","src":"9869:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9842:6:75","nodeType":"YulIdentifier","src":"9842:6:75"},"nativeSrc":"9842:60:75","nodeType":"YulFunctionCall","src":"9842:60:75"},"nativeSrc":"9842:60:75","nodeType":"YulExpressionStatement","src":"9842:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9922:9:75","nodeType":"YulIdentifier","src":"9922:9:75"},{"kind":"number","nativeSrc":"9933:2:75","nodeType":"YulLiteral","src":"9933:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9918:3:75","nodeType":"YulIdentifier","src":"9918:3:75"},"nativeSrc":"9918:18:75","nodeType":"YulFunctionCall","src":"9918:18:75"},{"name":"value2","nativeSrc":"9938:6:75","nodeType":"YulIdentifier","src":"9938:6:75"}],"functionName":{"name":"mstore","nativeSrc":"9911:6:75","nodeType":"YulIdentifier","src":"9911:6:75"},"nativeSrc":"9911:34:75","nodeType":"YulFunctionCall","src":"9911:34:75"},"nativeSrc":"9911:34:75","nodeType":"YulExpressionStatement","src":"9911:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"9580:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9690:9:75","nodeType":"YulTypedName","src":"9690:9:75","type":""},{"name":"value2","nativeSrc":"9701:6:75","nodeType":"YulTypedName","src":"9701:6:75","type":""},{"name":"value1","nativeSrc":"9709:6:75","nodeType":"YulTypedName","src":"9709:6:75","type":""},{"name":"value0","nativeSrc":"9717:6:75","nodeType":"YulTypedName","src":"9717:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9728:4:75","nodeType":"YulTypedName","src":"9728:4:75","type":""}],"src":"9580:371:75"},{"body":{"nativeSrc":"10085:145:75","nodeType":"YulBlock","src":"10085:145:75","statements":[{"nativeSrc":"10095:26:75","nodeType":"YulAssignment","src":"10095:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10107:9:75","nodeType":"YulIdentifier","src":"10107:9:75"},{"kind":"number","nativeSrc":"10118:2:75","nodeType":"YulLiteral","src":"10118:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10103:3:75","nodeType":"YulIdentifier","src":"10103:3:75"},"nativeSrc":"10103:18:75","nodeType":"YulFunctionCall","src":"10103:18:75"},"variableNames":[{"name":"tail","nativeSrc":"10095:4:75","nodeType":"YulIdentifier","src":"10095:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"10137:9:75","nodeType":"YulIdentifier","src":"10137:9:75"},{"arguments":[{"name":"value0","nativeSrc":"10152:6:75","nodeType":"YulIdentifier","src":"10152:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10168:3:75","nodeType":"YulLiteral","src":"10168:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"10173:1:75","nodeType":"YulLiteral","src":"10173:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10164:3:75","nodeType":"YulIdentifier","src":"10164:3:75"},"nativeSrc":"10164:11:75","nodeType":"YulFunctionCall","src":"10164:11:75"},{"kind":"number","nativeSrc":"10177:1:75","nodeType":"YulLiteral","src":"10177:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"10160:3:75","nodeType":"YulIdentifier","src":"10160:3:75"},"nativeSrc":"10160:19:75","nodeType":"YulFunctionCall","src":"10160:19:75"}],"functionName":{"name":"and","nativeSrc":"10148:3:75","nodeType":"YulIdentifier","src":"10148:3:75"},"nativeSrc":"10148:32:75","nodeType":"YulFunctionCall","src":"10148:32:75"}],"functionName":{"name":"mstore","nativeSrc":"10130:6:75","nodeType":"YulIdentifier","src":"10130:6:75"},"nativeSrc":"10130:51:75","nodeType":"YulFunctionCall","src":"10130:51:75"},"nativeSrc":"10130:51:75","nodeType":"YulExpressionStatement","src":"10130:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10201:9:75","nodeType":"YulIdentifier","src":"10201:9:75"},{"kind":"number","nativeSrc":"10212:2:75","nodeType":"YulLiteral","src":"10212:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10197:3:75","nodeType":"YulIdentifier","src":"10197:3:75"},"nativeSrc":"10197:18:75","nodeType":"YulFunctionCall","src":"10197:18:75"},{"name":"value1","nativeSrc":"10217:6:75","nodeType":"YulIdentifier","src":"10217:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10190:6:75","nodeType":"YulIdentifier","src":"10190:6:75"},"nativeSrc":"10190:34:75","nodeType":"YulFunctionCall","src":"10190:34:75"},"nativeSrc":"10190:34:75","nodeType":"YulExpressionStatement","src":"10190:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"9956:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10046:9:75","nodeType":"YulTypedName","src":"10046:9:75","type":""},{"name":"value1","nativeSrc":"10057:6:75","nodeType":"YulTypedName","src":"10057:6:75","type":""},{"name":"value0","nativeSrc":"10065:6:75","nodeType":"YulTypedName","src":"10065:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10076:4:75","nodeType":"YulTypedName","src":"10076:4:75","type":""}],"src":"9956:274:75"},{"body":{"nativeSrc":"10267:95:75","nodeType":"YulBlock","src":"10267:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10284:1:75","nodeType":"YulLiteral","src":"10284:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10291:3:75","nodeType":"YulLiteral","src":"10291:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10296:10:75","nodeType":"YulLiteral","src":"10296:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10287:3:75","nodeType":"YulIdentifier","src":"10287:3:75"},"nativeSrc":"10287:20:75","nodeType":"YulFunctionCall","src":"10287:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10277:6:75","nodeType":"YulIdentifier","src":"10277:6:75"},"nativeSrc":"10277:31:75","nodeType":"YulFunctionCall","src":"10277:31:75"},"nativeSrc":"10277:31:75","nodeType":"YulExpressionStatement","src":"10277:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10324:1:75","nodeType":"YulLiteral","src":"10324:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10327:4:75","nodeType":"YulLiteral","src":"10327:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"10317:6:75","nodeType":"YulIdentifier","src":"10317:6:75"},"nativeSrc":"10317:15:75","nodeType":"YulFunctionCall","src":"10317:15:75"},"nativeSrc":"10317:15:75","nodeType":"YulExpressionStatement","src":"10317:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10348:1:75","nodeType":"YulLiteral","src":"10348:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10351:4:75","nodeType":"YulLiteral","src":"10351:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10341:6:75","nodeType":"YulIdentifier","src":"10341:6:75"},"nativeSrc":"10341:15:75","nodeType":"YulFunctionCall","src":"10341:15:75"},"nativeSrc":"10341:15:75","nodeType":"YulExpressionStatement","src":"10341:15:75"}]},"name":"panic_error_0x21","nativeSrc":"10235:127:75","nodeType":"YulFunctionDefinition","src":"10235:127:75"},{"body":{"nativeSrc":"10403:218:75","nodeType":"YulBlock","src":"10403:218:75","statements":[{"nativeSrc":"10413:23:75","nodeType":"YulVariableDeclaration","src":"10413:23:75","value":{"arguments":[{"name":"y","nativeSrc":"10428:1:75","nodeType":"YulIdentifier","src":"10428:1:75"},{"kind":"number","nativeSrc":"10431:4:75","nodeType":"YulLiteral","src":"10431:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10424:3:75","nodeType":"YulIdentifier","src":"10424:3:75"},"nativeSrc":"10424:12:75","nodeType":"YulFunctionCall","src":"10424:12:75"},"variables":[{"name":"y_1","nativeSrc":"10417:3:75","nodeType":"YulTypedName","src":"10417:3:75","type":""}]},{"body":{"nativeSrc":"10468:111:75","nodeType":"YulBlock","src":"10468:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10489:1:75","nodeType":"YulLiteral","src":"10489:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10496:3:75","nodeType":"YulLiteral","src":"10496:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10501:10:75","nodeType":"YulLiteral","src":"10501:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10492:3:75","nodeType":"YulIdentifier","src":"10492:3:75"},"nativeSrc":"10492:20:75","nodeType":"YulFunctionCall","src":"10492:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10482:6:75","nodeType":"YulIdentifier","src":"10482:6:75"},"nativeSrc":"10482:31:75","nodeType":"YulFunctionCall","src":"10482:31:75"},"nativeSrc":"10482:31:75","nodeType":"YulExpressionStatement","src":"10482:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10533:1:75","nodeType":"YulLiteral","src":"10533:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10536:4:75","nodeType":"YulLiteral","src":"10536:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10526:6:75","nodeType":"YulIdentifier","src":"10526:6:75"},"nativeSrc":"10526:15:75","nodeType":"YulFunctionCall","src":"10526:15:75"},"nativeSrc":"10526:15:75","nodeType":"YulExpressionStatement","src":"10526:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10561:1:75","nodeType":"YulLiteral","src":"10561:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10564:4:75","nodeType":"YulLiteral","src":"10564:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10554:6:75","nodeType":"YulIdentifier","src":"10554:6:75"},"nativeSrc":"10554:15:75","nodeType":"YulFunctionCall","src":"10554:15:75"},"nativeSrc":"10554:15:75","nodeType":"YulExpressionStatement","src":"10554:15:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"10455:3:75","nodeType":"YulIdentifier","src":"10455:3:75"}],"functionName":{"name":"iszero","nativeSrc":"10448:6:75","nodeType":"YulIdentifier","src":"10448:6:75"},"nativeSrc":"10448:11:75","nodeType":"YulFunctionCall","src":"10448:11:75"},"nativeSrc":"10445:134:75","nodeType":"YulIf","src":"10445:134:75"},{"nativeSrc":"10588:27:75","nodeType":"YulAssignment","src":"10588:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"10601:1:75","nodeType":"YulIdentifier","src":"10601:1:75"},{"kind":"number","nativeSrc":"10604:4:75","nodeType":"YulLiteral","src":"10604:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10597:3:75","nodeType":"YulIdentifier","src":"10597:3:75"},"nativeSrc":"10597:12:75","nodeType":"YulFunctionCall","src":"10597:12:75"},{"name":"y_1","nativeSrc":"10611:3:75","nodeType":"YulIdentifier","src":"10611:3:75"}],"functionName":{"name":"mod","nativeSrc":"10593:3:75","nodeType":"YulIdentifier","src":"10593:3:75"},"nativeSrc":"10593:22:75","nodeType":"YulFunctionCall","src":"10593:22:75"},"variableNames":[{"name":"r","nativeSrc":"10588:1:75","nodeType":"YulIdentifier","src":"10588:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"10367:254:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10388:1:75","nodeType":"YulTypedName","src":"10388:1:75","type":""},{"name":"y","nativeSrc":"10391:1:75","nodeType":"YulTypedName","src":"10391:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"10397:1:75","nodeType":"YulTypedName","src":"10397:1:75","type":""}],"src":"10367:254:75"},{"body":{"nativeSrc":"10763:164:75","nodeType":"YulBlock","src":"10763:164:75","statements":[{"nativeSrc":"10773:27:75","nodeType":"YulVariableDeclaration","src":"10773:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"10793:6:75","nodeType":"YulIdentifier","src":"10793:6:75"}],"functionName":{"name":"mload","nativeSrc":"10787:5:75","nodeType":"YulIdentifier","src":"10787:5:75"},"nativeSrc":"10787:13:75","nodeType":"YulFunctionCall","src":"10787:13:75"},"variables":[{"name":"length","nativeSrc":"10777:6:75","nodeType":"YulTypedName","src":"10777:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"10815:3:75","nodeType":"YulIdentifier","src":"10815:3:75"},{"arguments":[{"name":"value0","nativeSrc":"10824:6:75","nodeType":"YulIdentifier","src":"10824:6:75"},{"kind":"number","nativeSrc":"10832:4:75","nodeType":"YulLiteral","src":"10832:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10820:3:75","nodeType":"YulIdentifier","src":"10820:3:75"},"nativeSrc":"10820:17:75","nodeType":"YulFunctionCall","src":"10820:17:75"},{"name":"length","nativeSrc":"10839:6:75","nodeType":"YulIdentifier","src":"10839:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"10809:5:75","nodeType":"YulIdentifier","src":"10809:5:75"},"nativeSrc":"10809:37:75","nodeType":"YulFunctionCall","src":"10809:37:75"},"nativeSrc":"10809:37:75","nodeType":"YulExpressionStatement","src":"10809:37:75"},{"nativeSrc":"10855:26:75","nodeType":"YulVariableDeclaration","src":"10855:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"10869:3:75","nodeType":"YulIdentifier","src":"10869:3:75"},{"name":"length","nativeSrc":"10874:6:75","nodeType":"YulIdentifier","src":"10874:6:75"}],"functionName":{"name":"add","nativeSrc":"10865:3:75","nodeType":"YulIdentifier","src":"10865:3:75"},"nativeSrc":"10865:16:75","nodeType":"YulFunctionCall","src":"10865:16:75"},"variables":[{"name":"_1","nativeSrc":"10859:2:75","nodeType":"YulTypedName","src":"10859:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"10897:2:75","nodeType":"YulIdentifier","src":"10897:2:75"},{"kind":"number","nativeSrc":"10901:1:75","nodeType":"YulLiteral","src":"10901:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"10890:6:75","nodeType":"YulIdentifier","src":"10890:6:75"},"nativeSrc":"10890:13:75","nodeType":"YulFunctionCall","src":"10890:13:75"},"nativeSrc":"10890:13:75","nodeType":"YulExpressionStatement","src":"10890:13:75"},{"nativeSrc":"10912:9:75","nodeType":"YulAssignment","src":"10912:9:75","value":{"name":"_1","nativeSrc":"10919:2:75","nodeType":"YulIdentifier","src":"10919:2:75"},"variableNames":[{"name":"end","nativeSrc":"10912:3:75","nodeType":"YulIdentifier","src":"10912:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"10626:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"10739:3:75","nodeType":"YulTypedName","src":"10739:3:75","type":""},{"name":"value0","nativeSrc":"10744:6:75","nodeType":"YulTypedName","src":"10744:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"10755:3:75","nodeType":"YulTypedName","src":"10755:3:75","type":""}],"src":"10626:301:75"}]},"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_decode_tuple_t_bytes4(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, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := 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_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_decode_tuple_t_bytes32t_bytes32(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        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_tuple_t_bytes32(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_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_bytes32t_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_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 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(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(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 := calldataload(_1)\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(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\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_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_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 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 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_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_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_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__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_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_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 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 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}","id":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":3874},{"length":32,"start":3915},{"length":32,"start":4270}]},"linkReferences":{},"object":"60806040526004361061021d575f3560e01c80636e553f651161011e578063b460af94116100a8578063d547741f1161006d578063d547741f14610624578063d905777e14610643578063dd62ed3e14610662578063e1d3945014610681578063ef8b30f7146105e6575f5ffd5b8063b460af94146105a8578063ba087652146105c7578063c63d75b614610451578063c6e6f592146105e6578063ce96cb7714610605575f5ffd5b806395d89b41116100ee57806395d89b4114610513578063a217fddf14610527578063a9059cbb1461053a578063ad3cb1cc14610559578063b3d7f6b914610589575f5ffd5b80636e553f651461049757806370a08231146104b657806391d14854146104d557806394bf804d146104f4575f5ffd5b8063248a9ca3116101aa57806338d52e0f1161016f57806338d52e0f1461041e578063402d267d146104515780634cdad506146102985780634f1ef2861461047057806352d1902d14610483575f5ffd5b8063248a9ca31461036857806324ea54f4146103875780632f2ff15d146103ba578063313ce567146103d957806336568abe146103ff575f5ffd5b8063095ea7b3116101f0578063095ea7b3146102b75780630a28a477146102d657806318160ddd146102f55780631e4e00911461032857806323b872dd14610349575f5ffd5b806301e1d1141461022157806301ffc9a71461024857806306fdde031461027757806307a2d13a14610298575b5f5ffd5b34801561022c575f5ffd5b506102356106b4565b6040519081526020015b60405180910390f35b348015610253575f5ffd5b506102676102623660046118cc565b610734565b604051901515815260200161023f565b348015610282575f5ffd5b5061028b61076a565b60405161023f91906118f3565b3480156102a3575f5ffd5b506102356102b2366004611928565b61082a565b3480156102c2575f5ffd5b506102676102d136600461195a565b610835565b3480156102e1575f5ffd5b506102356102f0366004611928565b61084c565b348015610300575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610235565b348015610333575f5ffd5b50610347610342366004611982565b610858565b005b348015610354575f5ffd5b506102676103633660046119a2565b610871565b348015610373575f5ffd5b50610235610382366004611928565b610896565b348015610392575f5ffd5b506102357f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b3480156103c5575f5ffd5b506103476103d43660046119dc565b6108b6565b3480156103e4575f5ffd5b506103ed6108d8565b60405160ff909116815260200161023f565b34801561040a575f5ffd5b506103476104193660046119dc565b610901565b348015610429575f5ffd5b505f516020611dc55f395f51905f52546040516001600160a01b03909116815260200161023f565b34801561045c575f5ffd5b5061023561046b366004611a06565b610934565b61034761047e366004611a33565b610971565b34801561048e575f5ffd5b50610235610990565b3480156104a2575f5ffd5b506102356104b13660046119dc565b6109ab565b3480156104c1575f5ffd5b506102356104d0366004611a06565b610a08565b3480156104e0575f5ffd5b506102676104ef3660046119dc565b610a2e565b3480156104ff575f5ffd5b5061023561050e3660046119dc565b610a64565b34801561051e575f5ffd5b5061028b610ab0565b348015610532575f5ffd5b506102355f81565b348015610545575f5ffd5b5061026761055436600461195a565b610aee565b348015610564575f5ffd5b5061028b604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610594575f5ffd5b506102356105a3366004611928565b610afb565b3480156105b3575f5ffd5b506102356105c2366004611af7565b610b07565b3480156105d2575f5ffd5b506102356105e1366004611af7565b610b5d565b3480156105f1575f5ffd5b50610235610600366004611928565b610baa565b348015610610575f5ffd5b5061023561061f366004611a06565b610bb5565b34801561062f575f5ffd5b5061034761063e3660046119dc565b610bc8565b34801561064e575f5ffd5b5061023561065d366004611a06565b610be4565b34801561066d575f5ffd5b5061023561067c366004611b30565b610bee565b34801561068c575f5ffd5b506102357fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b5f805f516020611dc55f395f51905f5280546040516370a0823160e01b81523060048201529192506001600160a01b0316906370a0823190602401602060405180830381865afa15801561070a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072e9190611b58565b91505090565b5f6001600160e01b03198216637965db0b60e01b148061076457506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020611d655f395f51905f52916107a890611b6f565b80601f01602080910402602001604051908101604052809291908181526020018280546107d490611b6f565b801561081f5780601f106107f65761010080835404028352916020019161081f565b820191905f5260205f20905b81548152906001019060200180831161080257829003601f168201915b505050505091505090565b5f610764825f610c37565b5f33610842818585610c8e565b5060019392505050565b5f610764826001610c9b565b5f61086281610ce9565b61086c8383610cf6565b505050565b5f3361087e858285610d56565b610889858585610da0565b60019150505b9392505050565b5f9081525f516020611da55f395f51905f52602052604090206001015490565b6108bf82610896565b6108c881610ce9565b6108d28383610dfd565b50505050565b5f805f516020611dc55f395f51905f5290505f815461072e9190600160a01b900460ff16611bbb565b6001600160a01b038116331461092a5760405163334bd91960e11b815260040160405180910390fd5b61086c8282610e9e565b5f61095f7fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a683610a2e565b61096a57505f919050565b5f19610764565b610979610f17565b61098282610fbd565b61098c8282610fe7565b5050565b5f6109996110a3565b505f516020611d855f395f51905f5290565b5f5f6109b683610934565b9050808411156109e857828482604051633c8097d960e11b81526004016109df93929190611bd4565b60405180910390fd5b5f6109f285610baa565b9050610a00338587846110ec565b949350505050565b6001600160a01b03165f9081525f516020611d655f395f51905f52602052604090205490565b5f9182525f516020611da55f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f610a6f83610934565b905080841115610a985782848260405163284ff66760e01b81526004016109df93929190611bd4565b5f610aa285610afb565b9050610a00338583886110ec565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020611d655f395f51905f52916107a890611b6f565b5f33610842818585610da0565b5f610764826001610c37565b5f5f610b1283610bb5565b905080851115610b3b57828582604051633fa733bb60e21b81526004016109df93929190611bd4565b5f610b458661084c565b9050610b543386868985611178565b95945050505050565b5f5f610b6883610be4565b905080851115610b9157828582604051632e52afbb60e21b81526004016109df93929190611bd4565b5f610b9b8661082a565b9050610b54338686848a611178565b5f610764825f610c9b565b5f610764610bc283610a08565b5f610c37565b610bd182610896565b610bda81610ce9565b6108d28383610e9e565b5f61076482610a08565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f61088f610c436106b4565b610c4e906001611bf5565b610c595f600a611ceb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610c859190611bf5565b8591908561122c565b61086c838383600161126e565b5f61088f610caa82600a611ceb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610cd69190611bf5565b610cde6106b4565b610c85906001611bf5565b610cf38133611349565b50565b5f516020611da55f395f51905f525f610d0e84610896565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f610d618484610bee565b90505f1981146108d25781811015610d9257828183604051637dc7a0d960e11b81526004016109df93929190611bd4565b6108d284848484035f61126e565b6001600160a01b038316610dc957604051634b637e8f60e11b81525f60048201526024016109df565b6001600160a01b038216610df25760405163ec442f0560e01b81525f60048201526024016109df565b61086c838383611382565b5f5f516020611da55f395f51905f52610e168484610a2e565b610e95575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610e4b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610764565b5f915050610764565b5f5f516020611da55f395f51905f52610eb78484610a2e565b15610e95575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610764565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610f9d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f915f516020611d855f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610fbb5760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504161098c81610ce9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611041575060408051601f3d908101601f1916820190925261103e91810190611b58565b60015b61106957604051634c9c8ce360e01b81526001600160a01b03831660048201526024016109df565b5f516020611d855f395f51905f52811461109957604051632a87526960e21b8152600481018290526024016109df565b61086c83836114a8565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fbb5760405163703e46dd60e11b815260040160405180910390fd5b5f516020611dc55f395f51905f528054611111906001600160a01b03168630866114fd565b61111b8483611564565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611169929190918252602082015260400190565b60405180910390a35050505050565b5f516020611dc55f395f51905f526001600160a01b03868116908516146111a4576111a4848784610d56565b6111ae8483611598565b80546111c4906001600160a01b031686856115cc565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db868660405161121c929190918252602082015260400190565b60405180910390a4505050505050565b5f611259611239836115fd565b801561125457505f848061124f5761124f611cf9565b868809115b151590565b611264868686611629565b610b549190611bf5565b5f516020611d655f395f51905f526001600160a01b0385166112a55760405163e602df0560e01b81525f60048201526024016109df565b6001600160a01b0384166112ce57604051634a1406b160e11b81525f60048201526024016109df565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561134257836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161116991815260200190565b5050505050565b6113538282610a2e565b61098c5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016109df565b5f516020611d655f395f51905f526001600160a01b0384166113bc5781816002015f8282546113b19190611bf5565b909155506114199050565b6001600160a01b0384165f90815260208290526040902054828110156113fb5784818460405163391434e360e21b81526004016109df93929190611bd4565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611437576002810180548390039055611455565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161149a91815260200190565b60405180910390a350505050565b6114b1826116df565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156114f55761086c8282611742565b61098c6117ab565b6040516001600160a01b0384811660248301528381166044830152606482018390526108d29186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506117ca565b6001600160a01b03821661158d5760405163ec442f0560e01b81525f60048201526024016109df565b61098c5f8383611382565b6001600160a01b0382166115c157604051634b637e8f60e11b81525f60048201526024016109df565b61098c825f83611382565b6040516001600160a01b0383811660248301526044820183905261086c91859182169063a9059cbb90606401611532565b5f600282600381111561161257611612611d0d565b61161c9190611d21565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f0361165d5783828161165357611653611cf9565b049250505061088f565b808411611674576116746003851502601118611836565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361171457604051634c9c8ce360e01b81526001600160a01b03821660048201526024016109df565b5f516020611d855f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161175e9190611d4e565b5f60405180830381855af49150503d805f8114611796576040519150601f19603f3d011682016040523d82523d5f602084013e61179b565b606091505b5091509150610b54858383611847565b3415610fbb5760405163b398979f60e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af1806117e9576040513d5f823e3d81fd5b50505f513d9150811561180057806001141561180d565b6001600160a01b0384163b155b156108d257604051635274afe760e01b81526001600160a01b03851660048201526024016109df565b634e487b715f52806020526024601cfd5b60608261185c57611857826118a3565b61088f565b815115801561187357506001600160a01b0384163b155b1561189c57604051639996b31560e01b81526001600160a01b03851660048201526024016109df565b508061088f565b8051156118b35780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f602082840312156118dc575f5ffd5b81356001600160e01b03198116811461088f575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611938575f5ffd5b5035919050565b80356001600160a01b0381168114611955575f5ffd5b919050565b5f5f6040838503121561196b575f5ffd5b6119748361193f565b946020939093013593505050565b5f5f60408385031215611993575f5ffd5b50508035926020909101359150565b5f5f5f606084860312156119b4575f5ffd5b6119bd8461193f565b92506119cb6020850161193f565b929592945050506040919091013590565b5f5f604083850312156119ed575f5ffd5b823591506119fd6020840161193f565b90509250929050565b5f60208284031215611a16575f5ffd5b61088f8261193f565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611a44575f5ffd5b611a4d8361193f565b9150602083013567ffffffffffffffff811115611a68575f5ffd5b8301601f81018513611a78575f5ffd5b803567ffffffffffffffff811115611a9257611a92611a1f565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611ac157611ac1611a1f565b604052818152828201602001871015611ad8575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611b09575f5ffd5b83359250611b196020850161193f565b9150611b276040850161193f565b90509250925092565b5f5f60408385031215611b41575f5ffd5b611b4a8361193f565b91506119fd6020840161193f565b5f60208284031215611b68575f5ffd5b5051919050565b600181811c90821680611b8357607f821691505b602082108103611ba157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561076457610764611ba7565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561076457610764611ba7565b6001815b6001841115611c4357808504811115611c2757611c27611ba7565b6001841615611c3557908102905b60019390931c928002611c0c565b935093915050565b5f82611c5957506001610764565b81611c6557505f610764565b8160018114611c7b5760028114611c8557611ca1565b6001915050610764565b60ff841115611c9657611c96611ba7565b50506001821b610764565b5060208310610133831016604e8410600b8410161715611cc4575081810a610764565b611cd05f198484611c08565b805f1904821115611ce357611ce3611ba7565b029392505050565b5f61088f60ff841683611c4b565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680611d3f57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a2646970667358221220d5f28cf5a8f3980c642578ba7711c64ee145289e49779e99879b30ad248cc28064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x21D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E553F65 GT PUSH2 0x11E JUMPI DUP1 PUSH4 0xB460AF94 GT PUSH2 0xA8 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x6D JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x624 JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x643 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x5E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB460AF94 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0xBA087652 EQ PUSH2 0x5C7 JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x5E6 JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x605 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x559 JUMPI DUP1 PUSH4 0xB3D7F6B9 EQ PUSH2 0x589 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x497 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x4D5 JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x4F4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x1AA JUMPI DUP1 PUSH4 0x38D52E0F GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x451 JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x298 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x483 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x3BA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3D9 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x3FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x328 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x349 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x298 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x6B4 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 0x253 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x262 CALLDATASIZE PUSH1 0x4 PUSH2 0x18CC JUMP JUMPDEST PUSH2 0x734 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x282 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x18F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x82A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x195A JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x2F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x84C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x235 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x1982 JUMP JUMPDEST PUSH2 0x858 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x363 CALLDATASIZE PUSH1 0x4 PUSH2 0x19A2 JUMP JUMPDEST PUSH2 0x871 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x373 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x3D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x8B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3ED PUSH2 0x8D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x901 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x429 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x23F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0x934 JUMP JUMPDEST PUSH2 0x347 PUSH2 0x47E CALLDATASIZE PUSH1 0x4 PUSH2 0x1A33 JUMP JUMPDEST PUSH2 0x971 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x990 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0x9AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x4D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x4EF CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xA2E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x50E CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xA64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B PUSH2 0xAB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x532 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x545 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x267 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x195A JUMP JUMPDEST PUSH2 0xAEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28B 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 0x594 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0xAFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF7 JUMP JUMPDEST PUSH2 0xB07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x5E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF7 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x1928 JUMP JUMPDEST PUSH2 0xBAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x610 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x61F CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x347 PUSH2 0x63E CALLDATASIZE PUSH1 0x4 PUSH2 0x19DC JUMP JUMPDEST PUSH2 0xBC8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x65D CALLDATASIZE PUSH1 0x4 PUSH2 0x1A06 JUMP JUMPDEST PUSH2 0xBE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH2 0x67C CALLDATASIZE PUSH1 0x4 PUSH2 0x1B30 JUMP JUMPDEST PUSH2 0xBEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x235 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP2 SWAP3 POP 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 0x70A 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 0x72E SWAP2 SWAP1 PUSH2 0x1B58 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x764 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7A8 SWAP1 PUSH2 0x1B6F 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 0x7D4 SWAP1 PUSH2 0x1B6F JUMP JUMPDEST DUP1 ISZERO PUSH2 0x81F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7F6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x81F 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 0x802 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH0 PUSH2 0xC37 JUMP JUMPDEST PUSH0 CALLER PUSH2 0x842 DUP2 DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH1 0x1 PUSH2 0xC9B JUMP JUMPDEST PUSH0 PUSH2 0x862 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 PUSH2 0xCF6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0x87E DUP6 DUP3 DUP6 PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x889 DUP6 DUP6 DUP6 PUSH2 0xDA0 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8BF DUP3 PUSH2 0x896 JUMP JUMPDEST PUSH2 0x8C8 DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0xDFD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0x72E SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1BBB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x86C DUP3 DUP3 PUSH2 0xE9E JUMP JUMPDEST PUSH0 PUSH2 0x95F PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x96A JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x764 JUMP JUMPDEST PUSH2 0x979 PUSH2 0xF17 JUMP JUMPDEST PUSH2 0x982 DUP3 PUSH2 0xFBD JUMP JUMPDEST PUSH2 0x98C DUP3 DUP3 PUSH2 0xFE7 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0x999 PUSH2 0x10A3 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x9B6 DUP4 PUSH2 0x934 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0x9E8 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0x9F2 DUP6 PUSH2 0xBAA JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 CALLER DUP6 DUP8 DUP5 PUSH2 0x10EC 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 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xA6F DUP4 PUSH2 0x934 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xA98 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xAA2 DUP6 PUSH2 0xAFB JUMP JUMPDEST SWAP1 POP PUSH2 0xA00 CALLER DUP6 DUP4 DUP9 PUSH2 0x10EC JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x7A8 SWAP1 PUSH2 0x1B6F JUMP JUMPDEST PUSH0 CALLER PUSH2 0x842 DUP2 DUP6 DUP6 PUSH2 0xDA0 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH1 0x1 PUSH2 0xC37 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB12 DUP4 PUSH2 0xBB5 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xB3B JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xB45 DUP7 PUSH2 0x84C JUMP JUMPDEST SWAP1 POP PUSH2 0xB54 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x1178 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xB68 DUP4 PUSH2 0xBE4 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xB91 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH0 PUSH2 0xB9B DUP7 PUSH2 0x82A JUMP JUMPDEST SWAP1 POP PUSH2 0xB54 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x1178 JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH0 PUSH2 0xC9B JUMP JUMPDEST PUSH0 PUSH2 0x764 PUSH2 0xBC2 DUP4 PUSH2 0xA08 JUMP JUMPDEST PUSH0 PUSH2 0xC37 JUMP JUMPDEST PUSH2 0xBD1 DUP3 PUSH2 0x896 JUMP JUMPDEST PUSH2 0xBDA DUP2 PUSH2 0xCE9 JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0xE9E JUMP JUMPDEST PUSH0 PUSH2 0x764 DUP3 PUSH2 0xA08 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 0x88F PUSH2 0xC43 PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0xC4E SWAP1 PUSH1 0x1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xC59 PUSH0 PUSH1 0xA PUSH2 0x1CEB JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x122C JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x126E JUMP JUMPDEST PUSH0 PUSH2 0x88F PUSH2 0xCAA DUP3 PUSH1 0xA PUSH2 0x1CEB JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0xCD6 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xCDE PUSH2 0x6B4 JUMP JUMPDEST PUSH2 0xC85 SWAP1 PUSH1 0x1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH2 0xCF3 DUP2 CALLER PUSH2 0x1349 JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0xD0E DUP5 PUSH2 0x896 JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD61 DUP5 DUP5 PUSH2 0xBEE JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0x8D2 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0xD92 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 JUMP JUMPDEST PUSH2 0x8D2 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x126E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xDC9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xDF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0xE16 DUP5 DUP5 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0xE95 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xE4B CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DA5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0xEB7 DUP5 DUP5 PUSH2 0xA2E JUMP JUMPDEST ISZERO PUSH2 0xE95 JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0xF9D JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF91 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 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 0xFBB 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0x98C DUP2 PUSH2 0xCE9 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 0x1041 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x103E SWAP2 DUP2 ADD SWAP1 PUSH2 0x1B58 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x1069 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 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x1099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x86C DUP4 DUP4 PUSH2 0x14A8 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xFBB 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 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1111 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x14FD JUMP JUMPDEST PUSH2 0x111B DUP5 DUP4 PUSH2 0x1564 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1169 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1DC5 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x11A4 JUMPI PUSH2 0x11A4 DUP5 DUP8 DUP5 PUSH2 0xD56 JUMP JUMPDEST PUSH2 0x11AE DUP5 DUP4 PUSH2 0x1598 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x11C4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x15CC JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x121C 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 POP JUMP JUMPDEST PUSH0 PUSH2 0x1259 PUSH2 0x1239 DUP4 PUSH2 0x15FD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1254 JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x124F JUMPI PUSH2 0x124F PUSH2 0x1CF9 JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x1264 DUP7 DUP7 DUP7 PUSH2 0x1629 JUMP JUMPDEST PUSH2 0xB54 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x12A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x12CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF 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 0x1342 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 0x1169 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1353 DUP3 DUP3 PUSH2 0xA2E JUMP JUMPDEST PUSH2 0x98C JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D65 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x13BC JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x13B1 SWAP2 SWAP1 PUSH2 0x1BF5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1419 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 0x13FB JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9DF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1BD4 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 0x1437 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1455 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 0x149A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x14B1 DUP3 PUSH2 0x16DF 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 0x14F5 JUMPI PUSH2 0x86C DUP3 DUP3 PUSH2 0x1742 JUMP JUMPDEST PUSH2 0x98C PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x8D2 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x17CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x158D JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x98C PUSH0 DUP4 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x15C1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x98C DUP3 PUSH0 DUP4 PUSH2 0x1382 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0x86C SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x1532 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1612 JUMPI PUSH2 0x1612 PUSH2 0x1D0D JUMP JUMPDEST PUSH2 0x161C SWAP2 SWAP1 PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x165D JUMPI DUP4 DUP3 DUP2 PUSH2 0x1653 JUMPI PUSH2 0x1653 PUSH2 0x1CF9 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x88F JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x1674 JUMPI PUSH2 0x1674 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x1836 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1714 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 0x9DF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x1D85 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 PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x175E SWAP2 SWAP1 PUSH2 0x1D4E JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1796 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 0x179B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xB54 DUP6 DUP4 DUP4 PUSH2 0x1847 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x17E9 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x1800 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x180D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x8D2 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 0x9DF JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x185C JUMPI PUSH2 0x1857 DUP3 PUSH2 0x18A3 JUMP JUMPDEST PUSH2 0x88F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1873 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x189C 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 0x9DF JUMP JUMPDEST POP DUP1 PUSH2 0x88F JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x18B3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x88F JUMPI PUSH0 PUSH0 REVERT 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 0x1938 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 0x1955 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x196B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1974 DUP4 PUSH2 0x193F 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 0x1993 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 0x19B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x19BD DUP5 PUSH2 0x193F JUMP JUMPDEST SWAP3 POP PUSH2 0x19CB PUSH1 0x20 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x19ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0x19FD PUSH1 0x20 DUP5 ADD PUSH2 0x193F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A16 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x88F DUP3 PUSH2 0x193F JUMP 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 0x1A44 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1A4D DUP4 PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A68 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1A78 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1A92 JUMPI PUSH2 0x1A92 PUSH2 0x1A1F 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 0x1AC1 JUMPI PUSH2 0x1AC1 PUSH2 0x1A1F JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x1AD8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B09 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x1B19 PUSH1 0x20 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH2 0x1B27 PUSH1 0x40 DUP6 ADD PUSH2 0x193F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B41 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1B4A DUP4 PUSH2 0x193F JUMP JUMPDEST SWAP2 POP PUSH2 0x19FD PUSH1 0x20 DUP5 ADD PUSH2 0x193F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B68 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1B83 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1BA1 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 0x764 JUMPI PUSH2 0x764 PUSH2 0x1BA7 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 0x764 JUMPI PUSH2 0x764 PUSH2 0x1BA7 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1C43 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1C27 JUMPI PUSH2 0x1C27 PUSH2 0x1BA7 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1C35 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1C0C JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1C59 JUMPI POP PUSH1 0x1 PUSH2 0x764 JUMP JUMPDEST DUP2 PUSH2 0x1C65 JUMPI POP PUSH0 PUSH2 0x764 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1C7B JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1C85 JUMPI PUSH2 0x1CA1 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x764 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1C96 JUMPI PUSH2 0x1C96 PUSH2 0x1BA7 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x764 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1CC4 JUMPI POP DUP2 DUP2 EXP PUSH2 0x764 JUMP JUMPDEST PUSH2 0x1CD0 PUSH0 NOT DUP5 DUP5 PUSH2 0x1C08 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1CE3 JUMPI PUSH2 0x1CE3 PUSH2 0x1BA7 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x88F PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1C4B 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 0x1D3F 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 PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID MSTORE 0xC6 ORIGIN SELFBALANCE 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD5 CALLCODE DUP13 CREATE2 0xA8 RETURN SWAP9 0xC PUSH5 0x2578BA7711 0xC6 0x4E 0xE1 GASLIMIT 0x28 SWAP15 BLOBHASH PUSH24 0x9E99879B30AD248CC28064736F6C634300081C0033000000 ","sourceMap":"941:1666:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7080:175:10;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;7080:175:10;;;;;;;;3443:202:6;;;;;;;;;;-1:-1:-1;3443:202:6;;;;;:::i;:::-;;:::i;:::-;;;652:14:75;;645:22;627:41;;615:2;600:18;3443:202:6;487:187:75;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;8777:147:10:-;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;3896:152:9:-;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;2040:134:56;;;;;;;;;;-1:-1:-1;2040:134:56;;;;;:::i;:::-;;:::i;:::-;;5988:244:9;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;4759:191:6:-;;;;;;;;;;-1:-1:-1;4759:191:6;;;;;:::i;:::-;;:::i;1136:66:56:-;;;;;;;;;;;;1176:26;1136:66;;5246:136:6;;;;;;;;;;-1:-1:-1;5246:136:6;;;;;:::i;:::-;;:::i;6612:221:10:-;;;;;;;;;;;;;:::i;:::-;;;3436:4:75;3424:17;;;3406:36;;3394:2;3379:18;6612:221:10;3264:184:75;6348:245:6;;;;;;;;;;-1:-1:-1;6348:245:6;;;;;:::i;:::-;;:::i;6877:153:10:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;7014:8:10;6877:153;;-1:-1:-1;;;;;7014:8:10;;;3599:51:75;;3587:2;3572:18;6877:153:10;3453:203:75;2227:167:56;;;;;;;;;;-1:-1:-1;2227:167:56;;;;;:::i;:::-;;:::i;4161:214:8:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;3732:207:6:-;;;;;;;;;;-1:-1:-1;3732:207:6;;;;;:::i;:::-;;:::i;9603:380:10:-;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;2317:49:6:-;;;;;;;;;;-1:-1:-1;2317:49:6;2362:4;2317:49;;4472:178:9;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;10488:405::-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;7309:148::-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;8017:153::-;;;;;;;;;;-1:-1:-1;8017:153:10;;;;;:::i;:::-;;:::i;5662:138:6:-;;;;;;;;;;-1:-1:-1;5662:138:6;;;;;:::i;:::-;;:::i;8218:112:10:-;;;;;;;;;;-1:-1:-1;8218:112:10;;;;;:::i;:::-;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;1078:54:56:-;;;;;;;;;;;;1112:20;1078:54;;7080:175:10;7132:7;;-1:-1:-1;;;;;;;;;;;7215:8:10;;:33;;-1:-1:-1;;;7215:33:10;;7242:4;7215:33;;;3599:51:75;7215:8:10;;-1:-1:-1;;;;;;7215:8:10;;:18;;3572::75;;7215:33:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7208:40;;;7080:175;:::o;3443:202:6:-;3528:4;-1:-1:-1;;;;;;3551:47:6;;-1:-1:-1;;;3551:47:6;;:87;;-1:-1:-1;;;;;;;;;;1134:40:12;;;3602:36:6;3544:94;3443:202;-1:-1:-1;;3443:202:6:o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;2040:134:56:-;2362:4:6;3191:16;2362:4;3191:10;:16::i;:::-;2139:30:56::1;2153:4;2159:9;2139:13;:30::i;:::-;2040:134:::0;;;:::o;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;4759:191:6:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:6;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;6348:245:6:-;-1:-1:-1;;;;;6441:34:6;;966:10:11;6441:34:6;6437:102;;6498:30;;-1:-1:-1;;;6498:30:6;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;2227:167:56:-;2300:7;2320:23;1112:20;2337:5;2320:7;:23::i;:::-;2315:38;;-1:-1:-1;2352:1:56;;2227:167;-1:-1:-1;2227:167:56:o;2315:38::-;-1:-1:-1;;2366:23:56;7708:108:10;4161:214:8;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;3732:207:6:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:6;;;;;;;;-1:-1:-1;;;;;3901:31:6;;;;;;;;;;;;;;;3732:207::o;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;4472:178::-;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;:::-;10430:6;10030:413;-1:-1:-1;;;;;10030:413:10:o;10488:405::-;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;7309:148::-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;8017:153::-;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;5662:138:6:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8218:112:10:-:0;8281:7;8307:16;8317:5;8307:9;:16::i;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;4148:103:6:-;4214:30;4225:4;966:10:11;4214::6;:30::i;:::-;4148:103;:::o;6718:318::-;-1:-1:-1;;;;;;;;;;;6801:30:6;6898:18;6911:4;6898:12;:18::i;:::-;6926:8;:14;;;;;;;;;;;:24;;:36;;;6977:52;6870:46;;-1:-1:-1;6953:9:6;;6870:46;;6935:4;;6977:52;;6926:8;6977:52;6791:245;;6718:318;;:::o;11745:477:9:-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;3599:51:75;3572:18;;6729:30:9;3453:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;3599:51:75;3572:18;;6822:32:9;3453:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;7270:387:6:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:6;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:6;;;;;;;;;:38;;-1:-1:-1;;7475:38:6;7509:4;7475:38;;;7559:12;966:10:11;;887:96;7559:12:6;-1:-1:-1;;;;;7532:40:6;7550:7;-1:-1:-1;;;;;7532:40:6;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:6;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:6;;;;;;;;;;:39;;-1:-1:-1;;8097:39:6;;;8155:40;966:10:11;;8097:14:6;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:8;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;1943:93:56:-;1176:26;3191:16:6;3202:4;3191:10;:16::i;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;3617:32:75;;6518:60:8;;;3599:51:75;3572:18;;6518:60:8;3453:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;11631:890:10;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;9090:25:75;;;9146:2;9131:18;;9124:34;9078:2;9063:18;;8916:248;12473:41:10;;;;;;;;11732:789;11631:890;;;;:::o;12588:974::-;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;9090:25:75;;;9146:2;9131:18;;9124:34;9078:2;9063:18;;8916:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;9351:238:42:-;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;3599:51:75;3572:18;;11183:32:9;3453:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;3599:51:75;3572:18;;11283:31:9;3453:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11381:76:9;11074:389;10976:487;;;;:::o;4381:197:6:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:6;;-1:-1:-1;;;;;9493:32:75;;4514:47:6;;;9475:51:75;9542:18;;;9535:34;;;9448:18;;4514:47:6;9301:274:75;7220:1170:9;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220: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;1670:188:33:-;1797:53;;-1:-1:-1;;;;;9800:32:75;;;1797:53:33;;;9782:51:75;9869:32;;;9849:18;;;9842:60;9918:18;;;9911:34;;;1770:81:33;;1790:5;;1812:18;;;;;9755::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;3599:51:75;3572:18;;8847:32:9;3453:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;3599:51:75;3572:18;;9373:30:9;3453:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;9493:32:75;;;1380:43:33;;;9475:51:75;9542:18;;;9535:34;;;1353:71:33;;1373:5;;1395:14;;;;;9448:18:75;;1380:43:33;9301:274:75;28183:122:42;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::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;;;;;3617:32:75;;1805:47:27;;;3599:51:75;3572:18;;1805:47:27;3453:203:75;1744:119:27;-1:-1:-1;;;;;;;;;;;1872:73:27;;-1:-1:-1;;;;;;1872:73:27;-1:-1:-1;;;;;1872:73:27;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;6113:122:27:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:27;;;;;;;;;;;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;3617:32:75;;8401:40:33;;;3599:51:75;3572:18;;8401:40:33;3453:203:75;1776:194:38;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;4421:582:34;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;3617:32:75;;4917:24:34;;;3599:51:75;3572:18;;4917:24:34;3453:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;196:286:75;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:75;;391:43;;381:71;;448:1;445;438:12;679:418;828:2;817:9;810:21;791:4;860:6;854:13;903:6;898:2;887:9;883:18;876:34;962:6;957:2;949:6;945:15;940:2;929:9;925:18;919:50;1018:1;1013:2;1004:6;993:9;989:22;985:31;978:42;1088:2;1081;1077:7;1072:2;1064:6;1060:15;1056:29;1045:9;1041:45;1037:54;1029:62;;;679:418;;;;:::o;1102:226::-;1161:6;1214:2;1202:9;1193:7;1189:23;1185:32;1182:52;;;1230:1;1227;1220:12;1182:52;-1:-1:-1;1275:23:75;;1102:226;-1:-1:-1;1102:226:75:o;1333:173::-;1401:20;;-1:-1:-1;;;;;1450:31:75;;1440:42;;1430:70;;1496:1;1493;1486:12;1430:70;1333:173;;;:::o;1511:300::-;1579:6;1587;1640:2;1628:9;1619:7;1615:23;1611:32;1608:52;;;1656:1;1653;1646:12;1608:52;1679:29;1698:9;1679:29;:::i;:::-;1669:39;1777:2;1762:18;;;;1749:32;;-1:-1:-1;;;1511:300:75:o;1816:346::-;1884:6;1892;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;-1:-1:-1;;2006:23:75;;;2126:2;2111:18;;;2098:32;;-1:-1:-1;1816:346:75:o;2167:374::-;2244:6;2252;2260;2313:2;2301:9;2292:7;2288:23;2284:32;2281:52;;;2329:1;2326;2319:12;2281:52;2352:29;2371:9;2352:29;:::i;:::-;2342:39;;2400:38;2434:2;2423:9;2419:18;2400:38;:::i;:::-;2167:374;;2390:48;;-1:-1:-1;;;2507:2:75;2492:18;;;;2479:32;;2167:374::o;2959:300::-;3027:6;3035;3088:2;3076:9;3067:7;3063:23;3059:32;3056:52;;;3104:1;3101;3094:12;3056:52;3149:23;;;-1:-1:-1;3215:38:75;3249:2;3234:18;;3215:38;:::i;:::-;3205:48;;2959:300;;;;;:::o;3661:186::-;3720:6;3773:2;3761:9;3752:7;3748:23;3744:32;3741:52;;;3789:1;3786;3779:12;3741:52;3812:29;3831:9;3812:29;:::i;3852:127::-;3913:10;3908:3;3904:20;3901:1;3894:31;3944:4;3941:1;3934:15;3968:4;3965:1;3958:15;3984:1018;4061:6;4069;4122:2;4110:9;4101:7;4097:23;4093:32;4090:52;;;4138:1;4135;4128:12;4090:52;4161:29;4180:9;4161:29;:::i;:::-;4151:39;;4241:2;4230:9;4226:18;4213:32;4268:18;4260:6;4257:30;4254:50;;;4300:1;4297;4290:12;4254:50;4323:22;;4376:4;4368:13;;4364:27;-1:-1:-1;4354:55:75;;4405:1;4402;4395:12;4354:55;4445:2;4432:16;4471:18;4463:6;4460:30;4457:56;;;4493:18;;:::i;:::-;4542:2;4536:9;4634:2;4596:17;;-1:-1:-1;;4592:31:75;;;4625:2;4588:40;4584:54;4572:67;;4669:18;4654:34;;4690:22;;;4651:62;4648:88;;;4716:18;;:::i;:::-;4752:2;4745:22;4776;;;4817:15;;;4834:2;4813:24;4810:37;-1:-1:-1;4807:57:75;;;4860:1;4857;4850:12;4807:57;4916:6;4911:2;4907;4903:11;4898:2;4890:6;4886:15;4873:50;4969:1;4964:2;4955:6;4947;4943:19;4939:28;4932:39;4990:6;4980:16;;;;;3984:1018;;;;;:::o;5312:374::-;5389:6;5397;5405;5458:2;5446:9;5437:7;5433:23;5429:32;5426:52;;;5474:1;5471;5464:12;5426:52;5519:23;;;-1:-1:-1;5585:38:75;5619:2;5604:18;;5585:38;:::i;:::-;5575:48;;5642:38;5676:2;5665:9;5661:18;5642:38;:::i;:::-;5632:48;;5312:374;;;;;:::o;5691:260::-;5759:6;5767;5820:2;5808:9;5799:7;5795:23;5791:32;5788:52;;;5836:1;5833;5826:12;5788:52;5859:29;5878:9;5859:29;:::i;:::-;5849:39;;5907:38;5941:2;5930:9;5926:18;5907:38;:::i;5956:184::-;6026:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:52;;;6095:1;6092;6085:12;6047:52;-1:-1:-1;6118:16:75;;5956:184;-1:-1:-1;5956:184:75:o;6145:380::-;6224:1;6220:12;;;;6267;;;6288:61;;6342:4;6334:6;6330:17;6320:27;;6288:61;6395:2;6387:6;6384:14;6364:18;6361:38;6358:161;;6441:10;6436:3;6432:20;6429:1;6422:31;6476:4;6473:1;6466:15;6504:4;6501:1;6494:15;6358:161;;6145:380;;;:::o;6530:127::-;6591:10;6586:3;6582:20;6579:1;6572:31;6622:4;6619:1;6612:15;6646:4;6643:1;6636:15;6662:148;6750:4;6729:12;;;6743;;;6725:31;;6768:13;;6765:39;;;6784:18;;:::i;6815:345::-;-1:-1:-1;;;;;7035:32:75;;;;7017:51;;7099:2;7084:18;;7077:34;;;;7142:2;7127:18;;7120:34;7005:2;6990:18;;6815:345::o;7165:125::-;7230:9;;;7251:10;;;7248:36;;;7264:18;;:::i;7295:375::-;7383:1;7401:5;7415:249;7436:1;7426:8;7423:15;7415:249;;;7486:4;7481:3;7477:14;7471:4;7468:24;7465:50;;;7495:18;;:::i;:::-;7545:1;7535:8;7531:16;7528:49;;;7559:16;;;;7528:49;7642:1;7638:16;;;;;7598:15;;7415:249;;;7295:375;;;;;;:::o;7675:902::-;7724:5;7754:8;7744:80;;-1:-1:-1;7795:1:75;7809:5;;7744:80;7843:4;7833:76;;-1:-1:-1;7880:1:75;7894:5;;7833:76;7925:4;7943:1;7938:59;;;;8011:1;8006:174;;;;7918:262;;7938:59;7968:1;7959:10;;7982:5;;;8006:174;8043:3;8033:8;8030:17;8027:43;;;8050:18;;:::i;:::-;-1:-1:-1;;8106:1:75;8092:16;;8165:5;;7918:262;;8264:2;8254:8;8251:16;8245:3;8239:4;8236:13;8232:36;8226:2;8216:8;8213:16;8208:2;8202:4;8199:12;8195:35;8192:77;8189:203;;;-1:-1:-1;8301:19:75;;;8377:5;;8189:203;8424:42;-1:-1:-1;;8449:8:75;8443:4;8424:42;:::i;:::-;8502:6;8498:1;8494:6;8490:19;8481:7;8478:32;8475:58;;;8513:18;;:::i;:::-;8551:20;;7675:902;-1:-1:-1;;;7675:902:75:o;8582:140::-;8640:5;8669:47;8710:4;8700:8;8696:19;8690:4;8669:47;:::i;9169:127::-;9230:10;9225:3;9221:20;9218:1;9211:31;9261:4;9258:1;9251:15;9285:4;9282:1;9275:15;10235:127;10296:10;10291:3;10287:20;10284:1;10277:31;10327:4;10324:1;10317:15;10351:4;10348:1;10341:15;10367:254;10397:1;10431:4;10428:1;10424:12;10455:3;10445:134;;10501:10;10496:3;10492:20;10489:1;10482:31;10536:4;10533:1;10526:15;10564:4;10561:1;10554:15;10445:134;10611:3;10604:4;10601:1;10597:12;10593:22;10588:27;;;10367:254;;;;:::o;10626:301::-;10755:3;10793:6;10787:13;10839:6;10832:4;10824:6;10820:17;10815:3;10809:37;10901:1;10865:16;;10890:13;;;-1:-1:-1;10865:16:75;10626:301;-1:-1:-1;10626:301:75:o"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GUARDIAN_ROLE()":"24ea54f4","LP_ROLE()":"e1d39450","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","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","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","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setRoleAdmin(bytes32,bytes32)":"1e4e0091","supportsInterface(bytes4)":"01ffc9a7","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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"InvalidAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"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\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LP_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"adminRole\",\"type\":\"bytes32\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\":\"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\":\"Base class for permissioned ERC-4626 that use AccessControl for the access permissions.      Not used at the moment, since we started to use AccessManagedProxy contracts.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}. \"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"}},\"title\":\"PermissionedERC4626\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PermissionedERC4626.sol\":\"PermissionedERC4626\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"contracts/PermissionedERC4626.sol\":{\"keccak256\":\"0x2760466f73e34bf00a2710b08a47a9ca11d36ef8e965cc2a973613da91cffd21\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d05b8b13e64ea02b37f91980a0496e04e6d50a27fd0b708dc9a785d51732c15\",\"dweb:/ipfs/QmQjNATyUL5tuheXexHwZf4bZKDNp57GkcLth9xXxg1xes\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/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":[{"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":{"@_18563":{"entryPoint":null,"id":18563,"parameterSlots":4,"returnSlots":0},"@_18979":{"entryPoint":null,"id":18979,"parameterSlots":3,"returnSlots":0},"@makeStorageSlot_15720":{"entryPoint":null,"id":15720,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$8682t_contract$_IERC20Metadata_$8682t_uint256t_contract$_IPool_$20704_fromMemory":{"entryPoint":499,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":581,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"validator_revert_contract_IERC20Metadata":{"entryPoint":476,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1620:75","nodeType":"YulBlock","src":"0:1620:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"75:86:75","nodeType":"YulBlock","src":"75:86:75","statements":[{"body":{"nativeSrc":"139:16:75","nodeType":"YulBlock","src":"139:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"148:1:75","nodeType":"YulLiteral","src":"148:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"151:1:75","nodeType":"YulLiteral","src":"151:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"141:6:75","nodeType":"YulIdentifier","src":"141:6:75"},"nativeSrc":"141:12:75","nodeType":"YulFunctionCall","src":"141:12:75"},"nativeSrc":"141:12:75","nodeType":"YulExpressionStatement","src":"141:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"98:5:75","nodeType":"YulIdentifier","src":"98:5:75"},{"arguments":[{"name":"value","nativeSrc":"109:5:75","nodeType":"YulIdentifier","src":"109:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"124:3:75","nodeType":"YulLiteral","src":"124:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"129:1:75","nodeType":"YulLiteral","src":"129:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"120:3:75","nodeType":"YulIdentifier","src":"120:3:75"},"nativeSrc":"120:11:75","nodeType":"YulFunctionCall","src":"120:11:75"},{"kind":"number","nativeSrc":"133:1:75","nodeType":"YulLiteral","src":"133:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"116:3:75","nodeType":"YulIdentifier","src":"116:3:75"},"nativeSrc":"116:19:75","nodeType":"YulFunctionCall","src":"116:19:75"}],"functionName":{"name":"and","nativeSrc":"105:3:75","nodeType":"YulIdentifier","src":"105:3:75"},"nativeSrc":"105:31:75","nodeType":"YulFunctionCall","src":"105:31:75"}],"functionName":{"name":"eq","nativeSrc":"95:2:75","nodeType":"YulIdentifier","src":"95:2:75"},"nativeSrc":"95:42:75","nodeType":"YulFunctionCall","src":"95:42:75"}],"functionName":{"name":"iszero","nativeSrc":"88:6:75","nodeType":"YulIdentifier","src":"88:6:75"},"nativeSrc":"88:50:75","nodeType":"YulFunctionCall","src":"88:50:75"},"nativeSrc":"85:70:75","nodeType":"YulIf","src":"85:70:75"}]},"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"14:147:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"64:5:75","nodeType":"YulTypedName","src":"64:5:75","type":""}],"src":"14:147:75"},{"body":{"nativeSrc":"359:497:75","nodeType":"YulBlock","src":"359:497:75","statements":[{"body":{"nativeSrc":"406:16:75","nodeType":"YulBlock","src":"406:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"415:1:75","nodeType":"YulLiteral","src":"415:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"418:1:75","nodeType":"YulLiteral","src":"418:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"408:6:75","nodeType":"YulIdentifier","src":"408:6:75"},"nativeSrc":"408:12:75","nodeType":"YulFunctionCall","src":"408:12:75"},"nativeSrc":"408:12:75","nodeType":"YulExpressionStatement","src":"408:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"380:7:75","nodeType":"YulIdentifier","src":"380:7:75"},{"name":"headStart","nativeSrc":"389:9:75","nodeType":"YulIdentifier","src":"389:9:75"}],"functionName":{"name":"sub","nativeSrc":"376:3:75","nodeType":"YulIdentifier","src":"376:3:75"},"nativeSrc":"376:23:75","nodeType":"YulFunctionCall","src":"376:23:75"},{"kind":"number","nativeSrc":"401:3:75","nodeType":"YulLiteral","src":"401:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"372:3:75","nodeType":"YulIdentifier","src":"372:3:75"},"nativeSrc":"372:33:75","nodeType":"YulFunctionCall","src":"372:33:75"},"nativeSrc":"369:53:75","nodeType":"YulIf","src":"369:53:75"},{"nativeSrc":"431:29:75","nodeType":"YulVariableDeclaration","src":"431:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"450:9:75","nodeType":"YulIdentifier","src":"450:9:75"}],"functionName":{"name":"mload","nativeSrc":"444:5:75","nodeType":"YulIdentifier","src":"444:5:75"},"nativeSrc":"444:16:75","nodeType":"YulFunctionCall","src":"444:16:75"},"variables":[{"name":"value","nativeSrc":"435:5:75","nodeType":"YulTypedName","src":"435:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"510:5:75","nodeType":"YulIdentifier","src":"510:5:75"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"469:40:75","nodeType":"YulIdentifier","src":"469:40:75"},"nativeSrc":"469:47:75","nodeType":"YulFunctionCall","src":"469:47:75"},"nativeSrc":"469:47:75","nodeType":"YulExpressionStatement","src":"469:47:75"},{"nativeSrc":"525:15:75","nodeType":"YulAssignment","src":"525:15:75","value":{"name":"value","nativeSrc":"535:5:75","nodeType":"YulIdentifier","src":"535:5:75"},"variableNames":[{"name":"value0","nativeSrc":"525:6:75","nodeType":"YulIdentifier","src":"525:6:75"}]},{"nativeSrc":"549:40:75","nodeType":"YulVariableDeclaration","src":"549:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"574:9:75","nodeType":"YulIdentifier","src":"574:9:75"},{"kind":"number","nativeSrc":"585:2:75","nodeType":"YulLiteral","src":"585:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"570:3:75","nodeType":"YulIdentifier","src":"570:3:75"},"nativeSrc":"570:18:75","nodeType":"YulFunctionCall","src":"570:18:75"}],"functionName":{"name":"mload","nativeSrc":"564:5:75","nodeType":"YulIdentifier","src":"564:5:75"},"nativeSrc":"564:25:75","nodeType":"YulFunctionCall","src":"564:25:75"},"variables":[{"name":"value_1","nativeSrc":"553:7:75","nodeType":"YulTypedName","src":"553:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"639:7:75","nodeType":"YulIdentifier","src":"639:7:75"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"598:40:75","nodeType":"YulIdentifier","src":"598:40:75"},"nativeSrc":"598:49:75","nodeType":"YulFunctionCall","src":"598:49:75"},"nativeSrc":"598:49:75","nodeType":"YulExpressionStatement","src":"598:49:75"},{"nativeSrc":"656:17:75","nodeType":"YulAssignment","src":"656:17:75","value":{"name":"value_1","nativeSrc":"666:7:75","nodeType":"YulIdentifier","src":"666:7:75"},"variableNames":[{"name":"value1","nativeSrc":"656:6:75","nodeType":"YulIdentifier","src":"656:6:75"}]},{"nativeSrc":"682:35:75","nodeType":"YulAssignment","src":"682:35:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"702:9:75","nodeType":"YulIdentifier","src":"702:9:75"},{"kind":"number","nativeSrc":"713:2:75","nodeType":"YulLiteral","src":"713:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"698:3:75","nodeType":"YulIdentifier","src":"698:3:75"},"nativeSrc":"698:18:75","nodeType":"YulFunctionCall","src":"698:18:75"}],"functionName":{"name":"mload","nativeSrc":"692:5:75","nodeType":"YulIdentifier","src":"692:5:75"},"nativeSrc":"692:25:75","nodeType":"YulFunctionCall","src":"692:25:75"},"variableNames":[{"name":"value2","nativeSrc":"682:6:75","nodeType":"YulIdentifier","src":"682:6:75"}]},{"nativeSrc":"726:40:75","nodeType":"YulVariableDeclaration","src":"726:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"751:9:75","nodeType":"YulIdentifier","src":"751:9:75"},{"kind":"number","nativeSrc":"762:2:75","nodeType":"YulLiteral","src":"762:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"747:3:75","nodeType":"YulIdentifier","src":"747:3:75"},"nativeSrc":"747:18:75","nodeType":"YulFunctionCall","src":"747:18:75"}],"functionName":{"name":"mload","nativeSrc":"741:5:75","nodeType":"YulIdentifier","src":"741:5:75"},"nativeSrc":"741:25:75","nodeType":"YulFunctionCall","src":"741:25:75"},"variables":[{"name":"value_2","nativeSrc":"730:7:75","nodeType":"YulTypedName","src":"730:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"816:7:75","nodeType":"YulIdentifier","src":"816:7:75"}],"functionName":{"name":"validator_revert_contract_IERC20Metadata","nativeSrc":"775:40:75","nodeType":"YulIdentifier","src":"775:40:75"},"nativeSrc":"775:49:75","nodeType":"YulFunctionCall","src":"775:49:75"},"nativeSrc":"775:49:75","nodeType":"YulExpressionStatement","src":"775:49:75"},{"nativeSrc":"833:17:75","nodeType":"YulAssignment","src":"833:17:75","value":{"name":"value_2","nativeSrc":"843:7:75","nodeType":"YulIdentifier","src":"843:7:75"},"variableNames":[{"name":"value3","nativeSrc":"833:6:75","nodeType":"YulIdentifier","src":"833:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$8682t_contract$_IERC20Metadata_$8682t_uint256t_contract$_IPool_$20704_fromMemory","nativeSrc":"166:690:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"301:9:75","nodeType":"YulTypedName","src":"301:9:75","type":""},{"name":"dataEnd","nativeSrc":"312:7:75","nodeType":"YulTypedName","src":"312:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"324:6:75","nodeType":"YulTypedName","src":"324:6:75","type":""},{"name":"value1","nativeSrc":"332:6:75","nodeType":"YulTypedName","src":"332:6:75","type":""},{"name":"value2","nativeSrc":"340:6:75","nodeType":"YulTypedName","src":"340:6:75","type":""},{"name":"value3","nativeSrc":"348:6:75","nodeType":"YulTypedName","src":"348:6:75","type":""}],"src":"166:690:75"},{"body":{"nativeSrc":"940:194:75","nodeType":"YulBlock","src":"940:194:75","statements":[{"body":{"nativeSrc":"986:16:75","nodeType":"YulBlock","src":"986:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"995:1:75","nodeType":"YulLiteral","src":"995:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"998:1:75","nodeType":"YulLiteral","src":"998:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"988:6:75","nodeType":"YulIdentifier","src":"988:6:75"},"nativeSrc":"988:12:75","nodeType":"YulFunctionCall","src":"988:12:75"},"nativeSrc":"988:12:75","nodeType":"YulExpressionStatement","src":"988:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"961:7:75","nodeType":"YulIdentifier","src":"961:7:75"},{"name":"headStart","nativeSrc":"970:9:75","nodeType":"YulIdentifier","src":"970:9:75"}],"functionName":{"name":"sub","nativeSrc":"957:3:75","nodeType":"YulIdentifier","src":"957:3:75"},"nativeSrc":"957:23:75","nodeType":"YulFunctionCall","src":"957:23:75"},{"kind":"number","nativeSrc":"982:2:75","nodeType":"YulLiteral","src":"982:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"953:3:75","nodeType":"YulIdentifier","src":"953:3:75"},"nativeSrc":"953:32:75","nodeType":"YulFunctionCall","src":"953:32:75"},"nativeSrc":"950:52:75","nodeType":"YulIf","src":"950:52:75"},{"nativeSrc":"1011:29:75","nodeType":"YulVariableDeclaration","src":"1011:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1030:9:75","nodeType":"YulIdentifier","src":"1030:9:75"}],"functionName":{"name":"mload","nativeSrc":"1024:5:75","nodeType":"YulIdentifier","src":"1024:5:75"},"nativeSrc":"1024:16:75","nodeType":"YulFunctionCall","src":"1024:16:75"},"variables":[{"name":"value","nativeSrc":"1015:5:75","nodeType":"YulTypedName","src":"1015:5:75","type":""}]},{"body":{"nativeSrc":"1088:16:75","nodeType":"YulBlock","src":"1088:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1097:1:75","nodeType":"YulLiteral","src":"1097:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1100:1:75","nodeType":"YulLiteral","src":"1100:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1090:6:75","nodeType":"YulIdentifier","src":"1090:6:75"},"nativeSrc":"1090:12:75","nodeType":"YulFunctionCall","src":"1090:12:75"},"nativeSrc":"1090:12:75","nodeType":"YulExpressionStatement","src":"1090:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1062:5:75","nodeType":"YulIdentifier","src":"1062:5:75"},{"arguments":[{"name":"value","nativeSrc":"1073:5:75","nodeType":"YulIdentifier","src":"1073:5:75"},{"kind":"number","nativeSrc":"1080:4:75","nodeType":"YulLiteral","src":"1080:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1069:3:75","nodeType":"YulIdentifier","src":"1069:3:75"},"nativeSrc":"1069:16:75","nodeType":"YulFunctionCall","src":"1069:16:75"}],"functionName":{"name":"eq","nativeSrc":"1059:2:75","nodeType":"YulIdentifier","src":"1059:2:75"},"nativeSrc":"1059:27:75","nodeType":"YulFunctionCall","src":"1059:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1052:6:75","nodeType":"YulIdentifier","src":"1052:6:75"},"nativeSrc":"1052:35:75","nodeType":"YulFunctionCall","src":"1052:35:75"},"nativeSrc":"1049:55:75","nodeType":"YulIf","src":"1049:55:75"},{"nativeSrc":"1113:15:75","nodeType":"YulAssignment","src":"1113:15:75","value":{"name":"value","nativeSrc":"1123:5:75","nodeType":"YulIdentifier","src":"1123:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1113:6:75","nodeType":"YulIdentifier","src":"1113:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"861:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"906:9:75","nodeType":"YulTypedName","src":"906:9:75","type":""},{"name":"dataEnd","nativeSrc":"917:7:75","nodeType":"YulTypedName","src":"917:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"929:6:75","nodeType":"YulTypedName","src":"929:6:75","type":""}],"src":"861:273:75"},{"body":{"nativeSrc":"1366:252:75","nodeType":"YulBlock","src":"1366:252:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1383:9:75","nodeType":"YulIdentifier","src":"1383:9:75"},{"kind":"number","nativeSrc":"1394:2:75","nodeType":"YulLiteral","src":"1394:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1376:6:75","nodeType":"YulIdentifier","src":"1376:6:75"},"nativeSrc":"1376:21:75","nodeType":"YulFunctionCall","src":"1376:21:75"},"nativeSrc":"1376:21:75","nodeType":"YulExpressionStatement","src":"1376:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1417:9:75","nodeType":"YulIdentifier","src":"1417:9:75"},{"kind":"number","nativeSrc":"1428:2:75","nodeType":"YulLiteral","src":"1428:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1413:3:75","nodeType":"YulIdentifier","src":"1413:3:75"},"nativeSrc":"1413:18:75","nodeType":"YulFunctionCall","src":"1413:18:75"},{"kind":"number","nativeSrc":"1433:2:75","nodeType":"YulLiteral","src":"1433:2:75","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1406:6:75","nodeType":"YulIdentifier","src":"1406:6:75"},"nativeSrc":"1406:30:75","nodeType":"YulFunctionCall","src":"1406:30:75"},"nativeSrc":"1406:30:75","nodeType":"YulExpressionStatement","src":"1406:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1456:9:75","nodeType":"YulIdentifier","src":"1456:9:75"},{"kind":"number","nativeSrc":"1467:2:75","nodeType":"YulLiteral","src":"1467:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1452:3:75","nodeType":"YulIdentifier","src":"1452:3:75"},"nativeSrc":"1452:18:75","nodeType":"YulFunctionCall","src":"1452:18:75"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1472:32:75","nodeType":"YulLiteral","src":"1472:32:75","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1445:6:75","nodeType":"YulIdentifier","src":"1445:6:75"},"nativeSrc":"1445:60:75","nodeType":"YulFunctionCall","src":"1445:60:75"},"nativeSrc":"1445:60:75","nodeType":"YulExpressionStatement","src":"1445:60:75"},{"nativeSrc":"1514:27:75","nodeType":"YulAssignment","src":"1514:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1526:9:75","nodeType":"YulIdentifier","src":"1526:9:75"},{"kind":"number","nativeSrc":"1537:3:75","nodeType":"YulLiteral","src":"1537:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1522:3:75","nodeType":"YulIdentifier","src":"1522:3:75"},"nativeSrc":"1522:19:75","nodeType":"YulFunctionCall","src":"1522:19:75"},"variableNames":[{"name":"tail","nativeSrc":"1514:4:75","nodeType":"YulIdentifier","src":"1514:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1561:9:75","nodeType":"YulIdentifier","src":"1561:9:75"},{"kind":"number","nativeSrc":"1572:4:75","nodeType":"YulLiteral","src":"1572:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1557:3:75","nodeType":"YulIdentifier","src":"1557:3:75"},"nativeSrc":"1557:20:75","nodeType":"YulFunctionCall","src":"1557:20:75"},{"arguments":[{"name":"value0","nativeSrc":"1583:6:75","nodeType":"YulIdentifier","src":"1583:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1599:3:75","nodeType":"YulLiteral","src":"1599:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1604:1:75","nodeType":"YulLiteral","src":"1604:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1595:3:75","nodeType":"YulIdentifier","src":"1595:3:75"},"nativeSrc":"1595:11:75","nodeType":"YulFunctionCall","src":"1595:11:75"},{"kind":"number","nativeSrc":"1608:1:75","nodeType":"YulLiteral","src":"1608:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1591:3:75","nodeType":"YulIdentifier","src":"1591:3:75"},"nativeSrc":"1591:19:75","nodeType":"YulFunctionCall","src":"1591:19:75"}],"functionName":{"name":"and","nativeSrc":"1579:3:75","nodeType":"YulIdentifier","src":"1579:3:75"},"nativeSrc":"1579:32:75","nodeType":"YulFunctionCall","src":"1579:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1550:6:75","nodeType":"YulIdentifier","src":"1550:6:75"},"nativeSrc":"1550:62:75","nodeType":"YulFunctionCall","src":"1550:62:75"},"nativeSrc":"1550:62:75","nodeType":"YulExpressionStatement","src":"1550:62:75"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"1139:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1335:9:75","nodeType":"YulTypedName","src":"1335:9:75","type":""},{"name":"value0","nativeSrc":"1346:6:75","nodeType":"YulTypedName","src":"1346:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1357:4:75","nodeType":"YulTypedName","src":"1357:4:75","type":""}],"src":"1139:479:75"}]},"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_$8682t_contract$_IERC20Metadata_$8682t_uint256t_contract$_IPool_$20704_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_$22374__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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":3193},{"length":20,"start":3943},{"length":20,"start":4233},{"length":20,"start":5526}]}},"object":"3060808181526040610160818152601e6101a0527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101c052610180939093526101408290526101e09052902060a05234801561005a575f5ffd5b50604051612197380380612197833981016040819052610079916101f3565b8383836012836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de9190610245565b60ff16111561010057604051636448d6e960e11b815260040160405180910390fd5b6012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101629190610245565b60ff16111561018457604051636448d6e960e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b0316036101b657604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0392831660c05290821660e0526101005216610120525061026c915050565b6001600160a01b03811681146101f0575f5ffd5b50565b5f5f5f5f60808587031215610206575f5ffd5b8451610211816101dc565b6020860151909450610222816101dc565b60408601516060870151919450925061023a816101dc565b939692955090935050565b5f60208284031215610255575f5ffd5b815160ff81168114610265575f5ffd5b9392505050565b60805160a05160c05160e0516101005161012051611e046103935f395f818161037101528181610d8d01528181610e7f01528181610f5e015261107701525f8181610b020152818161126b015261133701525f81816102030152818161033c015281816103fe015281816106c701528181610b4a01528181610bf201528181610d1801528181610dbc01528181610e4401528181610f230152818161104f01528181611247015261130701525f818161017f01528181610c1401528181610d3a0152818161122501526112d801525f818161014c0152818161082e015281816109b601528181610a37015261113801525f8181610244015281816102e0015281816104fc015281816105e901528181610666015281816109ef01526110f00152611e045ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c80639c4667a21161006e5780639c4667a21461016e5780639cd47128146101b9578063b6b55f25146101cc578063ce96cb77146101df578063de846ae4146101f2578063f3e0ffbf14610225575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f357806342b054f0146101145780635a117456146101345780635b9a4c3514610147575b5f5ffd5b6100c86100c33660046115f2565b610238565b6040516100d5919061166d565b60405180910390f35b6100f16100ec36600461167f565b6102d6565b005b6101066101013660046116aa565b610479565b6040519081526020016100d5565b6101276101223660046116aa565b6104ce565b6040516100d59190611727565b6100f1610142366004611746565b6104f2565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b6101a161017c3660046116aa565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100d5565b6100f16101c7366004611761565b6105df565b6100f16101da36600461167f565b61065c565b6101066101ed3660046116aa565b61073e565b6101a16102003660046116aa565b507f000000000000000000000000000000000000000000000000000000000000000090565b6101066102333660046116aa565b610784565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361028357604051632abf118b60e21b815260040160405180910390fd5b5f60ff84168015610296576102966116c5565b90505f8180156102a8576102a86116c5565b036100b1576102bf6102b930610804565b846108bf565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361031f57604051632abf118b60e21b815260040160405180910390fd5b801561047657604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103db9190611793565b506103e5816109e5565b6040516370a0823160e01b8152306004820152610476907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561044b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046f9190611793565b6001610d6b565b50565b5f5f610483610fb9565b805151909150600160381b1615806104a257508051516001603c1b1615155b806104b857508051516702000000000000001615155b156104c557505f92915050565b505f1992915050565b60408051606080820183525f8083526020830152918101919091526102d082610804565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361053b57604051632abf118b60e21b815260040160405180910390fd5b5f610544610fb9565b61010001519050811580156105bd57506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610596573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ba9190611793565b15155b156105db576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361062857604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261047690805f81526020015f815260200160405180602001604052805f815250815250826108bf565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106a557604051632abf118b60e21b815260040160405180910390fd5b6106ae816110e6565b6040516370a0823160e01b8152306004820152610476907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610714573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107389190611793565b5f610d6b565b5f5f610748610fb9565b805151909150600160381b16158061076757508051516001603c1b1615155b1561077457505f92915050565b61077d83610784565b9392505050565b5f6102d0610790610fb9565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156107da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fe9190611793565b836112d2565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610882573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108a991908101906117f7565b90508080602001905181019061077d9190611829565b5f818060200190518101906108d49190611829565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061090e908490600401611727565b5f6040518083038186803b158015610924575f5ffd5b505af4158015610936573d5f5f3e3d5ffd5b5050505081518160405160200161094d9190611727565b604051602081830303815290604052511461097b576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109ac9291906118b5565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006109df8382611965565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a2e57604051632abf118b60e21b815260040160405180910390fd5b8015610476575f7f00000000000000000000000000000000000000000000000000000000000000008054610a61906118e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8d906118e2565b8015610ad85780601f10610aaf57610100808354040283529160200191610ad8565b820191905f5260205f20905b815481529060010190602001808311610abb57829003601f168201915b5050505050806020019051810190610af09190611829565b90505f610b26670de0b6b3a7640000807f000000000000000000000000000000000000000000000000000000000000000061139b565b6040516370a0823160e01b8152306004820152909150610bb9906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610b8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb39190611793565b306112d2565b8310610ce7576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c879190611793565b866040518663ffffffff1660e01b8152600401610ca8959493929190611a20565b602060405180830381865af4158015610cc3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109df9190611793565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610ca89085907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908890600401611a20565b505050565b815f03610d76575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610e02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e269190611a5f565b508015610f0c5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610ec0575f5ffd5b505af1925050508015610ed1575060015b6105db576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610f9f575f5ffd5b505af1158015610fb1573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa1580156110bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e19190611b0e565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361112f57604051632abf118b60e21b815260040160405180910390fd5b8015610476575f7f00000000000000000000000000000000000000000000000000000000000000008054611162906118e2565b80601f016020809104026020016040519081016040528092919081815260200182805461118e906118e2565b80156111d95780601f106111b0576101008083540402835291602001916111d9565b820191905f5260205f20905b8154815290600101906020018083116111bc57829003601f168201915b50505050508060200190518101906111f19190611829565b604051637756691560e01b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__906377566915906112939084907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088907f000000000000000000000000000000000000000000000000000000000000000090600401611a20565b602060405180830381865af41580156112ae573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190611793565b5f6112fc7f0000000000000000000000000000000000000000000000000000000000000000611451565b61139161136461132b7f0000000000000000000000000000000000000000000000000000000000000000611451565b6113359087611c4c565b7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061139b565b61136d85610804565b6020015161138390670de0b6b3a7640000611c63565b670de0b6b3a764000061139b565b61077d9190611c8a565b5f838302815f1985870982811083820303915050805f036113cf578382816113c5576113c5611c76565b049250505061077d565b8084116113e6576113e660038515026011186114c8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b29190611ca9565b6114bd906012611cc4565b6102d090600a611dc0565b634e487b715f52806020526024601cfd5b60ff81168114610476575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561151e5761151e6114e7565b60405290565b6040516101e0810167ffffffffffffffff8111828210171561151e5761151e6114e7565b604051601f8201601f1916810167ffffffffffffffff81118282101715611571576115716114e7565b604052919050565b5f67ffffffffffffffff821115611592576115926114e7565b50601f01601f191660200190565b5f82601f8301126115af575f5ffd5b81356115c26115bd82611579565b611548565b8181528460208386010111156115d6575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611603575f5ffd5b823561160e816114d9565b9150602083013567ffffffffffffffff811115611629575f5ffd5b611635858286016115a0565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61077d602083018461163f565b5f6020828403121561168f575f5ffd5b5035919050565b6001600160a01b0381168114610476575f5ffd5b5f602082840312156116ba575f5ffd5b813561077d81611696565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116f857634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261171f606085018261163f565b949350505050565b602081525f61077d60208301846116d9565b8015158114610476575f5ffd5b5f60208284031215611756575f5ffd5b813561077d81611739565b5f60208284031215611771575f5ffd5b813567ffffffffffffffff811115611787575f5ffd5b61171f848285016115a0565b5f602082840312156117a3575f5ffd5b5051919050565b5f82601f8301126117b9575f5ffd5b81516117c76115bd82611579565b8181528460208386010111156117db575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611807575f5ffd5b815167ffffffffffffffff81111561181d575f5ffd5b61171f848285016117aa565b5f60208284031215611839575f5ffd5b815167ffffffffffffffff81111561184f575f5ffd5b820160608185031215611860575f5ffd5b6118686114fb565b815160038110611876575f5ffd5b815260208281015190820152604082015167ffffffffffffffff81111561189b575f5ffd5b6118a7868285016117aa565b604083015250949350505050565b604081525f6118c760408301856116d9565b82810360208401526118d981856116d9565b95945050505050565b600181811c908216806118f657607f821691505b60208210810361191457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d6657805f5260205f20601f840160051c8101602085101561193f5750805b601f840160051c820191505b8181101561195e575f815560010161194b565b5050505050565b815167ffffffffffffffff81111561197f5761197f6114e7565b6119938161198d84546118e2565b8461191a565b6020601f8211600181146119c5575f83156119ae5750848201515b5f19600385901b1c1916600184901b17845561195e565b5f84815260208120601f198516915b828110156119f457878501518255602094850194600190920191016119d4565b5084821015611a1157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f611a3260a08301886116d9565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a6f575f5ffd5b815161077d81611739565b5f60208284031215611a8a575f5ffd5b6040516020810167ffffffffffffffff81118282101715611aad57611aad6114e7565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611ad9575f5ffd5b919050565b805164ffffffffff81168114611ad9575f5ffd5b805161ffff81168114611ad9575f5ffd5b8051611ad981611696565b5f6101e0828403128015611b20575f5ffd5b50611b29611524565b611b338484611a7a565b8152611b4160208401611aba565b6020820152611b5260408401611aba565b6040820152611b6360608401611aba565b6060820152611b7460808401611aba565b6080820152611b8560a08401611aba565b60a0820152611b9660c08401611ade565b60c0820152611ba760e08401611af2565b60e0820152611bb96101008401611b03565b610100820152611bcc6101208401611b03565b610120820152611bdf6101408401611b03565b610140820152611bf26101608401611b03565b610160820152611c056101808401611aba565b610180820152611c186101a08401611aba565b6101a0820152611c2b6101c08401611aba565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102d0576102d0611c38565b818103818111156102d0576102d0611c38565b634e487b7160e01b5f52601260045260245ffd5b5f82611ca457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611cb9575f5ffd5b815161077d816114d9565b60ff82811682821603908111156102d0576102d0611c38565b6001815b6001841115611d1857808504811115611cfc57611cfc611c38565b6001841615611d0a57908102905b60019390931c928002611ce1565b935093915050565b5f82611d2e575060016102d0565b81611d3a57505f6102d0565b8160018114611d505760028114611d5a57611d76565b60019150506102d0565b60ff841115611d6b57611d6b611c38565b50506001821b6102d0565b5060208310610133831016604e8410600b8410161715611d99575081810a6102d0565b611da55f198484611cdd565b805f1904821115611db857611db8611c38565b029392505050565b5f61077d60ff841683611d2056fea2646970667358221220e19d8046f8602bcb032d96b7e862b29980f87ac47a3ba88d03f9cd416094454c64736f6c634300081c0033","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 0x2197 CODESIZE SUB DUP1 PUSH2 0x2197 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x1F3 JUMP JUMPDEST DUP4 DUP4 DUP4 PUSH1 0x12 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 0xBA 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 0xDE SWAP2 SWAP1 PUSH2 0x245 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x100 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 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 0x13E 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 0x162 SWAP2 SWAP1 PUSH2 0x245 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x184 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B6 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 SWAP3 DUP4 AND PUSH1 0xC0 MSTORE SWAP1 DUP3 AND PUSH1 0xE0 MSTORE PUSH2 0x100 MSTORE AND PUSH2 0x120 MSTORE POP PUSH2 0x26C SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1F0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x206 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x211 DUP2 PUSH2 0x1DC JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x222 DUP2 PUSH2 0x1DC JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x23A DUP2 PUSH2 0x1DC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x255 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x265 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 0x1E04 PUSH2 0x393 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x371 ADD MSTORE DUP2 DUP2 PUSH2 0xD8D ADD MSTORE DUP2 DUP2 PUSH2 0xE7F ADD MSTORE DUP2 DUP2 PUSH2 0xF5E ADD MSTORE PUSH2 0x1077 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0xB02 ADD MSTORE DUP2 DUP2 PUSH2 0x126B ADD MSTORE PUSH2 0x1337 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x203 ADD MSTORE DUP2 DUP2 PUSH2 0x33C ADD MSTORE DUP2 DUP2 PUSH2 0x3FE ADD MSTORE DUP2 DUP2 PUSH2 0x6C7 ADD MSTORE DUP2 DUP2 PUSH2 0xB4A ADD MSTORE DUP2 DUP2 PUSH2 0xBF2 ADD MSTORE DUP2 DUP2 PUSH2 0xD18 ADD MSTORE DUP2 DUP2 PUSH2 0xDBC ADD MSTORE DUP2 DUP2 PUSH2 0xE44 ADD MSTORE DUP2 DUP2 PUSH2 0xF23 ADD MSTORE DUP2 DUP2 PUSH2 0x104F ADD MSTORE DUP2 DUP2 PUSH2 0x1247 ADD MSTORE PUSH2 0x1307 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x17F ADD MSTORE DUP2 DUP2 PUSH2 0xC14 ADD MSTORE DUP2 DUP2 PUSH2 0xD3A ADD MSTORE DUP2 DUP2 PUSH2 0x1225 ADD MSTORE PUSH2 0x12D8 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x14C ADD MSTORE DUP2 DUP2 PUSH2 0x82E ADD MSTORE DUP2 DUP2 PUSH2 0x9B6 ADD MSTORE DUP2 DUP2 PUSH2 0xA37 ADD MSTORE PUSH2 0x1138 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x244 ADD MSTORE DUP2 DUP2 PUSH2 0x2E0 ADD MSTORE DUP2 DUP2 PUSH2 0x4FC ADD MSTORE DUP2 DUP2 PUSH2 0x5E9 ADD MSTORE DUP2 DUP2 PUSH2 0x666 ADD MSTORE DUP2 DUP2 PUSH2 0x9EF ADD MSTORE PUSH2 0x10F0 ADD MSTORE PUSH2 0x1E04 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 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x225 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 0x42B054F0 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x147 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x166D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x106 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x127 PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x1727 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x1746 JUMP JUMPDEST PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x106 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA 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 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1761 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x65C JUMP JUMPDEST PUSH2 0x106 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x784 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x283 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 0x296 JUMPI PUSH2 0x296 PUSH2 0x16C5 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH2 0x2A8 PUSH2 0x16C5 JUMP JUMPDEST SUB PUSH2 0xB1 JUMPI PUSH2 0x2BF PUSH2 0x2B9 ADDRESS PUSH2 0x804 JUMP JUMPDEST DUP5 PUSH2 0x8BF 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 0x31F 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 0x476 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 0x3B7 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 0x3DB SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST POP PUSH2 0x3E5 DUP2 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x476 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 0x44B 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 0x46F SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xD6B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x483 PUSH2 0xFB9 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x4A2 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x4B8 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x4C5 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 0x2D0 DUP3 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x53B 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 0x544 PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5BD 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 0x596 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 0x5BA SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x5DB 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 0x628 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 0x476 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 0x8BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6AE DUP2 PUSH2 0x10E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x476 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 0x714 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 0x738 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH0 PUSH2 0xD6B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x748 PUSH2 0xFB9 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x767 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x774 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x77D DUP4 PUSH2 0x784 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D0 PUSH2 0x790 PUSH2 0xFB9 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 0x7DA 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 0x7FE SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST DUP4 PUSH2 0x12D2 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 0x882 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 0x8A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17F7 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x77D SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x8D4 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x90E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1727 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x936 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x94D SWAP2 SWAP1 PUSH2 0x1727 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x97B 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 0x9AC SWAP3 SWAP2 SWAP1 PUSH2 0x18B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x9DF DUP4 DUP3 PUSH2 0x1965 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA2E 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 0x476 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0xA61 SWAP1 PUSH2 0x18E2 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 0xA8D SWAP1 PUSH2 0x18E2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAD8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD8 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 0xABB 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 0xAF0 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xB26 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0x139B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0xBB9 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 0xB8F 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 0xBB3 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST ADDRESS PUSH2 0x12D2 JUMP JUMPDEST DUP4 LT PUSH2 0xCE7 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 0xC63 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 0xC87 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xCC3 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 0x9DF SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0xCA8 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A20 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH0 SUB PUSH2 0xD76 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 0xE02 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 0xE26 SWAP2 SWAP1 PUSH2 0x1A5F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF0C 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 0xEC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xED1 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5DB 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 0xF9F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 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 0x10BD 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 0x10E1 SWAP2 SWAP1 PUSH2 0x1B0E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x112F 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 0x476 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x1162 SWAP1 PUSH2 0x18E2 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 0x118E SWAP1 PUSH2 0x18E2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x11D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11D9 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 0x11BC 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 0x11F1 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0x1293 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x12AE 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 0xD66 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH0 PUSH2 0x12FC PUSH32 0x0 PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x1391 PUSH2 0x1364 PUSH2 0x132B PUSH32 0x0 PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x1335 SWAP1 DUP8 PUSH2 0x1C4C JUMP JUMPDEST PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x139B JUMP JUMPDEST PUSH2 0x136D DUP6 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x1383 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C63 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x139B JUMP JUMPDEST PUSH2 0x77D SWAP2 SWAP1 PUSH2 0x1C8A JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x13CF JUMPI DUP4 DUP3 DUP2 PUSH2 0x13C5 JUMPI PUSH2 0x13C5 PUSH2 0x1C76 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x77D JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x13E6 JUMPI PUSH2 0x13E6 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x14C8 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST 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 0x148E 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 0x14B2 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH2 0x14BD SWAP1 PUSH1 0x12 PUSH2 0x1CC4 JUMP JUMPDEST PUSH2 0x2D0 SWAP1 PUSH1 0xA PUSH2 0x1DC0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x476 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 0x151E JUMPI PUSH2 0x151E PUSH2 0x14E7 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 0x151E JUMPI PUSH2 0x151E PUSH2 0x14E7 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 0x1571 JUMPI PUSH2 0x1571 PUSH2 0x14E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1592 JUMPI PUSH2 0x1592 PUSH2 0x14E7 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x15AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x15C2 PUSH2 0x15BD DUP3 PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x1548 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x15D6 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 0x1603 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x160E DUP2 PUSH2 0x14D9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1629 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1635 DUP6 DUP3 DUP7 ADD PUSH2 0x15A0 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 0x77D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x163F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168F 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 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x1696 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 0x16F8 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 0x171F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x163F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x77D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16D9 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1756 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x1739 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1771 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1787 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x171F DUP5 DUP3 DUP6 ADD PUSH2 0x15A0 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x17B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17C7 PUSH2 0x15BD DUP3 PUSH2 0x1579 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x17DB 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 0x1807 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x181D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x171F DUP5 DUP3 DUP6 ADD PUSH2 0x17AA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1839 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x184F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1860 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1868 PUSH2 0x14FB JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1876 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 0x189B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x18A7 DUP7 DUP3 DUP6 ADD PUSH2 0x17AA JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x18C7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x16D9 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x18D9 DUP2 DUP6 PUSH2 0x16D9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18F6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1914 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 0xD66 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x193F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x195E JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x194B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x197F JUMPI PUSH2 0x197F PUSH2 0x14E7 JUMP JUMPDEST PUSH2 0x1993 DUP2 PUSH2 0x198D DUP5 SLOAD PUSH2 0x18E2 JUMP JUMPDEST DUP5 PUSH2 0x191A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x19C5 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x19AE 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 0x195E JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19F4 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x19D4 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1A11 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 0x1A32 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x16D9 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 0x1A6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x77D DUP2 PUSH2 0x1739 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AAD JUMPI PUSH2 0x1AAD PUSH2 0x14E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1AD9 DUP2 PUSH2 0x1696 JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1B20 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1B29 PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x1B33 DUP5 DUP5 PUSH2 0x1A7A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1B41 PUSH1 0x20 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1B52 PUSH1 0x40 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1B63 PUSH1 0x60 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B74 PUSH1 0x80 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1B85 PUSH1 0xA0 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1B96 PUSH1 0xC0 DUP5 ADD PUSH2 0x1ADE JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1BA7 PUSH1 0xE0 DUP5 ADD PUSH2 0x1AF2 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x1BB9 PUSH2 0x100 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x1BCC PUSH2 0x120 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x1BDF PUSH2 0x140 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x1BF2 PUSH2 0x160 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1C05 PUSH2 0x180 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0x1C18 PUSH2 0x1A0 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0x1C2B PUSH2 0x1C0 DUP5 ADD PUSH2 0x1ABA 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 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1CA4 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 0x1CB9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x77D DUP2 PUSH2 0x14D9 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1D18 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1CFC JUMPI PUSH2 0x1CFC PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1D0A JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1CE1 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1D2E JUMPI POP PUSH1 0x1 PUSH2 0x2D0 JUMP JUMPDEST DUP2 PUSH2 0x1D3A JUMPI POP PUSH0 PUSH2 0x2D0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D50 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1D5A JUMPI PUSH2 0x1D76 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1D6B JUMPI PUSH2 0x1D6B PUSH2 0x1C38 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x2D0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D99 JUMPI POP DUP2 DUP2 EXP PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x1DA5 PUSH0 NOT DUP5 DUP5 PUSH2 0x1CDD JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1DB8 JUMPI PUSH2 0x1DB8 PUSH2 0x1C38 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x77D PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1D20 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 SWAP14 DUP1 CHAINID 0xF8 PUSH1 0x2B 0xCB SUB 0x2D SWAP7 0xB7 0xE8 PUSH3 0xB29980 0xF8 PUSH27 0xC47A3BA88D03F9CD416094454C64736F6C634300081C0033000000 ","sourceMap":"1046:4:58:-:0;1003:48;;;;823:3242:57;7309:54:52;1376:21:75;;;1433:2;1413:18;1406:30;1472:32;1452:18;1445:60;1557:20;1550:62;;;;823:3242:57;7309:54:52;;;1522:19:75;7309:54:52;;7299:65;;1055:81:58;;1430:192:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1568:6;1576:12;1590:6;2239:2:58;2218:6;-1:-1:-1;;;;;2218:15:58;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;2210:48;;;;-1:-1:-1;;;2210:48:58;;;;;;;;;;;;2299:2;2272:12;-1:-1:-1;;;;;2272:21:58;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2264:54;;;;-1:-1:-1;;;2264:54:58;;;;;;;;;;;;2342:12;-1:-1:-1;;;;;2332:22:58;:6;-1:-1:-1;;;;;2332:22:58;;2324:47;;;;-1:-1:-1;;;2324:47:58;;;;;;;;;;;;-1:-1:-1;;;;;2377:15:58;;;;;2398:27;;;;;2431:15;;1604:13:57::1;;::::0;-1:-1:-1;823:3242:57;;-1:-1:-1;;823:3242:57;14:147:75;-1:-1:-1;;;;;105:31:75;;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:75;564:25;598:49;:::i;:::-;713:2;698:18;;692:25;762:2;747:18;;741:25;666:7;;-1:-1:-1;692:25:75;-1:-1:-1;775:49:75;741:25;775:49;:::i;:::-;166:690;;;;-1:-1:-1;166:690:75;;-1:-1:-1;;166:690:75: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:75:o;1139:479::-;823:3242:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_convertAssets_19143":{"entryPoint":4818,"id":19143,"parameterSlots":2,"returnSlots":1},"@_getSwapConfig_19426":{"entryPoint":2052,"id":19426,"parameterSlots":1,"returnSlots":1},"@_reserveData_18578":{"entryPoint":4025,"id":18578,"parameterSlots":0,"returnSlots":1},"@_setSwapConfig_19356":{"entryPoint":2239,"id":19356,"parameterSlots":2,"returnSlots":0},"@_supply_18847":{"entryPoint":3435,"id":18847,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_18997":{"entryPoint":5201,"id":18997,"parameterSlots":1,"returnSlots":1},"@asset_19093":{"entryPoint":null,"id":19093,"parameterSlots":1,"returnSlots":1},"@connect_19022":{"entryPoint":1503,"id":19022,"parameterSlots":1,"returnSlots":0},"@deposit_18783":{"entryPoint":1628,"id":18783,"parameterSlots":1,"returnSlots":0},"@deposit_19303":{"entryPoint":4326,"id":19303,"parameterSlots":1,"returnSlots":0},"@disconnect_18612":{"entryPoint":1266,"id":18612,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_19400":{"entryPoint":568,"id":19400,"parameterSlots":2,"returnSlots":1},"@getActive_21323":{"entryPoint":null,"id":21323,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getFrozen_21373":{"entryPoint":null,"id":21373,"parameterSlots":1,"returnSlots":1},"@getPaused_21423":{"entryPoint":null,"id":21423,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_19440":{"entryPoint":1230,"id":19440,"parameterSlots":1,"returnSlots":1},"@investAsset_19107":{"entryPoint":null,"id":19107,"parameterSlots":1,"returnSlots":1},"@maxDeposit_18687":{"entryPoint":1145,"id":18687,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_18646":{"entryPoint":1854,"id":18646,"parameterSlots":1,"returnSlots":1},"@mulDiv_10139":{"entryPoint":5019,"id":10139,"parameterSlots":3,"returnSlots":1},"@panic_9542":{"entryPoint":5320,"id":9542,"parameterSlots":1,"returnSlots":0},"@storageSlot_18886":{"entryPoint":null,"id":18886,"parameterSlots":0,"returnSlots":0},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_18708":{"entryPoint":1924,"id":18708,"parameterSlots":1,"returnSlots":1},"@withdraw_18757":{"entryPoint":726,"id":18757,"parameterSlots":1,"returnSlots":0},"@withdraw_19256":{"entryPoint":2533,"id":19256,"parameterSlots":1,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":6915,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes":{"entryPoint":5536,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":6058,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_ReserveConfigurationMap_fromMemory":{"entryPoint":6778,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5802,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":5958,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":6751,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":5985,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":6135,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_ReserveData_$19475_memory_ptr_fromMemory":{"entryPoint":6926,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory":{"entryPoint":6185,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":6035,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":7337,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":5618,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_uint128_fromMemory":{"entryPoint":6842,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint16_fromMemory":{"entryPoint":6898,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint40_fromMemory":{"entryPoint":6878,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes":{"entryPoint":5695,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":5849,"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":5741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":5927,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":6688,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":6325,"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":5448,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_2005":{"entryPoint":5371,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_2008":{"entryPoint":5412,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":5497,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":7306,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":7389,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":7616,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":7456,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":7244,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":7267,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":7364,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":6426,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":6501,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6370,"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":7224,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":7286,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5829,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":5351,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":5782,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":5945,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint8":{"entryPoint":5337,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:17972:75","nodeType":"YulBlock","src":"0:17972:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"57:71:75","nodeType":"YulBlock","src":"57:71:75","statements":[{"body":{"nativeSrc":"106:16:75","nodeType":"YulBlock","src":"106:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:75","nodeType":"YulLiteral","src":"115:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:75","nodeType":"YulLiteral","src":"118:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:75","nodeType":"YulIdentifier","src":"108:6:75"},"nativeSrc":"108:12:75","nodeType":"YulFunctionCall","src":"108:12:75"},"nativeSrc":"108:12:75","nodeType":"YulExpressionStatement","src":"108:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:75","nodeType":"YulIdentifier","src":"80:5:75"},{"arguments":[{"name":"value","nativeSrc":"91:5:75","nodeType":"YulIdentifier","src":"91:5:75"},{"kind":"number","nativeSrc":"98:4:75","nodeType":"YulLiteral","src":"98:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:75","nodeType":"YulIdentifier","src":"87:3:75"},"nativeSrc":"87:16:75","nodeType":"YulFunctionCall","src":"87:16:75"}],"functionName":{"name":"eq","nativeSrc":"77:2:75","nodeType":"YulIdentifier","src":"77:2:75"},"nativeSrc":"77:27:75","nodeType":"YulFunctionCall","src":"77:27:75"}],"functionName":{"name":"iszero","nativeSrc":"70:6:75","nodeType":"YulIdentifier","src":"70:6:75"},"nativeSrc":"70:35:75","nodeType":"YulFunctionCall","src":"70:35:75"},"nativeSrc":"67:55:75","nodeType":"YulIf","src":"67:55:75"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:75","nodeType":"YulTypedName","src":"46:5:75","type":""}],"src":"14:114:75"},{"body":{"nativeSrc":"165:95:75","nodeType":"YulBlock","src":"165:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:75","nodeType":"YulLiteral","src":"182:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:75","nodeType":"YulLiteral","src":"189:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:75","nodeType":"YulLiteral","src":"194:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:75","nodeType":"YulIdentifier","src":"185:3:75"},"nativeSrc":"185:20:75","nodeType":"YulFunctionCall","src":"185:20:75"}],"functionName":{"name":"mstore","nativeSrc":"175:6:75","nodeType":"YulIdentifier","src":"175:6:75"},"nativeSrc":"175:31:75","nodeType":"YulFunctionCall","src":"175:31:75"},"nativeSrc":"175:31:75","nodeType":"YulExpressionStatement","src":"175:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:75","nodeType":"YulLiteral","src":"222:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:75","nodeType":"YulLiteral","src":"225:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:75","nodeType":"YulIdentifier","src":"215:6:75"},"nativeSrc":"215:15:75","nodeType":"YulFunctionCall","src":"215:15:75"},"nativeSrc":"215:15:75","nodeType":"YulExpressionStatement","src":"215:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:75","nodeType":"YulLiteral","src":"246:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:75","nodeType":"YulLiteral","src":"249:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:75","nodeType":"YulIdentifier","src":"239:6:75"},"nativeSrc":"239:15:75","nodeType":"YulFunctionCall","src":"239:15:75"},"nativeSrc":"239:15:75","nodeType":"YulExpressionStatement","src":"239:15:75"}]},"name":"panic_error_0x41","nativeSrc":"133:127:75","nodeType":"YulFunctionDefinition","src":"133:127:75"},{"body":{"nativeSrc":"311:207:75","nodeType":"YulBlock","src":"311:207:75","statements":[{"nativeSrc":"321:19:75","nodeType":"YulAssignment","src":"321:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:75","nodeType":"YulLiteral","src":"337:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:75","nodeType":"YulIdentifier","src":"331:5:75"},"nativeSrc":"331:9:75","nodeType":"YulFunctionCall","src":"331:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:75","nodeType":"YulIdentifier","src":"321:6:75"}]},{"nativeSrc":"349:35:75","nodeType":"YulVariableDeclaration","src":"349:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:75","nodeType":"YulIdentifier","src":"371:6:75"},{"kind":"number","nativeSrc":"379:4:75","nodeType":"YulLiteral","src":"379:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:75","nodeType":"YulIdentifier","src":"367:3:75"},"nativeSrc":"367:17:75","nodeType":"YulFunctionCall","src":"367:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:75","nodeType":"YulTypedName","src":"353:10:75","type":""}]},{"body":{"nativeSrc":"459:22:75","nodeType":"YulBlock","src":"459:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:75","nodeType":"YulIdentifier","src":"461:16:75"},"nativeSrc":"461:18:75","nodeType":"YulFunctionCall","src":"461:18:75"},"nativeSrc":"461:18:75","nodeType":"YulExpressionStatement","src":"461:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:75","nodeType":"YulIdentifier","src":"402:10:75"},{"kind":"number","nativeSrc":"414:18:75","nodeType":"YulLiteral","src":"414:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:75","nodeType":"YulIdentifier","src":"399:2:75"},"nativeSrc":"399:34:75","nodeType":"YulFunctionCall","src":"399:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:75","nodeType":"YulIdentifier","src":"438:10:75"},{"name":"memPtr","nativeSrc":"450:6:75","nodeType":"YulIdentifier","src":"450:6:75"}],"functionName":{"name":"lt","nativeSrc":"435:2:75","nodeType":"YulIdentifier","src":"435:2:75"},"nativeSrc":"435:22:75","nodeType":"YulFunctionCall","src":"435:22:75"}],"functionName":{"name":"or","nativeSrc":"396:2:75","nodeType":"YulIdentifier","src":"396:2:75"},"nativeSrc":"396:62:75","nodeType":"YulFunctionCall","src":"396:62:75"},"nativeSrc":"393:88:75","nodeType":"YulIf","src":"393:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:75","nodeType":"YulLiteral","src":"497:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:75","nodeType":"YulIdentifier","src":"501:10:75"}],"functionName":{"name":"mstore","nativeSrc":"490:6:75","nodeType":"YulIdentifier","src":"490:6:75"},"nativeSrc":"490:22:75","nodeType":"YulFunctionCall","src":"490:22:75"},"nativeSrc":"490:22:75","nodeType":"YulExpressionStatement","src":"490:22:75"}]},"name":"allocate_memory_2005","nativeSrc":"265:253:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:75","nodeType":"YulTypedName","src":"300:6:75","type":""}],"src":"265:253:75"},{"body":{"nativeSrc":"569:206:75","nodeType":"YulBlock","src":"569:206:75","statements":[{"nativeSrc":"579:19:75","nodeType":"YulAssignment","src":"579:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"595:2:75","nodeType":"YulLiteral","src":"595:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"589:5:75","nodeType":"YulIdentifier","src":"589:5:75"},"nativeSrc":"589:9:75","nodeType":"YulFunctionCall","src":"589:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"579:6:75","nodeType":"YulIdentifier","src":"579:6:75"}]},{"nativeSrc":"607:34:75","nodeType":"YulVariableDeclaration","src":"607:34:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"629:6:75","nodeType":"YulIdentifier","src":"629:6:75"},{"kind":"number","nativeSrc":"637:3:75","nodeType":"YulLiteral","src":"637:3:75","type":"","value":"480"}],"functionName":{"name":"add","nativeSrc":"625:3:75","nodeType":"YulIdentifier","src":"625:3:75"},"nativeSrc":"625:16:75","nodeType":"YulFunctionCall","src":"625:16:75"},"variables":[{"name":"newFreePtr","nativeSrc":"611:10:75","nodeType":"YulTypedName","src":"611:10:75","type":""}]},{"body":{"nativeSrc":"716:22:75","nodeType":"YulBlock","src":"716:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"718:16:75","nodeType":"YulIdentifier","src":"718:16:75"},"nativeSrc":"718:18:75","nodeType":"YulFunctionCall","src":"718:18:75"},"nativeSrc":"718:18:75","nodeType":"YulExpressionStatement","src":"718:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"659:10:75","nodeType":"YulIdentifier","src":"659:10:75"},{"kind":"number","nativeSrc":"671:18:75","nodeType":"YulLiteral","src":"671:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"656:2:75","nodeType":"YulIdentifier","src":"656:2:75"},"nativeSrc":"656:34:75","nodeType":"YulFunctionCall","src":"656:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"695:10:75","nodeType":"YulIdentifier","src":"695:10:75"},{"name":"memPtr","nativeSrc":"707:6:75","nodeType":"YulIdentifier","src":"707:6:75"}],"functionName":{"name":"lt","nativeSrc":"692:2:75","nodeType":"YulIdentifier","src":"692:2:75"},"nativeSrc":"692:22:75","nodeType":"YulFunctionCall","src":"692:22:75"}],"functionName":{"name":"or","nativeSrc":"653:2:75","nodeType":"YulIdentifier","src":"653:2:75"},"nativeSrc":"653:62:75","nodeType":"YulFunctionCall","src":"653:62:75"},"nativeSrc":"650:88:75","nodeType":"YulIf","src":"650:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"754:2:75","nodeType":"YulLiteral","src":"754:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"758:10:75","nodeType":"YulIdentifier","src":"758:10:75"}],"functionName":{"name":"mstore","nativeSrc":"747:6:75","nodeType":"YulIdentifier","src":"747:6:75"},"nativeSrc":"747:22:75","nodeType":"YulFunctionCall","src":"747:22:75"},"nativeSrc":"747:22:75","nodeType":"YulExpressionStatement","src":"747:22:75"}]},"name":"allocate_memory_2008","nativeSrc":"523:252:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"558:6:75","nodeType":"YulTypedName","src":"558:6:75","type":""}],"src":"523:252:75"},{"body":{"nativeSrc":"825:230:75","nodeType":"YulBlock","src":"825:230:75","statements":[{"nativeSrc":"835:19:75","nodeType":"YulAssignment","src":"835:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"851:2:75","nodeType":"YulLiteral","src":"851:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"845:5:75","nodeType":"YulIdentifier","src":"845:5:75"},"nativeSrc":"845:9:75","nodeType":"YulFunctionCall","src":"845:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"835:6:75","nodeType":"YulIdentifier","src":"835:6:75"}]},{"nativeSrc":"863:58:75","nodeType":"YulVariableDeclaration","src":"863:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"885:6:75","nodeType":"YulIdentifier","src":"885:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"901:4:75","nodeType":"YulIdentifier","src":"901:4:75"},{"kind":"number","nativeSrc":"907:2:75","nodeType":"YulLiteral","src":"907:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"897:3:75","nodeType":"YulIdentifier","src":"897:3:75"},"nativeSrc":"897:13:75","nodeType":"YulFunctionCall","src":"897:13:75"},{"arguments":[{"kind":"number","nativeSrc":"916:2:75","nodeType":"YulLiteral","src":"916:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"912:3:75","nodeType":"YulIdentifier","src":"912:3:75"},"nativeSrc":"912:7:75","nodeType":"YulFunctionCall","src":"912:7:75"}],"functionName":{"name":"and","nativeSrc":"893:3:75","nodeType":"YulIdentifier","src":"893:3:75"},"nativeSrc":"893:27:75","nodeType":"YulFunctionCall","src":"893:27:75"}],"functionName":{"name":"add","nativeSrc":"881:3:75","nodeType":"YulIdentifier","src":"881:3:75"},"nativeSrc":"881:40:75","nodeType":"YulFunctionCall","src":"881:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"867:10:75","nodeType":"YulTypedName","src":"867:10:75","type":""}]},{"body":{"nativeSrc":"996:22:75","nodeType":"YulBlock","src":"996:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"998:16:75","nodeType":"YulIdentifier","src":"998:16:75"},"nativeSrc":"998:18:75","nodeType":"YulFunctionCall","src":"998:18:75"},"nativeSrc":"998:18:75","nodeType":"YulExpressionStatement","src":"998:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"939:10:75","nodeType":"YulIdentifier","src":"939:10:75"},{"kind":"number","nativeSrc":"951:18:75","nodeType":"YulLiteral","src":"951:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"936:2:75","nodeType":"YulIdentifier","src":"936:2:75"},"nativeSrc":"936:34:75","nodeType":"YulFunctionCall","src":"936:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"975:10:75","nodeType":"YulIdentifier","src":"975:10:75"},{"name":"memPtr","nativeSrc":"987:6:75","nodeType":"YulIdentifier","src":"987:6:75"}],"functionName":{"name":"lt","nativeSrc":"972:2:75","nodeType":"YulIdentifier","src":"972:2:75"},"nativeSrc":"972:22:75","nodeType":"YulFunctionCall","src":"972:22:75"}],"functionName":{"name":"or","nativeSrc":"933:2:75","nodeType":"YulIdentifier","src":"933:2:75"},"nativeSrc":"933:62:75","nodeType":"YulFunctionCall","src":"933:62:75"},"nativeSrc":"930:88:75","nodeType":"YulIf","src":"930:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1034:2:75","nodeType":"YulLiteral","src":"1034:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1038:10:75","nodeType":"YulIdentifier","src":"1038:10:75"}],"functionName":{"name":"mstore","nativeSrc":"1027:6:75","nodeType":"YulIdentifier","src":"1027:6:75"},"nativeSrc":"1027:22:75","nodeType":"YulFunctionCall","src":"1027:22:75"},"nativeSrc":"1027:22:75","nodeType":"YulExpressionStatement","src":"1027:22:75"}]},"name":"allocate_memory","nativeSrc":"780:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"805:4:75","nodeType":"YulTypedName","src":"805:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"814:6:75","nodeType":"YulTypedName","src":"814:6:75","type":""}],"src":"780:275:75"},{"body":{"nativeSrc":"1117:129:75","nodeType":"YulBlock","src":"1117:129:75","statements":[{"body":{"nativeSrc":"1161:22:75","nodeType":"YulBlock","src":"1161:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1163:16:75","nodeType":"YulIdentifier","src":"1163:16:75"},"nativeSrc":"1163:18:75","nodeType":"YulFunctionCall","src":"1163:18:75"},"nativeSrc":"1163:18:75","nodeType":"YulExpressionStatement","src":"1163:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1133:6:75","nodeType":"YulIdentifier","src":"1133:6:75"},{"kind":"number","nativeSrc":"1141:18:75","nodeType":"YulLiteral","src":"1141:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1130:2:75","nodeType":"YulIdentifier","src":"1130:2:75"},"nativeSrc":"1130:30:75","nodeType":"YulFunctionCall","src":"1130:30:75"},"nativeSrc":"1127:56:75","nodeType":"YulIf","src":"1127:56:75"},{"nativeSrc":"1192:48:75","nodeType":"YulAssignment","src":"1192:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1212:6:75","nodeType":"YulIdentifier","src":"1212:6:75"},{"kind":"number","nativeSrc":"1220:2:75","nodeType":"YulLiteral","src":"1220:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1208:3:75","nodeType":"YulIdentifier","src":"1208:3:75"},"nativeSrc":"1208:15:75","nodeType":"YulFunctionCall","src":"1208:15:75"},{"arguments":[{"kind":"number","nativeSrc":"1229:2:75","nodeType":"YulLiteral","src":"1229:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1225:3:75","nodeType":"YulIdentifier","src":"1225:3:75"},"nativeSrc":"1225:7:75","nodeType":"YulFunctionCall","src":"1225:7:75"}],"functionName":{"name":"and","nativeSrc":"1204:3:75","nodeType":"YulIdentifier","src":"1204:3:75"},"nativeSrc":"1204:29:75","nodeType":"YulFunctionCall","src":"1204:29:75"},{"kind":"number","nativeSrc":"1235:4:75","nodeType":"YulLiteral","src":"1235:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1200:3:75","nodeType":"YulIdentifier","src":"1200:3:75"},"nativeSrc":"1200:40:75","nodeType":"YulFunctionCall","src":"1200:40:75"},"variableNames":[{"name":"size","nativeSrc":"1192:4:75","nodeType":"YulIdentifier","src":"1192:4:75"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"1060:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1097:6:75","nodeType":"YulTypedName","src":"1097:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1108:4:75","nodeType":"YulTypedName","src":"1108:4:75","type":""}],"src":"1060:186:75"},{"body":{"nativeSrc":"1303:434:75","nodeType":"YulBlock","src":"1303:434:75","statements":[{"body":{"nativeSrc":"1352:16:75","nodeType":"YulBlock","src":"1352:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1361:1:75","nodeType":"YulLiteral","src":"1361:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1364:1:75","nodeType":"YulLiteral","src":"1364:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1354:6:75","nodeType":"YulIdentifier","src":"1354:6:75"},"nativeSrc":"1354:12:75","nodeType":"YulFunctionCall","src":"1354:12:75"},"nativeSrc":"1354:12:75","nodeType":"YulExpressionStatement","src":"1354:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1331:6:75","nodeType":"YulIdentifier","src":"1331:6:75"},{"kind":"number","nativeSrc":"1339:4:75","nodeType":"YulLiteral","src":"1339:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1327:3:75","nodeType":"YulIdentifier","src":"1327:3:75"},"nativeSrc":"1327:17:75","nodeType":"YulFunctionCall","src":"1327:17:75"},{"name":"end","nativeSrc":"1346:3:75","nodeType":"YulIdentifier","src":"1346:3:75"}],"functionName":{"name":"slt","nativeSrc":"1323:3:75","nodeType":"YulIdentifier","src":"1323:3:75"},"nativeSrc":"1323:27:75","nodeType":"YulFunctionCall","src":"1323:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1316:6:75","nodeType":"YulIdentifier","src":"1316:6:75"},"nativeSrc":"1316:35:75","nodeType":"YulFunctionCall","src":"1316:35:75"},"nativeSrc":"1313:55:75","nodeType":"YulIf","src":"1313:55:75"},{"nativeSrc":"1377:34:75","nodeType":"YulVariableDeclaration","src":"1377:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"1404:6:75","nodeType":"YulIdentifier","src":"1404:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"1391:12:75","nodeType":"YulIdentifier","src":"1391:12:75"},"nativeSrc":"1391:20:75","nodeType":"YulFunctionCall","src":"1391:20:75"},"variables":[{"name":"length","nativeSrc":"1381:6:75","nodeType":"YulTypedName","src":"1381:6:75","type":""}]},{"nativeSrc":"1420:67:75","nodeType":"YulVariableDeclaration","src":"1420:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1479:6:75","nodeType":"YulIdentifier","src":"1479:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1451:27:75","nodeType":"YulIdentifier","src":"1451:27:75"},"nativeSrc":"1451:35:75","nodeType":"YulFunctionCall","src":"1451:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"1435:15:75","nodeType":"YulIdentifier","src":"1435:15:75"},"nativeSrc":"1435:52:75","nodeType":"YulFunctionCall","src":"1435:52:75"},"variables":[{"name":"array_1","nativeSrc":"1424:7:75","nodeType":"YulTypedName","src":"1424:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1503:7:75","nodeType":"YulIdentifier","src":"1503:7:75"},{"name":"length","nativeSrc":"1512:6:75","nodeType":"YulIdentifier","src":"1512:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1496:6:75","nodeType":"YulIdentifier","src":"1496:6:75"},"nativeSrc":"1496:23:75","nodeType":"YulFunctionCall","src":"1496:23:75"},"nativeSrc":"1496:23:75","nodeType":"YulExpressionStatement","src":"1496:23:75"},{"body":{"nativeSrc":"1571:16:75","nodeType":"YulBlock","src":"1571:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1580:1:75","nodeType":"YulLiteral","src":"1580:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1583:1:75","nodeType":"YulLiteral","src":"1583:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1573:6:75","nodeType":"YulIdentifier","src":"1573:6:75"},"nativeSrc":"1573:12:75","nodeType":"YulFunctionCall","src":"1573:12:75"},"nativeSrc":"1573:12:75","nodeType":"YulExpressionStatement","src":"1573:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1542:6:75","nodeType":"YulIdentifier","src":"1542:6:75"},{"name":"length","nativeSrc":"1550:6:75","nodeType":"YulIdentifier","src":"1550:6:75"}],"functionName":{"name":"add","nativeSrc":"1538:3:75","nodeType":"YulIdentifier","src":"1538:3:75"},"nativeSrc":"1538:19:75","nodeType":"YulFunctionCall","src":"1538:19:75"},{"kind":"number","nativeSrc":"1559:4:75","nodeType":"YulLiteral","src":"1559:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1534:3:75","nodeType":"YulIdentifier","src":"1534:3:75"},"nativeSrc":"1534:30:75","nodeType":"YulFunctionCall","src":"1534:30:75"},{"name":"end","nativeSrc":"1566:3:75","nodeType":"YulIdentifier","src":"1566:3:75"}],"functionName":{"name":"gt","nativeSrc":"1531:2:75","nodeType":"YulIdentifier","src":"1531:2:75"},"nativeSrc":"1531:39:75","nodeType":"YulFunctionCall","src":"1531:39:75"},"nativeSrc":"1528:59:75","nodeType":"YulIf","src":"1528:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1613:7:75","nodeType":"YulIdentifier","src":"1613:7:75"},{"kind":"number","nativeSrc":"1622:4:75","nodeType":"YulLiteral","src":"1622:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1609:3:75","nodeType":"YulIdentifier","src":"1609:3:75"},"nativeSrc":"1609:18:75","nodeType":"YulFunctionCall","src":"1609:18:75"},{"arguments":[{"name":"offset","nativeSrc":"1633:6:75","nodeType":"YulIdentifier","src":"1633:6:75"},{"kind":"number","nativeSrc":"1641:4:75","nodeType":"YulLiteral","src":"1641:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1629:3:75","nodeType":"YulIdentifier","src":"1629:3:75"},"nativeSrc":"1629:17:75","nodeType":"YulFunctionCall","src":"1629:17:75"},{"name":"length","nativeSrc":"1648:6:75","nodeType":"YulIdentifier","src":"1648:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"1596:12:75","nodeType":"YulIdentifier","src":"1596:12:75"},"nativeSrc":"1596:59:75","nodeType":"YulFunctionCall","src":"1596:59:75"},"nativeSrc":"1596:59:75","nodeType":"YulExpressionStatement","src":"1596:59:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1679:7:75","nodeType":"YulIdentifier","src":"1679:7:75"},{"name":"length","nativeSrc":"1688:6:75","nodeType":"YulIdentifier","src":"1688:6:75"}],"functionName":{"name":"add","nativeSrc":"1675:3:75","nodeType":"YulIdentifier","src":"1675:3:75"},"nativeSrc":"1675:20:75","nodeType":"YulFunctionCall","src":"1675:20:75"},{"kind":"number","nativeSrc":"1697:4:75","nodeType":"YulLiteral","src":"1697:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1671:3:75","nodeType":"YulIdentifier","src":"1671:3:75"},"nativeSrc":"1671:31:75","nodeType":"YulFunctionCall","src":"1671:31:75"},{"kind":"number","nativeSrc":"1704:1:75","nodeType":"YulLiteral","src":"1704:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1664:6:75","nodeType":"YulIdentifier","src":"1664:6:75"},"nativeSrc":"1664:42:75","nodeType":"YulFunctionCall","src":"1664:42:75"},"nativeSrc":"1664:42:75","nodeType":"YulExpressionStatement","src":"1664:42:75"},{"nativeSrc":"1715:16:75","nodeType":"YulAssignment","src":"1715:16:75","value":{"name":"array_1","nativeSrc":"1724:7:75","nodeType":"YulIdentifier","src":"1724:7:75"},"variableNames":[{"name":"array","nativeSrc":"1715:5:75","nodeType":"YulIdentifier","src":"1715:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"1251:486:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1277:6:75","nodeType":"YulTypedName","src":"1277:6:75","type":""},{"name":"end","nativeSrc":"1285:3:75","nodeType":"YulTypedName","src":"1285:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1293:5:75","nodeType":"YulTypedName","src":"1293:5:75","type":""}],"src":"1251:486:75"},{"body":{"nativeSrc":"1836:357:75","nodeType":"YulBlock","src":"1836:357:75","statements":[{"body":{"nativeSrc":"1882:16:75","nodeType":"YulBlock","src":"1882:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1891:1:75","nodeType":"YulLiteral","src":"1891:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1894:1:75","nodeType":"YulLiteral","src":"1894:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1884:6:75","nodeType":"YulIdentifier","src":"1884:6:75"},"nativeSrc":"1884:12:75","nodeType":"YulFunctionCall","src":"1884:12:75"},"nativeSrc":"1884:12:75","nodeType":"YulExpressionStatement","src":"1884:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1857:7:75","nodeType":"YulIdentifier","src":"1857:7:75"},{"name":"headStart","nativeSrc":"1866:9:75","nodeType":"YulIdentifier","src":"1866:9:75"}],"functionName":{"name":"sub","nativeSrc":"1853:3:75","nodeType":"YulIdentifier","src":"1853:3:75"},"nativeSrc":"1853:23:75","nodeType":"YulFunctionCall","src":"1853:23:75"},{"kind":"number","nativeSrc":"1878:2:75","nodeType":"YulLiteral","src":"1878:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1849:3:75","nodeType":"YulIdentifier","src":"1849:3:75"},"nativeSrc":"1849:32:75","nodeType":"YulFunctionCall","src":"1849:32:75"},"nativeSrc":"1846:52:75","nodeType":"YulIf","src":"1846:52:75"},{"nativeSrc":"1907:36:75","nodeType":"YulVariableDeclaration","src":"1907:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1933:9:75","nodeType":"YulIdentifier","src":"1933:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1920:12:75","nodeType":"YulIdentifier","src":"1920:12:75"},"nativeSrc":"1920:23:75","nodeType":"YulFunctionCall","src":"1920:23:75"},"variables":[{"name":"value","nativeSrc":"1911:5:75","nodeType":"YulTypedName","src":"1911:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1975:5:75","nodeType":"YulIdentifier","src":"1975:5:75"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1952:22:75","nodeType":"YulIdentifier","src":"1952:22:75"},"nativeSrc":"1952:29:75","nodeType":"YulFunctionCall","src":"1952:29:75"},"nativeSrc":"1952:29:75","nodeType":"YulExpressionStatement","src":"1952:29:75"},{"nativeSrc":"1990:15:75","nodeType":"YulAssignment","src":"1990:15:75","value":{"name":"value","nativeSrc":"2000:5:75","nodeType":"YulIdentifier","src":"2000:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1990:6:75","nodeType":"YulIdentifier","src":"1990:6:75"}]},{"nativeSrc":"2014:46:75","nodeType":"YulVariableDeclaration","src":"2014:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2045:9:75","nodeType":"YulIdentifier","src":"2045:9:75"},{"kind":"number","nativeSrc":"2056:2:75","nodeType":"YulLiteral","src":"2056:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2041:3:75","nodeType":"YulIdentifier","src":"2041:3:75"},"nativeSrc":"2041:18:75","nodeType":"YulFunctionCall","src":"2041:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2028:12:75","nodeType":"YulIdentifier","src":"2028:12:75"},"nativeSrc":"2028:32:75","nodeType":"YulFunctionCall","src":"2028:32:75"},"variables":[{"name":"offset","nativeSrc":"2018:6:75","nodeType":"YulTypedName","src":"2018:6:75","type":""}]},{"body":{"nativeSrc":"2103:16:75","nodeType":"YulBlock","src":"2103:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2112:1:75","nodeType":"YulLiteral","src":"2112:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2115:1:75","nodeType":"YulLiteral","src":"2115:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2105:6:75","nodeType":"YulIdentifier","src":"2105:6:75"},"nativeSrc":"2105:12:75","nodeType":"YulFunctionCall","src":"2105:12:75"},"nativeSrc":"2105:12:75","nodeType":"YulExpressionStatement","src":"2105:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2075:6:75","nodeType":"YulIdentifier","src":"2075:6:75"},{"kind":"number","nativeSrc":"2083:18:75","nodeType":"YulLiteral","src":"2083:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2072:2:75","nodeType":"YulIdentifier","src":"2072:2:75"},"nativeSrc":"2072:30:75","nodeType":"YulFunctionCall","src":"2072:30:75"},"nativeSrc":"2069:50:75","nodeType":"YulIf","src":"2069:50:75"},{"nativeSrc":"2128:59:75","nodeType":"YulAssignment","src":"2128:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2159:9:75","nodeType":"YulIdentifier","src":"2159:9:75"},{"name":"offset","nativeSrc":"2170:6:75","nodeType":"YulIdentifier","src":"2170:6:75"}],"functionName":{"name":"add","nativeSrc":"2155:3:75","nodeType":"YulIdentifier","src":"2155:3:75"},"nativeSrc":"2155:22:75","nodeType":"YulFunctionCall","src":"2155:22:75"},{"name":"dataEnd","nativeSrc":"2179:7:75","nodeType":"YulIdentifier","src":"2179:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"2138:16:75","nodeType":"YulIdentifier","src":"2138:16:75"},"nativeSrc":"2138:49:75","nodeType":"YulFunctionCall","src":"2138:49:75"},"variableNames":[{"name":"value1","nativeSrc":"2128:6:75","nodeType":"YulIdentifier","src":"2128:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1742:451:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1794:9:75","nodeType":"YulTypedName","src":"1794:9:75","type":""},{"name":"dataEnd","nativeSrc":"1805:7:75","nodeType":"YulTypedName","src":"1805:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1817:6:75","nodeType":"YulTypedName","src":"1817:6:75","type":""},{"name":"value1","nativeSrc":"1825:6:75","nodeType":"YulTypedName","src":"1825:6:75","type":""}],"src":"1742:451:75"},{"body":{"nativeSrc":"2247:239:75","nodeType":"YulBlock","src":"2247:239:75","statements":[{"nativeSrc":"2257:26:75","nodeType":"YulVariableDeclaration","src":"2257:26:75","value":{"arguments":[{"name":"value","nativeSrc":"2277:5:75","nodeType":"YulIdentifier","src":"2277:5:75"}],"functionName":{"name":"mload","nativeSrc":"2271:5:75","nodeType":"YulIdentifier","src":"2271:5:75"},"nativeSrc":"2271:12:75","nodeType":"YulFunctionCall","src":"2271:12:75"},"variables":[{"name":"length","nativeSrc":"2261:6:75","nodeType":"YulTypedName","src":"2261:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2299:3:75","nodeType":"YulIdentifier","src":"2299:3:75"},{"name":"length","nativeSrc":"2304:6:75","nodeType":"YulIdentifier","src":"2304:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2292:6:75","nodeType":"YulIdentifier","src":"2292:6:75"},"nativeSrc":"2292:19:75","nodeType":"YulFunctionCall","src":"2292:19:75"},"nativeSrc":"2292:19:75","nodeType":"YulExpressionStatement","src":"2292:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2330:3:75","nodeType":"YulIdentifier","src":"2330:3:75"},{"kind":"number","nativeSrc":"2335:4:75","nodeType":"YulLiteral","src":"2335:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2326:3:75","nodeType":"YulIdentifier","src":"2326:3:75"},"nativeSrc":"2326:14:75","nodeType":"YulFunctionCall","src":"2326:14:75"},{"arguments":[{"name":"value","nativeSrc":"2346:5:75","nodeType":"YulIdentifier","src":"2346:5:75"},{"kind":"number","nativeSrc":"2353:4:75","nodeType":"YulLiteral","src":"2353:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2342:3:75","nodeType":"YulIdentifier","src":"2342:3:75"},"nativeSrc":"2342:16:75","nodeType":"YulFunctionCall","src":"2342:16:75"},{"name":"length","nativeSrc":"2360:6:75","nodeType":"YulIdentifier","src":"2360:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"2320:5:75","nodeType":"YulIdentifier","src":"2320:5:75"},"nativeSrc":"2320:47:75","nodeType":"YulFunctionCall","src":"2320:47:75"},"nativeSrc":"2320:47:75","nodeType":"YulExpressionStatement","src":"2320:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2391:3:75","nodeType":"YulIdentifier","src":"2391:3:75"},{"name":"length","nativeSrc":"2396:6:75","nodeType":"YulIdentifier","src":"2396:6:75"}],"functionName":{"name":"add","nativeSrc":"2387:3:75","nodeType":"YulIdentifier","src":"2387:3:75"},"nativeSrc":"2387:16:75","nodeType":"YulFunctionCall","src":"2387:16:75"},{"kind":"number","nativeSrc":"2405:4:75","nodeType":"YulLiteral","src":"2405:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2383:3:75","nodeType":"YulIdentifier","src":"2383:3:75"},"nativeSrc":"2383:27:75","nodeType":"YulFunctionCall","src":"2383:27:75"},{"kind":"number","nativeSrc":"2412:1:75","nodeType":"YulLiteral","src":"2412:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2376:6:75","nodeType":"YulIdentifier","src":"2376:6:75"},"nativeSrc":"2376:38:75","nodeType":"YulFunctionCall","src":"2376:38:75"},"nativeSrc":"2376:38:75","nodeType":"YulExpressionStatement","src":"2376:38:75"},{"nativeSrc":"2423:57:75","nodeType":"YulAssignment","src":"2423:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2438:3:75","nodeType":"YulIdentifier","src":"2438:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2451:6:75","nodeType":"YulIdentifier","src":"2451:6:75"},{"kind":"number","nativeSrc":"2459:2:75","nodeType":"YulLiteral","src":"2459:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2447:3:75","nodeType":"YulIdentifier","src":"2447:3:75"},"nativeSrc":"2447:15:75","nodeType":"YulFunctionCall","src":"2447:15:75"},{"arguments":[{"kind":"number","nativeSrc":"2468:2:75","nodeType":"YulLiteral","src":"2468:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2464:3:75","nodeType":"YulIdentifier","src":"2464:3:75"},"nativeSrc":"2464:7:75","nodeType":"YulFunctionCall","src":"2464:7:75"}],"functionName":{"name":"and","nativeSrc":"2443:3:75","nodeType":"YulIdentifier","src":"2443:3:75"},"nativeSrc":"2443:29:75","nodeType":"YulFunctionCall","src":"2443:29:75"}],"functionName":{"name":"add","nativeSrc":"2434:3:75","nodeType":"YulIdentifier","src":"2434:3:75"},"nativeSrc":"2434:39:75","nodeType":"YulFunctionCall","src":"2434:39:75"},{"kind":"number","nativeSrc":"2475:4:75","nodeType":"YulLiteral","src":"2475:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2430:3:75","nodeType":"YulIdentifier","src":"2430:3:75"},"nativeSrc":"2430:50:75","nodeType":"YulFunctionCall","src":"2430:50:75"},"variableNames":[{"name":"end","nativeSrc":"2423:3:75","nodeType":"YulIdentifier","src":"2423:3:75"}]}]},"name":"abi_encode_bytes","nativeSrc":"2198:288:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2224:5:75","nodeType":"YulTypedName","src":"2224:5:75","type":""},{"name":"pos","nativeSrc":"2231:3:75","nodeType":"YulTypedName","src":"2231:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2239:3:75","nodeType":"YulTypedName","src":"2239:3:75","type":""}],"src":"2198:288:75"},{"body":{"nativeSrc":"2610:98:75","nodeType":"YulBlock","src":"2610:98:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2627:9:75","nodeType":"YulIdentifier","src":"2627:9:75"},{"kind":"number","nativeSrc":"2638:2:75","nodeType":"YulLiteral","src":"2638:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2620:6:75","nodeType":"YulIdentifier","src":"2620:6:75"},"nativeSrc":"2620:21:75","nodeType":"YulFunctionCall","src":"2620:21:75"},"nativeSrc":"2620:21:75","nodeType":"YulExpressionStatement","src":"2620:21:75"},{"nativeSrc":"2650:52:75","nodeType":"YulAssignment","src":"2650:52:75","value":{"arguments":[{"name":"value0","nativeSrc":"2675:6:75","nodeType":"YulIdentifier","src":"2675:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"2687:9:75","nodeType":"YulIdentifier","src":"2687:9:75"},{"kind":"number","nativeSrc":"2698:2:75","nodeType":"YulLiteral","src":"2698:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2683:3:75","nodeType":"YulIdentifier","src":"2683:3:75"},"nativeSrc":"2683:18:75","nodeType":"YulFunctionCall","src":"2683:18:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2658:16:75","nodeType":"YulIdentifier","src":"2658:16:75"},"nativeSrc":"2658:44:75","nodeType":"YulFunctionCall","src":"2658:44:75"},"variableNames":[{"name":"tail","nativeSrc":"2650:4:75","nodeType":"YulIdentifier","src":"2650:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2491:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2579:9:75","nodeType":"YulTypedName","src":"2579:9:75","type":""},{"name":"value0","nativeSrc":"2590:6:75","nodeType":"YulTypedName","src":"2590:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2601:4:75","nodeType":"YulTypedName","src":"2601:4:75","type":""}],"src":"2491:217:75"},{"body":{"nativeSrc":"2783:110:75","nodeType":"YulBlock","src":"2783:110:75","statements":[{"body":{"nativeSrc":"2829:16:75","nodeType":"YulBlock","src":"2829:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2838:1:75","nodeType":"YulLiteral","src":"2838:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2841:1:75","nodeType":"YulLiteral","src":"2841:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2831:6:75","nodeType":"YulIdentifier","src":"2831:6:75"},"nativeSrc":"2831:12:75","nodeType":"YulFunctionCall","src":"2831:12:75"},"nativeSrc":"2831:12:75","nodeType":"YulExpressionStatement","src":"2831:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2804:7:75","nodeType":"YulIdentifier","src":"2804:7:75"},{"name":"headStart","nativeSrc":"2813:9:75","nodeType":"YulIdentifier","src":"2813:9:75"}],"functionName":{"name":"sub","nativeSrc":"2800:3:75","nodeType":"YulIdentifier","src":"2800:3:75"},"nativeSrc":"2800:23:75","nodeType":"YulFunctionCall","src":"2800:23:75"},{"kind":"number","nativeSrc":"2825:2:75","nodeType":"YulLiteral","src":"2825:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2796:3:75","nodeType":"YulIdentifier","src":"2796:3:75"},"nativeSrc":"2796:32:75","nodeType":"YulFunctionCall","src":"2796:32:75"},"nativeSrc":"2793:52:75","nodeType":"YulIf","src":"2793:52:75"},{"nativeSrc":"2854:33:75","nodeType":"YulAssignment","src":"2854:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2877:9:75","nodeType":"YulIdentifier","src":"2877:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2864:12:75","nodeType":"YulIdentifier","src":"2864:12:75"},"nativeSrc":"2864:23:75","nodeType":"YulFunctionCall","src":"2864:23:75"},"variableNames":[{"name":"value0","nativeSrc":"2854:6:75","nodeType":"YulIdentifier","src":"2854:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2713:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2749:9:75","nodeType":"YulTypedName","src":"2749:9:75","type":""},{"name":"dataEnd","nativeSrc":"2760:7:75","nodeType":"YulTypedName","src":"2760:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2772:6:75","nodeType":"YulTypedName","src":"2772:6:75","type":""}],"src":"2713:180:75"},{"body":{"nativeSrc":"2943:86:75","nodeType":"YulBlock","src":"2943:86:75","statements":[{"body":{"nativeSrc":"3007:16:75","nodeType":"YulBlock","src":"3007:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3016:1:75","nodeType":"YulLiteral","src":"3016:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3019:1:75","nodeType":"YulLiteral","src":"3019:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3009:6:75","nodeType":"YulIdentifier","src":"3009:6:75"},"nativeSrc":"3009:12:75","nodeType":"YulFunctionCall","src":"3009:12:75"},"nativeSrc":"3009:12:75","nodeType":"YulExpressionStatement","src":"3009:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2966:5:75","nodeType":"YulIdentifier","src":"2966:5:75"},{"arguments":[{"name":"value","nativeSrc":"2977:5:75","nodeType":"YulIdentifier","src":"2977:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2992:3:75","nodeType":"YulLiteral","src":"2992:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2997:1:75","nodeType":"YulLiteral","src":"2997:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2988:3:75","nodeType":"YulIdentifier","src":"2988:3:75"},"nativeSrc":"2988:11:75","nodeType":"YulFunctionCall","src":"2988:11:75"},{"kind":"number","nativeSrc":"3001:1:75","nodeType":"YulLiteral","src":"3001:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2984:3:75","nodeType":"YulIdentifier","src":"2984:3:75"},"nativeSrc":"2984:19:75","nodeType":"YulFunctionCall","src":"2984:19:75"}],"functionName":{"name":"and","nativeSrc":"2973:3:75","nodeType":"YulIdentifier","src":"2973:3:75"},"nativeSrc":"2973:31:75","nodeType":"YulFunctionCall","src":"2973:31:75"}],"functionName":{"name":"eq","nativeSrc":"2963:2:75","nodeType":"YulIdentifier","src":"2963:2:75"},"nativeSrc":"2963:42:75","nodeType":"YulFunctionCall","src":"2963:42:75"}],"functionName":{"name":"iszero","nativeSrc":"2956:6:75","nodeType":"YulIdentifier","src":"2956:6:75"},"nativeSrc":"2956:50:75","nodeType":"YulFunctionCall","src":"2956:50:75"},"nativeSrc":"2953:70:75","nodeType":"YulIf","src":"2953:70:75"}]},"name":"validator_revert_address","nativeSrc":"2898:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2932:5:75","nodeType":"YulTypedName","src":"2932:5:75","type":""}],"src":"2898:131:75"},{"body":{"nativeSrc":"3104:177:75","nodeType":"YulBlock","src":"3104:177:75","statements":[{"body":{"nativeSrc":"3150:16:75","nodeType":"YulBlock","src":"3150:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3159:1:75","nodeType":"YulLiteral","src":"3159:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3162:1:75","nodeType":"YulLiteral","src":"3162:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3152:6:75","nodeType":"YulIdentifier","src":"3152:6:75"},"nativeSrc":"3152:12:75","nodeType":"YulFunctionCall","src":"3152:12:75"},"nativeSrc":"3152:12:75","nodeType":"YulExpressionStatement","src":"3152:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3125:7:75","nodeType":"YulIdentifier","src":"3125:7:75"},{"name":"headStart","nativeSrc":"3134:9:75","nodeType":"YulIdentifier","src":"3134:9:75"}],"functionName":{"name":"sub","nativeSrc":"3121:3:75","nodeType":"YulIdentifier","src":"3121:3:75"},"nativeSrc":"3121:23:75","nodeType":"YulFunctionCall","src":"3121:23:75"},{"kind":"number","nativeSrc":"3146:2:75","nodeType":"YulLiteral","src":"3146:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3117:3:75","nodeType":"YulIdentifier","src":"3117:3:75"},"nativeSrc":"3117:32:75","nodeType":"YulFunctionCall","src":"3117:32:75"},"nativeSrc":"3114:52:75","nodeType":"YulIf","src":"3114:52:75"},{"nativeSrc":"3175:36:75","nodeType":"YulVariableDeclaration","src":"3175:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3201:9:75","nodeType":"YulIdentifier","src":"3201:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3188:12:75","nodeType":"YulIdentifier","src":"3188:12:75"},"nativeSrc":"3188:23:75","nodeType":"YulFunctionCall","src":"3188:23:75"},"variables":[{"name":"value","nativeSrc":"3179:5:75","nodeType":"YulTypedName","src":"3179:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"3245:5:75","nodeType":"YulIdentifier","src":"3245:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"3220:24:75","nodeType":"YulIdentifier","src":"3220:24:75"},"nativeSrc":"3220:31:75","nodeType":"YulFunctionCall","src":"3220:31:75"},"nativeSrc":"3220:31:75","nodeType":"YulExpressionStatement","src":"3220:31:75"},{"nativeSrc":"3260:15:75","nodeType":"YulAssignment","src":"3260:15:75","value":{"name":"value","nativeSrc":"3270:5:75","nodeType":"YulIdentifier","src":"3270:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3260:6:75","nodeType":"YulIdentifier","src":"3260:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3034:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3070:9:75","nodeType":"YulTypedName","src":"3070:9:75","type":""},{"name":"dataEnd","nativeSrc":"3081:7:75","nodeType":"YulTypedName","src":"3081:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3093:6:75","nodeType":"YulTypedName","src":"3093:6:75","type":""}],"src":"3034:247:75"},{"body":{"nativeSrc":"3387:76:75","nodeType":"YulBlock","src":"3387:76:75","statements":[{"nativeSrc":"3397:26:75","nodeType":"YulAssignment","src":"3397:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3409:9:75","nodeType":"YulIdentifier","src":"3409:9:75"},{"kind":"number","nativeSrc":"3420:2:75","nodeType":"YulLiteral","src":"3420:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3405:3:75","nodeType":"YulIdentifier","src":"3405:3:75"},"nativeSrc":"3405:18:75","nodeType":"YulFunctionCall","src":"3405:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3397:4:75","nodeType":"YulIdentifier","src":"3397:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3439:9:75","nodeType":"YulIdentifier","src":"3439:9:75"},{"name":"value0","nativeSrc":"3450:6:75","nodeType":"YulIdentifier","src":"3450:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3432:6:75","nodeType":"YulIdentifier","src":"3432:6:75"},"nativeSrc":"3432:25:75","nodeType":"YulFunctionCall","src":"3432:25:75"},"nativeSrc":"3432:25:75","nodeType":"YulExpressionStatement","src":"3432:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"3286:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3356:9:75","nodeType":"YulTypedName","src":"3356:9:75","type":""},{"name":"value0","nativeSrc":"3367:6:75","nodeType":"YulTypedName","src":"3367:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3378:4:75","nodeType":"YulTypedName","src":"3378:4:75","type":""}],"src":"3286:177:75"},{"body":{"nativeSrc":"3500:95:75","nodeType":"YulBlock","src":"3500:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3517:1:75","nodeType":"YulLiteral","src":"3517:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3524:3:75","nodeType":"YulLiteral","src":"3524:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3529:10:75","nodeType":"YulLiteral","src":"3529:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3520:3:75","nodeType":"YulIdentifier","src":"3520:3:75"},"nativeSrc":"3520:20:75","nodeType":"YulFunctionCall","src":"3520:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3510:6:75","nodeType":"YulIdentifier","src":"3510:6:75"},"nativeSrc":"3510:31:75","nodeType":"YulFunctionCall","src":"3510:31:75"},"nativeSrc":"3510:31:75","nodeType":"YulExpressionStatement","src":"3510:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3557:1:75","nodeType":"YulLiteral","src":"3557:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3560:4:75","nodeType":"YulLiteral","src":"3560:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3550:6:75","nodeType":"YulIdentifier","src":"3550:6:75"},"nativeSrc":"3550:15:75","nodeType":"YulFunctionCall","src":"3550:15:75"},"nativeSrc":"3550:15:75","nodeType":"YulExpressionStatement","src":"3550:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3581:1:75","nodeType":"YulLiteral","src":"3581:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3584:4:75","nodeType":"YulLiteral","src":"3584:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3574:6:75","nodeType":"YulIdentifier","src":"3574:6:75"},"nativeSrc":"3574:15:75","nodeType":"YulFunctionCall","src":"3574:15:75"},"nativeSrc":"3574:15:75","nodeType":"YulExpressionStatement","src":"3574:15:75"}]},"name":"panic_error_0x21","nativeSrc":"3468:127:75","nodeType":"YulFunctionDefinition","src":"3468:127:75"},{"body":{"nativeSrc":"3661:418:75","nodeType":"YulBlock","src":"3661:418:75","statements":[{"nativeSrc":"3671:22:75","nodeType":"YulVariableDeclaration","src":"3671:22:75","value":{"arguments":[{"name":"value","nativeSrc":"3687:5:75","nodeType":"YulIdentifier","src":"3687:5:75"}],"functionName":{"name":"mload","nativeSrc":"3681:5:75","nodeType":"YulIdentifier","src":"3681:5:75"},"nativeSrc":"3681:12:75","nodeType":"YulFunctionCall","src":"3681:12:75"},"variables":[{"name":"_1","nativeSrc":"3675:2:75","nodeType":"YulTypedName","src":"3675:2:75","type":""}]},{"body":{"nativeSrc":"3731:111:75","nodeType":"YulBlock","src":"3731:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3752:1:75","nodeType":"YulLiteral","src":"3752:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3759:3:75","nodeType":"YulLiteral","src":"3759:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3764:10:75","nodeType":"YulLiteral","src":"3764:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3755:3:75","nodeType":"YulIdentifier","src":"3755:3:75"},"nativeSrc":"3755:20:75","nodeType":"YulFunctionCall","src":"3755:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3745:6:75","nodeType":"YulIdentifier","src":"3745:6:75"},"nativeSrc":"3745:31:75","nodeType":"YulFunctionCall","src":"3745:31:75"},"nativeSrc":"3745:31:75","nodeType":"YulExpressionStatement","src":"3745:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3796:1:75","nodeType":"YulLiteral","src":"3796:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3799:4:75","nodeType":"YulLiteral","src":"3799:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3789:6:75","nodeType":"YulIdentifier","src":"3789:6:75"},"nativeSrc":"3789:15:75","nodeType":"YulFunctionCall","src":"3789:15:75"},"nativeSrc":"3789:15:75","nodeType":"YulExpressionStatement","src":"3789:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3824:1:75","nodeType":"YulLiteral","src":"3824:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3827:4:75","nodeType":"YulLiteral","src":"3827:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3817:6:75","nodeType":"YulIdentifier","src":"3817:6:75"},"nativeSrc":"3817:15:75","nodeType":"YulFunctionCall","src":"3817:15:75"},"nativeSrc":"3817:15:75","nodeType":"YulExpressionStatement","src":"3817:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3715:2:75","nodeType":"YulIdentifier","src":"3715:2:75"},{"kind":"number","nativeSrc":"3719:1:75","nodeType":"YulLiteral","src":"3719:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3712:2:75","nodeType":"YulIdentifier","src":"3712:2:75"},"nativeSrc":"3712:9:75","nodeType":"YulFunctionCall","src":"3712:9:75"}],"functionName":{"name":"iszero","nativeSrc":"3705:6:75","nodeType":"YulIdentifier","src":"3705:6:75"},"nativeSrc":"3705:17:75","nodeType":"YulFunctionCall","src":"3705:17:75"},"nativeSrc":"3702:140:75","nodeType":"YulIf","src":"3702:140:75"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3858:3:75","nodeType":"YulIdentifier","src":"3858:3:75"},{"name":"_1","nativeSrc":"3863:2:75","nodeType":"YulIdentifier","src":"3863:2:75"}],"functionName":{"name":"mstore","nativeSrc":"3851:6:75","nodeType":"YulIdentifier","src":"3851:6:75"},"nativeSrc":"3851:15:75","nodeType":"YulFunctionCall","src":"3851:15:75"},"nativeSrc":"3851:15:75","nodeType":"YulExpressionStatement","src":"3851:15:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3886:3:75","nodeType":"YulIdentifier","src":"3886:3:75"},{"kind":"number","nativeSrc":"3891:4:75","nodeType":"YulLiteral","src":"3891:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3882:3:75","nodeType":"YulIdentifier","src":"3882:3:75"},"nativeSrc":"3882:14:75","nodeType":"YulFunctionCall","src":"3882:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3908:5:75","nodeType":"YulIdentifier","src":"3908:5:75"},{"kind":"number","nativeSrc":"3915:4:75","nodeType":"YulLiteral","src":"3915:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3904:3:75","nodeType":"YulIdentifier","src":"3904:3:75"},"nativeSrc":"3904:16:75","nodeType":"YulFunctionCall","src":"3904:16:75"}],"functionName":{"name":"mload","nativeSrc":"3898:5:75","nodeType":"YulIdentifier","src":"3898:5:75"},"nativeSrc":"3898:23:75","nodeType":"YulFunctionCall","src":"3898:23:75"}],"functionName":{"name":"mstore","nativeSrc":"3875:6:75","nodeType":"YulIdentifier","src":"3875:6:75"},"nativeSrc":"3875:47:75","nodeType":"YulFunctionCall","src":"3875:47:75"},"nativeSrc":"3875:47:75","nodeType":"YulExpressionStatement","src":"3875:47:75"},{"nativeSrc":"3931:43:75","nodeType":"YulVariableDeclaration","src":"3931:43:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3961:5:75","nodeType":"YulIdentifier","src":"3961:5:75"},{"kind":"number","nativeSrc":"3968:4:75","nodeType":"YulLiteral","src":"3968:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3957:3:75","nodeType":"YulIdentifier","src":"3957:3:75"},"nativeSrc":"3957:16:75","nodeType":"YulFunctionCall","src":"3957:16:75"}],"functionName":{"name":"mload","nativeSrc":"3951:5:75","nodeType":"YulIdentifier","src":"3951:5:75"},"nativeSrc":"3951:23:75","nodeType":"YulFunctionCall","src":"3951:23:75"},"variables":[{"name":"memberValue0","nativeSrc":"3935:12:75","nodeType":"YulTypedName","src":"3935:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3994:3:75","nodeType":"YulIdentifier","src":"3994:3:75"},{"kind":"number","nativeSrc":"3999:4:75","nodeType":"YulLiteral","src":"3999:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3990:3:75","nodeType":"YulIdentifier","src":"3990:3:75"},"nativeSrc":"3990:14:75","nodeType":"YulFunctionCall","src":"3990:14:75"},{"kind":"number","nativeSrc":"4006:4:75","nodeType":"YulLiteral","src":"4006:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3983:6:75","nodeType":"YulIdentifier","src":"3983:6:75"},"nativeSrc":"3983:28:75","nodeType":"YulFunctionCall","src":"3983:28:75"},"nativeSrc":"3983:28:75","nodeType":"YulExpressionStatement","src":"3983:28:75"},{"nativeSrc":"4020:53:75","nodeType":"YulAssignment","src":"4020:53:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"4044:12:75","nodeType":"YulIdentifier","src":"4044:12:75"},{"arguments":[{"name":"pos","nativeSrc":"4062:3:75","nodeType":"YulIdentifier","src":"4062:3:75"},{"kind":"number","nativeSrc":"4067:4:75","nodeType":"YulLiteral","src":"4067:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"4058:3:75","nodeType":"YulIdentifier","src":"4058:3:75"},"nativeSrc":"4058:14:75","nodeType":"YulFunctionCall","src":"4058:14:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"4027:16:75","nodeType":"YulIdentifier","src":"4027:16:75"},"nativeSrc":"4027:46:75","nodeType":"YulFunctionCall","src":"4027:46:75"},"variableNames":[{"name":"end","nativeSrc":"4020:3:75","nodeType":"YulIdentifier","src":"4020:3:75"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3600:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3638:5:75","nodeType":"YulTypedName","src":"3638:5:75","type":""},{"name":"pos","nativeSrc":"3645:3:75","nodeType":"YulTypedName","src":"3645:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3653:3:75","nodeType":"YulTypedName","src":"3653:3:75","type":""}],"src":"3600:479:75"},{"body":{"nativeSrc":"4239:110:75","nodeType":"YulBlock","src":"4239:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4256:9:75","nodeType":"YulIdentifier","src":"4256:9:75"},{"kind":"number","nativeSrc":"4267:2:75","nodeType":"YulLiteral","src":"4267:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4249:6:75","nodeType":"YulIdentifier","src":"4249:6:75"},"nativeSrc":"4249:21:75","nodeType":"YulFunctionCall","src":"4249:21:75"},"nativeSrc":"4249:21:75","nodeType":"YulExpressionStatement","src":"4249:21:75"},{"nativeSrc":"4279:64:75","nodeType":"YulAssignment","src":"4279:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"4316:6:75","nodeType":"YulIdentifier","src":"4316:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"4328:9:75","nodeType":"YulIdentifier","src":"4328:9:75"},{"kind":"number","nativeSrc":"4339:2:75","nodeType":"YulLiteral","src":"4339:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4324:3:75","nodeType":"YulIdentifier","src":"4324:3:75"},"nativeSrc":"4324:18:75","nodeType":"YulFunctionCall","src":"4324:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"4287:28:75","nodeType":"YulIdentifier","src":"4287:28:75"},"nativeSrc":"4287:56:75","nodeType":"YulFunctionCall","src":"4287:56:75"},"variableNames":[{"name":"tail","nativeSrc":"4279:4:75","nodeType":"YulIdentifier","src":"4279:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"4084:265:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4208:9:75","nodeType":"YulTypedName","src":"4208:9:75","type":""},{"name":"value0","nativeSrc":"4219:6:75","nodeType":"YulTypedName","src":"4219:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4230:4:75","nodeType":"YulTypedName","src":"4230:4:75","type":""}],"src":"4084:265:75"},{"body":{"nativeSrc":"4396:76:75","nodeType":"YulBlock","src":"4396:76:75","statements":[{"body":{"nativeSrc":"4450:16:75","nodeType":"YulBlock","src":"4450:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4459:1:75","nodeType":"YulLiteral","src":"4459:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4462:1:75","nodeType":"YulLiteral","src":"4462:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4452:6:75","nodeType":"YulIdentifier","src":"4452:6:75"},"nativeSrc":"4452:12:75","nodeType":"YulFunctionCall","src":"4452:12:75"},"nativeSrc":"4452:12:75","nodeType":"YulExpressionStatement","src":"4452:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4419:5:75","nodeType":"YulIdentifier","src":"4419:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4440:5:75","nodeType":"YulIdentifier","src":"4440:5:75"}],"functionName":{"name":"iszero","nativeSrc":"4433:6:75","nodeType":"YulIdentifier","src":"4433:6:75"},"nativeSrc":"4433:13:75","nodeType":"YulFunctionCall","src":"4433:13:75"}],"functionName":{"name":"iszero","nativeSrc":"4426:6:75","nodeType":"YulIdentifier","src":"4426:6:75"},"nativeSrc":"4426:21:75","nodeType":"YulFunctionCall","src":"4426:21:75"}],"functionName":{"name":"eq","nativeSrc":"4416:2:75","nodeType":"YulIdentifier","src":"4416:2:75"},"nativeSrc":"4416:32:75","nodeType":"YulFunctionCall","src":"4416:32:75"}],"functionName":{"name":"iszero","nativeSrc":"4409:6:75","nodeType":"YulIdentifier","src":"4409:6:75"},"nativeSrc":"4409:40:75","nodeType":"YulFunctionCall","src":"4409:40:75"},"nativeSrc":"4406:60:75","nodeType":"YulIf","src":"4406:60:75"}]},"name":"validator_revert_bool","nativeSrc":"4354:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4385:5:75","nodeType":"YulTypedName","src":"4385:5:75","type":""}],"src":"4354:118:75"},{"body":{"nativeSrc":"4544:174:75","nodeType":"YulBlock","src":"4544:174:75","statements":[{"body":{"nativeSrc":"4590:16:75","nodeType":"YulBlock","src":"4590:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4599:1:75","nodeType":"YulLiteral","src":"4599:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4602:1:75","nodeType":"YulLiteral","src":"4602:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4592:6:75","nodeType":"YulIdentifier","src":"4592:6:75"},"nativeSrc":"4592:12:75","nodeType":"YulFunctionCall","src":"4592:12:75"},"nativeSrc":"4592:12:75","nodeType":"YulExpressionStatement","src":"4592:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4565:7:75","nodeType":"YulIdentifier","src":"4565:7:75"},{"name":"headStart","nativeSrc":"4574:9:75","nodeType":"YulIdentifier","src":"4574:9:75"}],"functionName":{"name":"sub","nativeSrc":"4561:3:75","nodeType":"YulIdentifier","src":"4561:3:75"},"nativeSrc":"4561:23:75","nodeType":"YulFunctionCall","src":"4561:23:75"},{"kind":"number","nativeSrc":"4586:2:75","nodeType":"YulLiteral","src":"4586:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4557:3:75","nodeType":"YulIdentifier","src":"4557:3:75"},"nativeSrc":"4557:32:75","nodeType":"YulFunctionCall","src":"4557:32:75"},"nativeSrc":"4554:52:75","nodeType":"YulIf","src":"4554:52:75"},{"nativeSrc":"4615:36:75","nodeType":"YulVariableDeclaration","src":"4615:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4641:9:75","nodeType":"YulIdentifier","src":"4641:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4628:12:75","nodeType":"YulIdentifier","src":"4628:12:75"},"nativeSrc":"4628:23:75","nodeType":"YulFunctionCall","src":"4628:23:75"},"variables":[{"name":"value","nativeSrc":"4619:5:75","nodeType":"YulTypedName","src":"4619:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4682:5:75","nodeType":"YulIdentifier","src":"4682:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4660:21:75","nodeType":"YulIdentifier","src":"4660:21:75"},"nativeSrc":"4660:28:75","nodeType":"YulFunctionCall","src":"4660:28:75"},"nativeSrc":"4660:28:75","nodeType":"YulExpressionStatement","src":"4660:28:75"},{"nativeSrc":"4697:15:75","nodeType":"YulAssignment","src":"4697:15:75","value":{"name":"value","nativeSrc":"4707:5:75","nodeType":"YulIdentifier","src":"4707:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4697:6:75","nodeType":"YulIdentifier","src":"4697:6:75"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4477:241:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4510:9:75","nodeType":"YulTypedName","src":"4510:9:75","type":""},{"name":"dataEnd","nativeSrc":"4521:7:75","nodeType":"YulTypedName","src":"4521:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4533:6:75","nodeType":"YulTypedName","src":"4533:6:75","type":""}],"src":"4477:241:75"},{"body":{"nativeSrc":"4824:76:75","nodeType":"YulBlock","src":"4824:76:75","statements":[{"nativeSrc":"4834:26:75","nodeType":"YulAssignment","src":"4834:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4846:9:75","nodeType":"YulIdentifier","src":"4846:9:75"},{"kind":"number","nativeSrc":"4857:2:75","nodeType":"YulLiteral","src":"4857:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4842:3:75","nodeType":"YulIdentifier","src":"4842:3:75"},"nativeSrc":"4842:18:75","nodeType":"YulFunctionCall","src":"4842:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4834:4:75","nodeType":"YulIdentifier","src":"4834:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4876:9:75","nodeType":"YulIdentifier","src":"4876:9:75"},{"name":"value0","nativeSrc":"4887:6:75","nodeType":"YulIdentifier","src":"4887:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4869:6:75","nodeType":"YulIdentifier","src":"4869:6:75"},"nativeSrc":"4869:25:75","nodeType":"YulFunctionCall","src":"4869:25:75"},"nativeSrc":"4869:25:75","nodeType":"YulExpressionStatement","src":"4869:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4723:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4793:9:75","nodeType":"YulTypedName","src":"4793:9:75","type":""},{"name":"value0","nativeSrc":"4804:6:75","nodeType":"YulTypedName","src":"4804:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4815:4:75","nodeType":"YulTypedName","src":"4815:4:75","type":""}],"src":"4723:177:75"},{"body":{"nativeSrc":"5006:102:75","nodeType":"YulBlock","src":"5006:102:75","statements":[{"nativeSrc":"5016:26:75","nodeType":"YulAssignment","src":"5016:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5028:9:75","nodeType":"YulIdentifier","src":"5028:9:75"},{"kind":"number","nativeSrc":"5039:2:75","nodeType":"YulLiteral","src":"5039:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5024:3:75","nodeType":"YulIdentifier","src":"5024:3:75"},"nativeSrc":"5024:18:75","nodeType":"YulFunctionCall","src":"5024:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5016:4:75","nodeType":"YulIdentifier","src":"5016:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5058:9:75","nodeType":"YulIdentifier","src":"5058:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5073:6:75","nodeType":"YulIdentifier","src":"5073:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5089:3:75","nodeType":"YulLiteral","src":"5089:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5094:1:75","nodeType":"YulLiteral","src":"5094:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5085:3:75","nodeType":"YulIdentifier","src":"5085:3:75"},"nativeSrc":"5085:11:75","nodeType":"YulFunctionCall","src":"5085:11:75"},{"kind":"number","nativeSrc":"5098:1:75","nodeType":"YulLiteral","src":"5098:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5081:3:75","nodeType":"YulIdentifier","src":"5081:3:75"},"nativeSrc":"5081:19:75","nodeType":"YulFunctionCall","src":"5081:19:75"}],"functionName":{"name":"and","nativeSrc":"5069:3:75","nodeType":"YulIdentifier","src":"5069:3:75"},"nativeSrc":"5069:32:75","nodeType":"YulFunctionCall","src":"5069:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5051:6:75","nodeType":"YulIdentifier","src":"5051:6:75"},"nativeSrc":"5051:51:75","nodeType":"YulFunctionCall","src":"5051:51:75"},"nativeSrc":"5051:51:75","nodeType":"YulExpressionStatement","src":"5051:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4905:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4975:9:75","nodeType":"YulTypedName","src":"4975:9:75","type":""},{"name":"value0","nativeSrc":"4986:6:75","nodeType":"YulTypedName","src":"4986:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4997:4:75","nodeType":"YulTypedName","src":"4997:4:75","type":""}],"src":"4905:203:75"},{"body":{"nativeSrc":"5192:241:75","nodeType":"YulBlock","src":"5192:241:75","statements":[{"body":{"nativeSrc":"5238:16:75","nodeType":"YulBlock","src":"5238:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5247:1:75","nodeType":"YulLiteral","src":"5247:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5250:1:75","nodeType":"YulLiteral","src":"5250:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5240:6:75","nodeType":"YulIdentifier","src":"5240:6:75"},"nativeSrc":"5240:12:75","nodeType":"YulFunctionCall","src":"5240:12:75"},"nativeSrc":"5240:12:75","nodeType":"YulExpressionStatement","src":"5240:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5213:7:75","nodeType":"YulIdentifier","src":"5213:7:75"},{"name":"headStart","nativeSrc":"5222:9:75","nodeType":"YulIdentifier","src":"5222:9:75"}],"functionName":{"name":"sub","nativeSrc":"5209:3:75","nodeType":"YulIdentifier","src":"5209:3:75"},"nativeSrc":"5209:23:75","nodeType":"YulFunctionCall","src":"5209:23:75"},{"kind":"number","nativeSrc":"5234:2:75","nodeType":"YulLiteral","src":"5234:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5205:3:75","nodeType":"YulIdentifier","src":"5205:3:75"},"nativeSrc":"5205:32:75","nodeType":"YulFunctionCall","src":"5205:32:75"},"nativeSrc":"5202:52:75","nodeType":"YulIf","src":"5202:52:75"},{"nativeSrc":"5263:37:75","nodeType":"YulVariableDeclaration","src":"5263:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5290:9:75","nodeType":"YulIdentifier","src":"5290:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5277:12:75","nodeType":"YulIdentifier","src":"5277:12:75"},"nativeSrc":"5277:23:75","nodeType":"YulFunctionCall","src":"5277:23:75"},"variables":[{"name":"offset","nativeSrc":"5267:6:75","nodeType":"YulTypedName","src":"5267:6:75","type":""}]},{"body":{"nativeSrc":"5343:16:75","nodeType":"YulBlock","src":"5343:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5352:1:75","nodeType":"YulLiteral","src":"5352:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5355:1:75","nodeType":"YulLiteral","src":"5355:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5345:6:75","nodeType":"YulIdentifier","src":"5345:6:75"},"nativeSrc":"5345:12:75","nodeType":"YulFunctionCall","src":"5345:12:75"},"nativeSrc":"5345:12:75","nodeType":"YulExpressionStatement","src":"5345:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5315:6:75","nodeType":"YulIdentifier","src":"5315:6:75"},{"kind":"number","nativeSrc":"5323:18:75","nodeType":"YulLiteral","src":"5323:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5312:2:75","nodeType":"YulIdentifier","src":"5312:2:75"},"nativeSrc":"5312:30:75","nodeType":"YulFunctionCall","src":"5312:30:75"},"nativeSrc":"5309:50:75","nodeType":"YulIf","src":"5309:50:75"},{"nativeSrc":"5368:59:75","nodeType":"YulAssignment","src":"5368:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5399:9:75","nodeType":"YulIdentifier","src":"5399:9:75"},{"name":"offset","nativeSrc":"5410:6:75","nodeType":"YulIdentifier","src":"5410:6:75"}],"functionName":{"name":"add","nativeSrc":"5395:3:75","nodeType":"YulIdentifier","src":"5395:3:75"},"nativeSrc":"5395:22:75","nodeType":"YulFunctionCall","src":"5395:22:75"},{"name":"dataEnd","nativeSrc":"5419:7:75","nodeType":"YulIdentifier","src":"5419:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"5378:16:75","nodeType":"YulIdentifier","src":"5378:16:75"},"nativeSrc":"5378:49:75","nodeType":"YulFunctionCall","src":"5378:49:75"},"variableNames":[{"name":"value0","nativeSrc":"5368:6:75","nodeType":"YulIdentifier","src":"5368:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"5113:320:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5158:9:75","nodeType":"YulTypedName","src":"5158:9:75","type":""},{"name":"dataEnd","nativeSrc":"5169:7:75","nodeType":"YulTypedName","src":"5169:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5181:6:75","nodeType":"YulTypedName","src":"5181:6:75","type":""}],"src":"5113:320:75"},{"body":{"nativeSrc":"5595:214:75","nodeType":"YulBlock","src":"5595:214:75","statements":[{"nativeSrc":"5605:26:75","nodeType":"YulAssignment","src":"5605:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5617:9:75","nodeType":"YulIdentifier","src":"5617:9:75"},{"kind":"number","nativeSrc":"5628:2:75","nodeType":"YulLiteral","src":"5628:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5613:3:75","nodeType":"YulIdentifier","src":"5613:3:75"},"nativeSrc":"5613:18:75","nodeType":"YulFunctionCall","src":"5613:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5605:4:75","nodeType":"YulIdentifier","src":"5605:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5647:9:75","nodeType":"YulIdentifier","src":"5647:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5662:6:75","nodeType":"YulIdentifier","src":"5662:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5678:3:75","nodeType":"YulLiteral","src":"5678:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5683:1:75","nodeType":"YulLiteral","src":"5683:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5674:3:75","nodeType":"YulIdentifier","src":"5674:3:75"},"nativeSrc":"5674:11:75","nodeType":"YulFunctionCall","src":"5674:11:75"},{"kind":"number","nativeSrc":"5687:1:75","nodeType":"YulLiteral","src":"5687:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5670:3:75","nodeType":"YulIdentifier","src":"5670:3:75"},"nativeSrc":"5670:19:75","nodeType":"YulFunctionCall","src":"5670:19:75"}],"functionName":{"name":"and","nativeSrc":"5658:3:75","nodeType":"YulIdentifier","src":"5658:3:75"},"nativeSrc":"5658:32:75","nodeType":"YulFunctionCall","src":"5658:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5640:6:75","nodeType":"YulIdentifier","src":"5640:6:75"},"nativeSrc":"5640:51:75","nodeType":"YulFunctionCall","src":"5640:51:75"},"nativeSrc":"5640:51:75","nodeType":"YulExpressionStatement","src":"5640:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5711:9:75","nodeType":"YulIdentifier","src":"5711:9:75"},{"kind":"number","nativeSrc":"5722:2:75","nodeType":"YulLiteral","src":"5722:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5707:3:75","nodeType":"YulIdentifier","src":"5707:3:75"},"nativeSrc":"5707:18:75","nodeType":"YulFunctionCall","src":"5707:18:75"},{"name":"value1","nativeSrc":"5727:6:75","nodeType":"YulIdentifier","src":"5727:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5700:6:75","nodeType":"YulIdentifier","src":"5700:6:75"},"nativeSrc":"5700:34:75","nodeType":"YulFunctionCall","src":"5700:34:75"},"nativeSrc":"5700:34:75","nodeType":"YulExpressionStatement","src":"5700:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5754:9:75","nodeType":"YulIdentifier","src":"5754:9:75"},{"kind":"number","nativeSrc":"5765:2:75","nodeType":"YulLiteral","src":"5765:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5750:3:75","nodeType":"YulIdentifier","src":"5750:3:75"},"nativeSrc":"5750:18:75","nodeType":"YulFunctionCall","src":"5750:18:75"},{"arguments":[{"name":"value2","nativeSrc":"5774:6:75","nodeType":"YulIdentifier","src":"5774:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5790:3:75","nodeType":"YulLiteral","src":"5790:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"5795:1:75","nodeType":"YulLiteral","src":"5795:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5786:3:75","nodeType":"YulIdentifier","src":"5786:3:75"},"nativeSrc":"5786:11:75","nodeType":"YulFunctionCall","src":"5786:11:75"},{"kind":"number","nativeSrc":"5799:1:75","nodeType":"YulLiteral","src":"5799:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5782:3:75","nodeType":"YulIdentifier","src":"5782:3:75"},"nativeSrc":"5782:19:75","nodeType":"YulFunctionCall","src":"5782:19:75"}],"functionName":{"name":"and","nativeSrc":"5770:3:75","nodeType":"YulIdentifier","src":"5770:3:75"},"nativeSrc":"5770:32:75","nodeType":"YulFunctionCall","src":"5770:32:75"}],"functionName":{"name":"mstore","nativeSrc":"5743:6:75","nodeType":"YulIdentifier","src":"5743:6:75"},"nativeSrc":"5743:60:75","nodeType":"YulFunctionCall","src":"5743:60:75"},"nativeSrc":"5743:60:75","nodeType":"YulExpressionStatement","src":"5743:60:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"5438:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5548:9:75","nodeType":"YulTypedName","src":"5548:9:75","type":""},{"name":"value2","nativeSrc":"5559:6:75","nodeType":"YulTypedName","src":"5559:6:75","type":""},{"name":"value1","nativeSrc":"5567:6:75","nodeType":"YulTypedName","src":"5567:6:75","type":""},{"name":"value0","nativeSrc":"5575:6:75","nodeType":"YulTypedName","src":"5575:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5586:4:75","nodeType":"YulTypedName","src":"5586:4:75","type":""}],"src":"5438:371:75"},{"body":{"nativeSrc":"5895:149:75","nodeType":"YulBlock","src":"5895:149:75","statements":[{"body":{"nativeSrc":"5941:16:75","nodeType":"YulBlock","src":"5941:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5950:1:75","nodeType":"YulLiteral","src":"5950:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5953:1:75","nodeType":"YulLiteral","src":"5953:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5943:6:75","nodeType":"YulIdentifier","src":"5943:6:75"},"nativeSrc":"5943:12:75","nodeType":"YulFunctionCall","src":"5943:12:75"},"nativeSrc":"5943:12:75","nodeType":"YulExpressionStatement","src":"5943:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5916:7:75","nodeType":"YulIdentifier","src":"5916:7:75"},{"name":"headStart","nativeSrc":"5925:9:75","nodeType":"YulIdentifier","src":"5925:9:75"}],"functionName":{"name":"sub","nativeSrc":"5912:3:75","nodeType":"YulIdentifier","src":"5912:3:75"},"nativeSrc":"5912:23:75","nodeType":"YulFunctionCall","src":"5912:23:75"},{"kind":"number","nativeSrc":"5937:2:75","nodeType":"YulLiteral","src":"5937:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5908:3:75","nodeType":"YulIdentifier","src":"5908:3:75"},"nativeSrc":"5908:32:75","nodeType":"YulFunctionCall","src":"5908:32:75"},"nativeSrc":"5905:52:75","nodeType":"YulIf","src":"5905:52:75"},{"nativeSrc":"5966:14:75","nodeType":"YulVariableDeclaration","src":"5966:14:75","value":{"kind":"number","nativeSrc":"5979:1:75","nodeType":"YulLiteral","src":"5979:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5970:5:75","nodeType":"YulTypedName","src":"5970:5:75","type":""}]},{"nativeSrc":"5989:25:75","nodeType":"YulAssignment","src":"5989:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6004:9:75","nodeType":"YulIdentifier","src":"6004:9:75"}],"functionName":{"name":"mload","nativeSrc":"5998:5:75","nodeType":"YulIdentifier","src":"5998:5:75"},"nativeSrc":"5998:16:75","nodeType":"YulFunctionCall","src":"5998:16:75"},"variableNames":[{"name":"value","nativeSrc":"5989:5:75","nodeType":"YulIdentifier","src":"5989:5:75"}]},{"nativeSrc":"6023:15:75","nodeType":"YulAssignment","src":"6023:15:75","value":{"name":"value","nativeSrc":"6033:5:75","nodeType":"YulIdentifier","src":"6033:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6023:6:75","nodeType":"YulIdentifier","src":"6023:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"5814:230:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5861:9:75","nodeType":"YulTypedName","src":"5861:9:75","type":""},{"name":"dataEnd","nativeSrc":"5872:7:75","nodeType":"YulTypedName","src":"5872:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5884:6:75","nodeType":"YulTypedName","src":"5884:6:75","type":""}],"src":"5814:230:75"},{"body":{"nativeSrc":"6112:420:75","nodeType":"YulBlock","src":"6112:420:75","statements":[{"body":{"nativeSrc":"6161:16:75","nodeType":"YulBlock","src":"6161:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6170:1:75","nodeType":"YulLiteral","src":"6170:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6173:1:75","nodeType":"YulLiteral","src":"6173:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6163:6:75","nodeType":"YulIdentifier","src":"6163:6:75"},"nativeSrc":"6163:12:75","nodeType":"YulFunctionCall","src":"6163:12:75"},"nativeSrc":"6163:12:75","nodeType":"YulExpressionStatement","src":"6163:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6140:6:75","nodeType":"YulIdentifier","src":"6140:6:75"},{"kind":"number","nativeSrc":"6148:4:75","nodeType":"YulLiteral","src":"6148:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"6136:3:75","nodeType":"YulIdentifier","src":"6136:3:75"},"nativeSrc":"6136:17:75","nodeType":"YulFunctionCall","src":"6136:17:75"},{"name":"end","nativeSrc":"6155:3:75","nodeType":"YulIdentifier","src":"6155:3:75"}],"functionName":{"name":"slt","nativeSrc":"6132:3:75","nodeType":"YulIdentifier","src":"6132:3:75"},"nativeSrc":"6132:27:75","nodeType":"YulFunctionCall","src":"6132:27:75"}],"functionName":{"name":"iszero","nativeSrc":"6125:6:75","nodeType":"YulIdentifier","src":"6125:6:75"},"nativeSrc":"6125:35:75","nodeType":"YulFunctionCall","src":"6125:35:75"},"nativeSrc":"6122:55:75","nodeType":"YulIf","src":"6122:55:75"},{"nativeSrc":"6186:27:75","nodeType":"YulVariableDeclaration","src":"6186:27:75","value":{"arguments":[{"name":"offset","nativeSrc":"6206:6:75","nodeType":"YulIdentifier","src":"6206:6:75"}],"functionName":{"name":"mload","nativeSrc":"6200:5:75","nodeType":"YulIdentifier","src":"6200:5:75"},"nativeSrc":"6200:13:75","nodeType":"YulFunctionCall","src":"6200:13:75"},"variables":[{"name":"length","nativeSrc":"6190:6:75","nodeType":"YulTypedName","src":"6190:6:75","type":""}]},{"nativeSrc":"6222:67:75","nodeType":"YulVariableDeclaration","src":"6222:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"6281:6:75","nodeType":"YulIdentifier","src":"6281:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"6253:27:75","nodeType":"YulIdentifier","src":"6253:27:75"},"nativeSrc":"6253:35:75","nodeType":"YulFunctionCall","src":"6253:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"6237:15:75","nodeType":"YulIdentifier","src":"6237:15:75"},"nativeSrc":"6237:52:75","nodeType":"YulFunctionCall","src":"6237:52:75"},"variables":[{"name":"array_1","nativeSrc":"6226:7:75","nodeType":"YulTypedName","src":"6226:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"6305:7:75","nodeType":"YulIdentifier","src":"6305:7:75"},{"name":"length","nativeSrc":"6314:6:75","nodeType":"YulIdentifier","src":"6314:6:75"}],"functionName":{"name":"mstore","nativeSrc":"6298:6:75","nodeType":"YulIdentifier","src":"6298:6:75"},"nativeSrc":"6298:23:75","nodeType":"YulFunctionCall","src":"6298:23:75"},"nativeSrc":"6298:23:75","nodeType":"YulExpressionStatement","src":"6298:23:75"},{"body":{"nativeSrc":"6373:16:75","nodeType":"YulBlock","src":"6373:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6382:1:75","nodeType":"YulLiteral","src":"6382:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6385:1:75","nodeType":"YulLiteral","src":"6385:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6375:6:75","nodeType":"YulIdentifier","src":"6375:6:75"},"nativeSrc":"6375:12:75","nodeType":"YulFunctionCall","src":"6375:12:75"},"nativeSrc":"6375:12:75","nodeType":"YulExpressionStatement","src":"6375:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"6344:6:75","nodeType":"YulIdentifier","src":"6344:6:75"},{"name":"length","nativeSrc":"6352:6:75","nodeType":"YulIdentifier","src":"6352:6:75"}],"functionName":{"name":"add","nativeSrc":"6340:3:75","nodeType":"YulIdentifier","src":"6340:3:75"},"nativeSrc":"6340:19:75","nodeType":"YulFunctionCall","src":"6340:19:75"},{"kind":"number","nativeSrc":"6361:4:75","nodeType":"YulLiteral","src":"6361:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6336:3:75","nodeType":"YulIdentifier","src":"6336:3:75"},"nativeSrc":"6336:30:75","nodeType":"YulFunctionCall","src":"6336:30:75"},{"name":"end","nativeSrc":"6368:3:75","nodeType":"YulIdentifier","src":"6368:3:75"}],"functionName":{"name":"gt","nativeSrc":"6333:2:75","nodeType":"YulIdentifier","src":"6333:2:75"},"nativeSrc":"6333:39:75","nodeType":"YulFunctionCall","src":"6333:39:75"},"nativeSrc":"6330:59:75","nodeType":"YulIf","src":"6330:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6408:7:75","nodeType":"YulIdentifier","src":"6408:7:75"},{"kind":"number","nativeSrc":"6417:4:75","nodeType":"YulLiteral","src":"6417:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6404:3:75","nodeType":"YulIdentifier","src":"6404:3:75"},"nativeSrc":"6404:18:75","nodeType":"YulFunctionCall","src":"6404:18:75"},{"arguments":[{"name":"offset","nativeSrc":"6428:6:75","nodeType":"YulIdentifier","src":"6428:6:75"},{"kind":"number","nativeSrc":"6436:4:75","nodeType":"YulLiteral","src":"6436:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6424:3:75","nodeType":"YulIdentifier","src":"6424:3:75"},"nativeSrc":"6424:17:75","nodeType":"YulFunctionCall","src":"6424:17:75"},{"name":"length","nativeSrc":"6443:6:75","nodeType":"YulIdentifier","src":"6443:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"6398:5:75","nodeType":"YulIdentifier","src":"6398:5:75"},"nativeSrc":"6398:52:75","nodeType":"YulFunctionCall","src":"6398:52:75"},"nativeSrc":"6398:52:75","nodeType":"YulExpressionStatement","src":"6398:52:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"6474:7:75","nodeType":"YulIdentifier","src":"6474:7:75"},{"name":"length","nativeSrc":"6483:6:75","nodeType":"YulIdentifier","src":"6483:6:75"}],"functionName":{"name":"add","nativeSrc":"6470:3:75","nodeType":"YulIdentifier","src":"6470:3:75"},"nativeSrc":"6470:20:75","nodeType":"YulFunctionCall","src":"6470:20:75"},{"kind":"number","nativeSrc":"6492:4:75","nodeType":"YulLiteral","src":"6492:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6466:3:75","nodeType":"YulIdentifier","src":"6466:3:75"},"nativeSrc":"6466:31:75","nodeType":"YulFunctionCall","src":"6466:31:75"},{"kind":"number","nativeSrc":"6499:1:75","nodeType":"YulLiteral","src":"6499:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6459:6:75","nodeType":"YulIdentifier","src":"6459:6:75"},"nativeSrc":"6459:42:75","nodeType":"YulFunctionCall","src":"6459:42:75"},"nativeSrc":"6459:42:75","nodeType":"YulExpressionStatement","src":"6459:42:75"},{"nativeSrc":"6510:16:75","nodeType":"YulAssignment","src":"6510:16:75","value":{"name":"array_1","nativeSrc":"6519:7:75","nodeType":"YulIdentifier","src":"6519:7:75"},"variableNames":[{"name":"array","nativeSrc":"6510:5:75","nodeType":"YulIdentifier","src":"6510:5:75"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"6049:483:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6086:6:75","nodeType":"YulTypedName","src":"6086:6:75","type":""},{"name":"end","nativeSrc":"6094:3:75","nodeType":"YulTypedName","src":"6094:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"6102:5:75","nodeType":"YulTypedName","src":"6102:5:75","type":""}],"src":"6049:483:75"},{"body":{"nativeSrc":"6627:245:75","nodeType":"YulBlock","src":"6627:245:75","statements":[{"body":{"nativeSrc":"6673:16:75","nodeType":"YulBlock","src":"6673:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6682:1:75","nodeType":"YulLiteral","src":"6682:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6685:1:75","nodeType":"YulLiteral","src":"6685:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6675:6:75","nodeType":"YulIdentifier","src":"6675:6:75"},"nativeSrc":"6675:12:75","nodeType":"YulFunctionCall","src":"6675:12:75"},"nativeSrc":"6675:12:75","nodeType":"YulExpressionStatement","src":"6675:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6648:7:75","nodeType":"YulIdentifier","src":"6648:7:75"},{"name":"headStart","nativeSrc":"6657:9:75","nodeType":"YulIdentifier","src":"6657:9:75"}],"functionName":{"name":"sub","nativeSrc":"6644:3:75","nodeType":"YulIdentifier","src":"6644:3:75"},"nativeSrc":"6644:23:75","nodeType":"YulFunctionCall","src":"6644:23:75"},{"kind":"number","nativeSrc":"6669:2:75","nodeType":"YulLiteral","src":"6669:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6640:3:75","nodeType":"YulIdentifier","src":"6640:3:75"},"nativeSrc":"6640:32:75","nodeType":"YulFunctionCall","src":"6640:32:75"},"nativeSrc":"6637:52:75","nodeType":"YulIf","src":"6637:52:75"},{"nativeSrc":"6698:30:75","nodeType":"YulVariableDeclaration","src":"6698:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6718:9:75","nodeType":"YulIdentifier","src":"6718:9:75"}],"functionName":{"name":"mload","nativeSrc":"6712:5:75","nodeType":"YulIdentifier","src":"6712:5:75"},"nativeSrc":"6712:16:75","nodeType":"YulFunctionCall","src":"6712:16:75"},"variables":[{"name":"offset","nativeSrc":"6702:6:75","nodeType":"YulTypedName","src":"6702:6:75","type":""}]},{"body":{"nativeSrc":"6771:16:75","nodeType":"YulBlock","src":"6771:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6780:1:75","nodeType":"YulLiteral","src":"6780:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6783:1:75","nodeType":"YulLiteral","src":"6783:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6773:6:75","nodeType":"YulIdentifier","src":"6773:6:75"},"nativeSrc":"6773:12:75","nodeType":"YulFunctionCall","src":"6773:12:75"},"nativeSrc":"6773:12:75","nodeType":"YulExpressionStatement","src":"6773:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6743:6:75","nodeType":"YulIdentifier","src":"6743:6:75"},{"kind":"number","nativeSrc":"6751:18:75","nodeType":"YulLiteral","src":"6751:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6740:2:75","nodeType":"YulIdentifier","src":"6740:2:75"},"nativeSrc":"6740:30:75","nodeType":"YulFunctionCall","src":"6740:30:75"},"nativeSrc":"6737:50:75","nodeType":"YulIf","src":"6737:50:75"},{"nativeSrc":"6796:70:75","nodeType":"YulAssignment","src":"6796:70:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6838:9:75","nodeType":"YulIdentifier","src":"6838:9:75"},{"name":"offset","nativeSrc":"6849:6:75","nodeType":"YulIdentifier","src":"6849:6:75"}],"functionName":{"name":"add","nativeSrc":"6834:3:75","nodeType":"YulIdentifier","src":"6834:3:75"},"nativeSrc":"6834:22:75","nodeType":"YulFunctionCall","src":"6834:22:75"},{"name":"dataEnd","nativeSrc":"6858:7:75","nodeType":"YulIdentifier","src":"6858:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"6806:27:75","nodeType":"YulIdentifier","src":"6806:27:75"},"nativeSrc":"6806:60:75","nodeType":"YulFunctionCall","src":"6806:60:75"},"variableNames":[{"name":"value0","nativeSrc":"6796:6:75","nodeType":"YulIdentifier","src":"6796:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"6537:335:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6593:9:75","nodeType":"YulTypedName","src":"6593:9:75","type":""},{"name":"dataEnd","nativeSrc":"6604:7:75","nodeType":"YulTypedName","src":"6604:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6616:6:75","nodeType":"YulTypedName","src":"6616:6:75","type":""}],"src":"6537:335:75"},{"body":{"nativeSrc":"6985:741:75","nodeType":"YulBlock","src":"6985:741:75","statements":[{"body":{"nativeSrc":"7031:16:75","nodeType":"YulBlock","src":"7031:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7040:1:75","nodeType":"YulLiteral","src":"7040:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7043:1:75","nodeType":"YulLiteral","src":"7043:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7033:6:75","nodeType":"YulIdentifier","src":"7033:6:75"},"nativeSrc":"7033:12:75","nodeType":"YulFunctionCall","src":"7033:12:75"},"nativeSrc":"7033:12:75","nodeType":"YulExpressionStatement","src":"7033:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7006:7:75","nodeType":"YulIdentifier","src":"7006:7:75"},{"name":"headStart","nativeSrc":"7015:9:75","nodeType":"YulIdentifier","src":"7015:9:75"}],"functionName":{"name":"sub","nativeSrc":"7002:3:75","nodeType":"YulIdentifier","src":"7002:3:75"},"nativeSrc":"7002:23:75","nodeType":"YulFunctionCall","src":"7002:23:75"},{"kind":"number","nativeSrc":"7027:2:75","nodeType":"YulLiteral","src":"7027:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6998:3:75","nodeType":"YulIdentifier","src":"6998:3:75"},"nativeSrc":"6998:32:75","nodeType":"YulFunctionCall","src":"6998:32:75"},"nativeSrc":"6995:52:75","nodeType":"YulIf","src":"6995:52:75"},{"nativeSrc":"7056:30:75","nodeType":"YulVariableDeclaration","src":"7056:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7076:9:75","nodeType":"YulIdentifier","src":"7076:9:75"}],"functionName":{"name":"mload","nativeSrc":"7070:5:75","nodeType":"YulIdentifier","src":"7070:5:75"},"nativeSrc":"7070:16:75","nodeType":"YulFunctionCall","src":"7070:16:75"},"variables":[{"name":"offset","nativeSrc":"7060:6:75","nodeType":"YulTypedName","src":"7060:6:75","type":""}]},{"body":{"nativeSrc":"7129:16:75","nodeType":"YulBlock","src":"7129:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7138:1:75","nodeType":"YulLiteral","src":"7138:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7141:1:75","nodeType":"YulLiteral","src":"7141:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7131:6:75","nodeType":"YulIdentifier","src":"7131:6:75"},"nativeSrc":"7131:12:75","nodeType":"YulFunctionCall","src":"7131:12:75"},"nativeSrc":"7131:12:75","nodeType":"YulExpressionStatement","src":"7131:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7101:6:75","nodeType":"YulIdentifier","src":"7101:6:75"},{"kind":"number","nativeSrc":"7109:18:75","nodeType":"YulLiteral","src":"7109:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7098:2:75","nodeType":"YulIdentifier","src":"7098:2:75"},"nativeSrc":"7098:30:75","nodeType":"YulFunctionCall","src":"7098:30:75"},"nativeSrc":"7095:50:75","nodeType":"YulIf","src":"7095:50:75"},{"nativeSrc":"7154:32:75","nodeType":"YulVariableDeclaration","src":"7154:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7168:9:75","nodeType":"YulIdentifier","src":"7168:9:75"},{"name":"offset","nativeSrc":"7179:6:75","nodeType":"YulIdentifier","src":"7179:6:75"}],"functionName":{"name":"add","nativeSrc":"7164:3:75","nodeType":"YulIdentifier","src":"7164:3:75"},"nativeSrc":"7164:22:75","nodeType":"YulFunctionCall","src":"7164:22:75"},"variables":[{"name":"_1","nativeSrc":"7158:2:75","nodeType":"YulTypedName","src":"7158:2:75","type":""}]},{"body":{"nativeSrc":"7226:16:75","nodeType":"YulBlock","src":"7226:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7235:1:75","nodeType":"YulLiteral","src":"7235:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7238:1:75","nodeType":"YulLiteral","src":"7238:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7228:6:75","nodeType":"YulIdentifier","src":"7228:6:75"},"nativeSrc":"7228:12:75","nodeType":"YulFunctionCall","src":"7228:12:75"},"nativeSrc":"7228:12:75","nodeType":"YulExpressionStatement","src":"7228:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7206:7:75","nodeType":"YulIdentifier","src":"7206:7:75"},{"name":"_1","nativeSrc":"7215:2:75","nodeType":"YulIdentifier","src":"7215:2:75"}],"functionName":{"name":"sub","nativeSrc":"7202:3:75","nodeType":"YulIdentifier","src":"7202:3:75"},"nativeSrc":"7202:16:75","nodeType":"YulFunctionCall","src":"7202:16:75"},{"kind":"number","nativeSrc":"7220:4:75","nodeType":"YulLiteral","src":"7220:4:75","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"7198:3:75","nodeType":"YulIdentifier","src":"7198:3:75"},"nativeSrc":"7198:27:75","nodeType":"YulFunctionCall","src":"7198:27:75"},"nativeSrc":"7195:47:75","nodeType":"YulIf","src":"7195:47:75"},{"nativeSrc":"7251:35:75","nodeType":"YulVariableDeclaration","src":"7251:35:75","value":{"arguments":[],"functionName":{"name":"allocate_memory_2005","nativeSrc":"7264:20:75","nodeType":"YulIdentifier","src":"7264:20:75"},"nativeSrc":"7264:22:75","nodeType":"YulFunctionCall","src":"7264:22:75"},"variables":[{"name":"value","nativeSrc":"7255:5:75","nodeType":"YulTypedName","src":"7255:5:75","type":""}]},{"nativeSrc":"7295:24:75","nodeType":"YulVariableDeclaration","src":"7295:24:75","value":{"arguments":[{"name":"_1","nativeSrc":"7316:2:75","nodeType":"YulIdentifier","src":"7316:2:75"}],"functionName":{"name":"mload","nativeSrc":"7310:5:75","nodeType":"YulIdentifier","src":"7310:5:75"},"nativeSrc":"7310:9:75","nodeType":"YulFunctionCall","src":"7310:9:75"},"variables":[{"name":"value_1","nativeSrc":"7299:7:75","nodeType":"YulTypedName","src":"7299:7:75","type":""}]},{"body":{"nativeSrc":"7354:16:75","nodeType":"YulBlock","src":"7354:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7363:1:75","nodeType":"YulLiteral","src":"7363:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7366:1:75","nodeType":"YulLiteral","src":"7366:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7356:6:75","nodeType":"YulIdentifier","src":"7356:6:75"},"nativeSrc":"7356:12:75","nodeType":"YulFunctionCall","src":"7356:12:75"},"nativeSrc":"7356:12:75","nodeType":"YulExpressionStatement","src":"7356:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"7341:7:75","nodeType":"YulIdentifier","src":"7341:7:75"},{"kind":"number","nativeSrc":"7350:1:75","nodeType":"YulLiteral","src":"7350:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"7338:2:75","nodeType":"YulIdentifier","src":"7338:2:75"},"nativeSrc":"7338:14:75","nodeType":"YulFunctionCall","src":"7338:14:75"}],"functionName":{"name":"iszero","nativeSrc":"7331:6:75","nodeType":"YulIdentifier","src":"7331:6:75"},"nativeSrc":"7331:22:75","nodeType":"YulFunctionCall","src":"7331:22:75"},"nativeSrc":"7328:42:75","nodeType":"YulIf","src":"7328:42:75"},{"expression":{"arguments":[{"name":"value","nativeSrc":"7386:5:75","nodeType":"YulIdentifier","src":"7386:5:75"},{"name":"value_1","nativeSrc":"7393:7:75","nodeType":"YulIdentifier","src":"7393:7:75"}],"functionName":{"name":"mstore","nativeSrc":"7379:6:75","nodeType":"YulIdentifier","src":"7379:6:75"},"nativeSrc":"7379:22:75","nodeType":"YulFunctionCall","src":"7379:22:75"},"nativeSrc":"7379:22:75","nodeType":"YulExpressionStatement","src":"7379:22:75"},{"nativeSrc":"7410:16:75","nodeType":"YulVariableDeclaration","src":"7410:16:75","value":{"kind":"number","nativeSrc":"7425:1:75","nodeType":"YulLiteral","src":"7425:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"7414:7:75","nodeType":"YulTypedName","src":"7414:7:75","type":""}]},{"nativeSrc":"7435:29:75","nodeType":"YulAssignment","src":"7435:29:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7456:2:75","nodeType":"YulIdentifier","src":"7456:2:75"},{"kind":"number","nativeSrc":"7460:2:75","nodeType":"YulLiteral","src":"7460:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7452:3:75","nodeType":"YulIdentifier","src":"7452:3:75"},"nativeSrc":"7452:11:75","nodeType":"YulFunctionCall","src":"7452:11:75"}],"functionName":{"name":"mload","nativeSrc":"7446:5:75","nodeType":"YulIdentifier","src":"7446:5:75"},"nativeSrc":"7446:18:75","nodeType":"YulFunctionCall","src":"7446:18:75"},"variableNames":[{"name":"value_2","nativeSrc":"7435:7:75","nodeType":"YulIdentifier","src":"7435:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7484:5:75","nodeType":"YulIdentifier","src":"7484:5:75"},{"kind":"number","nativeSrc":"7491:2:75","nodeType":"YulLiteral","src":"7491:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7480:3:75","nodeType":"YulIdentifier","src":"7480:3:75"},"nativeSrc":"7480:14:75","nodeType":"YulFunctionCall","src":"7480:14:75"},{"name":"value_2","nativeSrc":"7496:7:75","nodeType":"YulIdentifier","src":"7496:7:75"}],"functionName":{"name":"mstore","nativeSrc":"7473:6:75","nodeType":"YulIdentifier","src":"7473:6:75"},"nativeSrc":"7473:31:75","nodeType":"YulFunctionCall","src":"7473:31:75"},"nativeSrc":"7473:31:75","nodeType":"YulExpressionStatement","src":"7473:31:75"},{"nativeSrc":"7513:34:75","nodeType":"YulVariableDeclaration","src":"7513:34:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7539:2:75","nodeType":"YulIdentifier","src":"7539:2:75"},{"kind":"number","nativeSrc":"7543:2:75","nodeType":"YulLiteral","src":"7543:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7535:3:75","nodeType":"YulIdentifier","src":"7535:3:75"},"nativeSrc":"7535:11:75","nodeType":"YulFunctionCall","src":"7535:11:75"}],"functionName":{"name":"mload","nativeSrc":"7529:5:75","nodeType":"YulIdentifier","src":"7529:5:75"},"nativeSrc":"7529:18:75","nodeType":"YulFunctionCall","src":"7529:18:75"},"variables":[{"name":"offset_1","nativeSrc":"7517:8:75","nodeType":"YulTypedName","src":"7517:8:75","type":""}]},{"body":{"nativeSrc":"7592:16:75","nodeType":"YulBlock","src":"7592:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7601:1:75","nodeType":"YulLiteral","src":"7601:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7604:1:75","nodeType":"YulLiteral","src":"7604:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7594:6:75","nodeType":"YulIdentifier","src":"7594:6:75"},"nativeSrc":"7594:12:75","nodeType":"YulFunctionCall","src":"7594:12:75"},"nativeSrc":"7594:12:75","nodeType":"YulExpressionStatement","src":"7594:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"7562:8:75","nodeType":"YulIdentifier","src":"7562:8:75"},{"kind":"number","nativeSrc":"7572:18:75","nodeType":"YulLiteral","src":"7572:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7559:2:75","nodeType":"YulIdentifier","src":"7559:2:75"},"nativeSrc":"7559:32:75","nodeType":"YulFunctionCall","src":"7559:32:75"},"nativeSrc":"7556:52:75","nodeType":"YulIf","src":"7556:52:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7628:5:75","nodeType":"YulIdentifier","src":"7628:5:75"},{"kind":"number","nativeSrc":"7635:2:75","nodeType":"YulLiteral","src":"7635:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7624:3:75","nodeType":"YulIdentifier","src":"7624:3:75"},"nativeSrc":"7624:14:75","nodeType":"YulFunctionCall","src":"7624:14:75"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7672:2:75","nodeType":"YulIdentifier","src":"7672:2:75"},{"name":"offset_1","nativeSrc":"7676:8:75","nodeType":"YulIdentifier","src":"7676:8:75"}],"functionName":{"name":"add","nativeSrc":"7668:3:75","nodeType":"YulIdentifier","src":"7668:3:75"},"nativeSrc":"7668:17:75","nodeType":"YulFunctionCall","src":"7668:17:75"},{"name":"dataEnd","nativeSrc":"7687:7:75","nodeType":"YulIdentifier","src":"7687:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"7640:27:75","nodeType":"YulIdentifier","src":"7640:27:75"},"nativeSrc":"7640:55:75","nodeType":"YulFunctionCall","src":"7640:55:75"}],"functionName":{"name":"mstore","nativeSrc":"7617:6:75","nodeType":"YulIdentifier","src":"7617:6:75"},"nativeSrc":"7617:79:75","nodeType":"YulFunctionCall","src":"7617:79:75"},"nativeSrc":"7617:79:75","nodeType":"YulExpressionStatement","src":"7617:79:75"},{"nativeSrc":"7705:15:75","nodeType":"YulAssignment","src":"7705:15:75","value":{"name":"value","nativeSrc":"7715:5:75","nodeType":"YulIdentifier","src":"7715:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7705:6:75","nodeType":"YulIdentifier","src":"7705:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory","nativeSrc":"6877:849:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6951:9:75","nodeType":"YulTypedName","src":"6951:9:75","type":""},{"name":"dataEnd","nativeSrc":"6962:7:75","nodeType":"YulTypedName","src":"6962:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6974:6:75","nodeType":"YulTypedName","src":"6974:6:75","type":""}],"src":"6877:849:75"},{"body":{"nativeSrc":"7894:110:75","nodeType":"YulBlock","src":"7894:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7911:9:75","nodeType":"YulIdentifier","src":"7911:9:75"},{"kind":"number","nativeSrc":"7922:2:75","nodeType":"YulLiteral","src":"7922:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7904:6:75","nodeType":"YulIdentifier","src":"7904:6:75"},"nativeSrc":"7904:21:75","nodeType":"YulFunctionCall","src":"7904:21:75"},"nativeSrc":"7904:21:75","nodeType":"YulExpressionStatement","src":"7904:21:75"},{"nativeSrc":"7934:64:75","nodeType":"YulAssignment","src":"7934:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"7971:6:75","nodeType":"YulIdentifier","src":"7971:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"7983:9:75","nodeType":"YulIdentifier","src":"7983:9:75"},{"kind":"number","nativeSrc":"7994:2:75","nodeType":"YulLiteral","src":"7994:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7979:3:75","nodeType":"YulIdentifier","src":"7979:3:75"},"nativeSrc":"7979:18:75","nodeType":"YulFunctionCall","src":"7979:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"7942:28:75","nodeType":"YulIdentifier","src":"7942:28:75"},"nativeSrc":"7942:56:75","nodeType":"YulFunctionCall","src":"7942:56:75"},"variableNames":[{"name":"tail","nativeSrc":"7934:4:75","nodeType":"YulIdentifier","src":"7934:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed","nativeSrc":"7731:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7863:9:75","nodeType":"YulTypedName","src":"7863:9:75","type":""},{"name":"value0","nativeSrc":"7874:6:75","nodeType":"YulTypedName","src":"7874:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7885:4:75","nodeType":"YulTypedName","src":"7885:4:75","type":""}],"src":"7731:273:75"},{"body":{"nativeSrc":"8246:236:75","nodeType":"YulBlock","src":"8246:236:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8263:9:75","nodeType":"YulIdentifier","src":"8263:9:75"},{"kind":"number","nativeSrc":"8274:2:75","nodeType":"YulLiteral","src":"8274:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8256:6:75","nodeType":"YulIdentifier","src":"8256:6:75"},"nativeSrc":"8256:21:75","nodeType":"YulFunctionCall","src":"8256:21:75"},"nativeSrc":"8256:21:75","nodeType":"YulExpressionStatement","src":"8256:21:75"},{"nativeSrc":"8286:70:75","nodeType":"YulVariableDeclaration","src":"8286:70:75","value":{"arguments":[{"name":"value0","nativeSrc":"8329:6:75","nodeType":"YulIdentifier","src":"8329:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"8341:9:75","nodeType":"YulIdentifier","src":"8341:9:75"},{"kind":"number","nativeSrc":"8352:2:75","nodeType":"YulLiteral","src":"8352:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8337:3:75","nodeType":"YulIdentifier","src":"8337:3:75"},"nativeSrc":"8337:18:75","nodeType":"YulFunctionCall","src":"8337:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8300:28:75","nodeType":"YulIdentifier","src":"8300:28:75"},"nativeSrc":"8300:56:75","nodeType":"YulFunctionCall","src":"8300:56:75"},"variables":[{"name":"tail_1","nativeSrc":"8290:6:75","nodeType":"YulTypedName","src":"8290:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8376:9:75","nodeType":"YulIdentifier","src":"8376:9:75"},{"kind":"number","nativeSrc":"8387:2:75","nodeType":"YulLiteral","src":"8387:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8372:3:75","nodeType":"YulIdentifier","src":"8372:3:75"},"nativeSrc":"8372:18:75","nodeType":"YulFunctionCall","src":"8372:18:75"},{"arguments":[{"name":"tail_1","nativeSrc":"8396:6:75","nodeType":"YulIdentifier","src":"8396:6:75"},{"name":"headStart","nativeSrc":"8404:9:75","nodeType":"YulIdentifier","src":"8404:9:75"}],"functionName":{"name":"sub","nativeSrc":"8392:3:75","nodeType":"YulIdentifier","src":"8392:3:75"},"nativeSrc":"8392:22:75","nodeType":"YulFunctionCall","src":"8392:22:75"}],"functionName":{"name":"mstore","nativeSrc":"8365:6:75","nodeType":"YulIdentifier","src":"8365:6:75"},"nativeSrc":"8365:50:75","nodeType":"YulFunctionCall","src":"8365:50:75"},"nativeSrc":"8365:50:75","nodeType":"YulExpressionStatement","src":"8365:50:75"},{"nativeSrc":"8424:52:75","nodeType":"YulAssignment","src":"8424:52:75","value":{"arguments":[{"name":"value1","nativeSrc":"8461:6:75","nodeType":"YulIdentifier","src":"8461:6:75"},{"name":"tail_1","nativeSrc":"8469:6:75","nodeType":"YulIdentifier","src":"8469:6:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8432:28:75","nodeType":"YulIdentifier","src":"8432:28:75"},"nativeSrc":"8432:44:75","nodeType":"YulFunctionCall","src":"8432:44:75"},"variableNames":[{"name":"tail","nativeSrc":"8424:4:75","nodeType":"YulIdentifier","src":"8424:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"8009:473:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8207:9:75","nodeType":"YulTypedName","src":"8207:9:75","type":""},{"name":"value1","nativeSrc":"8218:6:75","nodeType":"YulTypedName","src":"8218:6:75","type":""},{"name":"value0","nativeSrc":"8226:6:75","nodeType":"YulTypedName","src":"8226:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8237:4:75","nodeType":"YulTypedName","src":"8237:4:75","type":""}],"src":"8009:473:75"},{"body":{"nativeSrc":"8542:325:75","nodeType":"YulBlock","src":"8542:325:75","statements":[{"nativeSrc":"8552:22:75","nodeType":"YulAssignment","src":"8552:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"8566:1:75","nodeType":"YulLiteral","src":"8566:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"8569:4:75","nodeType":"YulIdentifier","src":"8569:4:75"}],"functionName":{"name":"shr","nativeSrc":"8562:3:75","nodeType":"YulIdentifier","src":"8562:3:75"},"nativeSrc":"8562:12:75","nodeType":"YulFunctionCall","src":"8562:12:75"},"variableNames":[{"name":"length","nativeSrc":"8552:6:75","nodeType":"YulIdentifier","src":"8552:6:75"}]},{"nativeSrc":"8583:38:75","nodeType":"YulVariableDeclaration","src":"8583:38:75","value":{"arguments":[{"name":"data","nativeSrc":"8613:4:75","nodeType":"YulIdentifier","src":"8613:4:75"},{"kind":"number","nativeSrc":"8619:1:75","nodeType":"YulLiteral","src":"8619:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8609:3:75","nodeType":"YulIdentifier","src":"8609:3:75"},"nativeSrc":"8609:12:75","nodeType":"YulFunctionCall","src":"8609:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8587:18:75","nodeType":"YulTypedName","src":"8587:18:75","type":""}]},{"body":{"nativeSrc":"8660:31:75","nodeType":"YulBlock","src":"8660:31:75","statements":[{"nativeSrc":"8662:27:75","nodeType":"YulAssignment","src":"8662:27:75","value":{"arguments":[{"name":"length","nativeSrc":"8676:6:75","nodeType":"YulIdentifier","src":"8676:6:75"},{"kind":"number","nativeSrc":"8684:4:75","nodeType":"YulLiteral","src":"8684:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8672:3:75","nodeType":"YulIdentifier","src":"8672:3:75"},"nativeSrc":"8672:17:75","nodeType":"YulFunctionCall","src":"8672:17:75"},"variableNames":[{"name":"length","nativeSrc":"8662:6:75","nodeType":"YulIdentifier","src":"8662:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8640:18:75","nodeType":"YulIdentifier","src":"8640:18:75"}],"functionName":{"name":"iszero","nativeSrc":"8633:6:75","nodeType":"YulIdentifier","src":"8633:6:75"},"nativeSrc":"8633:26:75","nodeType":"YulFunctionCall","src":"8633:26:75"},"nativeSrc":"8630:61:75","nodeType":"YulIf","src":"8630:61:75"},{"body":{"nativeSrc":"8750:111:75","nodeType":"YulBlock","src":"8750:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8771:1:75","nodeType":"YulLiteral","src":"8771:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8778:3:75","nodeType":"YulLiteral","src":"8778:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"8783:10:75","nodeType":"YulLiteral","src":"8783:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8774:3:75","nodeType":"YulIdentifier","src":"8774:3:75"},"nativeSrc":"8774:20:75","nodeType":"YulFunctionCall","src":"8774:20:75"}],"functionName":{"name":"mstore","nativeSrc":"8764:6:75","nodeType":"YulIdentifier","src":"8764:6:75"},"nativeSrc":"8764:31:75","nodeType":"YulFunctionCall","src":"8764:31:75"},"nativeSrc":"8764:31:75","nodeType":"YulExpressionStatement","src":"8764:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8815:1:75","nodeType":"YulLiteral","src":"8815:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"8818:4:75","nodeType":"YulLiteral","src":"8818:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8808:6:75","nodeType":"YulIdentifier","src":"8808:6:75"},"nativeSrc":"8808:15:75","nodeType":"YulFunctionCall","src":"8808:15:75"},"nativeSrc":"8808:15:75","nodeType":"YulExpressionStatement","src":"8808:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8843:1:75","nodeType":"YulLiteral","src":"8843:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8846:4:75","nodeType":"YulLiteral","src":"8846:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8836:6:75","nodeType":"YulIdentifier","src":"8836:6:75"},"nativeSrc":"8836:15:75","nodeType":"YulFunctionCall","src":"8836:15:75"},"nativeSrc":"8836:15:75","nodeType":"YulExpressionStatement","src":"8836:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8706:18:75","nodeType":"YulIdentifier","src":"8706:18:75"},{"arguments":[{"name":"length","nativeSrc":"8729:6:75","nodeType":"YulIdentifier","src":"8729:6:75"},{"kind":"number","nativeSrc":"8737:2:75","nodeType":"YulLiteral","src":"8737:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8726:2:75","nodeType":"YulIdentifier","src":"8726:2:75"},"nativeSrc":"8726:14:75","nodeType":"YulFunctionCall","src":"8726:14:75"}],"functionName":{"name":"eq","nativeSrc":"8703:2:75","nodeType":"YulIdentifier","src":"8703:2:75"},"nativeSrc":"8703:38:75","nodeType":"YulFunctionCall","src":"8703:38:75"},"nativeSrc":"8700:161:75","nodeType":"YulIf","src":"8700:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"8487:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8522:4:75","nodeType":"YulTypedName","src":"8522:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8531:6:75","nodeType":"YulTypedName","src":"8531:6:75","type":""}],"src":"8487:380:75"},{"body":{"nativeSrc":"8927:65:75","nodeType":"YulBlock","src":"8927:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8944:1:75","nodeType":"YulLiteral","src":"8944:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"8947:3:75","nodeType":"YulIdentifier","src":"8947:3:75"}],"functionName":{"name":"mstore","nativeSrc":"8937:6:75","nodeType":"YulIdentifier","src":"8937:6:75"},"nativeSrc":"8937:14:75","nodeType":"YulFunctionCall","src":"8937:14:75"},"nativeSrc":"8937:14:75","nodeType":"YulExpressionStatement","src":"8937:14:75"},{"nativeSrc":"8960:26:75","nodeType":"YulAssignment","src":"8960:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"8978:1:75","nodeType":"YulLiteral","src":"8978:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8981:4:75","nodeType":"YulLiteral","src":"8981:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8968:9:75","nodeType":"YulIdentifier","src":"8968:9:75"},"nativeSrc":"8968:18:75","nodeType":"YulFunctionCall","src":"8968:18:75"},"variableNames":[{"name":"data","nativeSrc":"8960:4:75","nodeType":"YulIdentifier","src":"8960:4:75"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"8872:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8910:3:75","nodeType":"YulTypedName","src":"8910:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8918:4:75","nodeType":"YulTypedName","src":"8918:4:75","type":""}],"src":"8872:120:75"},{"body":{"nativeSrc":"9077:437:75","nodeType":"YulBlock","src":"9077:437:75","statements":[{"body":{"nativeSrc":"9110:398:75","nodeType":"YulBlock","src":"9110:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9131:1:75","nodeType":"YulLiteral","src":"9131:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"9134:5:75","nodeType":"YulIdentifier","src":"9134:5:75"}],"functionName":{"name":"mstore","nativeSrc":"9124:6:75","nodeType":"YulIdentifier","src":"9124:6:75"},"nativeSrc":"9124:16:75","nodeType":"YulFunctionCall","src":"9124:16:75"},"nativeSrc":"9124:16:75","nodeType":"YulExpressionStatement","src":"9124:16:75"},{"nativeSrc":"9153:30:75","nodeType":"YulVariableDeclaration","src":"9153:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"9175:1:75","nodeType":"YulLiteral","src":"9175:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9178:4:75","nodeType":"YulLiteral","src":"9178:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9165:9:75","nodeType":"YulIdentifier","src":"9165:9:75"},"nativeSrc":"9165:18:75","nodeType":"YulFunctionCall","src":"9165:18:75"},"variables":[{"name":"data","nativeSrc":"9157:4:75","nodeType":"YulTypedName","src":"9157:4:75","type":""}]},{"nativeSrc":"9196:57:75","nodeType":"YulVariableDeclaration","src":"9196:57:75","value":{"arguments":[{"name":"data","nativeSrc":"9219:4:75","nodeType":"YulIdentifier","src":"9219:4:75"},{"arguments":[{"kind":"number","nativeSrc":"9229:1:75","nodeType":"YulLiteral","src":"9229:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9236:10:75","nodeType":"YulIdentifier","src":"9236:10:75"},{"kind":"number","nativeSrc":"9248:2:75","nodeType":"YulLiteral","src":"9248:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9232:3:75","nodeType":"YulIdentifier","src":"9232:3:75"},"nativeSrc":"9232:19:75","nodeType":"YulFunctionCall","src":"9232:19:75"}],"functionName":{"name":"shr","nativeSrc":"9225:3:75","nodeType":"YulIdentifier","src":"9225:3:75"},"nativeSrc":"9225:27:75","nodeType":"YulFunctionCall","src":"9225:27:75"}],"functionName":{"name":"add","nativeSrc":"9215:3:75","nodeType":"YulIdentifier","src":"9215:3:75"},"nativeSrc":"9215:38:75","nodeType":"YulFunctionCall","src":"9215:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"9200:11:75","nodeType":"YulTypedName","src":"9200:11:75","type":""}]},{"body":{"nativeSrc":"9290:23:75","nodeType":"YulBlock","src":"9290:23:75","statements":[{"nativeSrc":"9292:19:75","nodeType":"YulAssignment","src":"9292:19:75","value":{"name":"data","nativeSrc":"9307:4:75","nodeType":"YulIdentifier","src":"9307:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"9292:11:75","nodeType":"YulIdentifier","src":"9292:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9272:10:75","nodeType":"YulIdentifier","src":"9272:10:75"},{"kind":"number","nativeSrc":"9284:4:75","nodeType":"YulLiteral","src":"9284:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9269:2:75","nodeType":"YulIdentifier","src":"9269:2:75"},"nativeSrc":"9269:20:75","nodeType":"YulFunctionCall","src":"9269:20:75"},"nativeSrc":"9266:47:75","nodeType":"YulIf","src":"9266:47:75"},{"nativeSrc":"9326:41:75","nodeType":"YulVariableDeclaration","src":"9326:41:75","value":{"arguments":[{"name":"data","nativeSrc":"9340:4:75","nodeType":"YulIdentifier","src":"9340:4:75"},{"arguments":[{"kind":"number","nativeSrc":"9350:1:75","nodeType":"YulLiteral","src":"9350:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9357:3:75","nodeType":"YulIdentifier","src":"9357:3:75"},{"kind":"number","nativeSrc":"9362:2:75","nodeType":"YulLiteral","src":"9362:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9353:3:75","nodeType":"YulIdentifier","src":"9353:3:75"},"nativeSrc":"9353:12:75","nodeType":"YulFunctionCall","src":"9353:12:75"}],"functionName":{"name":"shr","nativeSrc":"9346:3:75","nodeType":"YulIdentifier","src":"9346:3:75"},"nativeSrc":"9346:20:75","nodeType":"YulFunctionCall","src":"9346:20:75"}],"functionName":{"name":"add","nativeSrc":"9336:3:75","nodeType":"YulIdentifier","src":"9336:3:75"},"nativeSrc":"9336:31:75","nodeType":"YulFunctionCall","src":"9336:31:75"},"variables":[{"name":"_1","nativeSrc":"9330:2:75","nodeType":"YulTypedName","src":"9330:2:75","type":""}]},{"nativeSrc":"9380:24:75","nodeType":"YulVariableDeclaration","src":"9380:24:75","value":{"name":"deleteStart","nativeSrc":"9393:11:75","nodeType":"YulIdentifier","src":"9393:11:75"},"variables":[{"name":"start","nativeSrc":"9384:5:75","nodeType":"YulTypedName","src":"9384:5:75","type":""}]},{"body":{"nativeSrc":"9478:20:75","nodeType":"YulBlock","src":"9478:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9487:5:75","nodeType":"YulIdentifier","src":"9487:5:75"},{"kind":"number","nativeSrc":"9494:1:75","nodeType":"YulLiteral","src":"9494:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9480:6:75","nodeType":"YulIdentifier","src":"9480:6:75"},"nativeSrc":"9480:16:75","nodeType":"YulFunctionCall","src":"9480:16:75"},"nativeSrc":"9480:16:75","nodeType":"YulExpressionStatement","src":"9480:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9428:5:75","nodeType":"YulIdentifier","src":"9428:5:75"},{"name":"_1","nativeSrc":"9435:2:75","nodeType":"YulIdentifier","src":"9435:2:75"}],"functionName":{"name":"lt","nativeSrc":"9425:2:75","nodeType":"YulIdentifier","src":"9425:2:75"},"nativeSrc":"9425:13:75","nodeType":"YulFunctionCall","src":"9425:13:75"},"nativeSrc":"9417:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"9439:26:75","nodeType":"YulBlock","src":"9439:26:75","statements":[{"nativeSrc":"9441:22:75","nodeType":"YulAssignment","src":"9441:22:75","value":{"arguments":[{"name":"start","nativeSrc":"9454:5:75","nodeType":"YulIdentifier","src":"9454:5:75"},{"kind":"number","nativeSrc":"9461:1:75","nodeType":"YulLiteral","src":"9461:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9450:3:75","nodeType":"YulIdentifier","src":"9450:3:75"},"nativeSrc":"9450:13:75","nodeType":"YulFunctionCall","src":"9450:13:75"},"variableNames":[{"name":"start","nativeSrc":"9441:5:75","nodeType":"YulIdentifier","src":"9441:5:75"}]}]},"pre":{"nativeSrc":"9421:3:75","nodeType":"YulBlock","src":"9421:3:75","statements":[]},"src":"9417:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"9093:3:75","nodeType":"YulIdentifier","src":"9093:3:75"},{"kind":"number","nativeSrc":"9098:2:75","nodeType":"YulLiteral","src":"9098:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9090:2:75","nodeType":"YulIdentifier","src":"9090:2:75"},"nativeSrc":"9090:11:75","nodeType":"YulFunctionCall","src":"9090:11:75"},"nativeSrc":"9087:421:75","nodeType":"YulIf","src":"9087:421:75"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"8997:517:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"9049:5:75","nodeType":"YulTypedName","src":"9049:5:75","type":""},{"name":"len","nativeSrc":"9056:3:75","nodeType":"YulTypedName","src":"9056:3:75","type":""},{"name":"startIndex","nativeSrc":"9061:10:75","nodeType":"YulTypedName","src":"9061:10:75","type":""}],"src":"8997:517:75"},{"body":{"nativeSrc":"9604:81:75","nodeType":"YulBlock","src":"9604:81:75","statements":[{"nativeSrc":"9614:65:75","nodeType":"YulAssignment","src":"9614:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9629:4:75","nodeType":"YulIdentifier","src":"9629:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9647:1:75","nodeType":"YulLiteral","src":"9647:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"9650:3:75","nodeType":"YulIdentifier","src":"9650:3:75"}],"functionName":{"name":"shl","nativeSrc":"9643:3:75","nodeType":"YulIdentifier","src":"9643:3:75"},"nativeSrc":"9643:11:75","nodeType":"YulFunctionCall","src":"9643:11:75"},{"arguments":[{"kind":"number","nativeSrc":"9660:1:75","nodeType":"YulLiteral","src":"9660:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9656:3:75","nodeType":"YulIdentifier","src":"9656:3:75"},"nativeSrc":"9656:6:75","nodeType":"YulFunctionCall","src":"9656:6:75"}],"functionName":{"name":"shr","nativeSrc":"9639:3:75","nodeType":"YulIdentifier","src":"9639:3:75"},"nativeSrc":"9639:24:75","nodeType":"YulFunctionCall","src":"9639:24:75"}],"functionName":{"name":"not","nativeSrc":"9635:3:75","nodeType":"YulIdentifier","src":"9635:3:75"},"nativeSrc":"9635:29:75","nodeType":"YulFunctionCall","src":"9635:29:75"}],"functionName":{"name":"and","nativeSrc":"9625:3:75","nodeType":"YulIdentifier","src":"9625:3:75"},"nativeSrc":"9625:40:75","nodeType":"YulFunctionCall","src":"9625:40:75"},{"arguments":[{"kind":"number","nativeSrc":"9671:1:75","nodeType":"YulLiteral","src":"9671:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"9674:3:75","nodeType":"YulIdentifier","src":"9674:3:75"}],"functionName":{"name":"shl","nativeSrc":"9667:3:75","nodeType":"YulIdentifier","src":"9667:3:75"},"nativeSrc":"9667:11:75","nodeType":"YulFunctionCall","src":"9667:11:75"}],"functionName":{"name":"or","nativeSrc":"9622:2:75","nodeType":"YulIdentifier","src":"9622:2:75"},"nativeSrc":"9622:57:75","nodeType":"YulFunctionCall","src":"9622:57:75"},"variableNames":[{"name":"used","nativeSrc":"9614:4:75","nodeType":"YulIdentifier","src":"9614:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9519:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9581:4:75","nodeType":"YulTypedName","src":"9581:4:75","type":""},{"name":"len","nativeSrc":"9587:3:75","nodeType":"YulTypedName","src":"9587:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9595:4:75","nodeType":"YulTypedName","src":"9595:4:75","type":""}],"src":"9519:166:75"},{"body":{"nativeSrc":"9784:1201:75","nodeType":"YulBlock","src":"9784:1201:75","statements":[{"nativeSrc":"9794:24:75","nodeType":"YulVariableDeclaration","src":"9794:24:75","value":{"arguments":[{"name":"src","nativeSrc":"9814:3:75","nodeType":"YulIdentifier","src":"9814:3:75"}],"functionName":{"name":"mload","nativeSrc":"9808:5:75","nodeType":"YulIdentifier","src":"9808:5:75"},"nativeSrc":"9808:10:75","nodeType":"YulFunctionCall","src":"9808:10:75"},"variables":[{"name":"newLen","nativeSrc":"9798:6:75","nodeType":"YulTypedName","src":"9798:6:75","type":""}]},{"body":{"nativeSrc":"9861:22:75","nodeType":"YulBlock","src":"9861:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9863:16:75","nodeType":"YulIdentifier","src":"9863:16:75"},"nativeSrc":"9863:18:75","nodeType":"YulFunctionCall","src":"9863:18:75"},"nativeSrc":"9863:18:75","nodeType":"YulExpressionStatement","src":"9863:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9833:6:75","nodeType":"YulIdentifier","src":"9833:6:75"},{"kind":"number","nativeSrc":"9841:18:75","nodeType":"YulLiteral","src":"9841:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9830:2:75","nodeType":"YulIdentifier","src":"9830:2:75"},"nativeSrc":"9830:30:75","nodeType":"YulFunctionCall","src":"9830:30:75"},"nativeSrc":"9827:56:75","nodeType":"YulIf","src":"9827:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9935:4:75","nodeType":"YulIdentifier","src":"9935:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"9973:4:75","nodeType":"YulIdentifier","src":"9973:4:75"}],"functionName":{"name":"sload","nativeSrc":"9967:5:75","nodeType":"YulIdentifier","src":"9967:5:75"},"nativeSrc":"9967:11:75","nodeType":"YulFunctionCall","src":"9967:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9941:25:75","nodeType":"YulIdentifier","src":"9941:25:75"},"nativeSrc":"9941:38:75","nodeType":"YulFunctionCall","src":"9941:38:75"},{"name":"newLen","nativeSrc":"9981:6:75","nodeType":"YulIdentifier","src":"9981:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9892:42:75","nodeType":"YulIdentifier","src":"9892:42:75"},"nativeSrc":"9892:96:75","nodeType":"YulFunctionCall","src":"9892:96:75"},"nativeSrc":"9892:96:75","nodeType":"YulExpressionStatement","src":"9892:96:75"},{"nativeSrc":"9997:18:75","nodeType":"YulVariableDeclaration","src":"9997:18:75","value":{"kind":"number","nativeSrc":"10014:1:75","nodeType":"YulLiteral","src":"10014:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"10001:9:75","nodeType":"YulTypedName","src":"10001:9:75","type":""}]},{"nativeSrc":"10024:17:75","nodeType":"YulAssignment","src":"10024:17:75","value":{"kind":"number","nativeSrc":"10037:4:75","nodeType":"YulLiteral","src":"10037:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"10024:9:75","nodeType":"YulIdentifier","src":"10024:9:75"}]},{"cases":[{"body":{"nativeSrc":"10087:641:75","nodeType":"YulBlock","src":"10087:641:75","statements":[{"nativeSrc":"10101:35:75","nodeType":"YulVariableDeclaration","src":"10101:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"10120:6:75","nodeType":"YulIdentifier","src":"10120:6:75"},{"arguments":[{"kind":"number","nativeSrc":"10132:2:75","nodeType":"YulLiteral","src":"10132:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"10128:3:75","nodeType":"YulIdentifier","src":"10128:3:75"},"nativeSrc":"10128:7:75","nodeType":"YulFunctionCall","src":"10128:7:75"}],"functionName":{"name":"and","nativeSrc":"10116:3:75","nodeType":"YulIdentifier","src":"10116:3:75"},"nativeSrc":"10116:20:75","nodeType":"YulFunctionCall","src":"10116:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"10105:7:75","nodeType":"YulTypedName","src":"10105:7:75","type":""}]},{"nativeSrc":"10149:48:75","nodeType":"YulVariableDeclaration","src":"10149:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"10192:4:75","nodeType":"YulIdentifier","src":"10192:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"10163:28:75","nodeType":"YulIdentifier","src":"10163:28:75"},"nativeSrc":"10163:34:75","nodeType":"YulFunctionCall","src":"10163:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"10153:6:75","nodeType":"YulTypedName","src":"10153:6:75","type":""}]},{"nativeSrc":"10210:10:75","nodeType":"YulVariableDeclaration","src":"10210:10:75","value":{"kind":"number","nativeSrc":"10219:1:75","nodeType":"YulLiteral","src":"10219:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10214:1:75","nodeType":"YulTypedName","src":"10214:1:75","type":""}]},{"body":{"nativeSrc":"10290:165:75","nodeType":"YulBlock","src":"10290:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10315:6:75","nodeType":"YulIdentifier","src":"10315:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10333:3:75","nodeType":"YulIdentifier","src":"10333:3:75"},{"name":"srcOffset","nativeSrc":"10338:9:75","nodeType":"YulIdentifier","src":"10338:9:75"}],"functionName":{"name":"add","nativeSrc":"10329:3:75","nodeType":"YulIdentifier","src":"10329:3:75"},"nativeSrc":"10329:19:75","nodeType":"YulFunctionCall","src":"10329:19:75"}],"functionName":{"name":"mload","nativeSrc":"10323:5:75","nodeType":"YulIdentifier","src":"10323:5:75"},"nativeSrc":"10323:26:75","nodeType":"YulFunctionCall","src":"10323:26:75"}],"functionName":{"name":"sstore","nativeSrc":"10308:6:75","nodeType":"YulIdentifier","src":"10308:6:75"},"nativeSrc":"10308:42:75","nodeType":"YulFunctionCall","src":"10308:42:75"},"nativeSrc":"10308:42:75","nodeType":"YulExpressionStatement","src":"10308:42:75"},{"nativeSrc":"10367:24:75","nodeType":"YulAssignment","src":"10367:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10381:6:75","nodeType":"YulIdentifier","src":"10381:6:75"},{"kind":"number","nativeSrc":"10389:1:75","nodeType":"YulLiteral","src":"10389:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10377:3:75","nodeType":"YulIdentifier","src":"10377:3:75"},"nativeSrc":"10377:14:75","nodeType":"YulFunctionCall","src":"10377:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"10367:6:75","nodeType":"YulIdentifier","src":"10367:6:75"}]},{"nativeSrc":"10408:33:75","nodeType":"YulAssignment","src":"10408:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10425:9:75","nodeType":"YulIdentifier","src":"10425:9:75"},{"kind":"number","nativeSrc":"10436:4:75","nodeType":"YulLiteral","src":"10436:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10421:3:75","nodeType":"YulIdentifier","src":"10421:3:75"},"nativeSrc":"10421:20:75","nodeType":"YulFunctionCall","src":"10421:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"10408:9:75","nodeType":"YulIdentifier","src":"10408:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10244:1:75","nodeType":"YulIdentifier","src":"10244:1:75"},{"name":"loopEnd","nativeSrc":"10247:7:75","nodeType":"YulIdentifier","src":"10247:7:75"}],"functionName":{"name":"lt","nativeSrc":"10241:2:75","nodeType":"YulIdentifier","src":"10241:2:75"},"nativeSrc":"10241:14:75","nodeType":"YulFunctionCall","src":"10241:14:75"},"nativeSrc":"10233:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"10256:21:75","nodeType":"YulBlock","src":"10256:21:75","statements":[{"nativeSrc":"10258:17:75","nodeType":"YulAssignment","src":"10258:17:75","value":{"arguments":[{"name":"i","nativeSrc":"10267:1:75","nodeType":"YulIdentifier","src":"10267:1:75"},{"kind":"number","nativeSrc":"10270:4:75","nodeType":"YulLiteral","src":"10270:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10263:3:75","nodeType":"YulIdentifier","src":"10263:3:75"},"nativeSrc":"10263:12:75","nodeType":"YulFunctionCall","src":"10263:12:75"},"variableNames":[{"name":"i","nativeSrc":"10258:1:75","nodeType":"YulIdentifier","src":"10258:1:75"}]}]},"pre":{"nativeSrc":"10237:3:75","nodeType":"YulBlock","src":"10237:3:75","statements":[]},"src":"10233:222:75"},{"body":{"nativeSrc":"10503:166:75","nodeType":"YulBlock","src":"10503:166:75","statements":[{"nativeSrc":"10521:43:75","nodeType":"YulVariableDeclaration","src":"10521:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10548:3:75","nodeType":"YulIdentifier","src":"10548:3:75"},{"name":"srcOffset","nativeSrc":"10553:9:75","nodeType":"YulIdentifier","src":"10553:9:75"}],"functionName":{"name":"add","nativeSrc":"10544:3:75","nodeType":"YulIdentifier","src":"10544:3:75"},"nativeSrc":"10544:19:75","nodeType":"YulFunctionCall","src":"10544:19:75"}],"functionName":{"name":"mload","nativeSrc":"10538:5:75","nodeType":"YulIdentifier","src":"10538:5:75"},"nativeSrc":"10538:26:75","nodeType":"YulFunctionCall","src":"10538:26:75"},"variables":[{"name":"lastValue","nativeSrc":"10525:9:75","nodeType":"YulTypedName","src":"10525:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10588:6:75","nodeType":"YulIdentifier","src":"10588:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"10600:9:75","nodeType":"YulIdentifier","src":"10600:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10627:1:75","nodeType":"YulLiteral","src":"10627:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"10630:6:75","nodeType":"YulIdentifier","src":"10630:6:75"}],"functionName":{"name":"shl","nativeSrc":"10623:3:75","nodeType":"YulIdentifier","src":"10623:3:75"},"nativeSrc":"10623:14:75","nodeType":"YulFunctionCall","src":"10623:14:75"},{"kind":"number","nativeSrc":"10639:3:75","nodeType":"YulLiteral","src":"10639:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10619:3:75","nodeType":"YulIdentifier","src":"10619:3:75"},"nativeSrc":"10619:24:75","nodeType":"YulFunctionCall","src":"10619:24:75"},{"arguments":[{"kind":"number","nativeSrc":"10649:1:75","nodeType":"YulLiteral","src":"10649:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10645:3:75","nodeType":"YulIdentifier","src":"10645:3:75"},"nativeSrc":"10645:6:75","nodeType":"YulFunctionCall","src":"10645:6:75"}],"functionName":{"name":"shr","nativeSrc":"10615:3:75","nodeType":"YulIdentifier","src":"10615:3:75"},"nativeSrc":"10615:37:75","nodeType":"YulFunctionCall","src":"10615:37:75"}],"functionName":{"name":"not","nativeSrc":"10611:3:75","nodeType":"YulIdentifier","src":"10611:3:75"},"nativeSrc":"10611:42:75","nodeType":"YulFunctionCall","src":"10611:42:75"}],"functionName":{"name":"and","nativeSrc":"10596:3:75","nodeType":"YulIdentifier","src":"10596:3:75"},"nativeSrc":"10596:58:75","nodeType":"YulFunctionCall","src":"10596:58:75"}],"functionName":{"name":"sstore","nativeSrc":"10581:6:75","nodeType":"YulIdentifier","src":"10581:6:75"},"nativeSrc":"10581:74:75","nodeType":"YulFunctionCall","src":"10581:74:75"},"nativeSrc":"10581:74:75","nodeType":"YulExpressionStatement","src":"10581:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10474:7:75","nodeType":"YulIdentifier","src":"10474:7:75"},{"name":"newLen","nativeSrc":"10483:6:75","nodeType":"YulIdentifier","src":"10483:6:75"}],"functionName":{"name":"lt","nativeSrc":"10471:2:75","nodeType":"YulIdentifier","src":"10471:2:75"},"nativeSrc":"10471:19:75","nodeType":"YulFunctionCall","src":"10471:19:75"},"nativeSrc":"10468:201:75","nodeType":"YulIf","src":"10468:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10689:4:75","nodeType":"YulIdentifier","src":"10689:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10703:1:75","nodeType":"YulLiteral","src":"10703:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"10706:6:75","nodeType":"YulIdentifier","src":"10706:6:75"}],"functionName":{"name":"shl","nativeSrc":"10699:3:75","nodeType":"YulIdentifier","src":"10699:3:75"},"nativeSrc":"10699:14:75","nodeType":"YulFunctionCall","src":"10699:14:75"},{"kind":"number","nativeSrc":"10715:1:75","nodeType":"YulLiteral","src":"10715:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10695:3:75","nodeType":"YulIdentifier","src":"10695:3:75"},"nativeSrc":"10695:22:75","nodeType":"YulFunctionCall","src":"10695:22:75"}],"functionName":{"name":"sstore","nativeSrc":"10682:6:75","nodeType":"YulIdentifier","src":"10682:6:75"},"nativeSrc":"10682:36:75","nodeType":"YulFunctionCall","src":"10682:36:75"},"nativeSrc":"10682:36:75","nodeType":"YulExpressionStatement","src":"10682:36:75"}]},"nativeSrc":"10080:648:75","nodeType":"YulCase","src":"10080:648:75","value":{"kind":"number","nativeSrc":"10085:1:75","nodeType":"YulLiteral","src":"10085:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"10745:234:75","nodeType":"YulBlock","src":"10745:234:75","statements":[{"nativeSrc":"10759:14:75","nodeType":"YulVariableDeclaration","src":"10759:14:75","value":{"kind":"number","nativeSrc":"10772:1:75","nodeType":"YulLiteral","src":"10772:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10763:5:75","nodeType":"YulTypedName","src":"10763:5:75","type":""}]},{"body":{"nativeSrc":"10808:67:75","nodeType":"YulBlock","src":"10808:67:75","statements":[{"nativeSrc":"10826:35:75","nodeType":"YulAssignment","src":"10826:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10845:3:75","nodeType":"YulIdentifier","src":"10845:3:75"},{"name":"srcOffset","nativeSrc":"10850:9:75","nodeType":"YulIdentifier","src":"10850:9:75"}],"functionName":{"name":"add","nativeSrc":"10841:3:75","nodeType":"YulIdentifier","src":"10841:3:75"},"nativeSrc":"10841:19:75","nodeType":"YulFunctionCall","src":"10841:19:75"}],"functionName":{"name":"mload","nativeSrc":"10835:5:75","nodeType":"YulIdentifier","src":"10835:5:75"},"nativeSrc":"10835:26:75","nodeType":"YulFunctionCall","src":"10835:26:75"},"variableNames":[{"name":"value","nativeSrc":"10826:5:75","nodeType":"YulIdentifier","src":"10826:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"10789:6:75","nodeType":"YulIdentifier","src":"10789:6:75"},"nativeSrc":"10786:89:75","nodeType":"YulIf","src":"10786:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10895:4:75","nodeType":"YulIdentifier","src":"10895:4:75"},{"arguments":[{"name":"value","nativeSrc":"10954:5:75","nodeType":"YulIdentifier","src":"10954:5:75"},{"name":"newLen","nativeSrc":"10961:6:75","nodeType":"YulIdentifier","src":"10961:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10901:52:75","nodeType":"YulIdentifier","src":"10901:52:75"},"nativeSrc":"10901:67:75","nodeType":"YulFunctionCall","src":"10901:67:75"}],"functionName":{"name":"sstore","nativeSrc":"10888:6:75","nodeType":"YulIdentifier","src":"10888:6:75"},"nativeSrc":"10888:81:75","nodeType":"YulFunctionCall","src":"10888:81:75"},"nativeSrc":"10888:81:75","nodeType":"YulExpressionStatement","src":"10888:81:75"}]},"nativeSrc":"10737:242:75","nodeType":"YulCase","src":"10737:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"10060:6:75","nodeType":"YulIdentifier","src":"10060:6:75"},{"kind":"number","nativeSrc":"10068:2:75","nodeType":"YulLiteral","src":"10068:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10057:2:75","nodeType":"YulIdentifier","src":"10057:2:75"},"nativeSrc":"10057:14:75","nodeType":"YulFunctionCall","src":"10057:14:75"},"nativeSrc":"10050:929:75","nodeType":"YulSwitch","src":"10050:929:75"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"9690:1295:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9769:4:75","nodeType":"YulTypedName","src":"9769:4:75","type":""},{"name":"src","nativeSrc":"9775:3:75","nodeType":"YulTypedName","src":"9775:3:75","type":""}],"src":"9690:1295:75"},{"body":{"nativeSrc":"11265:337:75","nodeType":"YulBlock","src":"11265:337:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11282:9:75","nodeType":"YulIdentifier","src":"11282:9:75"},{"kind":"number","nativeSrc":"11293:3:75","nodeType":"YulLiteral","src":"11293:3:75","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"11275:6:75","nodeType":"YulIdentifier","src":"11275:6:75"},"nativeSrc":"11275:22:75","nodeType":"YulFunctionCall","src":"11275:22:75"},"nativeSrc":"11275:22:75","nodeType":"YulExpressionStatement","src":"11275:22:75"},{"nativeSrc":"11306:65:75","nodeType":"YulAssignment","src":"11306:65:75","value":{"arguments":[{"name":"value0","nativeSrc":"11343:6:75","nodeType":"YulIdentifier","src":"11343:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"11355:9:75","nodeType":"YulIdentifier","src":"11355:9:75"},{"kind":"number","nativeSrc":"11366:3:75","nodeType":"YulLiteral","src":"11366:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"11351:3:75","nodeType":"YulIdentifier","src":"11351:3:75"},"nativeSrc":"11351:19:75","nodeType":"YulFunctionCall","src":"11351:19:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"11314:28:75","nodeType":"YulIdentifier","src":"11314:28:75"},"nativeSrc":"11314:57:75","nodeType":"YulFunctionCall","src":"11314:57:75"},"variableNames":[{"name":"tail","nativeSrc":"11306:4:75","nodeType":"YulIdentifier","src":"11306:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11391:9:75","nodeType":"YulIdentifier","src":"11391:9:75"},{"kind":"number","nativeSrc":"11402:2:75","nodeType":"YulLiteral","src":"11402:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11387:3:75","nodeType":"YulIdentifier","src":"11387:3:75"},"nativeSrc":"11387:18:75","nodeType":"YulFunctionCall","src":"11387:18:75"},{"arguments":[{"name":"value1","nativeSrc":"11411:6:75","nodeType":"YulIdentifier","src":"11411:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11427:3:75","nodeType":"YulLiteral","src":"11427:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11432:1:75","nodeType":"YulLiteral","src":"11432:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11423:3:75","nodeType":"YulIdentifier","src":"11423:3:75"},"nativeSrc":"11423:11:75","nodeType":"YulFunctionCall","src":"11423:11:75"},{"kind":"number","nativeSrc":"11436:1:75","nodeType":"YulLiteral","src":"11436:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11419:3:75","nodeType":"YulIdentifier","src":"11419:3:75"},"nativeSrc":"11419:19:75","nodeType":"YulFunctionCall","src":"11419:19:75"}],"functionName":{"name":"and","nativeSrc":"11407:3:75","nodeType":"YulIdentifier","src":"11407:3:75"},"nativeSrc":"11407:32:75","nodeType":"YulFunctionCall","src":"11407:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11380:6:75","nodeType":"YulIdentifier","src":"11380:6:75"},"nativeSrc":"11380:60:75","nodeType":"YulFunctionCall","src":"11380:60:75"},"nativeSrc":"11380:60:75","nodeType":"YulExpressionStatement","src":"11380:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11460:9:75","nodeType":"YulIdentifier","src":"11460:9:75"},{"kind":"number","nativeSrc":"11471:2:75","nodeType":"YulLiteral","src":"11471:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11456:3:75","nodeType":"YulIdentifier","src":"11456:3:75"},"nativeSrc":"11456:18:75","nodeType":"YulFunctionCall","src":"11456:18:75"},{"arguments":[{"name":"value2","nativeSrc":"11480:6:75","nodeType":"YulIdentifier","src":"11480:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11496:3:75","nodeType":"YulLiteral","src":"11496:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11501:1:75","nodeType":"YulLiteral","src":"11501:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11492:3:75","nodeType":"YulIdentifier","src":"11492:3:75"},"nativeSrc":"11492:11:75","nodeType":"YulFunctionCall","src":"11492:11:75"},{"kind":"number","nativeSrc":"11505:1:75","nodeType":"YulLiteral","src":"11505:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11488:3:75","nodeType":"YulIdentifier","src":"11488:3:75"},"nativeSrc":"11488:19:75","nodeType":"YulFunctionCall","src":"11488:19:75"}],"functionName":{"name":"and","nativeSrc":"11476:3:75","nodeType":"YulIdentifier","src":"11476:3:75"},"nativeSrc":"11476:32:75","nodeType":"YulFunctionCall","src":"11476:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11449:6:75","nodeType":"YulIdentifier","src":"11449:6:75"},"nativeSrc":"11449:60:75","nodeType":"YulFunctionCall","src":"11449:60:75"},"nativeSrc":"11449:60:75","nodeType":"YulExpressionStatement","src":"11449:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11529:9:75","nodeType":"YulIdentifier","src":"11529:9:75"},{"kind":"number","nativeSrc":"11540:2:75","nodeType":"YulLiteral","src":"11540:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11525:3:75","nodeType":"YulIdentifier","src":"11525:3:75"},"nativeSrc":"11525:18:75","nodeType":"YulFunctionCall","src":"11525:18:75"},{"name":"value3","nativeSrc":"11545:6:75","nodeType":"YulIdentifier","src":"11545:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11518:6:75","nodeType":"YulIdentifier","src":"11518:6:75"},"nativeSrc":"11518:34:75","nodeType":"YulFunctionCall","src":"11518:34:75"},"nativeSrc":"11518:34:75","nodeType":"YulExpressionStatement","src":"11518:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11572:9:75","nodeType":"YulIdentifier","src":"11572:9:75"},{"kind":"number","nativeSrc":"11583:3:75","nodeType":"YulLiteral","src":"11583:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"11568:3:75","nodeType":"YulIdentifier","src":"11568:3:75"},"nativeSrc":"11568:19:75","nodeType":"YulFunctionCall","src":"11568:19:75"},{"name":"value4","nativeSrc":"11589:6:75","nodeType":"YulIdentifier","src":"11589:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11561:6:75","nodeType":"YulIdentifier","src":"11561:6:75"},"nativeSrc":"11561:35:75","nodeType":"YulFunctionCall","src":"11561:35:75"},"nativeSrc":"11561:35:75","nodeType":"YulExpressionStatement","src":"11561:35:75"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"10990:612:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11202:9:75","nodeType":"YulTypedName","src":"11202:9:75","type":""},{"name":"value4","nativeSrc":"11213:6:75","nodeType":"YulTypedName","src":"11213:6:75","type":""},{"name":"value3","nativeSrc":"11221:6:75","nodeType":"YulTypedName","src":"11221:6:75","type":""},{"name":"value2","nativeSrc":"11229:6:75","nodeType":"YulTypedName","src":"11229:6:75","type":""},{"name":"value1","nativeSrc":"11237:6:75","nodeType":"YulTypedName","src":"11237:6:75","type":""},{"name":"value0","nativeSrc":"11245:6:75","nodeType":"YulTypedName","src":"11245:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11256:4:75","nodeType":"YulTypedName","src":"11256:4:75","type":""}],"src":"10990:612:75"},{"body":{"nativeSrc":"11736:145:75","nodeType":"YulBlock","src":"11736:145:75","statements":[{"nativeSrc":"11746:26:75","nodeType":"YulAssignment","src":"11746:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11758:9:75","nodeType":"YulIdentifier","src":"11758:9:75"},{"kind":"number","nativeSrc":"11769:2:75","nodeType":"YulLiteral","src":"11769:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11754:3:75","nodeType":"YulIdentifier","src":"11754:3:75"},"nativeSrc":"11754:18:75","nodeType":"YulFunctionCall","src":"11754:18:75"},"variableNames":[{"name":"tail","nativeSrc":"11746:4:75","nodeType":"YulIdentifier","src":"11746:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11788:9:75","nodeType":"YulIdentifier","src":"11788:9:75"},{"arguments":[{"name":"value0","nativeSrc":"11803:6:75","nodeType":"YulIdentifier","src":"11803:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11819:3:75","nodeType":"YulLiteral","src":"11819:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11824:1:75","nodeType":"YulLiteral","src":"11824:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11815:3:75","nodeType":"YulIdentifier","src":"11815:3:75"},"nativeSrc":"11815:11:75","nodeType":"YulFunctionCall","src":"11815:11:75"},{"kind":"number","nativeSrc":"11828:1:75","nodeType":"YulLiteral","src":"11828:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11811:3:75","nodeType":"YulIdentifier","src":"11811:3:75"},"nativeSrc":"11811:19:75","nodeType":"YulFunctionCall","src":"11811:19:75"}],"functionName":{"name":"and","nativeSrc":"11799:3:75","nodeType":"YulIdentifier","src":"11799:3:75"},"nativeSrc":"11799:32:75","nodeType":"YulFunctionCall","src":"11799:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11781:6:75","nodeType":"YulIdentifier","src":"11781:6:75"},"nativeSrc":"11781:51:75","nodeType":"YulFunctionCall","src":"11781:51:75"},"nativeSrc":"11781:51:75","nodeType":"YulExpressionStatement","src":"11781:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11852:9:75","nodeType":"YulIdentifier","src":"11852:9:75"},{"kind":"number","nativeSrc":"11863:2:75","nodeType":"YulLiteral","src":"11863:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11848:3:75","nodeType":"YulIdentifier","src":"11848:3:75"},"nativeSrc":"11848:18:75","nodeType":"YulFunctionCall","src":"11848:18:75"},{"name":"value1","nativeSrc":"11868:6:75","nodeType":"YulIdentifier","src":"11868:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11841:6:75","nodeType":"YulIdentifier","src":"11841:6:75"},"nativeSrc":"11841:34:75","nodeType":"YulFunctionCall","src":"11841:34:75"},"nativeSrc":"11841:34:75","nodeType":"YulExpressionStatement","src":"11841:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"11607:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11697:9:75","nodeType":"YulTypedName","src":"11697:9:75","type":""},{"name":"value1","nativeSrc":"11708:6:75","nodeType":"YulTypedName","src":"11708:6:75","type":""},{"name":"value0","nativeSrc":"11716:6:75","nodeType":"YulTypedName","src":"11716:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11727:4:75","nodeType":"YulTypedName","src":"11727:4:75","type":""}],"src":"11607:274:75"},{"body":{"nativeSrc":"11964:167:75","nodeType":"YulBlock","src":"11964:167:75","statements":[{"body":{"nativeSrc":"12010:16:75","nodeType":"YulBlock","src":"12010:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12019:1:75","nodeType":"YulLiteral","src":"12019:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12022:1:75","nodeType":"YulLiteral","src":"12022:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12012:6:75","nodeType":"YulIdentifier","src":"12012:6:75"},"nativeSrc":"12012:12:75","nodeType":"YulFunctionCall","src":"12012:12:75"},"nativeSrc":"12012:12:75","nodeType":"YulExpressionStatement","src":"12012:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11985:7:75","nodeType":"YulIdentifier","src":"11985:7:75"},{"name":"headStart","nativeSrc":"11994:9:75","nodeType":"YulIdentifier","src":"11994:9:75"}],"functionName":{"name":"sub","nativeSrc":"11981:3:75","nodeType":"YulIdentifier","src":"11981:3:75"},"nativeSrc":"11981:23:75","nodeType":"YulFunctionCall","src":"11981:23:75"},{"kind":"number","nativeSrc":"12006:2:75","nodeType":"YulLiteral","src":"12006:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11977:3:75","nodeType":"YulIdentifier","src":"11977:3:75"},"nativeSrc":"11977:32:75","nodeType":"YulFunctionCall","src":"11977:32:75"},"nativeSrc":"11974:52:75","nodeType":"YulIf","src":"11974:52:75"},{"nativeSrc":"12035:29:75","nodeType":"YulVariableDeclaration","src":"12035:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12054:9:75","nodeType":"YulIdentifier","src":"12054:9:75"}],"functionName":{"name":"mload","nativeSrc":"12048:5:75","nodeType":"YulIdentifier","src":"12048:5:75"},"nativeSrc":"12048:16:75","nodeType":"YulFunctionCall","src":"12048:16:75"},"variables":[{"name":"value","nativeSrc":"12039:5:75","nodeType":"YulTypedName","src":"12039:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"12095:5:75","nodeType":"YulIdentifier","src":"12095:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"12073:21:75","nodeType":"YulIdentifier","src":"12073:21:75"},"nativeSrc":"12073:28:75","nodeType":"YulFunctionCall","src":"12073:28:75"},"nativeSrc":"12073:28:75","nodeType":"YulExpressionStatement","src":"12073:28:75"},{"nativeSrc":"12110:15:75","nodeType":"YulAssignment","src":"12110:15:75","value":{"name":"value","nativeSrc":"12120:5:75","nodeType":"YulIdentifier","src":"12120:5:75"},"variableNames":[{"name":"value0","nativeSrc":"12110:6:75","nodeType":"YulIdentifier","src":"12110:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"11886:245:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11930:9:75","nodeType":"YulTypedName","src":"11930:9:75","type":""},{"name":"dataEnd","nativeSrc":"11941:7:75","nodeType":"YulTypedName","src":"11941:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11953:6:75","nodeType":"YulTypedName","src":"11953:6:75","type":""}],"src":"11886:245:75"},{"body":{"nativeSrc":"12328:271:75","nodeType":"YulBlock","src":"12328:271:75","statements":[{"nativeSrc":"12338:27:75","nodeType":"YulAssignment","src":"12338:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"12350:9:75","nodeType":"YulIdentifier","src":"12350:9:75"},{"kind":"number","nativeSrc":"12361:3:75","nodeType":"YulLiteral","src":"12361:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"12346:3:75","nodeType":"YulIdentifier","src":"12346:3:75"},"nativeSrc":"12346:19:75","nodeType":"YulFunctionCall","src":"12346:19:75"},"variableNames":[{"name":"tail","nativeSrc":"12338:4:75","nodeType":"YulIdentifier","src":"12338:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12381:9:75","nodeType":"YulIdentifier","src":"12381:9:75"},{"arguments":[{"name":"value0","nativeSrc":"12396:6:75","nodeType":"YulIdentifier","src":"12396:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12412:3:75","nodeType":"YulLiteral","src":"12412:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12417:1:75","nodeType":"YulLiteral","src":"12417:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12408:3:75","nodeType":"YulIdentifier","src":"12408:3:75"},"nativeSrc":"12408:11:75","nodeType":"YulFunctionCall","src":"12408:11:75"},{"kind":"number","nativeSrc":"12421:1:75","nodeType":"YulLiteral","src":"12421:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12404:3:75","nodeType":"YulIdentifier","src":"12404:3:75"},"nativeSrc":"12404:19:75","nodeType":"YulFunctionCall","src":"12404:19:75"}],"functionName":{"name":"and","nativeSrc":"12392:3:75","nodeType":"YulIdentifier","src":"12392:3:75"},"nativeSrc":"12392:32:75","nodeType":"YulFunctionCall","src":"12392:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12374:6:75","nodeType":"YulIdentifier","src":"12374:6:75"},"nativeSrc":"12374:51:75","nodeType":"YulFunctionCall","src":"12374:51:75"},"nativeSrc":"12374:51:75","nodeType":"YulExpressionStatement","src":"12374:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12445:9:75","nodeType":"YulIdentifier","src":"12445:9:75"},{"kind":"number","nativeSrc":"12456:2:75","nodeType":"YulLiteral","src":"12456:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12441:3:75","nodeType":"YulIdentifier","src":"12441:3:75"},"nativeSrc":"12441:18:75","nodeType":"YulFunctionCall","src":"12441:18:75"},{"name":"value1","nativeSrc":"12461:6:75","nodeType":"YulIdentifier","src":"12461:6:75"}],"functionName":{"name":"mstore","nativeSrc":"12434:6:75","nodeType":"YulIdentifier","src":"12434:6:75"},"nativeSrc":"12434:34:75","nodeType":"YulFunctionCall","src":"12434:34:75"},"nativeSrc":"12434:34:75","nodeType":"YulExpressionStatement","src":"12434:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12488:9:75","nodeType":"YulIdentifier","src":"12488:9:75"},{"kind":"number","nativeSrc":"12499:2:75","nodeType":"YulLiteral","src":"12499:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12484:3:75","nodeType":"YulIdentifier","src":"12484:3:75"},"nativeSrc":"12484:18:75","nodeType":"YulFunctionCall","src":"12484:18:75"},{"arguments":[{"name":"value2","nativeSrc":"12508:6:75","nodeType":"YulIdentifier","src":"12508:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12524:3:75","nodeType":"YulLiteral","src":"12524:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"12529:1:75","nodeType":"YulLiteral","src":"12529:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12520:3:75","nodeType":"YulIdentifier","src":"12520:3:75"},"nativeSrc":"12520:11:75","nodeType":"YulFunctionCall","src":"12520:11:75"},{"kind":"number","nativeSrc":"12533:1:75","nodeType":"YulLiteral","src":"12533:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"12516:3:75","nodeType":"YulIdentifier","src":"12516:3:75"},"nativeSrc":"12516:19:75","nodeType":"YulFunctionCall","src":"12516:19:75"}],"functionName":{"name":"and","nativeSrc":"12504:3:75","nodeType":"YulIdentifier","src":"12504:3:75"},"nativeSrc":"12504:32:75","nodeType":"YulFunctionCall","src":"12504:32:75"}],"functionName":{"name":"mstore","nativeSrc":"12477:6:75","nodeType":"YulIdentifier","src":"12477:6:75"},"nativeSrc":"12477:60:75","nodeType":"YulFunctionCall","src":"12477:60:75"},"nativeSrc":"12477:60:75","nodeType":"YulExpressionStatement","src":"12477:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12557:9:75","nodeType":"YulIdentifier","src":"12557:9:75"},{"kind":"number","nativeSrc":"12568:2:75","nodeType":"YulLiteral","src":"12568:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12553:3:75","nodeType":"YulIdentifier","src":"12553:3:75"},"nativeSrc":"12553:18:75","nodeType":"YulFunctionCall","src":"12553:18:75"},{"arguments":[{"name":"value3","nativeSrc":"12577:6:75","nodeType":"YulIdentifier","src":"12577:6:75"},{"kind":"number","nativeSrc":"12585:6:75","nodeType":"YulLiteral","src":"12585:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"12573:3:75","nodeType":"YulIdentifier","src":"12573:3:75"},"nativeSrc":"12573:19:75","nodeType":"YulFunctionCall","src":"12573:19:75"}],"functionName":{"name":"mstore","nativeSrc":"12546:6:75","nodeType":"YulIdentifier","src":"12546:6:75"},"nativeSrc":"12546:47:75","nodeType":"YulFunctionCall","src":"12546:47:75"},"nativeSrc":"12546:47:75","nodeType":"YulExpressionStatement","src":"12546:47:75"}]},"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":"12136:463:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12273:9:75","nodeType":"YulTypedName","src":"12273:9:75","type":""},{"name":"value3","nativeSrc":"12284:6:75","nodeType":"YulTypedName","src":"12284:6:75","type":""},{"name":"value2","nativeSrc":"12292:6:75","nodeType":"YulTypedName","src":"12292:6:75","type":""},{"name":"value1","nativeSrc":"12300:6:75","nodeType":"YulTypedName","src":"12300:6:75","type":""},{"name":"value0","nativeSrc":"12308:6:75","nodeType":"YulTypedName","src":"12308:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12319:4:75","nodeType":"YulTypedName","src":"12319:4:75","type":""}],"src":"12136:463:75"},{"body":{"nativeSrc":"12695:407:75","nodeType":"YulBlock","src":"12695:407:75","statements":[{"body":{"nativeSrc":"12739:16:75","nodeType":"YulBlock","src":"12739:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12748:1:75","nodeType":"YulLiteral","src":"12748:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"12751:1:75","nodeType":"YulLiteral","src":"12751:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12741:6:75","nodeType":"YulIdentifier","src":"12741:6:75"},"nativeSrc":"12741:12:75","nodeType":"YulFunctionCall","src":"12741:12:75"},"nativeSrc":"12741:12:75","nodeType":"YulExpressionStatement","src":"12741:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"12716:3:75","nodeType":"YulIdentifier","src":"12716:3:75"},{"name":"headStart","nativeSrc":"12721:9:75","nodeType":"YulIdentifier","src":"12721:9:75"}],"functionName":{"name":"sub","nativeSrc":"12712:3:75","nodeType":"YulIdentifier","src":"12712:3:75"},"nativeSrc":"12712:19:75","nodeType":"YulFunctionCall","src":"12712:19:75"},{"kind":"number","nativeSrc":"12733:4:75","nodeType":"YulLiteral","src":"12733:4:75","type":"","value":"0x20"}],"functionName":{"name":"slt","nativeSrc":"12708:3:75","nodeType":"YulIdentifier","src":"12708:3:75"},"nativeSrc":"12708:30:75","nodeType":"YulFunctionCall","src":"12708:30:75"},"nativeSrc":"12705:50:75","nodeType":"YulIf","src":"12705:50:75"},{"nativeSrc":"12764:15:75","nodeType":"YulVariableDeclaration","src":"12764:15:75","value":{"kind":"number","nativeSrc":"12778:1:75","nodeType":"YulLiteral","src":"12778:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"12768:6:75","nodeType":"YulTypedName","src":"12768:6:75","type":""}]},{"nativeSrc":"12788:19:75","nodeType":"YulAssignment","src":"12788:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"12804:2:75","nodeType":"YulLiteral","src":"12804:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"12798:5:75","nodeType":"YulIdentifier","src":"12798:5:75"},"nativeSrc":"12798:9:75","nodeType":"YulFunctionCall","src":"12798:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"12788:6:75","nodeType":"YulIdentifier","src":"12788:6:75"}]},{"nativeSrc":"12816:35:75","nodeType":"YulVariableDeclaration","src":"12816:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"12838:6:75","nodeType":"YulIdentifier","src":"12838:6:75"},{"kind":"number","nativeSrc":"12846:4:75","nodeType":"YulLiteral","src":"12846:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12834:3:75","nodeType":"YulIdentifier","src":"12834:3:75"},"nativeSrc":"12834:17:75","nodeType":"YulFunctionCall","src":"12834:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"12820:10:75","nodeType":"YulTypedName","src":"12820:10:75","type":""}]},{"body":{"nativeSrc":"12926:22:75","nodeType":"YulBlock","src":"12926:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"12928:16:75","nodeType":"YulIdentifier","src":"12928:16:75"},"nativeSrc":"12928:18:75","nodeType":"YulFunctionCall","src":"12928:18:75"},"nativeSrc":"12928:18:75","nodeType":"YulExpressionStatement","src":"12928:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"12869:10:75","nodeType":"YulIdentifier","src":"12869:10:75"},{"kind":"number","nativeSrc":"12881:18:75","nodeType":"YulLiteral","src":"12881:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12866:2:75","nodeType":"YulIdentifier","src":"12866:2:75"},"nativeSrc":"12866:34:75","nodeType":"YulFunctionCall","src":"12866:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"12905:10:75","nodeType":"YulIdentifier","src":"12905:10:75"},{"name":"memPtr","nativeSrc":"12917:6:75","nodeType":"YulIdentifier","src":"12917:6:75"}],"functionName":{"name":"lt","nativeSrc":"12902:2:75","nodeType":"YulIdentifier","src":"12902:2:75"},"nativeSrc":"12902:22:75","nodeType":"YulFunctionCall","src":"12902:22:75"}],"functionName":{"name":"or","nativeSrc":"12863:2:75","nodeType":"YulIdentifier","src":"12863:2:75"},"nativeSrc":"12863:62:75","nodeType":"YulFunctionCall","src":"12863:62:75"},"nativeSrc":"12860:88:75","nodeType":"YulIf","src":"12860:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12964:2:75","nodeType":"YulLiteral","src":"12964:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"12968:10:75","nodeType":"YulIdentifier","src":"12968:10:75"}],"functionName":{"name":"mstore","nativeSrc":"12957:6:75","nodeType":"YulIdentifier","src":"12957:6:75"},"nativeSrc":"12957:22:75","nodeType":"YulFunctionCall","src":"12957:22:75"},"nativeSrc":"12957:22:75","nodeType":"YulExpressionStatement","src":"12957:22:75"},{"nativeSrc":"12988:15:75","nodeType":"YulAssignment","src":"12988:15:75","value":{"name":"memPtr","nativeSrc":"12997:6:75","nodeType":"YulIdentifier","src":"12997:6:75"},"variableNames":[{"name":"value","nativeSrc":"12988:5:75","nodeType":"YulIdentifier","src":"12988:5:75"}]},{"nativeSrc":"13012:16:75","nodeType":"YulVariableDeclaration","src":"13012:16:75","value":{"kind":"number","nativeSrc":"13027:1:75","nodeType":"YulLiteral","src":"13027:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"13016:7:75","nodeType":"YulTypedName","src":"13016:7:75","type":""}]},{"nativeSrc":"13037:27:75","nodeType":"YulAssignment","src":"13037:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13054:9:75","nodeType":"YulIdentifier","src":"13054:9:75"}],"functionName":{"name":"mload","nativeSrc":"13048:5:75","nodeType":"YulIdentifier","src":"13048:5:75"},"nativeSrc":"13048:16:75","nodeType":"YulFunctionCall","src":"13048:16:75"},"variableNames":[{"name":"value_1","nativeSrc":"13037:7:75","nodeType":"YulIdentifier","src":"13037:7:75"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"13080:6:75","nodeType":"YulIdentifier","src":"13080:6:75"},{"name":"value_1","nativeSrc":"13088:7:75","nodeType":"YulIdentifier","src":"13088:7:75"}],"functionName":{"name":"mstore","nativeSrc":"13073:6:75","nodeType":"YulIdentifier","src":"13073:6:75"},"nativeSrc":"13073:23:75","nodeType":"YulFunctionCall","src":"13073:23:75"},"nativeSrc":"13073:23:75","nodeType":"YulExpressionStatement","src":"13073:23:75"}]},"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"12604:498:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12666:9:75","nodeType":"YulTypedName","src":"12666:9:75","type":""},{"name":"end","nativeSrc":"12677:3:75","nodeType":"YulTypedName","src":"12677:3:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"12685:5:75","nodeType":"YulTypedName","src":"12685:5:75","type":""}],"src":"12604:498:75"},{"body":{"nativeSrc":"13167:132:75","nodeType":"YulBlock","src":"13167:132:75","statements":[{"nativeSrc":"13177:22:75","nodeType":"YulAssignment","src":"13177:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"13192:6:75","nodeType":"YulIdentifier","src":"13192:6:75"}],"functionName":{"name":"mload","nativeSrc":"13186:5:75","nodeType":"YulIdentifier","src":"13186:5:75"},"nativeSrc":"13186:13:75","nodeType":"YulFunctionCall","src":"13186:13:75"},"variableNames":[{"name":"value","nativeSrc":"13177:5:75","nodeType":"YulIdentifier","src":"13177:5:75"}]},{"body":{"nativeSrc":"13277:16:75","nodeType":"YulBlock","src":"13277:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13286:1:75","nodeType":"YulLiteral","src":"13286:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13289:1:75","nodeType":"YulLiteral","src":"13289:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13279:6:75","nodeType":"YulIdentifier","src":"13279:6:75"},"nativeSrc":"13279:12:75","nodeType":"YulFunctionCall","src":"13279:12:75"},"nativeSrc":"13279:12:75","nodeType":"YulExpressionStatement","src":"13279:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13221:5:75","nodeType":"YulIdentifier","src":"13221:5:75"},{"arguments":[{"name":"value","nativeSrc":"13232:5:75","nodeType":"YulIdentifier","src":"13232:5:75"},{"kind":"number","nativeSrc":"13239:34:75","nodeType":"YulLiteral","src":"13239:34:75","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13228:3:75","nodeType":"YulIdentifier","src":"13228:3:75"},"nativeSrc":"13228:46:75","nodeType":"YulFunctionCall","src":"13228:46:75"}],"functionName":{"name":"eq","nativeSrc":"13218:2:75","nodeType":"YulIdentifier","src":"13218:2:75"},"nativeSrc":"13218:57:75","nodeType":"YulFunctionCall","src":"13218:57:75"}],"functionName":{"name":"iszero","nativeSrc":"13211:6:75","nodeType":"YulIdentifier","src":"13211:6:75"},"nativeSrc":"13211:65:75","nodeType":"YulFunctionCall","src":"13211:65:75"},"nativeSrc":"13208:85:75","nodeType":"YulIf","src":"13208:85:75"}]},"name":"abi_decode_uint128_fromMemory","nativeSrc":"13107:192:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13146:6:75","nodeType":"YulTypedName","src":"13146:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13157:5:75","nodeType":"YulTypedName","src":"13157:5:75","type":""}],"src":"13107:192:75"},{"body":{"nativeSrc":"13363:110:75","nodeType":"YulBlock","src":"13363:110:75","statements":[{"nativeSrc":"13373:22:75","nodeType":"YulAssignment","src":"13373:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"13388:6:75","nodeType":"YulIdentifier","src":"13388:6:75"}],"functionName":{"name":"mload","nativeSrc":"13382:5:75","nodeType":"YulIdentifier","src":"13382:5:75"},"nativeSrc":"13382:13:75","nodeType":"YulFunctionCall","src":"13382:13:75"},"variableNames":[{"name":"value","nativeSrc":"13373:5:75","nodeType":"YulIdentifier","src":"13373:5:75"}]},{"body":{"nativeSrc":"13451:16:75","nodeType":"YulBlock","src":"13451:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13460:1:75","nodeType":"YulLiteral","src":"13460:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13463:1:75","nodeType":"YulLiteral","src":"13463:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13453:6:75","nodeType":"YulIdentifier","src":"13453:6:75"},"nativeSrc":"13453:12:75","nodeType":"YulFunctionCall","src":"13453:12:75"},"nativeSrc":"13453:12:75","nodeType":"YulExpressionStatement","src":"13453:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13417:5:75","nodeType":"YulIdentifier","src":"13417:5:75"},{"arguments":[{"name":"value","nativeSrc":"13428:5:75","nodeType":"YulIdentifier","src":"13428:5:75"},{"kind":"number","nativeSrc":"13435:12:75","nodeType":"YulLiteral","src":"13435:12:75","type":"","value":"0xffffffffff"}],"functionName":{"name":"and","nativeSrc":"13424:3:75","nodeType":"YulIdentifier","src":"13424:3:75"},"nativeSrc":"13424:24:75","nodeType":"YulFunctionCall","src":"13424:24:75"}],"functionName":{"name":"eq","nativeSrc":"13414:2:75","nodeType":"YulIdentifier","src":"13414:2:75"},"nativeSrc":"13414:35:75","nodeType":"YulFunctionCall","src":"13414:35:75"}],"functionName":{"name":"iszero","nativeSrc":"13407:6:75","nodeType":"YulIdentifier","src":"13407:6:75"},"nativeSrc":"13407:43:75","nodeType":"YulFunctionCall","src":"13407:43:75"},"nativeSrc":"13404:63:75","nodeType":"YulIf","src":"13404:63:75"}]},"name":"abi_decode_uint40_fromMemory","nativeSrc":"13304:169:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13342:6:75","nodeType":"YulTypedName","src":"13342:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13353:5:75","nodeType":"YulTypedName","src":"13353:5:75","type":""}],"src":"13304:169:75"},{"body":{"nativeSrc":"13537:104:75","nodeType":"YulBlock","src":"13537:104:75","statements":[{"nativeSrc":"13547:22:75","nodeType":"YulAssignment","src":"13547:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"13562:6:75","nodeType":"YulIdentifier","src":"13562:6:75"}],"functionName":{"name":"mload","nativeSrc":"13556:5:75","nodeType":"YulIdentifier","src":"13556:5:75"},"nativeSrc":"13556:13:75","nodeType":"YulFunctionCall","src":"13556:13:75"},"variableNames":[{"name":"value","nativeSrc":"13547:5:75","nodeType":"YulIdentifier","src":"13547:5:75"}]},{"body":{"nativeSrc":"13619:16:75","nodeType":"YulBlock","src":"13619:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13628:1:75","nodeType":"YulLiteral","src":"13628:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13631:1:75","nodeType":"YulLiteral","src":"13631:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13621:6:75","nodeType":"YulIdentifier","src":"13621:6:75"},"nativeSrc":"13621:12:75","nodeType":"YulFunctionCall","src":"13621:12:75"},"nativeSrc":"13621:12:75","nodeType":"YulExpressionStatement","src":"13621:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"13591:5:75","nodeType":"YulIdentifier","src":"13591:5:75"},{"arguments":[{"name":"value","nativeSrc":"13602:5:75","nodeType":"YulIdentifier","src":"13602:5:75"},{"kind":"number","nativeSrc":"13609:6:75","nodeType":"YulLiteral","src":"13609:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"13598:3:75","nodeType":"YulIdentifier","src":"13598:3:75"},"nativeSrc":"13598:18:75","nodeType":"YulFunctionCall","src":"13598:18:75"}],"functionName":{"name":"eq","nativeSrc":"13588:2:75","nodeType":"YulIdentifier","src":"13588:2:75"},"nativeSrc":"13588:29:75","nodeType":"YulFunctionCall","src":"13588:29:75"}],"functionName":{"name":"iszero","nativeSrc":"13581:6:75","nodeType":"YulIdentifier","src":"13581:6:75"},"nativeSrc":"13581:37:75","nodeType":"YulFunctionCall","src":"13581:37:75"},"nativeSrc":"13578:57:75","nodeType":"YulIf","src":"13578:57:75"}]},"name":"abi_decode_uint16_fromMemory","nativeSrc":"13478:163:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13516:6:75","nodeType":"YulTypedName","src":"13516:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13527:5:75","nodeType":"YulTypedName","src":"13527:5:75","type":""}],"src":"13478:163:75"},{"body":{"nativeSrc":"13706:78:75","nodeType":"YulBlock","src":"13706:78:75","statements":[{"nativeSrc":"13716:22:75","nodeType":"YulAssignment","src":"13716:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"13731:6:75","nodeType":"YulIdentifier","src":"13731:6:75"}],"functionName":{"name":"mload","nativeSrc":"13725:5:75","nodeType":"YulIdentifier","src":"13725:5:75"},"nativeSrc":"13725:13:75","nodeType":"YulFunctionCall","src":"13725:13:75"},"variableNames":[{"name":"value","nativeSrc":"13716:5:75","nodeType":"YulIdentifier","src":"13716:5:75"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13772:5:75","nodeType":"YulIdentifier","src":"13772:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13747:24:75","nodeType":"YulIdentifier","src":"13747:24:75"},"nativeSrc":"13747:31:75","nodeType":"YulFunctionCall","src":"13747:31:75"},"nativeSrc":"13747:31:75","nodeType":"YulExpressionStatement","src":"13747:31:75"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"13646:138:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"13685:6:75","nodeType":"YulTypedName","src":"13685:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"13696:5:75","nodeType":"YulTypedName","src":"13696:5:75","type":""}],"src":"13646:138:75"},{"body":{"nativeSrc":"13900:1438:75","nodeType":"YulBlock","src":"13900:1438:75","statements":[{"nativeSrc":"13910:43:75","nodeType":"YulVariableDeclaration","src":"13910:43:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13928:7:75","nodeType":"YulIdentifier","src":"13928:7:75"},{"name":"headStart","nativeSrc":"13937:9:75","nodeType":"YulIdentifier","src":"13937:9:75"}],"functionName":{"name":"sub","nativeSrc":"13924:3:75","nodeType":"YulIdentifier","src":"13924:3:75"},"nativeSrc":"13924:23:75","nodeType":"YulFunctionCall","src":"13924:23:75"},{"kind":"number","nativeSrc":"13949:3:75","nodeType":"YulLiteral","src":"13949:3:75","type":"","value":"480"}],"functionName":{"name":"slt","nativeSrc":"13920:3:75","nodeType":"YulIdentifier","src":"13920:3:75"},"nativeSrc":"13920:33:75","nodeType":"YulFunctionCall","src":"13920:33:75"},"variables":[{"name":"_1","nativeSrc":"13914:2:75","nodeType":"YulTypedName","src":"13914:2:75","type":""}]},{"body":{"nativeSrc":"13968:16:75","nodeType":"YulBlock","src":"13968:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13977:1:75","nodeType":"YulLiteral","src":"13977:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13980:1:75","nodeType":"YulLiteral","src":"13980:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13970:6:75","nodeType":"YulIdentifier","src":"13970:6:75"},"nativeSrc":"13970:12:75","nodeType":"YulFunctionCall","src":"13970:12:75"},"nativeSrc":"13970:12:75","nodeType":"YulExpressionStatement","src":"13970:12:75"}]},"condition":{"name":"_1","nativeSrc":"13965:2:75","nodeType":"YulIdentifier","src":"13965:2:75"},"nativeSrc":"13962:22:75","nodeType":"YulIf","src":"13962:22:75"},{"nativeSrc":"13993:7:75","nodeType":"YulAssignment","src":"13993:7:75","value":{"kind":"number","nativeSrc":"13999:1:75","nodeType":"YulLiteral","src":"13999:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"13993:2:75","nodeType":"YulIdentifier","src":"13993:2:75"}]},{"nativeSrc":"14009:35:75","nodeType":"YulVariableDeclaration","src":"14009:35:75","value":{"arguments":[],"functionName":{"name":"allocate_memory_2008","nativeSrc":"14022:20:75","nodeType":"YulIdentifier","src":"14022:20:75"},"nativeSrc":"14022:22:75","nodeType":"YulFunctionCall","src":"14022:22:75"},"variables":[{"name":"value","nativeSrc":"14013:5:75","nodeType":"YulTypedName","src":"14013:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14060:5:75","nodeType":"YulIdentifier","src":"14060:5:75"},{"arguments":[{"name":"headStart","nativeSrc":"14120:9:75","nodeType":"YulIdentifier","src":"14120:9:75"},{"name":"dataEnd","nativeSrc":"14131:7:75","nodeType":"YulIdentifier","src":"14131:7:75"}],"functionName":{"name":"abi_decode_struct_ReserveConfigurationMap_fromMemory","nativeSrc":"14067:52:75","nodeType":"YulIdentifier","src":"14067:52:75"},"nativeSrc":"14067:72:75","nodeType":"YulFunctionCall","src":"14067:72:75"}],"functionName":{"name":"mstore","nativeSrc":"14053:6:75","nodeType":"YulIdentifier","src":"14053:6:75"},"nativeSrc":"14053:87:75","nodeType":"YulFunctionCall","src":"14053:87:75"},"nativeSrc":"14053:87:75","nodeType":"YulExpressionStatement","src":"14053:87:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14160:5:75","nodeType":"YulIdentifier","src":"14160:5:75"},{"kind":"number","nativeSrc":"14167:2:75","nodeType":"YulLiteral","src":"14167:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14156:3:75","nodeType":"YulIdentifier","src":"14156:3:75"},"nativeSrc":"14156:14:75","nodeType":"YulFunctionCall","src":"14156:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14206:9:75","nodeType":"YulIdentifier","src":"14206:9:75"},{"kind":"number","nativeSrc":"14217:2:75","nodeType":"YulLiteral","src":"14217:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14202:3:75","nodeType":"YulIdentifier","src":"14202:3:75"},"nativeSrc":"14202:18:75","nodeType":"YulFunctionCall","src":"14202:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14172:29:75","nodeType":"YulIdentifier","src":"14172:29:75"},"nativeSrc":"14172:49:75","nodeType":"YulFunctionCall","src":"14172:49:75"}],"functionName":{"name":"mstore","nativeSrc":"14149:6:75","nodeType":"YulIdentifier","src":"14149:6:75"},"nativeSrc":"14149:73:75","nodeType":"YulFunctionCall","src":"14149:73:75"},"nativeSrc":"14149:73:75","nodeType":"YulExpressionStatement","src":"14149:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14242:5:75","nodeType":"YulIdentifier","src":"14242:5:75"},{"kind":"number","nativeSrc":"14249:2:75","nodeType":"YulLiteral","src":"14249:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14238:3:75","nodeType":"YulIdentifier","src":"14238:3:75"},"nativeSrc":"14238:14:75","nodeType":"YulFunctionCall","src":"14238:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14288:9:75","nodeType":"YulIdentifier","src":"14288:9:75"},{"kind":"number","nativeSrc":"14299:2:75","nodeType":"YulLiteral","src":"14299:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14284:3:75","nodeType":"YulIdentifier","src":"14284:3:75"},"nativeSrc":"14284:18:75","nodeType":"YulFunctionCall","src":"14284:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14254:29:75","nodeType":"YulIdentifier","src":"14254:29:75"},"nativeSrc":"14254:49:75","nodeType":"YulFunctionCall","src":"14254:49:75"}],"functionName":{"name":"mstore","nativeSrc":"14231:6:75","nodeType":"YulIdentifier","src":"14231:6:75"},"nativeSrc":"14231:73:75","nodeType":"YulFunctionCall","src":"14231:73:75"},"nativeSrc":"14231:73:75","nodeType":"YulExpressionStatement","src":"14231:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14324:5:75","nodeType":"YulIdentifier","src":"14324:5:75"},{"kind":"number","nativeSrc":"14331:2:75","nodeType":"YulLiteral","src":"14331:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14320:3:75","nodeType":"YulIdentifier","src":"14320:3:75"},"nativeSrc":"14320:14:75","nodeType":"YulFunctionCall","src":"14320:14:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14370:9:75","nodeType":"YulIdentifier","src":"14370:9:75"},{"kind":"number","nativeSrc":"14381:2:75","nodeType":"YulLiteral","src":"14381:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"14366:3:75","nodeType":"YulIdentifier","src":"14366:3:75"},"nativeSrc":"14366:18:75","nodeType":"YulFunctionCall","src":"14366:18:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14336:29:75","nodeType":"YulIdentifier","src":"14336:29:75"},"nativeSrc":"14336:49:75","nodeType":"YulFunctionCall","src":"14336:49:75"}],"functionName":{"name":"mstore","nativeSrc":"14313:6:75","nodeType":"YulIdentifier","src":"14313:6:75"},"nativeSrc":"14313:73:75","nodeType":"YulFunctionCall","src":"14313:73:75"},"nativeSrc":"14313:73:75","nodeType":"YulExpressionStatement","src":"14313:73:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14406:5:75","nodeType":"YulIdentifier","src":"14406:5:75"},{"kind":"number","nativeSrc":"14413:3:75","nodeType":"YulLiteral","src":"14413:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14402:3:75","nodeType":"YulIdentifier","src":"14402:3:75"},"nativeSrc":"14402:15:75","nodeType":"YulFunctionCall","src":"14402:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14453:9:75","nodeType":"YulIdentifier","src":"14453:9:75"},{"kind":"number","nativeSrc":"14464:3:75","nodeType":"YulLiteral","src":"14464:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"14449:3:75","nodeType":"YulIdentifier","src":"14449:3:75"},"nativeSrc":"14449:19:75","nodeType":"YulFunctionCall","src":"14449:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14419:29:75","nodeType":"YulIdentifier","src":"14419:29:75"},"nativeSrc":"14419:50:75","nodeType":"YulFunctionCall","src":"14419:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14395:6:75","nodeType":"YulIdentifier","src":"14395:6:75"},"nativeSrc":"14395:75:75","nodeType":"YulFunctionCall","src":"14395:75:75"},"nativeSrc":"14395:75:75","nodeType":"YulExpressionStatement","src":"14395:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14490:5:75","nodeType":"YulIdentifier","src":"14490:5:75"},{"kind":"number","nativeSrc":"14497:3:75","nodeType":"YulLiteral","src":"14497:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14486:3:75","nodeType":"YulIdentifier","src":"14486:3:75"},"nativeSrc":"14486:15:75","nodeType":"YulFunctionCall","src":"14486:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14537:9:75","nodeType":"YulIdentifier","src":"14537:9:75"},{"kind":"number","nativeSrc":"14548:3:75","nodeType":"YulLiteral","src":"14548:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"14533:3:75","nodeType":"YulIdentifier","src":"14533:3:75"},"nativeSrc":"14533:19:75","nodeType":"YulFunctionCall","src":"14533:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"14503:29:75","nodeType":"YulIdentifier","src":"14503:29:75"},"nativeSrc":"14503:50:75","nodeType":"YulFunctionCall","src":"14503:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14479:6:75","nodeType":"YulIdentifier","src":"14479:6:75"},"nativeSrc":"14479:75:75","nodeType":"YulFunctionCall","src":"14479:75:75"},"nativeSrc":"14479:75:75","nodeType":"YulExpressionStatement","src":"14479:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14574:5:75","nodeType":"YulIdentifier","src":"14574:5:75"},{"kind":"number","nativeSrc":"14581:3:75","nodeType":"YulLiteral","src":"14581:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14570:3:75","nodeType":"YulIdentifier","src":"14570:3:75"},"nativeSrc":"14570:15:75","nodeType":"YulFunctionCall","src":"14570:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14620:9:75","nodeType":"YulIdentifier","src":"14620:9:75"},{"kind":"number","nativeSrc":"14631:3:75","nodeType":"YulLiteral","src":"14631:3:75","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"14616:3:75","nodeType":"YulIdentifier","src":"14616:3:75"},"nativeSrc":"14616:19:75","nodeType":"YulFunctionCall","src":"14616:19:75"}],"functionName":{"name":"abi_decode_uint40_fromMemory","nativeSrc":"14587:28:75","nodeType":"YulIdentifier","src":"14587:28:75"},"nativeSrc":"14587:49:75","nodeType":"YulFunctionCall","src":"14587:49:75"}],"functionName":{"name":"mstore","nativeSrc":"14563:6:75","nodeType":"YulIdentifier","src":"14563:6:75"},"nativeSrc":"14563:74:75","nodeType":"YulFunctionCall","src":"14563:74:75"},"nativeSrc":"14563:74:75","nodeType":"YulExpressionStatement","src":"14563:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14657:5:75","nodeType":"YulIdentifier","src":"14657:5:75"},{"kind":"number","nativeSrc":"14664:3:75","nodeType":"YulLiteral","src":"14664:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"14653:3:75","nodeType":"YulIdentifier","src":"14653:3:75"},"nativeSrc":"14653:15:75","nodeType":"YulFunctionCall","src":"14653:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14703:9:75","nodeType":"YulIdentifier","src":"14703:9:75"},{"kind":"number","nativeSrc":"14714:3:75","nodeType":"YulLiteral","src":"14714:3:75","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"14699:3:75","nodeType":"YulIdentifier","src":"14699:3:75"},"nativeSrc":"14699:19:75","nodeType":"YulFunctionCall","src":"14699:19:75"}],"functionName":{"name":"abi_decode_uint16_fromMemory","nativeSrc":"14670:28:75","nodeType":"YulIdentifier","src":"14670:28:75"},"nativeSrc":"14670:49:75","nodeType":"YulFunctionCall","src":"14670:49:75"}],"functionName":{"name":"mstore","nativeSrc":"14646:6:75","nodeType":"YulIdentifier","src":"14646:6:75"},"nativeSrc":"14646:74:75","nodeType":"YulFunctionCall","src":"14646:74:75"},"nativeSrc":"14646:74:75","nodeType":"YulExpressionStatement","src":"14646:74:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14740:5:75","nodeType":"YulIdentifier","src":"14740:5:75"},{"kind":"number","nativeSrc":"14747:3:75","nodeType":"YulLiteral","src":"14747:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"14736:3:75","nodeType":"YulIdentifier","src":"14736:3:75"},"nativeSrc":"14736:15:75","nodeType":"YulFunctionCall","src":"14736:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14787:9:75","nodeType":"YulIdentifier","src":"14787:9:75"},{"kind":"number","nativeSrc":"14798:3:75","nodeType":"YulLiteral","src":"14798:3:75","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"14783:3:75","nodeType":"YulIdentifier","src":"14783:3:75"},"nativeSrc":"14783:19:75","nodeType":"YulFunctionCall","src":"14783:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14753:29:75","nodeType":"YulIdentifier","src":"14753:29:75"},"nativeSrc":"14753:50:75","nodeType":"YulFunctionCall","src":"14753:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14729:6:75","nodeType":"YulIdentifier","src":"14729:6:75"},"nativeSrc":"14729:75:75","nodeType":"YulFunctionCall","src":"14729:75:75"},"nativeSrc":"14729:75:75","nodeType":"YulExpressionStatement","src":"14729:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14824:5:75","nodeType":"YulIdentifier","src":"14824:5:75"},{"kind":"number","nativeSrc":"14831:3:75","nodeType":"YulLiteral","src":"14831:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"14820:3:75","nodeType":"YulIdentifier","src":"14820:3:75"},"nativeSrc":"14820:15:75","nodeType":"YulFunctionCall","src":"14820:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14871:9:75","nodeType":"YulIdentifier","src":"14871:9:75"},{"kind":"number","nativeSrc":"14882:3:75","nodeType":"YulLiteral","src":"14882:3:75","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"14867:3:75","nodeType":"YulIdentifier","src":"14867:3:75"},"nativeSrc":"14867:19:75","nodeType":"YulFunctionCall","src":"14867:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14837:29:75","nodeType":"YulIdentifier","src":"14837:29:75"},"nativeSrc":"14837:50:75","nodeType":"YulFunctionCall","src":"14837:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14813:6:75","nodeType":"YulIdentifier","src":"14813:6:75"},"nativeSrc":"14813:75:75","nodeType":"YulFunctionCall","src":"14813:75:75"},"nativeSrc":"14813:75:75","nodeType":"YulExpressionStatement","src":"14813:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14908:5:75","nodeType":"YulIdentifier","src":"14908:5:75"},{"kind":"number","nativeSrc":"14915:3:75","nodeType":"YulLiteral","src":"14915:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"14904:3:75","nodeType":"YulIdentifier","src":"14904:3:75"},"nativeSrc":"14904:15:75","nodeType":"YulFunctionCall","src":"14904:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14955:9:75","nodeType":"YulIdentifier","src":"14955:9:75"},{"kind":"number","nativeSrc":"14966:3:75","nodeType":"YulLiteral","src":"14966:3:75","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"14951:3:75","nodeType":"YulIdentifier","src":"14951:3:75"},"nativeSrc":"14951:19:75","nodeType":"YulFunctionCall","src":"14951:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"14921:29:75","nodeType":"YulIdentifier","src":"14921:29:75"},"nativeSrc":"14921:50:75","nodeType":"YulFunctionCall","src":"14921:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14897:6:75","nodeType":"YulIdentifier","src":"14897:6:75"},"nativeSrc":"14897:75:75","nodeType":"YulFunctionCall","src":"14897:75:75"},"nativeSrc":"14897:75:75","nodeType":"YulExpressionStatement","src":"14897:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"14992:5:75","nodeType":"YulIdentifier","src":"14992:5:75"},{"kind":"number","nativeSrc":"14999:3:75","nodeType":"YulLiteral","src":"14999:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"14988:3:75","nodeType":"YulIdentifier","src":"14988:3:75"},"nativeSrc":"14988:15:75","nodeType":"YulFunctionCall","src":"14988:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15039:9:75","nodeType":"YulIdentifier","src":"15039:9:75"},{"kind":"number","nativeSrc":"15050:3:75","nodeType":"YulLiteral","src":"15050:3:75","type":"","value":"352"}],"functionName":{"name":"add","nativeSrc":"15035:3:75","nodeType":"YulIdentifier","src":"15035:3:75"},"nativeSrc":"15035:19:75","nodeType":"YulFunctionCall","src":"15035:19:75"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"15005:29:75","nodeType":"YulIdentifier","src":"15005:29:75"},"nativeSrc":"15005:50:75","nodeType":"YulFunctionCall","src":"15005:50:75"}],"functionName":{"name":"mstore","nativeSrc":"14981:6:75","nodeType":"YulIdentifier","src":"14981:6:75"},"nativeSrc":"14981:75:75","nodeType":"YulFunctionCall","src":"14981:75:75"},"nativeSrc":"14981:75:75","nodeType":"YulExpressionStatement","src":"14981:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15076:5:75","nodeType":"YulIdentifier","src":"15076:5:75"},{"kind":"number","nativeSrc":"15083:3:75","nodeType":"YulLiteral","src":"15083:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"15072:3:75","nodeType":"YulIdentifier","src":"15072:3:75"},"nativeSrc":"15072:15:75","nodeType":"YulFunctionCall","src":"15072:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15123:9:75","nodeType":"YulIdentifier","src":"15123:9:75"},{"kind":"number","nativeSrc":"15134:3:75","nodeType":"YulLiteral","src":"15134:3:75","type":"","value":"384"}],"functionName":{"name":"add","nativeSrc":"15119:3:75","nodeType":"YulIdentifier","src":"15119:3:75"},"nativeSrc":"15119:19:75","nodeType":"YulFunctionCall","src":"15119:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15089:29:75","nodeType":"YulIdentifier","src":"15089:29:75"},"nativeSrc":"15089:50:75","nodeType":"YulFunctionCall","src":"15089:50:75"}],"functionName":{"name":"mstore","nativeSrc":"15065:6:75","nodeType":"YulIdentifier","src":"15065:6:75"},"nativeSrc":"15065:75:75","nodeType":"YulFunctionCall","src":"15065:75:75"},"nativeSrc":"15065:75:75","nodeType":"YulExpressionStatement","src":"15065:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15160:5:75","nodeType":"YulIdentifier","src":"15160:5:75"},{"kind":"number","nativeSrc":"15167:3:75","nodeType":"YulLiteral","src":"15167:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"15156:3:75","nodeType":"YulIdentifier","src":"15156:3:75"},"nativeSrc":"15156:15:75","nodeType":"YulFunctionCall","src":"15156:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15207:9:75","nodeType":"YulIdentifier","src":"15207:9:75"},{"kind":"number","nativeSrc":"15218:3:75","nodeType":"YulLiteral","src":"15218:3:75","type":"","value":"416"}],"functionName":{"name":"add","nativeSrc":"15203:3:75","nodeType":"YulIdentifier","src":"15203:3:75"},"nativeSrc":"15203:19:75","nodeType":"YulFunctionCall","src":"15203:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15173:29:75","nodeType":"YulIdentifier","src":"15173:29:75"},"nativeSrc":"15173:50:75","nodeType":"YulFunctionCall","src":"15173:50:75"}],"functionName":{"name":"mstore","nativeSrc":"15149:6:75","nodeType":"YulIdentifier","src":"15149:6:75"},"nativeSrc":"15149:75:75","nodeType":"YulFunctionCall","src":"15149:75:75"},"nativeSrc":"15149:75:75","nodeType":"YulExpressionStatement","src":"15149:75:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"15244:5:75","nodeType":"YulIdentifier","src":"15244:5:75"},{"kind":"number","nativeSrc":"15251:3:75","nodeType":"YulLiteral","src":"15251:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"15240:3:75","nodeType":"YulIdentifier","src":"15240:3:75"},"nativeSrc":"15240:15:75","nodeType":"YulFunctionCall","src":"15240:15:75"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15291:9:75","nodeType":"YulIdentifier","src":"15291:9:75"},{"kind":"number","nativeSrc":"15302:3:75","nodeType":"YulLiteral","src":"15302:3:75","type":"","value":"448"}],"functionName":{"name":"add","nativeSrc":"15287:3:75","nodeType":"YulIdentifier","src":"15287:3:75"},"nativeSrc":"15287:19:75","nodeType":"YulFunctionCall","src":"15287:19:75"}],"functionName":{"name":"abi_decode_uint128_fromMemory","nativeSrc":"15257:29:75","nodeType":"YulIdentifier","src":"15257:29:75"},"nativeSrc":"15257:50:75","nodeType":"YulFunctionCall","src":"15257:50:75"}],"functionName":{"name":"mstore","nativeSrc":"15233:6:75","nodeType":"YulIdentifier","src":"15233:6:75"},"nativeSrc":"15233:75:75","nodeType":"YulFunctionCall","src":"15233:75:75"},"nativeSrc":"15233:75:75","nodeType":"YulExpressionStatement","src":"15233:75:75"},{"nativeSrc":"15317:15:75","nodeType":"YulAssignment","src":"15317:15:75","value":{"name":"value","nativeSrc":"15327:5:75","nodeType":"YulIdentifier","src":"15327:5:75"},"variableNames":[{"name":"value0","nativeSrc":"15317:6:75","nodeType":"YulIdentifier","src":"15317:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_ReserveData_$19475_memory_ptr_fromMemory","nativeSrc":"13789:1549:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13866:9:75","nodeType":"YulTypedName","src":"13866:9:75","type":""},{"name":"dataEnd","nativeSrc":"13877:7:75","nodeType":"YulTypedName","src":"13877:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13889:6:75","nodeType":"YulTypedName","src":"13889:6:75","type":""}],"src":"13789:1549:75"},{"body":{"nativeSrc":"15375:95:75","nodeType":"YulBlock","src":"15375:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15392:1:75","nodeType":"YulLiteral","src":"15392:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15399:3:75","nodeType":"YulLiteral","src":"15399:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15404:10:75","nodeType":"YulLiteral","src":"15404:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15395:3:75","nodeType":"YulIdentifier","src":"15395:3:75"},"nativeSrc":"15395:20:75","nodeType":"YulFunctionCall","src":"15395:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15385:6:75","nodeType":"YulIdentifier","src":"15385:6:75"},"nativeSrc":"15385:31:75","nodeType":"YulFunctionCall","src":"15385:31:75"},"nativeSrc":"15385:31:75","nodeType":"YulExpressionStatement","src":"15385:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15432:1:75","nodeType":"YulLiteral","src":"15432:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15435:4:75","nodeType":"YulLiteral","src":"15435:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15425:6:75","nodeType":"YulIdentifier","src":"15425:6:75"},"nativeSrc":"15425:15:75","nodeType":"YulFunctionCall","src":"15425:15:75"},"nativeSrc":"15425:15:75","nodeType":"YulExpressionStatement","src":"15425:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15456:1:75","nodeType":"YulLiteral","src":"15456:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15459:4:75","nodeType":"YulLiteral","src":"15459:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15449:6:75","nodeType":"YulIdentifier","src":"15449:6:75"},"nativeSrc":"15449:15:75","nodeType":"YulFunctionCall","src":"15449:15:75"},"nativeSrc":"15449:15:75","nodeType":"YulExpressionStatement","src":"15449:15:75"}]},"name":"panic_error_0x11","nativeSrc":"15343:127:75","nodeType":"YulFunctionDefinition","src":"15343:127:75"},{"body":{"nativeSrc":"15527:116:75","nodeType":"YulBlock","src":"15527:116:75","statements":[{"nativeSrc":"15537:20:75","nodeType":"YulAssignment","src":"15537:20:75","value":{"arguments":[{"name":"x","nativeSrc":"15552:1:75","nodeType":"YulIdentifier","src":"15552:1:75"},{"name":"y","nativeSrc":"15555:1:75","nodeType":"YulIdentifier","src":"15555:1:75"}],"functionName":{"name":"mul","nativeSrc":"15548:3:75","nodeType":"YulIdentifier","src":"15548:3:75"},"nativeSrc":"15548:9:75","nodeType":"YulFunctionCall","src":"15548:9:75"},"variableNames":[{"name":"product","nativeSrc":"15537:7:75","nodeType":"YulIdentifier","src":"15537:7:75"}]},{"body":{"nativeSrc":"15615:22:75","nodeType":"YulBlock","src":"15615:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15617:16:75","nodeType":"YulIdentifier","src":"15617:16:75"},"nativeSrc":"15617:18:75","nodeType":"YulFunctionCall","src":"15617:18:75"},"nativeSrc":"15617:18:75","nodeType":"YulExpressionStatement","src":"15617:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"15586:1:75","nodeType":"YulIdentifier","src":"15586:1:75"}],"functionName":{"name":"iszero","nativeSrc":"15579:6:75","nodeType":"YulIdentifier","src":"15579:6:75"},"nativeSrc":"15579:9:75","nodeType":"YulFunctionCall","src":"15579:9:75"},{"arguments":[{"name":"y","nativeSrc":"15593:1:75","nodeType":"YulIdentifier","src":"15593:1:75"},{"arguments":[{"name":"product","nativeSrc":"15600:7:75","nodeType":"YulIdentifier","src":"15600:7:75"},{"name":"x","nativeSrc":"15609:1:75","nodeType":"YulIdentifier","src":"15609:1:75"}],"functionName":{"name":"div","nativeSrc":"15596:3:75","nodeType":"YulIdentifier","src":"15596:3:75"},"nativeSrc":"15596:15:75","nodeType":"YulFunctionCall","src":"15596:15:75"}],"functionName":{"name":"eq","nativeSrc":"15590:2:75","nodeType":"YulIdentifier","src":"15590:2:75"},"nativeSrc":"15590:22:75","nodeType":"YulFunctionCall","src":"15590:22:75"}],"functionName":{"name":"or","nativeSrc":"15576:2:75","nodeType":"YulIdentifier","src":"15576:2:75"},"nativeSrc":"15576:37:75","nodeType":"YulFunctionCall","src":"15576:37:75"}],"functionName":{"name":"iszero","nativeSrc":"15569:6:75","nodeType":"YulIdentifier","src":"15569:6:75"},"nativeSrc":"15569:45:75","nodeType":"YulFunctionCall","src":"15569:45:75"},"nativeSrc":"15566:71:75","nodeType":"YulIf","src":"15566:71:75"}]},"name":"checked_mul_t_uint256","nativeSrc":"15475:168:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15506:1:75","nodeType":"YulTypedName","src":"15506:1:75","type":""},{"name":"y","nativeSrc":"15509:1:75","nodeType":"YulTypedName","src":"15509:1:75","type":""}],"returnVariables":[{"name":"product","nativeSrc":"15515:7:75","nodeType":"YulTypedName","src":"15515:7:75","type":""}],"src":"15475:168:75"},{"body":{"nativeSrc":"15697:79:75","nodeType":"YulBlock","src":"15697:79:75","statements":[{"nativeSrc":"15707:17:75","nodeType":"YulAssignment","src":"15707:17:75","value":{"arguments":[{"name":"x","nativeSrc":"15719:1:75","nodeType":"YulIdentifier","src":"15719:1:75"},{"name":"y","nativeSrc":"15722:1:75","nodeType":"YulIdentifier","src":"15722:1:75"}],"functionName":{"name":"sub","nativeSrc":"15715:3:75","nodeType":"YulIdentifier","src":"15715:3:75"},"nativeSrc":"15715:9:75","nodeType":"YulFunctionCall","src":"15715:9:75"},"variableNames":[{"name":"diff","nativeSrc":"15707:4:75","nodeType":"YulIdentifier","src":"15707:4:75"}]},{"body":{"nativeSrc":"15748:22:75","nodeType":"YulBlock","src":"15748:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15750:16:75","nodeType":"YulIdentifier","src":"15750:16:75"},"nativeSrc":"15750:18:75","nodeType":"YulFunctionCall","src":"15750:18:75"},"nativeSrc":"15750:18:75","nodeType":"YulExpressionStatement","src":"15750:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"15739:4:75","nodeType":"YulIdentifier","src":"15739:4:75"},{"name":"x","nativeSrc":"15745:1:75","nodeType":"YulIdentifier","src":"15745:1:75"}],"functionName":{"name":"gt","nativeSrc":"15736:2:75","nodeType":"YulIdentifier","src":"15736:2:75"},"nativeSrc":"15736:11:75","nodeType":"YulFunctionCall","src":"15736:11:75"},"nativeSrc":"15733:37:75","nodeType":"YulIf","src":"15733:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"15648:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15679:1:75","nodeType":"YulTypedName","src":"15679:1:75","type":""},{"name":"y","nativeSrc":"15682:1:75","nodeType":"YulTypedName","src":"15682:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"15688:4:75","nodeType":"YulTypedName","src":"15688:4:75","type":""}],"src":"15648:128:75"},{"body":{"nativeSrc":"15813:95:75","nodeType":"YulBlock","src":"15813:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15830:1:75","nodeType":"YulLiteral","src":"15830:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15837:3:75","nodeType":"YulLiteral","src":"15837:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15842:10:75","nodeType":"YulLiteral","src":"15842:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15833:3:75","nodeType":"YulIdentifier","src":"15833:3:75"},"nativeSrc":"15833:20:75","nodeType":"YulFunctionCall","src":"15833:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15823:6:75","nodeType":"YulIdentifier","src":"15823:6:75"},"nativeSrc":"15823:31:75","nodeType":"YulFunctionCall","src":"15823:31:75"},"nativeSrc":"15823:31:75","nodeType":"YulExpressionStatement","src":"15823:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15870:1:75","nodeType":"YulLiteral","src":"15870:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15873:4:75","nodeType":"YulLiteral","src":"15873:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"15863:6:75","nodeType":"YulIdentifier","src":"15863:6:75"},"nativeSrc":"15863:15:75","nodeType":"YulFunctionCall","src":"15863:15:75"},"nativeSrc":"15863:15:75","nodeType":"YulExpressionStatement","src":"15863:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15894:1:75","nodeType":"YulLiteral","src":"15894:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15897:4:75","nodeType":"YulLiteral","src":"15897:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15887:6:75","nodeType":"YulIdentifier","src":"15887:6:75"},"nativeSrc":"15887:15:75","nodeType":"YulFunctionCall","src":"15887:15:75"},"nativeSrc":"15887:15:75","nodeType":"YulExpressionStatement","src":"15887:15:75"}]},"name":"panic_error_0x12","nativeSrc":"15781:127:75","nodeType":"YulFunctionDefinition","src":"15781:127:75"},{"body":{"nativeSrc":"15959:171:75","nodeType":"YulBlock","src":"15959:171:75","statements":[{"body":{"nativeSrc":"15990:111:75","nodeType":"YulBlock","src":"15990:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16011:1:75","nodeType":"YulLiteral","src":"16011:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"16018:3:75","nodeType":"YulLiteral","src":"16018:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"16023:10:75","nodeType":"YulLiteral","src":"16023:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"16014:3:75","nodeType":"YulIdentifier","src":"16014:3:75"},"nativeSrc":"16014:20:75","nodeType":"YulFunctionCall","src":"16014:20:75"}],"functionName":{"name":"mstore","nativeSrc":"16004:6:75","nodeType":"YulIdentifier","src":"16004:6:75"},"nativeSrc":"16004:31:75","nodeType":"YulFunctionCall","src":"16004:31:75"},"nativeSrc":"16004:31:75","nodeType":"YulExpressionStatement","src":"16004:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16055:1:75","nodeType":"YulLiteral","src":"16055:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"16058:4:75","nodeType":"YulLiteral","src":"16058:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"16048:6:75","nodeType":"YulIdentifier","src":"16048:6:75"},"nativeSrc":"16048:15:75","nodeType":"YulFunctionCall","src":"16048:15:75"},"nativeSrc":"16048:15:75","nodeType":"YulExpressionStatement","src":"16048:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16083:1:75","nodeType":"YulLiteral","src":"16083:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16086:4:75","nodeType":"YulLiteral","src":"16086:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"16076:6:75","nodeType":"YulIdentifier","src":"16076:6:75"},"nativeSrc":"16076:15:75","nodeType":"YulFunctionCall","src":"16076:15:75"},"nativeSrc":"16076:15:75","nodeType":"YulExpressionStatement","src":"16076:15:75"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"15979:1:75","nodeType":"YulIdentifier","src":"15979:1:75"}],"functionName":{"name":"iszero","nativeSrc":"15972:6:75","nodeType":"YulIdentifier","src":"15972:6:75"},"nativeSrc":"15972:9:75","nodeType":"YulFunctionCall","src":"15972:9:75"},"nativeSrc":"15969:132:75","nodeType":"YulIf","src":"15969:132:75"},{"nativeSrc":"16110:14:75","nodeType":"YulAssignment","src":"16110:14:75","value":{"arguments":[{"name":"x","nativeSrc":"16119:1:75","nodeType":"YulIdentifier","src":"16119:1:75"},{"name":"y","nativeSrc":"16122:1:75","nodeType":"YulIdentifier","src":"16122:1:75"}],"functionName":{"name":"div","nativeSrc":"16115:3:75","nodeType":"YulIdentifier","src":"16115:3:75"},"nativeSrc":"16115:9:75","nodeType":"YulFunctionCall","src":"16115:9:75"},"variableNames":[{"name":"r","nativeSrc":"16110:1:75","nodeType":"YulIdentifier","src":"16110:1:75"}]}]},"name":"checked_div_t_uint256","nativeSrc":"15913:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15944:1:75","nodeType":"YulTypedName","src":"15944:1:75","type":""},{"name":"y","nativeSrc":"15947:1:75","nodeType":"YulTypedName","src":"15947:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"15953:1:75","nodeType":"YulTypedName","src":"15953:1:75","type":""}],"src":"15913:217:75"},{"body":{"nativeSrc":"16214:168:75","nodeType":"YulBlock","src":"16214:168:75","statements":[{"body":{"nativeSrc":"16260:16:75","nodeType":"YulBlock","src":"16260:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16269:1:75","nodeType":"YulLiteral","src":"16269:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16272:1:75","nodeType":"YulLiteral","src":"16272:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16262:6:75","nodeType":"YulIdentifier","src":"16262:6:75"},"nativeSrc":"16262:12:75","nodeType":"YulFunctionCall","src":"16262:12:75"},"nativeSrc":"16262:12:75","nodeType":"YulExpressionStatement","src":"16262:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16235:7:75","nodeType":"YulIdentifier","src":"16235:7:75"},{"name":"headStart","nativeSrc":"16244:9:75","nodeType":"YulIdentifier","src":"16244:9:75"}],"functionName":{"name":"sub","nativeSrc":"16231:3:75","nodeType":"YulIdentifier","src":"16231:3:75"},"nativeSrc":"16231:23:75","nodeType":"YulFunctionCall","src":"16231:23:75"},{"kind":"number","nativeSrc":"16256:2:75","nodeType":"YulLiteral","src":"16256:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16227:3:75","nodeType":"YulIdentifier","src":"16227:3:75"},"nativeSrc":"16227:32:75","nodeType":"YulFunctionCall","src":"16227:32:75"},"nativeSrc":"16224:52:75","nodeType":"YulIf","src":"16224:52:75"},{"nativeSrc":"16285:29:75","nodeType":"YulVariableDeclaration","src":"16285:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"16304:9:75","nodeType":"YulIdentifier","src":"16304:9:75"}],"functionName":{"name":"mload","nativeSrc":"16298:5:75","nodeType":"YulIdentifier","src":"16298:5:75"},"nativeSrc":"16298:16:75","nodeType":"YulFunctionCall","src":"16298:16:75"},"variables":[{"name":"value","nativeSrc":"16289:5:75","nodeType":"YulTypedName","src":"16289:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16346:5:75","nodeType":"YulIdentifier","src":"16346:5:75"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"16323:22:75","nodeType":"YulIdentifier","src":"16323:22:75"},"nativeSrc":"16323:29:75","nodeType":"YulFunctionCall","src":"16323:29:75"},"nativeSrc":"16323:29:75","nodeType":"YulExpressionStatement","src":"16323:29:75"},{"nativeSrc":"16361:15:75","nodeType":"YulAssignment","src":"16361:15:75","value":{"name":"value","nativeSrc":"16371:5:75","nodeType":"YulIdentifier","src":"16371:5:75"},"variableNames":[{"name":"value0","nativeSrc":"16361:6:75","nodeType":"YulIdentifier","src":"16361:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"16135:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16180:9:75","nodeType":"YulTypedName","src":"16180:9:75","type":""},{"name":"dataEnd","nativeSrc":"16191:7:75","nodeType":"YulTypedName","src":"16191:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16203:6:75","nodeType":"YulTypedName","src":"16203:6:75","type":""}],"src":"16135:247:75"},{"body":{"nativeSrc":"16434:104:75","nodeType":"YulBlock","src":"16434:104:75","statements":[{"nativeSrc":"16444:39:75","nodeType":"YulAssignment","src":"16444:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"16460:1:75","nodeType":"YulIdentifier","src":"16460:1:75"},{"kind":"number","nativeSrc":"16463:4:75","nodeType":"YulLiteral","src":"16463:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16456:3:75","nodeType":"YulIdentifier","src":"16456:3:75"},"nativeSrc":"16456:12:75","nodeType":"YulFunctionCall","src":"16456:12:75"},{"arguments":[{"name":"y","nativeSrc":"16474:1:75","nodeType":"YulIdentifier","src":"16474:1:75"},{"kind":"number","nativeSrc":"16477:4:75","nodeType":"YulLiteral","src":"16477:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"16470:3:75","nodeType":"YulIdentifier","src":"16470:3:75"},"nativeSrc":"16470:12:75","nodeType":"YulFunctionCall","src":"16470:12:75"}],"functionName":{"name":"sub","nativeSrc":"16452:3:75","nodeType":"YulIdentifier","src":"16452:3:75"},"nativeSrc":"16452:31:75","nodeType":"YulFunctionCall","src":"16452:31:75"},"variableNames":[{"name":"diff","nativeSrc":"16444:4:75","nodeType":"YulIdentifier","src":"16444:4:75"}]},{"body":{"nativeSrc":"16510:22:75","nodeType":"YulBlock","src":"16510:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16512:16:75","nodeType":"YulIdentifier","src":"16512:16:75"},"nativeSrc":"16512:18:75","nodeType":"YulFunctionCall","src":"16512:18:75"},"nativeSrc":"16512:18:75","nodeType":"YulExpressionStatement","src":"16512:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"16498:4:75","nodeType":"YulIdentifier","src":"16498:4:75"},{"kind":"number","nativeSrc":"16504:4:75","nodeType":"YulLiteral","src":"16504:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"16495:2:75","nodeType":"YulIdentifier","src":"16495:2:75"},"nativeSrc":"16495:14:75","nodeType":"YulFunctionCall","src":"16495:14:75"},"nativeSrc":"16492:40:75","nodeType":"YulIf","src":"16492:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"16387:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"16416:1:75","nodeType":"YulTypedName","src":"16416:1:75","type":""},{"name":"y","nativeSrc":"16419:1:75","nodeType":"YulTypedName","src":"16419:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"16425:4:75","nodeType":"YulTypedName","src":"16425:4:75","type":""}],"src":"16387:151:75"},{"body":{"nativeSrc":"16612:306:75","nodeType":"YulBlock","src":"16612:306:75","statements":[{"nativeSrc":"16622:10:75","nodeType":"YulAssignment","src":"16622:10:75","value":{"kind":"number","nativeSrc":"16631:1:75","nodeType":"YulLiteral","src":"16631:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"16622:5:75","nodeType":"YulIdentifier","src":"16622:5:75"}]},{"nativeSrc":"16641:13:75","nodeType":"YulAssignment","src":"16641:13:75","value":{"name":"_base","nativeSrc":"16649:5:75","nodeType":"YulIdentifier","src":"16649:5:75"},"variableNames":[{"name":"base","nativeSrc":"16641:4:75","nodeType":"YulIdentifier","src":"16641:4:75"}]},{"body":{"nativeSrc":"16699:213:75","nodeType":"YulBlock","src":"16699:213:75","statements":[{"body":{"nativeSrc":"16741:22:75","nodeType":"YulBlock","src":"16741:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16743:16:75","nodeType":"YulIdentifier","src":"16743:16:75"},"nativeSrc":"16743:18:75","nodeType":"YulFunctionCall","src":"16743:18:75"},"nativeSrc":"16743:18:75","nodeType":"YulExpressionStatement","src":"16743:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"16719:4:75","nodeType":"YulIdentifier","src":"16719:4:75"},{"arguments":[{"name":"max","nativeSrc":"16729:3:75","nodeType":"YulIdentifier","src":"16729:3:75"},{"name":"base","nativeSrc":"16734:4:75","nodeType":"YulIdentifier","src":"16734:4:75"}],"functionName":{"name":"div","nativeSrc":"16725:3:75","nodeType":"YulIdentifier","src":"16725:3:75"},"nativeSrc":"16725:14:75","nodeType":"YulFunctionCall","src":"16725:14:75"}],"functionName":{"name":"gt","nativeSrc":"16716:2:75","nodeType":"YulIdentifier","src":"16716:2:75"},"nativeSrc":"16716:24:75","nodeType":"YulFunctionCall","src":"16716:24:75"},"nativeSrc":"16713:50:75","nodeType":"YulIf","src":"16713:50:75"},{"body":{"nativeSrc":"16796:29:75","nodeType":"YulBlock","src":"16796:29:75","statements":[{"nativeSrc":"16798:25:75","nodeType":"YulAssignment","src":"16798:25:75","value":{"arguments":[{"name":"power","nativeSrc":"16811:5:75","nodeType":"YulIdentifier","src":"16811:5:75"},{"name":"base","nativeSrc":"16818:4:75","nodeType":"YulIdentifier","src":"16818:4:75"}],"functionName":{"name":"mul","nativeSrc":"16807:3:75","nodeType":"YulIdentifier","src":"16807:3:75"},"nativeSrc":"16807:16:75","nodeType":"YulFunctionCall","src":"16807:16:75"},"variableNames":[{"name":"power","nativeSrc":"16798:5:75","nodeType":"YulIdentifier","src":"16798:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16783:8:75","nodeType":"YulIdentifier","src":"16783:8:75"},{"kind":"number","nativeSrc":"16793:1:75","nodeType":"YulLiteral","src":"16793:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"16779:3:75","nodeType":"YulIdentifier","src":"16779:3:75"},"nativeSrc":"16779:16:75","nodeType":"YulFunctionCall","src":"16779:16:75"},"nativeSrc":"16776:49:75","nodeType":"YulIf","src":"16776:49:75"},{"nativeSrc":"16838:23:75","nodeType":"YulAssignment","src":"16838:23:75","value":{"arguments":[{"name":"base","nativeSrc":"16850:4:75","nodeType":"YulIdentifier","src":"16850:4:75"},{"name":"base","nativeSrc":"16856:4:75","nodeType":"YulIdentifier","src":"16856:4:75"}],"functionName":{"name":"mul","nativeSrc":"16846:3:75","nodeType":"YulIdentifier","src":"16846:3:75"},"nativeSrc":"16846:15:75","nodeType":"YulFunctionCall","src":"16846:15:75"},"variableNames":[{"name":"base","nativeSrc":"16838:4:75","nodeType":"YulIdentifier","src":"16838:4:75"}]},{"nativeSrc":"16874:28:75","nodeType":"YulAssignment","src":"16874:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"16890:1:75","nodeType":"YulLiteral","src":"16890:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"16893:8:75","nodeType":"YulIdentifier","src":"16893:8:75"}],"functionName":{"name":"shr","nativeSrc":"16886:3:75","nodeType":"YulIdentifier","src":"16886:3:75"},"nativeSrc":"16886:16:75","nodeType":"YulFunctionCall","src":"16886:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"16874:8:75","nodeType":"YulIdentifier","src":"16874:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"16674:8:75","nodeType":"YulIdentifier","src":"16674:8:75"},{"kind":"number","nativeSrc":"16684:1:75","nodeType":"YulLiteral","src":"16684:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"16671:2:75","nodeType":"YulIdentifier","src":"16671:2:75"},"nativeSrc":"16671:15:75","nodeType":"YulFunctionCall","src":"16671:15:75"},"nativeSrc":"16663:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"16687:3:75","nodeType":"YulBlock","src":"16687:3:75","statements":[]},"pre":{"nativeSrc":"16667:3:75","nodeType":"YulBlock","src":"16667:3:75","statements":[]},"src":"16663:249:75"}]},"name":"checked_exp_helper","nativeSrc":"16543:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"16571:5:75","nodeType":"YulTypedName","src":"16571:5:75","type":""},{"name":"exponent","nativeSrc":"16578:8:75","nodeType":"YulTypedName","src":"16578:8:75","type":""},{"name":"max","nativeSrc":"16588:3:75","nodeType":"YulTypedName","src":"16588:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"16596:5:75","nodeType":"YulTypedName","src":"16596:5:75","type":""},{"name":"base","nativeSrc":"16603:4:75","nodeType":"YulTypedName","src":"16603:4:75","type":""}],"src":"16543:375:75"},{"body":{"nativeSrc":"16982:843:75","nodeType":"YulBlock","src":"16982:843:75","statements":[{"body":{"nativeSrc":"17020:52:75","nodeType":"YulBlock","src":"17020:52:75","statements":[{"nativeSrc":"17034:10:75","nodeType":"YulAssignment","src":"17034:10:75","value":{"kind":"number","nativeSrc":"17043:1:75","nodeType":"YulLiteral","src":"17043:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"17034:5:75","nodeType":"YulIdentifier","src":"17034:5:75"}]},{"nativeSrc":"17057:5:75","nodeType":"YulLeave","src":"17057:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17002:8:75","nodeType":"YulIdentifier","src":"17002:8:75"}],"functionName":{"name":"iszero","nativeSrc":"16995:6:75","nodeType":"YulIdentifier","src":"16995:6:75"},"nativeSrc":"16995:16:75","nodeType":"YulFunctionCall","src":"16995:16:75"},"nativeSrc":"16992:80:75","nodeType":"YulIf","src":"16992:80:75"},{"body":{"nativeSrc":"17105:52:75","nodeType":"YulBlock","src":"17105:52:75","statements":[{"nativeSrc":"17119:10:75","nodeType":"YulAssignment","src":"17119:10:75","value":{"kind":"number","nativeSrc":"17128:1:75","nodeType":"YulLiteral","src":"17128:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"17119:5:75","nodeType":"YulIdentifier","src":"17119:5:75"}]},{"nativeSrc":"17142:5:75","nodeType":"YulLeave","src":"17142:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"17091:4:75","nodeType":"YulIdentifier","src":"17091:4:75"}],"functionName":{"name":"iszero","nativeSrc":"17084:6:75","nodeType":"YulIdentifier","src":"17084:6:75"},"nativeSrc":"17084:12:75","nodeType":"YulFunctionCall","src":"17084:12:75"},"nativeSrc":"17081:76:75","nodeType":"YulIf","src":"17081:76:75"},{"cases":[{"body":{"nativeSrc":"17193:52:75","nodeType":"YulBlock","src":"17193:52:75","statements":[{"nativeSrc":"17207:10:75","nodeType":"YulAssignment","src":"17207:10:75","value":{"kind":"number","nativeSrc":"17216:1:75","nodeType":"YulLiteral","src":"17216:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"17207:5:75","nodeType":"YulIdentifier","src":"17207:5:75"}]},{"nativeSrc":"17230:5:75","nodeType":"YulLeave","src":"17230:5:75"}]},"nativeSrc":"17186:59:75","nodeType":"YulCase","src":"17186:59:75","value":{"kind":"number","nativeSrc":"17191:1:75","nodeType":"YulLiteral","src":"17191:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"17261:167:75","nodeType":"YulBlock","src":"17261:167:75","statements":[{"body":{"nativeSrc":"17296:22:75","nodeType":"YulBlock","src":"17296:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17298:16:75","nodeType":"YulIdentifier","src":"17298:16:75"},"nativeSrc":"17298:18:75","nodeType":"YulFunctionCall","src":"17298:18:75"},"nativeSrc":"17298:18:75","nodeType":"YulExpressionStatement","src":"17298:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"17281:8:75","nodeType":"YulIdentifier","src":"17281:8:75"},{"kind":"number","nativeSrc":"17291:3:75","nodeType":"YulLiteral","src":"17291:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"17278:2:75","nodeType":"YulIdentifier","src":"17278:2:75"},"nativeSrc":"17278:17:75","nodeType":"YulFunctionCall","src":"17278:17:75"},"nativeSrc":"17275:43:75","nodeType":"YulIf","src":"17275:43:75"},{"nativeSrc":"17331:25:75","nodeType":"YulAssignment","src":"17331:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"17344:8:75","nodeType":"YulIdentifier","src":"17344:8:75"},{"kind":"number","nativeSrc":"17354:1:75","nodeType":"YulLiteral","src":"17354:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17340:3:75","nodeType":"YulIdentifier","src":"17340:3:75"},"nativeSrc":"17340:16:75","nodeType":"YulFunctionCall","src":"17340:16:75"},"variableNames":[{"name":"power","nativeSrc":"17331:5:75","nodeType":"YulIdentifier","src":"17331:5:75"}]},{"nativeSrc":"17369:11:75","nodeType":"YulVariableDeclaration","src":"17369:11:75","value":{"kind":"number","nativeSrc":"17379:1:75","nodeType":"YulLiteral","src":"17379:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"17373:2:75","nodeType":"YulTypedName","src":"17373:2:75","type":""}]},{"nativeSrc":"17393:7:75","nodeType":"YulAssignment","src":"17393:7:75","value":{"kind":"number","nativeSrc":"17399:1:75","nodeType":"YulLiteral","src":"17399:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"17393:2:75","nodeType":"YulIdentifier","src":"17393:2:75"}]},{"nativeSrc":"17413:5:75","nodeType":"YulLeave","src":"17413:5:75"}]},"nativeSrc":"17254:174:75","nodeType":"YulCase","src":"17254:174:75","value":{"kind":"number","nativeSrc":"17259:1:75","nodeType":"YulLiteral","src":"17259:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"17173:4:75","nodeType":"YulIdentifier","src":"17173:4:75"},"nativeSrc":"17166:262:75","nodeType":"YulSwitch","src":"17166:262:75"},{"body":{"nativeSrc":"17526:114:75","nodeType":"YulBlock","src":"17526:114:75","statements":[{"nativeSrc":"17540:28:75","nodeType":"YulAssignment","src":"17540:28:75","value":{"arguments":[{"name":"base","nativeSrc":"17553:4:75","nodeType":"YulIdentifier","src":"17553:4:75"},{"name":"exponent","nativeSrc":"17559:8:75","nodeType":"YulIdentifier","src":"17559:8:75"}],"functionName":{"name":"exp","nativeSrc":"17549:3:75","nodeType":"YulIdentifier","src":"17549:3:75"},"nativeSrc":"17549:19:75","nodeType":"YulFunctionCall","src":"17549:19:75"},"variableNames":[{"name":"power","nativeSrc":"17540:5:75","nodeType":"YulIdentifier","src":"17540:5:75"}]},{"nativeSrc":"17581:11:75","nodeType":"YulVariableDeclaration","src":"17581:11:75","value":{"kind":"number","nativeSrc":"17591:1:75","nodeType":"YulLiteral","src":"17591:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"17585:2:75","nodeType":"YulTypedName","src":"17585:2:75","type":""}]},{"nativeSrc":"17605:7:75","nodeType":"YulAssignment","src":"17605:7:75","value":{"kind":"number","nativeSrc":"17611:1:75","nodeType":"YulLiteral","src":"17611:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"17605:2:75","nodeType":"YulIdentifier","src":"17605:2:75"}]},{"nativeSrc":"17625:5:75","nodeType":"YulLeave","src":"17625:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17450:4:75","nodeType":"YulIdentifier","src":"17450:4:75"},{"kind":"number","nativeSrc":"17456:2:75","nodeType":"YulLiteral","src":"17456:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"17447:2:75","nodeType":"YulIdentifier","src":"17447:2:75"},"nativeSrc":"17447:12:75","nodeType":"YulFunctionCall","src":"17447:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"17464:8:75","nodeType":"YulIdentifier","src":"17464:8:75"},{"kind":"number","nativeSrc":"17474:2:75","nodeType":"YulLiteral","src":"17474:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"17461:2:75","nodeType":"YulIdentifier","src":"17461:2:75"},"nativeSrc":"17461:16:75","nodeType":"YulFunctionCall","src":"17461:16:75"}],"functionName":{"name":"and","nativeSrc":"17443:3:75","nodeType":"YulIdentifier","src":"17443:3:75"},"nativeSrc":"17443:35:75","nodeType":"YulFunctionCall","src":"17443:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"17487:4:75","nodeType":"YulIdentifier","src":"17487:4:75"},{"kind":"number","nativeSrc":"17493:3:75","nodeType":"YulLiteral","src":"17493:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"17484:2:75","nodeType":"YulIdentifier","src":"17484:2:75"},"nativeSrc":"17484:13:75","nodeType":"YulFunctionCall","src":"17484:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"17502:8:75","nodeType":"YulIdentifier","src":"17502:8:75"},{"kind":"number","nativeSrc":"17512:2:75","nodeType":"YulLiteral","src":"17512:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"17499:2:75","nodeType":"YulIdentifier","src":"17499:2:75"},"nativeSrc":"17499:16:75","nodeType":"YulFunctionCall","src":"17499:16:75"}],"functionName":{"name":"and","nativeSrc":"17480:3:75","nodeType":"YulIdentifier","src":"17480:3:75"},"nativeSrc":"17480:36:75","nodeType":"YulFunctionCall","src":"17480:36:75"}],"functionName":{"name":"or","nativeSrc":"17440:2:75","nodeType":"YulIdentifier","src":"17440:2:75"},"nativeSrc":"17440:77:75","nodeType":"YulFunctionCall","src":"17440:77:75"},"nativeSrc":"17437:203:75","nodeType":"YulIf","src":"17437:203:75"},{"nativeSrc":"17649:65:75","nodeType":"YulVariableDeclaration","src":"17649:65:75","value":{"arguments":[{"name":"base","nativeSrc":"17691:4:75","nodeType":"YulIdentifier","src":"17691:4:75"},{"name":"exponent","nativeSrc":"17697:8:75","nodeType":"YulIdentifier","src":"17697:8:75"},{"arguments":[{"kind":"number","nativeSrc":"17711:1:75","nodeType":"YulLiteral","src":"17711:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17707:3:75","nodeType":"YulIdentifier","src":"17707:3:75"},"nativeSrc":"17707:6:75","nodeType":"YulFunctionCall","src":"17707:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"17672:18:75","nodeType":"YulIdentifier","src":"17672:18:75"},"nativeSrc":"17672:42:75","nodeType":"YulFunctionCall","src":"17672:42:75"},"variables":[{"name":"power_1","nativeSrc":"17653:7:75","nodeType":"YulTypedName","src":"17653:7:75","type":""},{"name":"base_1","nativeSrc":"17662:6:75","nodeType":"YulTypedName","src":"17662:6:75","type":""}]},{"body":{"nativeSrc":"17759:22:75","nodeType":"YulBlock","src":"17759:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"17761:16:75","nodeType":"YulIdentifier","src":"17761:16:75"},"nativeSrc":"17761:18:75","nodeType":"YulFunctionCall","src":"17761:18:75"},"nativeSrc":"17761:18:75","nodeType":"YulExpressionStatement","src":"17761:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"17729:7:75","nodeType":"YulIdentifier","src":"17729:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17746:1:75","nodeType":"YulLiteral","src":"17746:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17742:3:75","nodeType":"YulIdentifier","src":"17742:3:75"},"nativeSrc":"17742:6:75","nodeType":"YulFunctionCall","src":"17742:6:75"},{"name":"base_1","nativeSrc":"17750:6:75","nodeType":"YulIdentifier","src":"17750:6:75"}],"functionName":{"name":"div","nativeSrc":"17738:3:75","nodeType":"YulIdentifier","src":"17738:3:75"},"nativeSrc":"17738:19:75","nodeType":"YulFunctionCall","src":"17738:19:75"}],"functionName":{"name":"gt","nativeSrc":"17726:2:75","nodeType":"YulIdentifier","src":"17726:2:75"},"nativeSrc":"17726:32:75","nodeType":"YulFunctionCall","src":"17726:32:75"},"nativeSrc":"17723:58:75","nodeType":"YulIf","src":"17723:58:75"},{"nativeSrc":"17790:29:75","nodeType":"YulAssignment","src":"17790:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"17803:7:75","nodeType":"YulIdentifier","src":"17803:7:75"},{"name":"base_1","nativeSrc":"17812:6:75","nodeType":"YulIdentifier","src":"17812:6:75"}],"functionName":{"name":"mul","nativeSrc":"17799:3:75","nodeType":"YulIdentifier","src":"17799:3:75"},"nativeSrc":"17799:20:75","nodeType":"YulFunctionCall","src":"17799:20:75"},"variableNames":[{"name":"power","nativeSrc":"17790:5:75","nodeType":"YulIdentifier","src":"17790:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"16923:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"16953:4:75","nodeType":"YulTypedName","src":"16953:4:75","type":""},{"name":"exponent","nativeSrc":"16959:8:75","nodeType":"YulTypedName","src":"16959:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"16972:5:75","nodeType":"YulTypedName","src":"16972:5:75","type":""}],"src":"16923:902:75"},{"body":{"nativeSrc":"17898:72:75","nodeType":"YulBlock","src":"17898:72:75","statements":[{"nativeSrc":"17908:56:75","nodeType":"YulAssignment","src":"17908:56:75","value":{"arguments":[{"name":"base","nativeSrc":"17938:4:75","nodeType":"YulIdentifier","src":"17938:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"17948:8:75","nodeType":"YulIdentifier","src":"17948:8:75"},{"kind":"number","nativeSrc":"17958:4:75","nodeType":"YulLiteral","src":"17958:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"17944:3:75","nodeType":"YulIdentifier","src":"17944:3:75"},"nativeSrc":"17944:19:75","nodeType":"YulFunctionCall","src":"17944:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"17917:20:75","nodeType":"YulIdentifier","src":"17917:20:75"},"nativeSrc":"17917:47:75","nodeType":"YulFunctionCall","src":"17917:47:75"},"variableNames":[{"name":"power","nativeSrc":"17908:5:75","nodeType":"YulIdentifier","src":"17908:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"17830:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"17869:4:75","nodeType":"YulTypedName","src":"17869:4:75","type":""},{"name":"exponent","nativeSrc":"17875:8:75","nodeType":"YulTypedName","src":"17875:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"17888:5:75","nodeType":"YulTypedName","src":"17888:5:75","type":""}],"src":"17830:140:75"}]},"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_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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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_$624_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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_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_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_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_$19475_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"18538":[{"length":32,"start":881},{"length":32,"start":3469},{"length":32,"start":3711},{"length":32,"start":3934},{"length":32,"start":4215}],"18880":[{"length":32,"start":580},{"length":32,"start":736},{"length":32,"start":1276},{"length":32,"start":1513},{"length":32,"start":1638},{"length":32,"start":2543},{"length":32,"start":4336}],"18886":[{"length":32,"start":332},{"length":32,"start":2094},{"length":32,"start":2486},{"length":32,"start":2615},{"length":32,"start":4408}],"18889":[{"length":32,"start":383},{"length":32,"start":3092},{"length":32,"start":3386},{"length":32,"start":4645},{"length":32,"start":4824}],"18892":[{"length":32,"start":515},{"length":32,"start":828},{"length":32,"start":1022},{"length":32,"start":1735},{"length":32,"start":2890},{"length":32,"start":3058},{"length":32,"start":3352},{"length":32,"start":3516},{"length":32,"start":3652},{"length":32,"start":3875},{"length":32,"start":4175},{"length":32,"start":4679},{"length":32,"start":4871}],"18894":[{"length":32,"start":2818},{"length":32,"start":4715},{"length":32,"start":4919}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2278},{"length":20,"start":3028},{"length":20,"start":3318},{"length":20,"start":4611}]}},"object":"608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c80639c4667a21161006e5780639c4667a21461016e5780639cd47128146101b9578063b6b55f25146101cc578063ce96cb77146101df578063de846ae4146101f2578063f3e0ffbf14610225575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f357806342b054f0146101145780635a117456146101345780635b9a4c3514610147575b5f5ffd5b6100c86100c33660046115f2565b610238565b6040516100d5919061166d565b60405180910390f35b6100f16100ec36600461167f565b6102d6565b005b6101066101013660046116aa565b610479565b6040519081526020016100d5565b6101276101223660046116aa565b6104ce565b6040516100d59190611727565b6100f1610142366004611746565b6104f2565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b6101a161017c3660046116aa565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100d5565b6100f16101c7366004611761565b6105df565b6100f16101da36600461167f565b61065c565b6101066101ed3660046116aa565b61073e565b6101a16102003660046116aa565b507f000000000000000000000000000000000000000000000000000000000000000090565b6101066102333660046116aa565b610784565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361028357604051632abf118b60e21b815260040160405180910390fd5b5f60ff84168015610296576102966116c5565b90505f8180156102a8576102a86116c5565b036100b1576102bf6102b930610804565b846108bf565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361031f57604051632abf118b60e21b815260040160405180910390fd5b801561047657604051631a4ca37b60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec906064016020604051808303815f875af11580156103b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103db9190611793565b506103e5816109e5565b6040516370a0823160e01b8152306004820152610476907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561044b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046f9190611793565b6001610d6b565b50565b5f5f610483610fb9565b805151909150600160381b1615806104a257508051516001603c1b1615155b806104b857508051516702000000000000001615155b156104c557505f92915050565b505f1992915050565b60408051606080820183525f8083526020830152918101919091526102d082610804565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361053b57604051632abf118b60e21b815260040160405180910390fd5b5f610544610fb9565b61010001519050811580156105bd57506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa158015610596573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ba9190611793565b15155b156105db576040516342a176d160e11b815260040160405180910390fd5b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361062857604051632abf118b60e21b815260040160405180910390fd5b604080516060810190915261047690805f81526020015f815260200160405180602001604052805f815250815250826108bf565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106a557604051632abf118b60e21b815260040160405180910390fd5b6106ae816110e6565b6040516370a0823160e01b8152306004820152610476907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610714573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107389190611793565b5f610d6b565b5f5f610748610fb9565b805151909150600160381b16158061076757508051516001603c1b1615155b1561077457505f92915050565b61077d83610784565b9392505050565b5f6102d0610790610fb9565b61010001516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156107da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107fe9190611793565b836112d2565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610882573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108a991908101906117f7565b90508080602001905181019061077d9190611829565b5f818060200190518101906108d49190611829565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c9061090e908490600401611727565b5f6040518083038186803b158015610924575f5ffd5b505af4158015610936573d5f5f3e3d5ffd5b5050505081518160405160200161094d9190611727565b604051602081830303815290604052511461097b576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f883826040516109ac9291906118b5565b60405180910390a17f00000000000000000000000000000000000000000000000000000000000000006109df8382611965565b50505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a2e57604051632abf118b60e21b815260040160405180910390fd5b8015610476575f7f00000000000000000000000000000000000000000000000000000000000000008054610a61906118e2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8d906118e2565b8015610ad85780601f10610aaf57610100808354040283529160200191610ad8565b820191905f5260205f20905b815481529060010190602001808311610abb57829003601f168201915b5050505050806020019051810190610af09190611829565b90505f610b26670de0b6b3a7640000807f000000000000000000000000000000000000000000000000000000000000000061139b565b6040516370a0823160e01b8152306004820152909150610bb9906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610b8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb39190611793565b306112d2565b8310610ce7576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610c63573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c879190611793565b866040518663ffffffff1660e01b8152600401610ca8959493929190611a20565b602060405180830381865af4158015610cc3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109df9190611793565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d90610ca89085907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009089908890600401611a20565b505050565b815f03610d76575050565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610e02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e269190611a5f565b508015610f0c5760405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610ec0575f5ffd5b505af1925050508015610ed1575060015b6105db576040518281527f323f803ab99bd4b7b37bba0e83169793239f293cc8b9d11837997563c5902eac9060200160405180910390a15050565b60405163617ba03760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490523060448301525f60648301527f0000000000000000000000000000000000000000000000000000000000000000169063617ba037906084015f604051808303815f87803b158015610f9f575f5ffd5b505af1158015610fb1573d5f5f3e3d5ffd5b505050505050565b60408051610200810182525f6101e08201818152825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c08101919091526040516335ea6a7560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa1580156110bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e19190611b0e565b905090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361112f57604051632abf118b60e21b815260040160405180910390fd5b8015610476575f7f00000000000000000000000000000000000000000000000000000000000000008054611162906118e2565b80601f016020809104026020016040519081016040528092919081815260200182805461118e906118e2565b80156111d95780601f106111b0576101008083540402835291602001916111d9565b820191905f5260205f20905b8154815290600101906020018083116111bc57829003601f168201915b50505050508060200190518101906111f19190611829565b604051637756691560e01b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__906377566915906112939084907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088907f000000000000000000000000000000000000000000000000000000000000000090600401611a20565b602060405180830381865af41580156112ae573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d669190611793565b5f6112fc7f0000000000000000000000000000000000000000000000000000000000000000611451565b61139161136461132b7f0000000000000000000000000000000000000000000000000000000000000000611451565b6113359087611c4c565b7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000061139b565b61136d85610804565b6020015161138390670de0b6b3a7640000611c63565b670de0b6b3a764000061139b565b61077d9190611c8a565b5f838302815f1985870982811083820303915050805f036113cf578382816113c5576113c5611c76565b049250505061077d565b8084116113e6576113e660038515026011186114c8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561148e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114b29190611ca9565b6114bd906012611cc4565b6102d090600a611dc0565b634e487b715f52806020526024601cfd5b60ff81168114610476575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561151e5761151e6114e7565b60405290565b6040516101e0810167ffffffffffffffff8111828210171561151e5761151e6114e7565b604051601f8201601f1916810167ffffffffffffffff81118282101715611571576115716114e7565b604052919050565b5f67ffffffffffffffff821115611592576115926114e7565b50601f01601f191660200190565b5f82601f8301126115af575f5ffd5b81356115c26115bd82611579565b611548565b8181528460208386010111156115d6575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611603575f5ffd5b823561160e816114d9565b9150602083013567ffffffffffffffff811115611629575f5ffd5b611635858286016115a0565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61077d602083018461163f565b5f6020828403121561168f575f5ffd5b5035919050565b6001600160a01b0381168114610476575f5ffd5b5f602082840312156116ba575f5ffd5b813561077d81611696565b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106116f857634e487b7160e01b5f52602160045260245ffd5b808452506020820151602084015260408201516060604085015261171f606085018261163f565b949350505050565b602081525f61077d60208301846116d9565b8015158114610476575f5ffd5b5f60208284031215611756575f5ffd5b813561077d81611739565b5f60208284031215611771575f5ffd5b813567ffffffffffffffff811115611787575f5ffd5b61171f848285016115a0565b5f602082840312156117a3575f5ffd5b5051919050565b5f82601f8301126117b9575f5ffd5b81516117c76115bd82611579565b8181528460208386010111156117db575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215611807575f5ffd5b815167ffffffffffffffff81111561181d575f5ffd5b61171f848285016117aa565b5f60208284031215611839575f5ffd5b815167ffffffffffffffff81111561184f575f5ffd5b820160608185031215611860575f5ffd5b6118686114fb565b815160038110611876575f5ffd5b815260208281015190820152604082015167ffffffffffffffff81111561189b575f5ffd5b6118a7868285016117aa565b604083015250949350505050565b604081525f6118c760408301856116d9565b82810360208401526118d981856116d9565b95945050505050565b600181811c908216806118f657607f821691505b60208210810361191457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d6657805f5260205f20601f840160051c8101602085101561193f5750805b601f840160051c820191505b8181101561195e575f815560010161194b565b5050505050565b815167ffffffffffffffff81111561197f5761197f6114e7565b6119938161198d84546118e2565b8461191a565b6020601f8211600181146119c5575f83156119ae5750848201515b5f19600385901b1c1916600184901b17845561195e565b5f84815260208120601f198516915b828110156119f457878501518255602094850194600190920191016119d4565b5084821015611a1157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f611a3260a08301886116d9565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f60208284031215611a6f575f5ffd5b815161077d81611739565b5f60208284031215611a8a575f5ffd5b6040516020810167ffffffffffffffff81118282101715611aad57611aad6114e7565b6040529151825250919050565b80516fffffffffffffffffffffffffffffffff81168114611ad9575f5ffd5b919050565b805164ffffffffff81168114611ad9575f5ffd5b805161ffff81168114611ad9575f5ffd5b8051611ad981611696565b5f6101e0828403128015611b20575f5ffd5b50611b29611524565b611b338484611a7a565b8152611b4160208401611aba565b6020820152611b5260408401611aba565b6040820152611b6360608401611aba565b6060820152611b7460808401611aba565b6080820152611b8560a08401611aba565b60a0820152611b9660c08401611ade565b60c0820152611ba760e08401611af2565b60e0820152611bb96101008401611b03565b610100820152611bcc6101208401611b03565b610120820152611bdf6101408401611b03565b610140820152611bf26101608401611b03565b610160820152611c056101808401611aba565b610180820152611c186101a08401611aba565b6101a0820152611c2b6101c08401611aba565b6101c08201529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102d0576102d0611c38565b818103818111156102d0576102d0611c38565b634e487b7160e01b5f52601260045260245ffd5b5f82611ca457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611cb9575f5ffd5b815161077d816114d9565b60ff82811682821603908111156102d0576102d0611c38565b6001815b6001841115611d1857808504811115611cfc57611cfc611c38565b6001841615611d0a57908102905b60019390931c928002611ce1565b935093915050565b5f82611d2e575060016102d0565b81611d3a57505f6102d0565b8160018114611d505760028114611d5a57611d76565b60019150506102d0565b60ff841115611d6b57611d6b611c38565b50506001821b6102d0565b5060208310610133831016604e8410600b8410161715611d99575081810a6102d0565b611da55f198484611cdd565b805f1904821115611db857611db8611c38565b029392505050565b5f61077d60ff841683611d2056fea2646970667358221220e19d8046f8602bcb032d96b7e862b29980f87ac47a3ba88d03f9cd416094454c64736f6c634300081c0033","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 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x225 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 0x42B054F0 EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x147 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x15F2 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x166D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x2D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x106 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x479 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x127 PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x1727 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x1746 JUMP JUMPDEST PUSH2 0x4F2 JUMP JUMPDEST PUSH2 0x106 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x17C CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA 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 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1761 JUMP JUMPDEST PUSH2 0x5DF JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1DA CALLDATASIZE PUSH1 0x4 PUSH2 0x167F JUMP JUMPDEST PUSH2 0x65C JUMP JUMPDEST PUSH2 0x106 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x106 PUSH2 0x233 CALLDATASIZE PUSH1 0x4 PUSH2 0x16AA JUMP JUMPDEST PUSH2 0x784 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x283 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 0x296 JUMPI PUSH2 0x296 PUSH2 0x16C5 JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2A8 JUMPI PUSH2 0x2A8 PUSH2 0x16C5 JUMP JUMPDEST SUB PUSH2 0xB1 JUMPI PUSH2 0x2BF PUSH2 0x2B9 ADDRESS PUSH2 0x804 JUMP JUMPDEST DUP5 PUSH2 0x8BF 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 0x31F 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 0x476 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 0x3B7 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 0x3DB SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST POP PUSH2 0x3E5 DUP2 PUSH2 0x9E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x476 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 0x44B 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 0x46F SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x1 PUSH2 0xD6B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x483 PUSH2 0xFB9 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x4A2 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST DUP1 PUSH2 0x4B8 JUMPI POP DUP1 MLOAD MLOAD PUSH8 0x200000000000000 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x4C5 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 0x2D0 DUP3 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x53B 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 0x544 PUSH2 0xFB9 JUMP JUMPDEST PUSH2 0x100 ADD MLOAD SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x5BD 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 0x596 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 0x5BA SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x5DB 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 0x628 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 0x476 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 0x8BF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x6A5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2ABF118B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6AE DUP2 PUSH2 0x10E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x476 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 0x714 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 0x738 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH0 PUSH2 0xD6B JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0x748 PUSH2 0xFB9 JUMP JUMPDEST DUP1 MLOAD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x38 SHL AND ISZERO DUP1 PUSH2 0x767 JUMPI POP DUP1 MLOAD MLOAD PUSH1 0x1 PUSH1 0x3C SHL AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x774 JUMPI POP PUSH0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x77D DUP4 PUSH2 0x784 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x2D0 PUSH2 0x790 PUSH2 0xFB9 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 0x7DA 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 0x7FE SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST DUP4 PUSH2 0x12D2 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 0x882 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 0x8A9 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x17F7 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x77D SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x8D4 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0x90E SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x1727 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x936 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x94D SWAP2 SWAP1 PUSH2 0x1727 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0x97B 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 0x9AC SWAP3 SWAP2 SWAP1 PUSH2 0x18B5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x9DF DUP4 DUP3 PUSH2 0x1965 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0xA2E 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 0x476 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0xA61 SWAP1 PUSH2 0x18E2 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 0xA8D SWAP1 PUSH2 0x18E2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAD8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAD8 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 0xABB 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 0xAF0 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0xB26 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0x139B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0xBB9 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 0xB8F 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 0xBB3 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST ADDRESS PUSH2 0x12D2 JUMP JUMPDEST DUP4 LT PUSH2 0xCE7 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 0xC63 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 0xC87 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA8 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1A20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xCC3 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 0x9DF SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0xCA8 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A20 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 PUSH0 SUB PUSH2 0xD76 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 0xE02 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 0xE26 SWAP2 SWAP1 PUSH2 0x1A5F JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0xF0C 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 0xEC0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xED1 JUMPI POP PUSH1 0x1 JUMPDEST PUSH2 0x5DB 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 0xF9F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB1 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 0x10BD 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 0x10E1 SWAP2 SWAP1 PUSH2 0x1B0E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x112F 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 0x476 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x1162 SWAP1 PUSH2 0x18E2 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 0x118E SWAP1 PUSH2 0x18E2 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x11D9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11D9 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 0x11BC 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 0x11F1 SWAP2 SWAP1 PUSH2 0x1829 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0x1293 SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A20 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x12AE 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 0xD66 SWAP2 SWAP1 PUSH2 0x1793 JUMP JUMPDEST PUSH0 PUSH2 0x12FC PUSH32 0x0 PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x1391 PUSH2 0x1364 PUSH2 0x132B PUSH32 0x0 PUSH2 0x1451 JUMP JUMPDEST PUSH2 0x1335 SWAP1 DUP8 PUSH2 0x1C4C JUMP JUMPDEST PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x139B JUMP JUMPDEST PUSH2 0x136D DUP6 PUSH2 0x804 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0x1383 SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1C63 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0x139B JUMP JUMPDEST PUSH2 0x77D SWAP2 SWAP1 PUSH2 0x1C8A JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x13CF JUMPI DUP4 DUP3 DUP2 PUSH2 0x13C5 JUMPI PUSH2 0x13C5 PUSH2 0x1C76 JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0x77D JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x13E6 JUMPI PUSH2 0x13E6 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x14C8 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST 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 0x148E 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 0x14B2 SWAP2 SWAP1 PUSH2 0x1CA9 JUMP JUMPDEST PUSH2 0x14BD SWAP1 PUSH1 0x12 PUSH2 0x1CC4 JUMP JUMPDEST PUSH2 0x2D0 SWAP1 PUSH1 0xA PUSH2 0x1DC0 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x476 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 0x151E JUMPI PUSH2 0x151E PUSH2 0x14E7 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 0x151E JUMPI PUSH2 0x151E PUSH2 0x14E7 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 0x1571 JUMPI PUSH2 0x1571 PUSH2 0x14E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1592 JUMPI PUSH2 0x1592 PUSH2 0x14E7 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x15AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x15C2 PUSH2 0x15BD DUP3 PUSH2 0x1579 JUMP JUMPDEST PUSH2 0x1548 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x15D6 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 0x1603 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x160E DUP2 PUSH2 0x14D9 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1629 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1635 DUP6 DUP3 DUP7 ADD PUSH2 0x15A0 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 0x77D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x163F JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x168F 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 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16BA JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x1696 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 0x16F8 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 0x171F PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x163F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x77D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x16D9 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x476 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1756 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x77D DUP2 PUSH2 0x1739 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1771 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1787 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x171F DUP5 DUP3 DUP6 ADD PUSH2 0x15A0 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x17A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x17B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x17C7 PUSH2 0x15BD DUP3 PUSH2 0x1579 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x17DB 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 0x1807 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x181D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x171F DUP5 DUP3 DUP6 ADD PUSH2 0x17AA JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1839 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x184F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x1860 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1868 PUSH2 0x14FB JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1876 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 0x189B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x18A7 DUP7 DUP3 DUP6 ADD PUSH2 0x17AA JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x18C7 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x16D9 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x18D9 DUP2 DUP6 PUSH2 0x16D9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18F6 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1914 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 0xD66 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x193F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x195E JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x194B JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x197F JUMPI PUSH2 0x197F PUSH2 0x14E7 JUMP JUMPDEST PUSH2 0x1993 DUP2 PUSH2 0x198D DUP5 SLOAD PUSH2 0x18E2 JUMP JUMPDEST DUP5 PUSH2 0x191A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x19C5 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x19AE 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 0x195E JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19F4 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x19D4 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1A11 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 0x1A32 PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x16D9 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 0x1A6F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x77D DUP2 PUSH2 0x1739 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1A8A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1AAD JUMPI PUSH2 0x1AAD PUSH2 0x14E7 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH5 0xFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1AD9 DUP2 PUSH2 0x1696 JUMP JUMPDEST PUSH0 PUSH2 0x1E0 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x1B20 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1B29 PUSH2 0x1524 JUMP JUMPDEST PUSH2 0x1B33 DUP5 DUP5 PUSH2 0x1A7A JUMP JUMPDEST DUP2 MSTORE PUSH2 0x1B41 PUSH1 0x20 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x1B52 PUSH1 0x40 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x1B63 PUSH1 0x60 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x1B74 PUSH1 0x80 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1B85 PUSH1 0xA0 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1B96 PUSH1 0xC0 DUP5 ADD PUSH2 0x1ADE JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x1BA7 PUSH1 0xE0 DUP5 ADD PUSH2 0x1AF2 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x1BB9 PUSH2 0x100 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x100 DUP3 ADD MSTORE PUSH2 0x1BCC PUSH2 0x120 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x1BDF PUSH2 0x140 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MSTORE PUSH2 0x1BF2 PUSH2 0x160 DUP5 ADD PUSH2 0x1B03 JUMP JUMPDEST PUSH2 0x160 DUP3 ADD MSTORE PUSH2 0x1C05 PUSH2 0x180 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH2 0x180 DUP3 ADD MSTORE PUSH2 0x1C18 PUSH2 0x1A0 DUP5 ADD PUSH2 0x1ABA JUMP JUMPDEST PUSH2 0x1A0 DUP3 ADD MSTORE PUSH2 0x1C2B PUSH2 0x1C0 DUP5 ADD PUSH2 0x1ABA 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 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH2 0x1CA4 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 0x1CB9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x77D DUP2 PUSH2 0x14D9 JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x2D0 JUMPI PUSH2 0x2D0 PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x1D18 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x1CFC JUMPI PUSH2 0x1CFC PUSH2 0x1C38 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x1D0A JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x1CE1 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x1D2E JUMPI POP PUSH1 0x1 PUSH2 0x2D0 JUMP JUMPDEST DUP2 PUSH2 0x1D3A JUMPI POP PUSH0 PUSH2 0x2D0 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1D50 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1D5A JUMPI PUSH2 0x1D76 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1D6B JUMPI PUSH2 0x1D6B PUSH2 0x1C38 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x2D0 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x1D99 JUMPI POP DUP2 DUP2 EXP PUSH2 0x2D0 JUMP JUMPDEST PUSH2 0x1DA5 PUSH0 NOT DUP5 DUP5 PUSH2 0x1CDD JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x1DB8 JUMPI PUSH2 0x1DB8 PUSH2 0x1C38 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x77D PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x1D20 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 SWAP14 DUP1 CHAINID 0xF8 PUSH1 0x2B 0xCB SUB 0x2D SWAP7 0xB7 0xE8 PUSH3 0xB29980 0xF8 PUSH27 0xC47A3BA88D03F9CD416094454C64736F6C634300081C0033000000 ","sourceMap":"823:3242:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:849:58;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2922:550:57;;;;;;:::i;:::-;;:::i;:::-;;2366:344;;;;;;:::i;:::-;;:::i;:::-;;;3432:25:75;;;3420:2;3405:18;2366:344:57;3286:177:75;8399:137:58;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1768:244:57:-;;;;;;:::i;:::-;;:::i;1055:81:58:-;;;;;3523:104;;;;;;:::i;:::-;-1:-1:-1;3615:6:58;;3523:104;;;;-1:-1:-1;;;;;5069:32:75;;;5051:51;;5039:2;5024:18;3523:104:58;4905:203:75;2616:189:58;;;;;;:::i;:::-;;:::i;3476:197:57:-;;;;;;:::i;:::-;;:::i;2016:346::-;;;;;;:::i;:::-;;:::i;3712:99:58:-;;;;;;:::i;:::-;-1:-1:-1;3793:12:58;;3712:99;2714:204:57;;;;;;:::i;:::-;;:::i;7149:849:58:-;7243:12;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;7263:28:::1;7294:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7263:53:::0;-1:-1:-1;7343:28:58::1;7326:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7322:648:::1;;7650:53;7665:29;7688:4;7665:14;:29::i;:::-;7696:6;7650:14;:53::i;:::-;-1:-1:-1::0;;7984:9:58::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7984:9:58;;1740:1:::1;7149:849:::0;;;;:::o;2922:550:57:-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;3000:24:57;;3017:7:::1;3000:24;3083:71;::::0;-1:-1:-1;;;3083:71:57;;-1:-1:-1;;;;;3106:12:57::1;5658:32:75::0;;3083:71:57::1;::::0;::::1;5640:51:75::0;-1:-1:-1;;5707:18:75;;;5700:34;3148:4:57::1;5750:18:75::0;;;5743:60;3083:5:57::1;:14;::::0;::::1;::::0;5613:18:75;;3083:71:57::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3213:22;3228:6;3213:14;:22::i;:::-;3423:37;::::0;-1:-1:-1;;;3423:37:57;;3454:4:::1;3423:37;::::0;::::1;5051:51:75::0;3415:52:57::1;::::0;3423:12:::1;-1:-1:-1::0;;;;;3423:22:57::1;::::0;::::1;::::0;5024:18:75;;3423:37:57::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3462:4;3415:7;:52::i;:::-;2922:550:::0;:::o;2366:344::-;2447:7;2462:36;2501:14;:12;:14::i;:::-;2526:21;;9029:9:63;2526:21:57;;-1:-1:-1;;;;9029:24:63;9028:31;;2525:71:57;;-1:-1:-1;2563:21:57;;10311:9:63;-1:-1:-1;;;10311:24:63;10310:31;;2563:33:57;2525:108;;;-1:-1:-1;2600:21:57;;9670:9:63;9682:12;9670:24;9669:31;;2600:33:57;2521:128;;;-1:-1:-1;2648:1:57;;2366:344;-1:-1:-1;;2366:344:57:o;2521:128::-;-1:-1:-1;;;2688:17:57;2366:344;-1:-1:-1;;2366:344:57:o;8399:137:58:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8506:25:58;8521:9;8506:14;:25::i;1768:244:57:-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;1846:21:57::1;1885:14;:12;:14::i;:::-;:28;;;1846:68;;1925:5;1924:6;:46;;;;-1:-1:-1::0;1934:31:57::1;::::0;-1:-1:-1;;;1934:31:57;;1959:4:::1;1934:31;::::0;::::1;5051:51:75::0;-1:-1:-1;;;;;1934:16:57;::::1;::::0;::::1;::::0;5024:18:75;;1934:31:57::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36:::0;::::1;1924:46;1920:87;;;1979:28;;-1:-1:-1::0;;;1979:28:57::1;;;;;;;;;;;1920:87;1840:172;1768:244:::0;:::o;2616:189:58:-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;2717::::1;::::0;;::::1;::::0;::::1;::::0;;;2702:98:::1;::::0;2717:72;-1:-1:-1;2717:72:58::1;;;;2776:1;2717:72;;;;2779:9;;;;;;;;;;;::::0;2717:72:::1;;::::0;2791:8:::1;2702:14;:98::i;3476:197:57:-:0;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;3553:21:57::1;3567:6;3553:13;:21::i;:::-;3623:37;::::0;-1:-1:-1;;;3623:37:57;;3654:4:::1;3623:37;::::0;::::1;5051:51:75::0;3615:53:57::1;::::0;3623:12:::1;-1:-1:-1::0;;;;;3623:22:57::1;::::0;::::1;::::0;5024:18:75;;3623:37:57::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3662:5;3615:7;:53::i;2016:346::-:0;2094:7;2109:36;2148:14;:12;:14::i;:::-;2173:21;;9029:9:63;2173:21:57;;-1:-1:-1;;;;9029:24:63;9028:31;;2172:71:57;;-1:-1:-1;2210:21:57;;10311:9:63;-1:-1:-1;;;10311:24:63;10310:31;;2210:33:57;2168:85;;;-1:-1:-1;2252:1:57;;2016:346;-1:-1:-1;;2016:346:57:o;2168:85::-;2266:22;2278:9;2266:11;:22::i;:::-;2259:29;2016:346;-1:-1:-1;;;2016:346:57:o;2714:204::-;2792:14;2821:92;2851:14;:12;:14::i;:::-;:28;;;2836:65;;-1:-1:-1;;;2836:65:57;;-1:-1:-1;;;;;5069:32:75;;;2836:65:57;;;5051:51:75;2836:54:57;;;;;;5024:18:75;;2836:65:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2903:9;2821:14;:92::i;8002:260:58:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8138:51:58;;-1:-1:-1;;;8138:51:58;;8177:11;8138:51;;;3432:25:75;8105:30:58;;-1:-1:-1;;;;;8138:38:58;;;;;3405:18:75;;8138:51:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8138:51:58;;;;;;;;;;;;:::i;:::-;8105:84;;8213:17;8202:55;;;;;;;;;;;;:::i;6633:478::-;6752:40;6806:20;6795:58;;;;;;;;;;;;:::i;:::-;6859:21;;-1:-1:-1;;;6859:21:58;;6752:101;;-1:-1:-1;6859:19:58;;;;:21;;6752:101;;6859:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6923:20;:27;6901:10;6890:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6886:93;;6959:20;;-1:-1:-1;;;6959:20:58;;;;;;;;;;;6886:93;6990:44;7008:13;7023:10;6990:44;;;;;;;:::i;:::-;;;;;;;;7065:11;7040:66;7086:20;7065:11;7040:66;:::i;:::-;;6746:365;6633:478;;:::o;5004:974::-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;5082:24;;5099:7:::1;5082:24;5111:40;5197:11;5154:99:::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5111:142;;5367:13;5383:29;994:4;::::0;5405:6:::1;5383:11;:29::i;:::-;5486:37;::::0;-1:-1:-1;;;5486:37:58;;5517:4:::1;5486:37;::::0;::::1;5051:51:75::0;5367:45:58;;-1:-1:-1;5471:68:58::1;::::0;-1:-1:-1;;;;;5486:12:58::1;:22;::::0;::::1;::::0;5024:18:75;;5486:37:58::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5533:4;5471:14;:68::i;:::-;5461:6;:78;5457:517;;5824:37;::::0;-1:-1:-1;;;5824:37:58;;5855:4:::1;5824:37;::::0;::::1;5051:51:75::0;5762:21:58::1;::::0;::::1;::::0;:10;;5792:12:::1;::::0;5815:6:::1;::::0;-1:-1:-1;;;;;5824:22:58;::::1;::::0;::::1;::::0;5024:18:75;;5824:37:58::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5863:5;5762:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5457:517::-;5890:77;::::0;-1:-1:-1;;;5890:77:58;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5921:12:::1;::::0;5944:6:::1;::::0;5953;;5961:5;;5890:77:::1;;;:::i;5457:517::-;5076:902;;5004:974:::0;:::o;3677:386:57:-;3744:6;3754:1;3744:11;3740:24;;3677:386;;:::o;3740:24::-;3769:44;;-1:-1:-1;;;3769:44:57;;-1:-1:-1;;;;;3798:5:57;11799:32:75;;3769:44:57;;;11781:51:75;11848:18;;;11841:34;;;3769:12:57;:20;;;;11754:18:75;;3769:44:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3823:8;3819:239;;;3845:61;;-1:-1:-1;;;3845:61:57;;-1:-1:-1;;;;;3866:12:57;12392:32:75;;3845:61:57;;;12374:51:75;12441:18;;;12434:34;;;3897:4:57;12484:18:75;;;12477:60;-1:-1:-1;12553:18:75;;;12546:47;3845:5:57;:12;;;;12346:19:75;;3845:61:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3841:144;;3954:22;;3432:25:75;;;3954:22:57;;3420:2:75;3405:18;3954:22:57;;;;;;;1840:172:::1;1768:244:::0;:::o;3819:239::-;3997:61;;-1:-1:-1;;;3997:61:57;;-1:-1:-1;;;;;4018:12:57;12392:32:75;;3997:61:57;;;12374:51:75;12441:18;;;12434:34;;;4049:4:57;12484:18:75;;;12477:60;-1:-1:-1;12553:18:75;;;12546:47;3997:5:57;:12;;;;12346:19:75;;3997:61:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3677:386;;:::o;1626:138::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:43:57;;-1:-1:-1;;;1716:43:57;;-1:-1:-1;;;;;1745:12:57;5069:32:75;;1716:43:57;;;5051:51:75;1716:5:57;:20;;;;5024:18:75;;1716:43:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1709:50;;1626:138;:::o;6184:445:58:-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;6261:24;;6278:7:::1;6261:24;6290:40;6376:11;6333:99:::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6547:77;::::0;-1:-1:-1;;;6547:77:58;;6290:142;;-1:-1:-1;6547:21:58::1;::::0;::::1;::::0;:77:::1;::::0;6290:142;;6577:6:::1;::::0;6594:12:::1;::::0;6609:6;;6617::::1;::::0;6547:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4268:321::-:0;4364:14;4564:20;4577:6;4564:12;:20::i;:::-;4399:162;4420:67;4447:26;4460:12;4447;:26::i;:::-;4432:41;;:12;:41;:::i;:::-;4475:6;994:4;4420:11;:67::i;:::-;4503:25;4518:9;4503:14;:25::i;:::-;:37;;;4497:43;;994:4;4497:43;:::i;:::-;994:4;4399:11;:162::i;:::-;:185;;;;:::i;4996:4226:42:-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::o;2455:123:58:-;2522:7;2556:5;-1:-1:-1;;;;;2556:14:58;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2551:21;;:2;:21;:::i;:::-;2544:29;;:2;:29;:::i;1776:194:38:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;14:114:75;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:75;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:75:o;1060:186::-;1108:4;1141:18;1133:6;1130:30;1127:56;;;1163:18;;:::i;:::-;-1:-1:-1;1229:2:75;1208:15;-1:-1:-1;;1204:29:75;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:75: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:75;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;2713:180::-;2772:6;2825:2;2813:9;2804:7;2800:23;2796:32;2793:52;;;2841:1;2838;2831:12;2793:52;-1:-1:-1;2864:23:75;;2713:180;-1:-1:-1;2713:180:75:o;2898:131::-;-1:-1:-1;;;;;2973:31:75;;2963:42;;2953:70;;3019:1;3016;3009:12;3034:247;3093:6;3146:2;3134:9;3125:7;3121:23;3117:32;3114:52;;;3162:1;3159;3152:12;3114:52;3201:9;3188:23;3220:31;3245:5;3220: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:75:o;4084:265::-;4267:2;4256:9;4249:21;4230:4;4287:56;4339:2;4328:9;4324:18;4316:6;4287:56;:::i;4354:118::-;4440:5;4433:13;4426:21;4419:5;4416:32;4406:60;;4462:1;4459;4452:12;4477:241;4533:6;4586:2;4574:9;4565:7;4561:23;4557:32;4554:52;;;4602:1;4599;4592:12;4554:52;4641:9;4628:23;4660:28;4682:5;4660:28;:::i;5113:320::-;5181:6;5234:2;5222:9;5213:7;5209:23;5205:32;5202:52;;;5250:1;5247;5240:12;5202:52;5290:9;5277:23;5323:18;5315:6;5312:30;5309:50;;;5355:1;5352;5345:12;5309:50;5378:49;5419:7;5410:6;5399:9;5395:22;5378:49;:::i;5814:230::-;5884:6;5937:2;5925:9;5916:7;5912:23;5908:32;5905:52;;;5953:1;5950;5943:12;5905:52;-1:-1:-1;5998:16:75;;5814:230;-1:-1:-1;5814:230:75:o;6049:483::-;6102:5;6155:3;6148:4;6140:6;6136:17;6132:27;6122:55;;6173:1;6170;6163:12;6122:55;6206:6;6200:13;6237:52;6253:35;6281:6;6253:35;:::i;6237:52::-;6314:6;6305:7;6298:23;6368:3;6361:4;6352:6;6344;6340:19;6336:30;6333:39;6330:59;;;6385:1;6382;6375:12;6330:59;6443:6;6436:4;6428:6;6424:17;6417:4;6408:7;6404:18;6398:52;6499:1;6470:20;;;6492:4;6466:31;6459:42;;;;6474:7;6049:483;-1:-1:-1;;;6049:483:75:o;6537:335::-;6616:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:52;;;6685:1;6682;6675:12;6637:52;6718:9;6712:16;6751:18;6743:6;6740:30;6737:50;;;6783:1;6780;6773:12;6737:50;6806:60;6858:7;6849:6;6838:9;6834:22;6806:60;:::i;6877:849::-;6974:6;7027:2;7015:9;7006:7;7002:23;6998:32;6995:52;;;7043:1;7040;7033:12;6995:52;7076:9;7070:16;7109:18;7101:6;7098:30;7095:50;;;7141:1;7138;7131:12;7095:50;7164:22;;7220:4;7202:16;;;7198:27;7195:47;;;7238:1;7235;7228:12;7195:47;7264:22;;:::i;:::-;7316:2;7310:9;7350:1;7341:7;7338:14;7328:42;;7366:1;7363;7356:12;7328:42;7379:22;;7460:2;7452:11;;;7446:18;7480:14;;;7473:31;7543:2;7535:11;;7529:18;7572;7559:32;;7556:52;;;7604:1;7601;7594:12;7556:52;7640:55;7687:7;7676:8;7672:2;7668:17;7640:55;:::i;:::-;7635:2;7624:14;;7617:79;-1:-1:-1;7628:5:75;6877:849;-1:-1:-1;;;;6877:849:75:o;8009:473::-;8274:2;8263:9;8256:21;8237:4;8300:56;8352:2;8341:9;8337:18;8329:6;8300:56;:::i;:::-;8404:9;8396:6;8392:22;8387:2;8376:9;8372:18;8365:50;8432:44;8469:6;8461;8432:44;:::i;:::-;8424:52;8009:473;-1:-1:-1;;;;;8009:473:75:o;8487:380::-;8566:1;8562:12;;;;8609;;;8630:61;;8684:4;8676:6;8672:17;8662:27;;8630:61;8737:2;8729:6;8726:14;8706:18;8703:38;8700:161;;8783:10;8778:3;8774:20;8771:1;8764:31;8818:4;8815:1;8808:15;8846:4;8843:1;8836:15;8700:161;;8487:380;;;:::o;8997:517::-;9098:2;9093:3;9090:11;9087:421;;;9134:5;9131:1;9124:16;9178:4;9175:1;9165:18;9248:2;9236:10;9232:19;9229:1;9225:27;9219:4;9215:38;9284:4;9272:10;9269:20;9266:47;;;-1:-1:-1;9307:4:75;9266:47;9362:2;9357:3;9353:12;9350:1;9346:20;9340:4;9336:31;9326:41;;9417:81;9435:2;9428:5;9425:13;9417:81;;;9494:1;9480:16;;9461:1;9450:13;9417:81;;;9421:3;;8997:517;;;:::o;9690:1295::-;9814:3;9808:10;9841:18;9833:6;9830:30;9827:56;;;9863:18;;:::i;:::-;9892:96;9981:6;9941:38;9973:4;9967:11;9941:38;:::i;:::-;9935:4;9892:96;:::i;:::-;10037:4;10068:2;10057:14;;10085:1;10080:648;;;;10772:1;10789:6;10786:89;;;-1:-1:-1;10841:19:75;;;10835:26;10786:89;-1:-1:-1;;9647:1:75;9643:11;;;9639:24;9635:29;9625:40;9671:1;9667:11;;;9622:57;10888:81;;10050:929;;10080:648;8944:1;8937:14;;;8981:4;8968:18;;-1:-1:-1;;10116:20:75;;;10233:222;10247:7;10244:1;10241:14;10233:222;;;10329:19;;;10323:26;10308:42;;10436:4;10421:20;;;;10389:1;10377:14;;;;10263:12;10233:222;;;10237:3;10483:6;10474:7;10471:19;10468:201;;;10544:19;;;10538:26;-1:-1:-1;;10627:1:75;10623:14;;;10639:3;10619:24;10615:37;10611:42;10596:58;10581:74;;10468:201;-1:-1:-1;;;;10715:1:75;10699:14;;;10695:22;10682:36;;-1:-1:-1;9690:1295:75:o;10990:612::-;11293:3;11282:9;11275:22;11256:4;11314:57;11366:3;11355:9;11351:19;11343:6;11314:57;:::i;:::-;-1:-1:-1;;;;;11407:32:75;;;11402:2;11387:18;;11380:60;11476:32;;;;11471:2;11456:18;;11449:60;11540:2;11525:18;;11518:34;;;;11583:3;11568:19;;;11561:35;11306:65;10990:612;-1:-1:-1;;10990:612:75:o;11886:245::-;11953:6;12006:2;11994:9;11985:7;11981:23;11977:32;11974:52;;;12022:1;12019;12012:12;11974:52;12054:9;12048:16;12073:28;12095:5;12073:28;:::i;12604:498::-;12685:5;12733:4;12721:9;12716:3;12712:19;12708:30;12705:50;;;12751:1;12748;12741:12;12705:50;12804:2;12798:9;12846:4;12834:17;;12881:18;12866:34;;12902:22;;;12863:62;12860:88;;;12928:18;;:::i;:::-;12964:2;12957:22;13048:16;;13073:23;;-1:-1:-1;12997:6:75;12604:498;-1:-1:-1;12604:498:75:o;13107:192::-;13186:13;;13239:34;13228:46;;13218:57;;13208:85;;13289:1;13286;13279:12;13208:85;13107:192;;;:::o;13304:169::-;13382:13;;13435:12;13424:24;;13414:35;;13404:63;;13463:1;13460;13453:12;13478:163;13556:13;;13609:6;13598:18;;13588:29;;13578:57;;13631:1;13628;13621:12;13646:138;13725:13;;13747:31;13725:13;13747:31;:::i;13789:1549::-;13889:6;13949:3;13937:9;13928:7;13924:23;13920:33;13965:2;13962:22;;;13980:1;13977;13970:12;13962:22;-1:-1:-1;14022:22:75;;:::i;:::-;14067:72;14131:7;14120:9;14067:72;:::i;:::-;14060:5;14053:87;14172:49;14217:2;14206:9;14202:18;14172:49;:::i;:::-;14167:2;14160:5;14156:14;14149:73;14254:49;14299:2;14288:9;14284:18;14254:49;:::i;:::-;14249:2;14242:5;14238:14;14231:73;14336:49;14381:2;14370:9;14366:18;14336:49;:::i;:::-;14331:2;14324:5;14320:14;14313:73;14419:50;14464:3;14453:9;14449:19;14419:50;:::i;:::-;14413:3;14406:5;14402:15;14395:75;14503:50;14548:3;14537:9;14533:19;14503:50;:::i;:::-;14497:3;14490:5;14486:15;14479:75;14587:49;14631:3;14620:9;14616:19;14587:49;:::i;:::-;14581:3;14574:5;14570:15;14563:74;14670:49;14714:3;14703:9;14699:19;14670:49;:::i;:::-;14664:3;14657:5;14653:15;14646:74;14753:50;14798:3;14787:9;14783:19;14753:50;:::i;:::-;14747:3;14740:5;14736:15;14729:75;14837:50;14882:3;14871:9;14867:19;14837:50;:::i;:::-;14831:3;14824:5;14820:15;14813:75;14921:50;14966:3;14955:9;14951:19;14921:50;:::i;:::-;14915:3;14908:5;14904:15;14897:75;15005:50;15050:3;15039:9;15035:19;15005:50;:::i;:::-;14999:3;14992:5;14988:15;14981:75;15089:50;15134:3;15123:9;15119:19;15089:50;:::i;:::-;15083:3;15076:5;15072:15;15065:75;15173:50;15218:3;15207:9;15203:19;15173:50;:::i;:::-;15167:3;15160:5;15156:15;15149:75;15257:50;15302:3;15291:9;15287:19;15257:50;:::i;:::-;15251:3;15240:15;;15233:75;15244:5;13789:1549;-1:-1:-1;;;13789:1549:75:o;15343:127::-;15404:10;15399:3;15395:20;15392:1;15385:31;15435:4;15432:1;15425:15;15459:4;15456:1;15449:15;15475:168;15548:9;;;15579;;15596:15;;;15590:22;;15576:37;15566:71;;15617:18;;:::i;15648:128::-;15715:9;;;15736:11;;;15733:37;;;15750:18;;:::i;15781:127::-;15842:10;15837:3;15833:20;15830:1;15823:31;15873:4;15870:1;15863:15;15897:4;15894:1;15887:15;15913:217;15953:1;15979;15969:132;;16023:10;16018:3;16014:20;16011:1;16004:31;16058:4;16055:1;16048:15;16086:4;16083:1;16076:15;15969:132;-1:-1:-1;16115:9:75;;15913:217::o;16135:247::-;16203:6;16256:2;16244:9;16235:7;16231:23;16227:32;16224:52;;;16272:1;16269;16262:12;16224:52;16304:9;16298:16;16323:29;16346:5;16323:29;:::i;16387:151::-;16477:4;16470:12;;;16456;;;16452:31;;16495:14;;16492:40;;;16512:18;;:::i;16543:375::-;16631:1;16649:5;16663:249;16684:1;16674:8;16671:15;16663:249;;;16734:4;16729:3;16725:14;16719:4;16716:24;16713:50;;;16743:18;;:::i;:::-;16793:1;16783:8;16779:16;16776:49;;;16807:16;;;;16776:49;16890:1;16886:16;;;;;16846:15;;16663:249;;;16543:375;;;;;;:::o;16923:902::-;16972:5;17002:8;16992:80;;-1:-1:-1;17043:1:75;17057:5;;16992:80;17091:4;17081:76;;-1:-1:-1;17128:1:75;17142:5;;17081:76;17173:4;17191:1;17186:59;;;;17259:1;17254:174;;;;17166:262;;17186:59;17216:1;17207:10;;17230:5;;;17254:174;17291:3;17281:8;17278:17;17275:43;;;17298:18;;:::i;:::-;-1:-1:-1;;17354:1:75;17340:16;;17413:5;;17166:262;;17512:2;17502:8;17499:16;17493:3;17487:4;17484:13;17480:36;17474:2;17464:8;17461:16;17456:2;17450:4;17447:12;17443:35;17440:77;17437:203;;;-1:-1:-1;17549:19:75;;;17625:5;;17437:203;17672:42;-1:-1:-1;;17697:8:75;17691:4;17672:42;:::i;:::-;17750:6;17746:1;17742:6;17738:19;17729:7;17726:32;17723:58;;;17761:18;;:::i;:::-;17799:20;;16923:902;-1:-1:-1;;;16923:902:75:o;17830:140::-;17888:5;17917:47;17958:4;17948:8;17944:19;17938:4;17917: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","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":[{\"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.\"},\"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/SwapStableAaveV3InvestStrategy.sol\":\"SwapStableAaveV3InvestStrategy\"},\"evmVersion\":\"cancun\",\"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\":\"0x00c23b80f74717a6765b606001c5c633116020d488ee8f53600685b8200e4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73d0bd5ff47377a97d52149a805d82112f88c9f4ae853ef246a536bd31ce1da\",\"dweb:/ipfs/QmagG3Yup65JQPSMZScubYTCeyuUyvKLxBM3X1er6xWWxf\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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/SwapStableAaveV3InvestStrategy.sol\":{\"keccak256\":\"0xdccfc3f705152e23beed2eceb6d72fa5d1303df1fe4c3ca8c24836812be39b87\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8d51db3cf7a5ec988b51d40c5172a3b90ce6b367e08538e9b7d321928f1f5012\",\"dweb:/ipfs/QmNg9ikPMY7WCJneshVq4USZZv33tMR9WycAtnk3FPChC8\"]},\"contracts/SwapStableInvestStrategy.sol\":{\"keccak256\":\"0xb5ca90263f09d3853c78aa67987019025a68ca5b84000e2da5b7f1fc367eb675\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8efe725022d604f5ea9d766822cb4aa854d051b5d15c3aeb09e2d238325bcb09\",\"dweb:/ipfs/QmXvRSuKhijr8scEfGbWe7ETsADJwi4iPYwJc3LwQmfHhz\"]},\"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\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/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":[{"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":{"@_18979":{"entryPoint":null,"id":18979,"parameterSlots":3,"returnSlots":0},"@makeStorageSlot_15720":{"entryPoint":null,"id":15720,"parameterSlots":1,"returnSlots":1},"abi_decode_contract_IERC20Metadata_fromMemory":{"entryPoint":463,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20Metadata_$8682t_contract$_IERC20Metadata_$8682t_uint256_fromMemory":{"entryPoint":490,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":547,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:1408:75","nodeType":"YulBlock","src":"0:1408:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"90:117:75","nodeType":"YulBlock","src":"90:117:75","statements":[{"nativeSrc":"100:22:75","nodeType":"YulAssignment","src":"100:22:75","value":{"arguments":[{"name":"offset","nativeSrc":"115:6:75","nodeType":"YulIdentifier","src":"115:6:75"}],"functionName":{"name":"mload","nativeSrc":"109:5:75","nodeType":"YulIdentifier","src":"109:5:75"},"nativeSrc":"109:13:75","nodeType":"YulFunctionCall","src":"109:13:75"},"variableNames":[{"name":"value","nativeSrc":"100:5:75","nodeType":"YulIdentifier","src":"100:5:75"}]},{"body":{"nativeSrc":"185:16:75","nodeType":"YulBlock","src":"185:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"194:1:75","nodeType":"YulLiteral","src":"194:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"197:1:75","nodeType":"YulLiteral","src":"197:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"187:6:75","nodeType":"YulIdentifier","src":"187:6:75"},"nativeSrc":"187:12:75","nodeType":"YulFunctionCall","src":"187:12:75"},"nativeSrc":"187:12:75","nodeType":"YulExpressionStatement","src":"187:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"144:5:75","nodeType":"YulIdentifier","src":"144:5:75"},{"arguments":[{"name":"value","nativeSrc":"155:5:75","nodeType":"YulIdentifier","src":"155:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"170:3:75","nodeType":"YulLiteral","src":"170:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"175:1:75","nodeType":"YulLiteral","src":"175:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"166:3:75","nodeType":"YulIdentifier","src":"166:3:75"},"nativeSrc":"166:11:75","nodeType":"YulFunctionCall","src":"166:11:75"},{"kind":"number","nativeSrc":"179:1:75","nodeType":"YulLiteral","src":"179:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"162:3:75","nodeType":"YulIdentifier","src":"162:3:75"},"nativeSrc":"162:19:75","nodeType":"YulFunctionCall","src":"162:19:75"}],"functionName":{"name":"and","nativeSrc":"151:3:75","nodeType":"YulIdentifier","src":"151:3:75"},"nativeSrc":"151:31:75","nodeType":"YulFunctionCall","src":"151:31:75"}],"functionName":{"name":"eq","nativeSrc":"141:2:75","nodeType":"YulIdentifier","src":"141:2:75"},"nativeSrc":"141:42:75","nodeType":"YulFunctionCall","src":"141:42:75"}],"functionName":{"name":"iszero","nativeSrc":"134:6:75","nodeType":"YulIdentifier","src":"134:6:75"},"nativeSrc":"134:50:75","nodeType":"YulFunctionCall","src":"134:50:75"},"nativeSrc":"131:70:75","nodeType":"YulIf","src":"131:70:75"}]},"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"14:193:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"69:6:75","nodeType":"YulTypedName","src":"69:6:75","type":""}],"returnVariables":[{"name":"value","nativeSrc":"80:5:75","nodeType":"YulTypedName","src":"80:5:75","type":""}],"src":"14:193:75"},{"body":{"nativeSrc":"373:271:75","nodeType":"YulBlock","src":"373:271:75","statements":[{"body":{"nativeSrc":"419:16:75","nodeType":"YulBlock","src":"419:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"428:1:75","nodeType":"YulLiteral","src":"428:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"431:1:75","nodeType":"YulLiteral","src":"431:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"421:6:75","nodeType":"YulIdentifier","src":"421:6:75"},"nativeSrc":"421:12:75","nodeType":"YulFunctionCall","src":"421:12:75"},"nativeSrc":"421:12:75","nodeType":"YulExpressionStatement","src":"421:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"394:7:75","nodeType":"YulIdentifier","src":"394:7:75"},{"name":"headStart","nativeSrc":"403:9:75","nodeType":"YulIdentifier","src":"403:9:75"}],"functionName":{"name":"sub","nativeSrc":"390:3:75","nodeType":"YulIdentifier","src":"390:3:75"},"nativeSrc":"390:23:75","nodeType":"YulFunctionCall","src":"390:23:75"},{"kind":"number","nativeSrc":"415:2:75","nodeType":"YulLiteral","src":"415:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"386:3:75","nodeType":"YulIdentifier","src":"386:3:75"},"nativeSrc":"386:32:75","nodeType":"YulFunctionCall","src":"386:32:75"},"nativeSrc":"383:52:75","nodeType":"YulIf","src":"383:52:75"},{"nativeSrc":"444:66:75","nodeType":"YulAssignment","src":"444:66:75","value":{"arguments":[{"name":"headStart","nativeSrc":"500:9:75","nodeType":"YulIdentifier","src":"500:9:75"}],"functionName":{"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"454:45:75","nodeType":"YulIdentifier","src":"454:45:75"},"nativeSrc":"454:56:75","nodeType":"YulFunctionCall","src":"454:56:75"},"variableNames":[{"name":"value0","nativeSrc":"444:6:75","nodeType":"YulIdentifier","src":"444:6:75"}]},{"nativeSrc":"519:75:75","nodeType":"YulAssignment","src":"519:75:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"579:9:75","nodeType":"YulIdentifier","src":"579:9:75"},{"kind":"number","nativeSrc":"590:2:75","nodeType":"YulLiteral","src":"590:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"575:3:75","nodeType":"YulIdentifier","src":"575:3:75"},"nativeSrc":"575:18:75","nodeType":"YulFunctionCall","src":"575:18:75"}],"functionName":{"name":"abi_decode_contract_IERC20Metadata_fromMemory","nativeSrc":"529:45:75","nodeType":"YulIdentifier","src":"529:45:75"},"nativeSrc":"529:65:75","nodeType":"YulFunctionCall","src":"529:65:75"},"variableNames":[{"name":"value1","nativeSrc":"519:6:75","nodeType":"YulIdentifier","src":"519:6:75"}]},{"nativeSrc":"603:35:75","nodeType":"YulAssignment","src":"603:35:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"623:9:75","nodeType":"YulIdentifier","src":"623:9:75"},{"kind":"number","nativeSrc":"634:2:75","nodeType":"YulLiteral","src":"634:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"619:3:75","nodeType":"YulIdentifier","src":"619:3:75"},"nativeSrc":"619:18:75","nodeType":"YulFunctionCall","src":"619:18:75"}],"functionName":{"name":"mload","nativeSrc":"613:5:75","nodeType":"YulIdentifier","src":"613:5:75"},"nativeSrc":"613:25:75","nodeType":"YulFunctionCall","src":"613:25:75"},"variableNames":[{"name":"value2","nativeSrc":"603:6:75","nodeType":"YulIdentifier","src":"603:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20Metadata_$8682t_contract$_IERC20Metadata_$8682t_uint256_fromMemory","nativeSrc":"212:432:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"323:9:75","nodeType":"YulTypedName","src":"323:9:75","type":""},{"name":"dataEnd","nativeSrc":"334:7:75","nodeType":"YulTypedName","src":"334:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"346:6:75","nodeType":"YulTypedName","src":"346:6:75","type":""},{"name":"value1","nativeSrc":"354:6:75","nodeType":"YulTypedName","src":"354:6:75","type":""},{"name":"value2","nativeSrc":"362:6:75","nodeType":"YulTypedName","src":"362:6:75","type":""}],"src":"212:432:75"},{"body":{"nativeSrc":"728:194:75","nodeType":"YulBlock","src":"728:194:75","statements":[{"body":{"nativeSrc":"774:16:75","nodeType":"YulBlock","src":"774:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"783:1:75","nodeType":"YulLiteral","src":"783:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"786:1:75","nodeType":"YulLiteral","src":"786:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"776:6:75","nodeType":"YulIdentifier","src":"776:6:75"},"nativeSrc":"776:12:75","nodeType":"YulFunctionCall","src":"776:12:75"},"nativeSrc":"776:12:75","nodeType":"YulExpressionStatement","src":"776:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"749:7:75","nodeType":"YulIdentifier","src":"749:7:75"},{"name":"headStart","nativeSrc":"758:9:75","nodeType":"YulIdentifier","src":"758:9:75"}],"functionName":{"name":"sub","nativeSrc":"745:3:75","nodeType":"YulIdentifier","src":"745:3:75"},"nativeSrc":"745:23:75","nodeType":"YulFunctionCall","src":"745:23:75"},{"kind":"number","nativeSrc":"770:2:75","nodeType":"YulLiteral","src":"770:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"741:3:75","nodeType":"YulIdentifier","src":"741:3:75"},"nativeSrc":"741:32:75","nodeType":"YulFunctionCall","src":"741:32:75"},"nativeSrc":"738:52:75","nodeType":"YulIf","src":"738:52:75"},{"nativeSrc":"799:29:75","nodeType":"YulVariableDeclaration","src":"799:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"818:9:75","nodeType":"YulIdentifier","src":"818:9:75"}],"functionName":{"name":"mload","nativeSrc":"812:5:75","nodeType":"YulIdentifier","src":"812:5:75"},"nativeSrc":"812:16:75","nodeType":"YulFunctionCall","src":"812:16:75"},"variables":[{"name":"value","nativeSrc":"803:5:75","nodeType":"YulTypedName","src":"803:5:75","type":""}]},{"body":{"nativeSrc":"876:16:75","nodeType":"YulBlock","src":"876:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"885:1:75","nodeType":"YulLiteral","src":"885:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"888:1:75","nodeType":"YulLiteral","src":"888:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"878:6:75","nodeType":"YulIdentifier","src":"878:6:75"},"nativeSrc":"878:12:75","nodeType":"YulFunctionCall","src":"878:12:75"},"nativeSrc":"878:12:75","nodeType":"YulExpressionStatement","src":"878:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"850:5:75","nodeType":"YulIdentifier","src":"850:5:75"},{"arguments":[{"name":"value","nativeSrc":"861:5:75","nodeType":"YulIdentifier","src":"861:5:75"},{"kind":"number","nativeSrc":"868:4:75","nodeType":"YulLiteral","src":"868:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"857:3:75","nodeType":"YulIdentifier","src":"857:3:75"},"nativeSrc":"857:16:75","nodeType":"YulFunctionCall","src":"857:16:75"}],"functionName":{"name":"eq","nativeSrc":"847:2:75","nodeType":"YulIdentifier","src":"847:2:75"},"nativeSrc":"847:27:75","nodeType":"YulFunctionCall","src":"847:27:75"}],"functionName":{"name":"iszero","nativeSrc":"840:6:75","nodeType":"YulIdentifier","src":"840:6:75"},"nativeSrc":"840:35:75","nodeType":"YulFunctionCall","src":"840:35:75"},"nativeSrc":"837:55:75","nodeType":"YulIf","src":"837:55:75"},{"nativeSrc":"901:15:75","nodeType":"YulAssignment","src":"901:15:75","value":{"name":"value","nativeSrc":"911:5:75","nodeType":"YulIdentifier","src":"911:5:75"},"variableNames":[{"name":"value0","nativeSrc":"901:6:75","nodeType":"YulIdentifier","src":"901:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"649:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"694:9:75","nodeType":"YulTypedName","src":"694:9:75","type":""},{"name":"dataEnd","nativeSrc":"705:7:75","nodeType":"YulTypedName","src":"705:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"717:6:75","nodeType":"YulTypedName","src":"717:6:75","type":""}],"src":"649:273:75"},{"body":{"nativeSrc":"1154:252:75","nodeType":"YulBlock","src":"1154:252:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1171:9:75","nodeType":"YulIdentifier","src":"1171:9:75"},{"kind":"number","nativeSrc":"1182:2:75","nodeType":"YulLiteral","src":"1182:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"1164:6:75","nodeType":"YulIdentifier","src":"1164:6:75"},"nativeSrc":"1164:21:75","nodeType":"YulFunctionCall","src":"1164:21:75"},"nativeSrc":"1164:21:75","nodeType":"YulExpressionStatement","src":"1164:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1205:9:75","nodeType":"YulIdentifier","src":"1205:9:75"},{"kind":"number","nativeSrc":"1216:2:75","nodeType":"YulLiteral","src":"1216:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1201:3:75","nodeType":"YulIdentifier","src":"1201:3:75"},"nativeSrc":"1201:18:75","nodeType":"YulFunctionCall","src":"1201:18:75"},{"kind":"number","nativeSrc":"1221:2:75","nodeType":"YulLiteral","src":"1221:2:75","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"1194:6:75","nodeType":"YulIdentifier","src":"1194:6:75"},"nativeSrc":"1194:30:75","nodeType":"YulFunctionCall","src":"1194:30:75"},"nativeSrc":"1194:30:75","nodeType":"YulExpressionStatement","src":"1194:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1244:9:75","nodeType":"YulIdentifier","src":"1244:9:75"},{"kind":"number","nativeSrc":"1255:2:75","nodeType":"YulLiteral","src":"1255:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1240:3:75","nodeType":"YulIdentifier","src":"1240:3:75"},"nativeSrc":"1240:18:75","nodeType":"YulFunctionCall","src":"1240:18:75"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"1260:32:75","nodeType":"YulLiteral","src":"1260:32:75","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"1233:6:75","nodeType":"YulIdentifier","src":"1233:6:75"},"nativeSrc":"1233:60:75","nodeType":"YulFunctionCall","src":"1233:60:75"},"nativeSrc":"1233:60:75","nodeType":"YulExpressionStatement","src":"1233:60:75"},{"nativeSrc":"1302:27:75","nodeType":"YulAssignment","src":"1302:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1314:9:75","nodeType":"YulIdentifier","src":"1314:9:75"},{"kind":"number","nativeSrc":"1325:3:75","nodeType":"YulLiteral","src":"1325:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1310:3:75","nodeType":"YulIdentifier","src":"1310:3:75"},"nativeSrc":"1310:19:75","nodeType":"YulFunctionCall","src":"1310:19:75"},"variableNames":[{"name":"tail","nativeSrc":"1302:4:75","nodeType":"YulIdentifier","src":"1302:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1349:9:75","nodeType":"YulIdentifier","src":"1349:9:75"},{"kind":"number","nativeSrc":"1360:4:75","nodeType":"YulLiteral","src":"1360:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1345:3:75","nodeType":"YulIdentifier","src":"1345:3:75"},"nativeSrc":"1345:20:75","nodeType":"YulFunctionCall","src":"1345:20:75"},{"arguments":[{"name":"value0","nativeSrc":"1371:6:75","nodeType":"YulIdentifier","src":"1371:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1387:3:75","nodeType":"YulLiteral","src":"1387:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1392:1:75","nodeType":"YulLiteral","src":"1392:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1383:3:75","nodeType":"YulIdentifier","src":"1383:3:75"},"nativeSrc":"1383:11:75","nodeType":"YulFunctionCall","src":"1383:11:75"},{"kind":"number","nativeSrc":"1396:1:75","nodeType":"YulLiteral","src":"1396:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1379:3:75","nodeType":"YulIdentifier","src":"1379:3:75"},"nativeSrc":"1379:19:75","nodeType":"YulFunctionCall","src":"1379:19:75"}],"functionName":{"name":"and","nativeSrc":"1367:3:75","nodeType":"YulIdentifier","src":"1367:3:75"},"nativeSrc":"1367:32:75","nodeType":"YulFunctionCall","src":"1367:32:75"}],"functionName":{"name":"mstore","nativeSrc":"1338:6:75","nodeType":"YulIdentifier","src":"1338:6:75"},"nativeSrc":"1338:62:75","nodeType":"YulFunctionCall","src":"1338:62:75"},"nativeSrc":"1338:62:75","nodeType":"YulExpressionStatement","src":"1338:62:75"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"927:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1123:9:75","nodeType":"YulTypedName","src":"1123:9:75","type":""},{"name":"value0","nativeSrc":"1134:6:75","nodeType":"YulTypedName","src":"1134:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1145:4:75","nodeType":"YulTypedName","src":"1145:4:75","type":""}],"src":"927:479:75"}]},"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_$8682t_contract$_IERC20Metadata_$8682t_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_$22374__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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":2016},{"length":20,"start":2312},{"length":20,"start":3190},{"length":20,"start":3784}]}},"object":"3060808181526040610140818152601e610180527f636f2e656e7375726f2e496e766573745374726174656779436c69656e7400006101a052610160939093526101208290526101c09052902060a05234801561005a575f5ffd5b506040516118e43803806118e4833981016040819052610079916101ea565b6012836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100db9190610223565b60ff1611156100fd57604051636448d6e960e11b815260040160405180910390fd5b6012826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561013b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061015f9190610223565b60ff16111561018157604051636448d6e960e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b0316036101b357604051636448d6e960e11b815260040160405180910390fd5b6001600160a01b0392831660c052911660e0526101005261024a565b80516001600160a01b03811681146101e5575f5ffd5b919050565b5f5f5f606084860312156101fc575f5ffd5b610205846101cf565b9250610213602085016101cf565b9150604084015190509250925092565b5f60208284031215610233575f5ffd5b815160ff81168114610243575f5ffd5b9392505050565b60805160a05160c05160e051610100516115ca61031a5f395f81816103f4015281816109c40152610dc201525f81816102040152818161043c015281816104e40152818161061001528181610730015281816109a001528181610a560152610d9201525f818161018001528181610506015281816106320152818161097e0152610d6301525f818161014d015281816103290152818161089101528181610aef0152610c7e01525f8181610245015281816102e1015281816106d3015281816107cc015261084901526115ca5ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c80639c4667a21161006e5780639c4667a21461016f5780639cd47128146101ba578063b6b55f25146101cd578063ce96cb77146101e0578063de846ae4146101f3578063f3e0ffbf14610226575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f357806342b054f0146101155780635a117456146101355780635b9a4c3514610148575b5f5ffd5b6100c86100c3366004610fa3565b610239565b6040516100d5919061101e565b60405180910390f35b6100f16100ec366004611030565b6102d7565b005b610107610101366004611047565b505f1990565b6040519081526020016100d5565b610128610123366004611047565b6106a5565b6040516100d591906110cf565b6100f16101433660046110e1565b6106c9565b6101077f000000000000000000000000000000000000000000000000000000000000000081565b6101a261017d366004611047565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100d5565b6100f16101c8366004611100565b6107c2565b6100f16101db366004611030565b61083f565b6101076101ee366004611047565b610a2b565b6101a2610201366004611047565b507f000000000000000000000000000000000000000000000000000000000000000090565b610107610234366004611047565b610a31565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361028457604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102975761029761106d565b90505f8180156102a9576102a961106d565b036100b1576102c06102ba30610ac5565b84610b87565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032057604051632abf118b60e21b815260040160405180910390fd5b80156106a2575f7f0000000000000000000000000000000000000000000000000000000000000000805461035390611132565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611132565b80156103ca5780601f106103a1576101008083540402835291602001916103ca565b820191905f5260205f20905b8154815290600101906020018083116103ad57829003601f168201915b50505050508060200190518101906103e291906111b7565b90505f610418670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610ca7565b6040516370a0823160e01b81523060048201529091506104ab906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610481573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a59190611243565b30610d5d565b83106105df576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610555573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105799190611243565b866040518663ffffffff1660e01b815260040161059a95949392919061125a565b602060405180830381865af41580156105b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d99190611243565b5061069f565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d9061065e9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161125a565b602060405180830381865af4158015610679573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d9190611243565b505b50505b50565b60408051606080820183525f8083526020830152918101919091526102d182610ac5565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361071257604051632abf118b60e21b815260040160405180910390fd5b801580156107a457506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561077d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a19190611243565b15155b156106a2576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361080b57604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526106a290805f81526020015f815260200160405180602001604052805f81525081525082610b87565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361088857604051632abf118b60e21b815260040160405180910390fd5b80156106a2575f7f000000000000000000000000000000000000000000000000000000000000000080546108bb90611132565b80601f01602080910402602001604051908101604052809291908181526020018280546108e790611132565b80156109325780601f1061090957610100808354040283529160200191610932565b820191905f5260205f20905b81548152906001019060200180831161091557829003601f168201915b505050505080602001905181019061094a91906111b7565b604051637756691560e01b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__906377566915906109ec9084907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088907f00000000000000000000000000000000000000000000000000000000000000009060040161125a565b602060405180830381865af4158015610a07573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069f9190611243565b5f6102d1825b6040516370a0823160e01b81526001600160a01b0382811660048301525f916102d1917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610a9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abf9190611243565b83610d5d565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610b43573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b6a9190810190611299565b905080806020019051810190610b8091906111b7565b9392505050565b5f81806020019051810190610b9c91906111b7565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610bd69084906004016110cf565b5f6040518083038186803b158015610bec575f5ffd5b505af4158015610bfe573d5f5f3e3d5ffd5b50505050815181604051602001610c1591906110cf565b6040516020818303038152906040525114610c43576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610c749291906112cb565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000061069d8382611343565b5f838302815f1985870982811083820303915050805f03610cdb57838281610cd157610cd16113fe565b0492505050610b80565b808411610cf257610cf26003851502601118610e26565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f610d877f0000000000000000000000000000000000000000000000000000000000000000610e37565b610e1c610def610db67f0000000000000000000000000000000000000000000000000000000000000000610e37565b610dc09087611426565b7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000610ca7565b610df885610ac5565b60200151610e0e90670de0b6b3a764000061143d565b670de0b6b3a7640000610ca7565b610b809190611450565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e98919061146f565b610ea390601261148a565b6102d190600a611586565b60ff811681146106a2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610ef357610ef3610ebc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f2257610f22610ebc565b604052919050565b5f67ffffffffffffffff821115610f4357610f43610ebc565b50601f01601f191660200190565b5f82601f830112610f60575f5ffd5b8135610f73610f6e82610f2a565b610ef9565b818152846020838601011115610f87575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610fb4575f5ffd5b8235610fbf81610eae565b9150602083013567ffffffffffffffff811115610fda575f5ffd5b610fe685828601610f51565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b806020830184610ff0565b5f60208284031215611040575f5ffd5b5035919050565b5f60208284031215611057575f5ffd5b81356001600160a01b0381168114610b80575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106110a057634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526110c76060850182610ff0565b949350505050565b602081525f610b806020830184611081565b5f602082840312156110f1575f5ffd5b81358015158114610b80575f5ffd5b5f60208284031215611110575f5ffd5b813567ffffffffffffffff811115611126575f5ffd5b6110c784828501610f51565b600181811c9082168061114657607f821691505b60208210810361116457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611179575f5ffd5b8151611187610f6e82610f2a565b81815284602083860101111561119b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156111c7575f5ffd5b815167ffffffffffffffff8111156111dd575f5ffd5b8201606081850312156111ee575f5ffd5b6111f6610ed0565b815160038110611204575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611229575f5ffd5b6112358682850161116a565b604083015250949350505050565b5f60208284031215611253575f5ffd5b5051919050565b60a081525f61126c60a0830188611081565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f602082840312156112a9575f5ffd5b815167ffffffffffffffff8111156112bf575f5ffd5b6110c78482850161116a565b604081525f6112dd6040830185611081565b82810360208401526112ef8185611081565b95945050505050565b601f82111561069f57805f5260205f20601f840160051c8101602085101561131d5750805b601f840160051c820191505b8181101561133c575f8155600101611329565b5050505050565b815167ffffffffffffffff81111561135d5761135d610ebc565b6113718161136b8454611132565b846112f8565b6020601f8211600181146113a3575f831561138c5750848201515b5f19600385901b1c1916600184901b17845561133c565b5f84815260208120601f198516915b828110156113d257878501518255602094850194600190920191016113b2565b50848210156113ef57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102d1576102d1611412565b818103818111156102d1576102d1611412565b5f8261146a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561147f575f5ffd5b8151610b8081610eae565b60ff82811682821603908111156102d1576102d1611412565b6001815b60018411156114de578085048111156114c2576114c2611412565b60018416156114d057908102905b60019390931c9280026114a7565b935093915050565b5f826114f4575060016102d1565b8161150057505f6102d1565b816001811461151657600281146115205761153c565b60019150506102d1565b60ff84111561153157611531611412565b50506001821b6102d1565b5060208310610133831016604e8410600b841016171561155f575081810a6102d1565b61156b5f1984846114a3565b805f190482111561157e5761157e611412565b029392505050565b5f610b8060ff8416836114e656fea26469706673582212207ba311e6b07b36ff43d36d7b838671ac7a2197dfab146b696d165fca56b2c91d64736f6c634300081c0033","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 0x18E4 CODESIZE SUB DUP1 PUSH2 0x18E4 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x79 SWAP2 PUSH2 0x1EA JUMP JUMPDEST PUSH1 0x12 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 0xB7 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 0xDB SWAP2 SWAP1 PUSH2 0x223 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0xFD 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 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 0x13B 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 0x15F SWAP2 SWAP1 PUSH2 0x223 JUMP JUMPDEST PUSH1 0xFF AND GT ISZERO PUSH2 0x181 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6448D6E9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1B3 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 SWAP3 DUP4 AND PUSH1 0xC0 MSTORE SWAP2 AND PUSH1 0xE0 MSTORE PUSH2 0x100 MSTORE PUSH2 0x24A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x205 DUP5 PUSH2 0x1CF JUMP JUMPDEST SWAP3 POP PUSH2 0x213 PUSH1 0x20 DUP6 ADD PUSH2 0x1CF 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 0x233 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x243 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 0x15CA PUSH2 0x31A PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x3F4 ADD MSTORE DUP2 DUP2 PUSH2 0x9C4 ADD MSTORE PUSH2 0xDC2 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x204 ADD MSTORE DUP2 DUP2 PUSH2 0x43C ADD MSTORE DUP2 DUP2 PUSH2 0x4E4 ADD MSTORE DUP2 DUP2 PUSH2 0x610 ADD MSTORE DUP2 DUP2 PUSH2 0x730 ADD MSTORE DUP2 DUP2 PUSH2 0x9A0 ADD MSTORE DUP2 DUP2 PUSH2 0xA56 ADD MSTORE PUSH2 0xD92 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x180 ADD MSTORE DUP2 DUP2 PUSH2 0x506 ADD MSTORE DUP2 DUP2 PUSH2 0x632 ADD MSTORE DUP2 DUP2 PUSH2 0x97E ADD MSTORE PUSH2 0xD63 ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x14D ADD MSTORE DUP2 DUP2 PUSH2 0x329 ADD MSTORE DUP2 DUP2 PUSH2 0x891 ADD MSTORE DUP2 DUP2 PUSH2 0xAEF ADD MSTORE PUSH2 0xC7E ADD MSTORE PUSH0 DUP2 DUP2 PUSH2 0x245 ADD MSTORE DUP2 DUP2 PUSH2 0x2E1 ADD MSTORE DUP2 DUP2 PUSH2 0x6D3 ADD MSTORE DUP2 DUP2 PUSH2 0x7CC ADD MSTORE PUSH2 0x849 ADD MSTORE PUSH2 0x15CA 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 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x226 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 0x42B054F0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x148 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA3 JUMP JUMPDEST PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x2D7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x107 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x10CF JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x143 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E1 JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST PUSH2 0x107 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x17D CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 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 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1100 JUMP JUMPDEST PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x83F JUMP JUMPDEST PUSH2 0x107 PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x107 PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x284 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 0x297 JUMPI PUSH2 0x297 PUSH2 0x106D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH2 0x2A9 PUSH2 0x106D JUMP JUMPDEST SUB PUSH2 0xB1 JUMPI PUSH2 0x2C0 PUSH2 0x2BA ADDRESS PUSH2 0xAC5 JUMP JUMPDEST DUP5 PUSH2 0xB87 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 0x320 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 0x6A2 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x353 SWAP1 PUSH2 0x1132 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 0x37F SWAP1 PUSH2 0x1132 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CA 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 0x3AD 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 0x3E2 SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x418 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0xCA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x4AB 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 0x481 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 0x4A5 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST ADDRESS PUSH2 0xD5D JUMP JUMPDEST DUP4 LT PUSH2 0x5DF 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 0x555 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 0x579 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x59A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5B5 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 0x5D9 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST POP PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x65E SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x679 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 0x69D SWAP2 SWAP1 PUSH2 0x1243 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 0x2D1 DUP3 PUSH2 0xAC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x712 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 0x7A4 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 0x77D 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 0x7A1 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6A2 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 0x80B 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 0x6A2 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 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x888 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 0x6A2 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x8BB SWAP1 PUSH2 0x1132 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 0x8E7 SWAP1 PUSH2 0x1132 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x932 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x909 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x932 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 0x915 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 0x94A SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA07 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 0x69F SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH2 0x2D1 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 0x2D1 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 0xA9B 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 0xABF SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST DUP4 PUSH2 0xD5D 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 0xB43 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 0xB6A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1299 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB9C SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xBD6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x10CF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBFE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC15 SWAP2 SWAP1 PUSH2 0x10CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xC43 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 0xC74 SWAP3 SWAP2 SWAP1 PUSH2 0x12CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x69D DUP4 DUP3 PUSH2 0x1343 JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0xCDB JUMPI DUP4 DUP3 DUP2 PUSH2 0xCD1 JUMPI PUSH2 0xCD1 PUSH2 0x13FE JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xB80 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xCF2 JUMPI PUSH2 0xCF2 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xE26 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD87 PUSH32 0x0 PUSH2 0xE37 JUMP JUMPDEST PUSH2 0xE1C PUSH2 0xDEF PUSH2 0xDB6 PUSH32 0x0 PUSH2 0xE37 JUMP JUMPDEST PUSH2 0xDC0 SWAP1 DUP8 PUSH2 0x1426 JUMP JUMPDEST PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0xDF8 DUP6 PUSH2 0xAC5 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xE0E SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x143D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x1450 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 0xE74 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 0xE98 SWAP2 SWAP1 PUSH2 0x146F JUMP JUMPDEST PUSH2 0xEA3 SWAP1 PUSH1 0x12 PUSH2 0x148A JUMP JUMPDEST PUSH2 0x2D1 SWAP1 PUSH1 0xA PUSH2 0x1586 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6A2 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 0xEF3 JUMPI PUSH2 0xEF3 PUSH2 0xEBC 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 0xF22 JUMPI PUSH2 0xF22 PUSH2 0xEBC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF43 JUMPI PUSH2 0xF43 PUSH2 0xEBC JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF60 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF73 PUSH2 0xF6E DUP3 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0xEF9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xF87 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 0xFB4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFBF DUP2 PUSH2 0xEAE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFDA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xFE6 DUP6 DUP3 DUP7 ADD PUSH2 0xF51 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 0xB80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFF0 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1040 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1057 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB80 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 0x10A0 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 0x10C7 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0xFF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xB80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1081 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB80 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1110 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1126 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10C7 DUP5 DUP3 DUP6 ADD PUSH2 0xF51 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1146 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1164 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 0x1179 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1187 PUSH2 0xF6E DUP3 PUSH2 0xF2A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x119B 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 0x11C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x11EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11F6 PUSH2 0xED0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1204 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 0x1229 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1235 DUP7 DUP3 DUP6 ADD PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1253 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x126C PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1081 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 0x12A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10C7 DUP5 DUP3 DUP6 ADD PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x12DD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1081 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12EF DUP2 DUP6 PUSH2 0x1081 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x69F JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x131D JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x133C JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1329 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135D JUMPI PUSH2 0x135D PUSH2 0xEBC JUMP JUMPDEST PUSH2 0x1371 DUP2 PUSH2 0x136B DUP5 SLOAD PUSH2 0x1132 JUMP JUMPDEST DUP5 PUSH2 0x12F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x13A3 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x138C 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 0x133C JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13D2 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x13B2 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x13EF 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 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x146A 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 0x147F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB80 DUP2 PUSH2 0xEAE JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x14DE JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x14C2 JUMPI PUSH2 0x14C2 PUSH2 0x1412 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x14D0 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x14A7 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x14F4 JUMPI POP PUSH1 0x1 PUSH2 0x2D1 JUMP JUMPDEST DUP2 PUSH2 0x1500 JUMPI POP PUSH0 PUSH2 0x2D1 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1516 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1520 JUMPI PUSH2 0x153C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1531 JUMPI PUSH2 0x1531 PUSH2 0x1412 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x155F JUMPI POP DUP2 DUP2 EXP PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x156B PUSH0 NOT DUP5 DUP5 PUSH2 0x14A3 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x157E JUMPI PUSH2 0x157E PUSH2 0x1412 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB80 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x14E6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xA311E6B07B36FF43D36D7B838671AC7A2197DFAB146B696D165FCA56 0xB2 0xC9 SAR PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"1046:4:58:-:0;1003:48;;;;857:7681;7309:54:52;1164:21:75;;;1221:2;1201:18;1194:30;1260:32;1240:18;1233:60;1345:20;1338:62;;;;857:7681:58;7309:54:52;;;1310:19:75;7309:54:52;;7299:65;;1055:81:58;;2124:327;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2239:2;2218:6;-1:-1:-1;;;;;2218:15:58;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;;2210:48;;;;-1:-1:-1;;;2210:48:58;;;;;;;;;;;;2299:2;2272:12;-1:-1:-1;;;;;2272:21:58;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;;2264:54;;;;-1:-1:-1;;;2264:54:58;;;;;;;;;;;;2342:12;-1:-1:-1;;;;;2332:22:58;:6;-1:-1:-1;;;;;2332:22:58;;2324:47;;;;-1:-1:-1;;;2324:47:58;;;;;;;;;;;;-1:-1:-1;;;;;2377:15:58;;;;;2398:27;;;;2431:15;;857:7681;;14:193:75;109:13;;-1:-1:-1;;;;;151:31:75;;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:75:o;927:479::-;857:7681:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_convertAssets_19143":{"entryPoint":3421,"id":19143,"parameterSlots":2,"returnSlots":1},"@_getSwapConfig_19426":{"entryPoint":2757,"id":19426,"parameterSlots":1,"returnSlots":1},"@_setSwapConfig_19356":{"entryPoint":2951,"id":19356,"parameterSlots":2,"returnSlots":0},"@_toWadFactor_18997":{"entryPoint":3639,"id":18997,"parameterSlots":1,"returnSlots":1},"@asset_19093":{"entryPoint":null,"id":19093,"parameterSlots":1,"returnSlots":1},"@connect_19022":{"entryPoint":1986,"id":19022,"parameterSlots":1,"returnSlots":0},"@deposit_19303":{"entryPoint":2111,"id":19303,"parameterSlots":1,"returnSlots":0},"@disconnect_19048":{"entryPoint":1737,"id":19048,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_19400":{"entryPoint":569,"id":19400,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getSwapConfig_19440":{"entryPoint":1701,"id":19440,"parameterSlots":1,"returnSlots":1},"@investAsset_19107":{"entryPoint":null,"id":19107,"parameterSlots":1,"returnSlots":1},"@maxDeposit_19078":{"entryPoint":null,"id":19078,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_19062":{"entryPoint":2603,"id":19062,"parameterSlots":1,"returnSlots":1},"@mulDiv_10139":{"entryPoint":3239,"id":10139,"parameterSlots":3,"returnSlots":1},"@panic_9542":{"entryPoint":3622,"id":9542,"parameterSlots":1,"returnSlots":0},"@storageSlot_18886":{"entryPoint":null,"id":18886,"parameterSlots":0,"returnSlots":0},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_19161":{"entryPoint":2609,"id":19161,"parameterSlots":1,"returnSlots":1},"@withdraw_19256":{"entryPoint":727,"id":19256,"parameterSlots":1,"returnSlots":0},"abi_decode_bytes":{"entryPoint":3921,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_bytes_fromMemory":{"entryPoint":4458,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4167,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bool":{"entryPoint":4321,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr":{"entryPoint":4352,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":4761,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory":{"entryPoint":4535,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4144,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":4675,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8_fromMemory":{"entryPoint":5231,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":4003,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_bytes":{"entryPoint":4080,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_SwapConfig":{"entryPoint":4225,"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":4126,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":4303,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed":{"entryPoint":4698,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed":{"entryPoint":4811,"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":3833,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_1565":{"entryPoint":3792,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":3882,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":5200,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":5283,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":5510,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":5350,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":5158,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5181,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":5258,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":4856,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":4931,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4402,"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":5138,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":5118,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":4205,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":3772,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_uint8":{"entryPoint":3758,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:13415:75","nodeType":"YulBlock","src":"0:13415:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"57:71:75","nodeType":"YulBlock","src":"57:71:75","statements":[{"body":{"nativeSrc":"106:16:75","nodeType":"YulBlock","src":"106:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"115:1:75","nodeType":"YulLiteral","src":"115:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"118:1:75","nodeType":"YulLiteral","src":"118:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"108:6:75","nodeType":"YulIdentifier","src":"108:6:75"},"nativeSrc":"108:12:75","nodeType":"YulFunctionCall","src":"108:12:75"},"nativeSrc":"108:12:75","nodeType":"YulExpressionStatement","src":"108:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"80:5:75","nodeType":"YulIdentifier","src":"80:5:75"},{"arguments":[{"name":"value","nativeSrc":"91:5:75","nodeType":"YulIdentifier","src":"91:5:75"},{"kind":"number","nativeSrc":"98:4:75","nodeType":"YulLiteral","src":"98:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"87:3:75","nodeType":"YulIdentifier","src":"87:3:75"},"nativeSrc":"87:16:75","nodeType":"YulFunctionCall","src":"87:16:75"}],"functionName":{"name":"eq","nativeSrc":"77:2:75","nodeType":"YulIdentifier","src":"77:2:75"},"nativeSrc":"77:27:75","nodeType":"YulFunctionCall","src":"77:27:75"}],"functionName":{"name":"iszero","nativeSrc":"70:6:75","nodeType":"YulIdentifier","src":"70:6:75"},"nativeSrc":"70:35:75","nodeType":"YulFunctionCall","src":"70:35:75"},"nativeSrc":"67:55:75","nodeType":"YulIf","src":"67:55:75"}]},"name":"validator_revert_uint8","nativeSrc":"14:114:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"46:5:75","nodeType":"YulTypedName","src":"46:5:75","type":""}],"src":"14:114:75"},{"body":{"nativeSrc":"165:95:75","nodeType":"YulBlock","src":"165:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"182:1:75","nodeType":"YulLiteral","src":"182:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"189:3:75","nodeType":"YulLiteral","src":"189:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"194:10:75","nodeType":"YulLiteral","src":"194:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"185:3:75","nodeType":"YulIdentifier","src":"185:3:75"},"nativeSrc":"185:20:75","nodeType":"YulFunctionCall","src":"185:20:75"}],"functionName":{"name":"mstore","nativeSrc":"175:6:75","nodeType":"YulIdentifier","src":"175:6:75"},"nativeSrc":"175:31:75","nodeType":"YulFunctionCall","src":"175:31:75"},"nativeSrc":"175:31:75","nodeType":"YulExpressionStatement","src":"175:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"222:1:75","nodeType":"YulLiteral","src":"222:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"225:4:75","nodeType":"YulLiteral","src":"225:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"215:6:75","nodeType":"YulIdentifier","src":"215:6:75"},"nativeSrc":"215:15:75","nodeType":"YulFunctionCall","src":"215:15:75"},"nativeSrc":"215:15:75","nodeType":"YulExpressionStatement","src":"215:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"246:1:75","nodeType":"YulLiteral","src":"246:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"249:4:75","nodeType":"YulLiteral","src":"249:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"239:6:75","nodeType":"YulIdentifier","src":"239:6:75"},"nativeSrc":"239:15:75","nodeType":"YulFunctionCall","src":"239:15:75"},"nativeSrc":"239:15:75","nodeType":"YulExpressionStatement","src":"239:15:75"}]},"name":"panic_error_0x41","nativeSrc":"133:127:75","nodeType":"YulFunctionDefinition","src":"133:127:75"},{"body":{"nativeSrc":"311:207:75","nodeType":"YulBlock","src":"311:207:75","statements":[{"nativeSrc":"321:19:75","nodeType":"YulAssignment","src":"321:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"337:2:75","nodeType":"YulLiteral","src":"337:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"331:5:75","nodeType":"YulIdentifier","src":"331:5:75"},"nativeSrc":"331:9:75","nodeType":"YulFunctionCall","src":"331:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"321:6:75","nodeType":"YulIdentifier","src":"321:6:75"}]},{"nativeSrc":"349:35:75","nodeType":"YulVariableDeclaration","src":"349:35:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"371:6:75","nodeType":"YulIdentifier","src":"371:6:75"},{"kind":"number","nativeSrc":"379:4:75","nodeType":"YulLiteral","src":"379:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"367:3:75","nodeType":"YulIdentifier","src":"367:3:75"},"nativeSrc":"367:17:75","nodeType":"YulFunctionCall","src":"367:17:75"},"variables":[{"name":"newFreePtr","nativeSrc":"353:10:75","nodeType":"YulTypedName","src":"353:10:75","type":""}]},{"body":{"nativeSrc":"459:22:75","nodeType":"YulBlock","src":"459:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"461:16:75","nodeType":"YulIdentifier","src":"461:16:75"},"nativeSrc":"461:18:75","nodeType":"YulFunctionCall","src":"461:18:75"},"nativeSrc":"461:18:75","nodeType":"YulExpressionStatement","src":"461:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"402:10:75","nodeType":"YulIdentifier","src":"402:10:75"},{"kind":"number","nativeSrc":"414:18:75","nodeType":"YulLiteral","src":"414:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"399:2:75","nodeType":"YulIdentifier","src":"399:2:75"},"nativeSrc":"399:34:75","nodeType":"YulFunctionCall","src":"399:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"438:10:75","nodeType":"YulIdentifier","src":"438:10:75"},{"name":"memPtr","nativeSrc":"450:6:75","nodeType":"YulIdentifier","src":"450:6:75"}],"functionName":{"name":"lt","nativeSrc":"435:2:75","nodeType":"YulIdentifier","src":"435:2:75"},"nativeSrc":"435:22:75","nodeType":"YulFunctionCall","src":"435:22:75"}],"functionName":{"name":"or","nativeSrc":"396:2:75","nodeType":"YulIdentifier","src":"396:2:75"},"nativeSrc":"396:62:75","nodeType":"YulFunctionCall","src":"396:62:75"},"nativeSrc":"393:88:75","nodeType":"YulIf","src":"393:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"497:2:75","nodeType":"YulLiteral","src":"497:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"501:10:75","nodeType":"YulIdentifier","src":"501:10:75"}],"functionName":{"name":"mstore","nativeSrc":"490:6:75","nodeType":"YulIdentifier","src":"490:6:75"},"nativeSrc":"490:22:75","nodeType":"YulFunctionCall","src":"490:22:75"},"nativeSrc":"490:22:75","nodeType":"YulExpressionStatement","src":"490:22:75"}]},"name":"allocate_memory_1565","nativeSrc":"265:253:75","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"300:6:75","nodeType":"YulTypedName","src":"300:6:75","type":""}],"src":"265:253:75"},{"body":{"nativeSrc":"568:230:75","nodeType":"YulBlock","src":"568:230:75","statements":[{"nativeSrc":"578:19:75","nodeType":"YulAssignment","src":"578:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"594:2:75","nodeType":"YulLiteral","src":"594:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"588:5:75","nodeType":"YulIdentifier","src":"588:5:75"},"nativeSrc":"588:9:75","nodeType":"YulFunctionCall","src":"588:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"578:6:75","nodeType":"YulIdentifier","src":"578:6:75"}]},{"nativeSrc":"606:58:75","nodeType":"YulVariableDeclaration","src":"606:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"628:6:75","nodeType":"YulIdentifier","src":"628:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"644:4:75","nodeType":"YulIdentifier","src":"644:4:75"},{"kind":"number","nativeSrc":"650:2:75","nodeType":"YulLiteral","src":"650:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"640:3:75","nodeType":"YulIdentifier","src":"640:3:75"},"nativeSrc":"640:13:75","nodeType":"YulFunctionCall","src":"640:13:75"},{"arguments":[{"kind":"number","nativeSrc":"659:2:75","nodeType":"YulLiteral","src":"659:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"655:3:75","nodeType":"YulIdentifier","src":"655:3:75"},"nativeSrc":"655:7:75","nodeType":"YulFunctionCall","src":"655:7:75"}],"functionName":{"name":"and","nativeSrc":"636:3:75","nodeType":"YulIdentifier","src":"636:3:75"},"nativeSrc":"636:27:75","nodeType":"YulFunctionCall","src":"636:27:75"}],"functionName":{"name":"add","nativeSrc":"624:3:75","nodeType":"YulIdentifier","src":"624:3:75"},"nativeSrc":"624:40:75","nodeType":"YulFunctionCall","src":"624:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"610:10:75","nodeType":"YulTypedName","src":"610:10:75","type":""}]},{"body":{"nativeSrc":"739:22:75","nodeType":"YulBlock","src":"739:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"741:16:75","nodeType":"YulIdentifier","src":"741:16:75"},"nativeSrc":"741:18:75","nodeType":"YulFunctionCall","src":"741:18:75"},"nativeSrc":"741:18:75","nodeType":"YulExpressionStatement","src":"741:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"682:10:75","nodeType":"YulIdentifier","src":"682:10:75"},{"kind":"number","nativeSrc":"694:18:75","nodeType":"YulLiteral","src":"694:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"679:2:75","nodeType":"YulIdentifier","src":"679:2:75"},"nativeSrc":"679:34:75","nodeType":"YulFunctionCall","src":"679:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"718:10:75","nodeType":"YulIdentifier","src":"718:10:75"},{"name":"memPtr","nativeSrc":"730:6:75","nodeType":"YulIdentifier","src":"730:6:75"}],"functionName":{"name":"lt","nativeSrc":"715:2:75","nodeType":"YulIdentifier","src":"715:2:75"},"nativeSrc":"715:22:75","nodeType":"YulFunctionCall","src":"715:22:75"}],"functionName":{"name":"or","nativeSrc":"676:2:75","nodeType":"YulIdentifier","src":"676:2:75"},"nativeSrc":"676:62:75","nodeType":"YulFunctionCall","src":"676:62:75"},"nativeSrc":"673:88:75","nodeType":"YulIf","src":"673:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"777:2:75","nodeType":"YulLiteral","src":"777:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"781:10:75","nodeType":"YulIdentifier","src":"781:10:75"}],"functionName":{"name":"mstore","nativeSrc":"770:6:75","nodeType":"YulIdentifier","src":"770:6:75"},"nativeSrc":"770:22:75","nodeType":"YulFunctionCall","src":"770:22:75"},"nativeSrc":"770:22:75","nodeType":"YulExpressionStatement","src":"770:22:75"}]},"name":"allocate_memory","nativeSrc":"523:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"548:4:75","nodeType":"YulTypedName","src":"548:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"557:6:75","nodeType":"YulTypedName","src":"557:6:75","type":""}],"src":"523:275:75"},{"body":{"nativeSrc":"860:129:75","nodeType":"YulBlock","src":"860:129:75","statements":[{"body":{"nativeSrc":"904:22:75","nodeType":"YulBlock","src":"904:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"906:16:75","nodeType":"YulIdentifier","src":"906:16:75"},"nativeSrc":"906:18:75","nodeType":"YulFunctionCall","src":"906:18:75"},"nativeSrc":"906:18:75","nodeType":"YulExpressionStatement","src":"906:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"876:6:75","nodeType":"YulIdentifier","src":"876:6:75"},{"kind":"number","nativeSrc":"884:18:75","nodeType":"YulLiteral","src":"884:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"873:2:75","nodeType":"YulIdentifier","src":"873:2:75"},"nativeSrc":"873:30:75","nodeType":"YulFunctionCall","src":"873:30:75"},"nativeSrc":"870:56:75","nodeType":"YulIf","src":"870:56:75"},{"nativeSrc":"935:48:75","nodeType":"YulAssignment","src":"935:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"955:6:75","nodeType":"YulIdentifier","src":"955:6:75"},{"kind":"number","nativeSrc":"963:2:75","nodeType":"YulLiteral","src":"963:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"951:3:75","nodeType":"YulIdentifier","src":"951:3:75"},"nativeSrc":"951:15:75","nodeType":"YulFunctionCall","src":"951:15:75"},{"arguments":[{"kind":"number","nativeSrc":"972:2:75","nodeType":"YulLiteral","src":"972:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"968:3:75","nodeType":"YulIdentifier","src":"968:3:75"},"nativeSrc":"968:7:75","nodeType":"YulFunctionCall","src":"968:7:75"}],"functionName":{"name":"and","nativeSrc":"947:3:75","nodeType":"YulIdentifier","src":"947:3:75"},"nativeSrc":"947:29:75","nodeType":"YulFunctionCall","src":"947:29:75"},{"kind":"number","nativeSrc":"978:4:75","nodeType":"YulLiteral","src":"978:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"943:3:75","nodeType":"YulIdentifier","src":"943:3:75"},"nativeSrc":"943:40:75","nodeType":"YulFunctionCall","src":"943:40:75"},"variableNames":[{"name":"size","nativeSrc":"935:4:75","nodeType":"YulIdentifier","src":"935:4:75"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"803:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"840:6:75","nodeType":"YulTypedName","src":"840:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"851:4:75","nodeType":"YulTypedName","src":"851:4:75","type":""}],"src":"803:186:75"},{"body":{"nativeSrc":"1046:434:75","nodeType":"YulBlock","src":"1046:434:75","statements":[{"body":{"nativeSrc":"1095:16:75","nodeType":"YulBlock","src":"1095:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1104:1:75","nodeType":"YulLiteral","src":"1104:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1107:1:75","nodeType":"YulLiteral","src":"1107:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1097:6:75","nodeType":"YulIdentifier","src":"1097:6:75"},"nativeSrc":"1097:12:75","nodeType":"YulFunctionCall","src":"1097:12:75"},"nativeSrc":"1097:12:75","nodeType":"YulExpressionStatement","src":"1097:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1074:6:75","nodeType":"YulIdentifier","src":"1074:6:75"},{"kind":"number","nativeSrc":"1082:4:75","nodeType":"YulLiteral","src":"1082:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1070:3:75","nodeType":"YulIdentifier","src":"1070:3:75"},"nativeSrc":"1070:17:75","nodeType":"YulFunctionCall","src":"1070:17:75"},{"name":"end","nativeSrc":"1089:3:75","nodeType":"YulIdentifier","src":"1089:3:75"}],"functionName":{"name":"slt","nativeSrc":"1066:3:75","nodeType":"YulIdentifier","src":"1066:3:75"},"nativeSrc":"1066:27:75","nodeType":"YulFunctionCall","src":"1066:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1059:6:75","nodeType":"YulIdentifier","src":"1059:6:75"},"nativeSrc":"1059:35:75","nodeType":"YulFunctionCall","src":"1059:35:75"},"nativeSrc":"1056:55:75","nodeType":"YulIf","src":"1056:55:75"},{"nativeSrc":"1120:34:75","nodeType":"YulVariableDeclaration","src":"1120:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"1147:6:75","nodeType":"YulIdentifier","src":"1147:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"1134:12:75","nodeType":"YulIdentifier","src":"1134:12:75"},"nativeSrc":"1134:20:75","nodeType":"YulFunctionCall","src":"1134:20:75"},"variables":[{"name":"length","nativeSrc":"1124:6:75","nodeType":"YulTypedName","src":"1124:6:75","type":""}]},{"nativeSrc":"1163:67:75","nodeType":"YulVariableDeclaration","src":"1163:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1222:6:75","nodeType":"YulIdentifier","src":"1222:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"1194:27:75","nodeType":"YulIdentifier","src":"1194:27:75"},"nativeSrc":"1194:35:75","nodeType":"YulFunctionCall","src":"1194:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"1178:15:75","nodeType":"YulIdentifier","src":"1178:15:75"},"nativeSrc":"1178:52:75","nodeType":"YulFunctionCall","src":"1178:52:75"},"variables":[{"name":"array_1","nativeSrc":"1167:7:75","nodeType":"YulTypedName","src":"1167:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"1246:7:75","nodeType":"YulIdentifier","src":"1246:7:75"},{"name":"length","nativeSrc":"1255:6:75","nodeType":"YulIdentifier","src":"1255:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1239:6:75","nodeType":"YulIdentifier","src":"1239:6:75"},"nativeSrc":"1239:23:75","nodeType":"YulFunctionCall","src":"1239:23:75"},"nativeSrc":"1239:23:75","nodeType":"YulExpressionStatement","src":"1239:23:75"},{"body":{"nativeSrc":"1314:16:75","nodeType":"YulBlock","src":"1314:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1323:1:75","nodeType":"YulLiteral","src":"1323:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1326:1:75","nodeType":"YulLiteral","src":"1326:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1316:6:75","nodeType":"YulIdentifier","src":"1316:6:75"},"nativeSrc":"1316:12:75","nodeType":"YulFunctionCall","src":"1316:12:75"},"nativeSrc":"1316:12:75","nodeType":"YulExpressionStatement","src":"1316:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1285:6:75","nodeType":"YulIdentifier","src":"1285:6:75"},{"name":"length","nativeSrc":"1293:6:75","nodeType":"YulIdentifier","src":"1293:6:75"}],"functionName":{"name":"add","nativeSrc":"1281:3:75","nodeType":"YulIdentifier","src":"1281:3:75"},"nativeSrc":"1281:19:75","nodeType":"YulFunctionCall","src":"1281:19:75"},{"kind":"number","nativeSrc":"1302:4:75","nodeType":"YulLiteral","src":"1302:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1277:3:75","nodeType":"YulIdentifier","src":"1277:3:75"},"nativeSrc":"1277:30:75","nodeType":"YulFunctionCall","src":"1277:30:75"},{"name":"end","nativeSrc":"1309:3:75","nodeType":"YulIdentifier","src":"1309:3:75"}],"functionName":{"name":"gt","nativeSrc":"1274:2:75","nodeType":"YulIdentifier","src":"1274:2:75"},"nativeSrc":"1274:39:75","nodeType":"YulFunctionCall","src":"1274:39:75"},"nativeSrc":"1271:59:75","nodeType":"YulIf","src":"1271:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1356:7:75","nodeType":"YulIdentifier","src":"1356:7:75"},{"kind":"number","nativeSrc":"1365:4:75","nodeType":"YulLiteral","src":"1365:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1352:3:75","nodeType":"YulIdentifier","src":"1352:3:75"},"nativeSrc":"1352:18:75","nodeType":"YulFunctionCall","src":"1352:18:75"},{"arguments":[{"name":"offset","nativeSrc":"1376:6:75","nodeType":"YulIdentifier","src":"1376:6:75"},{"kind":"number","nativeSrc":"1384:4:75","nodeType":"YulLiteral","src":"1384:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1372:3:75","nodeType":"YulIdentifier","src":"1372:3:75"},"nativeSrc":"1372:17:75","nodeType":"YulFunctionCall","src":"1372:17:75"},{"name":"length","nativeSrc":"1391:6:75","nodeType":"YulIdentifier","src":"1391:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"1339:12:75","nodeType":"YulIdentifier","src":"1339:12:75"},"nativeSrc":"1339:59:75","nodeType":"YulFunctionCall","src":"1339:59:75"},"nativeSrc":"1339:59:75","nodeType":"YulExpressionStatement","src":"1339:59:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1422:7:75","nodeType":"YulIdentifier","src":"1422:7:75"},{"name":"length","nativeSrc":"1431:6:75","nodeType":"YulIdentifier","src":"1431:6:75"}],"functionName":{"name":"add","nativeSrc":"1418:3:75","nodeType":"YulIdentifier","src":"1418:3:75"},"nativeSrc":"1418:20:75","nodeType":"YulFunctionCall","src":"1418:20:75"},{"kind":"number","nativeSrc":"1440:4:75","nodeType":"YulLiteral","src":"1440:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1414:3:75","nodeType":"YulIdentifier","src":"1414:3:75"},"nativeSrc":"1414:31:75","nodeType":"YulFunctionCall","src":"1414:31:75"},{"kind":"number","nativeSrc":"1447:1:75","nodeType":"YulLiteral","src":"1447:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1407:6:75","nodeType":"YulIdentifier","src":"1407:6:75"},"nativeSrc":"1407:42:75","nodeType":"YulFunctionCall","src":"1407:42:75"},"nativeSrc":"1407:42:75","nodeType":"YulExpressionStatement","src":"1407:42:75"},{"nativeSrc":"1458:16:75","nodeType":"YulAssignment","src":"1458:16:75","value":{"name":"array_1","nativeSrc":"1467:7:75","nodeType":"YulIdentifier","src":"1467:7:75"},"variableNames":[{"name":"array","nativeSrc":"1458:5:75","nodeType":"YulIdentifier","src":"1458:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"994:486:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1020:6:75","nodeType":"YulTypedName","src":"1020:6:75","type":""},{"name":"end","nativeSrc":"1028:3:75","nodeType":"YulTypedName","src":"1028:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1036:5:75","nodeType":"YulTypedName","src":"1036:5:75","type":""}],"src":"994:486:75"},{"body":{"nativeSrc":"1579:357:75","nodeType":"YulBlock","src":"1579:357:75","statements":[{"body":{"nativeSrc":"1625:16:75","nodeType":"YulBlock","src":"1625:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1634:1:75","nodeType":"YulLiteral","src":"1634:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1637:1:75","nodeType":"YulLiteral","src":"1637:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1627:6:75","nodeType":"YulIdentifier","src":"1627:6:75"},"nativeSrc":"1627:12:75","nodeType":"YulFunctionCall","src":"1627:12:75"},"nativeSrc":"1627:12:75","nodeType":"YulExpressionStatement","src":"1627:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1600:7:75","nodeType":"YulIdentifier","src":"1600:7:75"},{"name":"headStart","nativeSrc":"1609:9:75","nodeType":"YulIdentifier","src":"1609:9:75"}],"functionName":{"name":"sub","nativeSrc":"1596:3:75","nodeType":"YulIdentifier","src":"1596:3:75"},"nativeSrc":"1596:23:75","nodeType":"YulFunctionCall","src":"1596:23:75"},{"kind":"number","nativeSrc":"1621:2:75","nodeType":"YulLiteral","src":"1621:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1592:3:75","nodeType":"YulIdentifier","src":"1592:3:75"},"nativeSrc":"1592:32:75","nodeType":"YulFunctionCall","src":"1592:32:75"},"nativeSrc":"1589:52:75","nodeType":"YulIf","src":"1589:52:75"},{"nativeSrc":"1650:36:75","nodeType":"YulVariableDeclaration","src":"1650:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1676:9:75","nodeType":"YulIdentifier","src":"1676:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1663:12:75","nodeType":"YulIdentifier","src":"1663:12:75"},"nativeSrc":"1663:23:75","nodeType":"YulFunctionCall","src":"1663:23:75"},"variables":[{"name":"value","nativeSrc":"1654:5:75","nodeType":"YulTypedName","src":"1654:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1718:5:75","nodeType":"YulIdentifier","src":"1718:5:75"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"1695:22:75","nodeType":"YulIdentifier","src":"1695:22:75"},"nativeSrc":"1695:29:75","nodeType":"YulFunctionCall","src":"1695:29:75"},"nativeSrc":"1695:29:75","nodeType":"YulExpressionStatement","src":"1695:29:75"},{"nativeSrc":"1733:15:75","nodeType":"YulAssignment","src":"1733:15:75","value":{"name":"value","nativeSrc":"1743:5:75","nodeType":"YulIdentifier","src":"1743:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1733:6:75","nodeType":"YulIdentifier","src":"1733:6:75"}]},{"nativeSrc":"1757:46:75","nodeType":"YulVariableDeclaration","src":"1757:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1788:9:75","nodeType":"YulIdentifier","src":"1788:9:75"},{"kind":"number","nativeSrc":"1799:2:75","nodeType":"YulLiteral","src":"1799:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1784:3:75","nodeType":"YulIdentifier","src":"1784:3:75"},"nativeSrc":"1784:18:75","nodeType":"YulFunctionCall","src":"1784:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1771:12:75","nodeType":"YulIdentifier","src":"1771:12:75"},"nativeSrc":"1771:32:75","nodeType":"YulFunctionCall","src":"1771:32:75"},"variables":[{"name":"offset","nativeSrc":"1761:6:75","nodeType":"YulTypedName","src":"1761:6:75","type":""}]},{"body":{"nativeSrc":"1846:16:75","nodeType":"YulBlock","src":"1846:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1855:1:75","nodeType":"YulLiteral","src":"1855:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1858:1:75","nodeType":"YulLiteral","src":"1858:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1848:6:75","nodeType":"YulIdentifier","src":"1848:6:75"},"nativeSrc":"1848:12:75","nodeType":"YulFunctionCall","src":"1848:12:75"},"nativeSrc":"1848:12:75","nodeType":"YulExpressionStatement","src":"1848:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1818:6:75","nodeType":"YulIdentifier","src":"1818:6:75"},{"kind":"number","nativeSrc":"1826:18:75","nodeType":"YulLiteral","src":"1826:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1815:2:75","nodeType":"YulIdentifier","src":"1815:2:75"},"nativeSrc":"1815:30:75","nodeType":"YulFunctionCall","src":"1815:30:75"},"nativeSrc":"1812:50:75","nodeType":"YulIf","src":"1812:50:75"},{"nativeSrc":"1871:59:75","nodeType":"YulAssignment","src":"1871:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:75","nodeType":"YulIdentifier","src":"1902:9:75"},{"name":"offset","nativeSrc":"1913:6:75","nodeType":"YulIdentifier","src":"1913:6:75"}],"functionName":{"name":"add","nativeSrc":"1898:3:75","nodeType":"YulIdentifier","src":"1898:3:75"},"nativeSrc":"1898:22:75","nodeType":"YulFunctionCall","src":"1898:22:75"},{"name":"dataEnd","nativeSrc":"1922:7:75","nodeType":"YulIdentifier","src":"1922:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1881:16:75","nodeType":"YulIdentifier","src":"1881:16:75"},"nativeSrc":"1881:49:75","nodeType":"YulFunctionCall","src":"1881:49:75"},"variableNames":[{"name":"value1","nativeSrc":"1871:6:75","nodeType":"YulIdentifier","src":"1871:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1485:451:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1537:9:75","nodeType":"YulTypedName","src":"1537:9:75","type":""},{"name":"dataEnd","nativeSrc":"1548:7:75","nodeType":"YulTypedName","src":"1548:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1560:6:75","nodeType":"YulTypedName","src":"1560:6:75","type":""},{"name":"value1","nativeSrc":"1568:6:75","nodeType":"YulTypedName","src":"1568:6:75","type":""}],"src":"1485:451:75"},{"body":{"nativeSrc":"1990:239:75","nodeType":"YulBlock","src":"1990:239:75","statements":[{"nativeSrc":"2000:26:75","nodeType":"YulVariableDeclaration","src":"2000:26:75","value":{"arguments":[{"name":"value","nativeSrc":"2020:5:75","nodeType":"YulIdentifier","src":"2020:5:75"}],"functionName":{"name":"mload","nativeSrc":"2014:5:75","nodeType":"YulIdentifier","src":"2014:5:75"},"nativeSrc":"2014:12:75","nodeType":"YulFunctionCall","src":"2014:12:75"},"variables":[{"name":"length","nativeSrc":"2004:6:75","nodeType":"YulTypedName","src":"2004:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"2042:3:75","nodeType":"YulIdentifier","src":"2042:3:75"},{"name":"length","nativeSrc":"2047:6:75","nodeType":"YulIdentifier","src":"2047:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2035:6:75","nodeType":"YulIdentifier","src":"2035:6:75"},"nativeSrc":"2035:19:75","nodeType":"YulFunctionCall","src":"2035:19:75"},"nativeSrc":"2035:19:75","nodeType":"YulExpressionStatement","src":"2035:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2073:3:75","nodeType":"YulIdentifier","src":"2073:3:75"},{"kind":"number","nativeSrc":"2078:4:75","nodeType":"YulLiteral","src":"2078:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2069:3:75","nodeType":"YulIdentifier","src":"2069:3:75"},"nativeSrc":"2069:14:75","nodeType":"YulFunctionCall","src":"2069:14:75"},{"arguments":[{"name":"value","nativeSrc":"2089:5:75","nodeType":"YulIdentifier","src":"2089:5:75"},{"kind":"number","nativeSrc":"2096:4:75","nodeType":"YulLiteral","src":"2096:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2085:3:75","nodeType":"YulIdentifier","src":"2085:3:75"},"nativeSrc":"2085:16:75","nodeType":"YulFunctionCall","src":"2085:16:75"},{"name":"length","nativeSrc":"2103:6:75","nodeType":"YulIdentifier","src":"2103:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"2063:5:75","nodeType":"YulIdentifier","src":"2063:5:75"},"nativeSrc":"2063:47:75","nodeType":"YulFunctionCall","src":"2063:47:75"},"nativeSrc":"2063:47:75","nodeType":"YulExpressionStatement","src":"2063:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2134:3:75","nodeType":"YulIdentifier","src":"2134:3:75"},{"name":"length","nativeSrc":"2139:6:75","nodeType":"YulIdentifier","src":"2139:6:75"}],"functionName":{"name":"add","nativeSrc":"2130:3:75","nodeType":"YulIdentifier","src":"2130:3:75"},"nativeSrc":"2130:16:75","nodeType":"YulFunctionCall","src":"2130:16:75"},{"kind":"number","nativeSrc":"2148:4:75","nodeType":"YulLiteral","src":"2148:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2126:3:75","nodeType":"YulIdentifier","src":"2126:3:75"},"nativeSrc":"2126:27:75","nodeType":"YulFunctionCall","src":"2126:27:75"},{"kind":"number","nativeSrc":"2155:1:75","nodeType":"YulLiteral","src":"2155:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2119:6:75","nodeType":"YulIdentifier","src":"2119:6:75"},"nativeSrc":"2119:38:75","nodeType":"YulFunctionCall","src":"2119:38:75"},"nativeSrc":"2119:38:75","nodeType":"YulExpressionStatement","src":"2119:38:75"},{"nativeSrc":"2166:57:75","nodeType":"YulAssignment","src":"2166:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2181:3:75","nodeType":"YulIdentifier","src":"2181:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2194:6:75","nodeType":"YulIdentifier","src":"2194:6:75"},{"kind":"number","nativeSrc":"2202:2:75","nodeType":"YulLiteral","src":"2202:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2190:3:75","nodeType":"YulIdentifier","src":"2190:3:75"},"nativeSrc":"2190:15:75","nodeType":"YulFunctionCall","src":"2190:15:75"},{"arguments":[{"kind":"number","nativeSrc":"2211:2:75","nodeType":"YulLiteral","src":"2211:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2207:3:75","nodeType":"YulIdentifier","src":"2207:3:75"},"nativeSrc":"2207:7:75","nodeType":"YulFunctionCall","src":"2207:7:75"}],"functionName":{"name":"and","nativeSrc":"2186:3:75","nodeType":"YulIdentifier","src":"2186:3:75"},"nativeSrc":"2186:29:75","nodeType":"YulFunctionCall","src":"2186:29:75"}],"functionName":{"name":"add","nativeSrc":"2177:3:75","nodeType":"YulIdentifier","src":"2177:3:75"},"nativeSrc":"2177:39:75","nodeType":"YulFunctionCall","src":"2177:39:75"},{"kind":"number","nativeSrc":"2218:4:75","nodeType":"YulLiteral","src":"2218:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2173:3:75","nodeType":"YulIdentifier","src":"2173:3:75"},"nativeSrc":"2173:50:75","nodeType":"YulFunctionCall","src":"2173:50:75"},"variableNames":[{"name":"end","nativeSrc":"2166:3:75","nodeType":"YulIdentifier","src":"2166:3:75"}]}]},"name":"abi_encode_bytes","nativeSrc":"1941:288:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1967:5:75","nodeType":"YulTypedName","src":"1967:5:75","type":""},{"name":"pos","nativeSrc":"1974:3:75","nodeType":"YulTypedName","src":"1974:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1982:3:75","nodeType":"YulTypedName","src":"1982:3:75","type":""}],"src":"1941:288:75"},{"body":{"nativeSrc":"2353:98:75","nodeType":"YulBlock","src":"2353:98:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2370:9:75","nodeType":"YulIdentifier","src":"2370:9:75"},{"kind":"number","nativeSrc":"2381:2:75","nodeType":"YulLiteral","src":"2381:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2363:6:75","nodeType":"YulIdentifier","src":"2363:6:75"},"nativeSrc":"2363:21:75","nodeType":"YulFunctionCall","src":"2363:21:75"},"nativeSrc":"2363:21:75","nodeType":"YulExpressionStatement","src":"2363:21:75"},{"nativeSrc":"2393:52:75","nodeType":"YulAssignment","src":"2393:52:75","value":{"arguments":[{"name":"value0","nativeSrc":"2418:6:75","nodeType":"YulIdentifier","src":"2418:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"2430:9:75","nodeType":"YulIdentifier","src":"2430:9:75"},{"kind":"number","nativeSrc":"2441:2:75","nodeType":"YulLiteral","src":"2441:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2426:3:75","nodeType":"YulIdentifier","src":"2426:3:75"},"nativeSrc":"2426:18:75","nodeType":"YulFunctionCall","src":"2426:18:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"2401:16:75","nodeType":"YulIdentifier","src":"2401:16:75"},"nativeSrc":"2401:44:75","nodeType":"YulFunctionCall","src":"2401:44:75"},"variableNames":[{"name":"tail","nativeSrc":"2393:4:75","nodeType":"YulIdentifier","src":"2393:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2234:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2322:9:75","nodeType":"YulTypedName","src":"2322:9:75","type":""},{"name":"value0","nativeSrc":"2333:6:75","nodeType":"YulTypedName","src":"2333:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2344:4:75","nodeType":"YulTypedName","src":"2344:4:75","type":""}],"src":"2234:217:75"},{"body":{"nativeSrc":"2526:110:75","nodeType":"YulBlock","src":"2526:110:75","statements":[{"body":{"nativeSrc":"2572:16:75","nodeType":"YulBlock","src":"2572:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2581:1:75","nodeType":"YulLiteral","src":"2581:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2584:1:75","nodeType":"YulLiteral","src":"2584:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2574:6:75","nodeType":"YulIdentifier","src":"2574:6:75"},"nativeSrc":"2574:12:75","nodeType":"YulFunctionCall","src":"2574:12:75"},"nativeSrc":"2574:12:75","nodeType":"YulExpressionStatement","src":"2574:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2547:7:75","nodeType":"YulIdentifier","src":"2547:7:75"},{"name":"headStart","nativeSrc":"2556:9:75","nodeType":"YulIdentifier","src":"2556:9:75"}],"functionName":{"name":"sub","nativeSrc":"2543:3:75","nodeType":"YulIdentifier","src":"2543:3:75"},"nativeSrc":"2543:23:75","nodeType":"YulFunctionCall","src":"2543:23:75"},{"kind":"number","nativeSrc":"2568:2:75","nodeType":"YulLiteral","src":"2568:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2539:3:75","nodeType":"YulIdentifier","src":"2539:3:75"},"nativeSrc":"2539:32:75","nodeType":"YulFunctionCall","src":"2539:32:75"},"nativeSrc":"2536:52:75","nodeType":"YulIf","src":"2536:52:75"},{"nativeSrc":"2597:33:75","nodeType":"YulAssignment","src":"2597:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2620:9:75","nodeType":"YulIdentifier","src":"2620:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2607:12:75","nodeType":"YulIdentifier","src":"2607:12:75"},"nativeSrc":"2607:23:75","nodeType":"YulFunctionCall","src":"2607:23:75"},"variableNames":[{"name":"value0","nativeSrc":"2597:6:75","nodeType":"YulIdentifier","src":"2597:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2456:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2492:9:75","nodeType":"YulTypedName","src":"2492:9:75","type":""},{"name":"dataEnd","nativeSrc":"2503:7:75","nodeType":"YulTypedName","src":"2503:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2515:6:75","nodeType":"YulTypedName","src":"2515:6:75","type":""}],"src":"2456:180:75"},{"body":{"nativeSrc":"2711:216:75","nodeType":"YulBlock","src":"2711:216:75","statements":[{"body":{"nativeSrc":"2757:16:75","nodeType":"YulBlock","src":"2757:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2766:1:75","nodeType":"YulLiteral","src":"2766:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2769:1:75","nodeType":"YulLiteral","src":"2769:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2759:6:75","nodeType":"YulIdentifier","src":"2759:6:75"},"nativeSrc":"2759:12:75","nodeType":"YulFunctionCall","src":"2759:12:75"},"nativeSrc":"2759:12:75","nodeType":"YulExpressionStatement","src":"2759:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2732:7:75","nodeType":"YulIdentifier","src":"2732:7:75"},{"name":"headStart","nativeSrc":"2741:9:75","nodeType":"YulIdentifier","src":"2741:9:75"}],"functionName":{"name":"sub","nativeSrc":"2728:3:75","nodeType":"YulIdentifier","src":"2728:3:75"},"nativeSrc":"2728:23:75","nodeType":"YulFunctionCall","src":"2728:23:75"},{"kind":"number","nativeSrc":"2753:2:75","nodeType":"YulLiteral","src":"2753:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2724:3:75","nodeType":"YulIdentifier","src":"2724:3:75"},"nativeSrc":"2724:32:75","nodeType":"YulFunctionCall","src":"2724:32:75"},"nativeSrc":"2721:52:75","nodeType":"YulIf","src":"2721:52:75"},{"nativeSrc":"2782:36:75","nodeType":"YulVariableDeclaration","src":"2782:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2808:9:75","nodeType":"YulIdentifier","src":"2808:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2795:12:75","nodeType":"YulIdentifier","src":"2795:12:75"},"nativeSrc":"2795:23:75","nodeType":"YulFunctionCall","src":"2795:23:75"},"variables":[{"name":"value","nativeSrc":"2786:5:75","nodeType":"YulTypedName","src":"2786:5:75","type":""}]},{"body":{"nativeSrc":"2881:16:75","nodeType":"YulBlock","src":"2881:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2890:1:75","nodeType":"YulLiteral","src":"2890:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2893:1:75","nodeType":"YulLiteral","src":"2893:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2883:6:75","nodeType":"YulIdentifier","src":"2883:6:75"},"nativeSrc":"2883:12:75","nodeType":"YulFunctionCall","src":"2883:12:75"},"nativeSrc":"2883:12:75","nodeType":"YulExpressionStatement","src":"2883:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2840:5:75","nodeType":"YulIdentifier","src":"2840:5:75"},{"arguments":[{"name":"value","nativeSrc":"2851:5:75","nodeType":"YulIdentifier","src":"2851:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2866:3:75","nodeType":"YulLiteral","src":"2866:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2871:1:75","nodeType":"YulLiteral","src":"2871:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2862:3:75","nodeType":"YulIdentifier","src":"2862:3:75"},"nativeSrc":"2862:11:75","nodeType":"YulFunctionCall","src":"2862:11:75"},{"kind":"number","nativeSrc":"2875:1:75","nodeType":"YulLiteral","src":"2875:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2858:3:75","nodeType":"YulIdentifier","src":"2858:3:75"},"nativeSrc":"2858:19:75","nodeType":"YulFunctionCall","src":"2858:19:75"}],"functionName":{"name":"and","nativeSrc":"2847:3:75","nodeType":"YulIdentifier","src":"2847:3:75"},"nativeSrc":"2847:31:75","nodeType":"YulFunctionCall","src":"2847:31:75"}],"functionName":{"name":"eq","nativeSrc":"2837:2:75","nodeType":"YulIdentifier","src":"2837:2:75"},"nativeSrc":"2837:42:75","nodeType":"YulFunctionCall","src":"2837:42:75"}],"functionName":{"name":"iszero","nativeSrc":"2830:6:75","nodeType":"YulIdentifier","src":"2830:6:75"},"nativeSrc":"2830:50:75","nodeType":"YulFunctionCall","src":"2830:50:75"},"nativeSrc":"2827:70:75","nodeType":"YulIf","src":"2827:70:75"},{"nativeSrc":"2906:15:75","nodeType":"YulAssignment","src":"2906:15:75","value":{"name":"value","nativeSrc":"2916:5:75","nodeType":"YulIdentifier","src":"2916:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2906:6:75","nodeType":"YulIdentifier","src":"2906:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2641:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2677:9:75","nodeType":"YulTypedName","src":"2677:9:75","type":""},{"name":"dataEnd","nativeSrc":"2688:7:75","nodeType":"YulTypedName","src":"2688:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2700:6:75","nodeType":"YulTypedName","src":"2700:6:75","type":""}],"src":"2641:286:75"},{"body":{"nativeSrc":"3033:76:75","nodeType":"YulBlock","src":"3033:76:75","statements":[{"nativeSrc":"3043:26:75","nodeType":"YulAssignment","src":"3043:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3055:9:75","nodeType":"YulIdentifier","src":"3055:9:75"},{"kind":"number","nativeSrc":"3066:2:75","nodeType":"YulLiteral","src":"3066:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3051:3:75","nodeType":"YulIdentifier","src":"3051:3:75"},"nativeSrc":"3051:18:75","nodeType":"YulFunctionCall","src":"3051:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3043:4:75","nodeType":"YulIdentifier","src":"3043:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3085:9:75","nodeType":"YulIdentifier","src":"3085:9:75"},{"name":"value0","nativeSrc":"3096:6:75","nodeType":"YulIdentifier","src":"3096:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3078:6:75","nodeType":"YulIdentifier","src":"3078:6:75"},"nativeSrc":"3078:25:75","nodeType":"YulFunctionCall","src":"3078:25:75"},"nativeSrc":"3078:25:75","nodeType":"YulExpressionStatement","src":"3078:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2932:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3002:9:75","nodeType":"YulTypedName","src":"3002:9:75","type":""},{"name":"value0","nativeSrc":"3013:6:75","nodeType":"YulTypedName","src":"3013:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3024:4:75","nodeType":"YulTypedName","src":"3024:4:75","type":""}],"src":"2932:177:75"},{"body":{"nativeSrc":"3146:95:75","nodeType":"YulBlock","src":"3146:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3163:1:75","nodeType":"YulLiteral","src":"3163:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3170:3:75","nodeType":"YulLiteral","src":"3170:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3175:10:75","nodeType":"YulLiteral","src":"3175:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3166:3:75","nodeType":"YulIdentifier","src":"3166:3:75"},"nativeSrc":"3166:20:75","nodeType":"YulFunctionCall","src":"3166:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3156:6:75","nodeType":"YulIdentifier","src":"3156:6:75"},"nativeSrc":"3156:31:75","nodeType":"YulFunctionCall","src":"3156:31:75"},"nativeSrc":"3156:31:75","nodeType":"YulExpressionStatement","src":"3156:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3203:1:75","nodeType":"YulLiteral","src":"3203:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3206:4:75","nodeType":"YulLiteral","src":"3206:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3196:6:75","nodeType":"YulIdentifier","src":"3196:6:75"},"nativeSrc":"3196:15:75","nodeType":"YulFunctionCall","src":"3196:15:75"},"nativeSrc":"3196:15:75","nodeType":"YulExpressionStatement","src":"3196:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3227:1:75","nodeType":"YulLiteral","src":"3227:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3230:4:75","nodeType":"YulLiteral","src":"3230:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3220:6:75","nodeType":"YulIdentifier","src":"3220:6:75"},"nativeSrc":"3220:15:75","nodeType":"YulFunctionCall","src":"3220:15:75"},"nativeSrc":"3220:15:75","nodeType":"YulExpressionStatement","src":"3220:15:75"}]},"name":"panic_error_0x21","nativeSrc":"3114:127:75","nodeType":"YulFunctionDefinition","src":"3114:127:75"},{"body":{"nativeSrc":"3307:418:75","nodeType":"YulBlock","src":"3307:418:75","statements":[{"nativeSrc":"3317:22:75","nodeType":"YulVariableDeclaration","src":"3317:22:75","value":{"arguments":[{"name":"value","nativeSrc":"3333:5:75","nodeType":"YulIdentifier","src":"3333:5:75"}],"functionName":{"name":"mload","nativeSrc":"3327:5:75","nodeType":"YulIdentifier","src":"3327:5:75"},"nativeSrc":"3327:12:75","nodeType":"YulFunctionCall","src":"3327:12:75"},"variables":[{"name":"_1","nativeSrc":"3321:2:75","nodeType":"YulTypedName","src":"3321:2:75","type":""}]},{"body":{"nativeSrc":"3377:111:75","nodeType":"YulBlock","src":"3377:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3398:1:75","nodeType":"YulLiteral","src":"3398:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3405:3:75","nodeType":"YulLiteral","src":"3405:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"3410:10:75","nodeType":"YulLiteral","src":"3410:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3401:3:75","nodeType":"YulIdentifier","src":"3401:3:75"},"nativeSrc":"3401:20:75","nodeType":"YulFunctionCall","src":"3401:20:75"}],"functionName":{"name":"mstore","nativeSrc":"3391:6:75","nodeType":"YulIdentifier","src":"3391:6:75"},"nativeSrc":"3391:31:75","nodeType":"YulFunctionCall","src":"3391:31:75"},"nativeSrc":"3391:31:75","nodeType":"YulExpressionStatement","src":"3391:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3442:1:75","nodeType":"YulLiteral","src":"3442:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"3445:4:75","nodeType":"YulLiteral","src":"3445:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3435:6:75","nodeType":"YulIdentifier","src":"3435:6:75"},"nativeSrc":"3435:15:75","nodeType":"YulFunctionCall","src":"3435:15:75"},"nativeSrc":"3435:15:75","nodeType":"YulExpressionStatement","src":"3435:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3470:1:75","nodeType":"YulLiteral","src":"3470:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3473:4:75","nodeType":"YulLiteral","src":"3473:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3463:6:75","nodeType":"YulIdentifier","src":"3463:6:75"},"nativeSrc":"3463:15:75","nodeType":"YulFunctionCall","src":"3463:15:75"},"nativeSrc":"3463:15:75","nodeType":"YulExpressionStatement","src":"3463:15:75"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3361:2:75","nodeType":"YulIdentifier","src":"3361:2:75"},{"kind":"number","nativeSrc":"3365:1:75","nodeType":"YulLiteral","src":"3365:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"3358:2:75","nodeType":"YulIdentifier","src":"3358:2:75"},"nativeSrc":"3358:9:75","nodeType":"YulFunctionCall","src":"3358:9:75"}],"functionName":{"name":"iszero","nativeSrc":"3351:6:75","nodeType":"YulIdentifier","src":"3351:6:75"},"nativeSrc":"3351:17:75","nodeType":"YulFunctionCall","src":"3351:17:75"},"nativeSrc":"3348:140:75","nodeType":"YulIf","src":"3348:140:75"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3504:3:75","nodeType":"YulIdentifier","src":"3504:3:75"},{"name":"_1","nativeSrc":"3509:2:75","nodeType":"YulIdentifier","src":"3509:2:75"}],"functionName":{"name":"mstore","nativeSrc":"3497:6:75","nodeType":"YulIdentifier","src":"3497:6:75"},"nativeSrc":"3497:15:75","nodeType":"YulFunctionCall","src":"3497:15:75"},"nativeSrc":"3497:15:75","nodeType":"YulExpressionStatement","src":"3497:15:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3532:3:75","nodeType":"YulIdentifier","src":"3532:3:75"},{"kind":"number","nativeSrc":"3537:4:75","nodeType":"YulLiteral","src":"3537:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3528:3:75","nodeType":"YulIdentifier","src":"3528:3:75"},"nativeSrc":"3528:14:75","nodeType":"YulFunctionCall","src":"3528:14:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3554:5:75","nodeType":"YulIdentifier","src":"3554:5:75"},{"kind":"number","nativeSrc":"3561:4:75","nodeType":"YulLiteral","src":"3561:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3550:3:75","nodeType":"YulIdentifier","src":"3550:3:75"},"nativeSrc":"3550:16:75","nodeType":"YulFunctionCall","src":"3550:16:75"}],"functionName":{"name":"mload","nativeSrc":"3544:5:75","nodeType":"YulIdentifier","src":"3544:5:75"},"nativeSrc":"3544:23:75","nodeType":"YulFunctionCall","src":"3544:23:75"}],"functionName":{"name":"mstore","nativeSrc":"3521:6:75","nodeType":"YulIdentifier","src":"3521:6:75"},"nativeSrc":"3521:47:75","nodeType":"YulFunctionCall","src":"3521:47:75"},"nativeSrc":"3521:47:75","nodeType":"YulExpressionStatement","src":"3521:47:75"},{"nativeSrc":"3577:43:75","nodeType":"YulVariableDeclaration","src":"3577:43:75","value":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3607:5:75","nodeType":"YulIdentifier","src":"3607:5:75"},{"kind":"number","nativeSrc":"3614:4:75","nodeType":"YulLiteral","src":"3614:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3603:3:75","nodeType":"YulIdentifier","src":"3603:3:75"},"nativeSrc":"3603:16:75","nodeType":"YulFunctionCall","src":"3603:16:75"}],"functionName":{"name":"mload","nativeSrc":"3597:5:75","nodeType":"YulIdentifier","src":"3597:5:75"},"nativeSrc":"3597:23:75","nodeType":"YulFunctionCall","src":"3597:23:75"},"variables":[{"name":"memberValue0","nativeSrc":"3581:12:75","nodeType":"YulTypedName","src":"3581:12:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3640:3:75","nodeType":"YulIdentifier","src":"3640:3:75"},{"kind":"number","nativeSrc":"3645:4:75","nodeType":"YulLiteral","src":"3645:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3636:3:75","nodeType":"YulIdentifier","src":"3636:3:75"},"nativeSrc":"3636:14:75","nodeType":"YulFunctionCall","src":"3636:14:75"},{"kind":"number","nativeSrc":"3652:4:75","nodeType":"YulLiteral","src":"3652:4:75","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"3629:6:75","nodeType":"YulIdentifier","src":"3629:6:75"},"nativeSrc":"3629:28:75","nodeType":"YulFunctionCall","src":"3629:28:75"},"nativeSrc":"3629:28:75","nodeType":"YulExpressionStatement","src":"3629:28:75"},{"nativeSrc":"3666:53:75","nodeType":"YulAssignment","src":"3666:53:75","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3690:12:75","nodeType":"YulIdentifier","src":"3690:12:75"},{"arguments":[{"name":"pos","nativeSrc":"3708:3:75","nodeType":"YulIdentifier","src":"3708:3:75"},{"kind":"number","nativeSrc":"3713:4:75","nodeType":"YulLiteral","src":"3713:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3704:3:75","nodeType":"YulIdentifier","src":"3704:3:75"},"nativeSrc":"3704:14:75","nodeType":"YulFunctionCall","src":"3704:14:75"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3673:16:75","nodeType":"YulIdentifier","src":"3673:16:75"},"nativeSrc":"3673:46:75","nodeType":"YulFunctionCall","src":"3673:46:75"},"variableNames":[{"name":"end","nativeSrc":"3666:3:75","nodeType":"YulIdentifier","src":"3666:3:75"}]}]},"name":"abi_encode_struct_SwapConfig","nativeSrc":"3246:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3284:5:75","nodeType":"YulTypedName","src":"3284:5:75","type":""},{"name":"pos","nativeSrc":"3291:3:75","nodeType":"YulTypedName","src":"3291:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3299:3:75","nodeType":"YulTypedName","src":"3299:3:75","type":""}],"src":"3246:479:75"},{"body":{"nativeSrc":"3885:110:75","nodeType":"YulBlock","src":"3885:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3902:9:75","nodeType":"YulIdentifier","src":"3902:9:75"},{"kind":"number","nativeSrc":"3913:2:75","nodeType":"YulLiteral","src":"3913:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3895:6:75","nodeType":"YulIdentifier","src":"3895:6:75"},"nativeSrc":"3895:21:75","nodeType":"YulFunctionCall","src":"3895:21:75"},"nativeSrc":"3895:21:75","nodeType":"YulExpressionStatement","src":"3895:21:75"},{"nativeSrc":"3925:64:75","nodeType":"YulAssignment","src":"3925:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"3962:6:75","nodeType":"YulIdentifier","src":"3962:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"3974:9:75","nodeType":"YulIdentifier","src":"3974:9:75"},{"kind":"number","nativeSrc":"3985:2:75","nodeType":"YulLiteral","src":"3985:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3970:3:75","nodeType":"YulIdentifier","src":"3970:3:75"},"nativeSrc":"3970:18:75","nodeType":"YulFunctionCall","src":"3970:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"3933:28:75","nodeType":"YulIdentifier","src":"3933:28:75"},"nativeSrc":"3933:56:75","nodeType":"YulFunctionCall","src":"3933:56:75"},"variableNames":[{"name":"tail","nativeSrc":"3925:4:75","nodeType":"YulIdentifier","src":"3925:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"3730:265:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3854:9:75","nodeType":"YulTypedName","src":"3854:9:75","type":""},{"name":"value0","nativeSrc":"3865:6:75","nodeType":"YulTypedName","src":"3865:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3876:4:75","nodeType":"YulTypedName","src":"3876:4:75","type":""}],"src":"3730:265:75"},{"body":{"nativeSrc":"4067:206:75","nodeType":"YulBlock","src":"4067:206:75","statements":[{"body":{"nativeSrc":"4113:16:75","nodeType":"YulBlock","src":"4113:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4122:1:75","nodeType":"YulLiteral","src":"4122:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4125:1:75","nodeType":"YulLiteral","src":"4125:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4115:6:75","nodeType":"YulIdentifier","src":"4115:6:75"},"nativeSrc":"4115:12:75","nodeType":"YulFunctionCall","src":"4115:12:75"},"nativeSrc":"4115:12:75","nodeType":"YulExpressionStatement","src":"4115:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4088:7:75","nodeType":"YulIdentifier","src":"4088:7:75"},{"name":"headStart","nativeSrc":"4097:9:75","nodeType":"YulIdentifier","src":"4097:9:75"}],"functionName":{"name":"sub","nativeSrc":"4084:3:75","nodeType":"YulIdentifier","src":"4084:3:75"},"nativeSrc":"4084:23:75","nodeType":"YulFunctionCall","src":"4084:23:75"},{"kind":"number","nativeSrc":"4109:2:75","nodeType":"YulLiteral","src":"4109:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4080:3:75","nodeType":"YulIdentifier","src":"4080:3:75"},"nativeSrc":"4080:32:75","nodeType":"YulFunctionCall","src":"4080:32:75"},"nativeSrc":"4077:52:75","nodeType":"YulIf","src":"4077:52:75"},{"nativeSrc":"4138:36:75","nodeType":"YulVariableDeclaration","src":"4138:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4164:9:75","nodeType":"YulIdentifier","src":"4164:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4151:12:75","nodeType":"YulIdentifier","src":"4151:12:75"},"nativeSrc":"4151:23:75","nodeType":"YulFunctionCall","src":"4151:23:75"},"variables":[{"name":"value","nativeSrc":"4142:5:75","nodeType":"YulTypedName","src":"4142:5:75","type":""}]},{"body":{"nativeSrc":"4227:16:75","nodeType":"YulBlock","src":"4227:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4236:1:75","nodeType":"YulLiteral","src":"4236:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4239:1:75","nodeType":"YulLiteral","src":"4239:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4229:6:75","nodeType":"YulIdentifier","src":"4229:6:75"},"nativeSrc":"4229:12:75","nodeType":"YulFunctionCall","src":"4229:12:75"},"nativeSrc":"4229:12:75","nodeType":"YulExpressionStatement","src":"4229:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4196:5:75","nodeType":"YulIdentifier","src":"4196:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4217:5:75","nodeType":"YulIdentifier","src":"4217:5:75"}],"functionName":{"name":"iszero","nativeSrc":"4210:6:75","nodeType":"YulIdentifier","src":"4210:6:75"},"nativeSrc":"4210:13:75","nodeType":"YulFunctionCall","src":"4210:13:75"}],"functionName":{"name":"iszero","nativeSrc":"4203:6:75","nodeType":"YulIdentifier","src":"4203:6:75"},"nativeSrc":"4203:21:75","nodeType":"YulFunctionCall","src":"4203:21:75"}],"functionName":{"name":"eq","nativeSrc":"4193:2:75","nodeType":"YulIdentifier","src":"4193:2:75"},"nativeSrc":"4193:32:75","nodeType":"YulFunctionCall","src":"4193:32:75"}],"functionName":{"name":"iszero","nativeSrc":"4186:6:75","nodeType":"YulIdentifier","src":"4186:6:75"},"nativeSrc":"4186:40:75","nodeType":"YulFunctionCall","src":"4186:40:75"},"nativeSrc":"4183:60:75","nodeType":"YulIf","src":"4183:60:75"},{"nativeSrc":"4252:15:75","nodeType":"YulAssignment","src":"4252:15:75","value":{"name":"value","nativeSrc":"4262:5:75","nodeType":"YulIdentifier","src":"4262:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4252:6:75","nodeType":"YulIdentifier","src":"4252:6:75"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"4000:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4033:9:75","nodeType":"YulTypedName","src":"4033:9:75","type":""},{"name":"dataEnd","nativeSrc":"4044:7:75","nodeType":"YulTypedName","src":"4044:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4056:6:75","nodeType":"YulTypedName","src":"4056:6:75","type":""}],"src":"4000:273:75"},{"body":{"nativeSrc":"4379:76:75","nodeType":"YulBlock","src":"4379:76:75","statements":[{"nativeSrc":"4389:26:75","nodeType":"YulAssignment","src":"4389:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4401:9:75","nodeType":"YulIdentifier","src":"4401:9:75"},{"kind":"number","nativeSrc":"4412:2:75","nodeType":"YulLiteral","src":"4412:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4397:3:75","nodeType":"YulIdentifier","src":"4397:3:75"},"nativeSrc":"4397:18:75","nodeType":"YulFunctionCall","src":"4397:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4389:4:75","nodeType":"YulIdentifier","src":"4389:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4431:9:75","nodeType":"YulIdentifier","src":"4431:9:75"},{"name":"value0","nativeSrc":"4442:6:75","nodeType":"YulIdentifier","src":"4442:6:75"}],"functionName":{"name":"mstore","nativeSrc":"4424:6:75","nodeType":"YulIdentifier","src":"4424:6:75"},"nativeSrc":"4424:25:75","nodeType":"YulFunctionCall","src":"4424:25:75"},"nativeSrc":"4424:25:75","nodeType":"YulExpressionStatement","src":"4424:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"4278:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4348:9:75","nodeType":"YulTypedName","src":"4348:9:75","type":""},{"name":"value0","nativeSrc":"4359:6:75","nodeType":"YulTypedName","src":"4359:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4370:4:75","nodeType":"YulTypedName","src":"4370:4:75","type":""}],"src":"4278:177:75"},{"body":{"nativeSrc":"4561:102:75","nodeType":"YulBlock","src":"4561:102:75","statements":[{"nativeSrc":"4571:26:75","nodeType":"YulAssignment","src":"4571:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4583:9:75","nodeType":"YulIdentifier","src":"4583:9:75"},{"kind":"number","nativeSrc":"4594:2:75","nodeType":"YulLiteral","src":"4594:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4579:3:75","nodeType":"YulIdentifier","src":"4579:3:75"},"nativeSrc":"4579:18:75","nodeType":"YulFunctionCall","src":"4579:18:75"},"variableNames":[{"name":"tail","nativeSrc":"4571:4:75","nodeType":"YulIdentifier","src":"4571:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4613:9:75","nodeType":"YulIdentifier","src":"4613:9:75"},{"arguments":[{"name":"value0","nativeSrc":"4628:6:75","nodeType":"YulIdentifier","src":"4628:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4644:3:75","nodeType":"YulLiteral","src":"4644:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"4649:1:75","nodeType":"YulLiteral","src":"4649:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4640:3:75","nodeType":"YulIdentifier","src":"4640:3:75"},"nativeSrc":"4640:11:75","nodeType":"YulFunctionCall","src":"4640:11:75"},{"kind":"number","nativeSrc":"4653:1:75","nodeType":"YulLiteral","src":"4653:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4636:3:75","nodeType":"YulIdentifier","src":"4636:3:75"},"nativeSrc":"4636:19:75","nodeType":"YulFunctionCall","src":"4636:19:75"}],"functionName":{"name":"and","nativeSrc":"4624:3:75","nodeType":"YulIdentifier","src":"4624:3:75"},"nativeSrc":"4624:32:75","nodeType":"YulFunctionCall","src":"4624:32:75"}],"functionName":{"name":"mstore","nativeSrc":"4606:6:75","nodeType":"YulIdentifier","src":"4606:6:75"},"nativeSrc":"4606:51:75","nodeType":"YulFunctionCall","src":"4606:51:75"},"nativeSrc":"4606:51:75","nodeType":"YulExpressionStatement","src":"4606:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"4460:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4530:9:75","nodeType":"YulTypedName","src":"4530:9:75","type":""},{"name":"value0","nativeSrc":"4541:6:75","nodeType":"YulTypedName","src":"4541:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4552:4:75","nodeType":"YulTypedName","src":"4552:4:75","type":""}],"src":"4460:203:75"},{"body":{"nativeSrc":"4747:241:75","nodeType":"YulBlock","src":"4747:241:75","statements":[{"body":{"nativeSrc":"4793:16:75","nodeType":"YulBlock","src":"4793:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4802:1:75","nodeType":"YulLiteral","src":"4802:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4805:1:75","nodeType":"YulLiteral","src":"4805:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4795:6:75","nodeType":"YulIdentifier","src":"4795:6:75"},"nativeSrc":"4795:12:75","nodeType":"YulFunctionCall","src":"4795:12:75"},"nativeSrc":"4795:12:75","nodeType":"YulExpressionStatement","src":"4795:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4768:7:75","nodeType":"YulIdentifier","src":"4768:7:75"},{"name":"headStart","nativeSrc":"4777:9:75","nodeType":"YulIdentifier","src":"4777:9:75"}],"functionName":{"name":"sub","nativeSrc":"4764:3:75","nodeType":"YulIdentifier","src":"4764:3:75"},"nativeSrc":"4764:23:75","nodeType":"YulFunctionCall","src":"4764:23:75"},{"kind":"number","nativeSrc":"4789:2:75","nodeType":"YulLiteral","src":"4789:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4760:3:75","nodeType":"YulIdentifier","src":"4760:3:75"},"nativeSrc":"4760:32:75","nodeType":"YulFunctionCall","src":"4760:32:75"},"nativeSrc":"4757:52:75","nodeType":"YulIf","src":"4757:52:75"},{"nativeSrc":"4818:37:75","nodeType":"YulVariableDeclaration","src":"4818:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4845:9:75","nodeType":"YulIdentifier","src":"4845:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4832:12:75","nodeType":"YulIdentifier","src":"4832:12:75"},"nativeSrc":"4832:23:75","nodeType":"YulFunctionCall","src":"4832:23:75"},"variables":[{"name":"offset","nativeSrc":"4822:6:75","nodeType":"YulTypedName","src":"4822:6:75","type":""}]},{"body":{"nativeSrc":"4898:16:75","nodeType":"YulBlock","src":"4898:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4907:1:75","nodeType":"YulLiteral","src":"4907:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4910:1:75","nodeType":"YulLiteral","src":"4910:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4900:6:75","nodeType":"YulIdentifier","src":"4900:6:75"},"nativeSrc":"4900:12:75","nodeType":"YulFunctionCall","src":"4900:12:75"},"nativeSrc":"4900:12:75","nodeType":"YulExpressionStatement","src":"4900:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4870:6:75","nodeType":"YulIdentifier","src":"4870:6:75"},{"kind":"number","nativeSrc":"4878:18:75","nodeType":"YulLiteral","src":"4878:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4867:2:75","nodeType":"YulIdentifier","src":"4867:2:75"},"nativeSrc":"4867:30:75","nodeType":"YulFunctionCall","src":"4867:30:75"},"nativeSrc":"4864:50:75","nodeType":"YulIf","src":"4864:50:75"},{"nativeSrc":"4923:59:75","nodeType":"YulAssignment","src":"4923:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4954:9:75","nodeType":"YulIdentifier","src":"4954:9:75"},{"name":"offset","nativeSrc":"4965:6:75","nodeType":"YulIdentifier","src":"4965:6:75"}],"functionName":{"name":"add","nativeSrc":"4950:3:75","nodeType":"YulIdentifier","src":"4950:3:75"},"nativeSrc":"4950:22:75","nodeType":"YulFunctionCall","src":"4950:22:75"},{"name":"dataEnd","nativeSrc":"4974:7:75","nodeType":"YulIdentifier","src":"4974:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4933:16:75","nodeType":"YulIdentifier","src":"4933:16:75"},"nativeSrc":"4933:49:75","nodeType":"YulFunctionCall","src":"4933:49:75"},"variableNames":[{"name":"value0","nativeSrc":"4923:6:75","nodeType":"YulIdentifier","src":"4923:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"4668:320:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4713:9:75","nodeType":"YulTypedName","src":"4713:9:75","type":""},{"name":"dataEnd","nativeSrc":"4724:7:75","nodeType":"YulTypedName","src":"4724:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4736:6:75","nodeType":"YulTypedName","src":"4736:6:75","type":""}],"src":"4668:320:75"},{"body":{"nativeSrc":"5048:325:75","nodeType":"YulBlock","src":"5048:325:75","statements":[{"nativeSrc":"5058:22:75","nodeType":"YulAssignment","src":"5058:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"5072:1:75","nodeType":"YulLiteral","src":"5072:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"5075:4:75","nodeType":"YulIdentifier","src":"5075:4:75"}],"functionName":{"name":"shr","nativeSrc":"5068:3:75","nodeType":"YulIdentifier","src":"5068:3:75"},"nativeSrc":"5068:12:75","nodeType":"YulFunctionCall","src":"5068:12:75"},"variableNames":[{"name":"length","nativeSrc":"5058:6:75","nodeType":"YulIdentifier","src":"5058:6:75"}]},{"nativeSrc":"5089:38:75","nodeType":"YulVariableDeclaration","src":"5089:38:75","value":{"arguments":[{"name":"data","nativeSrc":"5119:4:75","nodeType":"YulIdentifier","src":"5119:4:75"},{"kind":"number","nativeSrc":"5125:1:75","nodeType":"YulLiteral","src":"5125:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5115:3:75","nodeType":"YulIdentifier","src":"5115:3:75"},"nativeSrc":"5115:12:75","nodeType":"YulFunctionCall","src":"5115:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5093:18:75","nodeType":"YulTypedName","src":"5093:18:75","type":""}]},{"body":{"nativeSrc":"5166:31:75","nodeType":"YulBlock","src":"5166:31:75","statements":[{"nativeSrc":"5168:27:75","nodeType":"YulAssignment","src":"5168:27:75","value":{"arguments":[{"name":"length","nativeSrc":"5182:6:75","nodeType":"YulIdentifier","src":"5182:6:75"},{"kind":"number","nativeSrc":"5190:4:75","nodeType":"YulLiteral","src":"5190:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5178:3:75","nodeType":"YulIdentifier","src":"5178:3:75"},"nativeSrc":"5178:17:75","nodeType":"YulFunctionCall","src":"5178:17:75"},"variableNames":[{"name":"length","nativeSrc":"5168:6:75","nodeType":"YulIdentifier","src":"5168:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5146:18:75","nodeType":"YulIdentifier","src":"5146:18:75"}],"functionName":{"name":"iszero","nativeSrc":"5139:6:75","nodeType":"YulIdentifier","src":"5139:6:75"},"nativeSrc":"5139:26:75","nodeType":"YulFunctionCall","src":"5139:26:75"},"nativeSrc":"5136:61:75","nodeType":"YulIf","src":"5136:61:75"},{"body":{"nativeSrc":"5256:111:75","nodeType":"YulBlock","src":"5256:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5277:1:75","nodeType":"YulLiteral","src":"5277:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5284:3:75","nodeType":"YulLiteral","src":"5284:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"5289:10:75","nodeType":"YulLiteral","src":"5289:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5280:3:75","nodeType":"YulIdentifier","src":"5280:3:75"},"nativeSrc":"5280:20:75","nodeType":"YulFunctionCall","src":"5280:20:75"}],"functionName":{"name":"mstore","nativeSrc":"5270:6:75","nodeType":"YulIdentifier","src":"5270:6:75"},"nativeSrc":"5270:31:75","nodeType":"YulFunctionCall","src":"5270:31:75"},"nativeSrc":"5270:31:75","nodeType":"YulExpressionStatement","src":"5270:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5321:1:75","nodeType":"YulLiteral","src":"5321:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"5324:4:75","nodeType":"YulLiteral","src":"5324:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"5314:6:75","nodeType":"YulIdentifier","src":"5314:6:75"},"nativeSrc":"5314:15:75","nodeType":"YulFunctionCall","src":"5314:15:75"},"nativeSrc":"5314:15:75","nodeType":"YulExpressionStatement","src":"5314:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5349:1:75","nodeType":"YulLiteral","src":"5349:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5352:4:75","nodeType":"YulLiteral","src":"5352:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5342:6:75","nodeType":"YulIdentifier","src":"5342:6:75"},"nativeSrc":"5342:15:75","nodeType":"YulFunctionCall","src":"5342:15:75"},"nativeSrc":"5342:15:75","nodeType":"YulExpressionStatement","src":"5342:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5212:18:75","nodeType":"YulIdentifier","src":"5212:18:75"},{"arguments":[{"name":"length","nativeSrc":"5235:6:75","nodeType":"YulIdentifier","src":"5235:6:75"},{"kind":"number","nativeSrc":"5243:2:75","nodeType":"YulLiteral","src":"5243:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"5232:2:75","nodeType":"YulIdentifier","src":"5232:2:75"},"nativeSrc":"5232:14:75","nodeType":"YulFunctionCall","src":"5232:14:75"}],"functionName":{"name":"eq","nativeSrc":"5209:2:75","nodeType":"YulIdentifier","src":"5209:2:75"},"nativeSrc":"5209:38:75","nodeType":"YulFunctionCall","src":"5209:38:75"},"nativeSrc":"5206:161:75","nodeType":"YulIf","src":"5206:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"4993:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"5028:4:75","nodeType":"YulTypedName","src":"5028:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5037:6:75","nodeType":"YulTypedName","src":"5037:6:75","type":""}],"src":"4993:380:75"},{"body":{"nativeSrc":"5441:420:75","nodeType":"YulBlock","src":"5441:420:75","statements":[{"body":{"nativeSrc":"5490:16:75","nodeType":"YulBlock","src":"5490:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5499:1:75","nodeType":"YulLiteral","src":"5499:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5502:1:75","nodeType":"YulLiteral","src":"5502:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5492:6:75","nodeType":"YulIdentifier","src":"5492:6:75"},"nativeSrc":"5492:12:75","nodeType":"YulFunctionCall","src":"5492:12:75"},"nativeSrc":"5492:12:75","nodeType":"YulExpressionStatement","src":"5492:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5469:6:75","nodeType":"YulIdentifier","src":"5469:6:75"},{"kind":"number","nativeSrc":"5477:4:75","nodeType":"YulLiteral","src":"5477:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5465:3:75","nodeType":"YulIdentifier","src":"5465:3:75"},"nativeSrc":"5465:17:75","nodeType":"YulFunctionCall","src":"5465:17:75"},{"name":"end","nativeSrc":"5484:3:75","nodeType":"YulIdentifier","src":"5484:3:75"}],"functionName":{"name":"slt","nativeSrc":"5461:3:75","nodeType":"YulIdentifier","src":"5461:3:75"},"nativeSrc":"5461:27:75","nodeType":"YulFunctionCall","src":"5461:27:75"}],"functionName":{"name":"iszero","nativeSrc":"5454:6:75","nodeType":"YulIdentifier","src":"5454:6:75"},"nativeSrc":"5454:35:75","nodeType":"YulFunctionCall","src":"5454:35:75"},"nativeSrc":"5451:55:75","nodeType":"YulIf","src":"5451:55:75"},{"nativeSrc":"5515:27:75","nodeType":"YulVariableDeclaration","src":"5515:27:75","value":{"arguments":[{"name":"offset","nativeSrc":"5535:6:75","nodeType":"YulIdentifier","src":"5535:6:75"}],"functionName":{"name":"mload","nativeSrc":"5529:5:75","nodeType":"YulIdentifier","src":"5529:5:75"},"nativeSrc":"5529:13:75","nodeType":"YulFunctionCall","src":"5529:13:75"},"variables":[{"name":"length","nativeSrc":"5519:6:75","nodeType":"YulTypedName","src":"5519:6:75","type":""}]},{"nativeSrc":"5551:67:75","nodeType":"YulVariableDeclaration","src":"5551:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"5610:6:75","nodeType":"YulIdentifier","src":"5610:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"5582:27:75","nodeType":"YulIdentifier","src":"5582:27:75"},"nativeSrc":"5582:35:75","nodeType":"YulFunctionCall","src":"5582:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"5566:15:75","nodeType":"YulIdentifier","src":"5566:15:75"},"nativeSrc":"5566:52:75","nodeType":"YulFunctionCall","src":"5566:52:75"},"variables":[{"name":"array_1","nativeSrc":"5555:7:75","nodeType":"YulTypedName","src":"5555:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"5634:7:75","nodeType":"YulIdentifier","src":"5634:7:75"},{"name":"length","nativeSrc":"5643:6:75","nodeType":"YulIdentifier","src":"5643:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5627:6:75","nodeType":"YulIdentifier","src":"5627:6:75"},"nativeSrc":"5627:23:75","nodeType":"YulFunctionCall","src":"5627:23:75"},"nativeSrc":"5627:23:75","nodeType":"YulExpressionStatement","src":"5627:23:75"},{"body":{"nativeSrc":"5702:16:75","nodeType":"YulBlock","src":"5702:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5711:1:75","nodeType":"YulLiteral","src":"5711:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5714:1:75","nodeType":"YulLiteral","src":"5714:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5704:6:75","nodeType":"YulIdentifier","src":"5704:6:75"},"nativeSrc":"5704:12:75","nodeType":"YulFunctionCall","src":"5704:12:75"},"nativeSrc":"5704:12:75","nodeType":"YulExpressionStatement","src":"5704:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5673:6:75","nodeType":"YulIdentifier","src":"5673:6:75"},{"name":"length","nativeSrc":"5681:6:75","nodeType":"YulIdentifier","src":"5681:6:75"}],"functionName":{"name":"add","nativeSrc":"5669:3:75","nodeType":"YulIdentifier","src":"5669:3:75"},"nativeSrc":"5669:19:75","nodeType":"YulFunctionCall","src":"5669:19:75"},{"kind":"number","nativeSrc":"5690:4:75","nodeType":"YulLiteral","src":"5690:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5665:3:75","nodeType":"YulIdentifier","src":"5665:3:75"},"nativeSrc":"5665:30:75","nodeType":"YulFunctionCall","src":"5665:30:75"},{"name":"end","nativeSrc":"5697:3:75","nodeType":"YulIdentifier","src":"5697:3:75"}],"functionName":{"name":"gt","nativeSrc":"5662:2:75","nodeType":"YulIdentifier","src":"5662:2:75"},"nativeSrc":"5662:39:75","nodeType":"YulFunctionCall","src":"5662:39:75"},"nativeSrc":"5659:59:75","nodeType":"YulIf","src":"5659:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"5737:7:75","nodeType":"YulIdentifier","src":"5737:7:75"},{"kind":"number","nativeSrc":"5746:4:75","nodeType":"YulLiteral","src":"5746:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5733:3:75","nodeType":"YulIdentifier","src":"5733:3:75"},"nativeSrc":"5733:18:75","nodeType":"YulFunctionCall","src":"5733:18:75"},{"arguments":[{"name":"offset","nativeSrc":"5757:6:75","nodeType":"YulIdentifier","src":"5757:6:75"},{"kind":"number","nativeSrc":"5765:4:75","nodeType":"YulLiteral","src":"5765:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5753:3:75","nodeType":"YulIdentifier","src":"5753:3:75"},"nativeSrc":"5753:17:75","nodeType":"YulFunctionCall","src":"5753:17:75"},{"name":"length","nativeSrc":"5772:6:75","nodeType":"YulIdentifier","src":"5772:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"5727:5:75","nodeType":"YulIdentifier","src":"5727:5:75"},"nativeSrc":"5727:52:75","nodeType":"YulFunctionCall","src":"5727:52:75"},"nativeSrc":"5727:52:75","nodeType":"YulExpressionStatement","src":"5727:52:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"5803:7:75","nodeType":"YulIdentifier","src":"5803:7:75"},{"name":"length","nativeSrc":"5812:6:75","nodeType":"YulIdentifier","src":"5812:6:75"}],"functionName":{"name":"add","nativeSrc":"5799:3:75","nodeType":"YulIdentifier","src":"5799:3:75"},"nativeSrc":"5799:20:75","nodeType":"YulFunctionCall","src":"5799:20:75"},{"kind":"number","nativeSrc":"5821:4:75","nodeType":"YulLiteral","src":"5821:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5795:3:75","nodeType":"YulIdentifier","src":"5795:3:75"},"nativeSrc":"5795:31:75","nodeType":"YulFunctionCall","src":"5795:31:75"},{"kind":"number","nativeSrc":"5828:1:75","nodeType":"YulLiteral","src":"5828:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"5788:6:75","nodeType":"YulIdentifier","src":"5788:6:75"},"nativeSrc":"5788:42:75","nodeType":"YulFunctionCall","src":"5788:42:75"},"nativeSrc":"5788:42:75","nodeType":"YulExpressionStatement","src":"5788:42:75"},{"nativeSrc":"5839:16:75","nodeType":"YulAssignment","src":"5839:16:75","value":{"name":"array_1","nativeSrc":"5848:7:75","nodeType":"YulIdentifier","src":"5848:7:75"},"variableNames":[{"name":"array","nativeSrc":"5839:5:75","nodeType":"YulIdentifier","src":"5839:5:75"}]}]},"name":"abi_decode_bytes_fromMemory","nativeSrc":"5378:483:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5415:6:75","nodeType":"YulTypedName","src":"5415:6:75","type":""},{"name":"end","nativeSrc":"5423:3:75","nodeType":"YulTypedName","src":"5423:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"5431:5:75","nodeType":"YulTypedName","src":"5431:5:75","type":""}],"src":"5378:483:75"},{"body":{"nativeSrc":"5974:741:75","nodeType":"YulBlock","src":"5974:741:75","statements":[{"body":{"nativeSrc":"6020:16:75","nodeType":"YulBlock","src":"6020:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6029:1:75","nodeType":"YulLiteral","src":"6029:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6032:1:75","nodeType":"YulLiteral","src":"6032:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6022:6:75","nodeType":"YulIdentifier","src":"6022:6:75"},"nativeSrc":"6022:12:75","nodeType":"YulFunctionCall","src":"6022:12:75"},"nativeSrc":"6022:12:75","nodeType":"YulExpressionStatement","src":"6022:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5995:7:75","nodeType":"YulIdentifier","src":"5995:7:75"},{"name":"headStart","nativeSrc":"6004:9:75","nodeType":"YulIdentifier","src":"6004:9:75"}],"functionName":{"name":"sub","nativeSrc":"5991:3:75","nodeType":"YulIdentifier","src":"5991:3:75"},"nativeSrc":"5991:23:75","nodeType":"YulFunctionCall","src":"5991:23:75"},{"kind":"number","nativeSrc":"6016:2:75","nodeType":"YulLiteral","src":"6016:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5987:3:75","nodeType":"YulIdentifier","src":"5987:3:75"},"nativeSrc":"5987:32:75","nodeType":"YulFunctionCall","src":"5987:32:75"},"nativeSrc":"5984:52:75","nodeType":"YulIf","src":"5984:52:75"},{"nativeSrc":"6045:30:75","nodeType":"YulVariableDeclaration","src":"6045:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6065:9:75","nodeType":"YulIdentifier","src":"6065:9:75"}],"functionName":{"name":"mload","nativeSrc":"6059:5:75","nodeType":"YulIdentifier","src":"6059:5:75"},"nativeSrc":"6059:16:75","nodeType":"YulFunctionCall","src":"6059:16:75"},"variables":[{"name":"offset","nativeSrc":"6049:6:75","nodeType":"YulTypedName","src":"6049:6:75","type":""}]},{"body":{"nativeSrc":"6118:16:75","nodeType":"YulBlock","src":"6118:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6127:1:75","nodeType":"YulLiteral","src":"6127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6130:1:75","nodeType":"YulLiteral","src":"6130:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6120:6:75","nodeType":"YulIdentifier","src":"6120:6:75"},"nativeSrc":"6120:12:75","nodeType":"YulFunctionCall","src":"6120:12:75"},"nativeSrc":"6120:12:75","nodeType":"YulExpressionStatement","src":"6120:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6090:6:75","nodeType":"YulIdentifier","src":"6090:6:75"},{"kind":"number","nativeSrc":"6098:18:75","nodeType":"YulLiteral","src":"6098:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6087:2:75","nodeType":"YulIdentifier","src":"6087:2:75"},"nativeSrc":"6087:30:75","nodeType":"YulFunctionCall","src":"6087:30:75"},"nativeSrc":"6084:50:75","nodeType":"YulIf","src":"6084:50:75"},{"nativeSrc":"6143:32:75","nodeType":"YulVariableDeclaration","src":"6143:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6157:9:75","nodeType":"YulIdentifier","src":"6157:9:75"},{"name":"offset","nativeSrc":"6168:6:75","nodeType":"YulIdentifier","src":"6168:6:75"}],"functionName":{"name":"add","nativeSrc":"6153:3:75","nodeType":"YulIdentifier","src":"6153:3:75"},"nativeSrc":"6153:22:75","nodeType":"YulFunctionCall","src":"6153:22:75"},"variables":[{"name":"_1","nativeSrc":"6147:2:75","nodeType":"YulTypedName","src":"6147:2:75","type":""}]},{"body":{"nativeSrc":"6215:16:75","nodeType":"YulBlock","src":"6215:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6224:1:75","nodeType":"YulLiteral","src":"6224:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6227:1:75","nodeType":"YulLiteral","src":"6227:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6217:6:75","nodeType":"YulIdentifier","src":"6217:6:75"},"nativeSrc":"6217:12:75","nodeType":"YulFunctionCall","src":"6217:12:75"},"nativeSrc":"6217:12:75","nodeType":"YulExpressionStatement","src":"6217:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6195:7:75","nodeType":"YulIdentifier","src":"6195:7:75"},{"name":"_1","nativeSrc":"6204:2:75","nodeType":"YulIdentifier","src":"6204:2:75"}],"functionName":{"name":"sub","nativeSrc":"6191:3:75","nodeType":"YulIdentifier","src":"6191:3:75"},"nativeSrc":"6191:16:75","nodeType":"YulFunctionCall","src":"6191:16:75"},{"kind":"number","nativeSrc":"6209:4:75","nodeType":"YulLiteral","src":"6209:4:75","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"6187:3:75","nodeType":"YulIdentifier","src":"6187:3:75"},"nativeSrc":"6187:27:75","nodeType":"YulFunctionCall","src":"6187:27:75"},"nativeSrc":"6184:47:75","nodeType":"YulIf","src":"6184:47:75"},{"nativeSrc":"6240:35:75","nodeType":"YulVariableDeclaration","src":"6240:35:75","value":{"arguments":[],"functionName":{"name":"allocate_memory_1565","nativeSrc":"6253:20:75","nodeType":"YulIdentifier","src":"6253:20:75"},"nativeSrc":"6253:22:75","nodeType":"YulFunctionCall","src":"6253:22:75"},"variables":[{"name":"value","nativeSrc":"6244:5:75","nodeType":"YulTypedName","src":"6244:5:75","type":""}]},{"nativeSrc":"6284:24:75","nodeType":"YulVariableDeclaration","src":"6284:24:75","value":{"arguments":[{"name":"_1","nativeSrc":"6305:2:75","nodeType":"YulIdentifier","src":"6305:2:75"}],"functionName":{"name":"mload","nativeSrc":"6299:5:75","nodeType":"YulIdentifier","src":"6299:5:75"},"nativeSrc":"6299:9:75","nodeType":"YulFunctionCall","src":"6299:9:75"},"variables":[{"name":"value_1","nativeSrc":"6288:7:75","nodeType":"YulTypedName","src":"6288:7:75","type":""}]},{"body":{"nativeSrc":"6343:16:75","nodeType":"YulBlock","src":"6343:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6352:1:75","nodeType":"YulLiteral","src":"6352:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6355:1:75","nodeType":"YulLiteral","src":"6355:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6345:6:75","nodeType":"YulIdentifier","src":"6345:6:75"},"nativeSrc":"6345:12:75","nodeType":"YulFunctionCall","src":"6345:12:75"},"nativeSrc":"6345:12:75","nodeType":"YulExpressionStatement","src":"6345:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"6330:7:75","nodeType":"YulIdentifier","src":"6330:7:75"},{"kind":"number","nativeSrc":"6339:1:75","nodeType":"YulLiteral","src":"6339:1:75","type":"","value":"3"}],"functionName":{"name":"lt","nativeSrc":"6327:2:75","nodeType":"YulIdentifier","src":"6327:2:75"},"nativeSrc":"6327:14:75","nodeType":"YulFunctionCall","src":"6327:14:75"}],"functionName":{"name":"iszero","nativeSrc":"6320:6:75","nodeType":"YulIdentifier","src":"6320:6:75"},"nativeSrc":"6320:22:75","nodeType":"YulFunctionCall","src":"6320:22:75"},"nativeSrc":"6317:42:75","nodeType":"YulIf","src":"6317:42:75"},{"expression":{"arguments":[{"name":"value","nativeSrc":"6375:5:75","nodeType":"YulIdentifier","src":"6375:5:75"},{"name":"value_1","nativeSrc":"6382:7:75","nodeType":"YulIdentifier","src":"6382:7:75"}],"functionName":{"name":"mstore","nativeSrc":"6368:6:75","nodeType":"YulIdentifier","src":"6368:6:75"},"nativeSrc":"6368:22:75","nodeType":"YulFunctionCall","src":"6368:22:75"},"nativeSrc":"6368:22:75","nodeType":"YulExpressionStatement","src":"6368:22:75"},{"nativeSrc":"6399:16:75","nodeType":"YulVariableDeclaration","src":"6399:16:75","value":{"kind":"number","nativeSrc":"6414:1:75","nodeType":"YulLiteral","src":"6414:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6403:7:75","nodeType":"YulTypedName","src":"6403:7:75","type":""}]},{"nativeSrc":"6424:29:75","nodeType":"YulAssignment","src":"6424:29:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6445:2:75","nodeType":"YulIdentifier","src":"6445:2:75"},{"kind":"number","nativeSrc":"6449:2:75","nodeType":"YulLiteral","src":"6449:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6441:3:75","nodeType":"YulIdentifier","src":"6441:3:75"},"nativeSrc":"6441:11:75","nodeType":"YulFunctionCall","src":"6441:11:75"}],"functionName":{"name":"mload","nativeSrc":"6435:5:75","nodeType":"YulIdentifier","src":"6435:5:75"},"nativeSrc":"6435:18:75","nodeType":"YulFunctionCall","src":"6435:18:75"},"variableNames":[{"name":"value_2","nativeSrc":"6424:7:75","nodeType":"YulIdentifier","src":"6424:7:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6473:5:75","nodeType":"YulIdentifier","src":"6473:5:75"},{"kind":"number","nativeSrc":"6480:2:75","nodeType":"YulLiteral","src":"6480:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6469:3:75","nodeType":"YulIdentifier","src":"6469:3:75"},"nativeSrc":"6469:14:75","nodeType":"YulFunctionCall","src":"6469:14:75"},{"name":"value_2","nativeSrc":"6485:7:75","nodeType":"YulIdentifier","src":"6485:7:75"}],"functionName":{"name":"mstore","nativeSrc":"6462:6:75","nodeType":"YulIdentifier","src":"6462:6:75"},"nativeSrc":"6462:31:75","nodeType":"YulFunctionCall","src":"6462:31:75"},"nativeSrc":"6462:31:75","nodeType":"YulExpressionStatement","src":"6462:31:75"},{"nativeSrc":"6502:34:75","nodeType":"YulVariableDeclaration","src":"6502:34:75","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6528:2:75","nodeType":"YulIdentifier","src":"6528:2:75"},{"kind":"number","nativeSrc":"6532:2:75","nodeType":"YulLiteral","src":"6532:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6524:3:75","nodeType":"YulIdentifier","src":"6524:3:75"},"nativeSrc":"6524:11:75","nodeType":"YulFunctionCall","src":"6524:11:75"}],"functionName":{"name":"mload","nativeSrc":"6518:5:75","nodeType":"YulIdentifier","src":"6518:5:75"},"nativeSrc":"6518:18:75","nodeType":"YulFunctionCall","src":"6518:18:75"},"variables":[{"name":"offset_1","nativeSrc":"6506:8:75","nodeType":"YulTypedName","src":"6506:8:75","type":""}]},{"body":{"nativeSrc":"6581:16:75","nodeType":"YulBlock","src":"6581:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6590:1:75","nodeType":"YulLiteral","src":"6590:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6593:1:75","nodeType":"YulLiteral","src":"6593:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6583:6:75","nodeType":"YulIdentifier","src":"6583:6:75"},"nativeSrc":"6583:12:75","nodeType":"YulFunctionCall","src":"6583:12:75"},"nativeSrc":"6583:12:75","nodeType":"YulExpressionStatement","src":"6583:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"6551:8:75","nodeType":"YulIdentifier","src":"6551:8:75"},{"kind":"number","nativeSrc":"6561:18:75","nodeType":"YulLiteral","src":"6561:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6548:2:75","nodeType":"YulIdentifier","src":"6548:2:75"},"nativeSrc":"6548:32:75","nodeType":"YulFunctionCall","src":"6548:32:75"},"nativeSrc":"6545:52:75","nodeType":"YulIf","src":"6545:52:75"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6617:5:75","nodeType":"YulIdentifier","src":"6617:5:75"},{"kind":"number","nativeSrc":"6624:2:75","nodeType":"YulLiteral","src":"6624:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6613:3:75","nodeType":"YulIdentifier","src":"6613:3:75"},"nativeSrc":"6613:14:75","nodeType":"YulFunctionCall","src":"6613:14:75"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"6661:2:75","nodeType":"YulIdentifier","src":"6661:2:75"},{"name":"offset_1","nativeSrc":"6665:8:75","nodeType":"YulIdentifier","src":"6665:8:75"}],"functionName":{"name":"add","nativeSrc":"6657:3:75","nodeType":"YulIdentifier","src":"6657:3:75"},"nativeSrc":"6657:17:75","nodeType":"YulFunctionCall","src":"6657:17:75"},{"name":"dataEnd","nativeSrc":"6676:7:75","nodeType":"YulIdentifier","src":"6676:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"6629:27:75","nodeType":"YulIdentifier","src":"6629:27:75"},"nativeSrc":"6629:55:75","nodeType":"YulFunctionCall","src":"6629:55:75"}],"functionName":{"name":"mstore","nativeSrc":"6606:6:75","nodeType":"YulIdentifier","src":"6606:6:75"},"nativeSrc":"6606:79:75","nodeType":"YulFunctionCall","src":"6606:79:75"},"nativeSrc":"6606:79:75","nodeType":"YulExpressionStatement","src":"6606:79:75"},{"nativeSrc":"6694:15:75","nodeType":"YulAssignment","src":"6694:15:75","value":{"name":"value","nativeSrc":"6704:5:75","nodeType":"YulIdentifier","src":"6704:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6694:6:75","nodeType":"YulIdentifier","src":"6694:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_SwapConfig_$624_memory_ptr_fromMemory","nativeSrc":"5866:849:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5940:9:75","nodeType":"YulTypedName","src":"5940:9:75","type":""},{"name":"dataEnd","nativeSrc":"5951:7:75","nodeType":"YulTypedName","src":"5951:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5963:6:75","nodeType":"YulTypedName","src":"5963:6:75","type":""}],"src":"5866:849:75"},{"body":{"nativeSrc":"6801:149:75","nodeType":"YulBlock","src":"6801:149:75","statements":[{"body":{"nativeSrc":"6847:16:75","nodeType":"YulBlock","src":"6847:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6856:1:75","nodeType":"YulLiteral","src":"6856:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6859:1:75","nodeType":"YulLiteral","src":"6859:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6849:6:75","nodeType":"YulIdentifier","src":"6849:6:75"},"nativeSrc":"6849:12:75","nodeType":"YulFunctionCall","src":"6849:12:75"},"nativeSrc":"6849:12:75","nodeType":"YulExpressionStatement","src":"6849:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6822:7:75","nodeType":"YulIdentifier","src":"6822:7:75"},{"name":"headStart","nativeSrc":"6831:9:75","nodeType":"YulIdentifier","src":"6831:9:75"}],"functionName":{"name":"sub","nativeSrc":"6818:3:75","nodeType":"YulIdentifier","src":"6818:3:75"},"nativeSrc":"6818:23:75","nodeType":"YulFunctionCall","src":"6818:23:75"},{"kind":"number","nativeSrc":"6843:2:75","nodeType":"YulLiteral","src":"6843:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6814:3:75","nodeType":"YulIdentifier","src":"6814:3:75"},"nativeSrc":"6814:32:75","nodeType":"YulFunctionCall","src":"6814:32:75"},"nativeSrc":"6811:52:75","nodeType":"YulIf","src":"6811:52:75"},{"nativeSrc":"6872:14:75","nodeType":"YulVariableDeclaration","src":"6872:14:75","value":{"kind":"number","nativeSrc":"6885:1:75","nodeType":"YulLiteral","src":"6885:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6876:5:75","nodeType":"YulTypedName","src":"6876:5:75","type":""}]},{"nativeSrc":"6895:25:75","nodeType":"YulAssignment","src":"6895:25:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6910:9:75","nodeType":"YulIdentifier","src":"6910:9:75"}],"functionName":{"name":"mload","nativeSrc":"6904:5:75","nodeType":"YulIdentifier","src":"6904:5:75"},"nativeSrc":"6904:16:75","nodeType":"YulFunctionCall","src":"6904:16:75"},"variableNames":[{"name":"value","nativeSrc":"6895:5:75","nodeType":"YulIdentifier","src":"6895:5:75"}]},{"nativeSrc":"6929:15:75","nodeType":"YulAssignment","src":"6929:15:75","value":{"name":"value","nativeSrc":"6939:5:75","nodeType":"YulIdentifier","src":"6939:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6929:6:75","nodeType":"YulIdentifier","src":"6929:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"6720:230:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6767:9:75","nodeType":"YulTypedName","src":"6767:9:75","type":""},{"name":"dataEnd","nativeSrc":"6778:7:75","nodeType":"YulTypedName","src":"6778:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6790:6:75","nodeType":"YulTypedName","src":"6790:6:75","type":""}],"src":"6720:230:75"},{"body":{"nativeSrc":"7230:337:75","nodeType":"YulBlock","src":"7230:337:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7247:9:75","nodeType":"YulIdentifier","src":"7247:9:75"},{"kind":"number","nativeSrc":"7258:3:75","nodeType":"YulLiteral","src":"7258:3:75","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"7240:6:75","nodeType":"YulIdentifier","src":"7240:6:75"},"nativeSrc":"7240:22:75","nodeType":"YulFunctionCall","src":"7240:22:75"},"nativeSrc":"7240:22:75","nodeType":"YulExpressionStatement","src":"7240:22:75"},{"nativeSrc":"7271:65:75","nodeType":"YulAssignment","src":"7271:65:75","value":{"arguments":[{"name":"value0","nativeSrc":"7308:6:75","nodeType":"YulIdentifier","src":"7308:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"7320:9:75","nodeType":"YulIdentifier","src":"7320:9:75"},{"kind":"number","nativeSrc":"7331:3:75","nodeType":"YulLiteral","src":"7331:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"7316:3:75","nodeType":"YulIdentifier","src":"7316:3:75"},"nativeSrc":"7316:19:75","nodeType":"YulFunctionCall","src":"7316:19:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"7279:28:75","nodeType":"YulIdentifier","src":"7279:28:75"},"nativeSrc":"7279:57:75","nodeType":"YulFunctionCall","src":"7279:57:75"},"variableNames":[{"name":"tail","nativeSrc":"7271:4:75","nodeType":"YulIdentifier","src":"7271:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7356:9:75","nodeType":"YulIdentifier","src":"7356:9:75"},{"kind":"number","nativeSrc":"7367:2:75","nodeType":"YulLiteral","src":"7367:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7352:3:75","nodeType":"YulIdentifier","src":"7352:3:75"},"nativeSrc":"7352:18:75","nodeType":"YulFunctionCall","src":"7352:18:75"},{"arguments":[{"name":"value1","nativeSrc":"7376:6:75","nodeType":"YulIdentifier","src":"7376:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7392:3:75","nodeType":"YulLiteral","src":"7392:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7397:1:75","nodeType":"YulLiteral","src":"7397:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7388:3:75","nodeType":"YulIdentifier","src":"7388:3:75"},"nativeSrc":"7388:11:75","nodeType":"YulFunctionCall","src":"7388:11:75"},{"kind":"number","nativeSrc":"7401:1:75","nodeType":"YulLiteral","src":"7401:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7384:3:75","nodeType":"YulIdentifier","src":"7384:3:75"},"nativeSrc":"7384:19:75","nodeType":"YulFunctionCall","src":"7384:19:75"}],"functionName":{"name":"and","nativeSrc":"7372:3:75","nodeType":"YulIdentifier","src":"7372:3:75"},"nativeSrc":"7372:32:75","nodeType":"YulFunctionCall","src":"7372:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7345:6:75","nodeType":"YulIdentifier","src":"7345:6:75"},"nativeSrc":"7345:60:75","nodeType":"YulFunctionCall","src":"7345:60:75"},"nativeSrc":"7345:60:75","nodeType":"YulExpressionStatement","src":"7345:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7425:9:75","nodeType":"YulIdentifier","src":"7425:9:75"},{"kind":"number","nativeSrc":"7436:2:75","nodeType":"YulLiteral","src":"7436:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7421:3:75","nodeType":"YulIdentifier","src":"7421:3:75"},"nativeSrc":"7421:18:75","nodeType":"YulFunctionCall","src":"7421:18:75"},{"arguments":[{"name":"value2","nativeSrc":"7445:6:75","nodeType":"YulIdentifier","src":"7445:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7461:3:75","nodeType":"YulLiteral","src":"7461:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7466:1:75","nodeType":"YulLiteral","src":"7466:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7457:3:75","nodeType":"YulIdentifier","src":"7457:3:75"},"nativeSrc":"7457:11:75","nodeType":"YulFunctionCall","src":"7457:11:75"},{"kind":"number","nativeSrc":"7470:1:75","nodeType":"YulLiteral","src":"7470:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7453:3:75","nodeType":"YulIdentifier","src":"7453:3:75"},"nativeSrc":"7453:19:75","nodeType":"YulFunctionCall","src":"7453:19:75"}],"functionName":{"name":"and","nativeSrc":"7441:3:75","nodeType":"YulIdentifier","src":"7441:3:75"},"nativeSrc":"7441:32:75","nodeType":"YulFunctionCall","src":"7441:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7414:6:75","nodeType":"YulIdentifier","src":"7414:6:75"},"nativeSrc":"7414:60:75","nodeType":"YulFunctionCall","src":"7414:60:75"},"nativeSrc":"7414:60:75","nodeType":"YulExpressionStatement","src":"7414:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7494:9:75","nodeType":"YulIdentifier","src":"7494:9:75"},{"kind":"number","nativeSrc":"7505:2:75","nodeType":"YulLiteral","src":"7505:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7490:3:75","nodeType":"YulIdentifier","src":"7490:3:75"},"nativeSrc":"7490:18:75","nodeType":"YulFunctionCall","src":"7490:18:75"},{"name":"value3","nativeSrc":"7510:6:75","nodeType":"YulIdentifier","src":"7510:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7483:6:75","nodeType":"YulIdentifier","src":"7483:6:75"},"nativeSrc":"7483:34:75","nodeType":"YulFunctionCall","src":"7483:34:75"},"nativeSrc":"7483:34:75","nodeType":"YulExpressionStatement","src":"7483:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7537:9:75","nodeType":"YulIdentifier","src":"7537:9:75"},{"kind":"number","nativeSrc":"7548:3:75","nodeType":"YulLiteral","src":"7548:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7533:3:75","nodeType":"YulIdentifier","src":"7533:3:75"},"nativeSrc":"7533:19:75","nodeType":"YulFunctionCall","src":"7533:19:75"},{"name":"value4","nativeSrc":"7554:6:75","nodeType":"YulIdentifier","src":"7554:6:75"}],"functionName":{"name":"mstore","nativeSrc":"7526:6:75","nodeType":"YulIdentifier","src":"7526:6:75"},"nativeSrc":"7526:35:75","nodeType":"YulFunctionCall","src":"7526:35:75"},"nativeSrc":"7526:35:75","nodeType":"YulExpressionStatement","src":"7526:35:75"}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__fromStack_library_reversed","nativeSrc":"6955:612:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7167:9:75","nodeType":"YulTypedName","src":"7167:9:75","type":""},{"name":"value4","nativeSrc":"7178:6:75","nodeType":"YulTypedName","src":"7178:6:75","type":""},{"name":"value3","nativeSrc":"7186:6:75","nodeType":"YulTypedName","src":"7186:6:75","type":""},{"name":"value2","nativeSrc":"7194:6:75","nodeType":"YulTypedName","src":"7194:6:75","type":""},{"name":"value1","nativeSrc":"7202:6:75","nodeType":"YulTypedName","src":"7202:6:75","type":""},{"name":"value0","nativeSrc":"7210:6:75","nodeType":"YulTypedName","src":"7210:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7221:4:75","nodeType":"YulTypedName","src":"7221:4:75","type":""}],"src":"6955:612:75"},{"body":{"nativeSrc":"7662:245:75","nodeType":"YulBlock","src":"7662:245:75","statements":[{"body":{"nativeSrc":"7708:16:75","nodeType":"YulBlock","src":"7708:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7717:1:75","nodeType":"YulLiteral","src":"7717:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7720:1:75","nodeType":"YulLiteral","src":"7720:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7710:6:75","nodeType":"YulIdentifier","src":"7710:6:75"},"nativeSrc":"7710:12:75","nodeType":"YulFunctionCall","src":"7710:12:75"},"nativeSrc":"7710:12:75","nodeType":"YulExpressionStatement","src":"7710:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7683:7:75","nodeType":"YulIdentifier","src":"7683:7:75"},{"name":"headStart","nativeSrc":"7692:9:75","nodeType":"YulIdentifier","src":"7692:9:75"}],"functionName":{"name":"sub","nativeSrc":"7679:3:75","nodeType":"YulIdentifier","src":"7679:3:75"},"nativeSrc":"7679:23:75","nodeType":"YulFunctionCall","src":"7679:23:75"},{"kind":"number","nativeSrc":"7704:2:75","nodeType":"YulLiteral","src":"7704:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"7675:3:75","nodeType":"YulIdentifier","src":"7675:3:75"},"nativeSrc":"7675:32:75","nodeType":"YulFunctionCall","src":"7675:32:75"},"nativeSrc":"7672:52:75","nodeType":"YulIf","src":"7672:52:75"},{"nativeSrc":"7733:30:75","nodeType":"YulVariableDeclaration","src":"7733:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7753:9:75","nodeType":"YulIdentifier","src":"7753:9:75"}],"functionName":{"name":"mload","nativeSrc":"7747:5:75","nodeType":"YulIdentifier","src":"7747:5:75"},"nativeSrc":"7747:16:75","nodeType":"YulFunctionCall","src":"7747:16:75"},"variables":[{"name":"offset","nativeSrc":"7737:6:75","nodeType":"YulTypedName","src":"7737:6:75","type":""}]},{"body":{"nativeSrc":"7806:16:75","nodeType":"YulBlock","src":"7806:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7815:1:75","nodeType":"YulLiteral","src":"7815:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7818:1:75","nodeType":"YulLiteral","src":"7818:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7808:6:75","nodeType":"YulIdentifier","src":"7808:6:75"},"nativeSrc":"7808:12:75","nodeType":"YulFunctionCall","src":"7808:12:75"},"nativeSrc":"7808:12:75","nodeType":"YulExpressionStatement","src":"7808:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7778:6:75","nodeType":"YulIdentifier","src":"7778:6:75"},{"kind":"number","nativeSrc":"7786:18:75","nodeType":"YulLiteral","src":"7786:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7775:2:75","nodeType":"YulIdentifier","src":"7775:2:75"},"nativeSrc":"7775:30:75","nodeType":"YulFunctionCall","src":"7775:30:75"},"nativeSrc":"7772:50:75","nodeType":"YulIf","src":"7772:50:75"},{"nativeSrc":"7831:70:75","nodeType":"YulAssignment","src":"7831:70:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7873:9:75","nodeType":"YulIdentifier","src":"7873:9:75"},{"name":"offset","nativeSrc":"7884:6:75","nodeType":"YulIdentifier","src":"7884:6:75"}],"functionName":{"name":"add","nativeSrc":"7869:3:75","nodeType":"YulIdentifier","src":"7869:3:75"},"nativeSrc":"7869:22:75","nodeType":"YulFunctionCall","src":"7869:22:75"},{"name":"dataEnd","nativeSrc":"7893:7:75","nodeType":"YulIdentifier","src":"7893:7:75"}],"functionName":{"name":"abi_decode_bytes_fromMemory","nativeSrc":"7841:27:75","nodeType":"YulIdentifier","src":"7841:27:75"},"nativeSrc":"7841:60:75","nodeType":"YulFunctionCall","src":"7841:60:75"},"variableNames":[{"name":"value0","nativeSrc":"7831:6:75","nodeType":"YulIdentifier","src":"7831:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"7572:335:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7628:9:75","nodeType":"YulTypedName","src":"7628:9:75","type":""},{"name":"dataEnd","nativeSrc":"7639:7:75","nodeType":"YulTypedName","src":"7639:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7651:6:75","nodeType":"YulTypedName","src":"7651:6:75","type":""}],"src":"7572:335:75"},{"body":{"nativeSrc":"8075:110:75","nodeType":"YulBlock","src":"8075:110:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8092:9:75","nodeType":"YulIdentifier","src":"8092:9:75"},{"kind":"number","nativeSrc":"8103:2:75","nodeType":"YulLiteral","src":"8103:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8085:6:75","nodeType":"YulIdentifier","src":"8085:6:75"},"nativeSrc":"8085:21:75","nodeType":"YulFunctionCall","src":"8085:21:75"},"nativeSrc":"8085:21:75","nodeType":"YulExpressionStatement","src":"8085:21:75"},{"nativeSrc":"8115:64:75","nodeType":"YulAssignment","src":"8115:64:75","value":{"arguments":[{"name":"value0","nativeSrc":"8152:6:75","nodeType":"YulIdentifier","src":"8152:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"8164:9:75","nodeType":"YulIdentifier","src":"8164:9:75"},{"kind":"number","nativeSrc":"8175:2:75","nodeType":"YulLiteral","src":"8175:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8160:3:75","nodeType":"YulIdentifier","src":"8160:3:75"},"nativeSrc":"8160:18:75","nodeType":"YulFunctionCall","src":"8160:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8123:28:75","nodeType":"YulIdentifier","src":"8123:28:75"},"nativeSrc":"8123:56:75","nodeType":"YulFunctionCall","src":"8123:56:75"},"variableNames":[{"name":"tail","nativeSrc":"8115:4:75","nodeType":"YulIdentifier","src":"8115:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr__fromStack_library_reversed","nativeSrc":"7912:273:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8044:9:75","nodeType":"YulTypedName","src":"8044:9:75","type":""},{"name":"value0","nativeSrc":"8055:6:75","nodeType":"YulTypedName","src":"8055:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8066:4:75","nodeType":"YulTypedName","src":"8066:4:75","type":""}],"src":"7912:273:75"},{"body":{"nativeSrc":"8427:236:75","nodeType":"YulBlock","src":"8427:236:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8444:9:75","nodeType":"YulIdentifier","src":"8444:9:75"},{"kind":"number","nativeSrc":"8455:2:75","nodeType":"YulLiteral","src":"8455:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8437:6:75","nodeType":"YulIdentifier","src":"8437:6:75"},"nativeSrc":"8437:21:75","nodeType":"YulFunctionCall","src":"8437:21:75"},"nativeSrc":"8437:21:75","nodeType":"YulExpressionStatement","src":"8437:21:75"},{"nativeSrc":"8467:70:75","nodeType":"YulVariableDeclaration","src":"8467:70:75","value":{"arguments":[{"name":"value0","nativeSrc":"8510:6:75","nodeType":"YulIdentifier","src":"8510:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"8522:9:75","nodeType":"YulIdentifier","src":"8522:9:75"},{"kind":"number","nativeSrc":"8533:2:75","nodeType":"YulLiteral","src":"8533:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8518:3:75","nodeType":"YulIdentifier","src":"8518:3:75"},"nativeSrc":"8518:18:75","nodeType":"YulFunctionCall","src":"8518:18:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8481:28:75","nodeType":"YulIdentifier","src":"8481:28:75"},"nativeSrc":"8481:56:75","nodeType":"YulFunctionCall","src":"8481:56:75"},"variables":[{"name":"tail_1","nativeSrc":"8471:6:75","nodeType":"YulTypedName","src":"8471:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8557:9:75","nodeType":"YulIdentifier","src":"8557:9:75"},{"kind":"number","nativeSrc":"8568:2:75","nodeType":"YulLiteral","src":"8568:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8553:3:75","nodeType":"YulIdentifier","src":"8553:3:75"},"nativeSrc":"8553:18:75","nodeType":"YulFunctionCall","src":"8553:18:75"},{"arguments":[{"name":"tail_1","nativeSrc":"8577:6:75","nodeType":"YulIdentifier","src":"8577:6:75"},{"name":"headStart","nativeSrc":"8585:9:75","nodeType":"YulIdentifier","src":"8585:9:75"}],"functionName":{"name":"sub","nativeSrc":"8573:3:75","nodeType":"YulIdentifier","src":"8573:3:75"},"nativeSrc":"8573:22:75","nodeType":"YulFunctionCall","src":"8573:22:75"}],"functionName":{"name":"mstore","nativeSrc":"8546:6:75","nodeType":"YulIdentifier","src":"8546:6:75"},"nativeSrc":"8546:50:75","nodeType":"YulFunctionCall","src":"8546:50:75"},"nativeSrc":"8546:50:75","nodeType":"YulExpressionStatement","src":"8546:50:75"},{"nativeSrc":"8605:52:75","nodeType":"YulAssignment","src":"8605:52:75","value":{"arguments":[{"name":"value1","nativeSrc":"8642:6:75","nodeType":"YulIdentifier","src":"8642:6:75"},{"name":"tail_1","nativeSrc":"8650:6:75","nodeType":"YulIdentifier","src":"8650:6:75"}],"functionName":{"name":"abi_encode_struct_SwapConfig","nativeSrc":"8613:28:75","nodeType":"YulIdentifier","src":"8613:28:75"},"nativeSrc":"8613:44:75","nodeType":"YulFunctionCall","src":"8613:44:75"},"variableNames":[{"name":"tail","nativeSrc":"8605:4:75","nodeType":"YulIdentifier","src":"8605:4:75"}]}]},"name":"abi_encode_tuple_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__fromStack_reversed","nativeSrc":"8190:473:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8388:9:75","nodeType":"YulTypedName","src":"8388:9:75","type":""},{"name":"value1","nativeSrc":"8399:6:75","nodeType":"YulTypedName","src":"8399:6:75","type":""},{"name":"value0","nativeSrc":"8407:6:75","nodeType":"YulTypedName","src":"8407:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8418:4:75","nodeType":"YulTypedName","src":"8418:4:75","type":""}],"src":"8190:473:75"},{"body":{"nativeSrc":"8723:65:75","nodeType":"YulBlock","src":"8723:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8740:1:75","nodeType":"YulLiteral","src":"8740:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"8743:3:75","nodeType":"YulIdentifier","src":"8743:3:75"}],"functionName":{"name":"mstore","nativeSrc":"8733:6:75","nodeType":"YulIdentifier","src":"8733:6:75"},"nativeSrc":"8733:14:75","nodeType":"YulFunctionCall","src":"8733:14:75"},"nativeSrc":"8733:14:75","nodeType":"YulExpressionStatement","src":"8733:14:75"},{"nativeSrc":"8756:26:75","nodeType":"YulAssignment","src":"8756:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"8774:1:75","nodeType":"YulLiteral","src":"8774:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8777:4:75","nodeType":"YulLiteral","src":"8777:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8764:9:75","nodeType":"YulIdentifier","src":"8764:9:75"},"nativeSrc":"8764:18:75","nodeType":"YulFunctionCall","src":"8764:18:75"},"variableNames":[{"name":"data","nativeSrc":"8756:4:75","nodeType":"YulIdentifier","src":"8756:4:75"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"8668:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8706:3:75","nodeType":"YulTypedName","src":"8706:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8714:4:75","nodeType":"YulTypedName","src":"8714:4:75","type":""}],"src":"8668:120:75"},{"body":{"nativeSrc":"8873:437:75","nodeType":"YulBlock","src":"8873:437:75","statements":[{"body":{"nativeSrc":"8906:398:75","nodeType":"YulBlock","src":"8906:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8927:1:75","nodeType":"YulLiteral","src":"8927:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"8930:5:75","nodeType":"YulIdentifier","src":"8930:5:75"}],"functionName":{"name":"mstore","nativeSrc":"8920:6:75","nodeType":"YulIdentifier","src":"8920:6:75"},"nativeSrc":"8920:16:75","nodeType":"YulFunctionCall","src":"8920:16:75"},"nativeSrc":"8920:16:75","nodeType":"YulExpressionStatement","src":"8920:16:75"},{"nativeSrc":"8949:30:75","nodeType":"YulVariableDeclaration","src":"8949:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"8971:1:75","nodeType":"YulLiteral","src":"8971:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8974:4:75","nodeType":"YulLiteral","src":"8974:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8961:9:75","nodeType":"YulIdentifier","src":"8961:9:75"},"nativeSrc":"8961:18:75","nodeType":"YulFunctionCall","src":"8961:18:75"},"variables":[{"name":"data","nativeSrc":"8953:4:75","nodeType":"YulTypedName","src":"8953:4:75","type":""}]},{"nativeSrc":"8992:57:75","nodeType":"YulVariableDeclaration","src":"8992:57:75","value":{"arguments":[{"name":"data","nativeSrc":"9015:4:75","nodeType":"YulIdentifier","src":"9015:4:75"},{"arguments":[{"kind":"number","nativeSrc":"9025:1:75","nodeType":"YulLiteral","src":"9025:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9032:10:75","nodeType":"YulIdentifier","src":"9032:10:75"},{"kind":"number","nativeSrc":"9044:2:75","nodeType":"YulLiteral","src":"9044:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9028:3:75","nodeType":"YulIdentifier","src":"9028:3:75"},"nativeSrc":"9028:19:75","nodeType":"YulFunctionCall","src":"9028:19:75"}],"functionName":{"name":"shr","nativeSrc":"9021:3:75","nodeType":"YulIdentifier","src":"9021:3:75"},"nativeSrc":"9021:27:75","nodeType":"YulFunctionCall","src":"9021:27:75"}],"functionName":{"name":"add","nativeSrc":"9011:3:75","nodeType":"YulIdentifier","src":"9011:3:75"},"nativeSrc":"9011:38:75","nodeType":"YulFunctionCall","src":"9011:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"8996:11:75","nodeType":"YulTypedName","src":"8996:11:75","type":""}]},{"body":{"nativeSrc":"9086:23:75","nodeType":"YulBlock","src":"9086:23:75","statements":[{"nativeSrc":"9088:19:75","nodeType":"YulAssignment","src":"9088:19:75","value":{"name":"data","nativeSrc":"9103:4:75","nodeType":"YulIdentifier","src":"9103:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"9088:11:75","nodeType":"YulIdentifier","src":"9088:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9068:10:75","nodeType":"YulIdentifier","src":"9068:10:75"},{"kind":"number","nativeSrc":"9080:4:75","nodeType":"YulLiteral","src":"9080:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9065:2:75","nodeType":"YulIdentifier","src":"9065:2:75"},"nativeSrc":"9065:20:75","nodeType":"YulFunctionCall","src":"9065:20:75"},"nativeSrc":"9062:47:75","nodeType":"YulIf","src":"9062:47:75"},{"nativeSrc":"9122:41:75","nodeType":"YulVariableDeclaration","src":"9122:41:75","value":{"arguments":[{"name":"data","nativeSrc":"9136:4:75","nodeType":"YulIdentifier","src":"9136:4:75"},{"arguments":[{"kind":"number","nativeSrc":"9146:1:75","nodeType":"YulLiteral","src":"9146:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9153:3:75","nodeType":"YulIdentifier","src":"9153:3:75"},{"kind":"number","nativeSrc":"9158:2:75","nodeType":"YulLiteral","src":"9158:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9149:3:75","nodeType":"YulIdentifier","src":"9149:3:75"},"nativeSrc":"9149:12:75","nodeType":"YulFunctionCall","src":"9149:12:75"}],"functionName":{"name":"shr","nativeSrc":"9142:3:75","nodeType":"YulIdentifier","src":"9142:3:75"},"nativeSrc":"9142:20:75","nodeType":"YulFunctionCall","src":"9142:20:75"}],"functionName":{"name":"add","nativeSrc":"9132:3:75","nodeType":"YulIdentifier","src":"9132:3:75"},"nativeSrc":"9132:31:75","nodeType":"YulFunctionCall","src":"9132:31:75"},"variables":[{"name":"_1","nativeSrc":"9126:2:75","nodeType":"YulTypedName","src":"9126:2:75","type":""}]},{"nativeSrc":"9176:24:75","nodeType":"YulVariableDeclaration","src":"9176:24:75","value":{"name":"deleteStart","nativeSrc":"9189:11:75","nodeType":"YulIdentifier","src":"9189:11:75"},"variables":[{"name":"start","nativeSrc":"9180:5:75","nodeType":"YulTypedName","src":"9180:5:75","type":""}]},{"body":{"nativeSrc":"9274:20:75","nodeType":"YulBlock","src":"9274:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9283:5:75","nodeType":"YulIdentifier","src":"9283:5:75"},{"kind":"number","nativeSrc":"9290:1:75","nodeType":"YulLiteral","src":"9290:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9276:6:75","nodeType":"YulIdentifier","src":"9276:6:75"},"nativeSrc":"9276:16:75","nodeType":"YulFunctionCall","src":"9276:16:75"},"nativeSrc":"9276:16:75","nodeType":"YulExpressionStatement","src":"9276:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9224:5:75","nodeType":"YulIdentifier","src":"9224:5:75"},{"name":"_1","nativeSrc":"9231:2:75","nodeType":"YulIdentifier","src":"9231:2:75"}],"functionName":{"name":"lt","nativeSrc":"9221:2:75","nodeType":"YulIdentifier","src":"9221:2:75"},"nativeSrc":"9221:13:75","nodeType":"YulFunctionCall","src":"9221:13:75"},"nativeSrc":"9213:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"9235:26:75","nodeType":"YulBlock","src":"9235:26:75","statements":[{"nativeSrc":"9237:22:75","nodeType":"YulAssignment","src":"9237:22:75","value":{"arguments":[{"name":"start","nativeSrc":"9250:5:75","nodeType":"YulIdentifier","src":"9250:5:75"},{"kind":"number","nativeSrc":"9257:1:75","nodeType":"YulLiteral","src":"9257:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9246:3:75","nodeType":"YulIdentifier","src":"9246:3:75"},"nativeSrc":"9246:13:75","nodeType":"YulFunctionCall","src":"9246:13:75"},"variableNames":[{"name":"start","nativeSrc":"9237:5:75","nodeType":"YulIdentifier","src":"9237:5:75"}]}]},"pre":{"nativeSrc":"9217:3:75","nodeType":"YulBlock","src":"9217:3:75","statements":[]},"src":"9213:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"8889:3:75","nodeType":"YulIdentifier","src":"8889:3:75"},{"kind":"number","nativeSrc":"8894:2:75","nodeType":"YulLiteral","src":"8894:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"8886:2:75","nodeType":"YulIdentifier","src":"8886:2:75"},"nativeSrc":"8886:11:75","nodeType":"YulFunctionCall","src":"8886:11:75"},"nativeSrc":"8883:421:75","nodeType":"YulIf","src":"8883:421:75"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"8793:517:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"8845:5:75","nodeType":"YulTypedName","src":"8845:5:75","type":""},{"name":"len","nativeSrc":"8852:3:75","nodeType":"YulTypedName","src":"8852:3:75","type":""},{"name":"startIndex","nativeSrc":"8857:10:75","nodeType":"YulTypedName","src":"8857:10:75","type":""}],"src":"8793:517:75"},{"body":{"nativeSrc":"9400:81:75","nodeType":"YulBlock","src":"9400:81:75","statements":[{"nativeSrc":"9410:65:75","nodeType":"YulAssignment","src":"9410:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9425:4:75","nodeType":"YulIdentifier","src":"9425:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9443:1:75","nodeType":"YulLiteral","src":"9443:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"9446:3:75","nodeType":"YulIdentifier","src":"9446:3:75"}],"functionName":{"name":"shl","nativeSrc":"9439:3:75","nodeType":"YulIdentifier","src":"9439:3:75"},"nativeSrc":"9439:11:75","nodeType":"YulFunctionCall","src":"9439:11:75"},{"arguments":[{"kind":"number","nativeSrc":"9456:1:75","nodeType":"YulLiteral","src":"9456:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9452:3:75","nodeType":"YulIdentifier","src":"9452:3:75"},"nativeSrc":"9452:6:75","nodeType":"YulFunctionCall","src":"9452:6:75"}],"functionName":{"name":"shr","nativeSrc":"9435:3:75","nodeType":"YulIdentifier","src":"9435:3:75"},"nativeSrc":"9435:24:75","nodeType":"YulFunctionCall","src":"9435:24:75"}],"functionName":{"name":"not","nativeSrc":"9431:3:75","nodeType":"YulIdentifier","src":"9431:3:75"},"nativeSrc":"9431:29:75","nodeType":"YulFunctionCall","src":"9431:29:75"}],"functionName":{"name":"and","nativeSrc":"9421:3:75","nodeType":"YulIdentifier","src":"9421:3:75"},"nativeSrc":"9421:40:75","nodeType":"YulFunctionCall","src":"9421:40:75"},{"arguments":[{"kind":"number","nativeSrc":"9467:1:75","nodeType":"YulLiteral","src":"9467:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"9470:3:75","nodeType":"YulIdentifier","src":"9470:3:75"}],"functionName":{"name":"shl","nativeSrc":"9463:3:75","nodeType":"YulIdentifier","src":"9463:3:75"},"nativeSrc":"9463:11:75","nodeType":"YulFunctionCall","src":"9463:11:75"}],"functionName":{"name":"or","nativeSrc":"9418:2:75","nodeType":"YulIdentifier","src":"9418:2:75"},"nativeSrc":"9418:57:75","nodeType":"YulFunctionCall","src":"9418:57:75"},"variableNames":[{"name":"used","nativeSrc":"9410:4:75","nodeType":"YulIdentifier","src":"9410:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9315:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9377:4:75","nodeType":"YulTypedName","src":"9377:4:75","type":""},{"name":"len","nativeSrc":"9383:3:75","nodeType":"YulTypedName","src":"9383:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9391:4:75","nodeType":"YulTypedName","src":"9391:4:75","type":""}],"src":"9315:166:75"},{"body":{"nativeSrc":"9580:1201:75","nodeType":"YulBlock","src":"9580:1201:75","statements":[{"nativeSrc":"9590:24:75","nodeType":"YulVariableDeclaration","src":"9590:24:75","value":{"arguments":[{"name":"src","nativeSrc":"9610:3:75","nodeType":"YulIdentifier","src":"9610:3:75"}],"functionName":{"name":"mload","nativeSrc":"9604:5:75","nodeType":"YulIdentifier","src":"9604:5:75"},"nativeSrc":"9604:10:75","nodeType":"YulFunctionCall","src":"9604:10:75"},"variables":[{"name":"newLen","nativeSrc":"9594:6:75","nodeType":"YulTypedName","src":"9594:6:75","type":""}]},{"body":{"nativeSrc":"9657:22:75","nodeType":"YulBlock","src":"9657:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9659:16:75","nodeType":"YulIdentifier","src":"9659:16:75"},"nativeSrc":"9659:18:75","nodeType":"YulFunctionCall","src":"9659:18:75"},"nativeSrc":"9659:18:75","nodeType":"YulExpressionStatement","src":"9659:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9629:6:75","nodeType":"YulIdentifier","src":"9629:6:75"},{"kind":"number","nativeSrc":"9637:18:75","nodeType":"YulLiteral","src":"9637:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9626:2:75","nodeType":"YulIdentifier","src":"9626:2:75"},"nativeSrc":"9626:30:75","nodeType":"YulFunctionCall","src":"9626:30:75"},"nativeSrc":"9623:56:75","nodeType":"YulIf","src":"9623:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9731:4:75","nodeType":"YulIdentifier","src":"9731:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"9769:4:75","nodeType":"YulIdentifier","src":"9769:4:75"}],"functionName":{"name":"sload","nativeSrc":"9763:5:75","nodeType":"YulIdentifier","src":"9763:5:75"},"nativeSrc":"9763:11:75","nodeType":"YulFunctionCall","src":"9763:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9737:25:75","nodeType":"YulIdentifier","src":"9737:25:75"},"nativeSrc":"9737:38:75","nodeType":"YulFunctionCall","src":"9737:38:75"},{"name":"newLen","nativeSrc":"9777:6:75","nodeType":"YulIdentifier","src":"9777:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"9688:42:75","nodeType":"YulIdentifier","src":"9688:42:75"},"nativeSrc":"9688:96:75","nodeType":"YulFunctionCall","src":"9688:96:75"},"nativeSrc":"9688:96:75","nodeType":"YulExpressionStatement","src":"9688:96:75"},{"nativeSrc":"9793:18:75","nodeType":"YulVariableDeclaration","src":"9793:18:75","value":{"kind":"number","nativeSrc":"9810:1:75","nodeType":"YulLiteral","src":"9810:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"9797:9:75","nodeType":"YulTypedName","src":"9797:9:75","type":""}]},{"nativeSrc":"9820:17:75","nodeType":"YulAssignment","src":"9820:17:75","value":{"kind":"number","nativeSrc":"9833:4:75","nodeType":"YulLiteral","src":"9833:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"9820:9:75","nodeType":"YulIdentifier","src":"9820:9:75"}]},{"cases":[{"body":{"nativeSrc":"9883:641:75","nodeType":"YulBlock","src":"9883:641:75","statements":[{"nativeSrc":"9897:35:75","nodeType":"YulVariableDeclaration","src":"9897:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"9916:6:75","nodeType":"YulIdentifier","src":"9916:6:75"},{"arguments":[{"kind":"number","nativeSrc":"9928:2:75","nodeType":"YulLiteral","src":"9928:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"9924:3:75","nodeType":"YulIdentifier","src":"9924:3:75"},"nativeSrc":"9924:7:75","nodeType":"YulFunctionCall","src":"9924:7:75"}],"functionName":{"name":"and","nativeSrc":"9912:3:75","nodeType":"YulIdentifier","src":"9912:3:75"},"nativeSrc":"9912:20:75","nodeType":"YulFunctionCall","src":"9912:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"9901:7:75","nodeType":"YulTypedName","src":"9901:7:75","type":""}]},{"nativeSrc":"9945:48:75","nodeType":"YulVariableDeclaration","src":"9945:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"9988:4:75","nodeType":"YulIdentifier","src":"9988:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"9959:28:75","nodeType":"YulIdentifier","src":"9959:28:75"},"nativeSrc":"9959:34:75","nodeType":"YulFunctionCall","src":"9959:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"9949:6:75","nodeType":"YulTypedName","src":"9949:6:75","type":""}]},{"nativeSrc":"10006:10:75","nodeType":"YulVariableDeclaration","src":"10006:10:75","value":{"kind":"number","nativeSrc":"10015:1:75","nodeType":"YulLiteral","src":"10015:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10010:1:75","nodeType":"YulTypedName","src":"10010:1:75","type":""}]},{"body":{"nativeSrc":"10086:165:75","nodeType":"YulBlock","src":"10086:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10111:6:75","nodeType":"YulIdentifier","src":"10111:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10129:3:75","nodeType":"YulIdentifier","src":"10129:3:75"},{"name":"srcOffset","nativeSrc":"10134:9:75","nodeType":"YulIdentifier","src":"10134:9:75"}],"functionName":{"name":"add","nativeSrc":"10125:3:75","nodeType":"YulIdentifier","src":"10125:3:75"},"nativeSrc":"10125:19:75","nodeType":"YulFunctionCall","src":"10125:19:75"}],"functionName":{"name":"mload","nativeSrc":"10119:5:75","nodeType":"YulIdentifier","src":"10119:5:75"},"nativeSrc":"10119:26:75","nodeType":"YulFunctionCall","src":"10119:26:75"}],"functionName":{"name":"sstore","nativeSrc":"10104:6:75","nodeType":"YulIdentifier","src":"10104:6:75"},"nativeSrc":"10104:42:75","nodeType":"YulFunctionCall","src":"10104:42:75"},"nativeSrc":"10104:42:75","nodeType":"YulExpressionStatement","src":"10104:42:75"},{"nativeSrc":"10163:24:75","nodeType":"YulAssignment","src":"10163:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10177:6:75","nodeType":"YulIdentifier","src":"10177:6:75"},{"kind":"number","nativeSrc":"10185:1:75","nodeType":"YulLiteral","src":"10185:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10173:3:75","nodeType":"YulIdentifier","src":"10173:3:75"},"nativeSrc":"10173:14:75","nodeType":"YulFunctionCall","src":"10173:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"10163:6:75","nodeType":"YulIdentifier","src":"10163:6:75"}]},{"nativeSrc":"10204:33:75","nodeType":"YulAssignment","src":"10204:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10221:9:75","nodeType":"YulIdentifier","src":"10221:9:75"},{"kind":"number","nativeSrc":"10232:4:75","nodeType":"YulLiteral","src":"10232:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10217:3:75","nodeType":"YulIdentifier","src":"10217:3:75"},"nativeSrc":"10217:20:75","nodeType":"YulFunctionCall","src":"10217:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"10204:9:75","nodeType":"YulIdentifier","src":"10204:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10040:1:75","nodeType":"YulIdentifier","src":"10040:1:75"},{"name":"loopEnd","nativeSrc":"10043:7:75","nodeType":"YulIdentifier","src":"10043:7:75"}],"functionName":{"name":"lt","nativeSrc":"10037:2:75","nodeType":"YulIdentifier","src":"10037:2:75"},"nativeSrc":"10037:14:75","nodeType":"YulFunctionCall","src":"10037:14:75"},"nativeSrc":"10029:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"10052:21:75","nodeType":"YulBlock","src":"10052:21:75","statements":[{"nativeSrc":"10054:17:75","nodeType":"YulAssignment","src":"10054:17:75","value":{"arguments":[{"name":"i","nativeSrc":"10063:1:75","nodeType":"YulIdentifier","src":"10063:1:75"},{"kind":"number","nativeSrc":"10066:4:75","nodeType":"YulLiteral","src":"10066:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10059:3:75","nodeType":"YulIdentifier","src":"10059:3:75"},"nativeSrc":"10059:12:75","nodeType":"YulFunctionCall","src":"10059:12:75"},"variableNames":[{"name":"i","nativeSrc":"10054:1:75","nodeType":"YulIdentifier","src":"10054:1:75"}]}]},"pre":{"nativeSrc":"10033:3:75","nodeType":"YulBlock","src":"10033:3:75","statements":[]},"src":"10029:222:75"},{"body":{"nativeSrc":"10299:166:75","nodeType":"YulBlock","src":"10299:166:75","statements":[{"nativeSrc":"10317:43:75","nodeType":"YulVariableDeclaration","src":"10317:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10344:3:75","nodeType":"YulIdentifier","src":"10344:3:75"},{"name":"srcOffset","nativeSrc":"10349:9:75","nodeType":"YulIdentifier","src":"10349:9:75"}],"functionName":{"name":"add","nativeSrc":"10340:3:75","nodeType":"YulIdentifier","src":"10340:3:75"},"nativeSrc":"10340:19:75","nodeType":"YulFunctionCall","src":"10340:19:75"}],"functionName":{"name":"mload","nativeSrc":"10334:5:75","nodeType":"YulIdentifier","src":"10334:5:75"},"nativeSrc":"10334:26:75","nodeType":"YulFunctionCall","src":"10334:26:75"},"variables":[{"name":"lastValue","nativeSrc":"10321:9:75","nodeType":"YulTypedName","src":"10321:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10384:6:75","nodeType":"YulIdentifier","src":"10384:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"10396:9:75","nodeType":"YulIdentifier","src":"10396:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10423:1:75","nodeType":"YulLiteral","src":"10423:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"10426:6:75","nodeType":"YulIdentifier","src":"10426:6:75"}],"functionName":{"name":"shl","nativeSrc":"10419:3:75","nodeType":"YulIdentifier","src":"10419:3:75"},"nativeSrc":"10419:14:75","nodeType":"YulFunctionCall","src":"10419:14:75"},{"kind":"number","nativeSrc":"10435:3:75","nodeType":"YulLiteral","src":"10435:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10415:3:75","nodeType":"YulIdentifier","src":"10415:3:75"},"nativeSrc":"10415:24:75","nodeType":"YulFunctionCall","src":"10415:24:75"},{"arguments":[{"kind":"number","nativeSrc":"10445:1:75","nodeType":"YulLiteral","src":"10445:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10441:3:75","nodeType":"YulIdentifier","src":"10441:3:75"},"nativeSrc":"10441:6:75","nodeType":"YulFunctionCall","src":"10441:6:75"}],"functionName":{"name":"shr","nativeSrc":"10411:3:75","nodeType":"YulIdentifier","src":"10411:3:75"},"nativeSrc":"10411:37:75","nodeType":"YulFunctionCall","src":"10411:37:75"}],"functionName":{"name":"not","nativeSrc":"10407:3:75","nodeType":"YulIdentifier","src":"10407:3:75"},"nativeSrc":"10407:42:75","nodeType":"YulFunctionCall","src":"10407:42:75"}],"functionName":{"name":"and","nativeSrc":"10392:3:75","nodeType":"YulIdentifier","src":"10392:3:75"},"nativeSrc":"10392:58:75","nodeType":"YulFunctionCall","src":"10392:58:75"}],"functionName":{"name":"sstore","nativeSrc":"10377:6:75","nodeType":"YulIdentifier","src":"10377:6:75"},"nativeSrc":"10377:74:75","nodeType":"YulFunctionCall","src":"10377:74:75"},"nativeSrc":"10377:74:75","nodeType":"YulExpressionStatement","src":"10377:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10270:7:75","nodeType":"YulIdentifier","src":"10270:7:75"},{"name":"newLen","nativeSrc":"10279:6:75","nodeType":"YulIdentifier","src":"10279:6:75"}],"functionName":{"name":"lt","nativeSrc":"10267:2:75","nodeType":"YulIdentifier","src":"10267:2:75"},"nativeSrc":"10267:19:75","nodeType":"YulFunctionCall","src":"10267:19:75"},"nativeSrc":"10264:201:75","nodeType":"YulIf","src":"10264:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10485:4:75","nodeType":"YulIdentifier","src":"10485:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10499:1:75","nodeType":"YulLiteral","src":"10499:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"10502:6:75","nodeType":"YulIdentifier","src":"10502:6:75"}],"functionName":{"name":"shl","nativeSrc":"10495:3:75","nodeType":"YulIdentifier","src":"10495:3:75"},"nativeSrc":"10495:14:75","nodeType":"YulFunctionCall","src":"10495:14:75"},{"kind":"number","nativeSrc":"10511:1:75","nodeType":"YulLiteral","src":"10511:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10491:3:75","nodeType":"YulIdentifier","src":"10491:3:75"},"nativeSrc":"10491:22:75","nodeType":"YulFunctionCall","src":"10491:22:75"}],"functionName":{"name":"sstore","nativeSrc":"10478:6:75","nodeType":"YulIdentifier","src":"10478:6:75"},"nativeSrc":"10478:36:75","nodeType":"YulFunctionCall","src":"10478:36:75"},"nativeSrc":"10478:36:75","nodeType":"YulExpressionStatement","src":"10478:36:75"}]},"nativeSrc":"9876:648:75","nodeType":"YulCase","src":"9876:648:75","value":{"kind":"number","nativeSrc":"9881:1:75","nodeType":"YulLiteral","src":"9881:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"10541:234:75","nodeType":"YulBlock","src":"10541:234:75","statements":[{"nativeSrc":"10555:14:75","nodeType":"YulVariableDeclaration","src":"10555:14:75","value":{"kind":"number","nativeSrc":"10568:1:75","nodeType":"YulLiteral","src":"10568:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10559:5:75","nodeType":"YulTypedName","src":"10559:5:75","type":""}]},{"body":{"nativeSrc":"10604:67:75","nodeType":"YulBlock","src":"10604:67:75","statements":[{"nativeSrc":"10622:35:75","nodeType":"YulAssignment","src":"10622:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10641:3:75","nodeType":"YulIdentifier","src":"10641:3:75"},{"name":"srcOffset","nativeSrc":"10646:9:75","nodeType":"YulIdentifier","src":"10646:9:75"}],"functionName":{"name":"add","nativeSrc":"10637:3:75","nodeType":"YulIdentifier","src":"10637:3:75"},"nativeSrc":"10637:19:75","nodeType":"YulFunctionCall","src":"10637:19:75"}],"functionName":{"name":"mload","nativeSrc":"10631:5:75","nodeType":"YulIdentifier","src":"10631:5:75"},"nativeSrc":"10631:26:75","nodeType":"YulFunctionCall","src":"10631:26:75"},"variableNames":[{"name":"value","nativeSrc":"10622:5:75","nodeType":"YulIdentifier","src":"10622:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"10585:6:75","nodeType":"YulIdentifier","src":"10585:6:75"},"nativeSrc":"10582:89:75","nodeType":"YulIf","src":"10582:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10691:4:75","nodeType":"YulIdentifier","src":"10691:4:75"},{"arguments":[{"name":"value","nativeSrc":"10750:5:75","nodeType":"YulIdentifier","src":"10750:5:75"},{"name":"newLen","nativeSrc":"10757:6:75","nodeType":"YulIdentifier","src":"10757:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10697:52:75","nodeType":"YulIdentifier","src":"10697:52:75"},"nativeSrc":"10697:67:75","nodeType":"YulFunctionCall","src":"10697:67:75"}],"functionName":{"name":"sstore","nativeSrc":"10684:6:75","nodeType":"YulIdentifier","src":"10684:6:75"},"nativeSrc":"10684:81:75","nodeType":"YulFunctionCall","src":"10684:81:75"},"nativeSrc":"10684:81:75","nodeType":"YulExpressionStatement","src":"10684:81:75"}]},"nativeSrc":"10533:242:75","nodeType":"YulCase","src":"10533:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"9856:6:75","nodeType":"YulIdentifier","src":"9856:6:75"},{"kind":"number","nativeSrc":"9864:2:75","nodeType":"YulLiteral","src":"9864:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9853:2:75","nodeType":"YulIdentifier","src":"9853:2:75"},"nativeSrc":"9853:14:75","nodeType":"YulFunctionCall","src":"9853:14:75"},"nativeSrc":"9846:929:75","nodeType":"YulSwitch","src":"9846:929:75"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"9486:1295:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9565:4:75","nodeType":"YulTypedName","src":"9565:4:75","type":""},{"name":"src","nativeSrc":"9571:3:75","nodeType":"YulTypedName","src":"9571:3:75","type":""}],"src":"9486:1295:75"},{"body":{"nativeSrc":"10818:95:75","nodeType":"YulBlock","src":"10818:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10835:1:75","nodeType":"YulLiteral","src":"10835:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10842:3:75","nodeType":"YulLiteral","src":"10842:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10847:10:75","nodeType":"YulLiteral","src":"10847:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10838:3:75","nodeType":"YulIdentifier","src":"10838:3:75"},"nativeSrc":"10838:20:75","nodeType":"YulFunctionCall","src":"10838:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10828:6:75","nodeType":"YulIdentifier","src":"10828:6:75"},"nativeSrc":"10828:31:75","nodeType":"YulFunctionCall","src":"10828:31:75"},"nativeSrc":"10828:31:75","nodeType":"YulExpressionStatement","src":"10828:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10875:1:75","nodeType":"YulLiteral","src":"10875:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10878:4:75","nodeType":"YulLiteral","src":"10878:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"10868:6:75","nodeType":"YulIdentifier","src":"10868:6:75"},"nativeSrc":"10868:15:75","nodeType":"YulFunctionCall","src":"10868:15:75"},"nativeSrc":"10868:15:75","nodeType":"YulExpressionStatement","src":"10868:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10899:1:75","nodeType":"YulLiteral","src":"10899:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10902:4:75","nodeType":"YulLiteral","src":"10902:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10892:6:75","nodeType":"YulIdentifier","src":"10892:6:75"},"nativeSrc":"10892:15:75","nodeType":"YulFunctionCall","src":"10892:15:75"},"nativeSrc":"10892:15:75","nodeType":"YulExpressionStatement","src":"10892:15:75"}]},"name":"panic_error_0x12","nativeSrc":"10786:127:75","nodeType":"YulFunctionDefinition","src":"10786:127:75"},{"body":{"nativeSrc":"10950:95:75","nodeType":"YulBlock","src":"10950:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10967:1:75","nodeType":"YulLiteral","src":"10967:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10974:3:75","nodeType":"YulLiteral","src":"10974:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10979:10:75","nodeType":"YulLiteral","src":"10979:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10970:3:75","nodeType":"YulIdentifier","src":"10970:3:75"},"nativeSrc":"10970:20:75","nodeType":"YulFunctionCall","src":"10970:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10960:6:75","nodeType":"YulIdentifier","src":"10960:6:75"},"nativeSrc":"10960:31:75","nodeType":"YulFunctionCall","src":"10960:31:75"},"nativeSrc":"10960:31:75","nodeType":"YulExpressionStatement","src":"10960:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11007:1:75","nodeType":"YulLiteral","src":"11007:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"11010:4:75","nodeType":"YulLiteral","src":"11010:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"11000:6:75","nodeType":"YulIdentifier","src":"11000:6:75"},"nativeSrc":"11000:15:75","nodeType":"YulFunctionCall","src":"11000:15:75"},"nativeSrc":"11000:15:75","nodeType":"YulExpressionStatement","src":"11000:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11031:1:75","nodeType":"YulLiteral","src":"11031:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11034:4:75","nodeType":"YulLiteral","src":"11034:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11024:6:75","nodeType":"YulIdentifier","src":"11024:6:75"},"nativeSrc":"11024:15:75","nodeType":"YulFunctionCall","src":"11024:15:75"},"nativeSrc":"11024:15:75","nodeType":"YulExpressionStatement","src":"11024:15:75"}]},"name":"panic_error_0x11","nativeSrc":"10918:127:75","nodeType":"YulFunctionDefinition","src":"10918:127:75"},{"body":{"nativeSrc":"11102:116:75","nodeType":"YulBlock","src":"11102:116:75","statements":[{"nativeSrc":"11112:20:75","nodeType":"YulAssignment","src":"11112:20:75","value":{"arguments":[{"name":"x","nativeSrc":"11127:1:75","nodeType":"YulIdentifier","src":"11127:1:75"},{"name":"y","nativeSrc":"11130:1:75","nodeType":"YulIdentifier","src":"11130:1:75"}],"functionName":{"name":"mul","nativeSrc":"11123:3:75","nodeType":"YulIdentifier","src":"11123:3:75"},"nativeSrc":"11123:9:75","nodeType":"YulFunctionCall","src":"11123:9:75"},"variableNames":[{"name":"product","nativeSrc":"11112:7:75","nodeType":"YulIdentifier","src":"11112:7:75"}]},{"body":{"nativeSrc":"11190:22:75","nodeType":"YulBlock","src":"11190:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11192:16:75","nodeType":"YulIdentifier","src":"11192:16:75"},"nativeSrc":"11192:18:75","nodeType":"YulFunctionCall","src":"11192:18:75"},"nativeSrc":"11192:18:75","nodeType":"YulExpressionStatement","src":"11192:18:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"11161:1:75","nodeType":"YulIdentifier","src":"11161:1:75"}],"functionName":{"name":"iszero","nativeSrc":"11154:6:75","nodeType":"YulIdentifier","src":"11154:6:75"},"nativeSrc":"11154:9:75","nodeType":"YulFunctionCall","src":"11154:9:75"},{"arguments":[{"name":"y","nativeSrc":"11168:1:75","nodeType":"YulIdentifier","src":"11168:1:75"},{"arguments":[{"name":"product","nativeSrc":"11175:7:75","nodeType":"YulIdentifier","src":"11175:7:75"},{"name":"x","nativeSrc":"11184:1:75","nodeType":"YulIdentifier","src":"11184:1:75"}],"functionName":{"name":"div","nativeSrc":"11171:3:75","nodeType":"YulIdentifier","src":"11171:3:75"},"nativeSrc":"11171:15:75","nodeType":"YulFunctionCall","src":"11171:15:75"}],"functionName":{"name":"eq","nativeSrc":"11165:2:75","nodeType":"YulIdentifier","src":"11165:2:75"},"nativeSrc":"11165:22:75","nodeType":"YulFunctionCall","src":"11165:22:75"}],"functionName":{"name":"or","nativeSrc":"11151:2:75","nodeType":"YulIdentifier","src":"11151:2:75"},"nativeSrc":"11151:37:75","nodeType":"YulFunctionCall","src":"11151:37:75"}],"functionName":{"name":"iszero","nativeSrc":"11144:6:75","nodeType":"YulIdentifier","src":"11144:6:75"},"nativeSrc":"11144:45:75","nodeType":"YulFunctionCall","src":"11144:45:75"},"nativeSrc":"11141:71:75","nodeType":"YulIf","src":"11141:71:75"}]},"name":"checked_mul_t_uint256","nativeSrc":"11050:168:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11081:1:75","nodeType":"YulTypedName","src":"11081:1:75","type":""},{"name":"y","nativeSrc":"11084:1:75","nodeType":"YulTypedName","src":"11084:1:75","type":""}],"returnVariables":[{"name":"product","nativeSrc":"11090:7:75","nodeType":"YulTypedName","src":"11090:7:75","type":""}],"src":"11050:168:75"},{"body":{"nativeSrc":"11272:79:75","nodeType":"YulBlock","src":"11272:79:75","statements":[{"nativeSrc":"11282:17:75","nodeType":"YulAssignment","src":"11282:17:75","value":{"arguments":[{"name":"x","nativeSrc":"11294:1:75","nodeType":"YulIdentifier","src":"11294:1:75"},{"name":"y","nativeSrc":"11297:1:75","nodeType":"YulIdentifier","src":"11297:1:75"}],"functionName":{"name":"sub","nativeSrc":"11290:3:75","nodeType":"YulIdentifier","src":"11290:3:75"},"nativeSrc":"11290:9:75","nodeType":"YulFunctionCall","src":"11290:9:75"},"variableNames":[{"name":"diff","nativeSrc":"11282:4:75","nodeType":"YulIdentifier","src":"11282:4:75"}]},{"body":{"nativeSrc":"11323:22:75","nodeType":"YulBlock","src":"11323:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11325:16:75","nodeType":"YulIdentifier","src":"11325:16:75"},"nativeSrc":"11325:18:75","nodeType":"YulFunctionCall","src":"11325:18:75"},"nativeSrc":"11325:18:75","nodeType":"YulExpressionStatement","src":"11325:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11314:4:75","nodeType":"YulIdentifier","src":"11314:4:75"},{"name":"x","nativeSrc":"11320:1:75","nodeType":"YulIdentifier","src":"11320:1:75"}],"functionName":{"name":"gt","nativeSrc":"11311:2:75","nodeType":"YulIdentifier","src":"11311:2:75"},"nativeSrc":"11311:11:75","nodeType":"YulFunctionCall","src":"11311:11:75"},"nativeSrc":"11308:37:75","nodeType":"YulIf","src":"11308:37:75"}]},"name":"checked_sub_t_uint256","nativeSrc":"11223:128:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11254:1:75","nodeType":"YulTypedName","src":"11254:1:75","type":""},{"name":"y","nativeSrc":"11257:1:75","nodeType":"YulTypedName","src":"11257:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11263:4:75","nodeType":"YulTypedName","src":"11263:4:75","type":""}],"src":"11223:128:75"},{"body":{"nativeSrc":"11402:171:75","nodeType":"YulBlock","src":"11402:171:75","statements":[{"body":{"nativeSrc":"11433:111:75","nodeType":"YulBlock","src":"11433:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11454:1:75","nodeType":"YulLiteral","src":"11454:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11461:3:75","nodeType":"YulLiteral","src":"11461:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"11466:10:75","nodeType":"YulLiteral","src":"11466:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11457:3:75","nodeType":"YulIdentifier","src":"11457:3:75"},"nativeSrc":"11457:20:75","nodeType":"YulFunctionCall","src":"11457:20:75"}],"functionName":{"name":"mstore","nativeSrc":"11447:6:75","nodeType":"YulIdentifier","src":"11447:6:75"},"nativeSrc":"11447:31:75","nodeType":"YulFunctionCall","src":"11447:31:75"},"nativeSrc":"11447:31:75","nodeType":"YulExpressionStatement","src":"11447:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11498:1:75","nodeType":"YulLiteral","src":"11498:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"11501:4:75","nodeType":"YulLiteral","src":"11501:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"11491:6:75","nodeType":"YulIdentifier","src":"11491:6:75"},"nativeSrc":"11491:15:75","nodeType":"YulFunctionCall","src":"11491:15:75"},"nativeSrc":"11491:15:75","nodeType":"YulExpressionStatement","src":"11491:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11526:1:75","nodeType":"YulLiteral","src":"11526:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11529:4:75","nodeType":"YulLiteral","src":"11529:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11519:6:75","nodeType":"YulIdentifier","src":"11519:6:75"},"nativeSrc":"11519:15:75","nodeType":"YulFunctionCall","src":"11519:15:75"},"nativeSrc":"11519:15:75","nodeType":"YulExpressionStatement","src":"11519:15:75"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"11422:1:75","nodeType":"YulIdentifier","src":"11422:1:75"}],"functionName":{"name":"iszero","nativeSrc":"11415:6:75","nodeType":"YulIdentifier","src":"11415:6:75"},"nativeSrc":"11415:9:75","nodeType":"YulFunctionCall","src":"11415:9:75"},"nativeSrc":"11412:132:75","nodeType":"YulIf","src":"11412:132:75"},{"nativeSrc":"11553:14:75","nodeType":"YulAssignment","src":"11553:14:75","value":{"arguments":[{"name":"x","nativeSrc":"11562:1:75","nodeType":"YulIdentifier","src":"11562:1:75"},{"name":"y","nativeSrc":"11565:1:75","nodeType":"YulIdentifier","src":"11565:1:75"}],"functionName":{"name":"div","nativeSrc":"11558:3:75","nodeType":"YulIdentifier","src":"11558:3:75"},"nativeSrc":"11558:9:75","nodeType":"YulFunctionCall","src":"11558:9:75"},"variableNames":[{"name":"r","nativeSrc":"11553:1:75","nodeType":"YulIdentifier","src":"11553:1:75"}]}]},"name":"checked_div_t_uint256","nativeSrc":"11356:217:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11387:1:75","nodeType":"YulTypedName","src":"11387:1:75","type":""},{"name":"y","nativeSrc":"11390:1:75","nodeType":"YulTypedName","src":"11390:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"11396:1:75","nodeType":"YulTypedName","src":"11396:1:75","type":""}],"src":"11356:217:75"},{"body":{"nativeSrc":"11657:168:75","nodeType":"YulBlock","src":"11657:168:75","statements":[{"body":{"nativeSrc":"11703:16:75","nodeType":"YulBlock","src":"11703:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11712:1:75","nodeType":"YulLiteral","src":"11712:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11715:1:75","nodeType":"YulLiteral","src":"11715:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11705:6:75","nodeType":"YulIdentifier","src":"11705:6:75"},"nativeSrc":"11705:12:75","nodeType":"YulFunctionCall","src":"11705:12:75"},"nativeSrc":"11705:12:75","nodeType":"YulExpressionStatement","src":"11705:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11678:7:75","nodeType":"YulIdentifier","src":"11678:7:75"},{"name":"headStart","nativeSrc":"11687:9:75","nodeType":"YulIdentifier","src":"11687:9:75"}],"functionName":{"name":"sub","nativeSrc":"11674:3:75","nodeType":"YulIdentifier","src":"11674:3:75"},"nativeSrc":"11674:23:75","nodeType":"YulFunctionCall","src":"11674:23:75"},{"kind":"number","nativeSrc":"11699:2:75","nodeType":"YulLiteral","src":"11699:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11670:3:75","nodeType":"YulIdentifier","src":"11670:3:75"},"nativeSrc":"11670:32:75","nodeType":"YulFunctionCall","src":"11670:32:75"},"nativeSrc":"11667:52:75","nodeType":"YulIf","src":"11667:52:75"},{"nativeSrc":"11728:29:75","nodeType":"YulVariableDeclaration","src":"11728:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11747:9:75","nodeType":"YulIdentifier","src":"11747:9:75"}],"functionName":{"name":"mload","nativeSrc":"11741:5:75","nodeType":"YulIdentifier","src":"11741:5:75"},"nativeSrc":"11741:16:75","nodeType":"YulFunctionCall","src":"11741:16:75"},"variables":[{"name":"value","nativeSrc":"11732:5:75","nodeType":"YulTypedName","src":"11732:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11789:5:75","nodeType":"YulIdentifier","src":"11789:5:75"}],"functionName":{"name":"validator_revert_uint8","nativeSrc":"11766:22:75","nodeType":"YulIdentifier","src":"11766:22:75"},"nativeSrc":"11766:29:75","nodeType":"YulFunctionCall","src":"11766:29:75"},"nativeSrc":"11766:29:75","nodeType":"YulExpressionStatement","src":"11766:29:75"},{"nativeSrc":"11804:15:75","nodeType":"YulAssignment","src":"11804:15:75","value":{"name":"value","nativeSrc":"11814:5:75","nodeType":"YulIdentifier","src":"11814:5:75"},"variableNames":[{"name":"value0","nativeSrc":"11804:6:75","nodeType":"YulIdentifier","src":"11804:6:75"}]}]},"name":"abi_decode_tuple_t_uint8_fromMemory","nativeSrc":"11578:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11623:9:75","nodeType":"YulTypedName","src":"11623:9:75","type":""},{"name":"dataEnd","nativeSrc":"11634:7:75","nodeType":"YulTypedName","src":"11634:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11646:6:75","nodeType":"YulTypedName","src":"11646:6:75","type":""}],"src":"11578:247:75"},{"body":{"nativeSrc":"11877:104:75","nodeType":"YulBlock","src":"11877:104:75","statements":[{"nativeSrc":"11887:39:75","nodeType":"YulAssignment","src":"11887:39:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"11903:1:75","nodeType":"YulIdentifier","src":"11903:1:75"},{"kind":"number","nativeSrc":"11906:4:75","nodeType":"YulLiteral","src":"11906:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11899:3:75","nodeType":"YulIdentifier","src":"11899:3:75"},"nativeSrc":"11899:12:75","nodeType":"YulFunctionCall","src":"11899:12:75"},{"arguments":[{"name":"y","nativeSrc":"11917:1:75","nodeType":"YulIdentifier","src":"11917:1:75"},{"kind":"number","nativeSrc":"11920:4:75","nodeType":"YulLiteral","src":"11920:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"11913:3:75","nodeType":"YulIdentifier","src":"11913:3:75"},"nativeSrc":"11913:12:75","nodeType":"YulFunctionCall","src":"11913:12:75"}],"functionName":{"name":"sub","nativeSrc":"11895:3:75","nodeType":"YulIdentifier","src":"11895:3:75"},"nativeSrc":"11895:31:75","nodeType":"YulFunctionCall","src":"11895:31:75"},"variableNames":[{"name":"diff","nativeSrc":"11887:4:75","nodeType":"YulIdentifier","src":"11887:4:75"}]},{"body":{"nativeSrc":"11953:22:75","nodeType":"YulBlock","src":"11953:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11955:16:75","nodeType":"YulIdentifier","src":"11955:16:75"},"nativeSrc":"11955:18:75","nodeType":"YulFunctionCall","src":"11955:18:75"},"nativeSrc":"11955:18:75","nodeType":"YulExpressionStatement","src":"11955:18:75"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"11941:4:75","nodeType":"YulIdentifier","src":"11941:4:75"},{"kind":"number","nativeSrc":"11947:4:75","nodeType":"YulLiteral","src":"11947:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"11938:2:75","nodeType":"YulIdentifier","src":"11938:2:75"},"nativeSrc":"11938:14:75","nodeType":"YulFunctionCall","src":"11938:14:75"},"nativeSrc":"11935:40:75","nodeType":"YulIf","src":"11935:40:75"}]},"name":"checked_sub_t_uint8","nativeSrc":"11830:151:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11859:1:75","nodeType":"YulTypedName","src":"11859:1:75","type":""},{"name":"y","nativeSrc":"11862:1:75","nodeType":"YulTypedName","src":"11862:1:75","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"11868:4:75","nodeType":"YulTypedName","src":"11868:4:75","type":""}],"src":"11830:151:75"},{"body":{"nativeSrc":"12055:306:75","nodeType":"YulBlock","src":"12055:306:75","statements":[{"nativeSrc":"12065:10:75","nodeType":"YulAssignment","src":"12065:10:75","value":{"kind":"number","nativeSrc":"12074:1:75","nodeType":"YulLiteral","src":"12074:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12065:5:75","nodeType":"YulIdentifier","src":"12065:5:75"}]},{"nativeSrc":"12084:13:75","nodeType":"YulAssignment","src":"12084:13:75","value":{"name":"_base","nativeSrc":"12092:5:75","nodeType":"YulIdentifier","src":"12092:5:75"},"variableNames":[{"name":"base","nativeSrc":"12084:4:75","nodeType":"YulIdentifier","src":"12084:4:75"}]},{"body":{"nativeSrc":"12142:213:75","nodeType":"YulBlock","src":"12142:213:75","statements":[{"body":{"nativeSrc":"12184:22:75","nodeType":"YulBlock","src":"12184:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12186:16:75","nodeType":"YulIdentifier","src":"12186:16:75"},"nativeSrc":"12186:18:75","nodeType":"YulFunctionCall","src":"12186:18:75"},"nativeSrc":"12186:18:75","nodeType":"YulExpressionStatement","src":"12186:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12162:4:75","nodeType":"YulIdentifier","src":"12162:4:75"},{"arguments":[{"name":"max","nativeSrc":"12172:3:75","nodeType":"YulIdentifier","src":"12172:3:75"},{"name":"base","nativeSrc":"12177:4:75","nodeType":"YulIdentifier","src":"12177:4:75"}],"functionName":{"name":"div","nativeSrc":"12168:3:75","nodeType":"YulIdentifier","src":"12168:3:75"},"nativeSrc":"12168:14:75","nodeType":"YulFunctionCall","src":"12168:14:75"}],"functionName":{"name":"gt","nativeSrc":"12159:2:75","nodeType":"YulIdentifier","src":"12159:2:75"},"nativeSrc":"12159:24:75","nodeType":"YulFunctionCall","src":"12159:24:75"},"nativeSrc":"12156:50:75","nodeType":"YulIf","src":"12156:50:75"},{"body":{"nativeSrc":"12239:29:75","nodeType":"YulBlock","src":"12239:29:75","statements":[{"nativeSrc":"12241:25:75","nodeType":"YulAssignment","src":"12241:25:75","value":{"arguments":[{"name":"power","nativeSrc":"12254:5:75","nodeType":"YulIdentifier","src":"12254:5:75"},{"name":"base","nativeSrc":"12261:4:75","nodeType":"YulIdentifier","src":"12261:4:75"}],"functionName":{"name":"mul","nativeSrc":"12250:3:75","nodeType":"YulIdentifier","src":"12250:3:75"},"nativeSrc":"12250:16:75","nodeType":"YulFunctionCall","src":"12250:16:75"},"variableNames":[{"name":"power","nativeSrc":"12241:5:75","nodeType":"YulIdentifier","src":"12241:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12226:8:75","nodeType":"YulIdentifier","src":"12226:8:75"},{"kind":"number","nativeSrc":"12236:1:75","nodeType":"YulLiteral","src":"12236:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"12222:3:75","nodeType":"YulIdentifier","src":"12222:3:75"},"nativeSrc":"12222:16:75","nodeType":"YulFunctionCall","src":"12222:16:75"},"nativeSrc":"12219:49:75","nodeType":"YulIf","src":"12219:49:75"},{"nativeSrc":"12281:23:75","nodeType":"YulAssignment","src":"12281:23:75","value":{"arguments":[{"name":"base","nativeSrc":"12293:4:75","nodeType":"YulIdentifier","src":"12293:4:75"},{"name":"base","nativeSrc":"12299:4:75","nodeType":"YulIdentifier","src":"12299:4:75"}],"functionName":{"name":"mul","nativeSrc":"12289:3:75","nodeType":"YulIdentifier","src":"12289:3:75"},"nativeSrc":"12289:15:75","nodeType":"YulFunctionCall","src":"12289:15:75"},"variableNames":[{"name":"base","nativeSrc":"12281:4:75","nodeType":"YulIdentifier","src":"12281:4:75"}]},{"nativeSrc":"12317:28:75","nodeType":"YulAssignment","src":"12317:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"12333:1:75","nodeType":"YulLiteral","src":"12333:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"12336:8:75","nodeType":"YulIdentifier","src":"12336:8:75"}],"functionName":{"name":"shr","nativeSrc":"12329:3:75","nodeType":"YulIdentifier","src":"12329:3:75"},"nativeSrc":"12329:16:75","nodeType":"YulFunctionCall","src":"12329:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"12317:8:75","nodeType":"YulIdentifier","src":"12317:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12117:8:75","nodeType":"YulIdentifier","src":"12117:8:75"},{"kind":"number","nativeSrc":"12127:1:75","nodeType":"YulLiteral","src":"12127:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"12114:2:75","nodeType":"YulIdentifier","src":"12114:2:75"},"nativeSrc":"12114:15:75","nodeType":"YulFunctionCall","src":"12114:15:75"},"nativeSrc":"12106:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"12130:3:75","nodeType":"YulBlock","src":"12130:3:75","statements":[]},"pre":{"nativeSrc":"12110:3:75","nodeType":"YulBlock","src":"12110:3:75","statements":[]},"src":"12106:249:75"}]},"name":"checked_exp_helper","nativeSrc":"11986:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"12014:5:75","nodeType":"YulTypedName","src":"12014:5:75","type":""},{"name":"exponent","nativeSrc":"12021:8:75","nodeType":"YulTypedName","src":"12021:8:75","type":""},{"name":"max","nativeSrc":"12031:3:75","nodeType":"YulTypedName","src":"12031:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12039:5:75","nodeType":"YulTypedName","src":"12039:5:75","type":""},{"name":"base","nativeSrc":"12046:4:75","nodeType":"YulTypedName","src":"12046:4:75","type":""}],"src":"11986:375:75"},{"body":{"nativeSrc":"12425:843:75","nodeType":"YulBlock","src":"12425:843:75","statements":[{"body":{"nativeSrc":"12463:52:75","nodeType":"YulBlock","src":"12463:52:75","statements":[{"nativeSrc":"12477:10:75","nodeType":"YulAssignment","src":"12477:10:75","value":{"kind":"number","nativeSrc":"12486:1:75","nodeType":"YulLiteral","src":"12486:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12477:5:75","nodeType":"YulIdentifier","src":"12477:5:75"}]},{"nativeSrc":"12500:5:75","nodeType":"YulLeave","src":"12500:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12445:8:75","nodeType":"YulIdentifier","src":"12445:8:75"}],"functionName":{"name":"iszero","nativeSrc":"12438:6:75","nodeType":"YulIdentifier","src":"12438:6:75"},"nativeSrc":"12438:16:75","nodeType":"YulFunctionCall","src":"12438:16:75"},"nativeSrc":"12435:80:75","nodeType":"YulIf","src":"12435:80:75"},{"body":{"nativeSrc":"12548:52:75","nodeType":"YulBlock","src":"12548:52:75","statements":[{"nativeSrc":"12562:10:75","nodeType":"YulAssignment","src":"12562:10:75","value":{"kind":"number","nativeSrc":"12571:1:75","nodeType":"YulLiteral","src":"12571:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"12562:5:75","nodeType":"YulIdentifier","src":"12562:5:75"}]},{"nativeSrc":"12585:5:75","nodeType":"YulLeave","src":"12585:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12534:4:75","nodeType":"YulIdentifier","src":"12534:4:75"}],"functionName":{"name":"iszero","nativeSrc":"12527:6:75","nodeType":"YulIdentifier","src":"12527:6:75"},"nativeSrc":"12527:12:75","nodeType":"YulFunctionCall","src":"12527:12:75"},"nativeSrc":"12524:76:75","nodeType":"YulIf","src":"12524:76:75"},{"cases":[{"body":{"nativeSrc":"12636:52:75","nodeType":"YulBlock","src":"12636:52:75","statements":[{"nativeSrc":"12650:10:75","nodeType":"YulAssignment","src":"12650:10:75","value":{"kind":"number","nativeSrc":"12659:1:75","nodeType":"YulLiteral","src":"12659:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12650:5:75","nodeType":"YulIdentifier","src":"12650:5:75"}]},{"nativeSrc":"12673:5:75","nodeType":"YulLeave","src":"12673:5:75"}]},"nativeSrc":"12629:59:75","nodeType":"YulCase","src":"12629:59:75","value":{"kind":"number","nativeSrc":"12634:1:75","nodeType":"YulLiteral","src":"12634:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"12704:167:75","nodeType":"YulBlock","src":"12704:167:75","statements":[{"body":{"nativeSrc":"12739:22:75","nodeType":"YulBlock","src":"12739:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12741:16:75","nodeType":"YulIdentifier","src":"12741:16:75"},"nativeSrc":"12741:18:75","nodeType":"YulFunctionCall","src":"12741:18:75"},"nativeSrc":"12741:18:75","nodeType":"YulExpressionStatement","src":"12741:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12724:8:75","nodeType":"YulIdentifier","src":"12724:8:75"},{"kind":"number","nativeSrc":"12734:3:75","nodeType":"YulLiteral","src":"12734:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"12721:2:75","nodeType":"YulIdentifier","src":"12721:2:75"},"nativeSrc":"12721:17:75","nodeType":"YulFunctionCall","src":"12721:17:75"},"nativeSrc":"12718:43:75","nodeType":"YulIf","src":"12718:43:75"},{"nativeSrc":"12774:25:75","nodeType":"YulAssignment","src":"12774:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"12787:8:75","nodeType":"YulIdentifier","src":"12787:8:75"},{"kind":"number","nativeSrc":"12797:1:75","nodeType":"YulLiteral","src":"12797:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12783:3:75","nodeType":"YulIdentifier","src":"12783:3:75"},"nativeSrc":"12783:16:75","nodeType":"YulFunctionCall","src":"12783:16:75"},"variableNames":[{"name":"power","nativeSrc":"12774:5:75","nodeType":"YulIdentifier","src":"12774:5:75"}]},{"nativeSrc":"12812:11:75","nodeType":"YulVariableDeclaration","src":"12812:11:75","value":{"kind":"number","nativeSrc":"12822:1:75","nodeType":"YulLiteral","src":"12822:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"12816:2:75","nodeType":"YulTypedName","src":"12816:2:75","type":""}]},{"nativeSrc":"12836:7:75","nodeType":"YulAssignment","src":"12836:7:75","value":{"kind":"number","nativeSrc":"12842:1:75","nodeType":"YulLiteral","src":"12842:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"12836:2:75","nodeType":"YulIdentifier","src":"12836:2:75"}]},{"nativeSrc":"12856:5:75","nodeType":"YulLeave","src":"12856:5:75"}]},"nativeSrc":"12697:174:75","nodeType":"YulCase","src":"12697:174:75","value":{"kind":"number","nativeSrc":"12702:1:75","nodeType":"YulLiteral","src":"12702:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"12616:4:75","nodeType":"YulIdentifier","src":"12616:4:75"},"nativeSrc":"12609:262:75","nodeType":"YulSwitch","src":"12609:262:75"},{"body":{"nativeSrc":"12969:114:75","nodeType":"YulBlock","src":"12969:114:75","statements":[{"nativeSrc":"12983:28:75","nodeType":"YulAssignment","src":"12983:28:75","value":{"arguments":[{"name":"base","nativeSrc":"12996:4:75","nodeType":"YulIdentifier","src":"12996:4:75"},{"name":"exponent","nativeSrc":"13002:8:75","nodeType":"YulIdentifier","src":"13002:8:75"}],"functionName":{"name":"exp","nativeSrc":"12992:3:75","nodeType":"YulIdentifier","src":"12992:3:75"},"nativeSrc":"12992:19:75","nodeType":"YulFunctionCall","src":"12992:19:75"},"variableNames":[{"name":"power","nativeSrc":"12983:5:75","nodeType":"YulIdentifier","src":"12983:5:75"}]},{"nativeSrc":"13024:11:75","nodeType":"YulVariableDeclaration","src":"13024:11:75","value":{"kind":"number","nativeSrc":"13034:1:75","nodeType":"YulLiteral","src":"13034:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"13028:2:75","nodeType":"YulTypedName","src":"13028:2:75","type":""}]},{"nativeSrc":"13048:7:75","nodeType":"YulAssignment","src":"13048:7:75","value":{"kind":"number","nativeSrc":"13054:1:75","nodeType":"YulLiteral","src":"13054:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"13048:2:75","nodeType":"YulIdentifier","src":"13048:2:75"}]},{"nativeSrc":"13068:5:75","nodeType":"YulLeave","src":"13068:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12893:4:75","nodeType":"YulIdentifier","src":"12893:4:75"},{"kind":"number","nativeSrc":"12899:2:75","nodeType":"YulLiteral","src":"12899:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"12890:2:75","nodeType":"YulIdentifier","src":"12890:2:75"},"nativeSrc":"12890:12:75","nodeType":"YulFunctionCall","src":"12890:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"12907:8:75","nodeType":"YulIdentifier","src":"12907:8:75"},{"kind":"number","nativeSrc":"12917:2:75","nodeType":"YulLiteral","src":"12917:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"12904:2:75","nodeType":"YulIdentifier","src":"12904:2:75"},"nativeSrc":"12904:16:75","nodeType":"YulFunctionCall","src":"12904:16:75"}],"functionName":{"name":"and","nativeSrc":"12886:3:75","nodeType":"YulIdentifier","src":"12886:3:75"},"nativeSrc":"12886:35:75","nodeType":"YulFunctionCall","src":"12886:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12930:4:75","nodeType":"YulIdentifier","src":"12930:4:75"},{"kind":"number","nativeSrc":"12936:3:75","nodeType":"YulLiteral","src":"12936:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"12927:2:75","nodeType":"YulIdentifier","src":"12927:2:75"},"nativeSrc":"12927:13:75","nodeType":"YulFunctionCall","src":"12927:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"12945:8:75","nodeType":"YulIdentifier","src":"12945:8:75"},{"kind":"number","nativeSrc":"12955:2:75","nodeType":"YulLiteral","src":"12955:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"12942:2:75","nodeType":"YulIdentifier","src":"12942:2:75"},"nativeSrc":"12942:16:75","nodeType":"YulFunctionCall","src":"12942:16:75"}],"functionName":{"name":"and","nativeSrc":"12923:3:75","nodeType":"YulIdentifier","src":"12923:3:75"},"nativeSrc":"12923:36:75","nodeType":"YulFunctionCall","src":"12923:36:75"}],"functionName":{"name":"or","nativeSrc":"12883:2:75","nodeType":"YulIdentifier","src":"12883:2:75"},"nativeSrc":"12883:77:75","nodeType":"YulFunctionCall","src":"12883:77:75"},"nativeSrc":"12880:203:75","nodeType":"YulIf","src":"12880:203:75"},{"nativeSrc":"13092:65:75","nodeType":"YulVariableDeclaration","src":"13092:65:75","value":{"arguments":[{"name":"base","nativeSrc":"13134:4:75","nodeType":"YulIdentifier","src":"13134:4:75"},{"name":"exponent","nativeSrc":"13140:8:75","nodeType":"YulIdentifier","src":"13140:8:75"},{"arguments":[{"kind":"number","nativeSrc":"13154:1:75","nodeType":"YulLiteral","src":"13154:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13150:3:75","nodeType":"YulIdentifier","src":"13150:3:75"},"nativeSrc":"13150:6:75","nodeType":"YulFunctionCall","src":"13150:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"13115:18:75","nodeType":"YulIdentifier","src":"13115:18:75"},"nativeSrc":"13115:42:75","nodeType":"YulFunctionCall","src":"13115:42:75"},"variables":[{"name":"power_1","nativeSrc":"13096:7:75","nodeType":"YulTypedName","src":"13096:7:75","type":""},{"name":"base_1","nativeSrc":"13105:6:75","nodeType":"YulTypedName","src":"13105:6:75","type":""}]},{"body":{"nativeSrc":"13202:22:75","nodeType":"YulBlock","src":"13202:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"13204:16:75","nodeType":"YulIdentifier","src":"13204:16:75"},"nativeSrc":"13204:18:75","nodeType":"YulFunctionCall","src":"13204:18:75"},"nativeSrc":"13204:18:75","nodeType":"YulExpressionStatement","src":"13204:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"13172:7:75","nodeType":"YulIdentifier","src":"13172:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13189:1:75","nodeType":"YulLiteral","src":"13189:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"13185:3:75","nodeType":"YulIdentifier","src":"13185:3:75"},"nativeSrc":"13185:6:75","nodeType":"YulFunctionCall","src":"13185:6:75"},{"name":"base_1","nativeSrc":"13193:6:75","nodeType":"YulIdentifier","src":"13193:6:75"}],"functionName":{"name":"div","nativeSrc":"13181:3:75","nodeType":"YulIdentifier","src":"13181:3:75"},"nativeSrc":"13181:19:75","nodeType":"YulFunctionCall","src":"13181:19:75"}],"functionName":{"name":"gt","nativeSrc":"13169:2:75","nodeType":"YulIdentifier","src":"13169:2:75"},"nativeSrc":"13169:32:75","nodeType":"YulFunctionCall","src":"13169:32:75"},"nativeSrc":"13166:58:75","nodeType":"YulIf","src":"13166:58:75"},{"nativeSrc":"13233:29:75","nodeType":"YulAssignment","src":"13233:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"13246:7:75","nodeType":"YulIdentifier","src":"13246:7:75"},{"name":"base_1","nativeSrc":"13255:6:75","nodeType":"YulIdentifier","src":"13255:6:75"}],"functionName":{"name":"mul","nativeSrc":"13242:3:75","nodeType":"YulIdentifier","src":"13242:3:75"},"nativeSrc":"13242:20:75","nodeType":"YulFunctionCall","src":"13242:20:75"},"variableNames":[{"name":"power","nativeSrc":"13233:5:75","nodeType":"YulIdentifier","src":"13233:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"12366:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"12396:4:75","nodeType":"YulTypedName","src":"12396:4:75","type":""},{"name":"exponent","nativeSrc":"12402:8:75","nodeType":"YulTypedName","src":"12402:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12415:5:75","nodeType":"YulTypedName","src":"12415:5:75","type":""}],"src":"12366:902:75"},{"body":{"nativeSrc":"13341:72:75","nodeType":"YulBlock","src":"13341:72:75","statements":[{"nativeSrc":"13351:56:75","nodeType":"YulAssignment","src":"13351:56:75","value":{"arguments":[{"name":"base","nativeSrc":"13381:4:75","nodeType":"YulIdentifier","src":"13381:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"13391:8:75","nodeType":"YulIdentifier","src":"13391:8:75"},{"kind":"number","nativeSrc":"13401:4:75","nodeType":"YulLiteral","src":"13401:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13387:3:75","nodeType":"YulIdentifier","src":"13387:3:75"},"nativeSrc":"13387:19:75","nodeType":"YulFunctionCall","src":"13387:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"13360:20:75","nodeType":"YulIdentifier","src":"13360:20:75"},"nativeSrc":"13360:47:75","nodeType":"YulFunctionCall","src":"13360:47:75"},"variableNames":[{"name":"power","nativeSrc":"13351:5:75","nodeType":"YulIdentifier","src":"13351:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"13273:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"13312:4:75","nodeType":"YulTypedName","src":"13312:4:75","type":""},{"name":"exponent","nativeSrc":"13318:8:75","nodeType":"YulTypedName","src":"13318:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"13331:5:75","nodeType":"YulTypedName","src":"13331:5:75","type":""}],"src":"13273:140:75"}]},"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_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 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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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 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_$624_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_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_$624_memory_ptr_t_address_t_address_t_uint256_t_uint256__to_t_struct$_SwapConfig_$624_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_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_$624_memory_ptr__to_t_struct$_SwapConfig_$624_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_$624_memory_ptr_t_struct$_SwapConfig_$624_memory_ptr__to_t_struct$_SwapConfig_$624_memory_ptr_t_struct$_SwapConfig_$624_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    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\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 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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"18880":[{"length":32,"start":581},{"length":32,"start":737},{"length":32,"start":1747},{"length":32,"start":1996},{"length":32,"start":2121}],"18886":[{"length":32,"start":333},{"length":32,"start":809},{"length":32,"start":2193},{"length":32,"start":2799},{"length":32,"start":3198}],"18889":[{"length":32,"start":384},{"length":32,"start":1286},{"length":32,"start":1586},{"length":32,"start":2430},{"length":32,"start":3427}],"18892":[{"length":32,"start":516},{"length":32,"start":1084},{"length":32,"start":1252},{"length":32,"start":1552},{"length":32,"start":1840},{"length":32,"start":2464},{"length":32,"start":2646},{"length":32,"start":3474}],"18894":[{"length":32,"start":1012},{"length":32,"start":2500},{"length":32,"start":3522}]},"linkReferences":{"@ensuro/swaplibrary/contracts/SwapLibrary.sol":{"SwapLibrary":[{"length":20,"start":1222},{"length":20,"start":1518},{"length":20,"start":2396},{"length":20,"start":2990}]}},"object":"608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c80639c4667a21161006e5780639c4667a21461016f5780639cd47128146101ba578063b6b55f25146101cd578063ce96cb77146101e0578063de846ae4146101f3578063f3e0ffbf14610226575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f357806342b054f0146101155780635a117456146101355780635b9a4c3514610148575b5f5ffd5b6100c86100c3366004610fa3565b610239565b6040516100d5919061101e565b60405180910390f35b6100f16100ec366004611030565b6102d7565b005b610107610101366004611047565b505f1990565b6040519081526020016100d5565b610128610123366004611047565b6106a5565b6040516100d591906110cf565b6100f16101433660046110e1565b6106c9565b6101077f000000000000000000000000000000000000000000000000000000000000000081565b6101a261017d366004611047565b507f000000000000000000000000000000000000000000000000000000000000000090565b6040516001600160a01b0390911681526020016100d5565b6100f16101c8366004611100565b6107c2565b6100f16101db366004611030565b61083f565b6101076101ee366004611047565b610a2b565b6101a2610201366004611047565b507f000000000000000000000000000000000000000000000000000000000000000090565b610107610234366004611047565b610a31565b60606001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361028457604051632abf118b60e21b815260040160405180910390fd5b5f60ff841680156102975761029761106d565b90505f8180156102a9576102a961106d565b036100b1576102c06102ba30610ac5565b84610b87565b505060408051602081019091525f81525b92915050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361032057604051632abf118b60e21b815260040160405180910390fd5b80156106a2575f7f0000000000000000000000000000000000000000000000000000000000000000805461035390611132565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611132565b80156103ca5780601f106103a1576101008083540402835291602001916103ca565b820191905f5260205f20905b8154815290600101906020018083116103ad57829003601f168201915b50505050508060200190518101906103e291906111b7565b90505f610418670de0b6b3a7640000807f0000000000000000000000000000000000000000000000000000000000000000610ca7565b6040516370a0823160e01b81523060048201529091506104ab906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610481573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a59190611243565b30610d5d565b83106105df576040516370a0823160e01b815230600482015273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063775669159084907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610555573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105799190611243565b866040518663ffffffff1660e01b815260040161059a95949392919061125a565b602060405180830381865af41580156105b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105d99190611243565b5061069f565b60405163581e517d60e01b815273__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063581e517d9061065e9085907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908990889060040161125a565b602060405180830381865af4158015610679573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069d9190611243565b505b50505b50565b60408051606080820183525f8083526020830152918101919091526102d182610ac5565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361071257604051632abf118b60e21b815260040160405180910390fd5b801580156107a457506040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561077d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a19190611243565b15155b156106a2576040516342a176d160e11b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361080b57604051632abf118b60e21b815260040160405180910390fd5b60408051606081019091526106a290805f81526020015f815260200160405180602001604052805f81525081525082610b87565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361088857604051632abf118b60e21b815260040160405180910390fd5b80156106a2575f7f000000000000000000000000000000000000000000000000000000000000000080546108bb90611132565b80601f01602080910402602001604051908101604052809291908181526020018280546108e790611132565b80156109325780601f1061090957610100808354040283529160200191610932565b820191905f5260205f20905b81548152906001019060200180831161091557829003601f168201915b505050505080602001905181019061094a91906111b7565b604051637756691560e01b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__906377566915906109ec9084907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088907f00000000000000000000000000000000000000000000000000000000000000009060040161125a565b602060405180830381865af4158015610a07573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061069f9190611243565b5f6102d1825b6040516370a0823160e01b81526001600160a01b0382811660048301525f916102d1917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610a9b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abf9190611243565b83610d5d565b60408051606080820183525f8083526020830152918101919091526040516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201525f906001600160a01b038416906347e57533906024015f60405180830381865afa158015610b43573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b6a9190810190611299565b905080806020019051810190610b8091906111b7565b9392505050565b5f81806020019051810190610b9c91906111b7565b604051632cbf28cb60e21b815290915073__$acbb9ece542dcf2065f41aa3c8cca5827e$__9063b2fca32c90610bd69084906004016110cf565b5f6040518083038186803b158015610bec575f5ffd5b505af4158015610bfe573d5f5f3e3d5ffd5b50505050815181604051602001610c1591906110cf565b6040516020818303038152906040525114610c43576040516350701b6160e01b815260040160405180910390fd5b7fca7f7aa563866a1d31c74deba224724d1da9c35cbb6f783f2ccf0182f91e34f88382604051610c749291906112cb565b60405180910390a17f000000000000000000000000000000000000000000000000000000000000000061069d8382611343565b5f838302815f1985870982811083820303915050805f03610cdb57838281610cd157610cd16113fe565b0492505050610b80565b808411610cf257610cf26003851502601118610e26565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f610d877f0000000000000000000000000000000000000000000000000000000000000000610e37565b610e1c610def610db67f0000000000000000000000000000000000000000000000000000000000000000610e37565b610dc09087611426565b7f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000610ca7565b610df885610ac5565b60200151610e0e90670de0b6b3a764000061143d565b670de0b6b3a7640000610ca7565b610b809190611450565b634e487b715f52806020526024601cfd5b5f816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e98919061146f565b610ea390601261148a565b6102d190600a611586565b60ff811681146106a2575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610ef357610ef3610ebc565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f2257610f22610ebc565b604052919050565b5f67ffffffffffffffff821115610f4357610f43610ebc565b50601f01601f191660200190565b5f82601f830112610f60575f5ffd5b8135610f73610f6e82610f2a565b610ef9565b818152846020838601011115610f87575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610fb4575f5ffd5b8235610fbf81610eae565b9150602083013567ffffffffffffffff811115610fda575f5ffd5b610fe685828601610f51565b9150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b806020830184610ff0565b5f60208284031215611040575f5ffd5b5035919050565b5f60208284031215611057575f5ffd5b81356001600160a01b0381168114610b80575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b5f8151600381106110a057634e487b7160e01b5f52602160045260245ffd5b80845250602082015160208401526040820151606060408501526110c76060850182610ff0565b949350505050565b602081525f610b806020830184611081565b5f602082840312156110f1575f5ffd5b81358015158114610b80575f5ffd5b5f60208284031215611110575f5ffd5b813567ffffffffffffffff811115611126575f5ffd5b6110c784828501610f51565b600181811c9082168061114657607f821691505b60208210810361116457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82601f830112611179575f5ffd5b8151611187610f6e82610f2a565b81815284602083860101111561119b575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156111c7575f5ffd5b815167ffffffffffffffff8111156111dd575f5ffd5b8201606081850312156111ee575f5ffd5b6111f6610ed0565b815160038110611204575f5ffd5b815260208281015190820152604082015167ffffffffffffffff811115611229575f5ffd5b6112358682850161116a565b604083015250949350505050565b5f60208284031215611253575f5ffd5b5051919050565b60a081525f61126c60a0830188611081565b6001600160a01b039687166020840152949095166040820152606081019290925260809091015292915050565b5f602082840312156112a9575f5ffd5b815167ffffffffffffffff8111156112bf575f5ffd5b6110c78482850161116a565b604081525f6112dd6040830185611081565b82810360208401526112ef8185611081565b95945050505050565b601f82111561069f57805f5260205f20601f840160051c8101602085101561131d5750805b601f840160051c820191505b8181101561133c575f8155600101611329565b5050505050565b815167ffffffffffffffff81111561135d5761135d610ebc565b6113718161136b8454611132565b846112f8565b6020601f8211600181146113a3575f831561138c5750848201515b5f19600385901b1c1916600184901b17845561133c565b5f84815260208120601f198516915b828110156113d257878501518255602094850194600190920191016113b2565b50848210156113ef57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176102d1576102d1611412565b818103818111156102d1576102d1611412565b5f8261146a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561147f575f5ffd5b8151610b8081610eae565b60ff82811682821603908111156102d1576102d1611412565b6001815b60018411156114de578085048111156114c2576114c2611412565b60018416156114d057908102905b60019390931c9280026114a7565b935093915050565b5f826114f4575060016102d1565b8161150057505f6102d1565b816001811461151657600281146115205761153c565b60019150506102d1565b60ff84111561153157611531611412565b50506001821b6102d1565b5060208310610133831016604e8410600b841016171561155f575081810a6102d1565b61156b5f1984846114a3565b805f190482111561157e5761157e611412565b029392505050565b5f610b8060ff8416836114e656fea26469706673582212207ba311e6b07b36ff43d36d7b838671ac7a2197dfab146b696d165fca56b2c91d64736f6c634300081c0033","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 0x9C4667A2 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0x9C4667A2 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x9CD47128 EQ PUSH2 0x1BA JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x1CD JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0xDE846AE4 EQ PUSH2 0x1F3 JUMPI DUP1 PUSH4 0xF3E0FFBF EQ PUSH2 0x226 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 0x42B054F0 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x5A117456 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5B9A4C35 EQ PUSH2 0x148 JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA3 JUMP JUMPDEST PUSH2 0x239 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x101E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x2D7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x107 PUSH2 0x101 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST POP PUSH0 NOT SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD5 JUMP JUMPDEST PUSH2 0x128 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0x6A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD5 SWAP2 SWAP1 PUSH2 0x10CF JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x143 CALLDATASIZE PUSH1 0x4 PUSH2 0x10E1 JUMP JUMPDEST PUSH2 0x6C9 JUMP JUMPDEST PUSH2 0x107 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x17D CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 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 0xD5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1100 JUMP JUMPDEST PUSH2 0x7C2 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x83F JUMP JUMPDEST PUSH2 0x107 PUSH2 0x1EE CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x201 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x107 PUSH2 0x234 CALLDATASIZE PUSH1 0x4 PUSH2 0x1047 JUMP JUMPDEST PUSH2 0xA31 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x284 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 0x297 JUMPI PUSH2 0x297 PUSH2 0x106D JUMP JUMPDEST SWAP1 POP PUSH0 DUP2 DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH2 0x2A9 PUSH2 0x106D JUMP JUMPDEST SUB PUSH2 0xB1 JUMPI PUSH2 0x2C0 PUSH2 0x2BA ADDRESS PUSH2 0xAC5 JUMP JUMPDEST DUP5 PUSH2 0xB87 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 0x320 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 0x6A2 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x353 SWAP1 PUSH2 0x1132 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 0x37F SWAP1 PUSH2 0x1132 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3CA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3A1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3CA 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 0x3AD 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 0x3E2 SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x418 PUSH8 0xDE0B6B3A7640000 DUP1 PUSH32 0x0 PUSH2 0xCA7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH2 0x4AB 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 0x481 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 0x4A5 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST ADDRESS PUSH2 0xD5D JUMP JUMPDEST DUP4 LT PUSH2 0x5DF 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 0x555 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 0x579 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x59A SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x5B5 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 0x5D9 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST POP PUSH2 0x69F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x581E517D PUSH1 0xE0 SHL DUP2 MSTORE PUSH20 0x0 SWAP1 PUSH4 0x581E517D SWAP1 PUSH2 0x65E SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x679 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 0x69D SWAP2 SWAP1 PUSH2 0x1243 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 0x2D1 DUP3 PUSH2 0xAC5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x712 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 0x7A4 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 0x77D 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 0x7A1 SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x6A2 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 0x80B 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 0x6A2 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 0xB87 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND ADDRESS SUB PUSH2 0x888 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 0x6A2 JUMPI PUSH0 PUSH32 0x0 DUP1 SLOAD PUSH2 0x8BB SWAP1 PUSH2 0x1132 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 0x8E7 SWAP1 PUSH2 0x1132 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x932 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x909 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x932 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 0x915 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 0x94A SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x77566915 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0x77566915 SWAP1 PUSH2 0x9EC SWAP1 DUP5 SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP9 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x125A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xA07 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 0x69F SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST PUSH0 PUSH2 0x2D1 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 0x2D1 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 0xA9B 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 0xABF SWAP2 SWAP1 PUSH2 0x1243 JUMP JUMPDEST DUP4 PUSH2 0xD5D 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 0xB43 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 0xB6A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1299 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB9C SWAP2 SWAP1 PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2CBF28CB PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0x0 SWAP1 PUSH4 0xB2FCA32C SWAP1 PUSH2 0xBD6 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x10CF JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBEC JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0xBFE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP DUP2 MLOAD DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC15 SWAP2 SWAP1 PUSH2 0x10CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE MLOAD EQ PUSH2 0xC43 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 0xC74 SWAP3 SWAP2 SWAP1 PUSH2 0x12CB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH32 0x0 PUSH2 0x69D DUP4 DUP3 PUSH2 0x1343 JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0xCDB JUMPI DUP4 DUP3 DUP2 PUSH2 0xCD1 JUMPI PUSH2 0xCD1 PUSH2 0x13FE JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xB80 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0xCF2 JUMPI PUSH2 0xCF2 PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0xE26 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xD87 PUSH32 0x0 PUSH2 0xE37 JUMP JUMPDEST PUSH2 0xE1C PUSH2 0xDEF PUSH2 0xDB6 PUSH32 0x0 PUSH2 0xE37 JUMP JUMPDEST PUSH2 0xDC0 SWAP1 DUP8 PUSH2 0x1426 JUMP JUMPDEST PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0xDF8 DUP6 PUSH2 0xAC5 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD PUSH2 0xE0E SWAP1 PUSH8 0xDE0B6B3A7640000 PUSH2 0x143D JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 PUSH2 0xCA7 JUMP JUMPDEST PUSH2 0xB80 SWAP2 SWAP1 PUSH2 0x1450 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 0xE74 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 0xE98 SWAP2 SWAP1 PUSH2 0x146F JUMP JUMPDEST PUSH2 0xEA3 SWAP1 PUSH1 0x12 PUSH2 0x148A JUMP JUMPDEST PUSH2 0x2D1 SWAP1 PUSH1 0xA PUSH2 0x1586 JUMP JUMPDEST PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6A2 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 0xEF3 JUMPI PUSH2 0xEF3 PUSH2 0xEBC 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 0xF22 JUMPI PUSH2 0xF22 PUSH2 0xEBC JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF43 JUMPI PUSH2 0xF43 PUSH2 0xEBC JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF60 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF73 PUSH2 0xF6E DUP3 PUSH2 0xF2A JUMP JUMPDEST PUSH2 0xEF9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0xF87 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 0xFB4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xFBF DUP2 PUSH2 0xEAE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFDA JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0xFE6 DUP6 DUP3 DUP7 ADD PUSH2 0xF51 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 0xB80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xFF0 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1040 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1057 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB80 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 0x10A0 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 0x10C7 PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0xFF0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0xB80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1081 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB80 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1110 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1126 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10C7 DUP5 DUP3 DUP6 ADD PUSH2 0xF51 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1146 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1164 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 0x1179 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1187 PUSH2 0xF6E DUP3 PUSH2 0xF2A JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x119B 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 0x11C7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11DD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x11EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x11F6 PUSH2 0xED0 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x1204 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 0x1229 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1235 DUP7 DUP3 DUP6 ADD PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1253 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA0 DUP2 MSTORE PUSH0 PUSH2 0x126C PUSH1 0xA0 DUP4 ADD DUP9 PUSH2 0x1081 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 0x12A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x10C7 DUP5 DUP3 DUP6 ADD PUSH2 0x116A JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x12DD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1081 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x12EF DUP2 DUP6 PUSH2 0x1081 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x69F JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x131D JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x133C JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1329 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x135D JUMPI PUSH2 0x135D PUSH2 0xEBC JUMP JUMPDEST PUSH2 0x1371 DUP2 PUSH2 0x136B DUP5 SLOAD PUSH2 0x1132 JUMP JUMPDEST DUP5 PUSH2 0x12F8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x13A3 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x138C 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 0x133C JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x13D2 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x13B2 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x13EF 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 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT 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 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x146A 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 0x147F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB80 DUP2 PUSH2 0xEAE JUMP JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x2D1 JUMPI PUSH2 0x2D1 PUSH2 0x1412 JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x14DE JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x14C2 JUMPI PUSH2 0x14C2 PUSH2 0x1412 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x14D0 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x14A7 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x14F4 JUMPI POP PUSH1 0x1 PUSH2 0x2D1 JUMP JUMPDEST DUP2 PUSH2 0x1500 JUMPI POP PUSH0 PUSH2 0x2D1 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x1516 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x1520 JUMPI PUSH2 0x153C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x2D1 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x1531 JUMPI PUSH2 0x1531 PUSH2 0x1412 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x2D1 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x155F JUMPI POP DUP2 DUP2 EXP PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x156B PUSH0 NOT DUP5 DUP5 PUSH2 0x14A3 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x157E JUMPI PUSH2 0x157E PUSH2 0x1412 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xB80 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x14E6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xA311E6B07B36FF43D36D7B838671AC7A2197DFAB146B696D165FCA56 0xB2 0xC9 SAR PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"857:7681:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7149:849;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5004:974;;;;;;:::i;:::-;;:::i;:::-;;3291:194;;;;;;:::i;:::-;-1:-1:-1;;;3394:17:58;3291:194;;;;3078:25:75;;;3066:2;3051:18;3291:194:58;2932:177:75;8399:137:58;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2843:176::-;;;;;;:::i;:::-;;:::i;1055:81::-;;;;;3523:104;;;;;;:::i;:::-;-1:-1:-1;3615:6:58;;3523:104;;;;-1:-1:-1;;;;;4624:32:75;;;4606:51;;4594:2;4579:18;3523:104:58;4460:203:75;2616:189:58;;;;;;:::i;:::-;;:::i;6184:445::-;;;;;;:::i;:::-;;:::i;3057:196::-;;;;;;:::i;:::-;;:::i;3712:99::-;;;;;;:::i;:::-;-1:-1:-1;3793:12:58;;3712:99;4627:172;;;;;;:::i;:::-;;:::i;7149:849::-;7243:12;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;7263:28:::1;7294:22;::::0;::::1;::::0;;::::1;;;;:::i;:::-;7263:53:::0;-1:-1:-1;7343:28:58::1;7326:13:::0;:45;;::::1;;;;:::i;:::-;::::0;7322:648:::1;;7650:53;7665:29;7688:4;7665:14;:29::i;:::-;7696:6;7650:14;:53::i;:::-;-1:-1:-1::0;;7984:9:58::1;::::0;;::::1;::::0;::::1;::::0;;;-1:-1:-1;7984:9:58;;1740:1:::1;7149:849:::0;;;;:::o;5004:974::-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;5082:24;;5099:7:::1;5082:24;5111:40;5197:11;5154:99:::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5111:142;;5367:13;5383:29;994:4;::::0;5405:6:::1;5383:11;:29::i;:::-;5486:37;::::0;-1:-1:-1;;;5486:37:58;;5517:4:::1;5486:37;::::0;::::1;4606:51:75::0;5367:45:58;;-1:-1:-1;5471:68:58::1;::::0;-1:-1:-1;;;;;5486:12:58::1;:22;::::0;::::1;::::0;4579:18:75;;5486:37:58::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5533:4;5471:14;:68::i;:::-;5461:6;:78;5457:517;;5824:37;::::0;-1:-1:-1;;;5824:37:58;;5855:4:::1;5824:37;::::0;::::1;4606:51:75::0;5762:21:58::1;::::0;::::1;::::0;:10;;5792:12:::1;::::0;5815:6:::1;::::0;-1:-1:-1;;;;;5824:22:58;::::1;::::0;::::1;::::0;4579:18:75;;5824:37:58::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5863:5;5762:107;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5457:517;;;5890:77;::::0;-1:-1:-1;;;5890:77:58;;:22:::1;::::0;::::1;::::0;:77:::1;::::0;:10;;5921:12:::1;::::0;5944:6:::1;::::0;5953;;5961:5;;5890:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5457:517;5076:902;;1740:1;5004:974:::0;:::o;8399:137::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8506:25:58;8521:9;8506:14;:25::i;2843:176::-;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;2926:5:::1;2925:6;:52;;;;-1:-1:-1::0;2935:37:58::1;::::0;-1:-1:-1;;;2935:37:58;;2966:4:::1;2935:37;::::0;::::1;4606:51:75::0;2935:12:58::1;-1:-1:-1::0;;;;;2935:22:58::1;::::0;::::1;::::0;4579:18:75;;2935:37:58::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42:::0;::::1;2925:52;2921:93;;;2986:28;;-1:-1:-1::0;;;2986:28:58::1;;;;;;;;;;;2616:189:::0;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;2717::::1;::::0;;::::1;::::0;::::1;::::0;;;2702:98:::1;::::0;2717:72;-1:-1:-1;2717:72:58::1;;;;2776:1;2717:72;;;;2779:9;;;;;;;;;;;::::0;2717:72:::1;;::::0;2791:8:::1;2702:14;:98::i;6184:445::-:0;-1:-1:-1;;;;;1683:6:58;1666:23;1674:4;1666:23;1662:72;;1698:36;;-1:-1:-1;;;1698:36:58;;;;;;;;;;;1662:72;6261:24;;6278:7:::1;6261:24;6290:40;6376:11;6333:99:::0;;::::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6547:77;::::0;-1:-1:-1;;;6547:77:58;;6290:142;;-1:-1:-1;6547:21:58::1;::::0;::::1;::::0;:77:::1;::::0;6290:142;;6577:6:::1;::::0;6594:12:::1;::::0;6609:6;;6617::::1;::::0;6547:77:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3057:196::-:0;3135:7;3157:22;3169:9;4627:172;4749:33;;-1:-1:-1;;;4749:33:58;;-1:-1:-1;;;;;4624:32:75;;;4749:33:58;;;4606:51:75;4705:14:58;;4734:60;;4749:12;:22;;;;4579:18:75;;4749:33:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4784:9;4734:14;:60::i;8002:260::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;8138:51:58;;-1:-1:-1;;;8138:51:58;;8177:11;8138:51;;;3078:25:75;8105:30:58;;-1:-1:-1;;;;;8138:38:58;;;;;3051:18:75;;8138:51:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8138:51:58;;;;;;;;;;;;:::i;:::-;8105:84;;8213:17;8202:55;;;;;;;;;;;;:::i;:::-;8195:62;8002:260;-1:-1:-1;;;8002:260:58:o;6633:478::-;6752:40;6806:20;6795:58;;;;;;;;;;;;:::i;:::-;6859:21;;-1:-1:-1;;;6859:21:58;;6752:101;;-1:-1:-1;6859:19:58;;;;:21;;6752:101;;6859:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6923:20;:27;6901:10;6890:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;:29;:60;6886:93;;6959:20;;-1:-1:-1;;;6959:20:58;;;;;;;;;;;6886:93;6990:44;7008:13;7023:10;6990:44;;;;;;;:::i;:::-;;;;;;;;7065:11;7040:66;7086:20;7065:11;7040:66;:::i;4996:4226:42:-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::o;4268:321:58:-;4364:14;4564:20;4577:6;4564:12;:20::i;:::-;4399:162;4420:67;4447:26;4460:12;4447;:26::i;:::-;4432:41;;:12;:41;:::i;:::-;4475:6;994:4;4420:11;:67::i;:::-;4503:25;4518:9;4503:14;:25::i;:::-;:37;;;4497:43;;994:4;4497:43;:::i;:::-;994:4;4399:11;:162::i;:::-;:185;;;;:::i;1776:194:38:-;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;2455:123:58;2522:7;2556:5;-1:-1:-1;;;;;2556:14:58;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2551:21;;:2;:21;:::i;:::-;2544:29;;:2;:29;:::i;14:114:75:-;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:75;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:75:o;803:186::-;851:4;884:18;876:6;873:30;870:56;;;906:18;;:::i;:::-;-1:-1:-1;972:2:75;951:15;-1:-1:-1;;947:29:75;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:75: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:75;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;2456:180::-;2515:6;2568:2;2556:9;2547:7;2543:23;2539:32;2536:52;;;2584:1;2581;2574:12;2536:52;-1:-1:-1;2607:23:75;;2456:180;-1:-1:-1;2456:180:75:o;2641:286::-;2700:6;2753:2;2741:9;2732:7;2728:23;2724:32;2721:52;;;2769:1;2766;2759:12;2721:52;2795:23;;-1:-1:-1;;;;;2847:31:75;;2837:42;;2827:70;;2893:1;2890;2883: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:75:o;3730:265::-;3913:2;3902:9;3895:21;3876:4;3933:56;3985:2;3974:9;3970:18;3962:6;3933:56;:::i;4000:273::-;4056:6;4109:2;4097:9;4088:7;4084:23;4080:32;4077:52;;;4125:1;4122;4115:12;4077:52;4164:9;4151:23;4217:5;4210:13;4203:21;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4668:320;4736:6;4789:2;4777:9;4768:7;4764:23;4760:32;4757:52;;;4805:1;4802;4795:12;4757:52;4845:9;4832:23;4878:18;4870:6;4867:30;4864:50;;;4910:1;4907;4900:12;4864:50;4933:49;4974:7;4965:6;4954:9;4950:22;4933:49;:::i;4993:380::-;5072:1;5068:12;;;;5115;;;5136:61;;5190:4;5182:6;5178:17;5168:27;;5136:61;5243:2;5235:6;5232:14;5212:18;5209:38;5206:161;;5289:10;5284:3;5280:20;5277:1;5270:31;5324:4;5321:1;5314:15;5352:4;5349:1;5342:15;5206:161;;4993:380;;;:::o;5378:483::-;5431:5;5484:3;5477:4;5469:6;5465:17;5461:27;5451:55;;5502:1;5499;5492:12;5451:55;5535:6;5529:13;5566:52;5582:35;5610:6;5582:35;:::i;5566:52::-;5643:6;5634:7;5627:23;5697:3;5690:4;5681:6;5673;5669:19;5665:30;5662:39;5659:59;;;5714:1;5711;5704:12;5659:59;5772:6;5765:4;5757:6;5753:17;5746:4;5737:7;5733:18;5727:52;5828:1;5799:20;;;5821:4;5795:31;5788:42;;;;5803:7;5378:483;-1:-1:-1;;;5378:483:75:o;5866:849::-;5963:6;6016:2;6004:9;5995:7;5991:23;5987:32;5984:52;;;6032:1;6029;6022:12;5984:52;6065:9;6059:16;6098:18;6090:6;6087:30;6084:50;;;6130:1;6127;6120:12;6084:50;6153:22;;6209:4;6191:16;;;6187:27;6184:47;;;6227:1;6224;6217:12;6184:47;6253:22;;:::i;:::-;6305:2;6299:9;6339:1;6330:7;6327:14;6317:42;;6355:1;6352;6345:12;6317:42;6368:22;;6449:2;6441:11;;;6435:18;6469:14;;;6462:31;6532:2;6524:11;;6518:18;6561;6548:32;;6545:52;;;6593:1;6590;6583:12;6545:52;6629:55;6676:7;6665:8;6661:2;6657:17;6629:55;:::i;:::-;6624:2;6613:14;;6606:79;-1:-1:-1;6617:5:75;5866:849;-1:-1:-1;;;;5866:849:75:o;6720:230::-;6790:6;6843:2;6831:9;6822:7;6818:23;6814:32;6811:52;;;6859:1;6856;6849:12;6811:52;-1:-1:-1;6904:16:75;;6720:230;-1:-1:-1;6720:230:75:o;6955:612::-;7258:3;7247:9;7240:22;7221:4;7279:57;7331:3;7320:9;7316:19;7308:6;7279:57;:::i;:::-;-1:-1:-1;;;;;7372:32:75;;;7367:2;7352:18;;7345:60;7441:32;;;;7436:2;7421:18;;7414:60;7505:2;7490:18;;7483:34;;;;7548:3;7533:19;;;7526:35;7271:65;6955:612;-1:-1:-1;;6955:612:75:o;7572:335::-;7651:6;7704:2;7692:9;7683:7;7679:23;7675:32;7672:52;;;7720:1;7717;7710:12;7672:52;7753:9;7747:16;7786:18;7778:6;7775:30;7772:50;;;7818:1;7815;7808:12;7772:50;7841:60;7893:7;7884:6;7873:9;7869:22;7841:60;:::i;8190:473::-;8455:2;8444:9;8437:21;8418:4;8481:56;8533:2;8522:9;8518:18;8510:6;8481:56;:::i;:::-;8585:9;8577:6;8573:22;8568:2;8557:9;8553:18;8546:50;8613:44;8650:6;8642;8613:44;:::i;:::-;8605:52;8190:473;-1:-1:-1;;;;;8190:473:75:o;8793:517::-;8894:2;8889:3;8886:11;8883:421;;;8930:5;8927:1;8920:16;8974:4;8971:1;8961:18;9044:2;9032:10;9028:19;9025:1;9021:27;9015:4;9011:38;9080:4;9068:10;9065:20;9062:47;;;-1:-1:-1;9103:4:75;9062:47;9158:2;9153:3;9149:12;9146:1;9142:20;9136:4;9132:31;9122:41;;9213:81;9231:2;9224:5;9221:13;9213:81;;;9290:1;9276:16;;9257:1;9246:13;9213:81;;;9217:3;;8793:517;;;:::o;9486:1295::-;9610:3;9604:10;9637:18;9629:6;9626:30;9623:56;;;9659:18;;:::i;:::-;9688:96;9777:6;9737:38;9769:4;9763:11;9737:38;:::i;:::-;9731:4;9688:96;:::i;:::-;9833:4;9864:2;9853:14;;9881:1;9876:648;;;;10568:1;10585:6;10582:89;;;-1:-1:-1;10637:19:75;;;10631:26;10582:89;-1:-1:-1;;9443:1:75;9439:11;;;9435:24;9431:29;9421:40;9467:1;9463:11;;;9418:57;10684:81;;9846:929;;9876:648;8740:1;8733:14;;;8777:4;8764:18;;-1:-1:-1;;9912:20:75;;;10029:222;10043:7;10040:1;10037:14;10029:222;;;10125:19;;;10119:26;10104:42;;10232:4;10217:20;;;;10185:1;10173:14;;;;10059:12;10029:222;;;10033:3;10279:6;10270:7;10267:19;10264:201;;;10340:19;;;10334:26;-1:-1:-1;;10423:1:75;10419:14;;;10435:3;10415:24;10411:37;10407:42;10392:58;10377:74;;10264:201;-1:-1:-1;;;;10511:1:75;10495:14;;;10491:22;10478:36;;-1:-1:-1;9486:1295:75:o;10786:127::-;10847:10;10842:3;10838:20;10835:1;10828:31;10878:4;10875:1;10868:15;10902:4;10899:1;10892:15;10918:127;10979:10;10974:3;10970:20;10967:1;10960:31;11010:4;11007:1;11000:15;11034:4;11031:1;11024:15;11050:168;11123:9;;;11154;;11171:15;;;11165:22;;11151:37;11141:71;;11192:18;;:::i;11223:128::-;11290:9;;;11311:11;;;11308:37;;;11325:18;;:::i;11356:217::-;11396:1;11422;11412:132;;11466:10;11461:3;11457:20;11454:1;11447:31;11501:4;11498:1;11491:15;11529:4;11526:1;11519:15;11412:132;-1:-1:-1;11558:9:75;;11356:217::o;11578:247::-;11646:6;11699:2;11687:9;11678:7;11674:23;11670:32;11667:52;;;11715:1;11712;11705:12;11667:52;11747:9;11741:16;11766:29;11789:5;11766:29;:::i;11830:151::-;11920:4;11913:12;;;11899;;;11895:31;;11938:14;;11935:40;;;11955:18;;:::i;11986:375::-;12074:1;12092:5;12106:249;12127:1;12117:8;12114:15;12106:249;;;12177:4;12172:3;12168:14;12162:4;12159:24;12156:50;;;12186:18;;:::i;:::-;12236:1;12226:8;12222:16;12219:49;;;12250:16;;;;12219:49;12333:1;12329:16;;;;;12289:15;;12106:249;;;11986:375;;;;;;:::o;12366:902::-;12415:5;12445:8;12435:80;;-1:-1:-1;12486:1:75;12500:5;;12435:80;12534:4;12524:76;;-1:-1:-1;12571:1:75;12585:5;;12524:76;12616:4;12634:1;12629:59;;;;12702:1;12697:174;;;;12609:262;;12629:59;12659:1;12650:10;;12673:5;;;12697:174;12734:3;12724:8;12721:17;12718:43;;;12741:18;;:::i;:::-;-1:-1:-1;;12797:1:75;12783:16;;12856:5;;12609:262;;12955:2;12945:8;12942:16;12936:3;12930:4;12927:13;12923:36;12917:2;12907:8;12904:16;12899:2;12893:4;12890:12;12886:35;12883:77;12880:203;;;-1:-1:-1;12992:19:75;;;13068:5;;12880:203;13115:42;-1:-1:-1;;13140:8:75;13134:4;13115:42;:::i;:::-;13193:6;13189:1;13185:6;13181:19;13172:7;13169:32;13166:58;;;13204:18;;:::i;:::-;13242:20;;12366:902;-1:-1:-1;;;12366:902:75:o;13273:140::-;13331:5;13360:47;13401:4;13391:8;13387:19;13381:4;13360: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","maxDeposit(address)":"402d267d","maxWithdraw(address)":"ce96cb77","storageSlot()":"5b9a4c35","totalAssets(address)":"f3e0ffbf","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":[{\"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.\"},\"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\":\"SwapStableInvestStrategy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SwapStableInvestStrategy.sol\":\"SwapStableInvestStrategy\"},\"evmVersion\":\"cancun\",\"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\":\"0x00c23b80f74717a6765b606001c5c633116020d488ee8f53600685b8200e4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73d0bd5ff47377a97d52149a805d82112f88c9f4ae853ef246a536bd31ce1da\",\"dweb:/ipfs/QmagG3Yup65JQPSMZScubYTCeyuUyvKLxBM3X1er6xWWxf\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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/SwapStableInvestStrategy.sol\":{\"keccak256\":\"0xb5ca90263f09d3853c78aa67987019025a68ca5b84000e2da5b7f1fc367eb675\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://8efe725022d604f5ea9d766822cb4aa854d051b5d15c3aeb09e2d238325bcb09\",\"dweb:/ipfs/QmXvRSuKhijr8scEfGbWe7ETsADJwi4iPYwJc3LwQmfHhz\"]},\"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\"]},\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/dependencies/aave-v3/DataTypes.sol":{"DataTypes":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bbc9d5c42f5a5786bdc7ec5dd29b9dff611683c975760f96a4f14047b60d020464736f6c634300081c0033","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 0xBB 0xC9 0xD5 0xC4 0x2F GAS JUMPI DUP7 0xBD 0xC7 0xEC TSTORE 0xD2 SWAP12 SWAP14 SELFDESTRUCT PUSH2 0x1683 0xC9 PUSH22 0x760F96A4F14047B60D020464736F6C634300081C0033 ","sourceMap":"62:7306:59:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;62:7306:59;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220bbc9d5c42f5a5786bdc7ec5dd29b9dff611683c975760f96a4f14047b60d020464736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xC9 0xD5 0xC4 0x2F GAS JUMPI DUP7 0xBD 0xC7 0xEC TSTORE 0xD2 SWAP12 SWAP14 SELFDESTRUCT PUSH2 0x1683 0xC9 PUSH22 0x760F96A4F14047B60D020464736F6C634300081C0033 ","sourceMap":"62:7306:59:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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":"6110fe610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106104e8575f3560e01c80638aa3ca4c1161028f578063bad8308c1161016c578063dd1dd95f116100e0578063f07f67851161009a578063f07f678514610fcd578063f10727db14610fee578063f479ea111461100f578063fa163a8314611030578063fae8279114611051578063fd1828ff14611072575f5ffd5b8063dd1dd95f14610f08578063de24948c14610f29578063e02f07ee14610f4a578063e3fa20f514610f6a578063e4dd8b7414610f8b578063e981483a14610fac575f5ffd5b8063d14bb17a11610131578063d14bb17a14610e42578063d1cd8b1d14610e63578063d6f9fcde14610e84578063d9adda8514610ea5578063dc191bd914610ec6578063dcc56db614610ee7575f5ffd5b8063bad8308c14610d9d578063c08a114614610dbe578063c863808214610ddf578063c899301a14610e00578063cd23367c14610e21575f5ffd5b8063a4868dca11610203578063b0510054116101c8578063b051005414610cd8578063b4a4573014610cf9578063b5e7936614610d1a578063b68774e914610d3a578063b7f5e22414610d5b578063b87041c214610d7c575f5ffd5b8063a4868dca14610c34578063a8c9785314610c55578063ab883ca014610c76578063abd351b114610c97578063ac75323614610cb8575f5ffd5b8063952633c511610254578063952633c514610b6e5780639527e9d914610b8f57806399ce53f314610bb0578063a2797c8014610bd1578063a2e976c614610bf2578063a3402a3814610c13575f5ffd5b80638aa3ca4c14610ac95780638b8b98d714610aea5780638eda46bd14610b0b5780638f7722b214610b2c57806394f9fd8a14610b4d575f5ffd5b80634e3aed37116103c85780636cd3cfbc1161033c5780637aa0767e116102f65780637aa0767e14610a035780637fea6f3614610a245780638596aad514610a45578063895f7dc814610a6657806389c5d45f14610a875780638a34400014610aa8575f5ffd5b80636cd3cfbc1461093d578063712f536a1461095e57806373dea5e31461097f57806374459b14146109a0578063747fa556146109c157806376ae8fca146109e2575f5ffd5b80635d9c76c01161038d5780635d9c76c01461087857806360c3de801461089957806361c111d2146108b957806365a83bab146108da57806365e7ef4c146108fb5780636b3f7cc71461091c575f5ffd5b80634e3aed37146107d45780634ef999ff146107f55780634f77647b14610816578063512674501461083657806352ba9dbe14610857575f5ffd5b80632eed17e81161045f57806347ba93d81161042457806347ba93d81461070f57806347cf152314610730578063480702ae14610751578063485c8ff6146107725780634d86f393146107925780634e01e3c1146107b3575f5ffd5b80632eed17e81461066a578063335763de1461068b578063366eb54d146106ac57806337930782146106cd578063471df685146106ee575f5ffd5b80631abbb001116104b05780631abbb001146105a657806322a73446146105c757806326bbd053146105e857806326e7b312146106095780632926c971146106295780632c8e3b4c1461064a575f5ffd5b8063084dfa0d146104ec57806311d7b0061461052357806312dcade81461054357806314dcfbbc14610564578063198d6a6b14610585575b5f5ffd5b61050d60405180604001604052806002815260200161062760f31b81525081565b60405161051a9190611093565b60405180910390f35b61050d604051806040016040528060018152602001603960f81b81525081565b61050d604051806040016040528060028152602001610c4d60f21b81525081565b61050d604051806040016040528060028152602001611c1b60f11b81525081565b61050d60405180604001604052806002815260200161070760f31b81525081565b61050d60405180604001604052806002815260200161383760f01b81525081565b61050d60405180604001604052806002815260200161343760f01b81525081565b61050d60405180604001604052806002815260200161363960f01b81525081565b61050d604051806040016040528060018152602001603360f81b81525081565b61050d604051806040016040528060028152602001610d0d60f21b81525081565b61050d604051806040016040528060018152602001603560f81b81525081565b61050d60405180604001604052806002815260200161035360f41b81525081565b61050d60405180604001604052806002815260200161032360f41b81525081565b61050d60405180604001604052806002815260200161333560f01b81525081565b61050d60405180604001604052806002815260200161189960f11b81525081565b61050d60405180604001604052806002815260200161323360f01b81525081565b61050d604051806040016040528060028152602001611b9960f11b81525081565b61050d60405180604001604052806002815260200161323160f01b81525081565b61050d604051806040016040528060028152602001611b1960f11b81525081565b61050d604051806040016040528060018152602001601960f91b81525081565b61050d60405180604001604052806002815260200161333160f01b81525081565b61050d604051806040016040528060028152602001610ccd60f21b81525081565b61050d60405180604001604052806002815260200161383360f01b81525081565b61050d60405180604001604052806002815260200161033360f41b81525081565b61050d604051806040016040528060018152602001601b60f91b81525081565b61050d60405180604001604052806002815260200161323560f01b81525081565b61050d60405180604001604052806002815260200161323760f01b81525081565b61050d60405180604001604052806002815260200161313760f01b81525081565b61050d604051806040016040528060018152602001600760fb1b81525081565b61050d60405180604001604052806002815260200161031360f41b81525081565b61050d60405180604001604052806002815260200161353360f01b81525081565b61050d60405180604001604052806002815260200161353560f01b81525081565b61050d604051806040016040528060028152602001611a9960f11b81525081565b61050d60405180604001604052806002815260200161064760f31b81525081565b61050d60405180604001604052806002815260200161034360f41b81525081565b61050d60405180604001604052806002815260200161343960f01b81525081565b61050d60405180604001604052806002815260200161343160f01b81525081565b61050d60405180604001604052806002815260200161313960f01b81525081565b61050d60405180604001604052806002815260200161313560f01b81525081565b61050d60405180604001604052806002815260200161191960f11b81525081565b61050d60405180604001604052806002815260200161313360f01b81525081565b61050d60405180604001604052806002815260200161036360f41b81525081565b61050d604051806040016040528060028152602001611a1b60f11b81525081565b61050d60405180604001604052806002815260200161333360f01b81525081565b61050d60405180604001604052806002815260200161333760f01b81525081565b61050d60405180604001604052806002815260200161393160f01b81525081565b61050d60405180604001604052806002815260200161038360f41b81525081565b61050d60405180604001604052806002815260200161037360f41b81525081565b61050d6040518060400160405280600281526020016106a760f31b81525081565b61050d604051806040016040528060028152602001610d4d60f21b81525081565b61050d60405180604001604052806002815260200161343560f01b81525081565b61050d60405180604001604052806002815260200161363560f01b81525081565b61050d60405180604001604052806002815260200161363360f01b81525081565b61050d60405180604001604052806002815260200161343360f01b81525081565b61050d60405180604001604052806002815260200161313160f01b81525081565b61050d60405180604001604052806002815260200161373960f01b81525081565b61050d60405180604001604052806002815260200161363760f01b81525081565b61050d60405180604001604052806002815260200161373160f01b81525081565b61050d60405180604001604052806002815260200161383560f01b81525081565b61050d604051806040016040528060028152602001610c8d60f21b81525081565b61050d604051806040016040528060018152602001603160f81b81525081565b61050d60405180604001604052806002815260200161353160f01b81525081565b61050d604051806040016040528060028152602001611a1960f11b81525081565b61050d604051806040016040528060018152602001600d60fa1b81525081565b61050d60405180604001604052806002815260200161323960f01b81525081565b61050d60405180604001604052806002815260200161199960f11b81525081565b61050d60405180604001604052806002815260200161353760f01b81525081565b61050d604051806040016040528060028152602001611b9b60f11b81525081565b61050d6040518060400160405280600281526020016106e760f31b81525081565b61050d60405180604001604052806002815260200161353960f01b81525081565b61050d604051806040016040528060028152602001610e0d60f21b81525081565b61050d604051806040016040528060028152602001611c1960f11b81525081565b61050d60405180604001604052806002815260200161373760f01b81525081565b61050d604051806040016040528060028152602001610dcd60f21b81525081565b61050d6040518060400160405280600281526020016106c760f31b81525081565b61050d60405180604001604052806002815260200161363160f01b81525081565b61050d60405180604001604052806002815260200161333960f01b81525081565b61050d60405180604001604052806002815260200161373360f01b81525081565b61050d604051806040016040528060028152602001610d8d60f21b81525081565b61050d60405180604001604052806002815260200161383960f01b81525081565b61050d604051806040016040528060018152602001603760f81b81525081565b61050d60405180604001604052806002815260200161199b60f11b81525081565b61050d60405180604001604052806002815260200161383160f01b81525081565b61050d60405180604001604052806002815260200161039360f41b81525081565b61050d60405180604001604052806002815260200161066760f31b81525081565b61050d604051806040016040528060028152602001611a9b60f11b81525081565b61050d60405180604001604052806002815260200161189b60f11b81525081565b61050d604051806040016040528060028152602001611b1b60f11b81525081565b61050d60405180604001604052806002815260200161191b60f11b81525081565b61050d60405180604001604052806002815260200161373560f01b81525081565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea26469706673582212206cb3ff64fc0f9d58478d3d9040ab94ba5ff9ceb8ada10fcc9580f13c790f4c4964736f6c634300081c0033","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 PUSH13 0xB3FF64FC0F9D58478D3D9040AB SWAP5 0xBA PUSH0 0xF9 0xCE 0xB8 0xAD LOG1 0xF 0xCC SWAP6 DUP1 CALL EXTCODECOPY PUSH26 0xF4C4964736F6C634300081C0033000000000000000000000000 ","sourceMap":"205:9704:60:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;205:9704:60;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@ACL_ADMIN_CANNOT_BE_ZERO_20018":{"entryPoint":null,"id":20018,"parameterSlots":0,"returnSlots":0},"@ADDRESSES_PROVIDER_ALREADY_ADDED_20051":{"entryPoint":null,"id":20051,"parameterSlots":0,"returnSlots":0},"@ADDRESSES_PROVIDER_NOT_REGISTERED_19817":{"entryPoint":null,"id":19817,"parameterSlots":0,"returnSlots":0},"@AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE_19910":{"entryPoint":null,"id":19910,"parameterSlots":0,"returnSlots":0},"@ASSET_NOT_BORROWABLE_IN_ISOLATION_19973":{"entryPoint":null,"id":19973,"parameterSlots":0,"returnSlots":0},"@ASSET_NOT_LISTED_20039":{"entryPoint":null,"id":20039,"parameterSlots":0,"returnSlots":0},"@BORROWING_NOT_ENABLED_19886":{"entryPoint":null,"id":19886,"parameterSlots":0,"returnSlots":0},"@BORROW_CAP_EXCEEDED_19943":{"entryPoint":null,"id":19943,"parameterSlots":0,"returnSlots":0},"@BRIDGE_PROTOCOL_FEE_INVALID_19862":{"entryPoint":null,"id":19862,"parameterSlots":0,"returnSlots":0},"@CALLER_MUST_BE_POOL_19865":{"entryPoint":null,"id":19865,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN_19811":{"entryPoint":null,"id":19811,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_ATOKEN_19829":{"entryPoint":null,"id":19829,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_BRIDGE_19814":{"entryPoint":null,"id":19814,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_EMERGENCY_ADMIN_19802":{"entryPoint":null,"id":19802,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_ADMIN_19799":{"entryPoint":null,"id":19799,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_CONFIGURATOR_19826":{"entryPoint":null,"id":19826,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_POOL_OR_EMERGENCY_ADMIN_19805":{"entryPoint":null,"id":19805,"parameterSlots":0,"returnSlots":0},"@CALLER_NOT_RISK_OR_POOL_ADMIN_19808":{"entryPoint":null,"id":19808,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_BALANCE_IS_ZERO_19898":{"entryPoint":null,"id":19898,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_CANNOT_BE_LIQUIDATED_19934":{"entryPoint":null,"id":19934,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_CANNOT_COVER_NEW_BORROW_19904":{"entryPoint":null,"id":19904,"parameterSlots":0,"returnSlots":0},"@COLLATERAL_SAME_AS_BORROWING_CURRENCY_19907":{"entryPoint":null,"id":19907,"parameterSlots":0,"returnSlots":0},"@DEBT_CEILING_EXCEEDED_19952":{"entryPoint":null,"id":19952,"parameterSlots":0,"returnSlots":0},"@DEBT_CEILING_NOT_ZERO_20036":{"entryPoint":null,"id":20036,"parameterSlots":0,"returnSlots":0},"@EMODE_CATEGORY_RESERVED_19844":{"entryPoint":null,"id":19844,"parameterSlots":0,"returnSlots":0},"@FLASHLOAN_DISABLED_20066":{"entryPoint":null,"id":20066,"parameterSlots":0,"returnSlots":0},"@FLASHLOAN_PREMIUM_INVALID_19853":{"entryPoint":null,"id":19853,"parameterSlots":0,"returnSlots":0},"@HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD_19901":{"entryPoint":null,"id":19901,"parameterSlots":0,"returnSlots":0},"@HEALTH_FACTOR_NOT_BELOW_THRESHOLD_19931":{"entryPoint":null,"id":19931,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_EMODE_CATEGORY_19967":{"entryPoint":null,"id":19967,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_FLASHLOAN_PARAMS_19940":{"entryPoint":null,"id":19940,"parameterSlots":0,"returnSlots":0},"@INCONSISTENT_PARAMS_LENGTH_20021":{"entryPoint":null,"id":20021,"parameterSlots":0,"returnSlots":0},"@INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET_19928":{"entryPoint":null,"id":19928,"parameterSlots":0,"returnSlots":0},"@INVALID_ADDRESSES_PROVIDER_19832":{"entryPoint":null,"id":19832,"parameterSlots":0,"returnSlots":0},"@INVALID_ADDRESSES_PROVIDER_ID_19820":{"entryPoint":null,"id":19820,"parameterSlots":0,"returnSlots":0},"@INVALID_AMOUNT_19874":{"entryPoint":null,"id":19874,"parameterSlots":0,"returnSlots":0},"@INVALID_BORROW_CAP_19997":{"entryPoint":null,"id":19997,"parameterSlots":0,"returnSlots":0},"@INVALID_BURN_AMOUNT_19871":{"entryPoint":null,"id":19871,"parameterSlots":0,"returnSlots":0},"@INVALID_DEBT_CEILING_20012":{"entryPoint":null,"id":20012,"parameterSlots":0,"returnSlots":0},"@INVALID_DECIMALS_19991":{"entryPoint":null,"id":19991,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_20006":{"entryPoint":null,"id":20006,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_ASSIGNMENT_19847":{"entryPoint":null,"id":19847,"parameterSlots":0,"returnSlots":0},"@INVALID_EMODE_CATEGORY_PARAMS_19859":{"entryPoint":null,"id":19859,"parameterSlots":0,"returnSlots":0},"@INVALID_EXPIRATION_20027":{"entryPoint":null,"id":20027,"parameterSlots":0,"returnSlots":0},"@INVALID_FLASHLOAN_EXECUTOR_RETURN_19835":{"entryPoint":null,"id":19835,"parameterSlots":0,"returnSlots":0},"@INVALID_INTEREST_RATE_MODE_SELECTED_19895":{"entryPoint":null,"id":19895,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQUIDATION_PROTOCOL_FEE_20003":{"entryPoint":null,"id":20003,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQ_BONUS_19988":{"entryPoint":null,"id":19988,"parameterSlots":0,"returnSlots":0},"@INVALID_LIQ_THRESHOLD_19985":{"entryPoint":null,"id":19985,"parameterSlots":0,"returnSlots":0},"@INVALID_LTV_19982":{"entryPoint":null,"id":19982,"parameterSlots":0,"returnSlots":0},"@INVALID_MINT_AMOUNT_19868":{"entryPoint":null,"id":19868,"parameterSlots":0,"returnSlots":0},"@INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO_20045":{"entryPoint":null,"id":20045,"parameterSlots":0,"returnSlots":0},"@INVALID_OPTIMAL_USAGE_RATIO_20042":{"entryPoint":null,"id":20042,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_FACTOR_19994":{"entryPoint":null,"id":19994,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_INDEX_20015":{"entryPoint":null,"id":20015,"parameterSlots":0,"returnSlots":0},"@INVALID_RESERVE_PARAMS_19856":{"entryPoint":null,"id":19856,"parameterSlots":0,"returnSlots":0},"@INVALID_SIGNATURE_20030":{"entryPoint":null,"id":20030,"parameterSlots":0,"returnSlots":0},"@INVALID_SUPPLY_CAP_20000":{"entryPoint":null,"id":20000,"parameterSlots":0,"returnSlots":0},"@INVALID_UNBACKED_MINT_CAP_20009":{"entryPoint":null,"id":20009,"parameterSlots":0,"returnSlots":0},"@LTV_VALIDATION_FAILED_19964":{"entryPoint":null,"id":19964,"parameterSlots":0,"returnSlots":0},"@NOT_CONTRACT_19823":{"entryPoint":null,"id":19823,"parameterSlots":0,"returnSlots":0},"@NOT_ENOUGH_AVAILABLE_USER_BALANCE_19892":{"entryPoint":null,"id":19892,"parameterSlots":0,"returnSlots":0},"@NO_DEBT_OF_SELECTED_TYPE_19913":{"entryPoint":null,"id":19913,"parameterSlots":0,"returnSlots":0},"@NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF_19916":{"entryPoint":null,"id":19916,"parameterSlots":0,"returnSlots":0},"@NO_MORE_RESERVES_ALLOWED_19841":{"entryPoint":null,"id":19841,"parameterSlots":0,"returnSlots":0},"@NO_OUTSTANDING_STABLE_DEBT_19919":{"entryPoint":null,"id":19919,"parameterSlots":0,"returnSlots":0},"@NO_OUTSTANDING_VARIABLE_DEBT_19922":{"entryPoint":null,"id":19922,"parameterSlots":0,"returnSlots":0},"@OPERATION_NOT_SUPPORTED_20033":{"entryPoint":null,"id":20033,"parameterSlots":0,"returnSlots":0},"@POOL_ADDRESSES_DO_NOT_MATCH_20054":{"entryPoint":null,"id":20054,"parameterSlots":0,"returnSlots":0},"@PRICE_ORACLE_SENTINEL_CHECK_FAILED_19970":{"entryPoint":null,"id":19970,"parameterSlots":0,"returnSlots":0},"@RESERVE_ALREADY_ADDED_19838":{"entryPoint":null,"id":19838,"parameterSlots":0,"returnSlots":0},"@RESERVE_ALREADY_INITIALIZED_19976":{"entryPoint":null,"id":19976,"parameterSlots":0,"returnSlots":0},"@RESERVE_DEBT_NOT_ZERO_20063":{"entryPoint":null,"id":20063,"parameterSlots":0,"returnSlots":0},"@RESERVE_FROZEN_19880":{"entryPoint":null,"id":19880,"parameterSlots":0,"returnSlots":0},"@RESERVE_INACTIVE_19877":{"entryPoint":null,"id":19877,"parameterSlots":0,"returnSlots":0},"@RESERVE_LIQUIDITY_NOT_ZERO_19850":{"entryPoint":null,"id":19850,"parameterSlots":0,"returnSlots":0},"@RESERVE_PAUSED_19883":{"entryPoint":null,"id":19883,"parameterSlots":0,"returnSlots":0},"@SILOED_BORROWING_VIOLATION_20060":{"entryPoint":null,"id":20060,"parameterSlots":0,"returnSlots":0},"@SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER_19937":{"entryPoint":null,"id":19937,"parameterSlots":0,"returnSlots":0},"@STABLE_BORROWING_ENABLED_20057":{"entryPoint":null,"id":20057,"parameterSlots":0,"returnSlots":0},"@STABLE_BORROWING_NOT_ENABLED_19889":{"entryPoint":null,"id":19889,"parameterSlots":0,"returnSlots":0},"@STABLE_DEBT_NOT_ZERO_19958":{"entryPoint":null,"id":19958,"parameterSlots":0,"returnSlots":0},"@SUPPLY_CAP_EXCEEDED_19946":{"entryPoint":null,"id":19946,"parameterSlots":0,"returnSlots":0},"@UNBACKED_MINT_CAP_EXCEEDED_19949":{"entryPoint":null,"id":19949,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_BALANCE_ZERO_19925":{"entryPoint":null,"id":19925,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_CANNOT_BE_RESCUED_20048":{"entryPoint":null,"id":20048,"parameterSlots":0,"returnSlots":0},"@UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO_19955":{"entryPoint":null,"id":19955,"parameterSlots":0,"returnSlots":0},"@USER_IN_ISOLATION_MODE_OR_LTV_ZERO_19979":{"entryPoint":null,"id":19979,"parameterSlots":0,"returnSlots":0},"@VARIABLE_DEBT_SUPPLY_NOT_ZERO_19961":{"entryPoint":null,"id":19961,"parameterSlots":0,"returnSlots":0},"@ZERO_ADDRESS_NOT_VALID_20024":{"entryPoint":null,"id":20024,"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:75","nodeType":"YulBlock","src":"0:442:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"143:297:75","nodeType":"YulBlock","src":"143:297:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"160:9:75","nodeType":"YulIdentifier","src":"160:9:75"},{"kind":"number","nativeSrc":"171:2:75","nodeType":"YulLiteral","src":"171:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"153:6:75","nodeType":"YulIdentifier","src":"153:6:75"},"nativeSrc":"153:21:75","nodeType":"YulFunctionCall","src":"153:21:75"},"nativeSrc":"153:21:75","nodeType":"YulExpressionStatement","src":"153:21:75"},{"nativeSrc":"183:27:75","nodeType":"YulVariableDeclaration","src":"183:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"203:6:75","nodeType":"YulIdentifier","src":"203:6:75"}],"functionName":{"name":"mload","nativeSrc":"197:5:75","nodeType":"YulIdentifier","src":"197:5:75"},"nativeSrc":"197:13:75","nodeType":"YulFunctionCall","src":"197:13:75"},"variables":[{"name":"length","nativeSrc":"187:6:75","nodeType":"YulTypedName","src":"187:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"230:9:75","nodeType":"YulIdentifier","src":"230:9:75"},{"kind":"number","nativeSrc":"241:2:75","nodeType":"YulLiteral","src":"241:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"226:3:75","nodeType":"YulIdentifier","src":"226:3:75"},"nativeSrc":"226:18:75","nodeType":"YulFunctionCall","src":"226:18:75"},{"name":"length","nativeSrc":"246:6:75","nodeType":"YulIdentifier","src":"246:6:75"}],"functionName":{"name":"mstore","nativeSrc":"219:6:75","nodeType":"YulIdentifier","src":"219:6:75"},"nativeSrc":"219:34:75","nodeType":"YulFunctionCall","src":"219:34:75"},"nativeSrc":"219:34:75","nodeType":"YulExpressionStatement","src":"219:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"272:9:75","nodeType":"YulIdentifier","src":"272:9:75"},{"kind":"number","nativeSrc":"283:2:75","nodeType":"YulLiteral","src":"283:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"268:3:75","nodeType":"YulIdentifier","src":"268:3:75"},"nativeSrc":"268:18:75","nodeType":"YulFunctionCall","src":"268:18:75"},{"arguments":[{"name":"value0","nativeSrc":"292:6:75","nodeType":"YulIdentifier","src":"292:6:75"},{"kind":"number","nativeSrc":"300:2:75","nodeType":"YulLiteral","src":"300:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"288:3:75","nodeType":"YulIdentifier","src":"288:3:75"},"nativeSrc":"288:15:75","nodeType":"YulFunctionCall","src":"288:15:75"},{"name":"length","nativeSrc":"305:6:75","nodeType":"YulIdentifier","src":"305:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"262:5:75","nodeType":"YulIdentifier","src":"262:5:75"},"nativeSrc":"262:50:75","nodeType":"YulFunctionCall","src":"262:50:75"},"nativeSrc":"262:50:75","nodeType":"YulExpressionStatement","src":"262:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"336:9:75","nodeType":"YulIdentifier","src":"336:9:75"},{"name":"length","nativeSrc":"347:6:75","nodeType":"YulIdentifier","src":"347:6:75"}],"functionName":{"name":"add","nativeSrc":"332:3:75","nodeType":"YulIdentifier","src":"332:3:75"},"nativeSrc":"332:22:75","nodeType":"YulFunctionCall","src":"332:22:75"},{"kind":"number","nativeSrc":"356:2:75","nodeType":"YulLiteral","src":"356:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"328:3:75","nodeType":"YulIdentifier","src":"328:3:75"},"nativeSrc":"328:31:75","nodeType":"YulFunctionCall","src":"328:31:75"},{"kind":"number","nativeSrc":"361:1:75","nodeType":"YulLiteral","src":"361:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"321:6:75","nodeType":"YulIdentifier","src":"321:6:75"},"nativeSrc":"321:42:75","nodeType":"YulFunctionCall","src":"321:42:75"},"nativeSrc":"321:42:75","nodeType":"YulExpressionStatement","src":"321:42:75"},{"nativeSrc":"372:62:75","nodeType":"YulAssignment","src":"372:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"388:9:75","nodeType":"YulIdentifier","src":"388:9:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"407:6:75","nodeType":"YulIdentifier","src":"407:6:75"},{"kind":"number","nativeSrc":"415:2:75","nodeType":"YulLiteral","src":"415:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"403:3:75","nodeType":"YulIdentifier","src":"403:3:75"},"nativeSrc":"403:15:75","nodeType":"YulFunctionCall","src":"403:15:75"},{"arguments":[{"kind":"number","nativeSrc":"424:2:75","nodeType":"YulLiteral","src":"424:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"420:3:75","nodeType":"YulIdentifier","src":"420:3:75"},"nativeSrc":"420:7:75","nodeType":"YulFunctionCall","src":"420:7:75"}],"functionName":{"name":"and","nativeSrc":"399:3:75","nodeType":"YulIdentifier","src":"399:3:75"},"nativeSrc":"399:29:75","nodeType":"YulFunctionCall","src":"399:29:75"}],"functionName":{"name":"add","nativeSrc":"384:3:75","nodeType":"YulIdentifier","src":"384:3:75"},"nativeSrc":"384:45:75","nodeType":"YulFunctionCall","src":"384:45:75"},{"kind":"number","nativeSrc":"431:2:75","nodeType":"YulLiteral","src":"431:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"380:3:75","nodeType":"YulIdentifier","src":"380:3:75"},"nativeSrc":"380:54:75","nodeType":"YulFunctionCall","src":"380:54:75"},"variableNames":[{"name":"tail","nativeSrc":"372:4:75","nodeType":"YulIdentifier","src":"372:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_library_reversed","nativeSrc":"14:426:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"112:9:75","nodeType":"YulTypedName","src":"112:9:75","type":""},{"name":"value0","nativeSrc":"123:6:75","nodeType":"YulTypedName","src":"123:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"134:4:75","nodeType":"YulTypedName","src":"134:4:75","type":""}],"src":"14:426:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600436106104e8575f3560e01c80638aa3ca4c1161028f578063bad8308c1161016c578063dd1dd95f116100e0578063f07f67851161009a578063f07f678514610fcd578063f10727db14610fee578063f479ea111461100f578063fa163a8314611030578063fae8279114611051578063fd1828ff14611072575f5ffd5b8063dd1dd95f14610f08578063de24948c14610f29578063e02f07ee14610f4a578063e3fa20f514610f6a578063e4dd8b7414610f8b578063e981483a14610fac575f5ffd5b8063d14bb17a11610131578063d14bb17a14610e42578063d1cd8b1d14610e63578063d6f9fcde14610e84578063d9adda8514610ea5578063dc191bd914610ec6578063dcc56db614610ee7575f5ffd5b8063bad8308c14610d9d578063c08a114614610dbe578063c863808214610ddf578063c899301a14610e00578063cd23367c14610e21575f5ffd5b8063a4868dca11610203578063b0510054116101c8578063b051005414610cd8578063b4a4573014610cf9578063b5e7936614610d1a578063b68774e914610d3a578063b7f5e22414610d5b578063b87041c214610d7c575f5ffd5b8063a4868dca14610c34578063a8c9785314610c55578063ab883ca014610c76578063abd351b114610c97578063ac75323614610cb8575f5ffd5b8063952633c511610254578063952633c514610b6e5780639527e9d914610b8f57806399ce53f314610bb0578063a2797c8014610bd1578063a2e976c614610bf2578063a3402a3814610c13575f5ffd5b80638aa3ca4c14610ac95780638b8b98d714610aea5780638eda46bd14610b0b5780638f7722b214610b2c57806394f9fd8a14610b4d575f5ffd5b80634e3aed37116103c85780636cd3cfbc1161033c5780637aa0767e116102f65780637aa0767e14610a035780637fea6f3614610a245780638596aad514610a45578063895f7dc814610a6657806389c5d45f14610a875780638a34400014610aa8575f5ffd5b80636cd3cfbc1461093d578063712f536a1461095e57806373dea5e31461097f57806374459b14146109a0578063747fa556146109c157806376ae8fca146109e2575f5ffd5b80635d9c76c01161038d5780635d9c76c01461087857806360c3de801461089957806361c111d2146108b957806365a83bab146108da57806365e7ef4c146108fb5780636b3f7cc71461091c575f5ffd5b80634e3aed37146107d45780634ef999ff146107f55780634f77647b14610816578063512674501461083657806352ba9dbe14610857575f5ffd5b80632eed17e81161045f57806347ba93d81161042457806347ba93d81461070f57806347cf152314610730578063480702ae14610751578063485c8ff6146107725780634d86f393146107925780634e01e3c1146107b3575f5ffd5b80632eed17e81461066a578063335763de1461068b578063366eb54d146106ac57806337930782146106cd578063471df685146106ee575f5ffd5b80631abbb001116104b05780631abbb001146105a657806322a73446146105c757806326bbd053146105e857806326e7b312146106095780632926c971146106295780632c8e3b4c1461064a575f5ffd5b8063084dfa0d146104ec57806311d7b0061461052357806312dcade81461054357806314dcfbbc14610564578063198d6a6b14610585575b5f5ffd5b61050d60405180604001604052806002815260200161062760f31b81525081565b60405161051a9190611093565b60405180910390f35b61050d604051806040016040528060018152602001603960f81b81525081565b61050d604051806040016040528060028152602001610c4d60f21b81525081565b61050d604051806040016040528060028152602001611c1b60f11b81525081565b61050d60405180604001604052806002815260200161070760f31b81525081565b61050d60405180604001604052806002815260200161383760f01b81525081565b61050d60405180604001604052806002815260200161343760f01b81525081565b61050d60405180604001604052806002815260200161363960f01b81525081565b61050d604051806040016040528060018152602001603360f81b81525081565b61050d604051806040016040528060028152602001610d0d60f21b81525081565b61050d604051806040016040528060018152602001603560f81b81525081565b61050d60405180604001604052806002815260200161035360f41b81525081565b61050d60405180604001604052806002815260200161032360f41b81525081565b61050d60405180604001604052806002815260200161333560f01b81525081565b61050d60405180604001604052806002815260200161189960f11b81525081565b61050d60405180604001604052806002815260200161323360f01b81525081565b61050d604051806040016040528060028152602001611b9960f11b81525081565b61050d60405180604001604052806002815260200161323160f01b81525081565b61050d604051806040016040528060028152602001611b1960f11b81525081565b61050d604051806040016040528060018152602001601960f91b81525081565b61050d60405180604001604052806002815260200161333160f01b81525081565b61050d604051806040016040528060028152602001610ccd60f21b81525081565b61050d60405180604001604052806002815260200161383360f01b81525081565b61050d60405180604001604052806002815260200161033360f41b81525081565b61050d604051806040016040528060018152602001601b60f91b81525081565b61050d60405180604001604052806002815260200161323560f01b81525081565b61050d60405180604001604052806002815260200161323760f01b81525081565b61050d60405180604001604052806002815260200161313760f01b81525081565b61050d604051806040016040528060018152602001600760fb1b81525081565b61050d60405180604001604052806002815260200161031360f41b81525081565b61050d60405180604001604052806002815260200161353360f01b81525081565b61050d60405180604001604052806002815260200161353560f01b81525081565b61050d604051806040016040528060028152602001611a9960f11b81525081565b61050d60405180604001604052806002815260200161064760f31b81525081565b61050d60405180604001604052806002815260200161034360f41b81525081565b61050d60405180604001604052806002815260200161343960f01b81525081565b61050d60405180604001604052806002815260200161343160f01b81525081565b61050d60405180604001604052806002815260200161313960f01b81525081565b61050d60405180604001604052806002815260200161313560f01b81525081565b61050d60405180604001604052806002815260200161191960f11b81525081565b61050d60405180604001604052806002815260200161313360f01b81525081565b61050d60405180604001604052806002815260200161036360f41b81525081565b61050d604051806040016040528060028152602001611a1b60f11b81525081565b61050d60405180604001604052806002815260200161333360f01b81525081565b61050d60405180604001604052806002815260200161333760f01b81525081565b61050d60405180604001604052806002815260200161393160f01b81525081565b61050d60405180604001604052806002815260200161038360f41b81525081565b61050d60405180604001604052806002815260200161037360f41b81525081565b61050d6040518060400160405280600281526020016106a760f31b81525081565b61050d604051806040016040528060028152602001610d4d60f21b81525081565b61050d60405180604001604052806002815260200161343560f01b81525081565b61050d60405180604001604052806002815260200161363560f01b81525081565b61050d60405180604001604052806002815260200161363360f01b81525081565b61050d60405180604001604052806002815260200161343360f01b81525081565b61050d60405180604001604052806002815260200161313160f01b81525081565b61050d60405180604001604052806002815260200161373960f01b81525081565b61050d60405180604001604052806002815260200161363760f01b81525081565b61050d60405180604001604052806002815260200161373160f01b81525081565b61050d60405180604001604052806002815260200161383560f01b81525081565b61050d604051806040016040528060028152602001610c8d60f21b81525081565b61050d604051806040016040528060018152602001603160f81b81525081565b61050d60405180604001604052806002815260200161353160f01b81525081565b61050d604051806040016040528060028152602001611a1960f11b81525081565b61050d604051806040016040528060018152602001600d60fa1b81525081565b61050d60405180604001604052806002815260200161323960f01b81525081565b61050d60405180604001604052806002815260200161199960f11b81525081565b61050d60405180604001604052806002815260200161353760f01b81525081565b61050d604051806040016040528060028152602001611b9b60f11b81525081565b61050d6040518060400160405280600281526020016106e760f31b81525081565b61050d60405180604001604052806002815260200161353960f01b81525081565b61050d604051806040016040528060028152602001610e0d60f21b81525081565b61050d604051806040016040528060028152602001611c1960f11b81525081565b61050d60405180604001604052806002815260200161373760f01b81525081565b61050d604051806040016040528060028152602001610dcd60f21b81525081565b61050d6040518060400160405280600281526020016106c760f31b81525081565b61050d60405180604001604052806002815260200161363160f01b81525081565b61050d60405180604001604052806002815260200161333960f01b81525081565b61050d60405180604001604052806002815260200161373360f01b81525081565b61050d604051806040016040528060028152602001610d8d60f21b81525081565b61050d60405180604001604052806002815260200161383960f01b81525081565b61050d604051806040016040528060018152602001603760f81b81525081565b61050d60405180604001604052806002815260200161199b60f11b81525081565b61050d60405180604001604052806002815260200161383160f01b81525081565b61050d60405180604001604052806002815260200161039360f41b81525081565b61050d60405180604001604052806002815260200161066760f31b81525081565b61050d604051806040016040528060028152602001611a9b60f11b81525081565b61050d60405180604001604052806002815260200161189b60f11b81525081565b61050d604051806040016040528060028152602001611b1b60f11b81525081565b61050d60405180604001604052806002815260200161191b60f11b81525081565b61050d60405180604001604052806002815260200161373560f01b81525081565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fea26469706673582212206cb3ff64fc0f9d58478d3d9040ab94ba5ff9ceb8ada10fcc9580f13c790f4c4964736f6c634300081c0033","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 PUSH13 0xB3FF64FC0F9D58478D3D9040AB SWAP5 0xBA PUSH0 0xF9 0xCE 0xB8 0xAD LOG1 0xF 0xCC SWAP6 DUP1 CALL EXTCODECOPY PUSH26 0xF4C4964736F6C634300081C0033000000000000000000000000 ","sourceMap":"205:9704:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2169:56;;;;;;;;;;;;;;;-1:-1:-1;;;2169:56:60;;;;;;;;;;;;:::i;:::-;;;;;;;;1163:41;;;;;;;;;;;;;;;-1:-1:-1;;;1163:41:60;;;;;1709:51;;;;;;;;;;;;;;;-1:-1:-1;;;1709:51:60;;;;;9203:62;;;;;;;;;;;;;;;-1:-1:-1;;;9203:62:60;;;;;9493:54;;;;;;;;;;;;;;;-1:-1:-1;;;9493:54:60;;;;;9321:57;;;;;;;;;;;;;;;-1:-1:-1;;;9321:57:60;;;;;5418:69;;;;;;;;;;;;;;;-1:-1:-1;;;5418:69:60;;;;;7579:48;;;;;;;;;;;;;;;-1:-1:-1;;;7579:48:60;;;;;447:63;;;;;;;;;;;;;;;-1:-1:-1;;;447:63:60;;;;;5063:72;;;;;;;;;;;;;;;-1:-1:-1;;;5063:72:60;;;;;701:67;;;;;;;;;;;;;;;-1:-1:-1;;;701:67:60;;;;;5641:49;;;;;;;;;;;;;;;-1:-1:-1;;;5641:49:60;;;;;2367:52;;;;;;;;;;;;;;;-1:-1:-1;;;2367:52:60;;;;;3844:76;;;;;;;;;;;;;;;-1:-1:-1;;;3844:76:60;;;;;1462:56;;;;;;;;;;;;;;;-1:-1:-1;;;1462:56:60;;;;;2677:49;;;;;;;;;;;;;;;-1:-1:-1;;;2677:49:60;;;;;7891:55;;;;;;;;;;;;;;;-1:-1:-1;;;7891:55:60;;;;;2468:59;;;;;;;;;;;;;;;-1:-1:-1;;;2468:59:60;;;;;6834:64;;;;;;;;;;;;;;;-1:-1:-1;;;6834:64:60;;;;;330:55;;;;;;;;;;;;;;;-1:-1:-1;;;330:55:60;;;;;3417:58;;;;;;;;;;;;;;;-1:-1:-1;;;3417:58:60;;;;;3751:56;;;;;;;;;;;;;;;-1:-1:-1;;;3751:56:60;;;;;8879:57;;;;;;;;;;;;;;;-1:-1:-1;;;8879:57:60;;;;;3332:51;;;;;;;;;;;;;;;-1:-1:-1;;;3332:51:60;;;;;842:46;;;;;;;;;;;;;;;-1:-1:-1;;;842:46:60;;;;;2859:49;;;;;;;;;;;;;;;-1:-1:-1;;;2859:49:60;;;;;3023:46;;;;;;;;;;;;;;;-1:-1:-1;;;3023:46:60;;;;;2054:63;;;;;;;;;;;;;;;-1:-1:-1;;;2054:63:60;;;;;1053:58;;;;;;;;;;;;;;;-1:-1:-1;;;1053:58:60;;;;;1239;;;;;;;;;;;;;;;-1:-1:-1;;;1239:58:60;;;;;5898:51;;;;;;;;;;;;;;;-1:-1:-1;;;5898:51:60;;;;;6137:50;;;;;;;;;;;;;;;-1:-1:-1;;;6137:50:60;;;;;5803:56;;;;;;;;;;;;;;;-1:-1:-1;;;5803:56:60;;;;;3112:44;;;;;;;;;;;;;;;-1:-1:-1;;;3112:44:60;;;;;4546:67;;;;;;;;;;;;;;;-1:-1:-1;;;4546:67:60;;;;;5539:59;;;;;;;;;;;;;;;-1:-1:-1;;;5539:59:60;;;;;4689:56;;;;;;;;;;;;;;;-1:-1:-1;;;4689:56:60;;;;;2277:55;;;;;;;;;;;;;;;-1:-1:-1;;;2277:55:60;;;;;1816:54;;;;;;;;;;;;;;;-1:-1:-1;;;1816:54:60;;;;;2583:57;;;;;;;;;;;;;;;-1:-1:-1;;;2583:57:60;;;;;1581:63;;;;;;;;;;;;;;;-1:-1:-1;;;1581:63:60;;;;;6617;;;;;;;;;;;;;;;-1:-1:-1;;;6617:63:60;;;;;5305:61;;;;;;;;;;;;;;;-1:-1:-1;;;5305:61:60;;;;;3641:65;;;;;;;;;;;;;;;-1:-1:-1;;;3641:65:60;;;;;4110:67;;;;;;;;;;;;;;;-1:-1:-1;;;4110:67:60;;;;;9815:48;;;;;;;;;;;;;;;-1:-1:-1;;;9815:48:60;;;;;8633:53;;;;;;;;;;;;;;;-1:-1:-1;;;8633:53:60;;;;;7671:62;;;;;;;;;;;;;;;-1:-1:-1;;;7671:62:60;;;;;6410:57;;;;;;;;;;;;;;;-1:-1:-1;;;6410:57:60;;;;;5983:66;;;;;;;;;;;;;;;-1:-1:-1;;;5983:66:60;;;;;5192:63;;;;;;;;;;;;;;;-1:-1:-1;;;5192:63:60;;;;;7150:47;;;;;;;;;;;;;;;-1:-1:-1;;;7150:47:60;;;;;6948:41;;;;;;;;;;;;;;;-1:-1:-1;;;6948:41:60;;;;;4951:53;;;;;;;;;;;;;;;-1:-1:-1;;;4951:53:60;;;;;1362:47;;;;;;;;;;;;;;;-1:-1:-1;;;1362:47:60;;;;;8559;;;;;;;;;;;;;;;-1:-1:-1;;;8559:47:60;;;;;7377:52;;;;;;;;;;;;;;;-1:-1:-1;;;7377:52:60;;;;;7791;;;;;;;;;;;;;;;-1:-1:-1;;;7791:52:60;;;;;9097:58;;;;;;;;;;;;;;;-1:-1:-1;;;9097:58:60;;;;;2778:49;;;;;;;;;;;;;;;-1:-1:-1;;;2778:49:60;;;;;224:50;;;;;;;;;;;;;;;-1:-1:-1;;;224:50:60;;;;;5722:49;;;;;;;;;;;;;;;-1:-1:-1;;;5722:49:60;;;;;4818:58;;;;;;;;;;;;;;;-1:-1:-1;;;4818:58:60;;;;;579;;;;;;;;;;;;;;;-1:-1:-1;;;579:58:60;;;;;3222:44;;;;;;;;;;;;;;;-1:-1:-1;;;3222:44:60;;;;;3516:63;;;;;;;;;;;;;;;-1:-1:-1;;;3516:63:60;;;;;6328:51;;;;;;;;;;;;;;;-1:-1:-1;;;6328:51:60;;;;;8281:56;;;;;;;;;;;;;;;-1:-1:-1;;;8281:56:60;;;;;8483:48;;;;;;;;;;;;;;;-1:-1:-1;;;8483:48:60;;;;;6504:64;;;;;;;;;;;;;;;-1:-1:-1;;;6504:64:60;;;;;8973:72;;;;;;;;;;;;;;;-1:-1:-1;;;8973:72:60;;;;;8804:46;;;;;;;;;;;;;;;-1:-1:-1;;;8804:46:60;;;;;8399:52;;;;;;;;;;;;;;;-1:-1:-1;;;8399:52:60;;;;;8092:51;;;;;;;;;;;;;;;-1:-1:-1;;;8092:51:60;;;;;7487:48;;;;;;;;;;;;;;;-1:-1:-1;;;7487:48:60;;;;;6731:57;;;;;;;;;;;;;;;-1:-1:-1;;;6731:57:60;;;;;4403:54;;;;;;;;;;;;;;;-1:-1:-1;;;4403:54:60;;;;;7997:50;;;;;;;;;;;;;;;-1:-1:-1;;;7997:50:60;;;;;7036:51;;;;;;;;;;;;;;;-1:-1:-1;;;7036:51:60;;;;;9584:56;;;;;;;;;;;;;;;-1:-1:-1;;;9584:56:60;;;;;940:62;;;;;;;;;;;;;;;-1:-1:-1;;;940:62:60;;;;;3984:64;;;;;;;;;;;;;;;-1:-1:-1;;;3984:64:60;;;;;8719:51;;;;;;;;;;;;;;;-1:-1:-1;;;8719:51:60;;;;;9713;;;;;;;;;;;;;;;-1:-1:-1;;;9713:51:60;;;;;4250:69;;;;;;;;;;;;;;;-1:-1:-1;;;4250:69:60;;;;;6227:59;;;;;;;;;;;;;;;-1:-1:-1;;;6227:59:60;;;;;1926:53;;;;;;;;;;;;;;;-1:-1:-1;;;1926:53:60;;;;;7256:46;;;;;;;;;;;;;;;-1:-1:-1;;;7256:46:60;;;;;2940:44;;;;;;;;;;;;;;;-1:-1:-1;;;2940:44:60;;;;;8174:54;;;;;;;;;;;;;;;-1:-1:-1;;;8174:54:60;;;;;14:426:75;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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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":"60a96032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c8063280d5de914604057806331b561ba14605a575b5f5ffd5b6047600281565b6040519081526020015b60405180910390f35b6061608081565b60405161ffff9091168152602001605156fea264697066735822122085a678e4d0b0a06980a8baec28746ae3f1f9434b51ddcdb85226847ba8bfb2f864736f6c634300081c0033","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 DUP6 0xA6 PUSH25 0xE4D0B0A06980A8BAEC28746AE3F1F9434B51DDCDB85226847B 0xA8 0xBF 0xB2 0xF8 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:23357:63:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:23357:63;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEBT_CEILING_DECIMALS_21068":{"entryPoint":null,"id":21068,"parameterSlots":0,"returnSlots":0},"@MAX_RESERVES_COUNT_21071":{"entryPoint":null,"id":21071,"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:75","nodeType":"YulBlock","src":"0:402:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"123:76:75","nodeType":"YulBlock","src":"123:76:75","statements":[{"nativeSrc":"133:26:75","nodeType":"YulAssignment","src":"133:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"145:9:75","nodeType":"YulIdentifier","src":"145:9:75"},{"kind":"number","nativeSrc":"156:2:75","nodeType":"YulLiteral","src":"156:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"141:3:75","nodeType":"YulIdentifier","src":"141:3:75"},"nativeSrc":"141:18:75","nodeType":"YulFunctionCall","src":"141:18:75"},"variableNames":[{"name":"tail","nativeSrc":"133:4:75","nodeType":"YulIdentifier","src":"133:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"175:9:75","nodeType":"YulIdentifier","src":"175:9:75"},{"name":"value0","nativeSrc":"186:6:75","nodeType":"YulIdentifier","src":"186:6:75"}],"functionName":{"name":"mstore","nativeSrc":"168:6:75","nodeType":"YulIdentifier","src":"168:6:75"},"nativeSrc":"168:25:75","nodeType":"YulFunctionCall","src":"168:25:75"},"nativeSrc":"168:25:75","nodeType":"YulExpressionStatement","src":"168:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed","nativeSrc":"14:185:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"92:9:75","nodeType":"YulTypedName","src":"92:9:75","type":""},{"name":"value0","nativeSrc":"103:6:75","nodeType":"YulTypedName","src":"103:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"114:4:75","nodeType":"YulTypedName","src":"114:4:75","type":""}],"src":"14:185:75"},{"body":{"nativeSrc":"311:89:75","nodeType":"YulBlock","src":"311:89:75","statements":[{"nativeSrc":"321:26:75","nodeType":"YulAssignment","src":"321:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"333:9:75","nodeType":"YulIdentifier","src":"333:9:75"},{"kind":"number","nativeSrc":"344:2:75","nodeType":"YulLiteral","src":"344:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"329:3:75","nodeType":"YulIdentifier","src":"329:3:75"},"nativeSrc":"329:18:75","nodeType":"YulFunctionCall","src":"329:18:75"},"variableNames":[{"name":"tail","nativeSrc":"321:4:75","nodeType":"YulIdentifier","src":"321:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"363:9:75","nodeType":"YulIdentifier","src":"363:9:75"},{"arguments":[{"name":"value0","nativeSrc":"378:6:75","nodeType":"YulIdentifier","src":"378:6:75"},{"kind":"number","nativeSrc":"386:6:75","nodeType":"YulLiteral","src":"386:6:75","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"374:3:75","nodeType":"YulIdentifier","src":"374:3:75"},"nativeSrc":"374:19:75","nodeType":"YulFunctionCall","src":"374:19:75"}],"functionName":{"name":"mstore","nativeSrc":"356:6:75","nodeType":"YulIdentifier","src":"356:6:75"},"nativeSrc":"356:38:75","nodeType":"YulFunctionCall","src":"356:38:75"},"nativeSrc":"356:38:75","nodeType":"YulExpressionStatement","src":"356:38:75"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_library_reversed","nativeSrc":"204:196:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"280:9:75","nodeType":"YulTypedName","src":"280:9:75","type":""},{"name":"value0","nativeSrc":"291:6:75","nodeType":"YulTypedName","src":"291:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"302:4:75","nodeType":"YulTypedName","src":"302:4:75","type":""}],"src":"204:196:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"7300000000000000000000000000000000000000003014608060405260043610603c575f3560e01c8063280d5de914604057806331b561ba14605a575b5f5ffd5b6047600281565b6040519081526020015b60405180910390f35b6061608081565b60405161ffff9091168152602001605156fea264697066735822122085a678e4d0b0a06980a8baec28746ae3f1f9434b51ddcdb85226847ba8bfb2f864736f6c634300081c0033","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 DUP6 0xA6 PUSH25 0xE4D0B0A06980A8BAEC28746AE3F1F9434B51DDCDB85226847B 0xA8 0xBF 0xB2 0xF8 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:23357:63:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5171:49;;5219:1;5171:49;;;;;168:25:75;;;156:2;141:18;5171:49:63;;;;;;;;5224:47;;5268:3;5224:47;;;;;386:6:75;374:19;;;356:38;;344:2;329:18;5224:47:63;204:196:75"},"methodIdentifiers":{"DEBT_CEILING_DECIMALS()":"280d5de9","MAX_RESERVES_COUNT()":"31b561ba"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"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/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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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.28+commit.7893614a\"},\"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\":\"cancun\",\"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/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":{"@_22485":{"entryPoint":null,"id":22485,"parameterSlots":1,"returnSlots":0},"@makeStorageSlot_15720":{"entryPoint":null,"id":15720,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$8656_fromMemory":{"entryPoint":206,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:805:75","nodeType":"YulBlock","src":"0:805:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"110:209:75","nodeType":"YulBlock","src":"110:209:75","statements":[{"body":{"nativeSrc":"156:16:75","nodeType":"YulBlock","src":"156:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"165:1:75","nodeType":"YulLiteral","src":"165:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"168:1:75","nodeType":"YulLiteral","src":"168:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"158:6:75","nodeType":"YulIdentifier","src":"158:6:75"},"nativeSrc":"158:12:75","nodeType":"YulFunctionCall","src":"158:12:75"},"nativeSrc":"158:12:75","nodeType":"YulExpressionStatement","src":"158:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"131:7:75","nodeType":"YulIdentifier","src":"131:7:75"},{"name":"headStart","nativeSrc":"140:9:75","nodeType":"YulIdentifier","src":"140:9:75"}],"functionName":{"name":"sub","nativeSrc":"127:3:75","nodeType":"YulIdentifier","src":"127:3:75"},"nativeSrc":"127:23:75","nodeType":"YulFunctionCall","src":"127:23:75"},{"kind":"number","nativeSrc":"152:2:75","nodeType":"YulLiteral","src":"152:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"123:3:75","nodeType":"YulIdentifier","src":"123:3:75"},"nativeSrc":"123:32:75","nodeType":"YulFunctionCall","src":"123:32:75"},"nativeSrc":"120:52:75","nodeType":"YulIf","src":"120:52:75"},{"nativeSrc":"181:29:75","nodeType":"YulVariableDeclaration","src":"181:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"200:9:75","nodeType":"YulIdentifier","src":"200:9:75"}],"functionName":{"name":"mload","nativeSrc":"194:5:75","nodeType":"YulIdentifier","src":"194:5:75"},"nativeSrc":"194:16:75","nodeType":"YulFunctionCall","src":"194:16:75"},"variables":[{"name":"value","nativeSrc":"185:5:75","nodeType":"YulTypedName","src":"185:5:75","type":""}]},{"body":{"nativeSrc":"273:16:75","nodeType":"YulBlock","src":"273:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"282:1:75","nodeType":"YulLiteral","src":"282:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"285:1:75","nodeType":"YulLiteral","src":"285:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"275:6:75","nodeType":"YulIdentifier","src":"275:6:75"},"nativeSrc":"275:12:75","nodeType":"YulFunctionCall","src":"275:12:75"},"nativeSrc":"275:12:75","nodeType":"YulExpressionStatement","src":"275:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"232:5:75","nodeType":"YulIdentifier","src":"232:5:75"},{"arguments":[{"name":"value","nativeSrc":"243:5:75","nodeType":"YulIdentifier","src":"243:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"258:3:75","nodeType":"YulLiteral","src":"258:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"263:1:75","nodeType":"YulLiteral","src":"263:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"254:3:75","nodeType":"YulIdentifier","src":"254:3:75"},"nativeSrc":"254:11:75","nodeType":"YulFunctionCall","src":"254:11:75"},{"kind":"number","nativeSrc":"267:1:75","nodeType":"YulLiteral","src":"267:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"250:3:75","nodeType":"YulIdentifier","src":"250:3:75"},"nativeSrc":"250:19:75","nodeType":"YulFunctionCall","src":"250:19:75"}],"functionName":{"name":"and","nativeSrc":"239:3:75","nodeType":"YulIdentifier","src":"239:3:75"},"nativeSrc":"239:31:75","nodeType":"YulFunctionCall","src":"239:31:75"}],"functionName":{"name":"eq","nativeSrc":"229:2:75","nodeType":"YulIdentifier","src":"229:2:75"},"nativeSrc":"229:42:75","nodeType":"YulFunctionCall","src":"229:42:75"}],"functionName":{"name":"iszero","nativeSrc":"222:6:75","nodeType":"YulIdentifier","src":"222:6:75"},"nativeSrc":"222:50:75","nodeType":"YulFunctionCall","src":"222:50:75"},"nativeSrc":"219:70:75","nodeType":"YulIf","src":"219:70:75"},{"nativeSrc":"298:15:75","nodeType":"YulAssignment","src":"298:15:75","value":{"name":"value","nativeSrc":"308:5:75","nodeType":"YulIdentifier","src":"308:5:75"},"variableNames":[{"name":"value0","nativeSrc":"298:6:75","nodeType":"YulIdentifier","src":"298:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8656_fromMemory","nativeSrc":"14:305:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"76:9:75","nodeType":"YulTypedName","src":"76:9:75","type":""},{"name":"dataEnd","nativeSrc":"87:7:75","nodeType":"YulTypedName","src":"87:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"99:6:75","nodeType":"YulTypedName","src":"99:6:75","type":""}],"src":"14:305:75"},{"body":{"nativeSrc":"551:252:75","nodeType":"YulBlock","src":"551:252:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"568:9:75","nodeType":"YulIdentifier","src":"568:9:75"},{"kind":"number","nativeSrc":"579:2:75","nodeType":"YulLiteral","src":"579:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"561:6:75","nodeType":"YulIdentifier","src":"561:6:75"},"nativeSrc":"561:21:75","nodeType":"YulFunctionCall","src":"561:21:75"},"nativeSrc":"561:21:75","nodeType":"YulExpressionStatement","src":"561:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"602:9:75","nodeType":"YulIdentifier","src":"602:9:75"},{"kind":"number","nativeSrc":"613:2:75","nodeType":"YulLiteral","src":"613:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"598:3:75","nodeType":"YulIdentifier","src":"598:3:75"},"nativeSrc":"598:18:75","nodeType":"YulFunctionCall","src":"598:18:75"},{"kind":"number","nativeSrc":"618:2:75","nodeType":"YulLiteral","src":"618:2:75","type":"","value":"30"}],"functionName":{"name":"mstore","nativeSrc":"591:6:75","nodeType":"YulIdentifier","src":"591:6:75"},"nativeSrc":"591:30:75","nodeType":"YulFunctionCall","src":"591:30:75"},"nativeSrc":"591:30:75","nodeType":"YulExpressionStatement","src":"591:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"641:9:75","nodeType":"YulIdentifier","src":"641:9:75"},{"kind":"number","nativeSrc":"652:2:75","nodeType":"YulLiteral","src":"652:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"637:3:75","nodeType":"YulIdentifier","src":"637:3:75"},"nativeSrc":"637:18:75","nodeType":"YulFunctionCall","src":"637:18:75"},{"hexValue":"636f2e656e7375726f2e496e766573745374726174656779436c69656e74","kind":"string","nativeSrc":"657:32:75","nodeType":"YulLiteral","src":"657:32:75","type":"","value":"co.ensuro.InvestStrategyClient"}],"functionName":{"name":"mstore","nativeSrc":"630:6:75","nodeType":"YulIdentifier","src":"630:6:75"},"nativeSrc":"630:60:75","nodeType":"YulFunctionCall","src":"630:60:75"},"nativeSrc":"630:60:75","nodeType":"YulExpressionStatement","src":"630:60:75"},{"nativeSrc":"699:27:75","nodeType":"YulAssignment","src":"699:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"711:9:75","nodeType":"YulIdentifier","src":"711:9:75"},{"kind":"number","nativeSrc":"722:3:75","nodeType":"YulLiteral","src":"722:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"707:3:75","nodeType":"YulIdentifier","src":"707:3:75"},"nativeSrc":"707:19:75","nodeType":"YulFunctionCall","src":"707:19:75"},"variableNames":[{"name":"tail","nativeSrc":"699:4:75","nodeType":"YulIdentifier","src":"699:4:75"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"746:9:75","nodeType":"YulIdentifier","src":"746:9:75"},{"kind":"number","nativeSrc":"757:4:75","nodeType":"YulLiteral","src":"757:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"742:3:75","nodeType":"YulIdentifier","src":"742:3:75"},"nativeSrc":"742:20:75","nodeType":"YulFunctionCall","src":"742:20:75"},{"arguments":[{"name":"value0","nativeSrc":"768:6:75","nodeType":"YulIdentifier","src":"768:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"784:3:75","nodeType":"YulLiteral","src":"784:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"789:1:75","nodeType":"YulLiteral","src":"789:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"780:3:75","nodeType":"YulIdentifier","src":"780:3:75"},"nativeSrc":"780:11:75","nodeType":"YulFunctionCall","src":"780:11:75"},{"kind":"number","nativeSrc":"793:1:75","nodeType":"YulLiteral","src":"793:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"776:3:75","nodeType":"YulIdentifier","src":"776:3:75"},"nativeSrc":"776:19:75","nodeType":"YulFunctionCall","src":"776:19:75"}],"functionName":{"name":"and","nativeSrc":"764:3:75","nodeType":"YulIdentifier","src":"764:3:75"},"nativeSrc":"764:32:75","nodeType":"YulFunctionCall","src":"764:32:75"}],"functionName":{"name":"mstore","nativeSrc":"735:6:75","nodeType":"YulIdentifier","src":"735:6:75"},"nativeSrc":"735:62:75","nodeType":"YulFunctionCall","src":"735:62:75"},"nativeSrc":"735:62:75","nodeType":"YulExpressionStatement","src":"735:62:75"}]},"name":"abi_encode_tuple_t_stringliteral_4fed0cd3539a36e00a34a6c026c2615824c9ad47da5ef65e8372c7e721c05d79_t_contract$_IInvestStrategy_$22374__to_t_string_memory_ptr_t_address__fromStack_reversed","nativeSrc":"324:479:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"520:9:75","nodeType":"YulTypedName","src":"520:9:75","type":""},{"name":"value0","nativeSrc":"531:6:75","nodeType":"YulTypedName","src":"531:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"542:4:75","nodeType":"YulTypedName","src":"542:4:75","type":""}],"src":"324:479:75"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_contract$_IERC20_$8656_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_$22374__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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"3060a08190526040610120818152601e610160527f636f2e656e7375726f2e496e766573745374726174656779436c69656e740000610180526101409290925260806101008190526101a0909152902060c05234801561005d575f5ffd5b506040516111aa3803806111aa83398101604081905261007c916100ce565b6001600160a01b038116608052604051610095906100c1565b604051809103905ff0801580156100ae573d5f5f3e3d5ffd5b506001600160a01b031660e052506100fb565b6101858061102583390190565b5f602082840312156100de575f5ffd5b81516001600160a01b03811681146100f4575f5ffd5b9392505050565b60805160a05160c05160e051610ea661017f5f395f818161017301528181610380015281816106340152818161072f01526107d801525f818161012c015281816102710152818161053a01528181610858015261094401525f50505f81816101be0152818161034b015281816106630152818161075701526108020152610ea65ff3fe608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c8063852958771161006e578063852958771461016e5780639c4667a2146101ad5780639cd47128146101e0578063b6b55f25146101f3578063ce96cb7714610206578063f3e0ffbf14610219575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f35780635a117456146101145780635b9a4c3514610127578063728d6fd81461014e575b5f5ffd5b6100c86100c3366004610a8e565b61022c565b6040516100d59190610ae0565b60405180910390f35b6100f16100ec366004610b15565b6102ea565b005b610106610101366004610b2c565b610413565b6040519081526020016100d5565b6100f1610122366004610b69565b610435565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b61016161015c366004610b2c565b6104ae565b6040516100d59190610b84565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d5565b6101956101bb366004610b2c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6100f16101ee366004610bb7565b6104e0565b6100f1610201366004610b15565b6105d9565b610106610214366004610b2c565b6106fe565b610106610227366004610b2c565b6107c1565b60605f60ff8416801561024157610241610bf1565b90505f81801561025357610253610bf1565b036102d4575f8380602001905181019061026d9190610c05565b90507f000000000000000000000000000000000000000000000000000000000000000061029a8582610d0e565b507f973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1816040516102ca9190610b84565b60405180910390a1505b505060408051602081019091525f815292915050565b6102f2610833565b606001511561033457604051633c47dfc360e21b8152602060048201526008602482015267776974686472617760c01b60448201526064015b60405180910390fd5b6040516352f950a960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a5f2a152906064015f604051808303815f87803b1580156103c1575f5ffd5b505af11580156103d3573d5f5f3e3d5ffd5b505050507f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d8160405161040891815260200190565b60405180910390a150565b5f61041d82610916565b604001511561042d57505f919050565b505f19919050565b61043d610833565b602001511561047c57604051633c47dfc360e21b815260206004820152600a602482015269191a5cd8dbdb9b9958dd60b21b604482015260640161032b565b60405181151581527f1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e90602001610408565b604080516080810182525f8082526020820181905291810182905260608101919091526104da82610916565b92915050565b5f818060200190518101906104f59190610c05565b905081518160405160200161050a9190610b84565b6040516020818303038152906040525114610538576040516350701b6160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006105638382610d0e565b5080511561059e57604051633c47dfc360e21b815260206004820152600760248201526618dbdb9b9958dd60ca1b604482015260640161032b565b7f71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce826040516105cd9190610ae0565b60405180910390a15050565b6105e1610833565b604001511561061d57604051633c47dfc360e21b815260206004820152600760248201526619195c1bdcda5d60ca1b604482015260640161032b565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190610dc9565b506040518181527f4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e3842690602001610408565b5f61070882610916565b606001511561071857505f919050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190610de4565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610782565b604080516080810182525f8082526020820181905291810182905260608101919091527f0000000000000000000000000000000000000000000000000000000000000000805461088290610c8a565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90610c8a565b80156108f95780601f106108d0576101008083540402835291602001916108f9565b820191905f5260205f20905b8154815290600101906020018083116108dc57829003601f168201915b50505050508060200190518101906109119190610c05565b905090565b604080516080810182525f80825260208201819052818301819052606082015290516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038316906347e57533906024015f60405180830381865afa158015610996573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109bd9190810190610dfb565b8060200190518101906104da9190610c05565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a0d57610a0d6109d0565b604052919050565b5f67ffffffffffffffff821115610a2e57610a2e6109d0565b50601f01601f191660200190565b5f82601f830112610a4b575f5ffd5b8135610a5e610a5982610a15565b6109e4565b818152846020838601011115610a72575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a9f575f5ffd5b823560ff81168114610aaf575f5ffd5b9150602083013567ffffffffffffffff811115610aca575f5ffd5b610ad685828601610a3c565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610b25575f5ffd5b5035919050565b5f60208284031215610b3c575f5ffd5b81356001600160a01b0381168114610b52575f5ffd5b9392505050565b8015158114610b66575f5ffd5b50565b5f60208284031215610b79575f5ffd5b8135610b5281610b59565b81511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b5f60208284031215610bc7575f5ffd5b813567ffffffffffffffff811115610bdd575f5ffd5b610be984828501610a3c565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6080828403128015610c16575f5ffd5b506040516080810167ffffffffffffffff81118282101715610c3a57610c3a6109d0565b6040528251610c4881610b59565b81526020830151610c5881610b59565b60208201526040830151610c6b81610b59565b60408201526060830151610c7e81610b59565b60608201529392505050565b600181811c90821680610c9e57607f821691505b602082108103610cbc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d0957805f5260205f20601f840160051c81016020851015610ce75750805b601f840160051c820191505b81811015610d06575f8155600101610cf3565b50505b505050565b815167ffffffffffffffff811115610d2857610d286109d0565b610d3c81610d368454610c8a565b84610cc2565b6020601f821160018114610d6e575f8315610d575750848201515b5f19600385901b1c1916600184901b178455610d06565b5f84815260208120601f198516915b82811015610d9d5787850151825560209485019460019092019101610d7d565b5084821015610dba57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610dd9575f5ffd5b8151610b5281610b59565b5f60208284031215610df4575f5ffd5b5051919050565b5f60208284031215610e0b575f5ffd5b815167ffffffffffffffff811115610e21575f5ffd5b8201601f81018413610e31575f5ffd5b8051610e3f610a5982610a15565b818152856020838501011115610e53575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea264697066735822122013f5aef5a23dd8da0b8fe73ec8df9ee03b8ec1ae3d3a399cd6d0f5bf202f943364736f6c634300081c00336080604052348015600e575f5ffd5b506101698061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea264697066735822122082e3a8f78bbc3b95447e611a9b3857054b559d0c60ec6e75220b7f329345c41b64736f6c634300081c0033","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 SGT CREATE2 0xAE CREATE2 LOG2 RETURNDATASIZE 0xD8 0xDA SIGNEXTEND DUP16 0xE7 RETURNDATACOPY 0xC8 0xDF SWAP15 0xE0 EXTCODESIZE DUP15 0xC1 0xAE RETURNDATASIZE GASPRICE CODECOPY SWAP13 0xD6 0xD0 CREATE2 0xBF KECCAK256 0x2F SWAP5 CALLER PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER 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 DUP3 0xE3 0xA8 0xF7 DUP12 0xBC EXTCODESIZE SWAP6 PREVRANDAO PUSH31 0x611A9B3857054B559D0C60EC6E75220B7F329345C41B64736F6C634300081C STOP CALLER ","sourceMap":"753:4:72:-:0;710:48;;;;622:3150;7309:54:52;561:21:75;;;618:2;598:18;591:30;657:32;637:18;630:60;742:20;735:62;;;;637:18;622:3150:72;7309:54:52;;;707:19:75;7309:54:52;;;7299:65;;762:81:72;;1272:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1305:15:72;;;;1342:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1326:35:72;;;-1:-1:-1;622:3150:72;;;;;;;;;;:::o;14:305:75:-;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:75;;229:42;;219:70;;285:1;282;275:12;219:70;308:5;14:305;-1:-1:-1;;;14:305:75:o;324:479::-;622:3150:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getStorageForViews_22573":{"entryPoint":2326,"id":22573,"parameterSlots":1,"returnSlots":1},"@_getStorage_22552":{"entryPoint":2099,"id":22552,"parameterSlots":0,"returnSlots":1},"@asset_22649":{"entryPoint":null,"id":22649,"parameterSlots":1,"returnSlots":1},"@connect_22534":{"entryPoint":1248,"id":22534,"parameterSlots":1,"returnSlots":0},"@deposit_22720":{"entryPoint":1497,"id":22720,"parameterSlots":1,"returnSlots":0},"@disconnect_22592":{"entryPoint":1077,"id":22592,"parameterSlots":1,"returnSlots":0},"@forwardEntryPoint_22771":{"entryPoint":556,"id":22771,"parameterSlots":2,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getFail_22784":{"entryPoint":1198,"id":22784,"parameterSlots":1,"returnSlots":1},"@maxDeposit_22635":{"entryPoint":1043,"id":22635,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_22613":{"entryPoint":1790,"id":22613,"parameterSlots":1,"returnSlots":1},"@other_22426":{"entryPoint":null,"id":22426,"parameterSlots":0,"returnSlots":0},"@storageSlot_22424":{"entryPoint":null,"id":22424,"parameterSlots":0,"returnSlots":0},"@totalAssets_22663":{"entryPoint":1985,"id":22663,"parameterSlots":1,"returnSlots":1},"@withdraw_22694":{"entryPoint":746,"id":22694,"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_$22443_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_$8656_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_$22443_memory_ptr__to_t_struct$_DummyStorage_$22443_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:75","nodeType":"YulBlock","src":"0:11189:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"46:95:75","nodeType":"YulBlock","src":"46:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:75","nodeType":"YulLiteral","src":"63:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:75","nodeType":"YulLiteral","src":"70:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:75","nodeType":"YulLiteral","src":"75:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:75","nodeType":"YulIdentifier","src":"66:3:75"},"nativeSrc":"66:20:75","nodeType":"YulFunctionCall","src":"66:20:75"}],"functionName":{"name":"mstore","nativeSrc":"56:6:75","nodeType":"YulIdentifier","src":"56:6:75"},"nativeSrc":"56:31:75","nodeType":"YulFunctionCall","src":"56:31:75"},"nativeSrc":"56:31:75","nodeType":"YulExpressionStatement","src":"56:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:75","nodeType":"YulLiteral","src":"103:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:75","nodeType":"YulLiteral","src":"106:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:75","nodeType":"YulIdentifier","src":"96:6:75"},"nativeSrc":"96:15:75","nodeType":"YulFunctionCall","src":"96:15:75"},"nativeSrc":"96:15:75","nodeType":"YulExpressionStatement","src":"96:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:75","nodeType":"YulLiteral","src":"127:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:75","nodeType":"YulLiteral","src":"130:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:75","nodeType":"YulIdentifier","src":"120:6:75"},"nativeSrc":"120:15:75","nodeType":"YulFunctionCall","src":"120:15:75"},"nativeSrc":"120:15:75","nodeType":"YulExpressionStatement","src":"120:15:75"}]},"name":"panic_error_0x41","nativeSrc":"14:127:75","nodeType":"YulFunctionDefinition","src":"14:127:75"},{"body":{"nativeSrc":"191:230:75","nodeType":"YulBlock","src":"191:230:75","statements":[{"nativeSrc":"201:19:75","nodeType":"YulAssignment","src":"201:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"217:2:75","nodeType":"YulLiteral","src":"217:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"211:5:75","nodeType":"YulIdentifier","src":"211:5:75"},"nativeSrc":"211:9:75","nodeType":"YulFunctionCall","src":"211:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"201:6:75","nodeType":"YulIdentifier","src":"201:6:75"}]},{"nativeSrc":"229:58:75","nodeType":"YulVariableDeclaration","src":"229:58:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"251:6:75","nodeType":"YulIdentifier","src":"251:6:75"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"267:4:75","nodeType":"YulIdentifier","src":"267:4:75"},{"kind":"number","nativeSrc":"273:2:75","nodeType":"YulLiteral","src":"273:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"263:3:75","nodeType":"YulIdentifier","src":"263:3:75"},"nativeSrc":"263:13:75","nodeType":"YulFunctionCall","src":"263:13:75"},{"arguments":[{"kind":"number","nativeSrc":"282:2:75","nodeType":"YulLiteral","src":"282:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"278:3:75","nodeType":"YulIdentifier","src":"278:3:75"},"nativeSrc":"278:7:75","nodeType":"YulFunctionCall","src":"278:7:75"}],"functionName":{"name":"and","nativeSrc":"259:3:75","nodeType":"YulIdentifier","src":"259:3:75"},"nativeSrc":"259:27:75","nodeType":"YulFunctionCall","src":"259:27:75"}],"functionName":{"name":"add","nativeSrc":"247:3:75","nodeType":"YulIdentifier","src":"247:3:75"},"nativeSrc":"247:40:75","nodeType":"YulFunctionCall","src":"247:40:75"},"variables":[{"name":"newFreePtr","nativeSrc":"233:10:75","nodeType":"YulTypedName","src":"233:10:75","type":""}]},{"body":{"nativeSrc":"362:22:75","nodeType":"YulBlock","src":"362:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"364:16:75","nodeType":"YulIdentifier","src":"364:16:75"},"nativeSrc":"364:18:75","nodeType":"YulFunctionCall","src":"364:18:75"},"nativeSrc":"364:18:75","nodeType":"YulExpressionStatement","src":"364:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"305:10:75","nodeType":"YulIdentifier","src":"305:10:75"},{"kind":"number","nativeSrc":"317:18:75","nodeType":"YulLiteral","src":"317:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"302:2:75","nodeType":"YulIdentifier","src":"302:2:75"},"nativeSrc":"302:34:75","nodeType":"YulFunctionCall","src":"302:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"341:10:75","nodeType":"YulIdentifier","src":"341:10:75"},{"name":"memPtr","nativeSrc":"353:6:75","nodeType":"YulIdentifier","src":"353:6:75"}],"functionName":{"name":"lt","nativeSrc":"338:2:75","nodeType":"YulIdentifier","src":"338:2:75"},"nativeSrc":"338:22:75","nodeType":"YulFunctionCall","src":"338:22:75"}],"functionName":{"name":"or","nativeSrc":"299:2:75","nodeType":"YulIdentifier","src":"299:2:75"},"nativeSrc":"299:62:75","nodeType":"YulFunctionCall","src":"299:62:75"},"nativeSrc":"296:88:75","nodeType":"YulIf","src":"296:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"400:2:75","nodeType":"YulLiteral","src":"400:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"404:10:75","nodeType":"YulIdentifier","src":"404:10:75"}],"functionName":{"name":"mstore","nativeSrc":"393:6:75","nodeType":"YulIdentifier","src":"393:6:75"},"nativeSrc":"393:22:75","nodeType":"YulFunctionCall","src":"393:22:75"},"nativeSrc":"393:22:75","nodeType":"YulExpressionStatement","src":"393:22:75"}]},"name":"allocate_memory","nativeSrc":"146:275:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"171:4:75","nodeType":"YulTypedName","src":"171:4:75","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"180:6:75","nodeType":"YulTypedName","src":"180:6:75","type":""}],"src":"146:275:75"},{"body":{"nativeSrc":"483:129:75","nodeType":"YulBlock","src":"483:129:75","statements":[{"body":{"nativeSrc":"527:22:75","nodeType":"YulBlock","src":"527:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"529:16:75","nodeType":"YulIdentifier","src":"529:16:75"},"nativeSrc":"529:18:75","nodeType":"YulFunctionCall","src":"529:18:75"},"nativeSrc":"529:18:75","nodeType":"YulExpressionStatement","src":"529:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"499:6:75","nodeType":"YulIdentifier","src":"499:6:75"},{"kind":"number","nativeSrc":"507:18:75","nodeType":"YulLiteral","src":"507:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"496:2:75","nodeType":"YulIdentifier","src":"496:2:75"},"nativeSrc":"496:30:75","nodeType":"YulFunctionCall","src":"496:30:75"},"nativeSrc":"493:56:75","nodeType":"YulIf","src":"493:56:75"},{"nativeSrc":"558:48:75","nodeType":"YulAssignment","src":"558:48:75","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"578:6:75","nodeType":"YulIdentifier","src":"578:6:75"},{"kind":"number","nativeSrc":"586:2:75","nodeType":"YulLiteral","src":"586:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"574:3:75","nodeType":"YulIdentifier","src":"574:3:75"},"nativeSrc":"574:15:75","nodeType":"YulFunctionCall","src":"574:15:75"},{"arguments":[{"kind":"number","nativeSrc":"595:2:75","nodeType":"YulLiteral","src":"595:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"591:3:75","nodeType":"YulIdentifier","src":"591:3:75"},"nativeSrc":"591:7:75","nodeType":"YulFunctionCall","src":"591:7:75"}],"functionName":{"name":"and","nativeSrc":"570:3:75","nodeType":"YulIdentifier","src":"570:3:75"},"nativeSrc":"570:29:75","nodeType":"YulFunctionCall","src":"570:29:75"},{"kind":"number","nativeSrc":"601:4:75","nodeType":"YulLiteral","src":"601:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"566:3:75","nodeType":"YulIdentifier","src":"566:3:75"},"nativeSrc":"566:40:75","nodeType":"YulFunctionCall","src":"566:40:75"},"variableNames":[{"name":"size","nativeSrc":"558:4:75","nodeType":"YulIdentifier","src":"558:4:75"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"426:186:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"463:6:75","nodeType":"YulTypedName","src":"463:6:75","type":""}],"returnVariables":[{"name":"size","nativeSrc":"474:4:75","nodeType":"YulTypedName","src":"474:4:75","type":""}],"src":"426:186:75"},{"body":{"nativeSrc":"669:434:75","nodeType":"YulBlock","src":"669:434:75","statements":[{"body":{"nativeSrc":"718:16:75","nodeType":"YulBlock","src":"718:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"727:1:75","nodeType":"YulLiteral","src":"727:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"730:1:75","nodeType":"YulLiteral","src":"730:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"720:6:75","nodeType":"YulIdentifier","src":"720:6:75"},"nativeSrc":"720:12:75","nodeType":"YulFunctionCall","src":"720:12:75"},"nativeSrc":"720:12:75","nodeType":"YulExpressionStatement","src":"720:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"697:6:75","nodeType":"YulIdentifier","src":"697:6:75"},{"kind":"number","nativeSrc":"705:4:75","nodeType":"YulLiteral","src":"705:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"693:3:75","nodeType":"YulIdentifier","src":"693:3:75"},"nativeSrc":"693:17:75","nodeType":"YulFunctionCall","src":"693:17:75"},{"name":"end","nativeSrc":"712:3:75","nodeType":"YulIdentifier","src":"712:3:75"}],"functionName":{"name":"slt","nativeSrc":"689:3:75","nodeType":"YulIdentifier","src":"689:3:75"},"nativeSrc":"689:27:75","nodeType":"YulFunctionCall","src":"689:27:75"}],"functionName":{"name":"iszero","nativeSrc":"682:6:75","nodeType":"YulIdentifier","src":"682:6:75"},"nativeSrc":"682:35:75","nodeType":"YulFunctionCall","src":"682:35:75"},"nativeSrc":"679:55:75","nodeType":"YulIf","src":"679:55:75"},{"nativeSrc":"743:34:75","nodeType":"YulVariableDeclaration","src":"743:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"770:6:75","nodeType":"YulIdentifier","src":"770:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"757:12:75","nodeType":"YulIdentifier","src":"757:12:75"},"nativeSrc":"757:20:75","nodeType":"YulFunctionCall","src":"757:20:75"},"variables":[{"name":"length","nativeSrc":"747:6:75","nodeType":"YulTypedName","src":"747:6:75","type":""}]},{"nativeSrc":"786:67:75","nodeType":"YulVariableDeclaration","src":"786:67:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"845:6:75","nodeType":"YulIdentifier","src":"845:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"817:27:75","nodeType":"YulIdentifier","src":"817:27:75"},"nativeSrc":"817:35:75","nodeType":"YulFunctionCall","src":"817:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"801:15:75","nodeType":"YulIdentifier","src":"801:15:75"},"nativeSrc":"801:52:75","nodeType":"YulFunctionCall","src":"801:52:75"},"variables":[{"name":"array_1","nativeSrc":"790:7:75","nodeType":"YulTypedName","src":"790:7:75","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"869:7:75","nodeType":"YulIdentifier","src":"869:7:75"},{"name":"length","nativeSrc":"878:6:75","nodeType":"YulIdentifier","src":"878:6:75"}],"functionName":{"name":"mstore","nativeSrc":"862:6:75","nodeType":"YulIdentifier","src":"862:6:75"},"nativeSrc":"862:23:75","nodeType":"YulFunctionCall","src":"862:23:75"},"nativeSrc":"862:23:75","nodeType":"YulExpressionStatement","src":"862:23:75"},{"body":{"nativeSrc":"937:16:75","nodeType":"YulBlock","src":"937:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"946:1:75","nodeType":"YulLiteral","src":"946:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"949:1:75","nodeType":"YulLiteral","src":"949:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"939:6:75","nodeType":"YulIdentifier","src":"939:6:75"},"nativeSrc":"939:12:75","nodeType":"YulFunctionCall","src":"939:12:75"},"nativeSrc":"939:12:75","nodeType":"YulExpressionStatement","src":"939:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"908:6:75","nodeType":"YulIdentifier","src":"908:6:75"},{"name":"length","nativeSrc":"916:6:75","nodeType":"YulIdentifier","src":"916:6:75"}],"functionName":{"name":"add","nativeSrc":"904:3:75","nodeType":"YulIdentifier","src":"904:3:75"},"nativeSrc":"904:19:75","nodeType":"YulFunctionCall","src":"904:19:75"},{"kind":"number","nativeSrc":"925:4:75","nodeType":"YulLiteral","src":"925:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"900:3:75","nodeType":"YulIdentifier","src":"900:3:75"},"nativeSrc":"900:30:75","nodeType":"YulFunctionCall","src":"900:30:75"},{"name":"end","nativeSrc":"932:3:75","nodeType":"YulIdentifier","src":"932:3:75"}],"functionName":{"name":"gt","nativeSrc":"897:2:75","nodeType":"YulIdentifier","src":"897:2:75"},"nativeSrc":"897:39:75","nodeType":"YulFunctionCall","src":"897:39:75"},"nativeSrc":"894:59:75","nodeType":"YulIf","src":"894:59:75"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"979:7:75","nodeType":"YulIdentifier","src":"979:7:75"},{"kind":"number","nativeSrc":"988:4:75","nodeType":"YulLiteral","src":"988:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"975:3:75","nodeType":"YulIdentifier","src":"975:3:75"},"nativeSrc":"975:18:75","nodeType":"YulFunctionCall","src":"975:18:75"},{"arguments":[{"name":"offset","nativeSrc":"999:6:75","nodeType":"YulIdentifier","src":"999:6:75"},{"kind":"number","nativeSrc":"1007:4:75","nodeType":"YulLiteral","src":"1007:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"995:3:75","nodeType":"YulIdentifier","src":"995:3:75"},"nativeSrc":"995:17:75","nodeType":"YulFunctionCall","src":"995:17:75"},{"name":"length","nativeSrc":"1014:6:75","nodeType":"YulIdentifier","src":"1014:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"962:12:75","nodeType":"YulIdentifier","src":"962:12:75"},"nativeSrc":"962:59:75","nodeType":"YulFunctionCall","src":"962:59:75"},"nativeSrc":"962:59:75","nodeType":"YulExpressionStatement","src":"962:59:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"1045:7:75","nodeType":"YulIdentifier","src":"1045:7:75"},{"name":"length","nativeSrc":"1054:6:75","nodeType":"YulIdentifier","src":"1054:6:75"}],"functionName":{"name":"add","nativeSrc":"1041:3:75","nodeType":"YulIdentifier","src":"1041:3:75"},"nativeSrc":"1041:20:75","nodeType":"YulFunctionCall","src":"1041:20:75"},{"kind":"number","nativeSrc":"1063:4:75","nodeType":"YulLiteral","src":"1063:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1037:3:75","nodeType":"YulIdentifier","src":"1037:3:75"},"nativeSrc":"1037:31:75","nodeType":"YulFunctionCall","src":"1037:31:75"},{"kind":"number","nativeSrc":"1070:1:75","nodeType":"YulLiteral","src":"1070:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1030:6:75","nodeType":"YulIdentifier","src":"1030:6:75"},"nativeSrc":"1030:42:75","nodeType":"YulFunctionCall","src":"1030:42:75"},"nativeSrc":"1030:42:75","nodeType":"YulExpressionStatement","src":"1030:42:75"},{"nativeSrc":"1081:16:75","nodeType":"YulAssignment","src":"1081:16:75","value":{"name":"array_1","nativeSrc":"1090:7:75","nodeType":"YulIdentifier","src":"1090:7:75"},"variableNames":[{"name":"array","nativeSrc":"1081:5:75","nodeType":"YulIdentifier","src":"1081:5:75"}]}]},"name":"abi_decode_bytes","nativeSrc":"617:486:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"643:6:75","nodeType":"YulTypedName","src":"643:6:75","type":""},{"name":"end","nativeSrc":"651:3:75","nodeType":"YulTypedName","src":"651:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"659:5:75","nodeType":"YulTypedName","src":"659:5:75","type":""}],"src":"617:486:75"},{"body":{"nativeSrc":"1202:383:75","nodeType":"YulBlock","src":"1202:383:75","statements":[{"body":{"nativeSrc":"1248:16:75","nodeType":"YulBlock","src":"1248:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1257:1:75","nodeType":"YulLiteral","src":"1257:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1260:1:75","nodeType":"YulLiteral","src":"1260:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1250:6:75","nodeType":"YulIdentifier","src":"1250:6:75"},"nativeSrc":"1250:12:75","nodeType":"YulFunctionCall","src":"1250:12:75"},"nativeSrc":"1250:12:75","nodeType":"YulExpressionStatement","src":"1250:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1223:7:75","nodeType":"YulIdentifier","src":"1223:7:75"},{"name":"headStart","nativeSrc":"1232:9:75","nodeType":"YulIdentifier","src":"1232:9:75"}],"functionName":{"name":"sub","nativeSrc":"1219:3:75","nodeType":"YulIdentifier","src":"1219:3:75"},"nativeSrc":"1219:23:75","nodeType":"YulFunctionCall","src":"1219:23:75"},{"kind":"number","nativeSrc":"1244:2:75","nodeType":"YulLiteral","src":"1244:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1215:3:75","nodeType":"YulIdentifier","src":"1215:3:75"},"nativeSrc":"1215:32:75","nodeType":"YulFunctionCall","src":"1215:32:75"},"nativeSrc":"1212:52:75","nodeType":"YulIf","src":"1212:52:75"},{"nativeSrc":"1273:36:75","nodeType":"YulVariableDeclaration","src":"1273:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1299:9:75","nodeType":"YulIdentifier","src":"1299:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"1286:12:75","nodeType":"YulIdentifier","src":"1286:12:75"},"nativeSrc":"1286:23:75","nodeType":"YulFunctionCall","src":"1286:23:75"},"variables":[{"name":"value","nativeSrc":"1277:5:75","nodeType":"YulTypedName","src":"1277:5:75","type":""}]},{"body":{"nativeSrc":"1357:16:75","nodeType":"YulBlock","src":"1357:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1366:1:75","nodeType":"YulLiteral","src":"1366:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1369:1:75","nodeType":"YulLiteral","src":"1369:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1359:6:75","nodeType":"YulIdentifier","src":"1359:6:75"},"nativeSrc":"1359:12:75","nodeType":"YulFunctionCall","src":"1359:12:75"},"nativeSrc":"1359:12:75","nodeType":"YulExpressionStatement","src":"1359:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1331:5:75","nodeType":"YulIdentifier","src":"1331:5:75"},{"arguments":[{"name":"value","nativeSrc":"1342:5:75","nodeType":"YulIdentifier","src":"1342:5:75"},{"kind":"number","nativeSrc":"1349:4:75","nodeType":"YulLiteral","src":"1349:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1338:3:75","nodeType":"YulIdentifier","src":"1338:3:75"},"nativeSrc":"1338:16:75","nodeType":"YulFunctionCall","src":"1338:16:75"}],"functionName":{"name":"eq","nativeSrc":"1328:2:75","nodeType":"YulIdentifier","src":"1328:2:75"},"nativeSrc":"1328:27:75","nodeType":"YulFunctionCall","src":"1328:27:75"}],"functionName":{"name":"iszero","nativeSrc":"1321:6:75","nodeType":"YulIdentifier","src":"1321:6:75"},"nativeSrc":"1321:35:75","nodeType":"YulFunctionCall","src":"1321:35:75"},"nativeSrc":"1318:55:75","nodeType":"YulIf","src":"1318:55:75"},{"nativeSrc":"1382:15:75","nodeType":"YulAssignment","src":"1382:15:75","value":{"name":"value","nativeSrc":"1392:5:75","nodeType":"YulIdentifier","src":"1392:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1382:6:75","nodeType":"YulIdentifier","src":"1382:6:75"}]},{"nativeSrc":"1406:46:75","nodeType":"YulVariableDeclaration","src":"1406:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1437:9:75","nodeType":"YulIdentifier","src":"1437:9:75"},{"kind":"number","nativeSrc":"1448:2:75","nodeType":"YulLiteral","src":"1448:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1433:3:75","nodeType":"YulIdentifier","src":"1433:3:75"},"nativeSrc":"1433:18:75","nodeType":"YulFunctionCall","src":"1433:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"1420:12:75","nodeType":"YulIdentifier","src":"1420:12:75"},"nativeSrc":"1420:32:75","nodeType":"YulFunctionCall","src":"1420:32:75"},"variables":[{"name":"offset","nativeSrc":"1410:6:75","nodeType":"YulTypedName","src":"1410:6:75","type":""}]},{"body":{"nativeSrc":"1495:16:75","nodeType":"YulBlock","src":"1495:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1504:1:75","nodeType":"YulLiteral","src":"1504:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1507:1:75","nodeType":"YulLiteral","src":"1507:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1497:6:75","nodeType":"YulIdentifier","src":"1497:6:75"},"nativeSrc":"1497:12:75","nodeType":"YulFunctionCall","src":"1497:12:75"},"nativeSrc":"1497:12:75","nodeType":"YulExpressionStatement","src":"1497:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1467:6:75","nodeType":"YulIdentifier","src":"1467:6:75"},{"kind":"number","nativeSrc":"1475:18:75","nodeType":"YulLiteral","src":"1475:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1464:2:75","nodeType":"YulIdentifier","src":"1464:2:75"},"nativeSrc":"1464:30:75","nodeType":"YulFunctionCall","src":"1464:30:75"},"nativeSrc":"1461:50:75","nodeType":"YulIf","src":"1461:50:75"},{"nativeSrc":"1520:59:75","nodeType":"YulAssignment","src":"1520:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1551:9:75","nodeType":"YulIdentifier","src":"1551:9:75"},{"name":"offset","nativeSrc":"1562:6:75","nodeType":"YulIdentifier","src":"1562:6:75"}],"functionName":{"name":"add","nativeSrc":"1547:3:75","nodeType":"YulIdentifier","src":"1547:3:75"},"nativeSrc":"1547:22:75","nodeType":"YulFunctionCall","src":"1547:22:75"},{"name":"dataEnd","nativeSrc":"1571:7:75","nodeType":"YulIdentifier","src":"1571:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"1530:16:75","nodeType":"YulIdentifier","src":"1530:16:75"},"nativeSrc":"1530:49:75","nodeType":"YulFunctionCall","src":"1530:49:75"},"variableNames":[{"name":"value1","nativeSrc":"1520:6:75","nodeType":"YulIdentifier","src":"1520:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"1108:477:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1160:9:75","nodeType":"YulTypedName","src":"1160:9:75","type":""},{"name":"dataEnd","nativeSrc":"1171:7:75","nodeType":"YulTypedName","src":"1171:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1183:6:75","nodeType":"YulTypedName","src":"1183:6:75","type":""},{"name":"value1","nativeSrc":"1191:6:75","nodeType":"YulTypedName","src":"1191:6:75","type":""}],"src":"1108:477:75"},{"body":{"nativeSrc":"1709:297:75","nodeType":"YulBlock","src":"1709:297:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1726:9:75","nodeType":"YulIdentifier","src":"1726:9:75"},{"kind":"number","nativeSrc":"1737:2:75","nodeType":"YulLiteral","src":"1737:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1719:6:75","nodeType":"YulIdentifier","src":"1719:6:75"},"nativeSrc":"1719:21:75","nodeType":"YulFunctionCall","src":"1719:21:75"},"nativeSrc":"1719:21:75","nodeType":"YulExpressionStatement","src":"1719:21:75"},{"nativeSrc":"1749:27:75","nodeType":"YulVariableDeclaration","src":"1749:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"1769:6:75","nodeType":"YulIdentifier","src":"1769:6:75"}],"functionName":{"name":"mload","nativeSrc":"1763:5:75","nodeType":"YulIdentifier","src":"1763:5:75"},"nativeSrc":"1763:13:75","nodeType":"YulFunctionCall","src":"1763:13:75"},"variables":[{"name":"length","nativeSrc":"1753:6:75","nodeType":"YulTypedName","src":"1753:6:75","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1796:9:75","nodeType":"YulIdentifier","src":"1796:9:75"},{"kind":"number","nativeSrc":"1807:2:75","nodeType":"YulLiteral","src":"1807:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1792:3:75","nodeType":"YulIdentifier","src":"1792:3:75"},"nativeSrc":"1792:18:75","nodeType":"YulFunctionCall","src":"1792:18:75"},{"name":"length","nativeSrc":"1812:6:75","nodeType":"YulIdentifier","src":"1812:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1785:6:75","nodeType":"YulIdentifier","src":"1785:6:75"},"nativeSrc":"1785:34:75","nodeType":"YulFunctionCall","src":"1785:34:75"},"nativeSrc":"1785:34:75","nodeType":"YulExpressionStatement","src":"1785:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1838:9:75","nodeType":"YulIdentifier","src":"1838:9:75"},{"kind":"number","nativeSrc":"1849:2:75","nodeType":"YulLiteral","src":"1849:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1834:3:75","nodeType":"YulIdentifier","src":"1834:3:75"},"nativeSrc":"1834:18:75","nodeType":"YulFunctionCall","src":"1834:18:75"},{"arguments":[{"name":"value0","nativeSrc":"1858:6:75","nodeType":"YulIdentifier","src":"1858:6:75"},{"kind":"number","nativeSrc":"1866:2:75","nodeType":"YulLiteral","src":"1866:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1854:3:75","nodeType":"YulIdentifier","src":"1854:3:75"},"nativeSrc":"1854:15:75","nodeType":"YulFunctionCall","src":"1854:15:75"},{"name":"length","nativeSrc":"1871:6:75","nodeType":"YulIdentifier","src":"1871:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"1828:5:75","nodeType":"YulIdentifier","src":"1828:5:75"},"nativeSrc":"1828:50:75","nodeType":"YulFunctionCall","src":"1828:50:75"},"nativeSrc":"1828:50:75","nodeType":"YulExpressionStatement","src":"1828:50:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1902:9:75","nodeType":"YulIdentifier","src":"1902:9:75"},{"name":"length","nativeSrc":"1913:6:75","nodeType":"YulIdentifier","src":"1913:6:75"}],"functionName":{"name":"add","nativeSrc":"1898:3:75","nodeType":"YulIdentifier","src":"1898:3:75"},"nativeSrc":"1898:22:75","nodeType":"YulFunctionCall","src":"1898:22:75"},{"kind":"number","nativeSrc":"1922:2:75","nodeType":"YulLiteral","src":"1922:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1894:3:75","nodeType":"YulIdentifier","src":"1894:3:75"},"nativeSrc":"1894:31:75","nodeType":"YulFunctionCall","src":"1894:31:75"},{"kind":"number","nativeSrc":"1927:1:75","nodeType":"YulLiteral","src":"1927:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1887:6:75","nodeType":"YulIdentifier","src":"1887:6:75"},"nativeSrc":"1887:42:75","nodeType":"YulFunctionCall","src":"1887:42:75"},"nativeSrc":"1887:42:75","nodeType":"YulExpressionStatement","src":"1887:42:75"},{"nativeSrc":"1938:62:75","nodeType":"YulAssignment","src":"1938:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1954:9:75","nodeType":"YulIdentifier","src":"1954:9:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1973:6:75","nodeType":"YulIdentifier","src":"1973:6:75"},{"kind":"number","nativeSrc":"1981:2:75","nodeType":"YulLiteral","src":"1981:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1969:3:75","nodeType":"YulIdentifier","src":"1969:3:75"},"nativeSrc":"1969:15:75","nodeType":"YulFunctionCall","src":"1969:15:75"},{"arguments":[{"kind":"number","nativeSrc":"1990:2:75","nodeType":"YulLiteral","src":"1990:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1986:3:75","nodeType":"YulIdentifier","src":"1986:3:75"},"nativeSrc":"1986:7:75","nodeType":"YulFunctionCall","src":"1986:7:75"}],"functionName":{"name":"and","nativeSrc":"1965:3:75","nodeType":"YulIdentifier","src":"1965:3:75"},"nativeSrc":"1965:29:75","nodeType":"YulFunctionCall","src":"1965:29:75"}],"functionName":{"name":"add","nativeSrc":"1950:3:75","nodeType":"YulIdentifier","src":"1950:3:75"},"nativeSrc":"1950:45:75","nodeType":"YulFunctionCall","src":"1950:45:75"},{"kind":"number","nativeSrc":"1997:2:75","nodeType":"YulLiteral","src":"1997:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1946:3:75","nodeType":"YulIdentifier","src":"1946:3:75"},"nativeSrc":"1946:54:75","nodeType":"YulFunctionCall","src":"1946:54:75"},"variableNames":[{"name":"tail","nativeSrc":"1938:4:75","nodeType":"YulIdentifier","src":"1938:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"1590:416:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1678:9:75","nodeType":"YulTypedName","src":"1678:9:75","type":""},{"name":"value0","nativeSrc":"1689:6:75","nodeType":"YulTypedName","src":"1689:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1700:4:75","nodeType":"YulTypedName","src":"1700:4:75","type":""}],"src":"1590:416:75"},{"body":{"nativeSrc":"2081:110:75","nodeType":"YulBlock","src":"2081:110:75","statements":[{"body":{"nativeSrc":"2127:16:75","nodeType":"YulBlock","src":"2127:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2136:1:75","nodeType":"YulLiteral","src":"2136:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2139:1:75","nodeType":"YulLiteral","src":"2139:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2129:6:75","nodeType":"YulIdentifier","src":"2129:6:75"},"nativeSrc":"2129:12:75","nodeType":"YulFunctionCall","src":"2129:12:75"},"nativeSrc":"2129:12:75","nodeType":"YulExpressionStatement","src":"2129:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2102:7:75","nodeType":"YulIdentifier","src":"2102:7:75"},{"name":"headStart","nativeSrc":"2111:9:75","nodeType":"YulIdentifier","src":"2111:9:75"}],"functionName":{"name":"sub","nativeSrc":"2098:3:75","nodeType":"YulIdentifier","src":"2098:3:75"},"nativeSrc":"2098:23:75","nodeType":"YulFunctionCall","src":"2098:23:75"},{"kind":"number","nativeSrc":"2123:2:75","nodeType":"YulLiteral","src":"2123:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2094:3:75","nodeType":"YulIdentifier","src":"2094:3:75"},"nativeSrc":"2094:32:75","nodeType":"YulFunctionCall","src":"2094:32:75"},"nativeSrc":"2091:52:75","nodeType":"YulIf","src":"2091:52:75"},{"nativeSrc":"2152:33:75","nodeType":"YulAssignment","src":"2152:33:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2175:9:75","nodeType":"YulIdentifier","src":"2175:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2162:12:75","nodeType":"YulIdentifier","src":"2162:12:75"},"nativeSrc":"2162:23:75","nodeType":"YulFunctionCall","src":"2162:23:75"},"variableNames":[{"name":"value0","nativeSrc":"2152:6:75","nodeType":"YulIdentifier","src":"2152:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"2011:180:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2047:9:75","nodeType":"YulTypedName","src":"2047:9:75","type":""},{"name":"dataEnd","nativeSrc":"2058:7:75","nodeType":"YulTypedName","src":"2058:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2070:6:75","nodeType":"YulTypedName","src":"2070:6:75","type":""}],"src":"2011:180:75"},{"body":{"nativeSrc":"2266:216:75","nodeType":"YulBlock","src":"2266:216:75","statements":[{"body":{"nativeSrc":"2312:16:75","nodeType":"YulBlock","src":"2312:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2321:1:75","nodeType":"YulLiteral","src":"2321:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2324:1:75","nodeType":"YulLiteral","src":"2324:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2314:6:75","nodeType":"YulIdentifier","src":"2314:6:75"},"nativeSrc":"2314:12:75","nodeType":"YulFunctionCall","src":"2314:12:75"},"nativeSrc":"2314:12:75","nodeType":"YulExpressionStatement","src":"2314:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2287:7:75","nodeType":"YulIdentifier","src":"2287:7:75"},{"name":"headStart","nativeSrc":"2296:9:75","nodeType":"YulIdentifier","src":"2296:9:75"}],"functionName":{"name":"sub","nativeSrc":"2283:3:75","nodeType":"YulIdentifier","src":"2283:3:75"},"nativeSrc":"2283:23:75","nodeType":"YulFunctionCall","src":"2283:23:75"},{"kind":"number","nativeSrc":"2308:2:75","nodeType":"YulLiteral","src":"2308:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2279:3:75","nodeType":"YulIdentifier","src":"2279:3:75"},"nativeSrc":"2279:32:75","nodeType":"YulFunctionCall","src":"2279:32:75"},"nativeSrc":"2276:52:75","nodeType":"YulIf","src":"2276:52:75"},{"nativeSrc":"2337:36:75","nodeType":"YulVariableDeclaration","src":"2337:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2363:9:75","nodeType":"YulIdentifier","src":"2363:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2350:12:75","nodeType":"YulIdentifier","src":"2350:12:75"},"nativeSrc":"2350:23:75","nodeType":"YulFunctionCall","src":"2350:23:75"},"variables":[{"name":"value","nativeSrc":"2341:5:75","nodeType":"YulTypedName","src":"2341:5:75","type":""}]},{"body":{"nativeSrc":"2436:16:75","nodeType":"YulBlock","src":"2436:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2445:1:75","nodeType":"YulLiteral","src":"2445:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2448:1:75","nodeType":"YulLiteral","src":"2448:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2438:6:75","nodeType":"YulIdentifier","src":"2438:6:75"},"nativeSrc":"2438:12:75","nodeType":"YulFunctionCall","src":"2438:12:75"},"nativeSrc":"2438:12:75","nodeType":"YulExpressionStatement","src":"2438:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2395:5:75","nodeType":"YulIdentifier","src":"2395:5:75"},{"arguments":[{"name":"value","nativeSrc":"2406:5:75","nodeType":"YulIdentifier","src":"2406:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2421:3:75","nodeType":"YulLiteral","src":"2421:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"2426:1:75","nodeType":"YulLiteral","src":"2426:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2417:3:75","nodeType":"YulIdentifier","src":"2417:3:75"},"nativeSrc":"2417:11:75","nodeType":"YulFunctionCall","src":"2417:11:75"},{"kind":"number","nativeSrc":"2430:1:75","nodeType":"YulLiteral","src":"2430:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2413:3:75","nodeType":"YulIdentifier","src":"2413:3:75"},"nativeSrc":"2413:19:75","nodeType":"YulFunctionCall","src":"2413:19:75"}],"functionName":{"name":"and","nativeSrc":"2402:3:75","nodeType":"YulIdentifier","src":"2402:3:75"},"nativeSrc":"2402:31:75","nodeType":"YulFunctionCall","src":"2402:31:75"}],"functionName":{"name":"eq","nativeSrc":"2392:2:75","nodeType":"YulIdentifier","src":"2392:2:75"},"nativeSrc":"2392:42:75","nodeType":"YulFunctionCall","src":"2392:42:75"}],"functionName":{"name":"iszero","nativeSrc":"2385:6:75","nodeType":"YulIdentifier","src":"2385:6:75"},"nativeSrc":"2385:50:75","nodeType":"YulFunctionCall","src":"2385:50:75"},"nativeSrc":"2382:70:75","nodeType":"YulIf","src":"2382:70:75"},{"nativeSrc":"2461:15:75","nodeType":"YulAssignment","src":"2461:15:75","value":{"name":"value","nativeSrc":"2471:5:75","nodeType":"YulIdentifier","src":"2471:5:75"},"variableNames":[{"name":"value0","nativeSrc":"2461:6:75","nodeType":"YulIdentifier","src":"2461:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2196:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2232:9:75","nodeType":"YulTypedName","src":"2232:9:75","type":""},{"name":"dataEnd","nativeSrc":"2243:7:75","nodeType":"YulTypedName","src":"2243:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2255:6:75","nodeType":"YulTypedName","src":"2255:6:75","type":""}],"src":"2196:286:75"},{"body":{"nativeSrc":"2588:76:75","nodeType":"YulBlock","src":"2588:76:75","statements":[{"nativeSrc":"2598:26:75","nodeType":"YulAssignment","src":"2598:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2610:9:75","nodeType":"YulIdentifier","src":"2610:9:75"},{"kind":"number","nativeSrc":"2621:2:75","nodeType":"YulLiteral","src":"2621:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2606:3:75","nodeType":"YulIdentifier","src":"2606:3:75"},"nativeSrc":"2606:18:75","nodeType":"YulFunctionCall","src":"2606:18:75"},"variableNames":[{"name":"tail","nativeSrc":"2598:4:75","nodeType":"YulIdentifier","src":"2598:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2640:9:75","nodeType":"YulIdentifier","src":"2640:9:75"},{"name":"value0","nativeSrc":"2651:6:75","nodeType":"YulIdentifier","src":"2651:6:75"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:75","nodeType":"YulIdentifier","src":"2633:6:75"},"nativeSrc":"2633:25:75","nodeType":"YulFunctionCall","src":"2633:25:75"},"nativeSrc":"2633:25:75","nodeType":"YulExpressionStatement","src":"2633:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2487:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2557:9:75","nodeType":"YulTypedName","src":"2557:9:75","type":""},{"name":"value0","nativeSrc":"2568:6:75","nodeType":"YulTypedName","src":"2568:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2579:4:75","nodeType":"YulTypedName","src":"2579:4:75","type":""}],"src":"2487:177:75"},{"body":{"nativeSrc":"2711:76:75","nodeType":"YulBlock","src":"2711:76:75","statements":[{"body":{"nativeSrc":"2765:16:75","nodeType":"YulBlock","src":"2765:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2774:1:75","nodeType":"YulLiteral","src":"2774:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2777:1:75","nodeType":"YulLiteral","src":"2777:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2767:6:75","nodeType":"YulIdentifier","src":"2767:6:75"},"nativeSrc":"2767:12:75","nodeType":"YulFunctionCall","src":"2767:12:75"},"nativeSrc":"2767:12:75","nodeType":"YulExpressionStatement","src":"2767:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2734:5:75","nodeType":"YulIdentifier","src":"2734:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2755:5:75","nodeType":"YulIdentifier","src":"2755:5:75"}],"functionName":{"name":"iszero","nativeSrc":"2748:6:75","nodeType":"YulIdentifier","src":"2748:6:75"},"nativeSrc":"2748:13:75","nodeType":"YulFunctionCall","src":"2748:13:75"}],"functionName":{"name":"iszero","nativeSrc":"2741:6:75","nodeType":"YulIdentifier","src":"2741:6:75"},"nativeSrc":"2741:21:75","nodeType":"YulFunctionCall","src":"2741:21:75"}],"functionName":{"name":"eq","nativeSrc":"2731:2:75","nodeType":"YulIdentifier","src":"2731:2:75"},"nativeSrc":"2731:32:75","nodeType":"YulFunctionCall","src":"2731:32:75"}],"functionName":{"name":"iszero","nativeSrc":"2724:6:75","nodeType":"YulIdentifier","src":"2724:6:75"},"nativeSrc":"2724:40:75","nodeType":"YulFunctionCall","src":"2724:40:75"},"nativeSrc":"2721:60:75","nodeType":"YulIf","src":"2721:60:75"}]},"name":"validator_revert_bool","nativeSrc":"2669:118:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2700:5:75","nodeType":"YulTypedName","src":"2700:5:75","type":""}],"src":"2669:118:75"},{"body":{"nativeSrc":"2859:174:75","nodeType":"YulBlock","src":"2859:174:75","statements":[{"body":{"nativeSrc":"2905:16:75","nodeType":"YulBlock","src":"2905:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2914:1:75","nodeType":"YulLiteral","src":"2914:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2917:1:75","nodeType":"YulLiteral","src":"2917:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2907:6:75","nodeType":"YulIdentifier","src":"2907:6:75"},"nativeSrc":"2907:12:75","nodeType":"YulFunctionCall","src":"2907:12:75"},"nativeSrc":"2907:12:75","nodeType":"YulExpressionStatement","src":"2907:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2880:7:75","nodeType":"YulIdentifier","src":"2880:7:75"},{"name":"headStart","nativeSrc":"2889:9:75","nodeType":"YulIdentifier","src":"2889:9:75"}],"functionName":{"name":"sub","nativeSrc":"2876:3:75","nodeType":"YulIdentifier","src":"2876:3:75"},"nativeSrc":"2876:23:75","nodeType":"YulFunctionCall","src":"2876:23:75"},{"kind":"number","nativeSrc":"2901:2:75","nodeType":"YulLiteral","src":"2901:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2872:3:75","nodeType":"YulIdentifier","src":"2872:3:75"},"nativeSrc":"2872:32:75","nodeType":"YulFunctionCall","src":"2872:32:75"},"nativeSrc":"2869:52:75","nodeType":"YulIf","src":"2869:52:75"},{"nativeSrc":"2930:36:75","nodeType":"YulVariableDeclaration","src":"2930:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2956:9:75","nodeType":"YulIdentifier","src":"2956:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2943:12:75","nodeType":"YulIdentifier","src":"2943:12:75"},"nativeSrc":"2943:23:75","nodeType":"YulFunctionCall","src":"2943:23:75"},"variables":[{"name":"value","nativeSrc":"2934:5:75","nodeType":"YulTypedName","src":"2934:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2997:5:75","nodeType":"YulIdentifier","src":"2997:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"2975:21:75","nodeType":"YulIdentifier","src":"2975:21:75"},"nativeSrc":"2975:28:75","nodeType":"YulFunctionCall","src":"2975:28:75"},"nativeSrc":"2975:28:75","nodeType":"YulExpressionStatement","src":"2975:28:75"},{"nativeSrc":"3012:15:75","nodeType":"YulAssignment","src":"3012:15:75","value":{"name":"value","nativeSrc":"3022:5:75","nodeType":"YulIdentifier","src":"3022:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3012:6:75","nodeType":"YulIdentifier","src":"3012:6:75"}]}]},"name":"abi_decode_tuple_t_bool","nativeSrc":"2792:241:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2825:9:75","nodeType":"YulTypedName","src":"2825:9:75","type":""},{"name":"dataEnd","nativeSrc":"2836:7:75","nodeType":"YulTypedName","src":"2836:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2848:6:75","nodeType":"YulTypedName","src":"2848:6:75","type":""}],"src":"2792:241:75"},{"body":{"nativeSrc":"3139:76:75","nodeType":"YulBlock","src":"3139:76:75","statements":[{"nativeSrc":"3149:26:75","nodeType":"YulAssignment","src":"3149:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3161:9:75","nodeType":"YulIdentifier","src":"3161:9:75"},{"kind":"number","nativeSrc":"3172:2:75","nodeType":"YulLiteral","src":"3172:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3157:3:75","nodeType":"YulIdentifier","src":"3157:3:75"},"nativeSrc":"3157:18:75","nodeType":"YulFunctionCall","src":"3157:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3149:4:75","nodeType":"YulIdentifier","src":"3149:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3191:9:75","nodeType":"YulIdentifier","src":"3191:9:75"},{"name":"value0","nativeSrc":"3202:6:75","nodeType":"YulIdentifier","src":"3202:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3184:6:75","nodeType":"YulIdentifier","src":"3184:6:75"},"nativeSrc":"3184:25:75","nodeType":"YulFunctionCall","src":"3184:25:75"},"nativeSrc":"3184:25:75","nodeType":"YulExpressionStatement","src":"3184:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"3038:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3108:9:75","nodeType":"YulTypedName","src":"3108:9:75","type":""},{"name":"value0","nativeSrc":"3119:6:75","nodeType":"YulTypedName","src":"3119:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3130:4:75","nodeType":"YulTypedName","src":"3130:4:75","type":""}],"src":"3038:177:75"},{"body":{"nativeSrc":"3383:337:75","nodeType":"YulBlock","src":"3383:337:75","statements":[{"nativeSrc":"3393:27:75","nodeType":"YulAssignment","src":"3393:27:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3405:9:75","nodeType":"YulIdentifier","src":"3405:9:75"},{"kind":"number","nativeSrc":"3416:3:75","nodeType":"YulLiteral","src":"3416:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3401:3:75","nodeType":"YulIdentifier","src":"3401:3:75"},"nativeSrc":"3401:19:75","nodeType":"YulFunctionCall","src":"3401:19:75"},"variableNames":[{"name":"tail","nativeSrc":"3393:4:75","nodeType":"YulIdentifier","src":"3393:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3436:9:75","nodeType":"YulIdentifier","src":"3436:9:75"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3467:6:75","nodeType":"YulIdentifier","src":"3467:6:75"}],"functionName":{"name":"mload","nativeSrc":"3461:5:75","nodeType":"YulIdentifier","src":"3461:5:75"},"nativeSrc":"3461:13:75","nodeType":"YulFunctionCall","src":"3461:13:75"}],"functionName":{"name":"iszero","nativeSrc":"3454:6:75","nodeType":"YulIdentifier","src":"3454:6:75"},"nativeSrc":"3454:21:75","nodeType":"YulFunctionCall","src":"3454:21:75"}],"functionName":{"name":"iszero","nativeSrc":"3447:6:75","nodeType":"YulIdentifier","src":"3447:6:75"},"nativeSrc":"3447:29:75","nodeType":"YulFunctionCall","src":"3447:29:75"}],"functionName":{"name":"mstore","nativeSrc":"3429:6:75","nodeType":"YulIdentifier","src":"3429:6:75"},"nativeSrc":"3429:48:75","nodeType":"YulFunctionCall","src":"3429:48:75"},"nativeSrc":"3429:48:75","nodeType":"YulExpressionStatement","src":"3429:48:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3497:9:75","nodeType":"YulIdentifier","src":"3497:9:75"},{"kind":"number","nativeSrc":"3508:4:75","nodeType":"YulLiteral","src":"3508:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3493:3:75","nodeType":"YulIdentifier","src":"3493:3:75"},"nativeSrc":"3493:20:75","nodeType":"YulFunctionCall","src":"3493:20:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3539:6:75","nodeType":"YulIdentifier","src":"3539:6:75"},{"kind":"number","nativeSrc":"3547:4:75","nodeType":"YulLiteral","src":"3547:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3535:3:75","nodeType":"YulIdentifier","src":"3535:3:75"},"nativeSrc":"3535:17:75","nodeType":"YulFunctionCall","src":"3535:17:75"}],"functionName":{"name":"mload","nativeSrc":"3529:5:75","nodeType":"YulIdentifier","src":"3529:5:75"},"nativeSrc":"3529:24:75","nodeType":"YulFunctionCall","src":"3529:24:75"}],"functionName":{"name":"iszero","nativeSrc":"3522:6:75","nodeType":"YulIdentifier","src":"3522:6:75"},"nativeSrc":"3522:32:75","nodeType":"YulFunctionCall","src":"3522:32:75"}],"functionName":{"name":"iszero","nativeSrc":"3515:6:75","nodeType":"YulIdentifier","src":"3515:6:75"},"nativeSrc":"3515:40:75","nodeType":"YulFunctionCall","src":"3515:40:75"}],"functionName":{"name":"mstore","nativeSrc":"3486:6:75","nodeType":"YulIdentifier","src":"3486:6:75"},"nativeSrc":"3486:70:75","nodeType":"YulFunctionCall","src":"3486:70:75"},"nativeSrc":"3486:70:75","nodeType":"YulExpressionStatement","src":"3486:70:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3576:9:75","nodeType":"YulIdentifier","src":"3576:9:75"},{"kind":"number","nativeSrc":"3587:4:75","nodeType":"YulLiteral","src":"3587:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3572:3:75","nodeType":"YulIdentifier","src":"3572:3:75"},"nativeSrc":"3572:20:75","nodeType":"YulFunctionCall","src":"3572:20:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3618:6:75","nodeType":"YulIdentifier","src":"3618:6:75"},{"kind":"number","nativeSrc":"3626:4:75","nodeType":"YulLiteral","src":"3626:4:75","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3614:3:75","nodeType":"YulIdentifier","src":"3614:3:75"},"nativeSrc":"3614:17:75","nodeType":"YulFunctionCall","src":"3614:17:75"}],"functionName":{"name":"mload","nativeSrc":"3608:5:75","nodeType":"YulIdentifier","src":"3608:5:75"},"nativeSrc":"3608:24:75","nodeType":"YulFunctionCall","src":"3608:24:75"}],"functionName":{"name":"iszero","nativeSrc":"3601:6:75","nodeType":"YulIdentifier","src":"3601:6:75"},"nativeSrc":"3601:32:75","nodeType":"YulFunctionCall","src":"3601:32:75"}],"functionName":{"name":"iszero","nativeSrc":"3594:6:75","nodeType":"YulIdentifier","src":"3594:6:75"},"nativeSrc":"3594:40:75","nodeType":"YulFunctionCall","src":"3594:40:75"}],"functionName":{"name":"mstore","nativeSrc":"3565:6:75","nodeType":"YulIdentifier","src":"3565:6:75"},"nativeSrc":"3565:70:75","nodeType":"YulFunctionCall","src":"3565:70:75"},"nativeSrc":"3565:70:75","nodeType":"YulExpressionStatement","src":"3565:70:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3655:9:75","nodeType":"YulIdentifier","src":"3655:9:75"},{"kind":"number","nativeSrc":"3666:4:75","nodeType":"YulLiteral","src":"3666:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3651:3:75","nodeType":"YulIdentifier","src":"3651:3:75"},"nativeSrc":"3651:20:75","nodeType":"YulFunctionCall","src":"3651:20:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3697:6:75","nodeType":"YulIdentifier","src":"3697:6:75"},{"kind":"number","nativeSrc":"3705:4:75","nodeType":"YulLiteral","src":"3705:4:75","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3693:3:75","nodeType":"YulIdentifier","src":"3693:3:75"},"nativeSrc":"3693:17:75","nodeType":"YulFunctionCall","src":"3693:17:75"}],"functionName":{"name":"mload","nativeSrc":"3687:5:75","nodeType":"YulIdentifier","src":"3687:5:75"},"nativeSrc":"3687:24:75","nodeType":"YulFunctionCall","src":"3687:24:75"}],"functionName":{"name":"iszero","nativeSrc":"3680:6:75","nodeType":"YulIdentifier","src":"3680:6:75"},"nativeSrc":"3680:32:75","nodeType":"YulFunctionCall","src":"3680:32:75"}],"functionName":{"name":"iszero","nativeSrc":"3673:6:75","nodeType":"YulIdentifier","src":"3673:6:75"},"nativeSrc":"3673:40:75","nodeType":"YulFunctionCall","src":"3673:40:75"}],"functionName":{"name":"mstore","nativeSrc":"3644:6:75","nodeType":"YulIdentifier","src":"3644:6:75"},"nativeSrc":"3644:70:75","nodeType":"YulFunctionCall","src":"3644:70:75"},"nativeSrc":"3644:70:75","nodeType":"YulExpressionStatement","src":"3644:70:75"}]},"name":"abi_encode_tuple_t_struct$_DummyStorage_$22443_memory_ptr__to_t_struct$_DummyStorage_$22443_memory_ptr__fromStack_reversed","nativeSrc":"3220:500:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3352:9:75","nodeType":"YulTypedName","src":"3352:9:75","type":""},{"name":"value0","nativeSrc":"3363:6:75","nodeType":"YulTypedName","src":"3363:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3374:4:75","nodeType":"YulTypedName","src":"3374:4:75","type":""}],"src":"3220:500:75"},{"body":{"nativeSrc":"3826:102:75","nodeType":"YulBlock","src":"3826:102:75","statements":[{"nativeSrc":"3836:26:75","nodeType":"YulAssignment","src":"3836:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3848:9:75","nodeType":"YulIdentifier","src":"3848:9:75"},{"kind":"number","nativeSrc":"3859:2:75","nodeType":"YulLiteral","src":"3859:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3844:3:75","nodeType":"YulIdentifier","src":"3844:3:75"},"nativeSrc":"3844:18:75","nodeType":"YulFunctionCall","src":"3844:18:75"},"variableNames":[{"name":"tail","nativeSrc":"3836:4:75","nodeType":"YulIdentifier","src":"3836:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3878:9:75","nodeType":"YulIdentifier","src":"3878:9:75"},{"arguments":[{"name":"value0","nativeSrc":"3893:6:75","nodeType":"YulIdentifier","src":"3893:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3909:3:75","nodeType":"YulLiteral","src":"3909:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"3914:1:75","nodeType":"YulLiteral","src":"3914:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3905:3:75","nodeType":"YulIdentifier","src":"3905:3:75"},"nativeSrc":"3905:11:75","nodeType":"YulFunctionCall","src":"3905:11:75"},{"kind":"number","nativeSrc":"3918:1:75","nodeType":"YulLiteral","src":"3918:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3901:3:75","nodeType":"YulIdentifier","src":"3901:3:75"},"nativeSrc":"3901:19:75","nodeType":"YulFunctionCall","src":"3901:19:75"}],"functionName":{"name":"and","nativeSrc":"3889:3:75","nodeType":"YulIdentifier","src":"3889:3:75"},"nativeSrc":"3889:32:75","nodeType":"YulFunctionCall","src":"3889:32:75"}],"functionName":{"name":"mstore","nativeSrc":"3871:6:75","nodeType":"YulIdentifier","src":"3871:6:75"},"nativeSrc":"3871:51:75","nodeType":"YulFunctionCall","src":"3871:51:75"},"nativeSrc":"3871:51:75","nodeType":"YulExpressionStatement","src":"3871:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3725:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3795:9:75","nodeType":"YulTypedName","src":"3795:9:75","type":""},{"name":"value0","nativeSrc":"3806:6:75","nodeType":"YulTypedName","src":"3806:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3817:4:75","nodeType":"YulTypedName","src":"3817:4:75","type":""}],"src":"3725:203:75"},{"body":{"nativeSrc":"4012:241:75","nodeType":"YulBlock","src":"4012:241:75","statements":[{"body":{"nativeSrc":"4058:16:75","nodeType":"YulBlock","src":"4058:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4067:1:75","nodeType":"YulLiteral","src":"4067:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4070:1:75","nodeType":"YulLiteral","src":"4070:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4060:6:75","nodeType":"YulIdentifier","src":"4060:6:75"},"nativeSrc":"4060:12:75","nodeType":"YulFunctionCall","src":"4060:12:75"},"nativeSrc":"4060:12:75","nodeType":"YulExpressionStatement","src":"4060:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4033:7:75","nodeType":"YulIdentifier","src":"4033:7:75"},{"name":"headStart","nativeSrc":"4042:9:75","nodeType":"YulIdentifier","src":"4042:9:75"}],"functionName":{"name":"sub","nativeSrc":"4029:3:75","nodeType":"YulIdentifier","src":"4029:3:75"},"nativeSrc":"4029:23:75","nodeType":"YulFunctionCall","src":"4029:23:75"},{"kind":"number","nativeSrc":"4054:2:75","nodeType":"YulLiteral","src":"4054:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4025:3:75","nodeType":"YulIdentifier","src":"4025:3:75"},"nativeSrc":"4025:32:75","nodeType":"YulFunctionCall","src":"4025:32:75"},"nativeSrc":"4022:52:75","nodeType":"YulIf","src":"4022:52:75"},{"nativeSrc":"4083:37:75","nodeType":"YulVariableDeclaration","src":"4083:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4110:9:75","nodeType":"YulIdentifier","src":"4110:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4097:12:75","nodeType":"YulIdentifier","src":"4097:12:75"},"nativeSrc":"4097:23:75","nodeType":"YulFunctionCall","src":"4097:23:75"},"variables":[{"name":"offset","nativeSrc":"4087:6:75","nodeType":"YulTypedName","src":"4087:6:75","type":""}]},{"body":{"nativeSrc":"4163:16:75","nodeType":"YulBlock","src":"4163:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4172:1:75","nodeType":"YulLiteral","src":"4172:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4175:1:75","nodeType":"YulLiteral","src":"4175:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4165:6:75","nodeType":"YulIdentifier","src":"4165:6:75"},"nativeSrc":"4165:12:75","nodeType":"YulFunctionCall","src":"4165:12:75"},"nativeSrc":"4165:12:75","nodeType":"YulExpressionStatement","src":"4165:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4135:6:75","nodeType":"YulIdentifier","src":"4135:6:75"},{"kind":"number","nativeSrc":"4143:18:75","nodeType":"YulLiteral","src":"4143:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4132:2:75","nodeType":"YulIdentifier","src":"4132:2:75"},"nativeSrc":"4132:30:75","nodeType":"YulFunctionCall","src":"4132:30:75"},"nativeSrc":"4129:50:75","nodeType":"YulIf","src":"4129:50:75"},{"nativeSrc":"4188:59:75","nodeType":"YulAssignment","src":"4188:59:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4219:9:75","nodeType":"YulIdentifier","src":"4219:9:75"},{"name":"offset","nativeSrc":"4230:6:75","nodeType":"YulIdentifier","src":"4230:6:75"}],"functionName":{"name":"add","nativeSrc":"4215:3:75","nodeType":"YulIdentifier","src":"4215:3:75"},"nativeSrc":"4215:22:75","nodeType":"YulFunctionCall","src":"4215:22:75"},{"name":"dataEnd","nativeSrc":"4239:7:75","nodeType":"YulIdentifier","src":"4239:7:75"}],"functionName":{"name":"abi_decode_bytes","nativeSrc":"4198:16:75","nodeType":"YulIdentifier","src":"4198:16:75"},"nativeSrc":"4198:49:75","nodeType":"YulFunctionCall","src":"4198:49:75"},"variableNames":[{"name":"value0","nativeSrc":"4188:6:75","nodeType":"YulIdentifier","src":"4188:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr","nativeSrc":"3933:320:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3978:9:75","nodeType":"YulTypedName","src":"3978:9:75","type":""},{"name":"dataEnd","nativeSrc":"3989:7:75","nodeType":"YulTypedName","src":"3989:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4001:6:75","nodeType":"YulTypedName","src":"4001:6:75","type":""}],"src":"3933:320:75"},{"body":{"nativeSrc":"4290:95:75","nodeType":"YulBlock","src":"4290:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4307:1:75","nodeType":"YulLiteral","src":"4307:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4314:3:75","nodeType":"YulLiteral","src":"4314:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"4319:10:75","nodeType":"YulLiteral","src":"4319:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4310:3:75","nodeType":"YulIdentifier","src":"4310:3:75"},"nativeSrc":"4310:20:75","nodeType":"YulFunctionCall","src":"4310:20:75"}],"functionName":{"name":"mstore","nativeSrc":"4300:6:75","nodeType":"YulIdentifier","src":"4300:6:75"},"nativeSrc":"4300:31:75","nodeType":"YulFunctionCall","src":"4300:31:75"},"nativeSrc":"4300:31:75","nodeType":"YulExpressionStatement","src":"4300:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4347:1:75","nodeType":"YulLiteral","src":"4347:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"4350:4:75","nodeType":"YulLiteral","src":"4350:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"4340:6:75","nodeType":"YulIdentifier","src":"4340:6:75"},"nativeSrc":"4340:15:75","nodeType":"YulFunctionCall","src":"4340:15:75"},"nativeSrc":"4340:15:75","nodeType":"YulExpressionStatement","src":"4340:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4371:1:75","nodeType":"YulLiteral","src":"4371:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4374:4:75","nodeType":"YulLiteral","src":"4374:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4364:6:75","nodeType":"YulIdentifier","src":"4364:6:75"},"nativeSrc":"4364:15:75","nodeType":"YulFunctionCall","src":"4364:15:75"},"nativeSrc":"4364:15:75","nodeType":"YulExpressionStatement","src":"4364:15:75"}]},"name":"panic_error_0x21","nativeSrc":"4258:127:75","nodeType":"YulFunctionDefinition","src":"4258:127:75"},{"body":{"nativeSrc":"4502:846:75","nodeType":"YulBlock","src":"4502:846:75","statements":[{"nativeSrc":"4512:43:75","nodeType":"YulVariableDeclaration","src":"4512:43:75","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4530:7:75","nodeType":"YulIdentifier","src":"4530:7:75"},{"name":"headStart","nativeSrc":"4539:9:75","nodeType":"YulIdentifier","src":"4539:9:75"}],"functionName":{"name":"sub","nativeSrc":"4526:3:75","nodeType":"YulIdentifier","src":"4526:3:75"},"nativeSrc":"4526:23:75","nodeType":"YulFunctionCall","src":"4526:23:75"},{"kind":"number","nativeSrc":"4551:3:75","nodeType":"YulLiteral","src":"4551:3:75","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"4522:3:75","nodeType":"YulIdentifier","src":"4522:3:75"},"nativeSrc":"4522:33:75","nodeType":"YulFunctionCall","src":"4522:33:75"},"variables":[{"name":"_1","nativeSrc":"4516:2:75","nodeType":"YulTypedName","src":"4516:2:75","type":""}]},{"body":{"nativeSrc":"4570:16:75","nodeType":"YulBlock","src":"4570:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4579:1:75","nodeType":"YulLiteral","src":"4579:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4582:1:75","nodeType":"YulLiteral","src":"4582:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4572:6:75","nodeType":"YulIdentifier","src":"4572:6:75"},"nativeSrc":"4572:12:75","nodeType":"YulFunctionCall","src":"4572:12:75"},"nativeSrc":"4572:12:75","nodeType":"YulExpressionStatement","src":"4572:12:75"}]},"condition":{"name":"_1","nativeSrc":"4567:2:75","nodeType":"YulIdentifier","src":"4567:2:75"},"nativeSrc":"4564:22:75","nodeType":"YulIf","src":"4564:22:75"},{"nativeSrc":"4595:7:75","nodeType":"YulAssignment","src":"4595:7:75","value":{"kind":"number","nativeSrc":"4601:1:75","nodeType":"YulLiteral","src":"4601:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"4595:2:75","nodeType":"YulIdentifier","src":"4595:2:75"}]},{"nativeSrc":"4611:15:75","nodeType":"YulVariableDeclaration","src":"4611:15:75","value":{"kind":"number","nativeSrc":"4625:1:75","nodeType":"YulLiteral","src":"4625:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"4615:6:75","nodeType":"YulTypedName","src":"4615:6:75","type":""}]},{"nativeSrc":"4635:19:75","nodeType":"YulAssignment","src":"4635:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"4651:2:75","nodeType":"YulLiteral","src":"4651:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"4645:5:75","nodeType":"YulIdentifier","src":"4645:5:75"},"nativeSrc":"4645:9:75","nodeType":"YulFunctionCall","src":"4645:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"4635:6:75","nodeType":"YulIdentifier","src":"4635:6:75"}]},{"nativeSrc":"4663:34:75","nodeType":"YulVariableDeclaration","src":"4663:34:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"4685:6:75","nodeType":"YulIdentifier","src":"4685:6:75"},{"kind":"number","nativeSrc":"4693:3:75","nodeType":"YulLiteral","src":"4693:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4681:3:75","nodeType":"YulIdentifier","src":"4681:3:75"},"nativeSrc":"4681:16:75","nodeType":"YulFunctionCall","src":"4681:16:75"},"variables":[{"name":"newFreePtr","nativeSrc":"4667:10:75","nodeType":"YulTypedName","src":"4667:10:75","type":""}]},{"body":{"nativeSrc":"4772:22:75","nodeType":"YulBlock","src":"4772:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"4774:16:75","nodeType":"YulIdentifier","src":"4774:16:75"},"nativeSrc":"4774:18:75","nodeType":"YulFunctionCall","src":"4774:18:75"},"nativeSrc":"4774:18:75","nodeType":"YulExpressionStatement","src":"4774:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"4715:10:75","nodeType":"YulIdentifier","src":"4715:10:75"},{"kind":"number","nativeSrc":"4727:18:75","nodeType":"YulLiteral","src":"4727:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4712:2:75","nodeType":"YulIdentifier","src":"4712:2:75"},"nativeSrc":"4712:34:75","nodeType":"YulFunctionCall","src":"4712:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"4751:10:75","nodeType":"YulIdentifier","src":"4751:10:75"},{"name":"memPtr","nativeSrc":"4763:6:75","nodeType":"YulIdentifier","src":"4763:6:75"}],"functionName":{"name":"lt","nativeSrc":"4748:2:75","nodeType":"YulIdentifier","src":"4748:2:75"},"nativeSrc":"4748:22:75","nodeType":"YulFunctionCall","src":"4748:22:75"}],"functionName":{"name":"or","nativeSrc":"4709:2:75","nodeType":"YulIdentifier","src":"4709:2:75"},"nativeSrc":"4709:62:75","nodeType":"YulFunctionCall","src":"4709:62:75"},"nativeSrc":"4706:88:75","nodeType":"YulIf","src":"4706:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4810:2:75","nodeType":"YulLiteral","src":"4810:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"4814:10:75","nodeType":"YulIdentifier","src":"4814:10:75"}],"functionName":{"name":"mstore","nativeSrc":"4803:6:75","nodeType":"YulIdentifier","src":"4803:6:75"},"nativeSrc":"4803:22:75","nodeType":"YulFunctionCall","src":"4803:22:75"},"nativeSrc":"4803:22:75","nodeType":"YulExpressionStatement","src":"4803:22:75"},{"nativeSrc":"4834:29:75","nodeType":"YulVariableDeclaration","src":"4834:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4853:9:75","nodeType":"YulIdentifier","src":"4853:9:75"}],"functionName":{"name":"mload","nativeSrc":"4847:5:75","nodeType":"YulIdentifier","src":"4847:5:75"},"nativeSrc":"4847:16:75","nodeType":"YulFunctionCall","src":"4847:16:75"},"variables":[{"name":"value","nativeSrc":"4838:5:75","nodeType":"YulTypedName","src":"4838:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4894:5:75","nodeType":"YulIdentifier","src":"4894:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4872:21:75","nodeType":"YulIdentifier","src":"4872:21:75"},"nativeSrc":"4872:28:75","nodeType":"YulFunctionCall","src":"4872:28:75"},"nativeSrc":"4872:28:75","nodeType":"YulExpressionStatement","src":"4872:28:75"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4916:6:75","nodeType":"YulIdentifier","src":"4916:6:75"},{"name":"value","nativeSrc":"4924:5:75","nodeType":"YulIdentifier","src":"4924:5:75"}],"functionName":{"name":"mstore","nativeSrc":"4909:6:75","nodeType":"YulIdentifier","src":"4909:6:75"},"nativeSrc":"4909:21:75","nodeType":"YulFunctionCall","src":"4909:21:75"},"nativeSrc":"4909:21:75","nodeType":"YulExpressionStatement","src":"4909:21:75"},{"nativeSrc":"4939:40:75","nodeType":"YulVariableDeclaration","src":"4939:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4964:9:75","nodeType":"YulIdentifier","src":"4964:9:75"},{"kind":"number","nativeSrc":"4975:2:75","nodeType":"YulLiteral","src":"4975:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4960:3:75","nodeType":"YulIdentifier","src":"4960:3:75"},"nativeSrc":"4960:18:75","nodeType":"YulFunctionCall","src":"4960:18:75"}],"functionName":{"name":"mload","nativeSrc":"4954:5:75","nodeType":"YulIdentifier","src":"4954:5:75"},"nativeSrc":"4954:25:75","nodeType":"YulFunctionCall","src":"4954:25:75"},"variables":[{"name":"value_1","nativeSrc":"4943:7:75","nodeType":"YulTypedName","src":"4943:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5010:7:75","nodeType":"YulIdentifier","src":"5010:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"4988:21:75","nodeType":"YulIdentifier","src":"4988:21:75"},"nativeSrc":"4988:30:75","nodeType":"YulFunctionCall","src":"4988:30:75"},"nativeSrc":"4988:30:75","nodeType":"YulExpressionStatement","src":"4988:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5038:6:75","nodeType":"YulIdentifier","src":"5038:6:75"},{"kind":"number","nativeSrc":"5046:2:75","nodeType":"YulLiteral","src":"5046:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5034:3:75","nodeType":"YulIdentifier","src":"5034:3:75"},"nativeSrc":"5034:15:75","nodeType":"YulFunctionCall","src":"5034:15:75"},{"name":"value_1","nativeSrc":"5051:7:75","nodeType":"YulIdentifier","src":"5051:7:75"}],"functionName":{"name":"mstore","nativeSrc":"5027:6:75","nodeType":"YulIdentifier","src":"5027:6:75"},"nativeSrc":"5027:32:75","nodeType":"YulFunctionCall","src":"5027:32:75"},"nativeSrc":"5027:32:75","nodeType":"YulExpressionStatement","src":"5027:32:75"},{"nativeSrc":"5068:40:75","nodeType":"YulVariableDeclaration","src":"5068:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5093:9:75","nodeType":"YulIdentifier","src":"5093:9:75"},{"kind":"number","nativeSrc":"5104:2:75","nodeType":"YulLiteral","src":"5104:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5089:3:75","nodeType":"YulIdentifier","src":"5089:3:75"},"nativeSrc":"5089:18:75","nodeType":"YulFunctionCall","src":"5089:18:75"}],"functionName":{"name":"mload","nativeSrc":"5083:5:75","nodeType":"YulIdentifier","src":"5083:5:75"},"nativeSrc":"5083:25:75","nodeType":"YulFunctionCall","src":"5083:25:75"},"variables":[{"name":"value_2","nativeSrc":"5072:7:75","nodeType":"YulTypedName","src":"5072:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"5139:7:75","nodeType":"YulIdentifier","src":"5139:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5117:21:75","nodeType":"YulIdentifier","src":"5117:21:75"},"nativeSrc":"5117:30:75","nodeType":"YulFunctionCall","src":"5117:30:75"},"nativeSrc":"5117:30:75","nodeType":"YulExpressionStatement","src":"5117:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5167:6:75","nodeType":"YulIdentifier","src":"5167:6:75"},{"kind":"number","nativeSrc":"5175:2:75","nodeType":"YulLiteral","src":"5175:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5163:3:75","nodeType":"YulIdentifier","src":"5163:3:75"},"nativeSrc":"5163:15:75","nodeType":"YulFunctionCall","src":"5163:15:75"},{"name":"value_2","nativeSrc":"5180:7:75","nodeType":"YulIdentifier","src":"5180:7:75"}],"functionName":{"name":"mstore","nativeSrc":"5156:6:75","nodeType":"YulIdentifier","src":"5156:6:75"},"nativeSrc":"5156:32:75","nodeType":"YulFunctionCall","src":"5156:32:75"},"nativeSrc":"5156:32:75","nodeType":"YulExpressionStatement","src":"5156:32:75"},{"nativeSrc":"5197:40:75","nodeType":"YulVariableDeclaration","src":"5197:40:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5222:9:75","nodeType":"YulIdentifier","src":"5222:9:75"},{"kind":"number","nativeSrc":"5233:2:75","nodeType":"YulLiteral","src":"5233:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5218:3:75","nodeType":"YulIdentifier","src":"5218:3:75"},"nativeSrc":"5218:18:75","nodeType":"YulFunctionCall","src":"5218:18:75"}],"functionName":{"name":"mload","nativeSrc":"5212:5:75","nodeType":"YulIdentifier","src":"5212:5:75"},"nativeSrc":"5212:25:75","nodeType":"YulFunctionCall","src":"5212:25:75"},"variables":[{"name":"value_3","nativeSrc":"5201:7:75","nodeType":"YulTypedName","src":"5201:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_3","nativeSrc":"5268:7:75","nodeType":"YulIdentifier","src":"5268:7:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"5246:21:75","nodeType":"YulIdentifier","src":"5246:21:75"},"nativeSrc":"5246:30:75","nodeType":"YulFunctionCall","src":"5246:30:75"},"nativeSrc":"5246:30:75","nodeType":"YulExpressionStatement","src":"5246:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5296:6:75","nodeType":"YulIdentifier","src":"5296:6:75"},{"kind":"number","nativeSrc":"5304:2:75","nodeType":"YulLiteral","src":"5304:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5292:3:75","nodeType":"YulIdentifier","src":"5292:3:75"},"nativeSrc":"5292:15:75","nodeType":"YulFunctionCall","src":"5292:15:75"},{"name":"value_3","nativeSrc":"5309:7:75","nodeType":"YulIdentifier","src":"5309:7:75"}],"functionName":{"name":"mstore","nativeSrc":"5285:6:75","nodeType":"YulIdentifier","src":"5285:6:75"},"nativeSrc":"5285:32:75","nodeType":"YulFunctionCall","src":"5285:32:75"},"nativeSrc":"5285:32:75","nodeType":"YulExpressionStatement","src":"5285:32:75"},{"nativeSrc":"5326:16:75","nodeType":"YulAssignment","src":"5326:16:75","value":{"name":"memPtr","nativeSrc":"5336:6:75","nodeType":"YulIdentifier","src":"5336:6:75"},"variableNames":[{"name":"value0","nativeSrc":"5326:6:75","nodeType":"YulIdentifier","src":"5326:6:75"}]}]},"name":"abi_decode_tuple_t_struct$_DummyStorage_$22443_memory_ptr_fromMemory","nativeSrc":"4390:958:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4468:9:75","nodeType":"YulTypedName","src":"4468:9:75","type":""},{"name":"dataEnd","nativeSrc":"4479:7:75","nodeType":"YulTypedName","src":"4479:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4491:6:75","nodeType":"YulTypedName","src":"4491:6:75","type":""}],"src":"4390:958:75"},{"body":{"nativeSrc":"5408:325:75","nodeType":"YulBlock","src":"5408:325:75","statements":[{"nativeSrc":"5418:22:75","nodeType":"YulAssignment","src":"5418:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"5432:1:75","nodeType":"YulLiteral","src":"5432:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"5435:4:75","nodeType":"YulIdentifier","src":"5435:4:75"}],"functionName":{"name":"shr","nativeSrc":"5428:3:75","nodeType":"YulIdentifier","src":"5428:3:75"},"nativeSrc":"5428:12:75","nodeType":"YulFunctionCall","src":"5428:12:75"},"variableNames":[{"name":"length","nativeSrc":"5418:6:75","nodeType":"YulIdentifier","src":"5418:6:75"}]},{"nativeSrc":"5449:38:75","nodeType":"YulVariableDeclaration","src":"5449:38:75","value":{"arguments":[{"name":"data","nativeSrc":"5479:4:75","nodeType":"YulIdentifier","src":"5479:4:75"},{"kind":"number","nativeSrc":"5485:1:75","nodeType":"YulLiteral","src":"5485:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5475:3:75","nodeType":"YulIdentifier","src":"5475:3:75"},"nativeSrc":"5475:12:75","nodeType":"YulFunctionCall","src":"5475:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5453:18:75","nodeType":"YulTypedName","src":"5453:18:75","type":""}]},{"body":{"nativeSrc":"5526:31:75","nodeType":"YulBlock","src":"5526:31:75","statements":[{"nativeSrc":"5528:27:75","nodeType":"YulAssignment","src":"5528:27:75","value":{"arguments":[{"name":"length","nativeSrc":"5542:6:75","nodeType":"YulIdentifier","src":"5542:6:75"},{"kind":"number","nativeSrc":"5550:4:75","nodeType":"YulLiteral","src":"5550:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5538:3:75","nodeType":"YulIdentifier","src":"5538:3:75"},"nativeSrc":"5538:17:75","nodeType":"YulFunctionCall","src":"5538:17:75"},"variableNames":[{"name":"length","nativeSrc":"5528:6:75","nodeType":"YulIdentifier","src":"5528:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5506:18:75","nodeType":"YulIdentifier","src":"5506:18:75"}],"functionName":{"name":"iszero","nativeSrc":"5499:6:75","nodeType":"YulIdentifier","src":"5499:6:75"},"nativeSrc":"5499:26:75","nodeType":"YulFunctionCall","src":"5499:26:75"},"nativeSrc":"5496:61:75","nodeType":"YulIf","src":"5496:61:75"},{"body":{"nativeSrc":"5616:111:75","nodeType":"YulBlock","src":"5616:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5637:1:75","nodeType":"YulLiteral","src":"5637:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"5644:3:75","nodeType":"YulLiteral","src":"5644:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"5649:10:75","nodeType":"YulLiteral","src":"5649:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"5640:3:75","nodeType":"YulIdentifier","src":"5640:3:75"},"nativeSrc":"5640:20:75","nodeType":"YulFunctionCall","src":"5640:20:75"}],"functionName":{"name":"mstore","nativeSrc":"5630:6:75","nodeType":"YulIdentifier","src":"5630:6:75"},"nativeSrc":"5630:31:75","nodeType":"YulFunctionCall","src":"5630:31:75"},"nativeSrc":"5630:31:75","nodeType":"YulExpressionStatement","src":"5630:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5681:1:75","nodeType":"YulLiteral","src":"5681:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"5684:4:75","nodeType":"YulLiteral","src":"5684:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"5674:6:75","nodeType":"YulIdentifier","src":"5674:6:75"},"nativeSrc":"5674:15:75","nodeType":"YulFunctionCall","src":"5674:15:75"},"nativeSrc":"5674:15:75","nodeType":"YulExpressionStatement","src":"5674:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5709:1:75","nodeType":"YulLiteral","src":"5709:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5712:4:75","nodeType":"YulLiteral","src":"5712:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"5702:6:75","nodeType":"YulIdentifier","src":"5702:6:75"},"nativeSrc":"5702:15:75","nodeType":"YulFunctionCall","src":"5702:15:75"},"nativeSrc":"5702:15:75","nodeType":"YulExpressionStatement","src":"5702:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5572:18:75","nodeType":"YulIdentifier","src":"5572:18:75"},{"arguments":[{"name":"length","nativeSrc":"5595:6:75","nodeType":"YulIdentifier","src":"5595:6:75"},{"kind":"number","nativeSrc":"5603:2:75","nodeType":"YulLiteral","src":"5603:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"5592:2:75","nodeType":"YulIdentifier","src":"5592:2:75"},"nativeSrc":"5592:14:75","nodeType":"YulFunctionCall","src":"5592:14:75"}],"functionName":{"name":"eq","nativeSrc":"5569:2:75","nodeType":"YulIdentifier","src":"5569:2:75"},"nativeSrc":"5569:38:75","nodeType":"YulFunctionCall","src":"5569:38:75"},"nativeSrc":"5566:161:75","nodeType":"YulIf","src":"5566:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"5353:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"5388:4:75","nodeType":"YulTypedName","src":"5388:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5397:6:75","nodeType":"YulTypedName","src":"5397:6:75","type":""}],"src":"5353:380:75"},{"body":{"nativeSrc":"5793:65:75","nodeType":"YulBlock","src":"5793:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5810:1:75","nodeType":"YulLiteral","src":"5810:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"5813:3:75","nodeType":"YulIdentifier","src":"5813:3:75"}],"functionName":{"name":"mstore","nativeSrc":"5803:6:75","nodeType":"YulIdentifier","src":"5803:6:75"},"nativeSrc":"5803:14:75","nodeType":"YulFunctionCall","src":"5803:14:75"},"nativeSrc":"5803:14:75","nodeType":"YulExpressionStatement","src":"5803:14:75"},{"nativeSrc":"5826:26:75","nodeType":"YulAssignment","src":"5826:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"5844:1:75","nodeType":"YulLiteral","src":"5844:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5847:4:75","nodeType":"YulLiteral","src":"5847:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"5834:9:75","nodeType":"YulIdentifier","src":"5834:9:75"},"nativeSrc":"5834:18:75","nodeType":"YulFunctionCall","src":"5834:18:75"},"variableNames":[{"name":"data","nativeSrc":"5826:4:75","nodeType":"YulIdentifier","src":"5826:4:75"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"5738:120:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"5776:3:75","nodeType":"YulTypedName","src":"5776:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"5784:4:75","nodeType":"YulTypedName","src":"5784:4:75","type":""}],"src":"5738:120:75"},{"body":{"nativeSrc":"5943:437:75","nodeType":"YulBlock","src":"5943:437:75","statements":[{"body":{"nativeSrc":"5976:398:75","nodeType":"YulBlock","src":"5976:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5997:1:75","nodeType":"YulLiteral","src":"5997:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"6000:5:75","nodeType":"YulIdentifier","src":"6000:5:75"}],"functionName":{"name":"mstore","nativeSrc":"5990:6:75","nodeType":"YulIdentifier","src":"5990:6:75"},"nativeSrc":"5990:16:75","nodeType":"YulFunctionCall","src":"5990:16:75"},"nativeSrc":"5990:16:75","nodeType":"YulExpressionStatement","src":"5990:16:75"},{"nativeSrc":"6019:30:75","nodeType":"YulVariableDeclaration","src":"6019:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"6041:1:75","nodeType":"YulLiteral","src":"6041:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6044:4:75","nodeType":"YulLiteral","src":"6044:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6031:9:75","nodeType":"YulIdentifier","src":"6031:9:75"},"nativeSrc":"6031:18:75","nodeType":"YulFunctionCall","src":"6031:18:75"},"variables":[{"name":"data","nativeSrc":"6023:4:75","nodeType":"YulTypedName","src":"6023:4:75","type":""}]},{"nativeSrc":"6062:57:75","nodeType":"YulVariableDeclaration","src":"6062:57:75","value":{"arguments":[{"name":"data","nativeSrc":"6085:4:75","nodeType":"YulIdentifier","src":"6085:4:75"},{"arguments":[{"kind":"number","nativeSrc":"6095:1:75","nodeType":"YulLiteral","src":"6095:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"6102:10:75","nodeType":"YulIdentifier","src":"6102:10:75"},{"kind":"number","nativeSrc":"6114:2:75","nodeType":"YulLiteral","src":"6114:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"6098:3:75","nodeType":"YulIdentifier","src":"6098:3:75"},"nativeSrc":"6098:19:75","nodeType":"YulFunctionCall","src":"6098:19:75"}],"functionName":{"name":"shr","nativeSrc":"6091:3:75","nodeType":"YulIdentifier","src":"6091:3:75"},"nativeSrc":"6091:27:75","nodeType":"YulFunctionCall","src":"6091:27:75"}],"functionName":{"name":"add","nativeSrc":"6081:3:75","nodeType":"YulIdentifier","src":"6081:3:75"},"nativeSrc":"6081:38:75","nodeType":"YulFunctionCall","src":"6081:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"6066:11:75","nodeType":"YulTypedName","src":"6066:11:75","type":""}]},{"body":{"nativeSrc":"6156:23:75","nodeType":"YulBlock","src":"6156:23:75","statements":[{"nativeSrc":"6158:19:75","nodeType":"YulAssignment","src":"6158:19:75","value":{"name":"data","nativeSrc":"6173:4:75","nodeType":"YulIdentifier","src":"6173:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"6158:11:75","nodeType":"YulIdentifier","src":"6158:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"6138:10:75","nodeType":"YulIdentifier","src":"6138:10:75"},{"kind":"number","nativeSrc":"6150:4:75","nodeType":"YulLiteral","src":"6150:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"6135:2:75","nodeType":"YulIdentifier","src":"6135:2:75"},"nativeSrc":"6135:20:75","nodeType":"YulFunctionCall","src":"6135:20:75"},"nativeSrc":"6132:47:75","nodeType":"YulIf","src":"6132:47:75"},{"nativeSrc":"6192:41:75","nodeType":"YulVariableDeclaration","src":"6192:41:75","value":{"arguments":[{"name":"data","nativeSrc":"6206:4:75","nodeType":"YulIdentifier","src":"6206:4:75"},{"arguments":[{"kind":"number","nativeSrc":"6216:1:75","nodeType":"YulLiteral","src":"6216:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"6223:3:75","nodeType":"YulIdentifier","src":"6223:3:75"},{"kind":"number","nativeSrc":"6228:2:75","nodeType":"YulLiteral","src":"6228:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"6219:3:75","nodeType":"YulIdentifier","src":"6219:3:75"},"nativeSrc":"6219:12:75","nodeType":"YulFunctionCall","src":"6219:12:75"}],"functionName":{"name":"shr","nativeSrc":"6212:3:75","nodeType":"YulIdentifier","src":"6212:3:75"},"nativeSrc":"6212:20:75","nodeType":"YulFunctionCall","src":"6212:20:75"}],"functionName":{"name":"add","nativeSrc":"6202:3:75","nodeType":"YulIdentifier","src":"6202:3:75"},"nativeSrc":"6202:31:75","nodeType":"YulFunctionCall","src":"6202:31:75"},"variables":[{"name":"_1","nativeSrc":"6196:2:75","nodeType":"YulTypedName","src":"6196:2:75","type":""}]},{"nativeSrc":"6246:24:75","nodeType":"YulVariableDeclaration","src":"6246:24:75","value":{"name":"deleteStart","nativeSrc":"6259:11:75","nodeType":"YulIdentifier","src":"6259:11:75"},"variables":[{"name":"start","nativeSrc":"6250:5:75","nodeType":"YulTypedName","src":"6250:5:75","type":""}]},{"body":{"nativeSrc":"6344:20:75","nodeType":"YulBlock","src":"6344:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"6353:5:75","nodeType":"YulIdentifier","src":"6353:5:75"},{"kind":"number","nativeSrc":"6360:1:75","nodeType":"YulLiteral","src":"6360:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"6346:6:75","nodeType":"YulIdentifier","src":"6346:6:75"},"nativeSrc":"6346:16:75","nodeType":"YulFunctionCall","src":"6346:16:75"},"nativeSrc":"6346:16:75","nodeType":"YulExpressionStatement","src":"6346:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"6294:5:75","nodeType":"YulIdentifier","src":"6294:5:75"},{"name":"_1","nativeSrc":"6301:2:75","nodeType":"YulIdentifier","src":"6301:2:75"}],"functionName":{"name":"lt","nativeSrc":"6291:2:75","nodeType":"YulIdentifier","src":"6291:2:75"},"nativeSrc":"6291:13:75","nodeType":"YulFunctionCall","src":"6291:13:75"},"nativeSrc":"6283:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"6305:26:75","nodeType":"YulBlock","src":"6305:26:75","statements":[{"nativeSrc":"6307:22:75","nodeType":"YulAssignment","src":"6307:22:75","value":{"arguments":[{"name":"start","nativeSrc":"6320:5:75","nodeType":"YulIdentifier","src":"6320:5:75"},{"kind":"number","nativeSrc":"6327:1:75","nodeType":"YulLiteral","src":"6327:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6316:3:75","nodeType":"YulIdentifier","src":"6316:3:75"},"nativeSrc":"6316:13:75","nodeType":"YulFunctionCall","src":"6316:13:75"},"variableNames":[{"name":"start","nativeSrc":"6307:5:75","nodeType":"YulIdentifier","src":"6307:5:75"}]}]},"pre":{"nativeSrc":"6287:3:75","nodeType":"YulBlock","src":"6287:3:75","statements":[]},"src":"6283:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"5959:3:75","nodeType":"YulIdentifier","src":"5959:3:75"},{"kind":"number","nativeSrc":"5964:2:75","nodeType":"YulLiteral","src":"5964:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5956:2:75","nodeType":"YulIdentifier","src":"5956:2:75"},"nativeSrc":"5956:11:75","nodeType":"YulFunctionCall","src":"5956:11:75"},"nativeSrc":"5953:421:75","nodeType":"YulIf","src":"5953:421:75"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"5863:517:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"5915:5:75","nodeType":"YulTypedName","src":"5915:5:75","type":""},{"name":"len","nativeSrc":"5922:3:75","nodeType":"YulTypedName","src":"5922:3:75","type":""},{"name":"startIndex","nativeSrc":"5927:10:75","nodeType":"YulTypedName","src":"5927:10:75","type":""}],"src":"5863:517:75"},{"body":{"nativeSrc":"6470:81:75","nodeType":"YulBlock","src":"6470:81:75","statements":[{"nativeSrc":"6480:65:75","nodeType":"YulAssignment","src":"6480:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"6495:4:75","nodeType":"YulIdentifier","src":"6495:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6513:1:75","nodeType":"YulLiteral","src":"6513:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"6516:3:75","nodeType":"YulIdentifier","src":"6516:3:75"}],"functionName":{"name":"shl","nativeSrc":"6509:3:75","nodeType":"YulIdentifier","src":"6509:3:75"},"nativeSrc":"6509:11:75","nodeType":"YulFunctionCall","src":"6509:11:75"},{"arguments":[{"kind":"number","nativeSrc":"6526:1:75","nodeType":"YulLiteral","src":"6526:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6522:3:75","nodeType":"YulIdentifier","src":"6522:3:75"},"nativeSrc":"6522:6:75","nodeType":"YulFunctionCall","src":"6522:6:75"}],"functionName":{"name":"shr","nativeSrc":"6505:3:75","nodeType":"YulIdentifier","src":"6505:3:75"},"nativeSrc":"6505:24:75","nodeType":"YulFunctionCall","src":"6505:24:75"}],"functionName":{"name":"not","nativeSrc":"6501:3:75","nodeType":"YulIdentifier","src":"6501:3:75"},"nativeSrc":"6501:29:75","nodeType":"YulFunctionCall","src":"6501:29:75"}],"functionName":{"name":"and","nativeSrc":"6491:3:75","nodeType":"YulIdentifier","src":"6491:3:75"},"nativeSrc":"6491:40:75","nodeType":"YulFunctionCall","src":"6491:40:75"},{"arguments":[{"kind":"number","nativeSrc":"6537:1:75","nodeType":"YulLiteral","src":"6537:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"6540:3:75","nodeType":"YulIdentifier","src":"6540:3:75"}],"functionName":{"name":"shl","nativeSrc":"6533:3:75","nodeType":"YulIdentifier","src":"6533:3:75"},"nativeSrc":"6533:11:75","nodeType":"YulFunctionCall","src":"6533:11:75"}],"functionName":{"name":"or","nativeSrc":"6488:2:75","nodeType":"YulIdentifier","src":"6488:2:75"},"nativeSrc":"6488:57:75","nodeType":"YulFunctionCall","src":"6488:57:75"},"variableNames":[{"name":"used","nativeSrc":"6480:4:75","nodeType":"YulIdentifier","src":"6480:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6385:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"6447:4:75","nodeType":"YulTypedName","src":"6447:4:75","type":""},{"name":"len","nativeSrc":"6453:3:75","nodeType":"YulTypedName","src":"6453:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"6461:4:75","nodeType":"YulTypedName","src":"6461:4:75","type":""}],"src":"6385:166:75"},{"body":{"nativeSrc":"6650:1201:75","nodeType":"YulBlock","src":"6650:1201:75","statements":[{"nativeSrc":"6660:24:75","nodeType":"YulVariableDeclaration","src":"6660:24:75","value":{"arguments":[{"name":"src","nativeSrc":"6680:3:75","nodeType":"YulIdentifier","src":"6680:3:75"}],"functionName":{"name":"mload","nativeSrc":"6674:5:75","nodeType":"YulIdentifier","src":"6674:5:75"},"nativeSrc":"6674:10:75","nodeType":"YulFunctionCall","src":"6674:10:75"},"variables":[{"name":"newLen","nativeSrc":"6664:6:75","nodeType":"YulTypedName","src":"6664:6:75","type":""}]},{"body":{"nativeSrc":"6727:22:75","nodeType":"YulBlock","src":"6727:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"6729:16:75","nodeType":"YulIdentifier","src":"6729:16:75"},"nativeSrc":"6729:18:75","nodeType":"YulFunctionCall","src":"6729:18:75"},"nativeSrc":"6729:18:75","nodeType":"YulExpressionStatement","src":"6729:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"6699:6:75","nodeType":"YulIdentifier","src":"6699:6:75"},{"kind":"number","nativeSrc":"6707:18:75","nodeType":"YulLiteral","src":"6707:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6696:2:75","nodeType":"YulIdentifier","src":"6696:2:75"},"nativeSrc":"6696:30:75","nodeType":"YulFunctionCall","src":"6696:30:75"},"nativeSrc":"6693:56:75","nodeType":"YulIf","src":"6693:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6801:4:75","nodeType":"YulIdentifier","src":"6801:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"6839:4:75","nodeType":"YulIdentifier","src":"6839:4:75"}],"functionName":{"name":"sload","nativeSrc":"6833:5:75","nodeType":"YulIdentifier","src":"6833:5:75"},"nativeSrc":"6833:11:75","nodeType":"YulFunctionCall","src":"6833:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"6807:25:75","nodeType":"YulIdentifier","src":"6807:25:75"},"nativeSrc":"6807:38:75","nodeType":"YulFunctionCall","src":"6807:38:75"},{"name":"newLen","nativeSrc":"6847:6:75","nodeType":"YulIdentifier","src":"6847:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"6758:42:75","nodeType":"YulIdentifier","src":"6758:42:75"},"nativeSrc":"6758:96:75","nodeType":"YulFunctionCall","src":"6758:96:75"},"nativeSrc":"6758:96:75","nodeType":"YulExpressionStatement","src":"6758:96:75"},{"nativeSrc":"6863:18:75","nodeType":"YulVariableDeclaration","src":"6863:18:75","value":{"kind":"number","nativeSrc":"6880:1:75","nodeType":"YulLiteral","src":"6880:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"6867:9:75","nodeType":"YulTypedName","src":"6867:9:75","type":""}]},{"nativeSrc":"6890:17:75","nodeType":"YulAssignment","src":"6890:17:75","value":{"kind":"number","nativeSrc":"6903:4:75","nodeType":"YulLiteral","src":"6903:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"6890:9:75","nodeType":"YulIdentifier","src":"6890:9:75"}]},{"cases":[{"body":{"nativeSrc":"6953:641:75","nodeType":"YulBlock","src":"6953:641:75","statements":[{"nativeSrc":"6967:35:75","nodeType":"YulVariableDeclaration","src":"6967:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"6986:6:75","nodeType":"YulIdentifier","src":"6986:6:75"},{"arguments":[{"kind":"number","nativeSrc":"6998:2:75","nodeType":"YulLiteral","src":"6998:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"6994:3:75","nodeType":"YulIdentifier","src":"6994:3:75"},"nativeSrc":"6994:7:75","nodeType":"YulFunctionCall","src":"6994:7:75"}],"functionName":{"name":"and","nativeSrc":"6982:3:75","nodeType":"YulIdentifier","src":"6982:3:75"},"nativeSrc":"6982:20:75","nodeType":"YulFunctionCall","src":"6982:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"6971:7:75","nodeType":"YulTypedName","src":"6971:7:75","type":""}]},{"nativeSrc":"7015:48:75","nodeType":"YulVariableDeclaration","src":"7015:48:75","value":{"arguments":[{"name":"slot","nativeSrc":"7058:4:75","nodeType":"YulIdentifier","src":"7058:4:75"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"7029:28:75","nodeType":"YulIdentifier","src":"7029:28:75"},"nativeSrc":"7029:34:75","nodeType":"YulFunctionCall","src":"7029:34:75"},"variables":[{"name":"dstPtr","nativeSrc":"7019:6:75","nodeType":"YulTypedName","src":"7019:6:75","type":""}]},{"nativeSrc":"7076:10:75","nodeType":"YulVariableDeclaration","src":"7076:10:75","value":{"kind":"number","nativeSrc":"7085:1:75","nodeType":"YulLiteral","src":"7085:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"7080:1:75","nodeType":"YulTypedName","src":"7080:1:75","type":""}]},{"body":{"nativeSrc":"7156:165:75","nodeType":"YulBlock","src":"7156:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"7181:6:75","nodeType":"YulIdentifier","src":"7181:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7199:3:75","nodeType":"YulIdentifier","src":"7199:3:75"},{"name":"srcOffset","nativeSrc":"7204:9:75","nodeType":"YulIdentifier","src":"7204:9:75"}],"functionName":{"name":"add","nativeSrc":"7195:3:75","nodeType":"YulIdentifier","src":"7195:3:75"},"nativeSrc":"7195:19:75","nodeType":"YulFunctionCall","src":"7195:19:75"}],"functionName":{"name":"mload","nativeSrc":"7189:5:75","nodeType":"YulIdentifier","src":"7189:5:75"},"nativeSrc":"7189:26:75","nodeType":"YulFunctionCall","src":"7189:26:75"}],"functionName":{"name":"sstore","nativeSrc":"7174:6:75","nodeType":"YulIdentifier","src":"7174:6:75"},"nativeSrc":"7174:42:75","nodeType":"YulFunctionCall","src":"7174:42:75"},"nativeSrc":"7174:42:75","nodeType":"YulExpressionStatement","src":"7174:42:75"},{"nativeSrc":"7233:24:75","nodeType":"YulAssignment","src":"7233:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"7247:6:75","nodeType":"YulIdentifier","src":"7247:6:75"},{"kind":"number","nativeSrc":"7255:1:75","nodeType":"YulLiteral","src":"7255:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7243:3:75","nodeType":"YulIdentifier","src":"7243:3:75"},"nativeSrc":"7243:14:75","nodeType":"YulFunctionCall","src":"7243:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"7233:6:75","nodeType":"YulIdentifier","src":"7233:6:75"}]},{"nativeSrc":"7274:33:75","nodeType":"YulAssignment","src":"7274:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"7291:9:75","nodeType":"YulIdentifier","src":"7291:9:75"},{"kind":"number","nativeSrc":"7302:4:75","nodeType":"YulLiteral","src":"7302:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7287:3:75","nodeType":"YulIdentifier","src":"7287:3:75"},"nativeSrc":"7287:20:75","nodeType":"YulFunctionCall","src":"7287:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"7274:9:75","nodeType":"YulIdentifier","src":"7274:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"7110:1:75","nodeType":"YulIdentifier","src":"7110:1:75"},{"name":"loopEnd","nativeSrc":"7113:7:75","nodeType":"YulIdentifier","src":"7113:7:75"}],"functionName":{"name":"lt","nativeSrc":"7107:2:75","nodeType":"YulIdentifier","src":"7107:2:75"},"nativeSrc":"7107:14:75","nodeType":"YulFunctionCall","src":"7107:14:75"},"nativeSrc":"7099:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"7122:21:75","nodeType":"YulBlock","src":"7122:21:75","statements":[{"nativeSrc":"7124:17:75","nodeType":"YulAssignment","src":"7124:17:75","value":{"arguments":[{"name":"i","nativeSrc":"7133:1:75","nodeType":"YulIdentifier","src":"7133:1:75"},{"kind":"number","nativeSrc":"7136:4:75","nodeType":"YulLiteral","src":"7136:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"7129:3:75","nodeType":"YulIdentifier","src":"7129:3:75"},"nativeSrc":"7129:12:75","nodeType":"YulFunctionCall","src":"7129:12:75"},"variableNames":[{"name":"i","nativeSrc":"7124:1:75","nodeType":"YulIdentifier","src":"7124:1:75"}]}]},"pre":{"nativeSrc":"7103:3:75","nodeType":"YulBlock","src":"7103:3:75","statements":[]},"src":"7099:222:75"},{"body":{"nativeSrc":"7369:166:75","nodeType":"YulBlock","src":"7369:166:75","statements":[{"nativeSrc":"7387:43:75","nodeType":"YulVariableDeclaration","src":"7387:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7414:3:75","nodeType":"YulIdentifier","src":"7414:3:75"},{"name":"srcOffset","nativeSrc":"7419:9:75","nodeType":"YulIdentifier","src":"7419:9:75"}],"functionName":{"name":"add","nativeSrc":"7410:3:75","nodeType":"YulIdentifier","src":"7410:3:75"},"nativeSrc":"7410:19:75","nodeType":"YulFunctionCall","src":"7410:19:75"}],"functionName":{"name":"mload","nativeSrc":"7404:5:75","nodeType":"YulIdentifier","src":"7404:5:75"},"nativeSrc":"7404:26:75","nodeType":"YulFunctionCall","src":"7404:26:75"},"variables":[{"name":"lastValue","nativeSrc":"7391:9:75","nodeType":"YulTypedName","src":"7391:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"7454:6:75","nodeType":"YulIdentifier","src":"7454:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"7466:9:75","nodeType":"YulIdentifier","src":"7466:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7493:1:75","nodeType":"YulLiteral","src":"7493:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"7496:6:75","nodeType":"YulIdentifier","src":"7496:6:75"}],"functionName":{"name":"shl","nativeSrc":"7489:3:75","nodeType":"YulIdentifier","src":"7489:3:75"},"nativeSrc":"7489:14:75","nodeType":"YulFunctionCall","src":"7489:14:75"},{"kind":"number","nativeSrc":"7505:3:75","nodeType":"YulLiteral","src":"7505:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"7485:3:75","nodeType":"YulIdentifier","src":"7485:3:75"},"nativeSrc":"7485:24:75","nodeType":"YulFunctionCall","src":"7485:24:75"},{"arguments":[{"kind":"number","nativeSrc":"7515:1:75","nodeType":"YulLiteral","src":"7515:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"7511:3:75","nodeType":"YulIdentifier","src":"7511:3:75"},"nativeSrc":"7511:6:75","nodeType":"YulFunctionCall","src":"7511:6:75"}],"functionName":{"name":"shr","nativeSrc":"7481:3:75","nodeType":"YulIdentifier","src":"7481:3:75"},"nativeSrc":"7481:37:75","nodeType":"YulFunctionCall","src":"7481:37:75"}],"functionName":{"name":"not","nativeSrc":"7477:3:75","nodeType":"YulIdentifier","src":"7477:3:75"},"nativeSrc":"7477:42:75","nodeType":"YulFunctionCall","src":"7477:42:75"}],"functionName":{"name":"and","nativeSrc":"7462:3:75","nodeType":"YulIdentifier","src":"7462:3:75"},"nativeSrc":"7462:58:75","nodeType":"YulFunctionCall","src":"7462:58:75"}],"functionName":{"name":"sstore","nativeSrc":"7447:6:75","nodeType":"YulIdentifier","src":"7447:6:75"},"nativeSrc":"7447:74:75","nodeType":"YulFunctionCall","src":"7447:74:75"},"nativeSrc":"7447:74:75","nodeType":"YulExpressionStatement","src":"7447:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"7340:7:75","nodeType":"YulIdentifier","src":"7340:7:75"},{"name":"newLen","nativeSrc":"7349:6:75","nodeType":"YulIdentifier","src":"7349:6:75"}],"functionName":{"name":"lt","nativeSrc":"7337:2:75","nodeType":"YulIdentifier","src":"7337:2:75"},"nativeSrc":"7337:19:75","nodeType":"YulFunctionCall","src":"7337:19:75"},"nativeSrc":"7334:201:75","nodeType":"YulIf","src":"7334:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"7555:4:75","nodeType":"YulIdentifier","src":"7555:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7569:1:75","nodeType":"YulLiteral","src":"7569:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"7572:6:75","nodeType":"YulIdentifier","src":"7572:6:75"}],"functionName":{"name":"shl","nativeSrc":"7565:3:75","nodeType":"YulIdentifier","src":"7565:3:75"},"nativeSrc":"7565:14:75","nodeType":"YulFunctionCall","src":"7565:14:75"},{"kind":"number","nativeSrc":"7581:1:75","nodeType":"YulLiteral","src":"7581:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"7561:3:75","nodeType":"YulIdentifier","src":"7561:3:75"},"nativeSrc":"7561:22:75","nodeType":"YulFunctionCall","src":"7561:22:75"}],"functionName":{"name":"sstore","nativeSrc":"7548:6:75","nodeType":"YulIdentifier","src":"7548:6:75"},"nativeSrc":"7548:36:75","nodeType":"YulFunctionCall","src":"7548:36:75"},"nativeSrc":"7548:36:75","nodeType":"YulExpressionStatement","src":"7548:36:75"}]},"nativeSrc":"6946:648:75","nodeType":"YulCase","src":"6946:648:75","value":{"kind":"number","nativeSrc":"6951:1:75","nodeType":"YulLiteral","src":"6951:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"7611:234:75","nodeType":"YulBlock","src":"7611:234:75","statements":[{"nativeSrc":"7625:14:75","nodeType":"YulVariableDeclaration","src":"7625:14:75","value":{"kind":"number","nativeSrc":"7638:1:75","nodeType":"YulLiteral","src":"7638:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7629:5:75","nodeType":"YulTypedName","src":"7629:5:75","type":""}]},{"body":{"nativeSrc":"7674:67:75","nodeType":"YulBlock","src":"7674:67:75","statements":[{"nativeSrc":"7692:35:75","nodeType":"YulAssignment","src":"7692:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"7711:3:75","nodeType":"YulIdentifier","src":"7711:3:75"},{"name":"srcOffset","nativeSrc":"7716:9:75","nodeType":"YulIdentifier","src":"7716:9:75"}],"functionName":{"name":"add","nativeSrc":"7707:3:75","nodeType":"YulIdentifier","src":"7707:3:75"},"nativeSrc":"7707:19:75","nodeType":"YulFunctionCall","src":"7707:19:75"}],"functionName":{"name":"mload","nativeSrc":"7701:5:75","nodeType":"YulIdentifier","src":"7701:5:75"},"nativeSrc":"7701:26:75","nodeType":"YulFunctionCall","src":"7701:26:75"},"variableNames":[{"name":"value","nativeSrc":"7692:5:75","nodeType":"YulIdentifier","src":"7692:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"7655:6:75","nodeType":"YulIdentifier","src":"7655:6:75"},"nativeSrc":"7652:89:75","nodeType":"YulIf","src":"7652:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"7761:4:75","nodeType":"YulIdentifier","src":"7761:4:75"},{"arguments":[{"name":"value","nativeSrc":"7820:5:75","nodeType":"YulIdentifier","src":"7820:5:75"},{"name":"newLen","nativeSrc":"7827:6:75","nodeType":"YulIdentifier","src":"7827:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"7767:52:75","nodeType":"YulIdentifier","src":"7767:52:75"},"nativeSrc":"7767:67:75","nodeType":"YulFunctionCall","src":"7767:67:75"}],"functionName":{"name":"sstore","nativeSrc":"7754:6:75","nodeType":"YulIdentifier","src":"7754:6:75"},"nativeSrc":"7754:81:75","nodeType":"YulFunctionCall","src":"7754:81:75"},"nativeSrc":"7754:81:75","nodeType":"YulExpressionStatement","src":"7754:81:75"}]},"nativeSrc":"7603:242:75","nodeType":"YulCase","src":"7603:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"6926:6:75","nodeType":"YulIdentifier","src":"6926:6:75"},{"kind":"number","nativeSrc":"6934:2:75","nodeType":"YulLiteral","src":"6934:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"6923:2:75","nodeType":"YulIdentifier","src":"6923:2:75"},"nativeSrc":"6923:14:75","nodeType":"YulFunctionCall","src":"6923:14:75"},"nativeSrc":"6916:929:75","nodeType":"YulSwitch","src":"6916:929:75"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"6556:1295:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"6635:4:75","nodeType":"YulTypedName","src":"6635:4:75","type":""},{"name":"src","nativeSrc":"6641:3:75","nodeType":"YulTypedName","src":"6641:3:75","type":""}],"src":"6556:1295:75"},{"body":{"nativeSrc":"8030:157:75","nodeType":"YulBlock","src":"8030:157:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8047:9:75","nodeType":"YulIdentifier","src":"8047:9:75"},{"kind":"number","nativeSrc":"8058:2:75","nodeType":"YulLiteral","src":"8058:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8040:6:75","nodeType":"YulIdentifier","src":"8040:6:75"},"nativeSrc":"8040:21:75","nodeType":"YulFunctionCall","src":"8040:21:75"},"nativeSrc":"8040:21:75","nodeType":"YulExpressionStatement","src":"8040:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8081:9:75","nodeType":"YulIdentifier","src":"8081:9:75"},{"kind":"number","nativeSrc":"8092:2:75","nodeType":"YulLiteral","src":"8092:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8077:3:75","nodeType":"YulIdentifier","src":"8077:3:75"},"nativeSrc":"8077:18:75","nodeType":"YulFunctionCall","src":"8077:18:75"},{"kind":"number","nativeSrc":"8097:1:75","nodeType":"YulLiteral","src":"8097:1:75","type":"","value":"8"}],"functionName":{"name":"mstore","nativeSrc":"8070:6:75","nodeType":"YulIdentifier","src":"8070:6:75"},"nativeSrc":"8070:29:75","nodeType":"YulFunctionCall","src":"8070:29:75"},"nativeSrc":"8070:29:75","nodeType":"YulExpressionStatement","src":"8070:29:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8119:9:75","nodeType":"YulIdentifier","src":"8119:9:75"},{"kind":"number","nativeSrc":"8130:2:75","nodeType":"YulLiteral","src":"8130:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8115:3:75","nodeType":"YulIdentifier","src":"8115:3:75"},"nativeSrc":"8115:18:75","nodeType":"YulFunctionCall","src":"8115:18:75"},{"hexValue":"7769746864726177","kind":"string","nativeSrc":"8135:10:75","nodeType":"YulLiteral","src":"8135:10:75","type":"","value":"withdraw"}],"functionName":{"name":"mstore","nativeSrc":"8108:6:75","nodeType":"YulIdentifier","src":"8108:6:75"},"nativeSrc":"8108:38:75","nodeType":"YulFunctionCall","src":"8108:38:75"},"nativeSrc":"8108:38:75","nodeType":"YulExpressionStatement","src":"8108:38:75"},{"nativeSrc":"8155:26:75","nodeType":"YulAssignment","src":"8155:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8167:9:75","nodeType":"YulIdentifier","src":"8167:9:75"},{"kind":"number","nativeSrc":"8178:2:75","nodeType":"YulLiteral","src":"8178:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8163:3:75","nodeType":"YulIdentifier","src":"8163:3:75"},"nativeSrc":"8163:18:75","nodeType":"YulFunctionCall","src":"8163:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8155:4:75","nodeType":"YulIdentifier","src":"8155:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_855511cc3694f64379908437d6d64458dc76d02482052bfb8a5b33a72c054c77__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7856:331:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8007:9:75","nodeType":"YulTypedName","src":"8007:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8021:4:75","nodeType":"YulTypedName","src":"8021:4:75","type":""}],"src":"7856:331:75"},{"body":{"nativeSrc":"8364:214:75","nodeType":"YulBlock","src":"8364:214:75","statements":[{"nativeSrc":"8374:26:75","nodeType":"YulAssignment","src":"8374:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8386:9:75","nodeType":"YulIdentifier","src":"8386:9:75"},{"kind":"number","nativeSrc":"8397:2:75","nodeType":"YulLiteral","src":"8397:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8382:3:75","nodeType":"YulIdentifier","src":"8382:3:75"},"nativeSrc":"8382:18:75","nodeType":"YulFunctionCall","src":"8382:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8374:4:75","nodeType":"YulIdentifier","src":"8374:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8416:9:75","nodeType":"YulIdentifier","src":"8416:9:75"},{"arguments":[{"name":"value0","nativeSrc":"8431:6:75","nodeType":"YulIdentifier","src":"8431:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8447:3:75","nodeType":"YulLiteral","src":"8447:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"8452:1:75","nodeType":"YulLiteral","src":"8452:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8443:3:75","nodeType":"YulIdentifier","src":"8443:3:75"},"nativeSrc":"8443:11:75","nodeType":"YulFunctionCall","src":"8443:11:75"},{"kind":"number","nativeSrc":"8456:1:75","nodeType":"YulLiteral","src":"8456:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8439:3:75","nodeType":"YulIdentifier","src":"8439:3:75"},"nativeSrc":"8439:19:75","nodeType":"YulFunctionCall","src":"8439:19:75"}],"functionName":{"name":"and","nativeSrc":"8427:3:75","nodeType":"YulIdentifier","src":"8427:3:75"},"nativeSrc":"8427:32:75","nodeType":"YulFunctionCall","src":"8427:32:75"}],"functionName":{"name":"mstore","nativeSrc":"8409:6:75","nodeType":"YulIdentifier","src":"8409:6:75"},"nativeSrc":"8409:51:75","nodeType":"YulFunctionCall","src":"8409:51:75"},"nativeSrc":"8409:51:75","nodeType":"YulExpressionStatement","src":"8409:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8480:9:75","nodeType":"YulIdentifier","src":"8480:9:75"},{"kind":"number","nativeSrc":"8491:2:75","nodeType":"YulLiteral","src":"8491:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8476:3:75","nodeType":"YulIdentifier","src":"8476:3:75"},"nativeSrc":"8476:18:75","nodeType":"YulFunctionCall","src":"8476:18:75"},{"arguments":[{"name":"value1","nativeSrc":"8500:6:75","nodeType":"YulIdentifier","src":"8500:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8516:3:75","nodeType":"YulLiteral","src":"8516:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"8521:1:75","nodeType":"YulLiteral","src":"8521:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8512:3:75","nodeType":"YulIdentifier","src":"8512:3:75"},"nativeSrc":"8512:11:75","nodeType":"YulFunctionCall","src":"8512:11:75"},{"kind":"number","nativeSrc":"8525:1:75","nodeType":"YulLiteral","src":"8525:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8508:3:75","nodeType":"YulIdentifier","src":"8508:3:75"},"nativeSrc":"8508:19:75","nodeType":"YulFunctionCall","src":"8508:19:75"}],"functionName":{"name":"and","nativeSrc":"8496:3:75","nodeType":"YulIdentifier","src":"8496:3:75"},"nativeSrc":"8496:32:75","nodeType":"YulFunctionCall","src":"8496:32:75"}],"functionName":{"name":"mstore","nativeSrc":"8469:6:75","nodeType":"YulIdentifier","src":"8469:6:75"},"nativeSrc":"8469:60:75","nodeType":"YulFunctionCall","src":"8469:60:75"},"nativeSrc":"8469:60:75","nodeType":"YulExpressionStatement","src":"8469:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8549:9:75","nodeType":"YulIdentifier","src":"8549:9:75"},{"kind":"number","nativeSrc":"8560:2:75","nodeType":"YulLiteral","src":"8560:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8545:3:75","nodeType":"YulIdentifier","src":"8545:3:75"},"nativeSrc":"8545:18:75","nodeType":"YulFunctionCall","src":"8545:18:75"},{"name":"value2","nativeSrc":"8565:6:75","nodeType":"YulIdentifier","src":"8565:6:75"}],"functionName":{"name":"mstore","nativeSrc":"8538:6:75","nodeType":"YulIdentifier","src":"8538:6:75"},"nativeSrc":"8538:34:75","nodeType":"YulFunctionCall","src":"8538:34:75"},"nativeSrc":"8538:34:75","nodeType":"YulExpressionStatement","src":"8538:34:75"}]},"name":"abi_encode_tuple_t_contract$_IERC20_$8656_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"8192:386:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8317:9:75","nodeType":"YulTypedName","src":"8317:9:75","type":""},{"name":"value2","nativeSrc":"8328:6:75","nodeType":"YulTypedName","src":"8328:6:75","type":""},{"name":"value1","nativeSrc":"8336:6:75","nodeType":"YulTypedName","src":"8336:6:75","type":""},{"name":"value0","nativeSrc":"8344:6:75","nodeType":"YulTypedName","src":"8344:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8355:4:75","nodeType":"YulTypedName","src":"8355:4:75","type":""}],"src":"8192:386:75"},{"body":{"nativeSrc":"8757:160:75","nodeType":"YulBlock","src":"8757:160:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8774:9:75","nodeType":"YulIdentifier","src":"8774:9:75"},{"kind":"number","nativeSrc":"8785:2:75","nodeType":"YulLiteral","src":"8785:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8767:6:75","nodeType":"YulIdentifier","src":"8767:6:75"},"nativeSrc":"8767:21:75","nodeType":"YulFunctionCall","src":"8767:21:75"},"nativeSrc":"8767:21:75","nodeType":"YulExpressionStatement","src":"8767:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8808:9:75","nodeType":"YulIdentifier","src":"8808:9:75"},{"kind":"number","nativeSrc":"8819:2:75","nodeType":"YulLiteral","src":"8819:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8804:3:75","nodeType":"YulIdentifier","src":"8804:3:75"},"nativeSrc":"8804:18:75","nodeType":"YulFunctionCall","src":"8804:18:75"},{"kind":"number","nativeSrc":"8824:2:75","nodeType":"YulLiteral","src":"8824:2:75","type":"","value":"10"}],"functionName":{"name":"mstore","nativeSrc":"8797:6:75","nodeType":"YulIdentifier","src":"8797:6:75"},"nativeSrc":"8797:30:75","nodeType":"YulFunctionCall","src":"8797:30:75"},"nativeSrc":"8797:30:75","nodeType":"YulExpressionStatement","src":"8797:30:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8847:9:75","nodeType":"YulIdentifier","src":"8847:9:75"},{"kind":"number","nativeSrc":"8858:2:75","nodeType":"YulLiteral","src":"8858:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8843:3:75","nodeType":"YulIdentifier","src":"8843:3:75"},"nativeSrc":"8843:18:75","nodeType":"YulFunctionCall","src":"8843:18:75"},{"hexValue":"646973636f6e6e656374","kind":"string","nativeSrc":"8863:12:75","nodeType":"YulLiteral","src":"8863:12:75","type":"","value":"disconnect"}],"functionName":{"name":"mstore","nativeSrc":"8836:6:75","nodeType":"YulIdentifier","src":"8836:6:75"},"nativeSrc":"8836:40:75","nodeType":"YulFunctionCall","src":"8836:40:75"},"nativeSrc":"8836:40:75","nodeType":"YulExpressionStatement","src":"8836:40:75"},{"nativeSrc":"8885:26:75","nodeType":"YulAssignment","src":"8885:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8897:9:75","nodeType":"YulIdentifier","src":"8897:9:75"},{"kind":"number","nativeSrc":"8908:2:75","nodeType":"YulLiteral","src":"8908:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8893:3:75","nodeType":"YulIdentifier","src":"8893:3:75"},"nativeSrc":"8893:18:75","nodeType":"YulFunctionCall","src":"8893:18:75"},"variableNames":[{"name":"tail","nativeSrc":"8885:4:75","nodeType":"YulIdentifier","src":"8885:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_33f3b0f27639a8cf87e42127aff3d5fb0ceefb0ec7f418bbae25f31ac364ef39__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8583:334:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8734:9:75","nodeType":"YulTypedName","src":"8734:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8748:4:75","nodeType":"YulTypedName","src":"8748:4:75","type":""}],"src":"8583:334:75"},{"body":{"nativeSrc":"9017:92:75","nodeType":"YulBlock","src":"9017:92:75","statements":[{"nativeSrc":"9027:26:75","nodeType":"YulAssignment","src":"9027:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9039:9:75","nodeType":"YulIdentifier","src":"9039:9:75"},{"kind":"number","nativeSrc":"9050:2:75","nodeType":"YulLiteral","src":"9050:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9035:3:75","nodeType":"YulIdentifier","src":"9035:3:75"},"nativeSrc":"9035:18:75","nodeType":"YulFunctionCall","src":"9035:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9027:4:75","nodeType":"YulIdentifier","src":"9027:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9069:9:75","nodeType":"YulIdentifier","src":"9069:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"9094:6:75","nodeType":"YulIdentifier","src":"9094:6:75"}],"functionName":{"name":"iszero","nativeSrc":"9087:6:75","nodeType":"YulIdentifier","src":"9087:6:75"},"nativeSrc":"9087:14:75","nodeType":"YulFunctionCall","src":"9087:14:75"}],"functionName":{"name":"iszero","nativeSrc":"9080:6:75","nodeType":"YulIdentifier","src":"9080:6:75"},"nativeSrc":"9080:22:75","nodeType":"YulFunctionCall","src":"9080:22:75"}],"functionName":{"name":"mstore","nativeSrc":"9062:6:75","nodeType":"YulIdentifier","src":"9062:6:75"},"nativeSrc":"9062:41:75","nodeType":"YulFunctionCall","src":"9062:41:75"},"nativeSrc":"9062:41:75","nodeType":"YulExpressionStatement","src":"9062:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"8922:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8986:9:75","nodeType":"YulTypedName","src":"8986:9:75","type":""},{"name":"value0","nativeSrc":"8997:6:75","nodeType":"YulTypedName","src":"8997:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9008:4:75","nodeType":"YulTypedName","src":"9008:4:75","type":""}],"src":"8922:187:75"},{"body":{"nativeSrc":"9288:156:75","nodeType":"YulBlock","src":"9288:156:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9305:9:75","nodeType":"YulIdentifier","src":"9305:9:75"},{"kind":"number","nativeSrc":"9316:2:75","nodeType":"YulLiteral","src":"9316:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9298:6:75","nodeType":"YulIdentifier","src":"9298:6:75"},"nativeSrc":"9298:21:75","nodeType":"YulFunctionCall","src":"9298:21:75"},"nativeSrc":"9298:21:75","nodeType":"YulExpressionStatement","src":"9298:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9339:9:75","nodeType":"YulIdentifier","src":"9339:9:75"},{"kind":"number","nativeSrc":"9350:2:75","nodeType":"YulLiteral","src":"9350:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9335:3:75","nodeType":"YulIdentifier","src":"9335:3:75"},"nativeSrc":"9335:18:75","nodeType":"YulFunctionCall","src":"9335:18:75"},{"kind":"number","nativeSrc":"9355:1:75","nodeType":"YulLiteral","src":"9355:1:75","type":"","value":"7"}],"functionName":{"name":"mstore","nativeSrc":"9328:6:75","nodeType":"YulIdentifier","src":"9328:6:75"},"nativeSrc":"9328:29:75","nodeType":"YulFunctionCall","src":"9328:29:75"},"nativeSrc":"9328:29:75","nodeType":"YulExpressionStatement","src":"9328:29:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9377:9:75","nodeType":"YulIdentifier","src":"9377:9:75"},{"kind":"number","nativeSrc":"9388:2:75","nodeType":"YulLiteral","src":"9388:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9373:3:75","nodeType":"YulIdentifier","src":"9373:3:75"},"nativeSrc":"9373:18:75","nodeType":"YulFunctionCall","src":"9373:18:75"},{"hexValue":"636f6e6e656374","kind":"string","nativeSrc":"9393:9:75","nodeType":"YulLiteral","src":"9393:9:75","type":"","value":"connect"}],"functionName":{"name":"mstore","nativeSrc":"9366:6:75","nodeType":"YulIdentifier","src":"9366:6:75"},"nativeSrc":"9366:37:75","nodeType":"YulFunctionCall","src":"9366:37:75"},"nativeSrc":"9366:37:75","nodeType":"YulExpressionStatement","src":"9366:37:75"},{"nativeSrc":"9412:26:75","nodeType":"YulAssignment","src":"9412:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9424:9:75","nodeType":"YulIdentifier","src":"9424:9:75"},{"kind":"number","nativeSrc":"9435:2:75","nodeType":"YulLiteral","src":"9435:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9420:3:75","nodeType":"YulIdentifier","src":"9420:3:75"},"nativeSrc":"9420:18:75","nodeType":"YulFunctionCall","src":"9420:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9412:4:75","nodeType":"YulIdentifier","src":"9412:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_6cc4cd8a2857f640feca9d434996a8bd85fc3342a4342aa8c9e794d5d512b324__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9114:330:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9265:9:75","nodeType":"YulTypedName","src":"9265:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9279:4:75","nodeType":"YulTypedName","src":"9279:4:75","type":""}],"src":"9114:330:75"},{"body":{"nativeSrc":"9623:156:75","nodeType":"YulBlock","src":"9623:156:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9640:9:75","nodeType":"YulIdentifier","src":"9640:9:75"},{"kind":"number","nativeSrc":"9651:2:75","nodeType":"YulLiteral","src":"9651:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9633:6:75","nodeType":"YulIdentifier","src":"9633:6:75"},"nativeSrc":"9633:21:75","nodeType":"YulFunctionCall","src":"9633:21:75"},"nativeSrc":"9633:21:75","nodeType":"YulExpressionStatement","src":"9633:21:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9674:9:75","nodeType":"YulIdentifier","src":"9674:9:75"},{"kind":"number","nativeSrc":"9685:2:75","nodeType":"YulLiteral","src":"9685:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9670:3:75","nodeType":"YulIdentifier","src":"9670:3:75"},"nativeSrc":"9670:18:75","nodeType":"YulFunctionCall","src":"9670:18:75"},{"kind":"number","nativeSrc":"9690:1:75","nodeType":"YulLiteral","src":"9690:1:75","type":"","value":"7"}],"functionName":{"name":"mstore","nativeSrc":"9663:6:75","nodeType":"YulIdentifier","src":"9663:6:75"},"nativeSrc":"9663:29:75","nodeType":"YulFunctionCall","src":"9663:29:75"},"nativeSrc":"9663:29:75","nodeType":"YulExpressionStatement","src":"9663:29:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9712:9:75","nodeType":"YulIdentifier","src":"9712:9:75"},{"kind":"number","nativeSrc":"9723:2:75","nodeType":"YulLiteral","src":"9723:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9708:3:75","nodeType":"YulIdentifier","src":"9708:3:75"},"nativeSrc":"9708:18:75","nodeType":"YulFunctionCall","src":"9708:18:75"},{"hexValue":"6465706f736974","kind":"string","nativeSrc":"9728:9:75","nodeType":"YulLiteral","src":"9728:9:75","type":"","value":"deposit"}],"functionName":{"name":"mstore","nativeSrc":"9701:6:75","nodeType":"YulIdentifier","src":"9701:6:75"},"nativeSrc":"9701:37:75","nodeType":"YulFunctionCall","src":"9701:37:75"},"nativeSrc":"9701:37:75","nodeType":"YulExpressionStatement","src":"9701:37:75"},{"nativeSrc":"9747:26:75","nodeType":"YulAssignment","src":"9747:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9759:9:75","nodeType":"YulIdentifier","src":"9759:9:75"},{"kind":"number","nativeSrc":"9770:2:75","nodeType":"YulLiteral","src":"9770:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9755:3:75","nodeType":"YulIdentifier","src":"9755:3:75"},"nativeSrc":"9755:18:75","nodeType":"YulFunctionCall","src":"9755:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9747:4:75","nodeType":"YulIdentifier","src":"9747:4:75"}]}]},"name":"abi_encode_tuple_t_stringliteral_48c73f681176fc7b3f9693986fd7b14581e8d540519e27400e88b8713932be01__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9449:330:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9600:9:75","nodeType":"YulTypedName","src":"9600:9:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9614:4:75","nodeType":"YulTypedName","src":"9614:4:75","type":""}],"src":"9449:330:75"},{"body":{"nativeSrc":"9913:145:75","nodeType":"YulBlock","src":"9913:145:75","statements":[{"nativeSrc":"9923:26:75","nodeType":"YulAssignment","src":"9923:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9935:9:75","nodeType":"YulIdentifier","src":"9935:9:75"},{"kind":"number","nativeSrc":"9946:2:75","nodeType":"YulLiteral","src":"9946:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9931:3:75","nodeType":"YulIdentifier","src":"9931:3:75"},"nativeSrc":"9931:18:75","nodeType":"YulFunctionCall","src":"9931:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9923:4:75","nodeType":"YulIdentifier","src":"9923:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9965:9:75","nodeType":"YulIdentifier","src":"9965:9:75"},{"arguments":[{"name":"value0","nativeSrc":"9980:6:75","nodeType":"YulIdentifier","src":"9980:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9996:3:75","nodeType":"YulLiteral","src":"9996:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"10001:1:75","nodeType":"YulLiteral","src":"10001:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9992:3:75","nodeType":"YulIdentifier","src":"9992:3:75"},"nativeSrc":"9992:11:75","nodeType":"YulFunctionCall","src":"9992:11:75"},{"kind":"number","nativeSrc":"10005:1:75","nodeType":"YulLiteral","src":"10005:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9988:3:75","nodeType":"YulIdentifier","src":"9988:3:75"},"nativeSrc":"9988:19:75","nodeType":"YulFunctionCall","src":"9988:19:75"}],"functionName":{"name":"and","nativeSrc":"9976:3:75","nodeType":"YulIdentifier","src":"9976:3:75"},"nativeSrc":"9976:32:75","nodeType":"YulFunctionCall","src":"9976:32:75"}],"functionName":{"name":"mstore","nativeSrc":"9958:6:75","nodeType":"YulIdentifier","src":"9958:6:75"},"nativeSrc":"9958:51:75","nodeType":"YulFunctionCall","src":"9958:51:75"},"nativeSrc":"9958:51:75","nodeType":"YulExpressionStatement","src":"9958:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10029:9:75","nodeType":"YulIdentifier","src":"10029:9:75"},{"kind":"number","nativeSrc":"10040:2:75","nodeType":"YulLiteral","src":"10040:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10025:3:75","nodeType":"YulIdentifier","src":"10025:3:75"},"nativeSrc":"10025:18:75","nodeType":"YulFunctionCall","src":"10025:18:75"},{"name":"value1","nativeSrc":"10045:6:75","nodeType":"YulIdentifier","src":"10045:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10018:6:75","nodeType":"YulIdentifier","src":"10018:6:75"},"nativeSrc":"10018:34:75","nodeType":"YulFunctionCall","src":"10018:34:75"},"nativeSrc":"10018:34:75","nodeType":"YulExpressionStatement","src":"10018:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"9784:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9874:9:75","nodeType":"YulTypedName","src":"9874:9:75","type":""},{"name":"value1","nativeSrc":"9885:6:75","nodeType":"YulTypedName","src":"9885:6:75","type":""},{"name":"value0","nativeSrc":"9893:6:75","nodeType":"YulTypedName","src":"9893:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9904:4:75","nodeType":"YulTypedName","src":"9904:4:75","type":""}],"src":"9784:274:75"},{"body":{"nativeSrc":"10141:167:75","nodeType":"YulBlock","src":"10141:167:75","statements":[{"body":{"nativeSrc":"10187:16:75","nodeType":"YulBlock","src":"10187:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10196:1:75","nodeType":"YulLiteral","src":"10196:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10199:1:75","nodeType":"YulLiteral","src":"10199:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10189:6:75","nodeType":"YulIdentifier","src":"10189:6:75"},"nativeSrc":"10189:12:75","nodeType":"YulFunctionCall","src":"10189:12:75"},"nativeSrc":"10189:12:75","nodeType":"YulExpressionStatement","src":"10189:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10162:7:75","nodeType":"YulIdentifier","src":"10162:7:75"},{"name":"headStart","nativeSrc":"10171:9:75","nodeType":"YulIdentifier","src":"10171:9:75"}],"functionName":{"name":"sub","nativeSrc":"10158:3:75","nodeType":"YulIdentifier","src":"10158:3:75"},"nativeSrc":"10158:23:75","nodeType":"YulFunctionCall","src":"10158:23:75"},{"kind":"number","nativeSrc":"10183:2:75","nodeType":"YulLiteral","src":"10183:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10154:3:75","nodeType":"YulIdentifier","src":"10154:3:75"},"nativeSrc":"10154:32:75","nodeType":"YulFunctionCall","src":"10154:32:75"},"nativeSrc":"10151:52:75","nodeType":"YulIf","src":"10151:52:75"},{"nativeSrc":"10212:29:75","nodeType":"YulVariableDeclaration","src":"10212:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10231:9:75","nodeType":"YulIdentifier","src":"10231:9:75"}],"functionName":{"name":"mload","nativeSrc":"10225:5:75","nodeType":"YulIdentifier","src":"10225:5:75"},"nativeSrc":"10225:16:75","nodeType":"YulFunctionCall","src":"10225:16:75"},"variables":[{"name":"value","nativeSrc":"10216:5:75","nodeType":"YulTypedName","src":"10216:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10272:5:75","nodeType":"YulIdentifier","src":"10272:5:75"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"10250:21:75","nodeType":"YulIdentifier","src":"10250:21:75"},"nativeSrc":"10250:28:75","nodeType":"YulFunctionCall","src":"10250:28:75"},"nativeSrc":"10250:28:75","nodeType":"YulExpressionStatement","src":"10250:28:75"},{"nativeSrc":"10287:15:75","nodeType":"YulAssignment","src":"10287:15:75","value":{"name":"value","nativeSrc":"10297:5:75","nodeType":"YulIdentifier","src":"10297:5:75"},"variableNames":[{"name":"value0","nativeSrc":"10287:6:75","nodeType":"YulIdentifier","src":"10287:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"10063:245:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10107:9:75","nodeType":"YulTypedName","src":"10107:9:75","type":""},{"name":"dataEnd","nativeSrc":"10118:7:75","nodeType":"YulTypedName","src":"10118:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10130:6:75","nodeType":"YulTypedName","src":"10130:6:75","type":""}],"src":"10063:245:75"},{"body":{"nativeSrc":"10394:103:75","nodeType":"YulBlock","src":"10394:103:75","statements":[{"body":{"nativeSrc":"10440:16:75","nodeType":"YulBlock","src":"10440:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10449:1:75","nodeType":"YulLiteral","src":"10449:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10452:1:75","nodeType":"YulLiteral","src":"10452:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10442:6:75","nodeType":"YulIdentifier","src":"10442:6:75"},"nativeSrc":"10442:12:75","nodeType":"YulFunctionCall","src":"10442:12:75"},"nativeSrc":"10442:12:75","nodeType":"YulExpressionStatement","src":"10442:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10415:7:75","nodeType":"YulIdentifier","src":"10415:7:75"},{"name":"headStart","nativeSrc":"10424:9:75","nodeType":"YulIdentifier","src":"10424:9:75"}],"functionName":{"name":"sub","nativeSrc":"10411:3:75","nodeType":"YulIdentifier","src":"10411:3:75"},"nativeSrc":"10411:23:75","nodeType":"YulFunctionCall","src":"10411:23:75"},{"kind":"number","nativeSrc":"10436:2:75","nodeType":"YulLiteral","src":"10436:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10407:3:75","nodeType":"YulIdentifier","src":"10407:3:75"},"nativeSrc":"10407:32:75","nodeType":"YulFunctionCall","src":"10407:32:75"},"nativeSrc":"10404:52:75","nodeType":"YulIf","src":"10404:52:75"},{"nativeSrc":"10465:26:75","nodeType":"YulAssignment","src":"10465:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10481:9:75","nodeType":"YulIdentifier","src":"10481:9:75"}],"functionName":{"name":"mload","nativeSrc":"10475:5:75","nodeType":"YulIdentifier","src":"10475:5:75"},"nativeSrc":"10475:16:75","nodeType":"YulFunctionCall","src":"10475:16:75"},"variableNames":[{"name":"value0","nativeSrc":"10465:6:75","nodeType":"YulIdentifier","src":"10465:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"10313:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10360:9:75","nodeType":"YulTypedName","src":"10360:9:75","type":""},{"name":"dataEnd","nativeSrc":"10371:7:75","nodeType":"YulTypedName","src":"10371:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10383:6:75","nodeType":"YulTypedName","src":"10383:6:75","type":""}],"src":"10313:184:75"},{"body":{"nativeSrc":"10592:595:75","nodeType":"YulBlock","src":"10592:595:75","statements":[{"body":{"nativeSrc":"10638:16:75","nodeType":"YulBlock","src":"10638:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10647:1:75","nodeType":"YulLiteral","src":"10647:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10650:1:75","nodeType":"YulLiteral","src":"10650:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10640:6:75","nodeType":"YulIdentifier","src":"10640:6:75"},"nativeSrc":"10640:12:75","nodeType":"YulFunctionCall","src":"10640:12:75"},"nativeSrc":"10640:12:75","nodeType":"YulExpressionStatement","src":"10640:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10613:7:75","nodeType":"YulIdentifier","src":"10613:7:75"},{"name":"headStart","nativeSrc":"10622:9:75","nodeType":"YulIdentifier","src":"10622:9:75"}],"functionName":{"name":"sub","nativeSrc":"10609:3:75","nodeType":"YulIdentifier","src":"10609:3:75"},"nativeSrc":"10609:23:75","nodeType":"YulFunctionCall","src":"10609:23:75"},{"kind":"number","nativeSrc":"10634:2:75","nodeType":"YulLiteral","src":"10634:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10605:3:75","nodeType":"YulIdentifier","src":"10605:3:75"},"nativeSrc":"10605:32:75","nodeType":"YulFunctionCall","src":"10605:32:75"},"nativeSrc":"10602:52:75","nodeType":"YulIf","src":"10602:52:75"},{"nativeSrc":"10663:30:75","nodeType":"YulVariableDeclaration","src":"10663:30:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10683:9:75","nodeType":"YulIdentifier","src":"10683:9:75"}],"functionName":{"name":"mload","nativeSrc":"10677:5:75","nodeType":"YulIdentifier","src":"10677:5:75"},"nativeSrc":"10677:16:75","nodeType":"YulFunctionCall","src":"10677:16:75"},"variables":[{"name":"offset","nativeSrc":"10667:6:75","nodeType":"YulTypedName","src":"10667:6:75","type":""}]},{"body":{"nativeSrc":"10736:16:75","nodeType":"YulBlock","src":"10736:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10745:1:75","nodeType":"YulLiteral","src":"10745:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10748:1:75","nodeType":"YulLiteral","src":"10748:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10738:6:75","nodeType":"YulIdentifier","src":"10738:6:75"},"nativeSrc":"10738:12:75","nodeType":"YulFunctionCall","src":"10738:12:75"},"nativeSrc":"10738:12:75","nodeType":"YulExpressionStatement","src":"10738:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10708:6:75","nodeType":"YulIdentifier","src":"10708:6:75"},{"kind":"number","nativeSrc":"10716:18:75","nodeType":"YulLiteral","src":"10716:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10705:2:75","nodeType":"YulIdentifier","src":"10705:2:75"},"nativeSrc":"10705:30:75","nodeType":"YulFunctionCall","src":"10705:30:75"},"nativeSrc":"10702:50:75","nodeType":"YulIf","src":"10702:50:75"},{"nativeSrc":"10761:32:75","nodeType":"YulVariableDeclaration","src":"10761:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10775:9:75","nodeType":"YulIdentifier","src":"10775:9:75"},{"name":"offset","nativeSrc":"10786:6:75","nodeType":"YulIdentifier","src":"10786:6:75"}],"functionName":{"name":"add","nativeSrc":"10771:3:75","nodeType":"YulIdentifier","src":"10771:3:75"},"nativeSrc":"10771:22:75","nodeType":"YulFunctionCall","src":"10771:22:75"},"variables":[{"name":"_1","nativeSrc":"10765:2:75","nodeType":"YulTypedName","src":"10765:2:75","type":""}]},{"body":{"nativeSrc":"10841:16:75","nodeType":"YulBlock","src":"10841:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10850:1:75","nodeType":"YulLiteral","src":"10850:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10853:1:75","nodeType":"YulLiteral","src":"10853:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10843:6:75","nodeType":"YulIdentifier","src":"10843:6:75"},"nativeSrc":"10843:12:75","nodeType":"YulFunctionCall","src":"10843:12:75"},"nativeSrc":"10843:12:75","nodeType":"YulExpressionStatement","src":"10843:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"10820:2:75","nodeType":"YulIdentifier","src":"10820:2:75"},{"kind":"number","nativeSrc":"10824:4:75","nodeType":"YulLiteral","src":"10824:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10816:3:75","nodeType":"YulIdentifier","src":"10816:3:75"},"nativeSrc":"10816:13:75","nodeType":"YulFunctionCall","src":"10816:13:75"},{"name":"dataEnd","nativeSrc":"10831:7:75","nodeType":"YulIdentifier","src":"10831:7:75"}],"functionName":{"name":"slt","nativeSrc":"10812:3:75","nodeType":"YulIdentifier","src":"10812:3:75"},"nativeSrc":"10812:27:75","nodeType":"YulFunctionCall","src":"10812:27:75"}],"functionName":{"name":"iszero","nativeSrc":"10805:6:75","nodeType":"YulIdentifier","src":"10805:6:75"},"nativeSrc":"10805:35:75","nodeType":"YulFunctionCall","src":"10805:35:75"},"nativeSrc":"10802:55:75","nodeType":"YulIf","src":"10802:55:75"},{"nativeSrc":"10866:23:75","nodeType":"YulVariableDeclaration","src":"10866:23:75","value":{"arguments":[{"name":"_1","nativeSrc":"10886:2:75","nodeType":"YulIdentifier","src":"10886:2:75"}],"functionName":{"name":"mload","nativeSrc":"10880:5:75","nodeType":"YulIdentifier","src":"10880:5:75"},"nativeSrc":"10880:9:75","nodeType":"YulFunctionCall","src":"10880:9:75"},"variables":[{"name":"length","nativeSrc":"10870:6:75","nodeType":"YulTypedName","src":"10870:6:75","type":""}]},{"nativeSrc":"10898:65:75","nodeType":"YulVariableDeclaration","src":"10898:65:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"10955:6:75","nodeType":"YulIdentifier","src":"10955:6:75"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"10927:27:75","nodeType":"YulIdentifier","src":"10927:27:75"},"nativeSrc":"10927:35:75","nodeType":"YulFunctionCall","src":"10927:35:75"}],"functionName":{"name":"allocate_memory","nativeSrc":"10911:15:75","nodeType":"YulIdentifier","src":"10911:15:75"},"nativeSrc":"10911:52:75","nodeType":"YulFunctionCall","src":"10911:52:75"},"variables":[{"name":"array","nativeSrc":"10902:5:75","nodeType":"YulTypedName","src":"10902:5:75","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"10979:5:75","nodeType":"YulIdentifier","src":"10979:5:75"},{"name":"length","nativeSrc":"10986:6:75","nodeType":"YulIdentifier","src":"10986:6:75"}],"functionName":{"name":"mstore","nativeSrc":"10972:6:75","nodeType":"YulIdentifier","src":"10972:6:75"},"nativeSrc":"10972:21:75","nodeType":"YulFunctionCall","src":"10972:21:75"},"nativeSrc":"10972:21:75","nodeType":"YulExpressionStatement","src":"10972:21:75"},{"body":{"nativeSrc":"11043:16:75","nodeType":"YulBlock","src":"11043:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11052:1:75","nodeType":"YulLiteral","src":"11052:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11055:1:75","nodeType":"YulLiteral","src":"11055:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11045:6:75","nodeType":"YulIdentifier","src":"11045:6:75"},"nativeSrc":"11045:12:75","nodeType":"YulFunctionCall","src":"11045:12:75"},"nativeSrc":"11045:12:75","nodeType":"YulExpressionStatement","src":"11045:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"11016:2:75","nodeType":"YulIdentifier","src":"11016:2:75"},{"name":"length","nativeSrc":"11020:6:75","nodeType":"YulIdentifier","src":"11020:6:75"}],"functionName":{"name":"add","nativeSrc":"11012:3:75","nodeType":"YulIdentifier","src":"11012:3:75"},"nativeSrc":"11012:15:75","nodeType":"YulFunctionCall","src":"11012:15:75"},{"kind":"number","nativeSrc":"11029:2:75","nodeType":"YulLiteral","src":"11029:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11008:3:75","nodeType":"YulIdentifier","src":"11008:3:75"},"nativeSrc":"11008:24:75","nodeType":"YulFunctionCall","src":"11008:24:75"},{"name":"dataEnd","nativeSrc":"11034:7:75","nodeType":"YulIdentifier","src":"11034:7:75"}],"functionName":{"name":"gt","nativeSrc":"11005:2:75","nodeType":"YulIdentifier","src":"11005:2:75"},"nativeSrc":"11005:37:75","nodeType":"YulFunctionCall","src":"11005:37:75"},"nativeSrc":"11002:57:75","nodeType":"YulIf","src":"11002:57:75"},{"expression":{"arguments":[{"arguments":[{"name":"array","nativeSrc":"11078:5:75","nodeType":"YulIdentifier","src":"11078:5:75"},{"kind":"number","nativeSrc":"11085:2:75","nodeType":"YulLiteral","src":"11085:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11074:3:75","nodeType":"YulIdentifier","src":"11074:3:75"},"nativeSrc":"11074:14:75","nodeType":"YulFunctionCall","src":"11074:14:75"},{"arguments":[{"name":"_1","nativeSrc":"11094:2:75","nodeType":"YulIdentifier","src":"11094:2:75"},{"kind":"number","nativeSrc":"11098:2:75","nodeType":"YulLiteral","src":"11098:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11090:3:75","nodeType":"YulIdentifier","src":"11090:3:75"},"nativeSrc":"11090:11:75","nodeType":"YulFunctionCall","src":"11090:11:75"},{"name":"length","nativeSrc":"11103:6:75","nodeType":"YulIdentifier","src":"11103:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"11068:5:75","nodeType":"YulIdentifier","src":"11068:5:75"},"nativeSrc":"11068:42:75","nodeType":"YulFunctionCall","src":"11068:42:75"},"nativeSrc":"11068:42:75","nodeType":"YulExpressionStatement","src":"11068:42:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nativeSrc":"11134:5:75","nodeType":"YulIdentifier","src":"11134:5:75"},{"name":"length","nativeSrc":"11141:6:75","nodeType":"YulIdentifier","src":"11141:6:75"}],"functionName":{"name":"add","nativeSrc":"11130:3:75","nodeType":"YulIdentifier","src":"11130:3:75"},"nativeSrc":"11130:18:75","nodeType":"YulFunctionCall","src":"11130:18:75"},{"kind":"number","nativeSrc":"11150:2:75","nodeType":"YulLiteral","src":"11150:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11126:3:75","nodeType":"YulIdentifier","src":"11126:3:75"},"nativeSrc":"11126:27:75","nodeType":"YulFunctionCall","src":"11126:27:75"},{"kind":"number","nativeSrc":"11155:1:75","nodeType":"YulLiteral","src":"11155:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11119:6:75","nodeType":"YulIdentifier","src":"11119:6:75"},"nativeSrc":"11119:38:75","nodeType":"YulFunctionCall","src":"11119:38:75"},"nativeSrc":"11119:38:75","nodeType":"YulExpressionStatement","src":"11119:38:75"},{"nativeSrc":"11166:15:75","nodeType":"YulAssignment","src":"11166:15:75","value":{"name":"array","nativeSrc":"11176:5:75","nodeType":"YulIdentifier","src":"11176:5:75"},"variableNames":[{"name":"value0","nativeSrc":"11166:6:75","nodeType":"YulIdentifier","src":"11166:6:75"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"10502:685:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10558:9:75","nodeType":"YulTypedName","src":"10558:9:75","type":""},{"name":"dataEnd","nativeSrc":"10569:7:75","nodeType":"YulTypedName","src":"10569:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10581:6:75","nodeType":"YulTypedName","src":"10581:6:75","type":""}],"src":"10502:685:75"}]},"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_$22443_memory_ptr__to_t_struct$_DummyStorage_$22443_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_$22443_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_$8656_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"22412":[{"length":32,"start":446},{"length":32,"start":843},{"length":32,"start":1635},{"length":32,"start":1879},{"length":32,"start":2050}],"22424":[{"length":32,"start":300},{"length":32,"start":625},{"length":32,"start":1338},{"length":32,"start":2136},{"length":32,"start":2372}],"22426":[{"length":32,"start":371},{"length":32,"start":896},{"length":32,"start":1588},{"length":32,"start":1839},{"length":32,"start":2008}]},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b50600436106100b1575f3560e01c8063852958771161006e578063852958771461016e5780639c4667a2146101ad5780639cd47128146101e0578063b6b55f25146101f3578063ce96cb7714610206578063f3e0ffbf14610219575f5ffd5b80630981b1c2146100b55780632e1a7d4d146100de578063402d267d146100f35780635a117456146101145780635b9a4c3514610127578063728d6fd81461014e575b5f5ffd5b6100c86100c3366004610a8e565b61022c565b6040516100d59190610ae0565b60405180910390f35b6100f16100ec366004610b15565b6102ea565b005b610106610101366004610b2c565b610413565b6040519081526020016100d5565b6100f1610122366004610b69565b610435565b6101067f000000000000000000000000000000000000000000000000000000000000000081565b61016161015c366004610b2c565b6104ae565b6040516100d59190610b84565b6101957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100d5565b6101956101bb366004610b2c565b507f000000000000000000000000000000000000000000000000000000000000000090565b6100f16101ee366004610bb7565b6104e0565b6100f1610201366004610b15565b6105d9565b610106610214366004610b2c565b6106fe565b610106610227366004610b2c565b6107c1565b60605f60ff8416801561024157610241610bf1565b90505f81801561025357610253610bf1565b036102d4575f8380602001905181019061026d9190610c05565b90507f000000000000000000000000000000000000000000000000000000000000000061029a8582610d0e565b507f973e473eebb9c0190db312a86661d30a6e022561e4049e3850ddc7e5d24ba9d1816040516102ca9190610b84565b60405180910390a1505b505060408051602081019091525f815292915050565b6102f2610833565b606001511561033457604051633c47dfc360e21b8152602060048201526008602482015267776974686472617760c01b60448201526064015b60405180910390fd5b6040516352f950a960e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a5f2a152906064015f604051808303815f87803b1580156103c1575f5ffd5b505af11580156103d3573d5f5f3e3d5ffd5b505050507f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d8160405161040891815260200190565b60405180910390a150565b5f61041d82610916565b604001511561042d57505f919050565b505f19919050565b61043d610833565b602001511561047c57604051633c47dfc360e21b815260206004820152600a602482015269191a5cd8dbdb9b9958dd60b21b604482015260640161032b565b60405181151581527f1b5482bdd0870e5877dfba574a78890a9ed35fa5fe455e49d0ee06d40014d15e90602001610408565b604080516080810182525f8082526020820181905291810182905260608101919091526104da82610916565b92915050565b5f818060200190518101906104f59190610c05565b905081518160405160200161050a9190610b84565b6040516020818303038152906040525114610538576040516350701b6160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006105638382610d0e565b5080511561059e57604051633c47dfc360e21b815260206004820152600760248201526618dbdb9b9958dd60ca1b604482015260640161032b565b7f71149fec4141134c52c251b737df39ca5dd7286b51b86a0b68b2dd900243c0ce826040516105cd9190610ae0565b60405180910390a15050565b6105e1610833565b604001511561061d57604051633c47dfc360e21b815260206004820152600760248201526619195c1bdcda5d60ca1b604482015260640161032b565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156106a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106cd9190610dc9565b506040518181527f4d6ce1e535dbade1c23defba91e23b8f791ce5edc0cc320257a2b364e4e3842690602001610408565b5f61070882610916565b606001511561071857505f919050565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa15801561079d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da9190610de4565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401610782565b604080516080810182525f8082526020820181905291810182905260608101919091527f0000000000000000000000000000000000000000000000000000000000000000805461088290610c8a565b80601f01602080910402602001604051908101604052809291908181526020018280546108ae90610c8a565b80156108f95780601f106108d0576101008083540402835291602001916108f9565b820191905f5260205f20905b8154815290600101906020018083116108dc57829003601f168201915b50505050508060200190518101906109119190610c05565b905090565b604080516080810182525f80825260208201819052818301819052606082015290516347e5753360e01b81527f000000000000000000000000000000000000000000000000000000000000000060048201526001600160a01b038316906347e57533906024015f60405180830381865afa158015610996573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109bd9190810190610dfb565b8060200190518101906104da9190610c05565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610a0d57610a0d6109d0565b604052919050565b5f67ffffffffffffffff821115610a2e57610a2e6109d0565b50601f01601f191660200190565b5f82601f830112610a4b575f5ffd5b8135610a5e610a5982610a15565b6109e4565b818152846020838601011115610a72575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610a9f575f5ffd5b823560ff81168114610aaf575f5ffd5b9150602083013567ffffffffffffffff811115610aca575f5ffd5b610ad685828601610a3c565b9150509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215610b25575f5ffd5b5035919050565b5f60208284031215610b3c575f5ffd5b81356001600160a01b0381168114610b52575f5ffd5b9392505050565b8015158114610b66575f5ffd5b50565b5f60208284031215610b79575f5ffd5b8135610b5281610b59565b81511515815260208083015115159082015260408083015115159082015260609182015115159181019190915260800190565b5f60208284031215610bc7575f5ffd5b813567ffffffffffffffff811115610bdd575f5ffd5b610be984828501610a3c565b949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6080828403128015610c16575f5ffd5b506040516080810167ffffffffffffffff81118282101715610c3a57610c3a6109d0565b6040528251610c4881610b59565b81526020830151610c5881610b59565b60208201526040830151610c6b81610b59565b60408201526060830151610c7e81610b59565b60608201529392505050565b600181811c90821680610c9e57607f821691505b602082108103610cbc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d0957805f5260205f20601f840160051c81016020851015610ce75750805b601f840160051c820191505b81811015610d06575f8155600101610cf3565b50505b505050565b815167ffffffffffffffff811115610d2857610d286109d0565b610d3c81610d368454610c8a565b84610cc2565b6020601f821160018114610d6e575f8315610d575750848201515b5f19600385901b1c1916600184901b178455610d06565b5f84815260208120601f198516915b82811015610d9d5787850151825560209485019460019092019101610d7d565b5084821015610dba57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610dd9575f5ffd5b8151610b5281610b59565b5f60208284031215610df4575f5ffd5b5051919050565b5f60208284031215610e0b575f5ffd5b815167ffffffffffffffff811115610e21575f5ffd5b8201601f81018413610e31575f5ffd5b8051610e3f610a5982610a15565b818152856020838501011115610e53575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea264697066735822122013f5aef5a23dd8da0b8fe73ec8df9ee03b8ec1ae3d3a399cd6d0f5bf202f943364736f6c634300081c0033","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 SGT CREATE2 0xAE CREATE2 LOG2 RETURNDATASIZE 0xD8 0xDA SIGNEXTEND DUP16 0xE7 RETURNDATACOPY 0xC8 0xDF SWAP15 0xE0 EXTCODESIZE DUP15 0xC1 0xAE RETURNDATASIZE GASPRICE CODECOPY SWAP13 0xD6 0xD0 CREATE2 0xBF KECCAK256 0x2F SWAP5 CALLER PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"622:3150:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3246:392;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2849:212;;;;;;:::i;:::-;;:::i;:::-;;2425:183;;;;;;:::i;:::-;;:::i;:::-;;;2633:25:75;;;2621:2;2606:18;2425:183:72;2487:177:75;2078:148:72;;;;;;:::i;:::-;;:::i;762:81::-;;;;;3642:128;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;847:30::-;;;;;;;;-1:-1:-1;;;;;3889:32:75;;;3871:51;;3859:2;3844:18;847:30:72;3725:203:75;2612:104:72;;;;;;:::i;:::-;-1:-1:-1;2704:6:72;;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:72;3409:13;:39;;;;;;:::i;:::-;;3405:207;;3458:24;3496:6;3485:34;;;;;;;;;;;;:::i;:::-;3458:61;-1:-1:-1;3552:11:72;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:72;;;;;;;;;-1:-1:-1;3624:9:72;;3246:392;;;;:::o;2849:212::-;2911:13;:11;:13::i;:::-;:26;;;2907:55;;;2946:16;;-1:-1:-1;;;2946:16:72;;8058:2:75;2946:16:72;;;8040:21:75;8097:1;8077:18;;;8070:29;-1:-1:-1;;;8115:18:75;;;8108:38;8163:18;;2946:16:72;;;;;;;;2907:55;2968:61;;-1:-1:-1;;;2968:61:72;;-1:-1:-1;;;;;2999:6:72;8427:32:75;;2968:61:72;;;8409:51:75;3015:4:72;8476:18:75;;;8469:60;8545:18;;;8538:34;;;2981:5:72;2968:30;;;;8382:18:75;;2968:61:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:16;3049:6;3040:16;;;;2633:25:75;;2621:2;2606:18;;2487:177;3040:16:72;;;;;;;;2849:212;:::o;2425:183::-;2502:7;2521:30;2541:9;2521:19;:30::i;:::-;:42;;;2517:56;;;-1:-1:-1;2572:1:72;;2425:183;-1:-1:-1;2425:183:72:o;2517:56::-;-1:-1:-1;;;2586:17:72;2425:183;-1:-1:-1;2425:183:72:o;2078:148::-;2138:13;:11;:13::i;:::-;:28;;;2134:59;;;2175:18;;-1:-1:-1;;;2175:18:72;;8785:2:75;2175:18:72;;;8767:21:75;8824:2;8804:18;;;8797:30;-1:-1:-1;;;8843:18:75;;;8836:40;8893:18;;2175::72;8583:334:75;2134:59:72;2204:17;;9087:14:75;;9080:22;9062:41;;2204:17:72;;9050:2:75;9035:18;2204:17:72;8922:187:75;3642:128:72;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3735:30:72;3755:9;3735:19;:30::i;:::-;3728:37;3642:128;-1:-1:-1;;3642:128:72: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:72;;;;;;;;;;;1503:75;1609:11;1584:54;1630:8;1609:11;1584:54;:::i;:::-;-1:-1:-1;1648:16:72;;1644:44;;;1673:15;;-1:-1:-1;;;1673:15:72;;9316:2:75;1673:15:72;;;9298:21:75;9355:1;9335:18;;;9328:29;-1:-1:-1;;;9373:18:75;;;9366:37;9420:18;;1673:15:72;9114:330:75;1644:44:72;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:72;;9651:2:75;3160:15:72;;;9633:21:75;9690:1;9670:18;;;9663:29;-1:-1:-1;;;9708:18:75;;;9701:37;9755:18;;3160:15:72;9449:330:75;3122:53:72;3181:30;;-1:-1:-1;;;3181:30:72;;-1:-1:-1;;;;;3197:5:72;9976:32:75;;3181:30:72;;;9958:51:75;10025:18;;;10018:34;;;3181:6:72;:15;;;;9931:18:75;;3181:30:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3222:15:72;;2633:25:75;;;3222:15:72;;2621:2:75;2606:18;3222:15:72;2487:177:75;2230:191:72;2308:7;2327:30;2347:9;2327:19;:30::i;:::-;:43;;;2323:57;;;-1:-1:-1;2379:1:72;;2230:191;-1:-1:-1;2230:191:72:o;2323:57::-;2393:23;;-1:-1:-1;;;2393:23:72;;-1:-1:-1;;;;;2410:5:72;3889:32:75;;2393:23:72;;;3871:51:75;2393:6:72;:16;;;;3844:18:75;;2393:23:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2720:125::-;2817:23;;-1:-1:-1;;;2817:23:72;;-1:-1:-1;;;;;2834:5:72;3889:32:75;;2817:23:72;;;3871:51:75;-1:-1:-1;;2817:6:72;:16;;;;;;3844:18:75;;2817:23:72;3725:203:75;1725:156:72;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:11:72;1805:71;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1798:78;;1725:156;:::o;1885:189::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2001:51:72;;-1:-1:-1;;;2001:51:72;;2040:11;2001:51;;;2633:25:75;-1:-1:-1;;;;;2001:38:72;;;;;2606:18:75;;2001:51:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2001:51:72;;;;;;;;;;;;:::i;:::-;1990:79;;;;;;;;;;;;:::i;14:127:75:-;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:75;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:75:o;426:186::-;474:4;507:18;499:6;496:30;493:56;;;529:18;;:::i;:::-;-1:-1:-1;595:2:75;574:15;-1:-1:-1;;570:29:75;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:75: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:75;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:75;;2011:180;-1:-1:-1;2011:180:75: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:75;;2392:42;;2382:70;;2448:1;2445;2438:12;2382:70;2471:5;2196:286;-1:-1:-1;;;2196:286:75: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:75: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:75;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:75: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:75;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:75;;;7701:26;7652:89;-1:-1:-1;;6513:1:75;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:75;;;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:75;7489:14;;;7505:3;7485:24;7481:37;7477:42;7462:58;7447:74;;7334:201;-1:-1:-1;;;;7581:1:75;7565:14;;;7561:22;7548:36;;-1:-1:-1;6556:1295:75: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:75;;10313:184;-1:-1:-1;10313:184:75: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:75;;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:75: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.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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":"6080604052348015600e575f5ffd5b506101698061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea264697066735822122082e3a8f78bbc3b95447e611a9b3857054b559d0c60ec6e75220b7f329345c41b64736f6c634300081c0033","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 DUP3 0xE3 0xA8 0xF7 DUP12 0xBC EXTCODESIZE SWAP6 PREVRANDAO PUSH31 0x611A9B3857054B559D0C60EC6E75220B7F329345C41B64736F6C634300081C STOP CALLER ","sourceMap":"482:138:72:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@transferTo_22406":{"entryPoint":66,"id":22406,"parameterSlots":3,"returnSlots":0},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":269,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IERC20_$8656t_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:75","nodeType":"YulBlock","src":"0:1208:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"67:86:75","nodeType":"YulBlock","src":"67:86:75","statements":[{"body":{"nativeSrc":"131:16:75","nodeType":"YulBlock","src":"131:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"140:1:75","nodeType":"YulLiteral","src":"140:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"143:1:75","nodeType":"YulLiteral","src":"143:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"133:6:75","nodeType":"YulIdentifier","src":"133:6:75"},"nativeSrc":"133:12:75","nodeType":"YulFunctionCall","src":"133:12:75"},"nativeSrc":"133:12:75","nodeType":"YulExpressionStatement","src":"133:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"90:5:75","nodeType":"YulIdentifier","src":"90:5:75"},{"arguments":[{"name":"value","nativeSrc":"101:5:75","nodeType":"YulIdentifier","src":"101:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"116:3:75","nodeType":"YulLiteral","src":"116:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"121:1:75","nodeType":"YulLiteral","src":"121:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"112:3:75","nodeType":"YulIdentifier","src":"112:3:75"},"nativeSrc":"112:11:75","nodeType":"YulFunctionCall","src":"112:11:75"},{"kind":"number","nativeSrc":"125:1:75","nodeType":"YulLiteral","src":"125:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"108:3:75","nodeType":"YulIdentifier","src":"108:3:75"},"nativeSrc":"108:19:75","nodeType":"YulFunctionCall","src":"108:19:75"}],"functionName":{"name":"and","nativeSrc":"97:3:75","nodeType":"YulIdentifier","src":"97:3:75"},"nativeSrc":"97:31:75","nodeType":"YulFunctionCall","src":"97:31:75"}],"functionName":{"name":"eq","nativeSrc":"87:2:75","nodeType":"YulIdentifier","src":"87:2:75"},"nativeSrc":"87:42:75","nodeType":"YulFunctionCall","src":"87:42:75"}],"functionName":{"name":"iszero","nativeSrc":"80:6:75","nodeType":"YulIdentifier","src":"80:6:75"},"nativeSrc":"80:50:75","nodeType":"YulFunctionCall","src":"80:50:75"},"nativeSrc":"77:70:75","nodeType":"YulIf","src":"77:70:75"}]},"name":"validator_revert_contract_IERC20","nativeSrc":"14:139:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"56:5:75","nodeType":"YulTypedName","src":"56:5:75","type":""}],"src":"14:139:75"},{"body":{"nativeSrc":"277:368:75","nodeType":"YulBlock","src":"277:368:75","statements":[{"body":{"nativeSrc":"323:16:75","nodeType":"YulBlock","src":"323:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"332:1:75","nodeType":"YulLiteral","src":"332:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"335:1:75","nodeType":"YulLiteral","src":"335:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"325:6:75","nodeType":"YulIdentifier","src":"325:6:75"},"nativeSrc":"325:12:75","nodeType":"YulFunctionCall","src":"325:12:75"},"nativeSrc":"325:12:75","nodeType":"YulExpressionStatement","src":"325:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"298:7:75","nodeType":"YulIdentifier","src":"298:7:75"},{"name":"headStart","nativeSrc":"307:9:75","nodeType":"YulIdentifier","src":"307:9:75"}],"functionName":{"name":"sub","nativeSrc":"294:3:75","nodeType":"YulIdentifier","src":"294:3:75"},"nativeSrc":"294:23:75","nodeType":"YulFunctionCall","src":"294:23:75"},{"kind":"number","nativeSrc":"319:2:75","nodeType":"YulLiteral","src":"319:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"290:3:75","nodeType":"YulIdentifier","src":"290:3:75"},"nativeSrc":"290:32:75","nodeType":"YulFunctionCall","src":"290:32:75"},"nativeSrc":"287:52:75","nodeType":"YulIf","src":"287:52:75"},{"nativeSrc":"348:36:75","nodeType":"YulVariableDeclaration","src":"348:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"374:9:75","nodeType":"YulIdentifier","src":"374:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"361:12:75","nodeType":"YulIdentifier","src":"361:12:75"},"nativeSrc":"361:23:75","nodeType":"YulFunctionCall","src":"361:23:75"},"variables":[{"name":"value","nativeSrc":"352:5:75","nodeType":"YulTypedName","src":"352:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"426:5:75","nodeType":"YulIdentifier","src":"426:5:75"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"393:32:75","nodeType":"YulIdentifier","src":"393:32:75"},"nativeSrc":"393:39:75","nodeType":"YulFunctionCall","src":"393:39:75"},"nativeSrc":"393:39:75","nodeType":"YulExpressionStatement","src":"393:39:75"},{"nativeSrc":"441:15:75","nodeType":"YulAssignment","src":"441:15:75","value":{"name":"value","nativeSrc":"451:5:75","nodeType":"YulIdentifier","src":"451:5:75"},"variableNames":[{"name":"value0","nativeSrc":"441:6:75","nodeType":"YulIdentifier","src":"441:6:75"}]},{"nativeSrc":"465:47:75","nodeType":"YulVariableDeclaration","src":"465:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"497:9:75","nodeType":"YulIdentifier","src":"497:9:75"},{"kind":"number","nativeSrc":"508:2:75","nodeType":"YulLiteral","src":"508:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"493:3:75","nodeType":"YulIdentifier","src":"493:3:75"},"nativeSrc":"493:18:75","nodeType":"YulFunctionCall","src":"493:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"480:12:75","nodeType":"YulIdentifier","src":"480:12:75"},"nativeSrc":"480:32:75","nodeType":"YulFunctionCall","src":"480:32:75"},"variables":[{"name":"value_1","nativeSrc":"469:7:75","nodeType":"YulTypedName","src":"469:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"554:7:75","nodeType":"YulIdentifier","src":"554:7:75"}],"functionName":{"name":"validator_revert_contract_IERC20","nativeSrc":"521:32:75","nodeType":"YulIdentifier","src":"521:32:75"},"nativeSrc":"521:41:75","nodeType":"YulFunctionCall","src":"521:41:75"},"nativeSrc":"521:41:75","nodeType":"YulExpressionStatement","src":"521:41:75"},{"nativeSrc":"571:17:75","nodeType":"YulAssignment","src":"571:17:75","value":{"name":"value_1","nativeSrc":"581:7:75","nodeType":"YulIdentifier","src":"581:7:75"},"variableNames":[{"name":"value1","nativeSrc":"571:6:75","nodeType":"YulIdentifier","src":"571:6:75"}]},{"nativeSrc":"597:42:75","nodeType":"YulAssignment","src":"597:42:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"624:9:75","nodeType":"YulIdentifier","src":"624:9:75"},{"kind":"number","nativeSrc":"635:2:75","nodeType":"YulLiteral","src":"635:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"620:3:75","nodeType":"YulIdentifier","src":"620:3:75"},"nativeSrc":"620:18:75","nodeType":"YulFunctionCall","src":"620:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"607:12:75","nodeType":"YulIdentifier","src":"607:12:75"},"nativeSrc":"607:32:75","nodeType":"YulFunctionCall","src":"607:32:75"},"variableNames":[{"name":"value2","nativeSrc":"597:6:75","nodeType":"YulIdentifier","src":"597:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$8656t_addresst_uint256","nativeSrc":"158:487:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"227:9:75","nodeType":"YulTypedName","src":"227:9:75","type":""},{"name":"dataEnd","nativeSrc":"238:7:75","nodeType":"YulTypedName","src":"238:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"250:6:75","nodeType":"YulTypedName","src":"250:6:75","type":""},{"name":"value1","nativeSrc":"258:6:75","nodeType":"YulTypedName","src":"258:6:75","type":""},{"name":"value2","nativeSrc":"266:6:75","nodeType":"YulTypedName","src":"266:6:75","type":""}],"src":"158:487:75"},{"body":{"nativeSrc":"779:145:75","nodeType":"YulBlock","src":"779:145:75","statements":[{"nativeSrc":"789:26:75","nodeType":"YulAssignment","src":"789:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"801:9:75","nodeType":"YulIdentifier","src":"801:9:75"},{"kind":"number","nativeSrc":"812:2:75","nodeType":"YulLiteral","src":"812:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"797:3:75","nodeType":"YulIdentifier","src":"797:3:75"},"nativeSrc":"797:18:75","nodeType":"YulFunctionCall","src":"797:18:75"},"variableNames":[{"name":"tail","nativeSrc":"789:4:75","nodeType":"YulIdentifier","src":"789:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"831:9:75","nodeType":"YulIdentifier","src":"831:9:75"},{"arguments":[{"name":"value0","nativeSrc":"846:6:75","nodeType":"YulIdentifier","src":"846:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"862:3:75","nodeType":"YulLiteral","src":"862:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"867:1:75","nodeType":"YulLiteral","src":"867:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"858:3:75","nodeType":"YulIdentifier","src":"858:3:75"},"nativeSrc":"858:11:75","nodeType":"YulFunctionCall","src":"858:11:75"},{"kind":"number","nativeSrc":"871:1:75","nodeType":"YulLiteral","src":"871:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"854:3:75","nodeType":"YulIdentifier","src":"854:3:75"},"nativeSrc":"854:19:75","nodeType":"YulFunctionCall","src":"854:19:75"}],"functionName":{"name":"and","nativeSrc":"842:3:75","nodeType":"YulIdentifier","src":"842:3:75"},"nativeSrc":"842:32:75","nodeType":"YulFunctionCall","src":"842:32:75"}],"functionName":{"name":"mstore","nativeSrc":"824:6:75","nodeType":"YulIdentifier","src":"824:6:75"},"nativeSrc":"824:51:75","nodeType":"YulFunctionCall","src":"824:51:75"},"nativeSrc":"824:51:75","nodeType":"YulExpressionStatement","src":"824:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"895:9:75","nodeType":"YulIdentifier","src":"895:9:75"},{"kind":"number","nativeSrc":"906:2:75","nodeType":"YulLiteral","src":"906:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"891:3:75","nodeType":"YulIdentifier","src":"891:3:75"},"nativeSrc":"891:18:75","nodeType":"YulFunctionCall","src":"891:18:75"},{"name":"value1","nativeSrc":"911:6:75","nodeType":"YulIdentifier","src":"911:6:75"}],"functionName":{"name":"mstore","nativeSrc":"884:6:75","nodeType":"YulIdentifier","src":"884:6:75"},"nativeSrc":"884:34:75","nodeType":"YulFunctionCall","src":"884:34:75"},"nativeSrc":"884:34:75","nodeType":"YulExpressionStatement","src":"884:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"650:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"740:9:75","nodeType":"YulTypedName","src":"740:9:75","type":""},{"name":"value1","nativeSrc":"751:6:75","nodeType":"YulTypedName","src":"751:6:75","type":""},{"name":"value0","nativeSrc":"759:6:75","nodeType":"YulTypedName","src":"759:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"770:4:75","nodeType":"YulTypedName","src":"770:4:75","type":""}],"src":"650:274:75"},{"body":{"nativeSrc":"1007:199:75","nodeType":"YulBlock","src":"1007:199:75","statements":[{"body":{"nativeSrc":"1053:16:75","nodeType":"YulBlock","src":"1053:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1062:1:75","nodeType":"YulLiteral","src":"1062:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1065:1:75","nodeType":"YulLiteral","src":"1065:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1055:6:75","nodeType":"YulIdentifier","src":"1055:6:75"},"nativeSrc":"1055:12:75","nodeType":"YulFunctionCall","src":"1055:12:75"},"nativeSrc":"1055:12:75","nodeType":"YulExpressionStatement","src":"1055:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1028:7:75","nodeType":"YulIdentifier","src":"1028:7:75"},{"name":"headStart","nativeSrc":"1037:9:75","nodeType":"YulIdentifier","src":"1037:9:75"}],"functionName":{"name":"sub","nativeSrc":"1024:3:75","nodeType":"YulIdentifier","src":"1024:3:75"},"nativeSrc":"1024:23:75","nodeType":"YulFunctionCall","src":"1024:23:75"},{"kind":"number","nativeSrc":"1049:2:75","nodeType":"YulLiteral","src":"1049:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1020:3:75","nodeType":"YulIdentifier","src":"1020:3:75"},"nativeSrc":"1020:32:75","nodeType":"YulFunctionCall","src":"1020:32:75"},"nativeSrc":"1017:52:75","nodeType":"YulIf","src":"1017:52:75"},{"nativeSrc":"1078:29:75","nodeType":"YulVariableDeclaration","src":"1078:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"1097:9:75","nodeType":"YulIdentifier","src":"1097:9:75"}],"functionName":{"name":"mload","nativeSrc":"1091:5:75","nodeType":"YulIdentifier","src":"1091:5:75"},"nativeSrc":"1091:16:75","nodeType":"YulFunctionCall","src":"1091:16:75"},"variables":[{"name":"value","nativeSrc":"1082:5:75","nodeType":"YulTypedName","src":"1082:5:75","type":""}]},{"body":{"nativeSrc":"1160:16:75","nodeType":"YulBlock","src":"1160:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1169:1:75","nodeType":"YulLiteral","src":"1169:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1172:1:75","nodeType":"YulLiteral","src":"1172:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1162:6:75","nodeType":"YulIdentifier","src":"1162:6:75"},"nativeSrc":"1162:12:75","nodeType":"YulFunctionCall","src":"1162:12:75"},"nativeSrc":"1162:12:75","nodeType":"YulExpressionStatement","src":"1162:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1129:5:75","nodeType":"YulIdentifier","src":"1129:5:75"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1150:5:75","nodeType":"YulIdentifier","src":"1150:5:75"}],"functionName":{"name":"iszero","nativeSrc":"1143:6:75","nodeType":"YulIdentifier","src":"1143:6:75"},"nativeSrc":"1143:13:75","nodeType":"YulFunctionCall","src":"1143:13:75"}],"functionName":{"name":"iszero","nativeSrc":"1136:6:75","nodeType":"YulIdentifier","src":"1136:6:75"},"nativeSrc":"1136:21:75","nodeType":"YulFunctionCall","src":"1136:21:75"}],"functionName":{"name":"eq","nativeSrc":"1126:2:75","nodeType":"YulIdentifier","src":"1126:2:75"},"nativeSrc":"1126:32:75","nodeType":"YulFunctionCall","src":"1126:32:75"}],"functionName":{"name":"iszero","nativeSrc":"1119:6:75","nodeType":"YulIdentifier","src":"1119:6:75"},"nativeSrc":"1119:40:75","nodeType":"YulFunctionCall","src":"1119:40:75"},"nativeSrc":"1116:60:75","nodeType":"YulIf","src":"1116:60:75"},{"nativeSrc":"1185:15:75","nodeType":"YulAssignment","src":"1185:15:75","value":{"name":"value","nativeSrc":"1195:5:75","nodeType":"YulIdentifier","src":"1195:5:75"},"variableNames":[{"name":"value0","nativeSrc":"1185:6:75","nodeType":"YulIdentifier","src":"1185:6:75"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"929:277:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"973:9:75","nodeType":"YulTypedName","src":"973:9:75","type":""},{"name":"dataEnd","nativeSrc":"984:7:75","nodeType":"YulTypedName","src":"984:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"996:6:75","nodeType":"YulTypedName","src":"996:6:75","type":""}],"src":"929:277:75"}]},"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_$8656t_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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063a5f2a1521461002d575b5f5ffd5b61004061003b3660046100cf565b610042565b005b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af115801561008e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100b2919061010d565b50505050565b6001600160a01b03811681146100cc575f5ffd5b50565b5f5f5f606084860312156100e1575f5ffd5b83356100ec816100b8565b925060208401356100fc816100b8565b929592945050506040919091013590565b5f6020828403121561011d575f5ffd5b8151801515811461012c575f5ffd5b939250505056fea264697066735822122082e3a8f78bbc3b95447e611a9b3857054b559d0c60ec6e75220b7f329345c41b64736f6c634300081c0033","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 DUP3 0xE3 0xA8 0xF7 DUP12 0xBC EXTCODESIZE SWAP6 PREVRANDAO PUSH31 0x611A9B3857054B559D0C60EC6E75220B7F329345C41B64736F6C634300081C STOP CALLER ","sourceMap":"482:138:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;508:110;;;;;;:::i;:::-;;:::i;:::-;;;586:27;;-1:-1:-1;;;586:27:72;;-1:-1:-1;;;;;842:32:75;;;586:27:72;;;824:51:75;891:18;;;884:34;;;586:15:72;;;;;797:18:75;;586:27:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;508:110;;;:::o;14:139:75:-;-1:-1:-1;;;;;97:31:75;;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:75;493:18;;480:32;521:41;480:32;521:41;:::i;:::-;158:487;;581:7;;-1:-1:-1;;;635:2:75;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:75:o"},"methodIdentifiers":{"transferTo(address,address,uint256)":"a5f2a152"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","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":[{"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":[{"internalType":"address","name":"asset","type":"address"}],"name":"InvalidAsset","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":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GUARDIAN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_STRATEGY_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"admin_","type":"address"},{"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":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"bytes32","name":"adminRole","type":"bytes32"}],"name":"setRoleAdmin","outputs":[],"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":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":{"@_22861":{"entryPoint":null,"id":22861,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_2832":{"entryPoint":33,"id":2832,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"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:75","nodeType":"YulBlock","src":"0:216:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"113:101:75","nodeType":"YulBlock","src":"113:101:75","statements":[{"nativeSrc":"123:26:75","nodeType":"YulAssignment","src":"123:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:75","nodeType":"YulIdentifier","src":"135:9:75"},{"kind":"number","nativeSrc":"146:2:75","nodeType":"YulLiteral","src":"146:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:75","nodeType":"YulIdentifier","src":"131:3:75"},"nativeSrc":"131:18:75","nodeType":"YulFunctionCall","src":"131:18:75"},"variableNames":[{"name":"tail","nativeSrc":"123:4:75","nodeType":"YulIdentifier","src":"123:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:75","nodeType":"YulIdentifier","src":"165:9:75"},{"arguments":[{"name":"value0","nativeSrc":"180:6:75","nodeType":"YulIdentifier","src":"180:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:75","nodeType":"YulLiteral","src":"196:2:75","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:75","nodeType":"YulLiteral","src":"200:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:75","nodeType":"YulIdentifier","src":"192:3:75"},"nativeSrc":"192:10:75","nodeType":"YulFunctionCall","src":"192:10:75"},{"kind":"number","nativeSrc":"204:1:75","nodeType":"YulLiteral","src":"204:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:75","nodeType":"YulIdentifier","src":"188:3:75"},"nativeSrc":"188:18:75","nodeType":"YulFunctionCall","src":"188:18:75"}],"functionName":{"name":"and","nativeSrc":"176:3:75","nodeType":"YulIdentifier","src":"176:3:75"},"nativeSrc":"176:31:75","nodeType":"YulFunctionCall","src":"176:31:75"}],"functionName":{"name":"mstore","nativeSrc":"158:6:75","nodeType":"YulIdentifier","src":"158:6:75"},"nativeSrc":"158:50:75","nodeType":"YulFunctionCall","src":"158:50:75"},"nativeSrc":"158:50:75","nodeType":"YulExpressionStatement","src":"158:50:75"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:75","nodeType":"YulTypedName","src":"82:9:75","type":""},{"name":"value0","nativeSrc":"93:6:75","nodeType":"YulTypedName","src":"93:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:75","nodeType":"YulTypedName","src":"104:4:75","type":""}],"src":"14:200:75"}]},"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":75,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612f196100f95f395f81816114140152818161143d01526115a00152612f195ff3fe60806040526004361061025f575f3560e01c806370a082311161013f578063baaf36b5116100b3578063d547741f11610078578063d547741f1461072a578063d905777e14610749578063d9221bb514610768578063dd62ed3e14610787578063e1d39450146107a6578063ef8b30f7146106cd575f5ffd5b8063baaf36b51461067b578063c63d75b6146106ae578063c6e6f592146106cd578063ce96cb77146106ec578063d4f391101461070b575f5ffd5b8063a8c62e7611610104578063a8c62e76146105b3578063a9059cbb146105cf578063ad3cb1cc146105ee578063b3d7f6b91461061e578063b460af941461063d578063ba0876521461065c575f5ffd5b806370a082311461052f57806391d148541461054e57806394bf804d1461056d57806395d89b411461058c578063a217fddf146105a0575f5ffd5b806324ea54f4116101d6578063402d267d1161019b578063402d267d146104ab57806347e57533146104ca5780634cdad506146102fb5780634f1ef286146104e957806352d1902d146104fc5780636e553f6514610510575f5ffd5b806324ea54f4146103e85780632f2ff15d1461041b578063313ce5671461043a57806336568abe1461046057806338d52e0f1461047f575f5ffd5b8063095ea7b311610227578063095ea7b31461031a5780630a28a4771461033957806318160ddd146103585780631e4e00911461038b57806323b872dd146103aa578063248a9ca3146103c9575f5ffd5b806301e1d1141461026357806301ffc9a71461028a57806302a602e9146102b957806306fdde03146102da57806307a2d13a146102fb575b5f5ffd5b34801561026e575f5ffd5b506102776107d9565b6040519081526020015b60405180910390f35b348015610295575f5ffd5b506102a96102a4366004612724565b6107f3565b6040519015158152602001610281565b3480156102c4575f5ffd5b506102d86102d3366004612804565b610829565b005b3480156102e5575f5ffd5b506102ee610941565b60405161028191906128f6565b348015610306575f5ffd5b50610277610315366004612908565b610a01565b348015610325575f5ffd5b506102a961033436600461291f565b610a0c565b348015610344575f5ffd5b50610277610353366004612908565b610a23565b348015610363575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610277565b348015610396575f5ffd5b506102d86103a5366004612949565b610a2f565b3480156103b5575f5ffd5b506102a96103c4366004612969565b610a48565b3480156103d4575f5ffd5b506102776103e3366004612908565b610a6d565b3480156103f3575f5ffd5b506102777f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b348015610426575f5ffd5b506102d86104353660046129a7565b610a8d565b348015610445575f5ffd5b5061044e610aaf565b60405160ff9091168152602001610281565b34801561046b575f5ffd5b506102d861047a3660046129a7565b610ade565b34801561048a575f5ffd5b50610493610b11565b6040516001600160a01b039091168152602001610281565b3480156104b6575f5ffd5b506102776104c53660046129d5565b610b2c565b3480156104d5575f5ffd5b506102ee6104e4366004612908565b610b53565b6102d86104f73660046129f0565b610c70565b348015610507575f5ffd5b50610277610c8f565b34801561051b575f5ffd5b5061027761052a3660046129a7565b610caa565b34801561053a575f5ffd5b506102776105493660046129d5565b610d07565b348015610559575f5ffd5b506102a96105683660046129a7565b610d2d565b348015610578575f5ffd5b506102776105873660046129a7565b610d63565b348015610597575f5ffd5b506102ee610daf565b3480156105ab575f5ffd5b506102775f81565b3480156105be575f5ffd5b505f546001600160a01b0316610493565b3480156105da575f5ffd5b506102a96105e936600461291f565b610ded565b3480156105f9575f5ffd5b506102ee604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610629575f5ffd5b50610277610638366004612908565b610dfa565b348015610648575f5ffd5b50610277610657366004612a3d565b610e06565b348015610667575f5ffd5b50610277610676366004612a3d565b610e5c565b348015610686575f5ffd5b506102777f2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb54881565b3480156106b9575f5ffd5b506102776106c83660046129d5565b610ea9565b3480156106d8575f5ffd5b506102776106e7366004612908565b610ed8565b3480156106f7575f5ffd5b506102776107063660046129d5565b610ee3565b348015610716575f5ffd5b506102ee610725366004612a7c565b610f05565b348015610735575f5ffd5b506102d86107443660046129a7565b610f1e565b348015610754575f5ffd5b506102776107633660046129d5565b610f3a565b348015610773575f5ffd5b506102d8610782366004612a9d565b610f69565b348015610792575f5ffd5b506102776107a1366004612af6565b610fd7565b3480156107b1575f5ffd5b506102777fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b5f80546107ee906001600160a01b0316611020565b905090565b5f6001600160e01b03198216637965db0b60e01b148061082357506301ffc9a760e01b6001600160e01b03198316145b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561086e5750825b90505f8267ffffffffffffffff16600114801561088a5750303b155b905081158015610898575080155b156108b65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108e057845460ff60401b1916600160401b1785555b6108ee8b8b8b8b8b8b611089565b831561093457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020612e645f395f51905f529161097f90612b22565b80601f01602080910402602001604051908101604052809291908181526020018280546109ab90612b22565b80156109f65780601f106109cd576101008083540402835291602001916109f6565b820191905f5260205f20905b8154815290600101906020018083116109d957829003601f168201915b505050505091505090565b5f610823825f6110af565b5f33610a19818585611106565b5060019392505050565b5f610823826001611113565b5f610a3981611161565b610a43838361116e565b505050565b5f33610a558582856111ce565b610a60858585611218565b60019150505b9392505050565b5f9081525f516020612ea45f395f51905f52602052604090206001015490565b610a9682610a6d565b610a9f81611161565b610aa98383611275565b50505050565b5f805f516020612ec45f395f51905f5290505f8154610ad89190600160a01b900460ff16612b6e565b91505090565b6001600160a01b0381163314610b075760405163334bd91960e11b815260040160405180910390fd5b610a438282611316565b5f516020612ec45f395f51905f52546001600160a01b031690565b5f805461082390610b45906001600160a01b031661138f565b610b4e846113bd565b6113fa565b5f5460408051635b9a4c3560e01b815290516060926001600160a01b031691635b9a4c359160048083019260209291908290030181865afa158015610b9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbe9190612b87565b8214610bdd5760405163213109dd60e11b815260040160405180910390fd5b815482908190610bec90612b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1890612b22565b8015610c635780601f10610c3a57610100808354040283529160200191610c63565b820191905f5260205f20905b815481529060010190602001808311610c4657829003601f168201915b5050505050915050919050565b610c78611409565b610c81826114af565b610c8b82826114d9565b5050565b5f610c98611595565b505f516020612e845f395f51905f5290565b5f5f610cb583610b2c565b905080841115610ce757828482604051633c8097d960e11b8152600401610cde93929190612b9e565b60405180910390fd5b5f610cf185610ed8565b9050610cff338587846115de565b949350505050565b6001600160a01b03165f9081525f516020612e645f395f51905f52602052604090205490565b5f9182525f516020612ea45f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f610d6e83610ea9565b905080841115610d975782848260405163284ff66760e01b8152600401610cde93929190612b9e565b5f610da185610dfa565b9050610cff338583886115de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020612e645f395f51905f529161097f90612b22565b5f33610a19818585611218565b5f6108238260016110af565b5f5f610e1183610ee3565b905080851115610e3a57828582604051633fa733bb60e21b8152600401610cde93929190612b9e565b5f610e4486610a23565b9050610e53338686898561160b565b95945050505050565b5f5f610e6783610f3a565b905080851115610e9057828582604051632e52afbb60e21b8152600401610cde93929190612b9e565b5f610e9a86610a01565b9050610e53338686848a61160b565b5f80548190610ec0906001600160a01b031661138f565b9050610a66610ecf825f611113565b610b4e856113bd565b5f610823825f611113565b5f805461082390610efc906001600160a01b0316611633565b610b4e84611661565b5f54606090610a66906001600160a01b03168484611674565b610f2782610a6d565b610f3081611161565b610aa98383611316565b5f80548190610f51906001600160a01b0316611633565b9050610a66610f60825f611113565b610b4e856116c6565b7f2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb548610f9381611161565b5f54610fb2906001600160a01b03168585610fac610b11565b866116d0565b50505f80546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015611065573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108239190612b87565b61109161181e565b61109d86868686611867565b6110a782826118c4565b505050505050565b5f610a666110bb6107d9565b6110c6906001612bbf565b6110d15f600a612cb5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546110fd9190612bbf565b85919085611916565b610a438383836001611958565b5f610a6661112282600a612cb5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461114e9190612bbf565b6111566107d9565b6110fd906001612bbf565b61116b8133611a3b565b50565b5f516020612ea45f395f51905f525f61118684610a6d565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f6111d98484610fd7565b90505f198114610aa9578181101561120a57828183604051637dc7a0d960e11b8152600401610cde93929190612b9e565b610aa984848484035f611958565b6001600160a01b03831661124157604051634b637e8f60e11b81525f6004820152602401610cde565b6001600160a01b03821661126a5760405163ec442f0560e01b81525f6004820152602401610cde565b610a43838383611a74565b5f5f516020612ea45f395f51905f5261128e8484610d2d565b61130d575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556112c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610823565b5f915050610823565b5f5f516020612ea45f395f51905f5261132f8484610d2d565b1561130d575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610823565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d9060240161104a565b5f6113e87fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a683610d2d565b6113f357505f919050565b5f19610823565b5f828218828410028218610a66565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061148f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114835f516020612e845f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156114ad5760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610c8b81611161565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611533575060408051601f3d908101601f1916820190925261153091810190612b87565b60015b61155b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610cde565b5f516020612e845f395f51905f52811461158b57604051632a87526960e21b815260048101829052602401610cde565b610a438383611b9a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114ad5760405163703e46dd60e11b815260040160405180910390fd5b6115ea84848484611bef565b5f8054611604916001600160a01b03909116908490611c6c565b5050505050565b5f8054611625916001600160a01b03909116908490611da8565b506116048585858585611ec9565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb779060240161104a565b5f61082361166e83610d07565b5f6110af565b6060610cff838360405160240161168c929190612cc3565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690611f7d565b5f61082382610d07565b6116da8483611fe6565b60405163f3e0ffbf60e01b815230600482015261174c9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015611722573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117469190612b87565b83611da8565b506117578582612078565b611761848461219d565b6040516370a0823160e01b81523060048201526117d39085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156117a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cd9190612b87565b83611c6c565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166114ad57604051631afcd79f60e31b815260040160405180910390fd5b61186f61181e565b6118776121eb565b61187f6121eb565b6001600160a01b0381166118a8576040516337bce3c560e11b81525f6004820152602401610cde565b6118b1816121f3565b6118bb8484612204565b610aa982612216565b6118cc61181e565b5f80546001600160a01b0319166001600160a01b0384161790556119016118f1610b11565b6001600160a01b03841690611fe6565b5f54610c8b906001600160a01b03168261219d565b5f61194361192383612228565b801561193e57505f848061193957611939612cde565b868809115b151590565b61194e868686612254565b610e539190612bbf565b5f516020612e645f395f51905f526001600160a01b03851661198f5760405163e602df0560e01b81525f6004820152602401610cde565b6001600160a01b0384166119b857604051634a1406b160e11b81525f6004820152602401610cde565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561160457836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611a2c91815260200190565b60405180910390a35050505050565b611a458282610d2d565b610c8b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610cde565b5f516020612e645f395f51905f526001600160a01b038416611aae5781816002015f828254611aa39190612bbf565b90915550611b0b9050565b6001600160a01b0384165f9081526020829052604090205482811015611aed5784818460405163391434e360e21b8152600401610cde93929190612b9e565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611b29576002810180548390039055611b47565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8c91815260200190565b60405180910390a350505050565b611ba38261230a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611be757610a438282611f7d565b610c8b61236d565b5f516020612ec45f395f51905f528054611c14906001600160a01b031686308661238c565b611c1e84836123f3565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611a2c929190918252602082015260400190565b5f8115611d4e575f5f856001600160a01b031685604051602401611c9291815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251611cc79190612cf2565b5f60405180830381855af49150503d805f8114611cff576040519150601f19603f3d011682016040523d82523d5f602084013e611d04565b606091505b509150915081611d46577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051611d3d91906128f6565b60405180910390a15b509050610a66565b611d9e83604051602401611d6491815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690611f7d565b5060019050610a66565b5f8115611e79575f5f856001600160a01b031685604051602401611dce91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251611e039190612cf2565b5f60405180830381855af49150503d805f8114611e3b576040519150601f19603f3d011682016040523d82523d5f602084013e611e40565b606091505b509150915081611d46577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051611d3d91906128f6565b611d9e83604051602401611e8f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690611f7d565b5f516020612ec45f395f51905f526001600160a01b0386811690851614611ef557611ef58487846111ce565b611eff8483612427565b8054611f15906001600160a01b0316868561245b565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051611f6d929190918252602082015260400190565b60405180910390a4505050505050565b60605f5f846001600160a01b031684604051611f999190612cf2565b5f60405180830381855af49150503d805f8114611fd1576040519150601f19603f3d011682016040523d82523d5f602084013e611fd6565b606091505b5091509150610e5385838361248c565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa15801561202d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120519190612d08565b6001600160a01b031614610c8b5760405163e76673ef60e01b815260040160405180910390fd5b801561215357604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516120cf9190612cf2565b5f60405180830381855af49150503d805f8114612107576040519150601f19603f3d011682016040523d82523d5f602084013e61210c565b606091505b509150915081610aa9577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf88160405161214591906128f6565b60405180910390a150505050565b6040515f6024820152610a439060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690611f7d565b610a43816040516024016121b191906128f6565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690611f7d565b6114ad61181e565b6121fb61181e565b61116b816124e8565b61220c61181e565b610c8b8282612558565b61221e61181e565b610c8b5f82611275565b5f600282600381111561223d5761223d612d23565b6122479190612d37565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036122885783828161227e5761227e612cde565b0492505050610a66565b80841161229f5761229f60038515026011186125a8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361233f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610cde565b5f516020612e845f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156114ad5760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610aa99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125b9565b6001600160a01b03821661241c5760405163ec442f0560e01b81525f6004820152602401610cde565b610c8b5f8383611a74565b6001600160a01b03821661245057604051634b637e8f60e11b81525f6004820152602401610cde565b610c8b825f83611a74565b6040516001600160a01b03838116602483015260448201839052610a4391859182169063a9059cbb906064016123c1565b6060826124a15761249c82612625565b610a66565b81511580156124b857506001600160a01b0384163b155b156124e157604051639996b31560e01b81526001600160a01b0385166004820152602401610cde565b5080610a66565b6124f061181e565b5f516020612ec45f395f51905f525f806125098461264e565b915091508161251957601261251b565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b61256061181e565b5f516020612e645f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036125998482612da8565b5060048101610aa98382612da8565b634e487b715f52806020526024601cfd5b5f5f60205f8451602086015f885af1806125d8576040513d5f823e3d81fd5b50505f513d915081156125ef5780600114156125fc565b6001600160a01b0384163b155b15610aa957604051635274afe760e01b81526001600160a01b0385166004820152602401610cde565b8051156126355780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161269491612cf2565b5f60405180830381855afa9150503d805f81146126cc576040519150601f19603f3d011682016040523d82523d5f602084013e6126d1565b606091505b50915091508180156126e557506020815110155b15612718575f818060200190518101906126ff9190612b87565b905060ff8111612716576001969095509350505050565b505b505f9485945092505050565b5f60208284031215612734575f5ffd5b81356001600160e01b031981168114610a66575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261276e575f5ffd5b8135602083015f5f67ffffffffffffffff84111561278e5761278e61274b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156127bd576127bd61274b565b6040528381529050808284018710156127d4575f5ffd5b838360208301375f602085830101528094505050505092915050565b6001600160a01b038116811461116b575f5ffd5b5f5f5f5f5f5f60c08789031215612819575f5ffd5b863567ffffffffffffffff81111561282f575f5ffd5b61283b89828a0161275f565b965050602087013567ffffffffffffffff811115612857575f5ffd5b61286389828a0161275f565b9550506040870135612874816127f0565b93506060870135612884816127f0565b92506080870135612894816127f0565b915060a087013567ffffffffffffffff8111156128af575f5ffd5b6128bb89828a0161275f565b9150509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a6660208301846128c8565b5f60208284031215612918575f5ffd5b5035919050565b5f5f60408385031215612930575f5ffd5b823561293b816127f0565b946020939093013593505050565b5f5f6040838503121561295a575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561297b575f5ffd5b8335612986816127f0565b92506020840135612996816127f0565b929592945050506040919091013590565b5f5f604083850312156129b8575f5ffd5b8235915060208301356129ca816127f0565b809150509250929050565b5f602082840312156129e5575f5ffd5b8135610a66816127f0565b5f5f60408385031215612a01575f5ffd5b8235612a0c816127f0565b9150602083013567ffffffffffffffff811115612a27575f5ffd5b612a338582860161275f565b9150509250929050565b5f5f5f60608486031215612a4f575f5ffd5b833592506020840135612a61816127f0565b91506040840135612a71816127f0565b809150509250925092565b5f5f60408385031215612a8d575f5ffd5b823560ff81168114612a0c575f5ffd5b5f5f5f60608486031215612aaf575f5ffd5b8335612aba816127f0565b9250602084013567ffffffffffffffff811115612ad5575f5ffd5b612ae18682870161275f565b92505060408401358015158114612a71575f5ffd5b5f5f60408385031215612b07575f5ffd5b8235612b12816127f0565b915060208301356129ca816127f0565b600181811c90821680612b3657607f821691505b602082108103612b5457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561082357610823612b5a565b5f60208284031215612b97575f5ffd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561082357610823612b5a565b6001815b6001841115612c0d57808504811115612bf157612bf1612b5a565b6001841615612bff57908102905b60019390931c928002612bd6565b935093915050565b5f82612c2357506001610823565b81612c2f57505f610823565b8160018114612c455760028114612c4f57612c6b565b6001915050610823565b60ff841115612c6057612c60612b5a565b50506001821b610823565b5060208310610133831016604e8410600b8410161715612c8e575081810a610823565b612c9a5f198484612bd2565b805f1904821115612cad57612cad612b5a565b029392505050565b5f610a6660ff841683612c15565b60ff83168152604060208201525f610cff60408301846128c8565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215612d18575f5ffd5b8151610a66816127f0565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680612d5557634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610a4357805f5260205f20601f840160051c81016020851015612d895750805b601f840160051c820191505b81811015611604575f8155600101612d95565b815167ffffffffffffffff811115612dc257612dc261274b565b612dd681612dd08454612b22565b84612d64565b6020601f821160018114612e08575f8315612df15750848201515b5f19600385901b1c1916600184901b178455611604565b5f84815260208120601f198516915b82811015612e375787850151825560209485019460019092019101612e17565b5084821015612e5457868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a264697066735822122075956b98bfa24ac35cccace88420a64ce3eec8b3ebd9cf9d682d9327afaa762d64736f6c634300081c0033","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 0x2F19 PUSH2 0xF9 PUSH0 CODECOPY PUSH0 DUP2 DUP2 PUSH2 0x1414 ADD MSTORE DUP2 DUP2 PUSH2 0x143D ADD MSTORE PUSH2 0x15A0 ADD MSTORE PUSH2 0x2F19 PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBAAF36B5 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x72A JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x749 JUMPI DUP1 PUSH4 0xD9221BB5 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x787 JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBAAF36B5 EQ PUSH2 0x67B JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x6AE JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xD4F39110 EQ PUSH2 0x70B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA8C62E76 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x5B3 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 DUP1 PUSH4 0xBA087652 EQ PUSH2 0x65C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x24EA54F4 GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x4FC JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x510 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x47F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x227 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x2A602E9 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2FB JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7D9 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 0x295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x7F3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x2D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0x829 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x291F JUMP JUMPDEST PUSH2 0xA0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x363 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x277 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2949 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2969 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xA8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x445 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x44E PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x493 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x4C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xB2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x2D8 PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F0 JUMP JUMPDEST PUSH2 0xC70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x507 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0xC8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x52A CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xD07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x559 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x568 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xD2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x587 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x597 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0xDAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x493 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x291F JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE 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 0x277 PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3D JUMP JUMPDEST PUSH2 0xE06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x676 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3D JUMP JUMPDEST PUSH2 0xE5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x2E704739166ABB26E88A93C0D60BAE654BEA582D8D8FA53CD8580CA0878FB548 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xEA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xED8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x706 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xEE3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x716 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x725 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A7C JUMP JUMPDEST PUSH2 0xF05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x735 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x744 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xF1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xF3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x792 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF6 JUMP JUMPDEST PUSH2 0xFD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x7EE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1020 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x823 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x86E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x88A JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x898 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x8B6 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 0x8E0 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x8EE DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1089 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x934 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 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x97F SWAP1 PUSH2 0x2B22 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 0x9AB SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x9CD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9F6 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 0x9D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH0 PUSH2 0x10AF JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA19 DUP2 DUP6 DUP6 PUSH2 0x1106 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH1 0x1 PUSH2 0x1113 JUMP JUMPDEST PUSH0 PUSH2 0xA39 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 PUSH2 0x116E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA55 DUP6 DUP3 DUP6 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0xA60 DUP6 DUP6 DUP6 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA96 DUP3 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA9F DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xAA9 DUP4 DUP4 PUSH2 0x1275 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xAD8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2B6E JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA43 DUP3 DUP3 PUSH2 0x1316 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x823 SWAP1 PUSH2 0xB45 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x138F JUMP JUMPDEST PUSH2 0xB4E DUP5 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x13FA 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 0xB9A 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 0xBBE SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP3 EQ PUSH2 0xBDD 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 0xBEC SWAP1 PUSH2 0x2B22 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 0xC18 SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC3A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC63 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 0xC46 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 0xC78 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0xC81 DUP3 PUSH2 0x14AF JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0x14D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC98 PUSH2 0x1595 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xCB5 DUP4 PUSH2 0xB2C JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xCE7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xCF1 DUP6 PUSH2 0xED8 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF CALLER DUP6 DUP8 DUP5 PUSH2 0x15DE 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 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xD6E DUP4 PUSH2 0xEA9 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xD97 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xDA1 DUP6 PUSH2 0xDFA JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF CALLER DUP6 DUP4 DUP9 PUSH2 0x15DE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x97F SWAP1 PUSH2 0x2B22 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA19 DUP2 DUP6 DUP6 PUSH2 0x1218 JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH1 0x1 PUSH2 0x10AF JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE11 DUP4 PUSH2 0xEE3 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xE3A JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xE44 DUP7 PUSH2 0xA23 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x160B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE67 DUP4 PUSH2 0xF3A JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xE90 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xE9A DUP7 PUSH2 0xA01 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x160B JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xEC0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0xA66 PUSH2 0xECF DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0xB4E DUP6 PUSH2 0x13BD JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x823 SWAP1 PUSH2 0xEFC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1633 JUMP JUMPDEST PUSH2 0xB4E DUP5 PUSH2 0x1661 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xA66 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1674 JUMP JUMPDEST PUSH2 0xF27 DUP3 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xF30 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xAA9 DUP4 DUP4 PUSH2 0x1316 JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xF51 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1633 JUMP JUMPDEST SWAP1 POP PUSH2 0xA66 PUSH2 0xF60 DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0xB4E DUP6 PUSH2 0x16C6 JUMP JUMPDEST PUSH32 0x2E704739166ABB26E88A93C0D60BAE654BEA582D8D8FA53CD8580CA0878FB548 PUSH2 0xF93 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xFB2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0xFAC PUSH2 0xB11 JUMP JUMPDEST DUP7 PUSH2 0x16D0 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 SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP 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 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 0x1065 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 0x823 SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST PUSH2 0x1091 PUSH2 0x181E JUMP JUMPDEST PUSH2 0x109D DUP7 DUP7 DUP7 DUP7 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0x10A7 DUP3 DUP3 PUSH2 0x18C4 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH2 0x10BB PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x10C6 SWAP1 PUSH1 0x1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x10D1 PUSH0 PUSH1 0xA PUSH2 0x2CB5 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x10FD SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1958 JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH2 0x1122 DUP3 PUSH1 0xA PUSH2 0x2CB5 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1156 PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x10FD SWAP1 PUSH1 0x1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x116B DUP2 CALLER PUSH2 0x1A3B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x1186 DUP5 PUSH2 0xA6D JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP5 DUP5 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xAA9 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x120A JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1241 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x126A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x128E DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x130D JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x12C3 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x132F DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST ISZERO PUSH2 0x130D JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 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 0x104A JUMP JUMPDEST PUSH0 PUSH2 0x13E8 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x13F3 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x823 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA66 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x148F JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1483 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 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 0x14AD 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xC8B DUP2 PUSH2 0x1161 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 0x1533 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1530 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2B87 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x155B 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 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x158B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 PUSH2 0x1B9A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15EA DUP5 DUP5 DUP5 DUP5 PUSH2 0x1BEF JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x1604 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1C6C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x1625 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1DA8 JUMP JUMPDEST POP PUSH2 0x1604 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1EC9 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 0x104A JUMP JUMPDEST PUSH0 PUSH2 0x823 PUSH2 0x166E DUP4 PUSH2 0xD07 JUMP JUMPDEST PUSH0 PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCFF DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x168C SWAP3 SWAP2 SWAP1 PUSH2 0x2CC3 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 0x1F7D JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH2 0xD07 JUMP JUMPDEST PUSH2 0x16DA DUP5 DUP4 PUSH2 0x1FE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x174C 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 0x1722 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 0x1746 SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP4 PUSH2 0x1DA8 JUMP JUMPDEST POP PUSH2 0x1757 DUP6 DUP3 PUSH2 0x2078 JUMP JUMPDEST PUSH2 0x1761 DUP5 DUP5 PUSH2 0x219D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x17D3 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 0x17A9 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 0x17CD SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP4 PUSH2 0x1C6C 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x186F PUSH2 0x181E JUMP JUMPDEST PUSH2 0x1877 PUSH2 0x21EB JUMP JUMPDEST PUSH2 0x187F PUSH2 0x21EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x18A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x21F3 JUMP JUMPDEST PUSH2 0x18BB DUP5 DUP5 PUSH2 0x2204 JUMP JUMPDEST PUSH2 0xAA9 DUP3 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0x18CC PUSH2 0x181E 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 0x1901 PUSH2 0x18F1 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1FE6 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xC8B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x219D JUMP JUMPDEST PUSH0 PUSH2 0x1943 PUSH2 0x1923 DUP4 PUSH2 0x2228 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x193E JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1939 JUMPI PUSH2 0x1939 PUSH2 0x2CDE JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x194E DUP7 DUP7 DUP7 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0xE53 SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x198F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE 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 0x1604 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 0x1A2C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A45 DUP3 DUP3 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0xC8B JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1AAE JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1AA3 SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1B0B 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 0x1AED JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E 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 0x1B29 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1B47 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 0x1B8C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1BA3 DUP3 PUSH2 0x230A 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 0x1BE7 JUMPI PUSH2 0xA43 DUP3 DUP3 PUSH2 0x1F7D JUMP JUMPDEST PUSH2 0xC8B PUSH2 0x236D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1C14 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x238C JUMP JUMPDEST PUSH2 0x1C1E DUP5 DUP4 PUSH2 0x23F3 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1A2C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1D4E JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1C92 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 0x1CC7 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1CFF 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 0x1D04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D46 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1D3D SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x1D9E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D64 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 0x1F7D JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA66 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1E79 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DCE 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 0x1E03 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1E3B 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 0x1E40 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D46 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1D3D SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH2 0x1D9E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E8F 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 0x1F7D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x1EF5 JUMPI PUSH2 0x1EF5 DUP5 DUP8 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0x1EFF DUP5 DUP4 PUSH2 0x2427 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1F15 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x245B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1F6D 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 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1F99 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1FD1 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 0x1FD6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE53 DUP6 DUP4 DUP4 PUSH2 0x248C 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 0x202D 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 0x2051 SWAP2 SWAP1 PUSH2 0x2D08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xC8B 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 0x2153 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 0x20CF SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2107 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 0x210C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAA9 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2145 SWAP2 SWAP1 PUSH2 0x28F6 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 0xA43 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 0x1F7D JUMP JUMPDEST PUSH2 0xA43 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x21B1 SWAP2 SWAP1 PUSH2 0x28F6 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 0x1F7D JUMP JUMPDEST PUSH2 0x14AD PUSH2 0x181E JUMP JUMPDEST PUSH2 0x21FB PUSH2 0x181E JUMP JUMPDEST PUSH2 0x116B DUP2 PUSH2 0x24E8 JUMP JUMPDEST PUSH2 0x220C PUSH2 0x181E JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0x2558 JUMP JUMPDEST PUSH2 0x221E PUSH2 0x181E JUMP JUMPDEST PUSH2 0xC8B PUSH0 DUP3 PUSH2 0x1275 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x223D JUMPI PUSH2 0x223D PUSH2 0x2D23 JUMP JUMPDEST PUSH2 0x2247 SWAP2 SWAP1 PUSH2 0x2D37 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x2288 JUMPI DUP4 DUP3 DUP2 PUSH2 0x227E JUMPI PUSH2 0x227E PUSH2 0x2CDE JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA66 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x229F JUMPI PUSH2 0x229F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x25A8 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x233F 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 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 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 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xAA9 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x25B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x241C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xC8B PUSH0 DUP4 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2450 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xC8B DUP3 PUSH0 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xA43 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x23C1 JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x24A1 JUMPI PUSH2 0x249C DUP3 PUSH2 0x2625 JUMP JUMPDEST PUSH2 0xA66 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x24B8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x24E1 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 0xCDE JUMP JUMPDEST POP DUP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x24F0 PUSH2 0x181E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x2509 DUP5 PUSH2 0x264E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2519 JUMPI PUSH1 0x12 PUSH2 0x251B 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 0x2560 PUSH2 0x181E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x2599 DUP5 DUP3 PUSH2 0x2DA8 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xAA9 DUP4 DUP3 PUSH2 0x2DA8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x25D8 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x25EF JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x25FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO 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 0xCDE JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2635 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x2694 SWAP2 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x26CC 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 0x26D1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x2718 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x26FF SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x2716 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2734 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA66 JUMPI PUSH0 PUSH0 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 0x276E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x278E JUMPI PUSH2 0x278E PUSH2 0x274B 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 0x27BD JUMPI PUSH2 0x27BD PUSH2 0x274B JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x27D4 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x116B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2819 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x282F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x283B DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2863 DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x28BB DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 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 0xA66 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28C8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2918 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2930 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x293B DUP2 PUSH2 0x27F0 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 0x295A 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 0x297B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2986 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2996 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x29CA DUP2 PUSH2 0x27F0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA66 DUP2 PUSH2 0x27F0 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A0C DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A27 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A33 DUP6 DUP3 DUP7 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A4F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A61 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2A71 DUP2 PUSH2 0x27F0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A8D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2A0C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AAF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2ABA DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2AD5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2AE1 DUP7 DUP3 DUP8 ADD PUSH2 0x275F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2A71 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B07 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B12 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x29CA DUP2 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2B36 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2B54 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 0x823 JUMPI PUSH2 0x823 PUSH2 0x2B5A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B97 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 0x823 JUMPI PUSH2 0x823 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x2C0D JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x2BF1 JUMPI PUSH2 0x2BF1 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x2BFF JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x2BD6 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2C23 JUMPI POP PUSH1 0x1 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH2 0x2C2F JUMPI POP PUSH0 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2C45 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2C4F JUMPI PUSH2 0x2C6B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2C60 JUMPI PUSH2 0x2C60 PUSH2 0x2B5A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x823 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2C8E JUMPI POP DUP2 DUP2 EXP PUSH2 0x823 JUMP JUMPDEST PUSH2 0x2C9A PUSH0 NOT DUP5 DUP5 PUSH2 0x2BD2 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x2CAD JUMPI PUSH2 0x2CAD PUSH2 0x2B5A JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x2C15 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xCFF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28C8 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 0x2D18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA66 DUP2 PUSH2 0x27F0 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 0x2D55 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 0xA43 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2D89 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D95 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC2 JUMPI PUSH2 0x2DC2 PUSH2 0x274B JUMP JUMPDEST PUSH2 0x2DD6 DUP2 PUSH2 0x2DD0 DUP5 SLOAD PUSH2 0x2B22 JUMP JUMPDEST DUP5 PUSH2 0x2D64 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E08 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x2DF1 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 0x1604 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E37 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E17 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2E54 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x956B98BFA24AC35CCCACE88420A64CE3EEC8B3EBD9CF SWAP14 PUSH9 0x2D9327AFAA762D6473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"1665:6559:73:-:0;;;1171:4:8;1128:48;;2349:47:73;;;;;;;;;-1:-1:-1;2369:22:73;:20;:22::i;:::-;1665:6559;;7711:422:7;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:7;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:7;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:7;-1:-1:-1;;;;;8035:33:7;;;;;8087:29;;158:50:75;;;8087:29:7;;146:2:75;131:18;8087:29:7;;;;;;;7981:146;7760:373;7711:422::o;14:200:75:-;1665:6559:73;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DEFAULT_ADMIN_ROLE_2276":{"entryPoint":null,"id":2276,"parameterSlots":0,"returnSlots":0},"@GUARDIAN_ROLE_18371":{"entryPoint":null,"id":18371,"parameterSlots":0,"returnSlots":0},"@LP_ROLE_18366":{"entryPoint":null,"id":18366,"parameterSlots":0,"returnSlots":0},"@SET_STRATEGY_ROLE_22828":{"entryPoint":null,"id":22828,"parameterSlots":0,"returnSlots":0},"@UPGRADE_INTERFACE_VERSION_2888":{"entryPoint":null,"id":2888,"parameterSlots":0,"returnSlots":0},"@__AccessControl_init_2311":{"entryPoint":null,"id":2311,"parameterSlots":0,"returnSlots":0},"@__ERC20_init_3114":{"entryPoint":8708,"id":3114,"parameterSlots":2,"returnSlots":0},"@__ERC20_init_unchained_3142":{"entryPoint":9560,"id":3142,"parameterSlots":2,"returnSlots":0},"@__ERC4626_init_3757":{"entryPoint":8691,"id":3757,"parameterSlots":1,"returnSlots":0},"@__ERC4626_init_unchained_3795":{"entryPoint":9448,"id":3795,"parameterSlots":1,"returnSlots":0},"@__PermissionedERC4626_init_18426":{"entryPoint":6247,"id":18426,"parameterSlots":4,"returnSlots":0},"@__PermissionedERC4626_init_unchained_18439":{"entryPoint":8726,"id":18439,"parameterSlots":1,"returnSlots":0},"@__SingleStrategyERC4626_init_22923":{"entryPoint":4233,"id":22923,"parameterSlots":6,"returnSlots":0},"@__SingleStrategyERC4626_init_unchained_22951":{"entryPoint":6340,"id":22951,"parameterSlots":2,"returnSlots":0},"@__UUPSUpgradeable_init_2918":{"entryPoint":8683,"id":2918,"parameterSlots":0,"returnSlots":0},"@_approve_3546":{"entryPoint":4358,"id":3546,"parameterSlots":3,"returnSlots":0},"@_approve_3614":{"entryPoint":6488,"id":3614,"parameterSlots":4,"returnSlots":0},"@_authorizeUpgrade_18449":{"entryPoint":5295,"id":18449,"parameterSlots":1,"returnSlots":0},"@_burn_3528":{"entryPoint":9255,"id":3528,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_9051":{"entryPoint":9657,"id":9051,"parameterSlots":2,"returnSlots":0},"@_checkInitializing_2786":{"entryPoint":6174,"id":2786,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_8016":{"entryPoint":9069,"id":8016,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_2994":{"entryPoint":5525,"id":2994,"parameterSlots":0,"returnSlots":0},"@_checkProxy_2978":{"entryPoint":5129,"id":2978,"parameterSlots":0,"returnSlots":0},"@_checkRole_2377":{"entryPoint":4449,"id":2377,"parameterSlots":1,"returnSlots":0},"@_checkRole_2398":{"entryPoint":6715,"id":2398,"parameterSlots":2,"returnSlots":0},"@_convertToAssets_4320":{"entryPoint":4271,"id":4320,"parameterSlots":2,"returnSlots":1},"@_convertToShares_4292":{"entryPoint":4371,"id":4292,"parameterSlots":2,"returnSlots":1},"@_decimalsOffset_4426":{"entryPoint":null,"id":4426,"parameterSlots":0,"returnSlots":1},"@_deposit_23126":{"entryPoint":5598,"id":23126,"parameterSlots":4,"returnSlots":0},"@_deposit_4364":{"entryPoint":7151,"id":4364,"parameterSlots":4,"returnSlots":0},"@_getAccessControlStorage_2294":{"entryPoint":null,"id":2294,"parameterSlots":0,"returnSlots":1},"@_getERC20Storage_3098":{"entryPoint":null,"id":3098,"parameterSlots":0,"returnSlots":1},"@_getERC4626Storage_3707":{"entryPoint":null,"id":3707,"parameterSlots":0,"returnSlots":1},"@_getInitializableStorage_2863":{"entryPoint":null,"id":2863,"parameterSlots":0,"returnSlots":1},"@_grantRole_2563":{"entryPoint":4725,"id":2563,"parameterSlots":2,"returnSlots":1},"@_isInitializing_2854":{"entryPoint":null,"id":2854,"parameterSlots":0,"returnSlots":1},"@_mint_3495":{"entryPoint":9203,"id":3495,"parameterSlots":2,"returnSlots":0},"@_msgSender_4455":{"entryPoint":null,"id":4455,"parameterSlots":0,"returnSlots":1},"@_revert_9351":{"entryPoint":9765,"id":9351,"parameterSlots":1,"returnSlots":0},"@_revokeRole_2609":{"entryPoint":4886,"id":2609,"parameterSlots":2,"returnSlots":1},"@_setImplementation_7796":{"entryPoint":8970,"id":7796,"parameterSlots":1,"returnSlots":0},"@_setRoleAdmin_2516":{"entryPoint":4462,"id":2516,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_3662":{"entryPoint":4558,"id":3662,"parameterSlots":3,"returnSlots":0},"@_transfer_3370":{"entryPoint":4632,"id":3370,"parameterSlots":3,"returnSlots":0},"@_tryGetAssetDecimals_3862":{"entryPoint":9806,"id":3862,"parameterSlots":1,"returnSlots":2},"@_update_3462":{"entryPoint":6772,"id":3462,"parameterSlots":3,"returnSlots":0},"@_upgradeToAndCallUUPS_3045":{"entryPoint":5337,"id":3045,"parameterSlots":2,"returnSlots":0},"@_withdraw_23097":{"entryPoint":5643,"id":23097,"parameterSlots":5,"returnSlots":0},"@_withdraw_4418":{"entryPoint":7881,"id":4418,"parameterSlots":5,"returnSlots":0},"@allowance_3267":{"entryPoint":4055,"id":3267,"parameterSlots":2,"returnSlots":1},"@approve_3291":{"entryPoint":2572,"id":3291,"parameterSlots":2,"returnSlots":1},"@asset_3903":{"entryPoint":2833,"id":3903,"parameterSlots":0,"returnSlots":1},"@balanceOf_3219":{"entryPoint":3335,"id":3219,"parameterSlots":1,"returnSlots":1},"@checkAsset_15637":{"entryPoint":8166,"id":15637,"parameterSlots":2,"returnSlots":0},"@convertToAssets_3957":{"entryPoint":2561,"id":3957,"parameterSlots":1,"returnSlots":1},"@convertToShares_3941":{"entryPoint":3800,"id":3941,"parameterSlots":1,"returnSlots":1},"@dcConnect_15416":{"entryPoint":8605,"id":15416,"parameterSlots":2,"returnSlots":0},"@dcDeposit_15585":{"entryPoint":7276,"id":15585,"parameterSlots":3,"returnSlots":1},"@dcDisconnect_15467":{"entryPoint":8312,"id":15467,"parameterSlots":2,"returnSlots":0},"@dcForward_15614":{"entryPoint":5748,"id":15614,"parameterSlots":3,"returnSlots":1},"@dcWithdraw_15526":{"entryPoint":7592,"id":15526,"parameterSlots":3,"returnSlots":1},"@decimals_3884":{"entryPoint":2735,"id":3884,"parameterSlots":0,"returnSlots":1},"@deposit_4126":{"entryPoint":3242,"id":4126,"parameterSlots":2,"returnSlots":1},"@forwardToStrategy_23175":{"entryPoint":3845,"id":23175,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_9269":{"entryPoint":8061,"id":9269,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_9578":{"entryPoint":null,"id":9578,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_23158":{"entryPoint":2899,"id":23158,"parameterSlots":1,"returnSlots":1},"@getBytesSlot_9655":{"entryPoint":null,"id":9655,"parameterSlots":1,"returnSlots":1},"@getImplementation_7769":{"entryPoint":null,"id":7769,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_2419":{"entryPoint":2669,"id":2419,"parameterSlots":1,"returnSlots":1},"@grantRole_2438":{"entryPoint":2701,"id":2438,"parameterSlots":2,"returnSlots":0},"@hasRole_2364":{"entryPoint":3373,"id":2364,"parameterSlots":2,"returnSlots":1},"@initialize_22891":{"entryPoint":2089,"id":22891,"parameterSlots":6,"returnSlots":0},"@maxDeposit_15756":{"entryPoint":5007,"id":15756,"parameterSlots":1,"returnSlots":1},"@maxDeposit_18488":{"entryPoint":5053,"id":18488,"parameterSlots":1,"returnSlots":1},"@maxDeposit_23023":{"entryPoint":2860,"id":23023,"parameterSlots":1,"returnSlots":1},"@maxDeposit_3972":{"entryPoint":null,"id":3972,"parameterSlots":1,"returnSlots":1},"@maxMint_18511":{"entryPoint":null,"id":18511,"parameterSlots":1,"returnSlots":1},"@maxMint_23053":{"entryPoint":3753,"id":23053,"parameterSlots":1,"returnSlots":1},"@maxMint_3987":{"entryPoint":null,"id":3987,"parameterSlots":1,"returnSlots":1},"@maxRedeem_23002":{"entryPoint":3898,"id":23002,"parameterSlots":1,"returnSlots":1},"@maxRedeem_4018":{"entryPoint":5830,"id":4018,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_15774":{"entryPoint":5683,"id":15774,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_22972":{"entryPoint":3811,"id":22972,"parameterSlots":1,"returnSlots":1},"@maxWithdraw_4005":{"entryPoint":5729,"id":4005,"parameterSlots":1,"returnSlots":1},"@min_9938":{"entryPoint":5114,"id":9938,"parameterSlots":2,"returnSlots":1},"@mint_4170":{"entryPoint":3427,"id":4170,"parameterSlots":2,"returnSlots":1},"@mulDiv_10139":{"entryPoint":8788,"id":10139,"parameterSlots":3,"returnSlots":1},"@mulDiv_10176":{"entryPoint":6422,"id":10176,"parameterSlots":4,"returnSlots":1},"@name_3158":{"entryPoint":2369,"id":3158,"parameterSlots":0,"returnSlots":1},"@panic_9542":{"entryPoint":9640,"id":9542,"parameterSlots":1,"returnSlots":0},"@previewDeposit_4034":{"entryPoint":null,"id":4034,"parameterSlots":1,"returnSlots":1},"@previewMint_4050":{"entryPoint":3578,"id":4050,"parameterSlots":1,"returnSlots":1},"@previewRedeem_4082":{"entryPoint":null,"id":4082,"parameterSlots":1,"returnSlots":1},"@previewWithdraw_4066":{"entryPoint":2595,"id":4066,"parameterSlots":1,"returnSlots":1},"@proxiableUUID_2936":{"entryPoint":3215,"id":2936,"parameterSlots":0,"returnSlots":1},"@redeem_4264":{"entryPoint":3676,"id":4264,"parameterSlots":3,"returnSlots":1},"@renounceRole_2480":{"entryPoint":2782,"id":2480,"parameterSlots":2,"returnSlots":0},"@revokeRole_2457":{"entryPoint":3870,"id":2457,"parameterSlots":2,"returnSlots":0},"@safeTransferFrom_8756":{"entryPoint":9100,"id":8756,"parameterSlots":4,"returnSlots":0},"@safeTransfer_8729":{"entryPoint":9307,"id":8729,"parameterSlots":3,"returnSlots":0},"@setRoleAdmin_18465":{"entryPoint":2607,"id":18465,"parameterSlots":2,"returnSlots":0},"@setStrategy_23207":{"entryPoint":3945,"id":23207,"parameterSlots":3,"returnSlots":0},"@strategyChange_15702":{"entryPoint":5840,"id":15702,"parameterSlots":5,"returnSlots":0},"@strategy_23217":{"entryPoint":null,"id":23217,"parameterSlots":0,"returnSlots":1},"@supportsInterface_2339":{"entryPoint":2035,"id":2339,"parameterSlots":1,"returnSlots":1},"@supportsInterface_4512":{"entryPoint":null,"id":4512,"parameterSlots":1,"returnSlots":1},"@symbol_3174":{"entryPoint":3503,"id":3174,"parameterSlots":0,"returnSlots":1},"@ternary_9900":{"entryPoint":null,"id":9900,"parameterSlots":3,"returnSlots":1},"@toUint_13073":{"entryPoint":null,"id":13073,"parameterSlots":1,"returnSlots":1},"@totalAssets_15738":{"entryPoint":4128,"id":15738,"parameterSlots":1,"returnSlots":1},"@totalAssets_23065":{"entryPoint":2009,"id":23065,"parameterSlots":0,"returnSlots":1},"@totalSupply_3199":{"entryPoint":null,"id":3199,"parameterSlots":0,"returnSlots":1},"@transferFrom_3323":{"entryPoint":2632,"id":3323,"parameterSlots":3,"returnSlots":1},"@transfer_3243":{"entryPoint":3565,"id":3243,"parameterSlots":2,"returnSlots":1},"@unsignedRoundsUp_11308":{"entryPoint":8744,"id":11308,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_2956":{"entryPoint":3184,"id":2956,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_7832":{"entryPoint":7066,"id":7832,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_9309":{"entryPoint":9356,"id":9309,"parameterSlots":3,"returnSlots":1},"@withdraw_4217":{"entryPoint":3590,"id":4217,"parameterSlots":3,"returnSlots":1},"abi_decode_string":{"entryPoint":10079,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":10709,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":11528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":10998,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":10601,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":10736,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":10527,"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":11143,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":10663,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes32t_bytes32":{"entryPoint":10569,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":10020,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool":{"entryPoint":10909,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr":{"entryPoint":10244,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_uint256":{"entryPoint":10504,"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":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_addresst_address":{"entryPoint":10813,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint8t_bytes_memory_ptr":{"entryPoint":10876,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_string":{"entryPoint":10440,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":11506,"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_address_t_bytes32__to_t_address_t_bytes32__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_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11166,"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_$22374__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__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":10486,"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":11459,"id":null,"parameterSlots":3,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":11199,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint8":{"entryPoint":11118,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":11218,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":11445,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":11285,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":11620,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":11688,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":11042,"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":11575,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":11098,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":11486,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":11555,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10059,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":10224,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:18035:75","nodeType":"YulBlock","src":"0:18035:75","statements":[{"nativeSrc":"6:3:75","nodeType":"YulBlock","src":"6:3:75","statements":[]},{"body":{"nativeSrc":"115:76:75","nodeType":"YulBlock","src":"115:76:75","statements":[{"nativeSrc":"125:26:75","nodeType":"YulAssignment","src":"125:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:75","nodeType":"YulIdentifier","src":"137:9:75"},{"kind":"number","nativeSrc":"148:2:75","nodeType":"YulLiteral","src":"148:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:75","nodeType":"YulIdentifier","src":"133:3:75"},"nativeSrc":"133:18:75","nodeType":"YulFunctionCall","src":"133:18:75"},"variableNames":[{"name":"tail","nativeSrc":"125:4:75","nodeType":"YulIdentifier","src":"125:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:75","nodeType":"YulIdentifier","src":"167:9:75"},{"name":"value0","nativeSrc":"178:6:75","nodeType":"YulIdentifier","src":"178:6:75"}],"functionName":{"name":"mstore","nativeSrc":"160:6:75","nodeType":"YulIdentifier","src":"160:6:75"},"nativeSrc":"160:25:75","nodeType":"YulFunctionCall","src":"160:25:75"},"nativeSrc":"160:25:75","nodeType":"YulExpressionStatement","src":"160:25:75"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:75","nodeType":"YulTypedName","src":"84:9:75","type":""},{"name":"value0","nativeSrc":"95:6:75","nodeType":"YulTypedName","src":"95:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:75","nodeType":"YulTypedName","src":"106:4:75","type":""}],"src":"14:177:75"},{"body":{"nativeSrc":"265:217:75","nodeType":"YulBlock","src":"265:217:75","statements":[{"body":{"nativeSrc":"311:16:75","nodeType":"YulBlock","src":"311:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"320:1:75","nodeType":"YulLiteral","src":"320:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"323:1:75","nodeType":"YulLiteral","src":"323:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"313:6:75","nodeType":"YulIdentifier","src":"313:6:75"},"nativeSrc":"313:12:75","nodeType":"YulFunctionCall","src":"313:12:75"},"nativeSrc":"313:12:75","nodeType":"YulExpressionStatement","src":"313:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"286:7:75","nodeType":"YulIdentifier","src":"286:7:75"},{"name":"headStart","nativeSrc":"295:9:75","nodeType":"YulIdentifier","src":"295:9:75"}],"functionName":{"name":"sub","nativeSrc":"282:3:75","nodeType":"YulIdentifier","src":"282:3:75"},"nativeSrc":"282:23:75","nodeType":"YulFunctionCall","src":"282:23:75"},{"kind":"number","nativeSrc":"307:2:75","nodeType":"YulLiteral","src":"307:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"278:3:75","nodeType":"YulIdentifier","src":"278:3:75"},"nativeSrc":"278:32:75","nodeType":"YulFunctionCall","src":"278:32:75"},"nativeSrc":"275:52:75","nodeType":"YulIf","src":"275:52:75"},{"nativeSrc":"336:36:75","nodeType":"YulVariableDeclaration","src":"336:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"362:9:75","nodeType":"YulIdentifier","src":"362:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"349:12:75","nodeType":"YulIdentifier","src":"349:12:75"},"nativeSrc":"349:23:75","nodeType":"YulFunctionCall","src":"349:23:75"},"variables":[{"name":"value","nativeSrc":"340:5:75","nodeType":"YulTypedName","src":"340:5:75","type":""}]},{"body":{"nativeSrc":"436:16:75","nodeType":"YulBlock","src":"436:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"445:1:75","nodeType":"YulLiteral","src":"445:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"448:1:75","nodeType":"YulLiteral","src":"448:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"438:6:75","nodeType":"YulIdentifier","src":"438:6:75"},"nativeSrc":"438:12:75","nodeType":"YulFunctionCall","src":"438:12:75"},"nativeSrc":"438:12:75","nodeType":"YulExpressionStatement","src":"438:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"394:5:75","nodeType":"YulIdentifier","src":"394:5:75"},{"arguments":[{"name":"value","nativeSrc":"405:5:75","nodeType":"YulIdentifier","src":"405:5:75"},{"arguments":[{"kind":"number","nativeSrc":"416:3:75","nodeType":"YulLiteral","src":"416:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"421:10:75","nodeType":"YulLiteral","src":"421:10:75","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"412:3:75","nodeType":"YulIdentifier","src":"412:3:75"},"nativeSrc":"412:20:75","nodeType":"YulFunctionCall","src":"412:20:75"}],"functionName":{"name":"and","nativeSrc":"401:3:75","nodeType":"YulIdentifier","src":"401:3:75"},"nativeSrc":"401:32:75","nodeType":"YulFunctionCall","src":"401:32:75"}],"functionName":{"name":"eq","nativeSrc":"391:2:75","nodeType":"YulIdentifier","src":"391:2:75"},"nativeSrc":"391:43:75","nodeType":"YulFunctionCall","src":"391:43:75"}],"functionName":{"name":"iszero","nativeSrc":"384:6:75","nodeType":"YulIdentifier","src":"384:6:75"},"nativeSrc":"384:51:75","nodeType":"YulFunctionCall","src":"384:51:75"},"nativeSrc":"381:71:75","nodeType":"YulIf","src":"381:71:75"},{"nativeSrc":"461:15:75","nodeType":"YulAssignment","src":"461:15:75","value":{"name":"value","nativeSrc":"471:5:75","nodeType":"YulIdentifier","src":"471:5:75"},"variableNames":[{"name":"value0","nativeSrc":"461:6:75","nodeType":"YulIdentifier","src":"461:6:75"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"196:286:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"231:9:75","nodeType":"YulTypedName","src":"231:9:75","type":""},{"name":"dataEnd","nativeSrc":"242:7:75","nodeType":"YulTypedName","src":"242:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"254:6:75","nodeType":"YulTypedName","src":"254:6:75","type":""}],"src":"196:286:75"},{"body":{"nativeSrc":"582:92:75","nodeType":"YulBlock","src":"582:92:75","statements":[{"nativeSrc":"592:26:75","nodeType":"YulAssignment","src":"592:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"604:9:75","nodeType":"YulIdentifier","src":"604:9:75"},{"kind":"number","nativeSrc":"615:2:75","nodeType":"YulLiteral","src":"615:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"600:3:75","nodeType":"YulIdentifier","src":"600:3:75"},"nativeSrc":"600:18:75","nodeType":"YulFunctionCall","src":"600:18:75"},"variableNames":[{"name":"tail","nativeSrc":"592:4:75","nodeType":"YulIdentifier","src":"592:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"634:9:75","nodeType":"YulIdentifier","src":"634:9:75"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"659:6:75","nodeType":"YulIdentifier","src":"659:6:75"}],"functionName":{"name":"iszero","nativeSrc":"652:6:75","nodeType":"YulIdentifier","src":"652:6:75"},"nativeSrc":"652:14:75","nodeType":"YulFunctionCall","src":"652:14:75"}],"functionName":{"name":"iszero","nativeSrc":"645:6:75","nodeType":"YulIdentifier","src":"645:6:75"},"nativeSrc":"645:22:75","nodeType":"YulFunctionCall","src":"645:22:75"}],"functionName":{"name":"mstore","nativeSrc":"627:6:75","nodeType":"YulIdentifier","src":"627:6:75"},"nativeSrc":"627:41:75","nodeType":"YulFunctionCall","src":"627:41:75"},"nativeSrc":"627:41:75","nodeType":"YulExpressionStatement","src":"627:41:75"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"487:187:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"551:9:75","nodeType":"YulTypedName","src":"551:9:75","type":""},{"name":"value0","nativeSrc":"562:6:75","nodeType":"YulTypedName","src":"562:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"573:4:75","nodeType":"YulTypedName","src":"573:4:75","type":""}],"src":"487:187:75"},{"body":{"nativeSrc":"711:95:75","nodeType":"YulBlock","src":"711:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"728:1:75","nodeType":"YulLiteral","src":"728:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"735:3:75","nodeType":"YulLiteral","src":"735:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"740:10:75","nodeType":"YulLiteral","src":"740:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"731:3:75","nodeType":"YulIdentifier","src":"731:3:75"},"nativeSrc":"731:20:75","nodeType":"YulFunctionCall","src":"731:20:75"}],"functionName":{"name":"mstore","nativeSrc":"721:6:75","nodeType":"YulIdentifier","src":"721:6:75"},"nativeSrc":"721:31:75","nodeType":"YulFunctionCall","src":"721:31:75"},"nativeSrc":"721:31:75","nodeType":"YulExpressionStatement","src":"721:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"768:1:75","nodeType":"YulLiteral","src":"768:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"771:4:75","nodeType":"YulLiteral","src":"771:4:75","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"761:6:75","nodeType":"YulIdentifier","src":"761:6:75"},"nativeSrc":"761:15:75","nodeType":"YulFunctionCall","src":"761:15:75"},"nativeSrc":"761:15:75","nodeType":"YulExpressionStatement","src":"761:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"792:1:75","nodeType":"YulLiteral","src":"792:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"795:4:75","nodeType":"YulLiteral","src":"795:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"785:6:75","nodeType":"YulIdentifier","src":"785:6:75"},"nativeSrc":"785:15:75","nodeType":"YulFunctionCall","src":"785:15:75"},"nativeSrc":"785:15:75","nodeType":"YulExpressionStatement","src":"785:15:75"}]},"name":"panic_error_0x41","nativeSrc":"679:127:75","nodeType":"YulFunctionDefinition","src":"679:127:75"},{"body":{"nativeSrc":"864:836:75","nodeType":"YulBlock","src":"864:836:75","statements":[{"body":{"nativeSrc":"913:16:75","nodeType":"YulBlock","src":"913:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"922:1:75","nodeType":"YulLiteral","src":"922:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"925:1:75","nodeType":"YulLiteral","src":"925:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"915:6:75","nodeType":"YulIdentifier","src":"915:6:75"},"nativeSrc":"915:12:75","nodeType":"YulFunctionCall","src":"915:12:75"},"nativeSrc":"915:12:75","nodeType":"YulExpressionStatement","src":"915:12:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"892:6:75","nodeType":"YulIdentifier","src":"892:6:75"},{"kind":"number","nativeSrc":"900:4:75","nodeType":"YulLiteral","src":"900:4:75","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"888:3:75","nodeType":"YulIdentifier","src":"888:3:75"},"nativeSrc":"888:17:75","nodeType":"YulFunctionCall","src":"888:17:75"},{"name":"end","nativeSrc":"907:3:75","nodeType":"YulIdentifier","src":"907:3:75"}],"functionName":{"name":"slt","nativeSrc":"884:3:75","nodeType":"YulIdentifier","src":"884:3:75"},"nativeSrc":"884:27:75","nodeType":"YulFunctionCall","src":"884:27:75"}],"functionName":{"name":"iszero","nativeSrc":"877:6:75","nodeType":"YulIdentifier","src":"877:6:75"},"nativeSrc":"877:35:75","nodeType":"YulFunctionCall","src":"877:35:75"},"nativeSrc":"874:55:75","nodeType":"YulIf","src":"874:55:75"},{"nativeSrc":"938:34:75","nodeType":"YulVariableDeclaration","src":"938:34:75","value":{"arguments":[{"name":"offset","nativeSrc":"965:6:75","nodeType":"YulIdentifier","src":"965:6:75"}],"functionName":{"name":"calldataload","nativeSrc":"952:12:75","nodeType":"YulIdentifier","src":"952:12:75"},"nativeSrc":"952:20:75","nodeType":"YulFunctionCall","src":"952:20:75"},"variables":[{"name":"length","nativeSrc":"942:6:75","nodeType":"YulTypedName","src":"942:6:75","type":""}]},{"nativeSrc":"981:28:75","nodeType":"YulVariableDeclaration","src":"981:28:75","value":{"arguments":[{"name":"offset","nativeSrc":"996:6:75","nodeType":"YulIdentifier","src":"996:6:75"},{"kind":"number","nativeSrc":"1004:4:75","nodeType":"YulLiteral","src":"1004:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"992:3:75","nodeType":"YulIdentifier","src":"992:3:75"},"nativeSrc":"992:17:75","nodeType":"YulFunctionCall","src":"992:17:75"},"variables":[{"name":"src","nativeSrc":"985:3:75","nodeType":"YulTypedName","src":"985:3:75","type":""}]},{"nativeSrc":"1018:16:75","nodeType":"YulVariableDeclaration","src":"1018:16:75","value":{"kind":"number","nativeSrc":"1033:1:75","nodeType":"YulLiteral","src":"1033:1:75","type":"","value":"0"},"variables":[{"name":"array_1","nativeSrc":"1022:7:75","nodeType":"YulTypedName","src":"1022:7:75","type":""}]},{"nativeSrc":"1043:13:75","nodeType":"YulVariableDeclaration","src":"1043:13:75","value":{"kind":"number","nativeSrc":"1055:1:75","nodeType":"YulLiteral","src":"1055:1:75","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"1047:4:75","nodeType":"YulTypedName","src":"1047:4:75","type":""}]},{"body":{"nativeSrc":"1099:22:75","nodeType":"YulBlock","src":"1099:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1101:16:75","nodeType":"YulIdentifier","src":"1101:16:75"},"nativeSrc":"1101:18:75","nodeType":"YulFunctionCall","src":"1101:18:75"},"nativeSrc":"1101:18:75","nodeType":"YulExpressionStatement","src":"1101:18:75"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1071:6:75","nodeType":"YulIdentifier","src":"1071:6:75"},{"kind":"number","nativeSrc":"1079:18:75","nodeType":"YulLiteral","src":"1079:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1068:2:75","nodeType":"YulIdentifier","src":"1068:2:75"},"nativeSrc":"1068:30:75","nodeType":"YulFunctionCall","src":"1068:30:75"},"nativeSrc":"1065:56:75","nodeType":"YulIf","src":"1065:56:75"},{"nativeSrc":"1130:43:75","nodeType":"YulVariableDeclaration","src":"1130:43:75","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1152:6:75","nodeType":"YulIdentifier","src":"1152:6:75"},{"kind":"number","nativeSrc":"1160:2:75","nodeType":"YulLiteral","src":"1160:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1148:3:75","nodeType":"YulIdentifier","src":"1148:3:75"},"nativeSrc":"1148:15:75","nodeType":"YulFunctionCall","src":"1148:15:75"},{"arguments":[{"kind":"number","nativeSrc":"1169:2:75","nodeType":"YulLiteral","src":"1169:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1165:3:75","nodeType":"YulIdentifier","src":"1165:3:75"},"nativeSrc":"1165:7:75","nodeType":"YulFunctionCall","src":"1165:7:75"}],"functionName":{"name":"and","nativeSrc":"1144:3:75","nodeType":"YulIdentifier","src":"1144:3:75"},"nativeSrc":"1144:29:75","nodeType":"YulFunctionCall","src":"1144:29:75"},"variables":[{"name":"result","nativeSrc":"1134:6:75","nodeType":"YulTypedName","src":"1134:6:75","type":""}]},{"nativeSrc":"1182:25:75","nodeType":"YulAssignment","src":"1182:25:75","value":{"arguments":[{"name":"result","nativeSrc":"1194:6:75","nodeType":"YulIdentifier","src":"1194:6:75"},{"kind":"number","nativeSrc":"1202:4:75","nodeType":"YulLiteral","src":"1202:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1190:3:75","nodeType":"YulIdentifier","src":"1190:3:75"},"nativeSrc":"1190:17:75","nodeType":"YulFunctionCall","src":"1190:17:75"},"variableNames":[{"name":"size","nativeSrc":"1182:4:75","nodeType":"YulIdentifier","src":"1182:4:75"}]},{"nativeSrc":"1216:15:75","nodeType":"YulVariableDeclaration","src":"1216:15:75","value":{"kind":"number","nativeSrc":"1230:1:75","nodeType":"YulLiteral","src":"1230:1:75","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"1220:6:75","nodeType":"YulTypedName","src":"1220:6:75","type":""}]},{"nativeSrc":"1240:19:75","nodeType":"YulAssignment","src":"1240:19:75","value":{"arguments":[{"kind":"number","nativeSrc":"1256:2:75","nodeType":"YulLiteral","src":"1256:2:75","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1250:5:75","nodeType":"YulIdentifier","src":"1250:5:75"},"nativeSrc":"1250:9:75","nodeType":"YulFunctionCall","src":"1250:9:75"},"variableNames":[{"name":"memPtr","nativeSrc":"1240:6:75","nodeType":"YulIdentifier","src":"1240:6:75"}]},{"nativeSrc":"1268:60:75","nodeType":"YulVariableDeclaration","src":"1268:60:75","value":{"arguments":[{"name":"memPtr","nativeSrc":"1290:6:75","nodeType":"YulIdentifier","src":"1290:6:75"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"1306:6:75","nodeType":"YulIdentifier","src":"1306:6:75"},{"kind":"number","nativeSrc":"1314:2:75","nodeType":"YulLiteral","src":"1314:2:75","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1302:3:75","nodeType":"YulIdentifier","src":"1302:3:75"},"nativeSrc":"1302:15:75","nodeType":"YulFunctionCall","src":"1302:15:75"},{"arguments":[{"kind":"number","nativeSrc":"1323:2:75","nodeType":"YulLiteral","src":"1323:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1319:3:75","nodeType":"YulIdentifier","src":"1319:3:75"},"nativeSrc":"1319:7:75","nodeType":"YulFunctionCall","src":"1319:7:75"}],"functionName":{"name":"and","nativeSrc":"1298:3:75","nodeType":"YulIdentifier","src":"1298:3:75"},"nativeSrc":"1298:29:75","nodeType":"YulFunctionCall","src":"1298:29:75"}],"functionName":{"name":"add","nativeSrc":"1286:3:75","nodeType":"YulIdentifier","src":"1286:3:75"},"nativeSrc":"1286:42:75","nodeType":"YulFunctionCall","src":"1286:42:75"},"variables":[{"name":"newFreePtr","nativeSrc":"1272:10:75","nodeType":"YulTypedName","src":"1272:10:75","type":""}]},{"body":{"nativeSrc":"1403:22:75","nodeType":"YulBlock","src":"1403:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1405:16:75","nodeType":"YulIdentifier","src":"1405:16:75"},"nativeSrc":"1405:18:75","nodeType":"YulFunctionCall","src":"1405:18:75"},"nativeSrc":"1405:18:75","nodeType":"YulExpressionStatement","src":"1405:18:75"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1346:10:75","nodeType":"YulIdentifier","src":"1346:10:75"},{"kind":"number","nativeSrc":"1358:18:75","nodeType":"YulLiteral","src":"1358:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1343:2:75","nodeType":"YulIdentifier","src":"1343:2:75"},"nativeSrc":"1343:34:75","nodeType":"YulFunctionCall","src":"1343:34:75"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1382:10:75","nodeType":"YulIdentifier","src":"1382:10:75"},{"name":"memPtr","nativeSrc":"1394:6:75","nodeType":"YulIdentifier","src":"1394:6:75"}],"functionName":{"name":"lt","nativeSrc":"1379:2:75","nodeType":"YulIdentifier","src":"1379:2:75"},"nativeSrc":"1379:22:75","nodeType":"YulFunctionCall","src":"1379:22:75"}],"functionName":{"name":"or","nativeSrc":"1340:2:75","nodeType":"YulIdentifier","src":"1340:2:75"},"nativeSrc":"1340:62:75","nodeType":"YulFunctionCall","src":"1340:62:75"},"nativeSrc":"1337:88:75","nodeType":"YulIf","src":"1337:88:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1441:2:75","nodeType":"YulLiteral","src":"1441:2:75","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1445:10:75","nodeType":"YulIdentifier","src":"1445:10:75"}],"functionName":{"name":"mstore","nativeSrc":"1434:6:75","nodeType":"YulIdentifier","src":"1434:6:75"},"nativeSrc":"1434:22:75","nodeType":"YulFunctionCall","src":"1434:22:75"},"nativeSrc":"1434:22:75","nodeType":"YulExpressionStatement","src":"1434:22:75"},{"nativeSrc":"1465:17:75","nodeType":"YulAssignment","src":"1465:17:75","value":{"name":"memPtr","nativeSrc":"1476:6:75","nodeType":"YulIdentifier","src":"1476:6:75"},"variableNames":[{"name":"array_1","nativeSrc":"1465:7:75","nodeType":"YulIdentifier","src":"1465:7:75"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1498:6:75","nodeType":"YulIdentifier","src":"1498:6:75"},{"name":"length","nativeSrc":"1506:6:75","nodeType":"YulIdentifier","src":"1506:6:75"}],"functionName":{"name":"mstore","nativeSrc":"1491:6:75","nodeType":"YulIdentifier","src":"1491:6:75"},"nativeSrc":"1491:22:75","nodeType":"YulFunctionCall","src":"1491:22:75"},"nativeSrc":"1491:22:75","nodeType":"YulExpressionStatement","src":"1491:22:75"},{"body":{"nativeSrc":"1551:16:75","nodeType":"YulBlock","src":"1551:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1560:1:75","nodeType":"YulLiteral","src":"1560:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1563:1:75","nodeType":"YulLiteral","src":"1563:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1553:6:75","nodeType":"YulIdentifier","src":"1553:6:75"},"nativeSrc":"1553:12:75","nodeType":"YulFunctionCall","src":"1553:12:75"},"nativeSrc":"1553:12:75","nodeType":"YulExpressionStatement","src":"1553:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"1532:3:75","nodeType":"YulIdentifier","src":"1532:3:75"},{"name":"length","nativeSrc":"1537:6:75","nodeType":"YulIdentifier","src":"1537:6:75"}],"functionName":{"name":"add","nativeSrc":"1528:3:75","nodeType":"YulIdentifier","src":"1528:3:75"},"nativeSrc":"1528:16:75","nodeType":"YulFunctionCall","src":"1528:16:75"},{"name":"end","nativeSrc":"1546:3:75","nodeType":"YulIdentifier","src":"1546:3:75"}],"functionName":{"name":"gt","nativeSrc":"1525:2:75","nodeType":"YulIdentifier","src":"1525:2:75"},"nativeSrc":"1525:25:75","nodeType":"YulFunctionCall","src":"1525:25:75"},"nativeSrc":"1522:45:75","nodeType":"YulIf","src":"1522:45:75"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1593:6:75","nodeType":"YulIdentifier","src":"1593:6:75"},{"kind":"number","nativeSrc":"1601:4:75","nodeType":"YulLiteral","src":"1601:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1589:3:75","nodeType":"YulIdentifier","src":"1589:3:75"},"nativeSrc":"1589:17:75","nodeType":"YulFunctionCall","src":"1589:17:75"},{"name":"src","nativeSrc":"1608:3:75","nodeType":"YulIdentifier","src":"1608:3:75"},{"name":"length","nativeSrc":"1613:6:75","nodeType":"YulIdentifier","src":"1613:6:75"}],"functionName":{"name":"calldatacopy","nativeSrc":"1576:12:75","nodeType":"YulIdentifier","src":"1576:12:75"},"nativeSrc":"1576:44:75","nodeType":"YulFunctionCall","src":"1576:44:75"},"nativeSrc":"1576:44:75","nodeType":"YulExpressionStatement","src":"1576:44:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1644:6:75","nodeType":"YulIdentifier","src":"1644:6:75"},{"name":"length","nativeSrc":"1652:6:75","nodeType":"YulIdentifier","src":"1652:6:75"}],"functionName":{"name":"add","nativeSrc":"1640:3:75","nodeType":"YulIdentifier","src":"1640:3:75"},"nativeSrc":"1640:19:75","nodeType":"YulFunctionCall","src":"1640:19:75"},{"kind":"number","nativeSrc":"1661:4:75","nodeType":"YulLiteral","src":"1661:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1636:3:75","nodeType":"YulIdentifier","src":"1636:3:75"},"nativeSrc":"1636:30:75","nodeType":"YulFunctionCall","src":"1636:30:75"},{"kind":"number","nativeSrc":"1668:1:75","nodeType":"YulLiteral","src":"1668:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1629:6:75","nodeType":"YulIdentifier","src":"1629:6:75"},"nativeSrc":"1629:41:75","nodeType":"YulFunctionCall","src":"1629:41:75"},"nativeSrc":"1629:41:75","nodeType":"YulExpressionStatement","src":"1629:41:75"},{"nativeSrc":"1679:15:75","nodeType":"YulAssignment","src":"1679:15:75","value":{"name":"memPtr","nativeSrc":"1688:6:75","nodeType":"YulIdentifier","src":"1688:6:75"},"variableNames":[{"name":"array","nativeSrc":"1679:5:75","nodeType":"YulIdentifier","src":"1679:5:75"}]}]},"name":"abi_decode_string","nativeSrc":"811:889:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"838:6:75","nodeType":"YulTypedName","src":"838:6:75","type":""},{"name":"end","nativeSrc":"846:3:75","nodeType":"YulTypedName","src":"846:3:75","type":""}],"returnVariables":[{"name":"array","nativeSrc":"854:5:75","nodeType":"YulTypedName","src":"854:5:75","type":""}],"src":"811:889:75"},{"body":{"nativeSrc":"1750:86:75","nodeType":"YulBlock","src":"1750:86:75","statements":[{"body":{"nativeSrc":"1814:16:75","nodeType":"YulBlock","src":"1814:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1823:1:75","nodeType":"YulLiteral","src":"1823:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"1826:1:75","nodeType":"YulLiteral","src":"1826:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1816:6:75","nodeType":"YulIdentifier","src":"1816:6:75"},"nativeSrc":"1816:12:75","nodeType":"YulFunctionCall","src":"1816:12:75"},"nativeSrc":"1816:12:75","nodeType":"YulExpressionStatement","src":"1816:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1773:5:75","nodeType":"YulIdentifier","src":"1773:5:75"},{"arguments":[{"name":"value","nativeSrc":"1784:5:75","nodeType":"YulIdentifier","src":"1784:5:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1799:3:75","nodeType":"YulLiteral","src":"1799:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"1804:1:75","nodeType":"YulLiteral","src":"1804:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1795:3:75","nodeType":"YulIdentifier","src":"1795:3:75"},"nativeSrc":"1795:11:75","nodeType":"YulFunctionCall","src":"1795:11:75"},{"kind":"number","nativeSrc":"1808:1:75","nodeType":"YulLiteral","src":"1808:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1791:3:75","nodeType":"YulIdentifier","src":"1791:3:75"},"nativeSrc":"1791:19:75","nodeType":"YulFunctionCall","src":"1791:19:75"}],"functionName":{"name":"and","nativeSrc":"1780:3:75","nodeType":"YulIdentifier","src":"1780:3:75"},"nativeSrc":"1780:31:75","nodeType":"YulFunctionCall","src":"1780:31:75"}],"functionName":{"name":"eq","nativeSrc":"1770:2:75","nodeType":"YulIdentifier","src":"1770:2:75"},"nativeSrc":"1770:42:75","nodeType":"YulFunctionCall","src":"1770:42:75"}],"functionName":{"name":"iszero","nativeSrc":"1763:6:75","nodeType":"YulIdentifier","src":"1763:6:75"},"nativeSrc":"1763:50:75","nodeType":"YulFunctionCall","src":"1763:50:75"},"nativeSrc":"1760:70:75","nodeType":"YulIf","src":"1760:70:75"}]},"name":"validator_revert_address","nativeSrc":"1705:131:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1739:5:75","nodeType":"YulTypedName","src":"1739:5:75","type":""}],"src":"1705:131:75"},{"body":{"nativeSrc":"2065:989:75","nodeType":"YulBlock","src":"2065:989:75","statements":[{"body":{"nativeSrc":"2112:16:75","nodeType":"YulBlock","src":"2112:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2121:1:75","nodeType":"YulLiteral","src":"2121:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2124:1:75","nodeType":"YulLiteral","src":"2124:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2114:6:75","nodeType":"YulIdentifier","src":"2114:6:75"},"nativeSrc":"2114:12:75","nodeType":"YulFunctionCall","src":"2114:12:75"},"nativeSrc":"2114:12:75","nodeType":"YulExpressionStatement","src":"2114:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2086:7:75","nodeType":"YulIdentifier","src":"2086:7:75"},{"name":"headStart","nativeSrc":"2095:9:75","nodeType":"YulIdentifier","src":"2095:9:75"}],"functionName":{"name":"sub","nativeSrc":"2082:3:75","nodeType":"YulIdentifier","src":"2082:3:75"},"nativeSrc":"2082:23:75","nodeType":"YulFunctionCall","src":"2082:23:75"},{"kind":"number","nativeSrc":"2107:3:75","nodeType":"YulLiteral","src":"2107:3:75","type":"","value":"192"}],"functionName":{"name":"slt","nativeSrc":"2078:3:75","nodeType":"YulIdentifier","src":"2078:3:75"},"nativeSrc":"2078:33:75","nodeType":"YulFunctionCall","src":"2078:33:75"},"nativeSrc":"2075:53:75","nodeType":"YulIf","src":"2075:53:75"},{"nativeSrc":"2137:37:75","nodeType":"YulVariableDeclaration","src":"2137:37:75","value":{"arguments":[{"name":"headStart","nativeSrc":"2164:9:75","nodeType":"YulIdentifier","src":"2164:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"2151:12:75","nodeType":"YulIdentifier","src":"2151:12:75"},"nativeSrc":"2151:23:75","nodeType":"YulFunctionCall","src":"2151:23:75"},"variables":[{"name":"offset","nativeSrc":"2141:6:75","nodeType":"YulTypedName","src":"2141:6:75","type":""}]},{"body":{"nativeSrc":"2217:16:75","nodeType":"YulBlock","src":"2217:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2226:1:75","nodeType":"YulLiteral","src":"2226:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2229:1:75","nodeType":"YulLiteral","src":"2229:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2219:6:75","nodeType":"YulIdentifier","src":"2219:6:75"},"nativeSrc":"2219:12:75","nodeType":"YulFunctionCall","src":"2219:12:75"},"nativeSrc":"2219:12:75","nodeType":"YulExpressionStatement","src":"2219:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2189:6:75","nodeType":"YulIdentifier","src":"2189:6:75"},{"kind":"number","nativeSrc":"2197:18:75","nodeType":"YulLiteral","src":"2197:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2186:2:75","nodeType":"YulIdentifier","src":"2186:2:75"},"nativeSrc":"2186:30:75","nodeType":"YulFunctionCall","src":"2186:30:75"},"nativeSrc":"2183:50:75","nodeType":"YulIf","src":"2183:50:75"},{"nativeSrc":"2242:60:75","nodeType":"YulAssignment","src":"2242:60:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2274:9:75","nodeType":"YulIdentifier","src":"2274:9:75"},{"name":"offset","nativeSrc":"2285:6:75","nodeType":"YulIdentifier","src":"2285:6:75"}],"functionName":{"name":"add","nativeSrc":"2270:3:75","nodeType":"YulIdentifier","src":"2270:3:75"},"nativeSrc":"2270:22:75","nodeType":"YulFunctionCall","src":"2270:22:75"},{"name":"dataEnd","nativeSrc":"2294:7:75","nodeType":"YulIdentifier","src":"2294:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"2252:17:75","nodeType":"YulIdentifier","src":"2252:17:75"},"nativeSrc":"2252:50:75","nodeType":"YulFunctionCall","src":"2252:50:75"},"variableNames":[{"name":"value0","nativeSrc":"2242:6:75","nodeType":"YulIdentifier","src":"2242:6:75"}]},{"nativeSrc":"2311:48:75","nodeType":"YulVariableDeclaration","src":"2311:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2344:9:75","nodeType":"YulIdentifier","src":"2344:9:75"},{"kind":"number","nativeSrc":"2355:2:75","nodeType":"YulLiteral","src":"2355:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2340:3:75","nodeType":"YulIdentifier","src":"2340:3:75"},"nativeSrc":"2340:18:75","nodeType":"YulFunctionCall","src":"2340:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2327:12:75","nodeType":"YulIdentifier","src":"2327:12:75"},"nativeSrc":"2327:32:75","nodeType":"YulFunctionCall","src":"2327:32:75"},"variables":[{"name":"offset_1","nativeSrc":"2315:8:75","nodeType":"YulTypedName","src":"2315:8:75","type":""}]},{"body":{"nativeSrc":"2404:16:75","nodeType":"YulBlock","src":"2404:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2413:1:75","nodeType":"YulLiteral","src":"2413:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2416:1:75","nodeType":"YulLiteral","src":"2416:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2406:6:75","nodeType":"YulIdentifier","src":"2406:6:75"},"nativeSrc":"2406:12:75","nodeType":"YulFunctionCall","src":"2406:12:75"},"nativeSrc":"2406:12:75","nodeType":"YulExpressionStatement","src":"2406:12:75"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"2374:8:75","nodeType":"YulIdentifier","src":"2374:8:75"},{"kind":"number","nativeSrc":"2384:18:75","nodeType":"YulLiteral","src":"2384:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2371:2:75","nodeType":"YulIdentifier","src":"2371:2:75"},"nativeSrc":"2371:32:75","nodeType":"YulFunctionCall","src":"2371:32:75"},"nativeSrc":"2368:52:75","nodeType":"YulIf","src":"2368:52:75"},{"nativeSrc":"2429:62:75","nodeType":"YulAssignment","src":"2429:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2461:9:75","nodeType":"YulIdentifier","src":"2461:9:75"},{"name":"offset_1","nativeSrc":"2472:8:75","nodeType":"YulIdentifier","src":"2472:8:75"}],"functionName":{"name":"add","nativeSrc":"2457:3:75","nodeType":"YulIdentifier","src":"2457:3:75"},"nativeSrc":"2457:24:75","nodeType":"YulFunctionCall","src":"2457:24:75"},{"name":"dataEnd","nativeSrc":"2483:7:75","nodeType":"YulIdentifier","src":"2483:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"2439:17:75","nodeType":"YulIdentifier","src":"2439:17:75"},"nativeSrc":"2439:52:75","nodeType":"YulFunctionCall","src":"2439:52:75"},"variableNames":[{"name":"value1","nativeSrc":"2429:6:75","nodeType":"YulIdentifier","src":"2429:6:75"}]},{"nativeSrc":"2500:45:75","nodeType":"YulVariableDeclaration","src":"2500:45:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2530:9:75","nodeType":"YulIdentifier","src":"2530:9:75"},{"kind":"number","nativeSrc":"2541:2:75","nodeType":"YulLiteral","src":"2541:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2526:3:75","nodeType":"YulIdentifier","src":"2526:3:75"},"nativeSrc":"2526:18:75","nodeType":"YulFunctionCall","src":"2526:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2513:12:75","nodeType":"YulIdentifier","src":"2513:12:75"},"nativeSrc":"2513:32:75","nodeType":"YulFunctionCall","src":"2513:32:75"},"variables":[{"name":"value","nativeSrc":"2504:5:75","nodeType":"YulTypedName","src":"2504:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2579:5:75","nodeType":"YulIdentifier","src":"2579:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2554:24:75","nodeType":"YulIdentifier","src":"2554:24:75"},"nativeSrc":"2554:31:75","nodeType":"YulFunctionCall","src":"2554:31:75"},"nativeSrc":"2554:31:75","nodeType":"YulExpressionStatement","src":"2554:31:75"},{"nativeSrc":"2594:15:75","nodeType":"YulAssignment","src":"2594:15:75","value":{"name":"value","nativeSrc":"2604:5:75","nodeType":"YulIdentifier","src":"2604:5:75"},"variableNames":[{"name":"value2","nativeSrc":"2594:6:75","nodeType":"YulIdentifier","src":"2594:6:75"}]},{"nativeSrc":"2618:47:75","nodeType":"YulVariableDeclaration","src":"2618:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2650:9:75","nodeType":"YulIdentifier","src":"2650:9:75"},{"kind":"number","nativeSrc":"2661:2:75","nodeType":"YulLiteral","src":"2661:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2646:3:75","nodeType":"YulIdentifier","src":"2646:3:75"},"nativeSrc":"2646:18:75","nodeType":"YulFunctionCall","src":"2646:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"2633:12:75","nodeType":"YulIdentifier","src":"2633:12:75"},"nativeSrc":"2633:32:75","nodeType":"YulFunctionCall","src":"2633:32:75"},"variables":[{"name":"value_1","nativeSrc":"2622:7:75","nodeType":"YulTypedName","src":"2622:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"2699:7:75","nodeType":"YulIdentifier","src":"2699:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2674:24:75","nodeType":"YulIdentifier","src":"2674:24:75"},"nativeSrc":"2674:33:75","nodeType":"YulFunctionCall","src":"2674:33:75"},"nativeSrc":"2674:33:75","nodeType":"YulExpressionStatement","src":"2674:33:75"},{"nativeSrc":"2716:17:75","nodeType":"YulAssignment","src":"2716:17:75","value":{"name":"value_1","nativeSrc":"2726:7:75","nodeType":"YulIdentifier","src":"2726:7:75"},"variableNames":[{"name":"value3","nativeSrc":"2716:6:75","nodeType":"YulIdentifier","src":"2716:6:75"}]},{"nativeSrc":"2742:48:75","nodeType":"YulVariableDeclaration","src":"2742:48:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2774:9:75","nodeType":"YulIdentifier","src":"2774:9:75"},{"kind":"number","nativeSrc":"2785:3:75","nodeType":"YulLiteral","src":"2785:3:75","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2770:3:75","nodeType":"YulIdentifier","src":"2770:3:75"},"nativeSrc":"2770:19:75","nodeType":"YulFunctionCall","src":"2770:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"2757:12:75","nodeType":"YulIdentifier","src":"2757:12:75"},"nativeSrc":"2757:33:75","nodeType":"YulFunctionCall","src":"2757:33:75"},"variables":[{"name":"value_2","nativeSrc":"2746:7:75","nodeType":"YulTypedName","src":"2746:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"2824:7:75","nodeType":"YulIdentifier","src":"2824:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2799:24:75","nodeType":"YulIdentifier","src":"2799:24:75"},"nativeSrc":"2799:33:75","nodeType":"YulFunctionCall","src":"2799:33:75"},"nativeSrc":"2799:33:75","nodeType":"YulExpressionStatement","src":"2799:33:75"},{"nativeSrc":"2841:17:75","nodeType":"YulAssignment","src":"2841:17:75","value":{"name":"value_2","nativeSrc":"2851:7:75","nodeType":"YulIdentifier","src":"2851:7:75"},"variableNames":[{"name":"value4","nativeSrc":"2841:6:75","nodeType":"YulIdentifier","src":"2841:6:75"}]},{"nativeSrc":"2867:49:75","nodeType":"YulVariableDeclaration","src":"2867:49:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2900:9:75","nodeType":"YulIdentifier","src":"2900:9:75"},{"kind":"number","nativeSrc":"2911:3:75","nodeType":"YulLiteral","src":"2911:3:75","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2896:3:75","nodeType":"YulIdentifier","src":"2896:3:75"},"nativeSrc":"2896:19:75","nodeType":"YulFunctionCall","src":"2896:19:75"}],"functionName":{"name":"calldataload","nativeSrc":"2883:12:75","nodeType":"YulIdentifier","src":"2883:12:75"},"nativeSrc":"2883:33:75","nodeType":"YulFunctionCall","src":"2883:33:75"},"variables":[{"name":"offset_2","nativeSrc":"2871:8:75","nodeType":"YulTypedName","src":"2871:8:75","type":""}]},{"body":{"nativeSrc":"2961:16:75","nodeType":"YulBlock","src":"2961:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2970:1:75","nodeType":"YulLiteral","src":"2970:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"2973:1:75","nodeType":"YulLiteral","src":"2973:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2963:6:75","nodeType":"YulIdentifier","src":"2963:6:75"},"nativeSrc":"2963:12:75","nodeType":"YulFunctionCall","src":"2963:12:75"},"nativeSrc":"2963:12:75","nodeType":"YulExpressionStatement","src":"2963:12:75"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"2931:8:75","nodeType":"YulIdentifier","src":"2931:8:75"},{"kind":"number","nativeSrc":"2941:18:75","nodeType":"YulLiteral","src":"2941:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2928:2:75","nodeType":"YulIdentifier","src":"2928:2:75"},"nativeSrc":"2928:32:75","nodeType":"YulFunctionCall","src":"2928:32:75"},"nativeSrc":"2925:52:75","nodeType":"YulIf","src":"2925:52:75"},{"nativeSrc":"2986:62:75","nodeType":"YulAssignment","src":"2986:62:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3018:9:75","nodeType":"YulIdentifier","src":"3018:9:75"},{"name":"offset_2","nativeSrc":"3029:8:75","nodeType":"YulIdentifier","src":"3029:8:75"}],"functionName":{"name":"add","nativeSrc":"3014:3:75","nodeType":"YulIdentifier","src":"3014:3:75"},"nativeSrc":"3014:24:75","nodeType":"YulFunctionCall","src":"3014:24:75"},{"name":"dataEnd","nativeSrc":"3040:7:75","nodeType":"YulIdentifier","src":"3040:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"2996:17:75","nodeType":"YulIdentifier","src":"2996:17:75"},"nativeSrc":"2996:52:75","nodeType":"YulFunctionCall","src":"2996:52:75"},"variableNames":[{"name":"value5","nativeSrc":"2986:6:75","nodeType":"YulIdentifier","src":"2986:6:75"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr","nativeSrc":"1841:1213:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1991:9:75","nodeType":"YulTypedName","src":"1991:9:75","type":""},{"name":"dataEnd","nativeSrc":"2002:7:75","nodeType":"YulTypedName","src":"2002:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2014:6:75","nodeType":"YulTypedName","src":"2014:6:75","type":""},{"name":"value1","nativeSrc":"2022:6:75","nodeType":"YulTypedName","src":"2022:6:75","type":""},{"name":"value2","nativeSrc":"2030:6:75","nodeType":"YulTypedName","src":"2030:6:75","type":""},{"name":"value3","nativeSrc":"2038:6:75","nodeType":"YulTypedName","src":"2038:6:75","type":""},{"name":"value4","nativeSrc":"2046:6:75","nodeType":"YulTypedName","src":"2046:6:75","type":""},{"name":"value5","nativeSrc":"2054:6:75","nodeType":"YulTypedName","src":"2054:6:75","type":""}],"src":"1841:1213:75"},{"body":{"nativeSrc":"3109:239:75","nodeType":"YulBlock","src":"3109:239:75","statements":[{"nativeSrc":"3119:26:75","nodeType":"YulVariableDeclaration","src":"3119:26:75","value":{"arguments":[{"name":"value","nativeSrc":"3139:5:75","nodeType":"YulIdentifier","src":"3139:5:75"}],"functionName":{"name":"mload","nativeSrc":"3133:5:75","nodeType":"YulIdentifier","src":"3133:5:75"},"nativeSrc":"3133:12:75","nodeType":"YulFunctionCall","src":"3133:12:75"},"variables":[{"name":"length","nativeSrc":"3123:6:75","nodeType":"YulTypedName","src":"3123:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3161:3:75","nodeType":"YulIdentifier","src":"3161:3:75"},{"name":"length","nativeSrc":"3166:6:75","nodeType":"YulIdentifier","src":"3166:6:75"}],"functionName":{"name":"mstore","nativeSrc":"3154:6:75","nodeType":"YulIdentifier","src":"3154:6:75"},"nativeSrc":"3154:19:75","nodeType":"YulFunctionCall","src":"3154:19:75"},"nativeSrc":"3154:19:75","nodeType":"YulExpressionStatement","src":"3154:19:75"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3192:3:75","nodeType":"YulIdentifier","src":"3192:3:75"},{"kind":"number","nativeSrc":"3197:4:75","nodeType":"YulLiteral","src":"3197:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3188:3:75","nodeType":"YulIdentifier","src":"3188:3:75"},"nativeSrc":"3188:14:75","nodeType":"YulFunctionCall","src":"3188:14:75"},{"arguments":[{"name":"value","nativeSrc":"3208:5:75","nodeType":"YulIdentifier","src":"3208:5:75"},{"kind":"number","nativeSrc":"3215:4:75","nodeType":"YulLiteral","src":"3215:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3204:3:75","nodeType":"YulIdentifier","src":"3204:3:75"},"nativeSrc":"3204:16:75","nodeType":"YulFunctionCall","src":"3204:16:75"},{"name":"length","nativeSrc":"3222:6:75","nodeType":"YulIdentifier","src":"3222:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"3182:5:75","nodeType":"YulIdentifier","src":"3182:5:75"},"nativeSrc":"3182:47:75","nodeType":"YulFunctionCall","src":"3182:47:75"},"nativeSrc":"3182:47:75","nodeType":"YulExpressionStatement","src":"3182:47:75"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3253:3:75","nodeType":"YulIdentifier","src":"3253:3:75"},{"name":"length","nativeSrc":"3258:6:75","nodeType":"YulIdentifier","src":"3258:6:75"}],"functionName":{"name":"add","nativeSrc":"3249:3:75","nodeType":"YulIdentifier","src":"3249:3:75"},"nativeSrc":"3249:16:75","nodeType":"YulFunctionCall","src":"3249:16:75"},{"kind":"number","nativeSrc":"3267:4:75","nodeType":"YulLiteral","src":"3267:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3245:3:75","nodeType":"YulIdentifier","src":"3245:3:75"},"nativeSrc":"3245:27:75","nodeType":"YulFunctionCall","src":"3245:27:75"},{"kind":"number","nativeSrc":"3274:1:75","nodeType":"YulLiteral","src":"3274:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3238:6:75","nodeType":"YulIdentifier","src":"3238:6:75"},"nativeSrc":"3238:38:75","nodeType":"YulFunctionCall","src":"3238:38:75"},"nativeSrc":"3238:38:75","nodeType":"YulExpressionStatement","src":"3238:38:75"},{"nativeSrc":"3285:57:75","nodeType":"YulAssignment","src":"3285:57:75","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3300:3:75","nodeType":"YulIdentifier","src":"3300:3:75"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3313:6:75","nodeType":"YulIdentifier","src":"3313:6:75"},{"kind":"number","nativeSrc":"3321:2:75","nodeType":"YulLiteral","src":"3321:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3309:3:75","nodeType":"YulIdentifier","src":"3309:3:75"},"nativeSrc":"3309:15:75","nodeType":"YulFunctionCall","src":"3309:15:75"},{"arguments":[{"kind":"number","nativeSrc":"3330:2:75","nodeType":"YulLiteral","src":"3330:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3326:3:75","nodeType":"YulIdentifier","src":"3326:3:75"},"nativeSrc":"3326:7:75","nodeType":"YulFunctionCall","src":"3326:7:75"}],"functionName":{"name":"and","nativeSrc":"3305:3:75","nodeType":"YulIdentifier","src":"3305:3:75"},"nativeSrc":"3305:29:75","nodeType":"YulFunctionCall","src":"3305:29:75"}],"functionName":{"name":"add","nativeSrc":"3296:3:75","nodeType":"YulIdentifier","src":"3296:3:75"},"nativeSrc":"3296:39:75","nodeType":"YulFunctionCall","src":"3296:39:75"},{"kind":"number","nativeSrc":"3337:4:75","nodeType":"YulLiteral","src":"3337:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3292:3:75","nodeType":"YulIdentifier","src":"3292:3:75"},"nativeSrc":"3292:50:75","nodeType":"YulFunctionCall","src":"3292:50:75"},"variableNames":[{"name":"end","nativeSrc":"3285:3:75","nodeType":"YulIdentifier","src":"3285:3:75"}]}]},"name":"abi_encode_string","nativeSrc":"3059:289:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3086:5:75","nodeType":"YulTypedName","src":"3086:5:75","type":""},{"name":"pos","nativeSrc":"3093:3:75","nodeType":"YulTypedName","src":"3093:3:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3101:3:75","nodeType":"YulTypedName","src":"3101:3:75","type":""}],"src":"3059:289:75"},{"body":{"nativeSrc":"3474:99:75","nodeType":"YulBlock","src":"3474:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3491:9:75","nodeType":"YulIdentifier","src":"3491:9:75"},{"kind":"number","nativeSrc":"3502:2:75","nodeType":"YulLiteral","src":"3502:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3484:6:75","nodeType":"YulIdentifier","src":"3484:6:75"},"nativeSrc":"3484:21:75","nodeType":"YulFunctionCall","src":"3484:21:75"},"nativeSrc":"3484:21:75","nodeType":"YulExpressionStatement","src":"3484:21:75"},{"nativeSrc":"3514:53:75","nodeType":"YulAssignment","src":"3514:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"3540:6:75","nodeType":"YulIdentifier","src":"3540:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"3552:9:75","nodeType":"YulIdentifier","src":"3552:9:75"},{"kind":"number","nativeSrc":"3563:2:75","nodeType":"YulLiteral","src":"3563:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3548:3:75","nodeType":"YulIdentifier","src":"3548:3:75"},"nativeSrc":"3548:18:75","nodeType":"YulFunctionCall","src":"3548:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3522:17:75","nodeType":"YulIdentifier","src":"3522:17:75"},"nativeSrc":"3522:45:75","nodeType":"YulFunctionCall","src":"3522:45:75"},"variableNames":[{"name":"tail","nativeSrc":"3514:4:75","nodeType":"YulIdentifier","src":"3514:4:75"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"3353:220:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3443:9:75","nodeType":"YulTypedName","src":"3443:9:75","type":""},{"name":"value0","nativeSrc":"3454:6:75","nodeType":"YulTypedName","src":"3454:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3465:4:75","nodeType":"YulTypedName","src":"3465:4:75","type":""}],"src":"3353:220:75"},{"body":{"nativeSrc":"3648:156:75","nodeType":"YulBlock","src":"3648:156:75","statements":[{"body":{"nativeSrc":"3694:16:75","nodeType":"YulBlock","src":"3694:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3703:1:75","nodeType":"YulLiteral","src":"3703:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3706:1:75","nodeType":"YulLiteral","src":"3706:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3696:6:75","nodeType":"YulIdentifier","src":"3696:6:75"},"nativeSrc":"3696:12:75","nodeType":"YulFunctionCall","src":"3696:12:75"},"nativeSrc":"3696:12:75","nodeType":"YulExpressionStatement","src":"3696:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3669:7:75","nodeType":"YulIdentifier","src":"3669:7:75"},{"name":"headStart","nativeSrc":"3678:9:75","nodeType":"YulIdentifier","src":"3678:9:75"}],"functionName":{"name":"sub","nativeSrc":"3665:3:75","nodeType":"YulIdentifier","src":"3665:3:75"},"nativeSrc":"3665:23:75","nodeType":"YulFunctionCall","src":"3665:23:75"},{"kind":"number","nativeSrc":"3690:2:75","nodeType":"YulLiteral","src":"3690:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3661:3:75","nodeType":"YulIdentifier","src":"3661:3:75"},"nativeSrc":"3661:32:75","nodeType":"YulFunctionCall","src":"3661:32:75"},"nativeSrc":"3658:52:75","nodeType":"YulIf","src":"3658:52:75"},{"nativeSrc":"3719:14:75","nodeType":"YulVariableDeclaration","src":"3719:14:75","value":{"kind":"number","nativeSrc":"3732:1:75","nodeType":"YulLiteral","src":"3732:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"3723:5:75","nodeType":"YulTypedName","src":"3723:5:75","type":""}]},{"nativeSrc":"3742:32:75","nodeType":"YulAssignment","src":"3742:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3764:9:75","nodeType":"YulIdentifier","src":"3764:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3751:12:75","nodeType":"YulIdentifier","src":"3751:12:75"},"nativeSrc":"3751:23:75","nodeType":"YulFunctionCall","src":"3751:23:75"},"variableNames":[{"name":"value","nativeSrc":"3742:5:75","nodeType":"YulIdentifier","src":"3742:5:75"}]},{"nativeSrc":"3783:15:75","nodeType":"YulAssignment","src":"3783:15:75","value":{"name":"value","nativeSrc":"3793:5:75","nodeType":"YulIdentifier","src":"3793:5:75"},"variableNames":[{"name":"value0","nativeSrc":"3783:6:75","nodeType":"YulIdentifier","src":"3783:6:75"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"3578:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3614:9:75","nodeType":"YulTypedName","src":"3614:9:75","type":""},{"name":"dataEnd","nativeSrc":"3625:7:75","nodeType":"YulTypedName","src":"3625:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3637:6:75","nodeType":"YulTypedName","src":"3637:6:75","type":""}],"src":"3578:226:75"},{"body":{"nativeSrc":"3896:280:75","nodeType":"YulBlock","src":"3896:280:75","statements":[{"body":{"nativeSrc":"3942:16:75","nodeType":"YulBlock","src":"3942:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3951:1:75","nodeType":"YulLiteral","src":"3951:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"3954:1:75","nodeType":"YulLiteral","src":"3954:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3944:6:75","nodeType":"YulIdentifier","src":"3944:6:75"},"nativeSrc":"3944:12:75","nodeType":"YulFunctionCall","src":"3944:12:75"},"nativeSrc":"3944:12:75","nodeType":"YulExpressionStatement","src":"3944:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3917:7:75","nodeType":"YulIdentifier","src":"3917:7:75"},{"name":"headStart","nativeSrc":"3926:9:75","nodeType":"YulIdentifier","src":"3926:9:75"}],"functionName":{"name":"sub","nativeSrc":"3913:3:75","nodeType":"YulIdentifier","src":"3913:3:75"},"nativeSrc":"3913:23:75","nodeType":"YulFunctionCall","src":"3913:23:75"},{"kind":"number","nativeSrc":"3938:2:75","nodeType":"YulLiteral","src":"3938:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3909:3:75","nodeType":"YulIdentifier","src":"3909:3:75"},"nativeSrc":"3909:32:75","nodeType":"YulFunctionCall","src":"3909:32:75"},"nativeSrc":"3906:52:75","nodeType":"YulIf","src":"3906:52:75"},{"nativeSrc":"3967:36:75","nodeType":"YulVariableDeclaration","src":"3967:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"3993:9:75","nodeType":"YulIdentifier","src":"3993:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"3980:12:75","nodeType":"YulIdentifier","src":"3980:12:75"},"nativeSrc":"3980:23:75","nodeType":"YulFunctionCall","src":"3980:23:75"},"variables":[{"name":"value","nativeSrc":"3971:5:75","nodeType":"YulTypedName","src":"3971:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4037:5:75","nodeType":"YulIdentifier","src":"4037:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4012:24:75","nodeType":"YulIdentifier","src":"4012:24:75"},"nativeSrc":"4012:31:75","nodeType":"YulFunctionCall","src":"4012:31:75"},"nativeSrc":"4012:31:75","nodeType":"YulExpressionStatement","src":"4012:31:75"},{"nativeSrc":"4052:15:75","nodeType":"YulAssignment","src":"4052:15:75","value":{"name":"value","nativeSrc":"4062:5:75","nodeType":"YulIdentifier","src":"4062:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4052:6:75","nodeType":"YulIdentifier","src":"4052:6:75"}]},{"nativeSrc":"4076:16:75","nodeType":"YulVariableDeclaration","src":"4076:16:75","value":{"kind":"number","nativeSrc":"4091:1:75","nodeType":"YulLiteral","src":"4091:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"4080:7:75","nodeType":"YulTypedName","src":"4080:7:75","type":""}]},{"nativeSrc":"4101:43:75","nodeType":"YulAssignment","src":"4101:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4129:9:75","nodeType":"YulIdentifier","src":"4129:9:75"},{"kind":"number","nativeSrc":"4140:2:75","nodeType":"YulLiteral","src":"4140:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4125:3:75","nodeType":"YulIdentifier","src":"4125:3:75"},"nativeSrc":"4125:18:75","nodeType":"YulFunctionCall","src":"4125:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4112:12:75","nodeType":"YulIdentifier","src":"4112:12:75"},"nativeSrc":"4112:32:75","nodeType":"YulFunctionCall","src":"4112:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"4101:7:75","nodeType":"YulIdentifier","src":"4101:7:75"}]},{"nativeSrc":"4153:17:75","nodeType":"YulAssignment","src":"4153:17:75","value":{"name":"value_1","nativeSrc":"4163:7:75","nodeType":"YulIdentifier","src":"4163:7:75"},"variableNames":[{"name":"value1","nativeSrc":"4153:6:75","nodeType":"YulIdentifier","src":"4153:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"3809:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3854:9:75","nodeType":"YulTypedName","src":"3854:9:75","type":""},{"name":"dataEnd","nativeSrc":"3865:7:75","nodeType":"YulTypedName","src":"3865:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3877:6:75","nodeType":"YulTypedName","src":"3877:6:75","type":""},{"name":"value1","nativeSrc":"3885:6:75","nodeType":"YulTypedName","src":"3885:6:75","type":""}],"src":"3809:367:75"},{"body":{"nativeSrc":"4268:259:75","nodeType":"YulBlock","src":"4268:259:75","statements":[{"body":{"nativeSrc":"4314:16:75","nodeType":"YulBlock","src":"4314:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4323:1:75","nodeType":"YulLiteral","src":"4323:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4326:1:75","nodeType":"YulLiteral","src":"4326:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4316:6:75","nodeType":"YulIdentifier","src":"4316:6:75"},"nativeSrc":"4316:12:75","nodeType":"YulFunctionCall","src":"4316:12:75"},"nativeSrc":"4316:12:75","nodeType":"YulExpressionStatement","src":"4316:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4289:7:75","nodeType":"YulIdentifier","src":"4289:7:75"},{"name":"headStart","nativeSrc":"4298:9:75","nodeType":"YulIdentifier","src":"4298:9:75"}],"functionName":{"name":"sub","nativeSrc":"4285:3:75","nodeType":"YulIdentifier","src":"4285:3:75"},"nativeSrc":"4285:23:75","nodeType":"YulFunctionCall","src":"4285:23:75"},{"kind":"number","nativeSrc":"4310:2:75","nodeType":"YulLiteral","src":"4310:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4281:3:75","nodeType":"YulIdentifier","src":"4281:3:75"},"nativeSrc":"4281:32:75","nodeType":"YulFunctionCall","src":"4281:32:75"},"nativeSrc":"4278:52:75","nodeType":"YulIf","src":"4278:52:75"},{"nativeSrc":"4339:14:75","nodeType":"YulVariableDeclaration","src":"4339:14:75","value":{"kind":"number","nativeSrc":"4352:1:75","nodeType":"YulLiteral","src":"4352:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4343:5:75","nodeType":"YulTypedName","src":"4343:5:75","type":""}]},{"nativeSrc":"4362:32:75","nodeType":"YulAssignment","src":"4362:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4384:9:75","nodeType":"YulIdentifier","src":"4384:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4371:12:75","nodeType":"YulIdentifier","src":"4371:12:75"},"nativeSrc":"4371:23:75","nodeType":"YulFunctionCall","src":"4371:23:75"},"variableNames":[{"name":"value","nativeSrc":"4362:5:75","nodeType":"YulIdentifier","src":"4362:5:75"}]},{"nativeSrc":"4403:15:75","nodeType":"YulAssignment","src":"4403:15:75","value":{"name":"value","nativeSrc":"4413:5:75","nodeType":"YulIdentifier","src":"4413:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4403:6:75","nodeType":"YulIdentifier","src":"4403:6:75"}]},{"nativeSrc":"4427:16:75","nodeType":"YulVariableDeclaration","src":"4427:16:75","value":{"kind":"number","nativeSrc":"4442:1:75","nodeType":"YulLiteral","src":"4442:1:75","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"4431:7:75","nodeType":"YulTypedName","src":"4431:7:75","type":""}]},{"nativeSrc":"4452:43:75","nodeType":"YulAssignment","src":"4452:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4480:9:75","nodeType":"YulIdentifier","src":"4480:9:75"},{"kind":"number","nativeSrc":"4491:2:75","nodeType":"YulLiteral","src":"4491:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4476:3:75","nodeType":"YulIdentifier","src":"4476:3:75"},"nativeSrc":"4476:18:75","nodeType":"YulFunctionCall","src":"4476:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4463:12:75","nodeType":"YulIdentifier","src":"4463:12:75"},"nativeSrc":"4463:32:75","nodeType":"YulFunctionCall","src":"4463:32:75"},"variableNames":[{"name":"value_1","nativeSrc":"4452:7:75","nodeType":"YulIdentifier","src":"4452:7:75"}]},{"nativeSrc":"4504:17:75","nodeType":"YulAssignment","src":"4504:17:75","value":{"name":"value_1","nativeSrc":"4514:7:75","nodeType":"YulIdentifier","src":"4514:7:75"},"variableNames":[{"name":"value1","nativeSrc":"4504:6:75","nodeType":"YulIdentifier","src":"4504:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes32","nativeSrc":"4181:346:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4226:9:75","nodeType":"YulTypedName","src":"4226:9:75","type":""},{"name":"dataEnd","nativeSrc":"4237:7:75","nodeType":"YulTypedName","src":"4237:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4249:6:75","nodeType":"YulTypedName","src":"4249:6:75","type":""},{"name":"value1","nativeSrc":"4257:6:75","nodeType":"YulTypedName","src":"4257:6:75","type":""}],"src":"4181:346:75"},{"body":{"nativeSrc":"4636:404:75","nodeType":"YulBlock","src":"4636:404:75","statements":[{"body":{"nativeSrc":"4682:16:75","nodeType":"YulBlock","src":"4682:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4691:1:75","nodeType":"YulLiteral","src":"4691:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"4694:1:75","nodeType":"YulLiteral","src":"4694:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4684:6:75","nodeType":"YulIdentifier","src":"4684:6:75"},"nativeSrc":"4684:12:75","nodeType":"YulFunctionCall","src":"4684:12:75"},"nativeSrc":"4684:12:75","nodeType":"YulExpressionStatement","src":"4684:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4657:7:75","nodeType":"YulIdentifier","src":"4657:7:75"},{"name":"headStart","nativeSrc":"4666:9:75","nodeType":"YulIdentifier","src":"4666:9:75"}],"functionName":{"name":"sub","nativeSrc":"4653:3:75","nodeType":"YulIdentifier","src":"4653:3:75"},"nativeSrc":"4653:23:75","nodeType":"YulFunctionCall","src":"4653:23:75"},{"kind":"number","nativeSrc":"4678:2:75","nodeType":"YulLiteral","src":"4678:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"4649:3:75","nodeType":"YulIdentifier","src":"4649:3:75"},"nativeSrc":"4649:32:75","nodeType":"YulFunctionCall","src":"4649:32:75"},"nativeSrc":"4646:52:75","nodeType":"YulIf","src":"4646:52:75"},{"nativeSrc":"4707:36:75","nodeType":"YulVariableDeclaration","src":"4707:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"4733:9:75","nodeType":"YulIdentifier","src":"4733:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"4720:12:75","nodeType":"YulIdentifier","src":"4720:12:75"},"nativeSrc":"4720:23:75","nodeType":"YulFunctionCall","src":"4720:23:75"},"variables":[{"name":"value","nativeSrc":"4711:5:75","nodeType":"YulTypedName","src":"4711:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4777:5:75","nodeType":"YulIdentifier","src":"4777:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4752:24:75","nodeType":"YulIdentifier","src":"4752:24:75"},"nativeSrc":"4752:31:75","nodeType":"YulFunctionCall","src":"4752:31:75"},"nativeSrc":"4752:31:75","nodeType":"YulExpressionStatement","src":"4752:31:75"},{"nativeSrc":"4792:15:75","nodeType":"YulAssignment","src":"4792:15:75","value":{"name":"value","nativeSrc":"4802:5:75","nodeType":"YulIdentifier","src":"4802:5:75"},"variableNames":[{"name":"value0","nativeSrc":"4792:6:75","nodeType":"YulIdentifier","src":"4792:6:75"}]},{"nativeSrc":"4816:47:75","nodeType":"YulVariableDeclaration","src":"4816:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4848:9:75","nodeType":"YulIdentifier","src":"4848:9:75"},{"kind":"number","nativeSrc":"4859:2:75","nodeType":"YulLiteral","src":"4859:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4844:3:75","nodeType":"YulIdentifier","src":"4844:3:75"},"nativeSrc":"4844:18:75","nodeType":"YulFunctionCall","src":"4844:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4831:12:75","nodeType":"YulIdentifier","src":"4831:12:75"},"nativeSrc":"4831:32:75","nodeType":"YulFunctionCall","src":"4831:32:75"},"variables":[{"name":"value_1","nativeSrc":"4820:7:75","nodeType":"YulTypedName","src":"4820:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4897:7:75","nodeType":"YulIdentifier","src":"4897:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4872:24:75","nodeType":"YulIdentifier","src":"4872:24:75"},"nativeSrc":"4872:33:75","nodeType":"YulFunctionCall","src":"4872:33:75"},"nativeSrc":"4872:33:75","nodeType":"YulExpressionStatement","src":"4872:33:75"},{"nativeSrc":"4914:17:75","nodeType":"YulAssignment","src":"4914:17:75","value":{"name":"value_1","nativeSrc":"4924:7:75","nodeType":"YulIdentifier","src":"4924:7:75"},"variableNames":[{"name":"value1","nativeSrc":"4914:6:75","nodeType":"YulIdentifier","src":"4914:6:75"}]},{"nativeSrc":"4940:16:75","nodeType":"YulVariableDeclaration","src":"4940:16:75","value":{"kind":"number","nativeSrc":"4955:1:75","nodeType":"YulLiteral","src":"4955:1:75","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"4944:7:75","nodeType":"YulTypedName","src":"4944:7:75","type":""}]},{"nativeSrc":"4965:43:75","nodeType":"YulAssignment","src":"4965:43:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4993:9:75","nodeType":"YulIdentifier","src":"4993:9:75"},{"kind":"number","nativeSrc":"5004:2:75","nodeType":"YulLiteral","src":"5004:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4989:3:75","nodeType":"YulIdentifier","src":"4989:3:75"},"nativeSrc":"4989:18:75","nodeType":"YulFunctionCall","src":"4989:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"4976:12:75","nodeType":"YulIdentifier","src":"4976:12:75"},"nativeSrc":"4976:32:75","nodeType":"YulFunctionCall","src":"4976:32:75"},"variableNames":[{"name":"value_2","nativeSrc":"4965:7:75","nodeType":"YulIdentifier","src":"4965:7:75"}]},{"nativeSrc":"5017:17:75","nodeType":"YulAssignment","src":"5017:17:75","value":{"name":"value_2","nativeSrc":"5027:7:75","nodeType":"YulIdentifier","src":"5027:7:75"},"variableNames":[{"name":"value2","nativeSrc":"5017:6:75","nodeType":"YulIdentifier","src":"5017:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"4532:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4586:9:75","nodeType":"YulTypedName","src":"4586:9:75","type":""},{"name":"dataEnd","nativeSrc":"4597:7:75","nodeType":"YulTypedName","src":"4597:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4609:6:75","nodeType":"YulTypedName","src":"4609:6:75","type":""},{"name":"value1","nativeSrc":"4617:6:75","nodeType":"YulTypedName","src":"4617:6:75","type":""},{"name":"value2","nativeSrc":"4625:6:75","nodeType":"YulTypedName","src":"4625:6:75","type":""}],"src":"4532:508:75"},{"body":{"nativeSrc":"5115:156:75","nodeType":"YulBlock","src":"5115:156:75","statements":[{"body":{"nativeSrc":"5161:16:75","nodeType":"YulBlock","src":"5161:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5170:1:75","nodeType":"YulLiteral","src":"5170:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5173:1:75","nodeType":"YulLiteral","src":"5173:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5163:6:75","nodeType":"YulIdentifier","src":"5163:6:75"},"nativeSrc":"5163:12:75","nodeType":"YulFunctionCall","src":"5163:12:75"},"nativeSrc":"5163:12:75","nodeType":"YulExpressionStatement","src":"5163:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5136:7:75","nodeType":"YulIdentifier","src":"5136:7:75"},{"name":"headStart","nativeSrc":"5145:9:75","nodeType":"YulIdentifier","src":"5145:9:75"}],"functionName":{"name":"sub","nativeSrc":"5132:3:75","nodeType":"YulIdentifier","src":"5132:3:75"},"nativeSrc":"5132:23:75","nodeType":"YulFunctionCall","src":"5132:23:75"},{"kind":"number","nativeSrc":"5157:2:75","nodeType":"YulLiteral","src":"5157:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5128:3:75","nodeType":"YulIdentifier","src":"5128:3:75"},"nativeSrc":"5128:32:75","nodeType":"YulFunctionCall","src":"5128:32:75"},"nativeSrc":"5125:52:75","nodeType":"YulIf","src":"5125:52:75"},{"nativeSrc":"5186:14:75","nodeType":"YulVariableDeclaration","src":"5186:14:75","value":{"kind":"number","nativeSrc":"5199:1:75","nodeType":"YulLiteral","src":"5199:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5190:5:75","nodeType":"YulTypedName","src":"5190:5:75","type":""}]},{"nativeSrc":"5209:32:75","nodeType":"YulAssignment","src":"5209:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5231:9:75","nodeType":"YulIdentifier","src":"5231:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5218:12:75","nodeType":"YulIdentifier","src":"5218:12:75"},"nativeSrc":"5218:23:75","nodeType":"YulFunctionCall","src":"5218:23:75"},"variableNames":[{"name":"value","nativeSrc":"5209:5:75","nodeType":"YulIdentifier","src":"5209:5:75"}]},{"nativeSrc":"5250:15:75","nodeType":"YulAssignment","src":"5250:15:75","value":{"name":"value","nativeSrc":"5260:5:75","nodeType":"YulIdentifier","src":"5260:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5250:6:75","nodeType":"YulIdentifier","src":"5250:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32","nativeSrc":"5045:226:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5081:9:75","nodeType":"YulTypedName","src":"5081:9:75","type":""},{"name":"dataEnd","nativeSrc":"5092:7:75","nodeType":"YulTypedName","src":"5092:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5104:6:75","nodeType":"YulTypedName","src":"5104:6:75","type":""}],"src":"5045:226:75"},{"body":{"nativeSrc":"5377:76:75","nodeType":"YulBlock","src":"5377:76:75","statements":[{"nativeSrc":"5387:26:75","nodeType":"YulAssignment","src":"5387:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5399:9:75","nodeType":"YulIdentifier","src":"5399:9:75"},{"kind":"number","nativeSrc":"5410:2:75","nodeType":"YulLiteral","src":"5410:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5395:3:75","nodeType":"YulIdentifier","src":"5395:3:75"},"nativeSrc":"5395:18:75","nodeType":"YulFunctionCall","src":"5395:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5387:4:75","nodeType":"YulIdentifier","src":"5387:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5429:9:75","nodeType":"YulIdentifier","src":"5429:9:75"},{"name":"value0","nativeSrc":"5440:6:75","nodeType":"YulIdentifier","src":"5440:6:75"}],"functionName":{"name":"mstore","nativeSrc":"5422:6:75","nodeType":"YulIdentifier","src":"5422:6:75"},"nativeSrc":"5422:25:75","nodeType":"YulFunctionCall","src":"5422:25:75"},"nativeSrc":"5422:25:75","nodeType":"YulExpressionStatement","src":"5422:25:75"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"5276:177:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5346:9:75","nodeType":"YulTypedName","src":"5346:9:75","type":""},{"name":"value0","nativeSrc":"5357:6:75","nodeType":"YulTypedName","src":"5357:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5368:4:75","nodeType":"YulTypedName","src":"5368:4:75","type":""}],"src":"5276:177:75"},{"body":{"nativeSrc":"5545:280:75","nodeType":"YulBlock","src":"5545:280:75","statements":[{"body":{"nativeSrc":"5591:16:75","nodeType":"YulBlock","src":"5591:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5600:1:75","nodeType":"YulLiteral","src":"5600:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"5603:1:75","nodeType":"YulLiteral","src":"5603:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5593:6:75","nodeType":"YulIdentifier","src":"5593:6:75"},"nativeSrc":"5593:12:75","nodeType":"YulFunctionCall","src":"5593:12:75"},"nativeSrc":"5593:12:75","nodeType":"YulExpressionStatement","src":"5593:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5566:7:75","nodeType":"YulIdentifier","src":"5566:7:75"},{"name":"headStart","nativeSrc":"5575:9:75","nodeType":"YulIdentifier","src":"5575:9:75"}],"functionName":{"name":"sub","nativeSrc":"5562:3:75","nodeType":"YulIdentifier","src":"5562:3:75"},"nativeSrc":"5562:23:75","nodeType":"YulFunctionCall","src":"5562:23:75"},{"kind":"number","nativeSrc":"5587:2:75","nodeType":"YulLiteral","src":"5587:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5558:3:75","nodeType":"YulIdentifier","src":"5558:3:75"},"nativeSrc":"5558:32:75","nodeType":"YulFunctionCall","src":"5558:32:75"},"nativeSrc":"5555:52:75","nodeType":"YulIf","src":"5555:52:75"},{"nativeSrc":"5616:14:75","nodeType":"YulVariableDeclaration","src":"5616:14:75","value":{"kind":"number","nativeSrc":"5629:1:75","nodeType":"YulLiteral","src":"5629:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5620:5:75","nodeType":"YulTypedName","src":"5620:5:75","type":""}]},{"nativeSrc":"5639:32:75","nodeType":"YulAssignment","src":"5639:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5661:9:75","nodeType":"YulIdentifier","src":"5661:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"5648:12:75","nodeType":"YulIdentifier","src":"5648:12:75"},"nativeSrc":"5648:23:75","nodeType":"YulFunctionCall","src":"5648:23:75"},"variableNames":[{"name":"value","nativeSrc":"5639:5:75","nodeType":"YulIdentifier","src":"5639:5:75"}]},{"nativeSrc":"5680:15:75","nodeType":"YulAssignment","src":"5680:15:75","value":{"name":"value","nativeSrc":"5690:5:75","nodeType":"YulIdentifier","src":"5690:5:75"},"variableNames":[{"name":"value0","nativeSrc":"5680:6:75","nodeType":"YulIdentifier","src":"5680:6:75"}]},{"nativeSrc":"5704:47:75","nodeType":"YulVariableDeclaration","src":"5704:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5736:9:75","nodeType":"YulIdentifier","src":"5736:9:75"},{"kind":"number","nativeSrc":"5747:2:75","nodeType":"YulLiteral","src":"5747:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5732:3:75","nodeType":"YulIdentifier","src":"5732:3:75"},"nativeSrc":"5732:18:75","nodeType":"YulFunctionCall","src":"5732:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"5719:12:75","nodeType":"YulIdentifier","src":"5719:12:75"},"nativeSrc":"5719:32:75","nodeType":"YulFunctionCall","src":"5719:32:75"},"variables":[{"name":"value_1","nativeSrc":"5708:7:75","nodeType":"YulTypedName","src":"5708:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5785:7:75","nodeType":"YulIdentifier","src":"5785:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5760:24:75","nodeType":"YulIdentifier","src":"5760:24:75"},"nativeSrc":"5760:33:75","nodeType":"YulFunctionCall","src":"5760:33:75"},"nativeSrc":"5760:33:75","nodeType":"YulExpressionStatement","src":"5760:33:75"},{"nativeSrc":"5802:17:75","nodeType":"YulAssignment","src":"5802:17:75","value":{"name":"value_1","nativeSrc":"5812:7:75","nodeType":"YulIdentifier","src":"5812:7:75"},"variableNames":[{"name":"value1","nativeSrc":"5802:6:75","nodeType":"YulIdentifier","src":"5802:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nativeSrc":"5458:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5503:9:75","nodeType":"YulTypedName","src":"5503:9:75","type":""},{"name":"dataEnd","nativeSrc":"5514:7:75","nodeType":"YulTypedName","src":"5514:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5526:6:75","nodeType":"YulTypedName","src":"5526:6:75","type":""},{"name":"value1","nativeSrc":"5534:6:75","nodeType":"YulTypedName","src":"5534:6:75","type":""}],"src":"5458:367:75"},{"body":{"nativeSrc":"5927:87:75","nodeType":"YulBlock","src":"5927:87:75","statements":[{"nativeSrc":"5937:26:75","nodeType":"YulAssignment","src":"5937:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"5949:9:75","nodeType":"YulIdentifier","src":"5949:9:75"},{"kind":"number","nativeSrc":"5960:2:75","nodeType":"YulLiteral","src":"5960:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5945:3:75","nodeType":"YulIdentifier","src":"5945:3:75"},"nativeSrc":"5945:18:75","nodeType":"YulFunctionCall","src":"5945:18:75"},"variableNames":[{"name":"tail","nativeSrc":"5937:4:75","nodeType":"YulIdentifier","src":"5937:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5979:9:75","nodeType":"YulIdentifier","src":"5979:9:75"},{"arguments":[{"name":"value0","nativeSrc":"5994:6:75","nodeType":"YulIdentifier","src":"5994:6:75"},{"kind":"number","nativeSrc":"6002:4:75","nodeType":"YulLiteral","src":"6002:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"5990:3:75","nodeType":"YulIdentifier","src":"5990:3:75"},"nativeSrc":"5990:17:75","nodeType":"YulFunctionCall","src":"5990:17:75"}],"functionName":{"name":"mstore","nativeSrc":"5972:6:75","nodeType":"YulIdentifier","src":"5972:6:75"},"nativeSrc":"5972:36:75","nodeType":"YulFunctionCall","src":"5972:36:75"},"nativeSrc":"5972:36:75","nodeType":"YulExpressionStatement","src":"5972:36:75"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"5830:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5896:9:75","nodeType":"YulTypedName","src":"5896:9:75","type":""},{"name":"value0","nativeSrc":"5907:6:75","nodeType":"YulTypedName","src":"5907:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5918:4:75","nodeType":"YulTypedName","src":"5918:4:75","type":""}],"src":"5830:184:75"},{"body":{"nativeSrc":"6120:102:75","nodeType":"YulBlock","src":"6120:102:75","statements":[{"nativeSrc":"6130:26:75","nodeType":"YulAssignment","src":"6130:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6142:9:75","nodeType":"YulIdentifier","src":"6142:9:75"},{"kind":"number","nativeSrc":"6153:2:75","nodeType":"YulLiteral","src":"6153:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6138:3:75","nodeType":"YulIdentifier","src":"6138:3:75"},"nativeSrc":"6138:18:75","nodeType":"YulFunctionCall","src":"6138:18:75"},"variableNames":[{"name":"tail","nativeSrc":"6130:4:75","nodeType":"YulIdentifier","src":"6130:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6172:9:75","nodeType":"YulIdentifier","src":"6172:9:75"},{"arguments":[{"name":"value0","nativeSrc":"6187:6:75","nodeType":"YulIdentifier","src":"6187:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6203:3:75","nodeType":"YulLiteral","src":"6203:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"6208:1:75","nodeType":"YulLiteral","src":"6208:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6199:3:75","nodeType":"YulIdentifier","src":"6199:3:75"},"nativeSrc":"6199:11:75","nodeType":"YulFunctionCall","src":"6199:11:75"},{"kind":"number","nativeSrc":"6212:1:75","nodeType":"YulLiteral","src":"6212:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6195:3:75","nodeType":"YulIdentifier","src":"6195:3:75"},"nativeSrc":"6195:19:75","nodeType":"YulFunctionCall","src":"6195:19:75"}],"functionName":{"name":"and","nativeSrc":"6183:3:75","nodeType":"YulIdentifier","src":"6183:3:75"},"nativeSrc":"6183:32:75","nodeType":"YulFunctionCall","src":"6183:32:75"}],"functionName":{"name":"mstore","nativeSrc":"6165:6:75","nodeType":"YulIdentifier","src":"6165:6:75"},"nativeSrc":"6165:51:75","nodeType":"YulFunctionCall","src":"6165:51:75"},"nativeSrc":"6165:51:75","nodeType":"YulExpressionStatement","src":"6165:51:75"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"6019:203:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6089:9:75","nodeType":"YulTypedName","src":"6089:9:75","type":""},{"name":"value0","nativeSrc":"6100:6:75","nodeType":"YulTypedName","src":"6100:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6111:4:75","nodeType":"YulTypedName","src":"6111:4:75","type":""}],"src":"6019:203:75"},{"body":{"nativeSrc":"6297:177:75","nodeType":"YulBlock","src":"6297:177:75","statements":[{"body":{"nativeSrc":"6343:16:75","nodeType":"YulBlock","src":"6343:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6352:1:75","nodeType":"YulLiteral","src":"6352:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6355:1:75","nodeType":"YulLiteral","src":"6355:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6345:6:75","nodeType":"YulIdentifier","src":"6345:6:75"},"nativeSrc":"6345:12:75","nodeType":"YulFunctionCall","src":"6345:12:75"},"nativeSrc":"6345:12:75","nodeType":"YulExpressionStatement","src":"6345:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6318:7:75","nodeType":"YulIdentifier","src":"6318:7:75"},{"name":"headStart","nativeSrc":"6327:9:75","nodeType":"YulIdentifier","src":"6327:9:75"}],"functionName":{"name":"sub","nativeSrc":"6314:3:75","nodeType":"YulIdentifier","src":"6314:3:75"},"nativeSrc":"6314:23:75","nodeType":"YulFunctionCall","src":"6314:23:75"},{"kind":"number","nativeSrc":"6339:2:75","nodeType":"YulLiteral","src":"6339:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6310:3:75","nodeType":"YulIdentifier","src":"6310:3:75"},"nativeSrc":"6310:32:75","nodeType":"YulFunctionCall","src":"6310:32:75"},"nativeSrc":"6307:52:75","nodeType":"YulIf","src":"6307:52:75"},{"nativeSrc":"6368:36:75","nodeType":"YulVariableDeclaration","src":"6368:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6394:9:75","nodeType":"YulIdentifier","src":"6394:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6381:12:75","nodeType":"YulIdentifier","src":"6381:12:75"},"nativeSrc":"6381:23:75","nodeType":"YulFunctionCall","src":"6381:23:75"},"variables":[{"name":"value","nativeSrc":"6372:5:75","nodeType":"YulTypedName","src":"6372:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6438:5:75","nodeType":"YulIdentifier","src":"6438:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6413:24:75","nodeType":"YulIdentifier","src":"6413:24:75"},"nativeSrc":"6413:31:75","nodeType":"YulFunctionCall","src":"6413:31:75"},"nativeSrc":"6413:31:75","nodeType":"YulExpressionStatement","src":"6413:31:75"},{"nativeSrc":"6453:15:75","nodeType":"YulAssignment","src":"6453:15:75","value":{"name":"value","nativeSrc":"6463:5:75","nodeType":"YulIdentifier","src":"6463:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6453:6:75","nodeType":"YulIdentifier","src":"6453:6:75"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"6227:247:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6263:9:75","nodeType":"YulTypedName","src":"6263:9:75","type":""},{"name":"dataEnd","nativeSrc":"6274:7:75","nodeType":"YulTypedName","src":"6274:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6286:6:75","nodeType":"YulTypedName","src":"6286:6:75","type":""}],"src":"6227:247:75"},{"body":{"nativeSrc":"6598:99:75","nodeType":"YulBlock","src":"6598:99:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6615:9:75","nodeType":"YulIdentifier","src":"6615:9:75"},{"kind":"number","nativeSrc":"6626:2:75","nodeType":"YulLiteral","src":"6626:2:75","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"6608:6:75","nodeType":"YulIdentifier","src":"6608:6:75"},"nativeSrc":"6608:21:75","nodeType":"YulFunctionCall","src":"6608:21:75"},"nativeSrc":"6608:21:75","nodeType":"YulExpressionStatement","src":"6608:21:75"},{"nativeSrc":"6638:53:75","nodeType":"YulAssignment","src":"6638:53:75","value":{"arguments":[{"name":"value0","nativeSrc":"6664:6:75","nodeType":"YulIdentifier","src":"6664:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"6676:9:75","nodeType":"YulIdentifier","src":"6676:9:75"},{"kind":"number","nativeSrc":"6687:2:75","nodeType":"YulLiteral","src":"6687:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6672:3:75","nodeType":"YulIdentifier","src":"6672:3:75"},"nativeSrc":"6672:18:75","nodeType":"YulFunctionCall","src":"6672:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"6646:17:75","nodeType":"YulIdentifier","src":"6646:17:75"},"nativeSrc":"6646:45:75","nodeType":"YulFunctionCall","src":"6646:45:75"},"variableNames":[{"name":"tail","nativeSrc":"6638:4:75","nodeType":"YulIdentifier","src":"6638:4:75"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"6479:218:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6567:9:75","nodeType":"YulTypedName","src":"6567:9:75","type":""},{"name":"value0","nativeSrc":"6578:6:75","nodeType":"YulTypedName","src":"6578:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6589:4:75","nodeType":"YulTypedName","src":"6589:4:75","type":""}],"src":"6479:218:75"},{"body":{"nativeSrc":"6798:360:75","nodeType":"YulBlock","src":"6798:360:75","statements":[{"body":{"nativeSrc":"6844:16:75","nodeType":"YulBlock","src":"6844:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6853:1:75","nodeType":"YulLiteral","src":"6853:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"6856:1:75","nodeType":"YulLiteral","src":"6856:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6846:6:75","nodeType":"YulIdentifier","src":"6846:6:75"},"nativeSrc":"6846:12:75","nodeType":"YulFunctionCall","src":"6846:12:75"},"nativeSrc":"6846:12:75","nodeType":"YulExpressionStatement","src":"6846:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6819:7:75","nodeType":"YulIdentifier","src":"6819:7:75"},{"name":"headStart","nativeSrc":"6828:9:75","nodeType":"YulIdentifier","src":"6828:9:75"}],"functionName":{"name":"sub","nativeSrc":"6815:3:75","nodeType":"YulIdentifier","src":"6815:3:75"},"nativeSrc":"6815:23:75","nodeType":"YulFunctionCall","src":"6815:23:75"},{"kind":"number","nativeSrc":"6840:2:75","nodeType":"YulLiteral","src":"6840:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6811:3:75","nodeType":"YulIdentifier","src":"6811:3:75"},"nativeSrc":"6811:32:75","nodeType":"YulFunctionCall","src":"6811:32:75"},"nativeSrc":"6808:52:75","nodeType":"YulIf","src":"6808:52:75"},{"nativeSrc":"6869:36:75","nodeType":"YulVariableDeclaration","src":"6869:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"6895:9:75","nodeType":"YulIdentifier","src":"6895:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"6882:12:75","nodeType":"YulIdentifier","src":"6882:12:75"},"nativeSrc":"6882:23:75","nodeType":"YulFunctionCall","src":"6882:23:75"},"variables":[{"name":"value","nativeSrc":"6873:5:75","nodeType":"YulTypedName","src":"6873:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6939:5:75","nodeType":"YulIdentifier","src":"6939:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6914:24:75","nodeType":"YulIdentifier","src":"6914:24:75"},"nativeSrc":"6914:31:75","nodeType":"YulFunctionCall","src":"6914:31:75"},"nativeSrc":"6914:31:75","nodeType":"YulExpressionStatement","src":"6914:31:75"},{"nativeSrc":"6954:15:75","nodeType":"YulAssignment","src":"6954:15:75","value":{"name":"value","nativeSrc":"6964:5:75","nodeType":"YulIdentifier","src":"6964:5:75"},"variableNames":[{"name":"value0","nativeSrc":"6954:6:75","nodeType":"YulIdentifier","src":"6954:6:75"}]},{"nativeSrc":"6978:46:75","nodeType":"YulVariableDeclaration","src":"6978:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7009:9:75","nodeType":"YulIdentifier","src":"7009:9:75"},{"kind":"number","nativeSrc":"7020:2:75","nodeType":"YulLiteral","src":"7020:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7005:3:75","nodeType":"YulIdentifier","src":"7005:3:75"},"nativeSrc":"7005:18:75","nodeType":"YulFunctionCall","src":"7005:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"6992:12:75","nodeType":"YulIdentifier","src":"6992:12:75"},"nativeSrc":"6992:32:75","nodeType":"YulFunctionCall","src":"6992:32:75"},"variables":[{"name":"offset","nativeSrc":"6982:6:75","nodeType":"YulTypedName","src":"6982:6:75","type":""}]},{"body":{"nativeSrc":"7067:16:75","nodeType":"YulBlock","src":"7067:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7076:1:75","nodeType":"YulLiteral","src":"7076:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7079:1:75","nodeType":"YulLiteral","src":"7079:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7069:6:75","nodeType":"YulIdentifier","src":"7069:6:75"},"nativeSrc":"7069:12:75","nodeType":"YulFunctionCall","src":"7069:12:75"},"nativeSrc":"7069:12:75","nodeType":"YulExpressionStatement","src":"7069:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7039:6:75","nodeType":"YulIdentifier","src":"7039:6:75"},{"kind":"number","nativeSrc":"7047:18:75","nodeType":"YulLiteral","src":"7047:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7036:2:75","nodeType":"YulIdentifier","src":"7036:2:75"},"nativeSrc":"7036:30:75","nodeType":"YulFunctionCall","src":"7036:30:75"},"nativeSrc":"7033:50:75","nodeType":"YulIf","src":"7033:50:75"},{"nativeSrc":"7092:60:75","nodeType":"YulAssignment","src":"7092:60:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7124:9:75","nodeType":"YulIdentifier","src":"7124:9:75"},{"name":"offset","nativeSrc":"7135:6:75","nodeType":"YulIdentifier","src":"7135:6:75"}],"functionName":{"name":"add","nativeSrc":"7120:3:75","nodeType":"YulIdentifier","src":"7120:3:75"},"nativeSrc":"7120:22:75","nodeType":"YulFunctionCall","src":"7120:22:75"},{"name":"dataEnd","nativeSrc":"7144:7:75","nodeType":"YulIdentifier","src":"7144:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"7102:17:75","nodeType":"YulIdentifier","src":"7102:17:75"},"nativeSrc":"7102:50:75","nodeType":"YulFunctionCall","src":"7102:50:75"},"variableNames":[{"name":"value1","nativeSrc":"7092:6:75","nodeType":"YulIdentifier","src":"7092:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"6702:456:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6756:9:75","nodeType":"YulTypedName","src":"6756:9:75","type":""},{"name":"dataEnd","nativeSrc":"6767:7:75","nodeType":"YulTypedName","src":"6767:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6779:6:75","nodeType":"YulTypedName","src":"6779:6:75","type":""},{"name":"value1","nativeSrc":"6787:6:75","nodeType":"YulTypedName","src":"6787:6:75","type":""}],"src":"6702:456:75"},{"body":{"nativeSrc":"7250:280:75","nodeType":"YulBlock","src":"7250:280:75","statements":[{"body":{"nativeSrc":"7296:16:75","nodeType":"YulBlock","src":"7296:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7305:1:75","nodeType":"YulLiteral","src":"7305:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7308:1:75","nodeType":"YulLiteral","src":"7308:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7298:6:75","nodeType":"YulIdentifier","src":"7298:6:75"},"nativeSrc":"7298:12:75","nodeType":"YulFunctionCall","src":"7298:12:75"},"nativeSrc":"7298:12:75","nodeType":"YulExpressionStatement","src":"7298:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7271:7:75","nodeType":"YulIdentifier","src":"7271:7:75"},{"name":"headStart","nativeSrc":"7280:9:75","nodeType":"YulIdentifier","src":"7280:9:75"}],"functionName":{"name":"sub","nativeSrc":"7267:3:75","nodeType":"YulIdentifier","src":"7267:3:75"},"nativeSrc":"7267:23:75","nodeType":"YulFunctionCall","src":"7267:23:75"},{"kind":"number","nativeSrc":"7292:2:75","nodeType":"YulLiteral","src":"7292:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7263:3:75","nodeType":"YulIdentifier","src":"7263:3:75"},"nativeSrc":"7263:32:75","nodeType":"YulFunctionCall","src":"7263:32:75"},"nativeSrc":"7260:52:75","nodeType":"YulIf","src":"7260:52:75"},{"nativeSrc":"7321:14:75","nodeType":"YulVariableDeclaration","src":"7321:14:75","value":{"kind":"number","nativeSrc":"7334:1:75","nodeType":"YulLiteral","src":"7334:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7325:5:75","nodeType":"YulTypedName","src":"7325:5:75","type":""}]},{"nativeSrc":"7344:32:75","nodeType":"YulAssignment","src":"7344:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7366:9:75","nodeType":"YulIdentifier","src":"7366:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7353:12:75","nodeType":"YulIdentifier","src":"7353:12:75"},"nativeSrc":"7353:23:75","nodeType":"YulFunctionCall","src":"7353:23:75"},"variableNames":[{"name":"value","nativeSrc":"7344:5:75","nodeType":"YulIdentifier","src":"7344:5:75"}]},{"nativeSrc":"7385:15:75","nodeType":"YulAssignment","src":"7385:15:75","value":{"name":"value","nativeSrc":"7395:5:75","nodeType":"YulIdentifier","src":"7395:5:75"},"variableNames":[{"name":"value0","nativeSrc":"7385:6:75","nodeType":"YulIdentifier","src":"7385:6:75"}]},{"nativeSrc":"7409:47:75","nodeType":"YulVariableDeclaration","src":"7409:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7441:9:75","nodeType":"YulIdentifier","src":"7441:9:75"},{"kind":"number","nativeSrc":"7452:2:75","nodeType":"YulLiteral","src":"7452:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7437:3:75","nodeType":"YulIdentifier","src":"7437:3:75"},"nativeSrc":"7437:18:75","nodeType":"YulFunctionCall","src":"7437:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"7424:12:75","nodeType":"YulIdentifier","src":"7424:12:75"},"nativeSrc":"7424:32:75","nodeType":"YulFunctionCall","src":"7424:32:75"},"variables":[{"name":"value_1","nativeSrc":"7413:7:75","nodeType":"YulTypedName","src":"7413:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"7490:7:75","nodeType":"YulIdentifier","src":"7490:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7465:24:75","nodeType":"YulIdentifier","src":"7465:24:75"},"nativeSrc":"7465:33:75","nodeType":"YulFunctionCall","src":"7465:33:75"},"nativeSrc":"7465:33:75","nodeType":"YulExpressionStatement","src":"7465:33:75"},{"nativeSrc":"7507:17:75","nodeType":"YulAssignment","src":"7507:17:75","value":{"name":"value_1","nativeSrc":"7517:7:75","nodeType":"YulIdentifier","src":"7517:7:75"},"variableNames":[{"name":"value1","nativeSrc":"7507:6:75","nodeType":"YulIdentifier","src":"7507:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_address","nativeSrc":"7163:367:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7208:9:75","nodeType":"YulTypedName","src":"7208:9:75","type":""},{"name":"dataEnd","nativeSrc":"7219:7:75","nodeType":"YulTypedName","src":"7219:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7231:6:75","nodeType":"YulTypedName","src":"7231:6:75","type":""},{"name":"value1","nativeSrc":"7239:6:75","nodeType":"YulTypedName","src":"7239:6:75","type":""}],"src":"7163:367:75"},{"body":{"nativeSrc":"7661:102:75","nodeType":"YulBlock","src":"7661:102:75","statements":[{"nativeSrc":"7671:26:75","nodeType":"YulAssignment","src":"7671:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7683:9:75","nodeType":"YulIdentifier","src":"7683:9:75"},{"kind":"number","nativeSrc":"7694:2:75","nodeType":"YulLiteral","src":"7694:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7679:3:75","nodeType":"YulIdentifier","src":"7679:3:75"},"nativeSrc":"7679:18:75","nodeType":"YulFunctionCall","src":"7679:18:75"},"variableNames":[{"name":"tail","nativeSrc":"7671:4:75","nodeType":"YulIdentifier","src":"7671:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7713:9:75","nodeType":"YulIdentifier","src":"7713:9:75"},{"arguments":[{"name":"value0","nativeSrc":"7728:6:75","nodeType":"YulIdentifier","src":"7728:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7744:3:75","nodeType":"YulLiteral","src":"7744:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"7749:1:75","nodeType":"YulLiteral","src":"7749:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"7740:3:75","nodeType":"YulIdentifier","src":"7740:3:75"},"nativeSrc":"7740:11:75","nodeType":"YulFunctionCall","src":"7740:11:75"},{"kind":"number","nativeSrc":"7753:1:75","nodeType":"YulLiteral","src":"7753:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"7736:3:75","nodeType":"YulIdentifier","src":"7736:3:75"},"nativeSrc":"7736:19:75","nodeType":"YulFunctionCall","src":"7736:19:75"}],"functionName":{"name":"and","nativeSrc":"7724:3:75","nodeType":"YulIdentifier","src":"7724:3:75"},"nativeSrc":"7724:32:75","nodeType":"YulFunctionCall","src":"7724:32:75"}],"functionName":{"name":"mstore","nativeSrc":"7706:6:75","nodeType":"YulIdentifier","src":"7706:6:75"},"nativeSrc":"7706:51:75","nodeType":"YulFunctionCall","src":"7706:51:75"},"nativeSrc":"7706:51:75","nodeType":"YulExpressionStatement","src":"7706:51:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374__to_t_address__fromStack_reversed","nativeSrc":"7535:228:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7630:9:75","nodeType":"YulTypedName","src":"7630:9:75","type":""},{"name":"value0","nativeSrc":"7641:6:75","nodeType":"YulTypedName","src":"7641:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7652:4:75","nodeType":"YulTypedName","src":"7652:4:75","type":""}],"src":"7535:228:75"},{"body":{"nativeSrc":"7872:404:75","nodeType":"YulBlock","src":"7872:404:75","statements":[{"body":{"nativeSrc":"7918:16:75","nodeType":"YulBlock","src":"7918:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7927:1:75","nodeType":"YulLiteral","src":"7927:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"7930:1:75","nodeType":"YulLiteral","src":"7930:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7920:6:75","nodeType":"YulIdentifier","src":"7920:6:75"},"nativeSrc":"7920:12:75","nodeType":"YulFunctionCall","src":"7920:12:75"},"nativeSrc":"7920:12:75","nodeType":"YulExpressionStatement","src":"7920:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7893:7:75","nodeType":"YulIdentifier","src":"7893:7:75"},{"name":"headStart","nativeSrc":"7902:9:75","nodeType":"YulIdentifier","src":"7902:9:75"}],"functionName":{"name":"sub","nativeSrc":"7889:3:75","nodeType":"YulIdentifier","src":"7889:3:75"},"nativeSrc":"7889:23:75","nodeType":"YulFunctionCall","src":"7889:23:75"},{"kind":"number","nativeSrc":"7914:2:75","nodeType":"YulLiteral","src":"7914:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"7885:3:75","nodeType":"YulIdentifier","src":"7885:3:75"},"nativeSrc":"7885:32:75","nodeType":"YulFunctionCall","src":"7885:32:75"},"nativeSrc":"7882:52:75","nodeType":"YulIf","src":"7882:52:75"},{"nativeSrc":"7943:14:75","nodeType":"YulVariableDeclaration","src":"7943:14:75","value":{"kind":"number","nativeSrc":"7956:1:75","nodeType":"YulLiteral","src":"7956:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7947:5:75","nodeType":"YulTypedName","src":"7947:5:75","type":""}]},{"nativeSrc":"7966:32:75","nodeType":"YulAssignment","src":"7966:32:75","value":{"arguments":[{"name":"headStart","nativeSrc":"7988:9:75","nodeType":"YulIdentifier","src":"7988:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"7975:12:75","nodeType":"YulIdentifier","src":"7975:12:75"},"nativeSrc":"7975:23:75","nodeType":"YulFunctionCall","src":"7975:23:75"},"variableNames":[{"name":"value","nativeSrc":"7966:5:75","nodeType":"YulIdentifier","src":"7966:5:75"}]},{"nativeSrc":"8007:15:75","nodeType":"YulAssignment","src":"8007:15:75","value":{"name":"value","nativeSrc":"8017:5:75","nodeType":"YulIdentifier","src":"8017:5:75"},"variableNames":[{"name":"value0","nativeSrc":"8007:6:75","nodeType":"YulIdentifier","src":"8007:6:75"}]},{"nativeSrc":"8031:47:75","nodeType":"YulVariableDeclaration","src":"8031:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8063:9:75","nodeType":"YulIdentifier","src":"8063:9:75"},{"kind":"number","nativeSrc":"8074:2:75","nodeType":"YulLiteral","src":"8074:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8059:3:75","nodeType":"YulIdentifier","src":"8059:3:75"},"nativeSrc":"8059:18:75","nodeType":"YulFunctionCall","src":"8059:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8046:12:75","nodeType":"YulIdentifier","src":"8046:12:75"},"nativeSrc":"8046:32:75","nodeType":"YulFunctionCall","src":"8046:32:75"},"variables":[{"name":"value_1","nativeSrc":"8035:7:75","nodeType":"YulTypedName","src":"8035:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"8112:7:75","nodeType":"YulIdentifier","src":"8112:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8087:24:75","nodeType":"YulIdentifier","src":"8087:24:75"},"nativeSrc":"8087:33:75","nodeType":"YulFunctionCall","src":"8087:33:75"},"nativeSrc":"8087:33:75","nodeType":"YulExpressionStatement","src":"8087:33:75"},{"nativeSrc":"8129:17:75","nodeType":"YulAssignment","src":"8129:17:75","value":{"name":"value_1","nativeSrc":"8139:7:75","nodeType":"YulIdentifier","src":"8139:7:75"},"variableNames":[{"name":"value1","nativeSrc":"8129:6:75","nodeType":"YulIdentifier","src":"8129:6:75"}]},{"nativeSrc":"8155:47:75","nodeType":"YulVariableDeclaration","src":"8155:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8187:9:75","nodeType":"YulIdentifier","src":"8187:9:75"},{"kind":"number","nativeSrc":"8198:2:75","nodeType":"YulLiteral","src":"8198:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8183:3:75","nodeType":"YulIdentifier","src":"8183:3:75"},"nativeSrc":"8183:18:75","nodeType":"YulFunctionCall","src":"8183:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8170:12:75","nodeType":"YulIdentifier","src":"8170:12:75"},"nativeSrc":"8170:32:75","nodeType":"YulFunctionCall","src":"8170:32:75"},"variables":[{"name":"value_2","nativeSrc":"8159:7:75","nodeType":"YulTypedName","src":"8159:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_2","nativeSrc":"8236:7:75","nodeType":"YulIdentifier","src":"8236:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"8211:24:75","nodeType":"YulIdentifier","src":"8211:24:75"},"nativeSrc":"8211:33:75","nodeType":"YulFunctionCall","src":"8211:33:75"},"nativeSrc":"8211:33:75","nodeType":"YulExpressionStatement","src":"8211:33:75"},{"nativeSrc":"8253:17:75","nodeType":"YulAssignment","src":"8253:17:75","value":{"name":"value_2","nativeSrc":"8263:7:75","nodeType":"YulIdentifier","src":"8263:7:75"},"variableNames":[{"name":"value2","nativeSrc":"8253:6:75","nodeType":"YulIdentifier","src":"8253:6:75"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_address","nativeSrc":"7768:508:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7822:9:75","nodeType":"YulTypedName","src":"7822:9:75","type":""},{"name":"dataEnd","nativeSrc":"7833:7:75","nodeType":"YulTypedName","src":"7833:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7845:6:75","nodeType":"YulTypedName","src":"7845:6:75","type":""},{"name":"value1","nativeSrc":"7853:6:75","nodeType":"YulTypedName","src":"7853:6:75","type":""},{"name":"value2","nativeSrc":"7861:6:75","nodeType":"YulTypedName","src":"7861:6:75","type":""}],"src":"7768:508:75"},{"body":{"nativeSrc":"8375:384:75","nodeType":"YulBlock","src":"8375:384:75","statements":[{"body":{"nativeSrc":"8421:16:75","nodeType":"YulBlock","src":"8421:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8430:1:75","nodeType":"YulLiteral","src":"8430:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8433:1:75","nodeType":"YulLiteral","src":"8433:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8423:6:75","nodeType":"YulIdentifier","src":"8423:6:75"},"nativeSrc":"8423:12:75","nodeType":"YulFunctionCall","src":"8423:12:75"},"nativeSrc":"8423:12:75","nodeType":"YulExpressionStatement","src":"8423:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8396:7:75","nodeType":"YulIdentifier","src":"8396:7:75"},{"name":"headStart","nativeSrc":"8405:9:75","nodeType":"YulIdentifier","src":"8405:9:75"}],"functionName":{"name":"sub","nativeSrc":"8392:3:75","nodeType":"YulIdentifier","src":"8392:3:75"},"nativeSrc":"8392:23:75","nodeType":"YulFunctionCall","src":"8392:23:75"},{"kind":"number","nativeSrc":"8417:2:75","nodeType":"YulLiteral","src":"8417:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8388:3:75","nodeType":"YulIdentifier","src":"8388:3:75"},"nativeSrc":"8388:32:75","nodeType":"YulFunctionCall","src":"8388:32:75"},"nativeSrc":"8385:52:75","nodeType":"YulIf","src":"8385:52:75"},{"nativeSrc":"8446:36:75","nodeType":"YulVariableDeclaration","src":"8446:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8472:9:75","nodeType":"YulIdentifier","src":"8472:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"8459:12:75","nodeType":"YulIdentifier","src":"8459:12:75"},"nativeSrc":"8459:23:75","nodeType":"YulFunctionCall","src":"8459:23:75"},"variables":[{"name":"value","nativeSrc":"8450:5:75","nodeType":"YulTypedName","src":"8450:5:75","type":""}]},{"body":{"nativeSrc":"8530:16:75","nodeType":"YulBlock","src":"8530:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8539:1:75","nodeType":"YulLiteral","src":"8539:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8542:1:75","nodeType":"YulLiteral","src":"8542:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8532:6:75","nodeType":"YulIdentifier","src":"8532:6:75"},"nativeSrc":"8532:12:75","nodeType":"YulFunctionCall","src":"8532:12:75"},"nativeSrc":"8532:12:75","nodeType":"YulExpressionStatement","src":"8532:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8504:5:75","nodeType":"YulIdentifier","src":"8504:5:75"},{"arguments":[{"name":"value","nativeSrc":"8515:5:75","nodeType":"YulIdentifier","src":"8515:5:75"},{"kind":"number","nativeSrc":"8522:4:75","nodeType":"YulLiteral","src":"8522:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"8511:3:75","nodeType":"YulIdentifier","src":"8511:3:75"},"nativeSrc":"8511:16:75","nodeType":"YulFunctionCall","src":"8511:16:75"}],"functionName":{"name":"eq","nativeSrc":"8501:2:75","nodeType":"YulIdentifier","src":"8501:2:75"},"nativeSrc":"8501:27:75","nodeType":"YulFunctionCall","src":"8501:27:75"}],"functionName":{"name":"iszero","nativeSrc":"8494:6:75","nodeType":"YulIdentifier","src":"8494:6:75"},"nativeSrc":"8494:35:75","nodeType":"YulFunctionCall","src":"8494:35:75"},"nativeSrc":"8491:55:75","nodeType":"YulIf","src":"8491:55:75"},{"nativeSrc":"8555:15:75","nodeType":"YulAssignment","src":"8555:15:75","value":{"name":"value","nativeSrc":"8565:5:75","nodeType":"YulIdentifier","src":"8565:5:75"},"variableNames":[{"name":"value0","nativeSrc":"8555:6:75","nodeType":"YulIdentifier","src":"8555:6:75"}]},{"nativeSrc":"8579:46:75","nodeType":"YulVariableDeclaration","src":"8579:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8610:9:75","nodeType":"YulIdentifier","src":"8610:9:75"},{"kind":"number","nativeSrc":"8621:2:75","nodeType":"YulLiteral","src":"8621:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8606:3:75","nodeType":"YulIdentifier","src":"8606:3:75"},"nativeSrc":"8606:18:75","nodeType":"YulFunctionCall","src":"8606:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"8593:12:75","nodeType":"YulIdentifier","src":"8593:12:75"},"nativeSrc":"8593:32:75","nodeType":"YulFunctionCall","src":"8593:32:75"},"variables":[{"name":"offset","nativeSrc":"8583:6:75","nodeType":"YulTypedName","src":"8583:6:75","type":""}]},{"body":{"nativeSrc":"8668:16:75","nodeType":"YulBlock","src":"8668:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8677:1:75","nodeType":"YulLiteral","src":"8677:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8680:1:75","nodeType":"YulLiteral","src":"8680:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8670:6:75","nodeType":"YulIdentifier","src":"8670:6:75"},"nativeSrc":"8670:12:75","nodeType":"YulFunctionCall","src":"8670:12:75"},"nativeSrc":"8670:12:75","nodeType":"YulExpressionStatement","src":"8670:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8640:6:75","nodeType":"YulIdentifier","src":"8640:6:75"},{"kind":"number","nativeSrc":"8648:18:75","nodeType":"YulLiteral","src":"8648:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8637:2:75","nodeType":"YulIdentifier","src":"8637:2:75"},"nativeSrc":"8637:30:75","nodeType":"YulFunctionCall","src":"8637:30:75"},"nativeSrc":"8634:50:75","nodeType":"YulIf","src":"8634:50:75"},{"nativeSrc":"8693:60:75","nodeType":"YulAssignment","src":"8693:60:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8725:9:75","nodeType":"YulIdentifier","src":"8725:9:75"},{"name":"offset","nativeSrc":"8736:6:75","nodeType":"YulIdentifier","src":"8736:6:75"}],"functionName":{"name":"add","nativeSrc":"8721:3:75","nodeType":"YulIdentifier","src":"8721:3:75"},"nativeSrc":"8721:22:75","nodeType":"YulFunctionCall","src":"8721:22:75"},{"name":"dataEnd","nativeSrc":"8745:7:75","nodeType":"YulIdentifier","src":"8745:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"8703:17:75","nodeType":"YulIdentifier","src":"8703:17:75"},"nativeSrc":"8703:50:75","nodeType":"YulFunctionCall","src":"8703:50:75"},"variableNames":[{"name":"value1","nativeSrc":"8693:6:75","nodeType":"YulIdentifier","src":"8693:6:75"}]}]},"name":"abi_decode_tuple_t_uint8t_bytes_memory_ptr","nativeSrc":"8281:478:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8333:9:75","nodeType":"YulTypedName","src":"8333:9:75","type":""},{"name":"dataEnd","nativeSrc":"8344:7:75","nodeType":"YulTypedName","src":"8344:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8356:6:75","nodeType":"YulTypedName","src":"8356:6:75","type":""},{"name":"value1","nativeSrc":"8364:6:75","nodeType":"YulTypedName","src":"8364:6:75","type":""}],"src":"8281:478:75"},{"body":{"nativeSrc":"8899:515:75","nodeType":"YulBlock","src":"8899:515:75","statements":[{"body":{"nativeSrc":"8945:16:75","nodeType":"YulBlock","src":"8945:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8954:1:75","nodeType":"YulLiteral","src":"8954:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"8957:1:75","nodeType":"YulLiteral","src":"8957:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8947:6:75","nodeType":"YulIdentifier","src":"8947:6:75"},"nativeSrc":"8947:12:75","nodeType":"YulFunctionCall","src":"8947:12:75"},"nativeSrc":"8947:12:75","nodeType":"YulExpressionStatement","src":"8947:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8920:7:75","nodeType":"YulIdentifier","src":"8920:7:75"},{"name":"headStart","nativeSrc":"8929:9:75","nodeType":"YulIdentifier","src":"8929:9:75"}],"functionName":{"name":"sub","nativeSrc":"8916:3:75","nodeType":"YulIdentifier","src":"8916:3:75"},"nativeSrc":"8916:23:75","nodeType":"YulFunctionCall","src":"8916:23:75"},{"kind":"number","nativeSrc":"8941:2:75","nodeType":"YulLiteral","src":"8941:2:75","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"8912:3:75","nodeType":"YulIdentifier","src":"8912:3:75"},"nativeSrc":"8912:32:75","nodeType":"YulFunctionCall","src":"8912:32:75"},"nativeSrc":"8909:52:75","nodeType":"YulIf","src":"8909:52:75"},{"nativeSrc":"8970:36:75","nodeType":"YulVariableDeclaration","src":"8970:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"8996:9:75","nodeType":"YulIdentifier","src":"8996:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"8983:12:75","nodeType":"YulIdentifier","src":"8983:12:75"},"nativeSrc":"8983:23:75","nodeType":"YulFunctionCall","src":"8983:23:75"},"variables":[{"name":"value","nativeSrc":"8974:5:75","nodeType":"YulTypedName","src":"8974:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9040:5:75","nodeType":"YulIdentifier","src":"9040:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9015:24:75","nodeType":"YulIdentifier","src":"9015:24:75"},"nativeSrc":"9015:31:75","nodeType":"YulFunctionCall","src":"9015:31:75"},"nativeSrc":"9015:31:75","nodeType":"YulExpressionStatement","src":"9015:31:75"},{"nativeSrc":"9055:15:75","nodeType":"YulAssignment","src":"9055:15:75","value":{"name":"value","nativeSrc":"9065:5:75","nodeType":"YulIdentifier","src":"9065:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9055:6:75","nodeType":"YulIdentifier","src":"9055:6:75"}]},{"nativeSrc":"9079:46:75","nodeType":"YulVariableDeclaration","src":"9079:46:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9110:9:75","nodeType":"YulIdentifier","src":"9110:9:75"},{"kind":"number","nativeSrc":"9121:2:75","nodeType":"YulLiteral","src":"9121:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9106:3:75","nodeType":"YulIdentifier","src":"9106:3:75"},"nativeSrc":"9106:18:75","nodeType":"YulFunctionCall","src":"9106:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9093:12:75","nodeType":"YulIdentifier","src":"9093:12:75"},"nativeSrc":"9093:32:75","nodeType":"YulFunctionCall","src":"9093:32:75"},"variables":[{"name":"offset","nativeSrc":"9083:6:75","nodeType":"YulTypedName","src":"9083:6:75","type":""}]},{"body":{"nativeSrc":"9168:16:75","nodeType":"YulBlock","src":"9168:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9177:1:75","nodeType":"YulLiteral","src":"9177:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9180:1:75","nodeType":"YulLiteral","src":"9180:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9170:6:75","nodeType":"YulIdentifier","src":"9170:6:75"},"nativeSrc":"9170:12:75","nodeType":"YulFunctionCall","src":"9170:12:75"},"nativeSrc":"9170:12:75","nodeType":"YulExpressionStatement","src":"9170:12:75"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9140:6:75","nodeType":"YulIdentifier","src":"9140:6:75"},{"kind":"number","nativeSrc":"9148:18:75","nodeType":"YulLiteral","src":"9148:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9137:2:75","nodeType":"YulIdentifier","src":"9137:2:75"},"nativeSrc":"9137:30:75","nodeType":"YulFunctionCall","src":"9137:30:75"},"nativeSrc":"9134:50:75","nodeType":"YulIf","src":"9134:50:75"},{"nativeSrc":"9193:60:75","nodeType":"YulAssignment","src":"9193:60:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9225:9:75","nodeType":"YulIdentifier","src":"9225:9:75"},{"name":"offset","nativeSrc":"9236:6:75","nodeType":"YulIdentifier","src":"9236:6:75"}],"functionName":{"name":"add","nativeSrc":"9221:3:75","nodeType":"YulIdentifier","src":"9221:3:75"},"nativeSrc":"9221:22:75","nodeType":"YulFunctionCall","src":"9221:22:75"},{"name":"dataEnd","nativeSrc":"9245:7:75","nodeType":"YulIdentifier","src":"9245:7:75"}],"functionName":{"name":"abi_decode_string","nativeSrc":"9203:17:75","nodeType":"YulIdentifier","src":"9203:17:75"},"nativeSrc":"9203:50:75","nodeType":"YulFunctionCall","src":"9203:50:75"},"variableNames":[{"name":"value1","nativeSrc":"9193:6:75","nodeType":"YulIdentifier","src":"9193:6:75"}]},{"nativeSrc":"9262:47:75","nodeType":"YulVariableDeclaration","src":"9262:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9294:9:75","nodeType":"YulIdentifier","src":"9294:9:75"},{"kind":"number","nativeSrc":"9305:2:75","nodeType":"YulLiteral","src":"9305:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9290:3:75","nodeType":"YulIdentifier","src":"9290:3:75"},"nativeSrc":"9290:18:75","nodeType":"YulFunctionCall","src":"9290:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9277:12:75","nodeType":"YulIdentifier","src":"9277:12:75"},"nativeSrc":"9277:32:75","nodeType":"YulFunctionCall","src":"9277:32:75"},"variables":[{"name":"value_1","nativeSrc":"9266:7:75","nodeType":"YulTypedName","src":"9266:7:75","type":""}]},{"body":{"nativeSrc":"9366:16:75","nodeType":"YulBlock","src":"9366:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9375:1:75","nodeType":"YulLiteral","src":"9375:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9378:1:75","nodeType":"YulLiteral","src":"9378:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9368:6:75","nodeType":"YulIdentifier","src":"9368:6:75"},"nativeSrc":"9368:12:75","nodeType":"YulFunctionCall","src":"9368:12:75"},"nativeSrc":"9368:12:75","nodeType":"YulExpressionStatement","src":"9368:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9331:7:75","nodeType":"YulIdentifier","src":"9331:7:75"},{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"9354:7:75","nodeType":"YulIdentifier","src":"9354:7:75"}],"functionName":{"name":"iszero","nativeSrc":"9347:6:75","nodeType":"YulIdentifier","src":"9347:6:75"},"nativeSrc":"9347:15:75","nodeType":"YulFunctionCall","src":"9347:15:75"}],"functionName":{"name":"iszero","nativeSrc":"9340:6:75","nodeType":"YulIdentifier","src":"9340:6:75"},"nativeSrc":"9340:23:75","nodeType":"YulFunctionCall","src":"9340:23:75"}],"functionName":{"name":"eq","nativeSrc":"9328:2:75","nodeType":"YulIdentifier","src":"9328:2:75"},"nativeSrc":"9328:36:75","nodeType":"YulFunctionCall","src":"9328:36:75"}],"functionName":{"name":"iszero","nativeSrc":"9321:6:75","nodeType":"YulIdentifier","src":"9321:6:75"},"nativeSrc":"9321:44:75","nodeType":"YulFunctionCall","src":"9321:44:75"},"nativeSrc":"9318:64:75","nodeType":"YulIf","src":"9318:64:75"},{"nativeSrc":"9391:17:75","nodeType":"YulAssignment","src":"9391:17:75","value":{"name":"value_1","nativeSrc":"9401:7:75","nodeType":"YulIdentifier","src":"9401:7:75"},"variableNames":[{"name":"value2","nativeSrc":"9391:6:75","nodeType":"YulIdentifier","src":"9391:6:75"}]}]},"name":"abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_bytes_memory_ptrt_bool","nativeSrc":"8764:650:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8849:9:75","nodeType":"YulTypedName","src":"8849:9:75","type":""},{"name":"dataEnd","nativeSrc":"8860:7:75","nodeType":"YulTypedName","src":"8860:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8872:6:75","nodeType":"YulTypedName","src":"8872:6:75","type":""},{"name":"value1","nativeSrc":"8880:6:75","nodeType":"YulTypedName","src":"8880:6:75","type":""},{"name":"value2","nativeSrc":"8888:6:75","nodeType":"YulTypedName","src":"8888:6:75","type":""}],"src":"8764:650:75"},{"body":{"nativeSrc":"9506:301:75","nodeType":"YulBlock","src":"9506:301:75","statements":[{"body":{"nativeSrc":"9552:16:75","nodeType":"YulBlock","src":"9552:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9561:1:75","nodeType":"YulLiteral","src":"9561:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"9564:1:75","nodeType":"YulLiteral","src":"9564:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9554:6:75","nodeType":"YulIdentifier","src":"9554:6:75"},"nativeSrc":"9554:12:75","nodeType":"YulFunctionCall","src":"9554:12:75"},"nativeSrc":"9554:12:75","nodeType":"YulExpressionStatement","src":"9554:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9527:7:75","nodeType":"YulIdentifier","src":"9527:7:75"},{"name":"headStart","nativeSrc":"9536:9:75","nodeType":"YulIdentifier","src":"9536:9:75"}],"functionName":{"name":"sub","nativeSrc":"9523:3:75","nodeType":"YulIdentifier","src":"9523:3:75"},"nativeSrc":"9523:23:75","nodeType":"YulFunctionCall","src":"9523:23:75"},{"kind":"number","nativeSrc":"9548:2:75","nodeType":"YulLiteral","src":"9548:2:75","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9519:3:75","nodeType":"YulIdentifier","src":"9519:3:75"},"nativeSrc":"9519:32:75","nodeType":"YulFunctionCall","src":"9519:32:75"},"nativeSrc":"9516:52:75","nodeType":"YulIf","src":"9516:52:75"},{"nativeSrc":"9577:36:75","nodeType":"YulVariableDeclaration","src":"9577:36:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9603:9:75","nodeType":"YulIdentifier","src":"9603:9:75"}],"functionName":{"name":"calldataload","nativeSrc":"9590:12:75","nodeType":"YulIdentifier","src":"9590:12:75"},"nativeSrc":"9590:23:75","nodeType":"YulFunctionCall","src":"9590:23:75"},"variables":[{"name":"value","nativeSrc":"9581:5:75","nodeType":"YulTypedName","src":"9581:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9647:5:75","nodeType":"YulIdentifier","src":"9647:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9622:24:75","nodeType":"YulIdentifier","src":"9622:24:75"},"nativeSrc":"9622:31:75","nodeType":"YulFunctionCall","src":"9622:31:75"},"nativeSrc":"9622:31:75","nodeType":"YulExpressionStatement","src":"9622:31:75"},{"nativeSrc":"9662:15:75","nodeType":"YulAssignment","src":"9662:15:75","value":{"name":"value","nativeSrc":"9672:5:75","nodeType":"YulIdentifier","src":"9672:5:75"},"variableNames":[{"name":"value0","nativeSrc":"9662:6:75","nodeType":"YulIdentifier","src":"9662:6:75"}]},{"nativeSrc":"9686:47:75","nodeType":"YulVariableDeclaration","src":"9686:47:75","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9718:9:75","nodeType":"YulIdentifier","src":"9718:9:75"},{"kind":"number","nativeSrc":"9729:2:75","nodeType":"YulLiteral","src":"9729:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9714:3:75","nodeType":"YulIdentifier","src":"9714:3:75"},"nativeSrc":"9714:18:75","nodeType":"YulFunctionCall","src":"9714:18:75"}],"functionName":{"name":"calldataload","nativeSrc":"9701:12:75","nodeType":"YulIdentifier","src":"9701:12:75"},"nativeSrc":"9701:32:75","nodeType":"YulFunctionCall","src":"9701:32:75"},"variables":[{"name":"value_1","nativeSrc":"9690:7:75","nodeType":"YulTypedName","src":"9690:7:75","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"9767:7:75","nodeType":"YulIdentifier","src":"9767:7:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9742:24:75","nodeType":"YulIdentifier","src":"9742:24:75"},"nativeSrc":"9742:33:75","nodeType":"YulFunctionCall","src":"9742:33:75"},"nativeSrc":"9742:33:75","nodeType":"YulExpressionStatement","src":"9742:33:75"},{"nativeSrc":"9784:17:75","nodeType":"YulAssignment","src":"9784:17:75","value":{"name":"value_1","nativeSrc":"9794:7:75","nodeType":"YulIdentifier","src":"9794:7:75"},"variableNames":[{"name":"value1","nativeSrc":"9784:6:75","nodeType":"YulIdentifier","src":"9784:6:75"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"9419:388:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9464:9:75","nodeType":"YulTypedName","src":"9464:9:75","type":""},{"name":"dataEnd","nativeSrc":"9475:7:75","nodeType":"YulTypedName","src":"9475:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9487:6:75","nodeType":"YulTypedName","src":"9487:6:75","type":""},{"name":"value1","nativeSrc":"9495:6:75","nodeType":"YulTypedName","src":"9495:6:75","type":""}],"src":"9419:388:75"},{"body":{"nativeSrc":"9920:101:75","nodeType":"YulBlock","src":"9920:101:75","statements":[{"nativeSrc":"9930:26:75","nodeType":"YulAssignment","src":"9930:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"9942:9:75","nodeType":"YulIdentifier","src":"9942:9:75"},{"kind":"number","nativeSrc":"9953:2:75","nodeType":"YulLiteral","src":"9953:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9938:3:75","nodeType":"YulIdentifier","src":"9938:3:75"},"nativeSrc":"9938:18:75","nodeType":"YulFunctionCall","src":"9938:18:75"},"variableNames":[{"name":"tail","nativeSrc":"9930:4:75","nodeType":"YulIdentifier","src":"9930:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9972:9:75","nodeType":"YulIdentifier","src":"9972:9:75"},{"arguments":[{"name":"value0","nativeSrc":"9987:6:75","nodeType":"YulIdentifier","src":"9987:6:75"},{"kind":"number","nativeSrc":"9995:18:75","nodeType":"YulLiteral","src":"9995:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9983:3:75","nodeType":"YulIdentifier","src":"9983:3:75"},"nativeSrc":"9983:31:75","nodeType":"YulFunctionCall","src":"9983:31:75"}],"functionName":{"name":"mstore","nativeSrc":"9965:6:75","nodeType":"YulIdentifier","src":"9965:6:75"},"nativeSrc":"9965:50:75","nodeType":"YulFunctionCall","src":"9965:50:75"},"nativeSrc":"9965:50:75","nodeType":"YulExpressionStatement","src":"9965:50:75"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"9812:209:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9889:9:75","nodeType":"YulTypedName","src":"9889:9:75","type":""},{"name":"value0","nativeSrc":"9900:6:75","nodeType":"YulTypedName","src":"9900:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9911:4:75","nodeType":"YulTypedName","src":"9911:4:75","type":""}],"src":"9812:209:75"},{"body":{"nativeSrc":"10081:325:75","nodeType":"YulBlock","src":"10081:325:75","statements":[{"nativeSrc":"10091:22:75","nodeType":"YulAssignment","src":"10091:22:75","value":{"arguments":[{"kind":"number","nativeSrc":"10105:1:75","nodeType":"YulLiteral","src":"10105:1:75","type":"","value":"1"},{"name":"data","nativeSrc":"10108:4:75","nodeType":"YulIdentifier","src":"10108:4:75"}],"functionName":{"name":"shr","nativeSrc":"10101:3:75","nodeType":"YulIdentifier","src":"10101:3:75"},"nativeSrc":"10101:12:75","nodeType":"YulFunctionCall","src":"10101:12:75"},"variableNames":[{"name":"length","nativeSrc":"10091:6:75","nodeType":"YulIdentifier","src":"10091:6:75"}]},{"nativeSrc":"10122:38:75","nodeType":"YulVariableDeclaration","src":"10122:38:75","value":{"arguments":[{"name":"data","nativeSrc":"10152:4:75","nodeType":"YulIdentifier","src":"10152:4:75"},{"kind":"number","nativeSrc":"10158:1:75","nodeType":"YulLiteral","src":"10158:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"10148:3:75","nodeType":"YulIdentifier","src":"10148:3:75"},"nativeSrc":"10148:12:75","nodeType":"YulFunctionCall","src":"10148:12:75"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"10126:18:75","nodeType":"YulTypedName","src":"10126:18:75","type":""}]},{"body":{"nativeSrc":"10199:31:75","nodeType":"YulBlock","src":"10199:31:75","statements":[{"nativeSrc":"10201:27:75","nodeType":"YulAssignment","src":"10201:27:75","value":{"arguments":[{"name":"length","nativeSrc":"10215:6:75","nodeType":"YulIdentifier","src":"10215:6:75"},{"kind":"number","nativeSrc":"10223:4:75","nodeType":"YulLiteral","src":"10223:4:75","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"10211:3:75","nodeType":"YulIdentifier","src":"10211:3:75"},"nativeSrc":"10211:17:75","nodeType":"YulFunctionCall","src":"10211:17:75"},"variableNames":[{"name":"length","nativeSrc":"10201:6:75","nodeType":"YulIdentifier","src":"10201:6:75"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"10179:18:75","nodeType":"YulIdentifier","src":"10179:18:75"}],"functionName":{"name":"iszero","nativeSrc":"10172:6:75","nodeType":"YulIdentifier","src":"10172:6:75"},"nativeSrc":"10172:26:75","nodeType":"YulFunctionCall","src":"10172:26:75"},"nativeSrc":"10169:61:75","nodeType":"YulIf","src":"10169:61:75"},{"body":{"nativeSrc":"10289:111:75","nodeType":"YulBlock","src":"10289:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10310:1:75","nodeType":"YulLiteral","src":"10310:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10317:3:75","nodeType":"YulLiteral","src":"10317:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10322:10:75","nodeType":"YulLiteral","src":"10322:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10313:3:75","nodeType":"YulIdentifier","src":"10313:3:75"},"nativeSrc":"10313:20:75","nodeType":"YulFunctionCall","src":"10313:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10303:6:75","nodeType":"YulIdentifier","src":"10303:6:75"},"nativeSrc":"10303:31:75","nodeType":"YulFunctionCall","src":"10303:31:75"},"nativeSrc":"10303:31:75","nodeType":"YulExpressionStatement","src":"10303:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10354:1:75","nodeType":"YulLiteral","src":"10354:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10357:4:75","nodeType":"YulLiteral","src":"10357:4:75","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"10347:6:75","nodeType":"YulIdentifier","src":"10347:6:75"},"nativeSrc":"10347:15:75","nodeType":"YulFunctionCall","src":"10347:15:75"},"nativeSrc":"10347:15:75","nodeType":"YulExpressionStatement","src":"10347:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10382:1:75","nodeType":"YulLiteral","src":"10382:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10385:4:75","nodeType":"YulLiteral","src":"10385:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10375:6:75","nodeType":"YulIdentifier","src":"10375:6:75"},"nativeSrc":"10375:15:75","nodeType":"YulFunctionCall","src":"10375:15:75"},"nativeSrc":"10375:15:75","nodeType":"YulExpressionStatement","src":"10375:15:75"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"10245:18:75","nodeType":"YulIdentifier","src":"10245:18:75"},{"arguments":[{"name":"length","nativeSrc":"10268:6:75","nodeType":"YulIdentifier","src":"10268:6:75"},{"kind":"number","nativeSrc":"10276:2:75","nodeType":"YulLiteral","src":"10276:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"10265:2:75","nodeType":"YulIdentifier","src":"10265:2:75"},"nativeSrc":"10265:14:75","nodeType":"YulFunctionCall","src":"10265:14:75"}],"functionName":{"name":"eq","nativeSrc":"10242:2:75","nodeType":"YulIdentifier","src":"10242:2:75"},"nativeSrc":"10242:38:75","nodeType":"YulFunctionCall","src":"10242:38:75"},"nativeSrc":"10239:161:75","nodeType":"YulIf","src":"10239:161:75"}]},"name":"extract_byte_array_length","nativeSrc":"10026:380:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"10061:4:75","nodeType":"YulTypedName","src":"10061:4:75","type":""}],"returnVariables":[{"name":"length","nativeSrc":"10070:6:75","nodeType":"YulTypedName","src":"10070:6:75","type":""}],"src":"10026:380:75"},{"body":{"nativeSrc":"10443:95:75","nodeType":"YulBlock","src":"10443:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10460:1:75","nodeType":"YulLiteral","src":"10460:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"10467:3:75","nodeType":"YulLiteral","src":"10467:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"10472:10:75","nodeType":"YulLiteral","src":"10472:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"10463:3:75","nodeType":"YulIdentifier","src":"10463:3:75"},"nativeSrc":"10463:20:75","nodeType":"YulFunctionCall","src":"10463:20:75"}],"functionName":{"name":"mstore","nativeSrc":"10453:6:75","nodeType":"YulIdentifier","src":"10453:6:75"},"nativeSrc":"10453:31:75","nodeType":"YulFunctionCall","src":"10453:31:75"},"nativeSrc":"10453:31:75","nodeType":"YulExpressionStatement","src":"10453:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10500:1:75","nodeType":"YulLiteral","src":"10500:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"10503:4:75","nodeType":"YulLiteral","src":"10503:4:75","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"10493:6:75","nodeType":"YulIdentifier","src":"10493:6:75"},"nativeSrc":"10493:15:75","nodeType":"YulFunctionCall","src":"10493:15:75"},"nativeSrc":"10493:15:75","nodeType":"YulExpressionStatement","src":"10493:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10524:1:75","nodeType":"YulLiteral","src":"10524:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10527:4:75","nodeType":"YulLiteral","src":"10527:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"10517:6:75","nodeType":"YulIdentifier","src":"10517:6:75"},"nativeSrc":"10517:15:75","nodeType":"YulFunctionCall","src":"10517:15:75"},"nativeSrc":"10517:15:75","nodeType":"YulExpressionStatement","src":"10517:15:75"}]},"name":"panic_error_0x11","nativeSrc":"10411:127:75","nodeType":"YulFunctionDefinition","src":"10411:127:75"},{"body":{"nativeSrc":"10589:102:75","nodeType":"YulBlock","src":"10589:102:75","statements":[{"nativeSrc":"10599:38:75","nodeType":"YulAssignment","src":"10599:38:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"10614:1:75","nodeType":"YulIdentifier","src":"10614:1:75"},{"kind":"number","nativeSrc":"10617:4:75","nodeType":"YulLiteral","src":"10617:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10610:3:75","nodeType":"YulIdentifier","src":"10610:3:75"},"nativeSrc":"10610:12:75","nodeType":"YulFunctionCall","src":"10610:12:75"},{"arguments":[{"name":"y","nativeSrc":"10628:1:75","nodeType":"YulIdentifier","src":"10628:1:75"},{"kind":"number","nativeSrc":"10631:4:75","nodeType":"YulLiteral","src":"10631:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"10624:3:75","nodeType":"YulIdentifier","src":"10624:3:75"},"nativeSrc":"10624:12:75","nodeType":"YulFunctionCall","src":"10624:12:75"}],"functionName":{"name":"add","nativeSrc":"10606:3:75","nodeType":"YulIdentifier","src":"10606:3:75"},"nativeSrc":"10606:31:75","nodeType":"YulFunctionCall","src":"10606:31:75"},"variableNames":[{"name":"sum","nativeSrc":"10599:3:75","nodeType":"YulIdentifier","src":"10599:3:75"}]},{"body":{"nativeSrc":"10663:22:75","nodeType":"YulBlock","src":"10663:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10665:16:75","nodeType":"YulIdentifier","src":"10665:16:75"},"nativeSrc":"10665:18:75","nodeType":"YulFunctionCall","src":"10665:18:75"},"nativeSrc":"10665:18:75","nodeType":"YulExpressionStatement","src":"10665:18:75"}]},"condition":{"arguments":[{"name":"sum","nativeSrc":"10652:3:75","nodeType":"YulIdentifier","src":"10652:3:75"},{"kind":"number","nativeSrc":"10657:4:75","nodeType":"YulLiteral","src":"10657:4:75","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"10649:2:75","nodeType":"YulIdentifier","src":"10649:2:75"},"nativeSrc":"10649:13:75","nodeType":"YulFunctionCall","src":"10649:13:75"},"nativeSrc":"10646:39:75","nodeType":"YulIf","src":"10646:39:75"}]},"name":"checked_add_t_uint8","nativeSrc":"10543:148:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"10572:1:75","nodeType":"YulTypedName","src":"10572:1:75","type":""},{"name":"y","nativeSrc":"10575:1:75","nodeType":"YulTypedName","src":"10575:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"10581:3:75","nodeType":"YulTypedName","src":"10581:3:75","type":""}],"src":"10543:148:75"},{"body":{"nativeSrc":"10777:103:75","nodeType":"YulBlock","src":"10777:103:75","statements":[{"body":{"nativeSrc":"10823:16:75","nodeType":"YulBlock","src":"10823:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10832:1:75","nodeType":"YulLiteral","src":"10832:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"10835:1:75","nodeType":"YulLiteral","src":"10835:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10825:6:75","nodeType":"YulIdentifier","src":"10825:6:75"},"nativeSrc":"10825:12:75","nodeType":"YulFunctionCall","src":"10825:12:75"},"nativeSrc":"10825:12:75","nodeType":"YulExpressionStatement","src":"10825:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10798:7:75","nodeType":"YulIdentifier","src":"10798:7:75"},{"name":"headStart","nativeSrc":"10807:9:75","nodeType":"YulIdentifier","src":"10807:9:75"}],"functionName":{"name":"sub","nativeSrc":"10794:3:75","nodeType":"YulIdentifier","src":"10794:3:75"},"nativeSrc":"10794:23:75","nodeType":"YulFunctionCall","src":"10794:23:75"},{"kind":"number","nativeSrc":"10819:2:75","nodeType":"YulLiteral","src":"10819:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10790:3:75","nodeType":"YulIdentifier","src":"10790:3:75"},"nativeSrc":"10790:32:75","nodeType":"YulFunctionCall","src":"10790:32:75"},"nativeSrc":"10787:52:75","nodeType":"YulIf","src":"10787:52:75"},{"nativeSrc":"10848:26:75","nodeType":"YulAssignment","src":"10848:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"10864:9:75","nodeType":"YulIdentifier","src":"10864:9:75"}],"functionName":{"name":"mload","nativeSrc":"10858:5:75","nodeType":"YulIdentifier","src":"10858:5:75"},"nativeSrc":"10858:16:75","nodeType":"YulFunctionCall","src":"10858:16:75"},"variableNames":[{"name":"value0","nativeSrc":"10848:6:75","nodeType":"YulIdentifier","src":"10848:6:75"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"10696:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10743:9:75","nodeType":"YulTypedName","src":"10743:9:75","type":""},{"name":"dataEnd","nativeSrc":"10754:7:75","nodeType":"YulTypedName","src":"10754:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10766:6:75","nodeType":"YulTypedName","src":"10766:6:75","type":""}],"src":"10696:184:75"},{"body":{"nativeSrc":"11042:188:75","nodeType":"YulBlock","src":"11042:188:75","statements":[{"nativeSrc":"11052:26:75","nodeType":"YulAssignment","src":"11052:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11064:9:75","nodeType":"YulIdentifier","src":"11064:9:75"},{"kind":"number","nativeSrc":"11075:2:75","nodeType":"YulLiteral","src":"11075:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"11060:3:75","nodeType":"YulIdentifier","src":"11060:3:75"},"nativeSrc":"11060:18:75","nodeType":"YulFunctionCall","src":"11060:18:75"},"variableNames":[{"name":"tail","nativeSrc":"11052:4:75","nodeType":"YulIdentifier","src":"11052:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11094:9:75","nodeType":"YulIdentifier","src":"11094:9:75"},{"arguments":[{"name":"value0","nativeSrc":"11109:6:75","nodeType":"YulIdentifier","src":"11109:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11125:3:75","nodeType":"YulLiteral","src":"11125:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"11130:1:75","nodeType":"YulLiteral","src":"11130:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11121:3:75","nodeType":"YulIdentifier","src":"11121:3:75"},"nativeSrc":"11121:11:75","nodeType":"YulFunctionCall","src":"11121:11:75"},{"kind":"number","nativeSrc":"11134:1:75","nodeType":"YulLiteral","src":"11134:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11117:3:75","nodeType":"YulIdentifier","src":"11117:3:75"},"nativeSrc":"11117:19:75","nodeType":"YulFunctionCall","src":"11117:19:75"}],"functionName":{"name":"and","nativeSrc":"11105:3:75","nodeType":"YulIdentifier","src":"11105:3:75"},"nativeSrc":"11105:32:75","nodeType":"YulFunctionCall","src":"11105:32:75"}],"functionName":{"name":"mstore","nativeSrc":"11087:6:75","nodeType":"YulIdentifier","src":"11087:6:75"},"nativeSrc":"11087:51:75","nodeType":"YulFunctionCall","src":"11087:51:75"},"nativeSrc":"11087:51:75","nodeType":"YulExpressionStatement","src":"11087:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11158:9:75","nodeType":"YulIdentifier","src":"11158:9:75"},{"kind":"number","nativeSrc":"11169:2:75","nodeType":"YulLiteral","src":"11169:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11154:3:75","nodeType":"YulIdentifier","src":"11154:3:75"},"nativeSrc":"11154:18:75","nodeType":"YulFunctionCall","src":"11154:18:75"},{"name":"value1","nativeSrc":"11174:6:75","nodeType":"YulIdentifier","src":"11174:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11147:6:75","nodeType":"YulIdentifier","src":"11147:6:75"},"nativeSrc":"11147:34:75","nodeType":"YulFunctionCall","src":"11147:34:75"},"nativeSrc":"11147:34:75","nodeType":"YulExpressionStatement","src":"11147:34:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11201:9:75","nodeType":"YulIdentifier","src":"11201:9:75"},{"kind":"number","nativeSrc":"11212:2:75","nodeType":"YulLiteral","src":"11212:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11197:3:75","nodeType":"YulIdentifier","src":"11197:3:75"},"nativeSrc":"11197:18:75","nodeType":"YulFunctionCall","src":"11197:18:75"},{"name":"value2","nativeSrc":"11217:6:75","nodeType":"YulIdentifier","src":"11217:6:75"}],"functionName":{"name":"mstore","nativeSrc":"11190:6:75","nodeType":"YulIdentifier","src":"11190:6:75"},"nativeSrc":"11190:34:75","nodeType":"YulFunctionCall","src":"11190:34:75"},"nativeSrc":"11190:34:75","nodeType":"YulExpressionStatement","src":"11190:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"10885:345:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10995:9:75","nodeType":"YulTypedName","src":"10995:9:75","type":""},{"name":"value2","nativeSrc":"11006:6:75","nodeType":"YulTypedName","src":"11006:6:75","type":""},{"name":"value1","nativeSrc":"11014:6:75","nodeType":"YulTypedName","src":"11014:6:75","type":""},{"name":"value0","nativeSrc":"11022:6:75","nodeType":"YulTypedName","src":"11022:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11033:4:75","nodeType":"YulTypedName","src":"11033:4:75","type":""}],"src":"10885:345:75"},{"body":{"nativeSrc":"11316:103:75","nodeType":"YulBlock","src":"11316:103:75","statements":[{"body":{"nativeSrc":"11362:16:75","nodeType":"YulBlock","src":"11362:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11371:1:75","nodeType":"YulLiteral","src":"11371:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"11374:1:75","nodeType":"YulLiteral","src":"11374:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11364:6:75","nodeType":"YulIdentifier","src":"11364:6:75"},"nativeSrc":"11364:12:75","nodeType":"YulFunctionCall","src":"11364:12:75"},"nativeSrc":"11364:12:75","nodeType":"YulExpressionStatement","src":"11364:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11337:7:75","nodeType":"YulIdentifier","src":"11337:7:75"},{"name":"headStart","nativeSrc":"11346:9:75","nodeType":"YulIdentifier","src":"11346:9:75"}],"functionName":{"name":"sub","nativeSrc":"11333:3:75","nodeType":"YulIdentifier","src":"11333:3:75"},"nativeSrc":"11333:23:75","nodeType":"YulFunctionCall","src":"11333:23:75"},{"kind":"number","nativeSrc":"11358:2:75","nodeType":"YulLiteral","src":"11358:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11329:3:75","nodeType":"YulIdentifier","src":"11329:3:75"},"nativeSrc":"11329:32:75","nodeType":"YulFunctionCall","src":"11329:32:75"},"nativeSrc":"11326:52:75","nodeType":"YulIf","src":"11326:52:75"},{"nativeSrc":"11387:26:75","nodeType":"YulAssignment","src":"11387:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"11403:9:75","nodeType":"YulIdentifier","src":"11403:9:75"}],"functionName":{"name":"mload","nativeSrc":"11397:5:75","nodeType":"YulIdentifier","src":"11397:5:75"},"nativeSrc":"11397:16:75","nodeType":"YulFunctionCall","src":"11397:16:75"},"variableNames":[{"name":"value0","nativeSrc":"11387:6:75","nodeType":"YulIdentifier","src":"11387:6:75"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"11235:184:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11282:9:75","nodeType":"YulTypedName","src":"11282:9:75","type":""},{"name":"dataEnd","nativeSrc":"11293:7:75","nodeType":"YulTypedName","src":"11293:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11305:6:75","nodeType":"YulTypedName","src":"11305:6:75","type":""}],"src":"11235:184:75"},{"body":{"nativeSrc":"11472:77:75","nodeType":"YulBlock","src":"11472:77:75","statements":[{"nativeSrc":"11482:16:75","nodeType":"YulAssignment","src":"11482:16:75","value":{"arguments":[{"name":"x","nativeSrc":"11493:1:75","nodeType":"YulIdentifier","src":"11493:1:75"},{"name":"y","nativeSrc":"11496:1:75","nodeType":"YulIdentifier","src":"11496:1:75"}],"functionName":{"name":"add","nativeSrc":"11489:3:75","nodeType":"YulIdentifier","src":"11489:3:75"},"nativeSrc":"11489:9:75","nodeType":"YulFunctionCall","src":"11489:9:75"},"variableNames":[{"name":"sum","nativeSrc":"11482:3:75","nodeType":"YulIdentifier","src":"11482:3:75"}]},{"body":{"nativeSrc":"11521:22:75","nodeType":"YulBlock","src":"11521:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11523:16:75","nodeType":"YulIdentifier","src":"11523:16:75"},"nativeSrc":"11523:18:75","nodeType":"YulFunctionCall","src":"11523:18:75"},"nativeSrc":"11523:18:75","nodeType":"YulExpressionStatement","src":"11523:18:75"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"11513:1:75","nodeType":"YulIdentifier","src":"11513:1:75"},{"name":"sum","nativeSrc":"11516:3:75","nodeType":"YulIdentifier","src":"11516:3:75"}],"functionName":{"name":"gt","nativeSrc":"11510:2:75","nodeType":"YulIdentifier","src":"11510:2:75"},"nativeSrc":"11510:10:75","nodeType":"YulFunctionCall","src":"11510:10:75"},"nativeSrc":"11507:36:75","nodeType":"YulIf","src":"11507:36:75"}]},"name":"checked_add_t_uint256","nativeSrc":"11424:125:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11455:1:75","nodeType":"YulTypedName","src":"11455:1:75","type":""},{"name":"y","nativeSrc":"11458:1:75","nodeType":"YulTypedName","src":"11458:1:75","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"11464:3:75","nodeType":"YulTypedName","src":"11464:3:75","type":""}],"src":"11424:125:75"},{"body":{"nativeSrc":"11623:306:75","nodeType":"YulBlock","src":"11623:306:75","statements":[{"nativeSrc":"11633:10:75","nodeType":"YulAssignment","src":"11633:10:75","value":{"kind":"number","nativeSrc":"11642:1:75","nodeType":"YulLiteral","src":"11642:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"11633:5:75","nodeType":"YulIdentifier","src":"11633:5:75"}]},{"nativeSrc":"11652:13:75","nodeType":"YulAssignment","src":"11652:13:75","value":{"name":"_base","nativeSrc":"11660:5:75","nodeType":"YulIdentifier","src":"11660:5:75"},"variableNames":[{"name":"base","nativeSrc":"11652:4:75","nodeType":"YulIdentifier","src":"11652:4:75"}]},{"body":{"nativeSrc":"11710:213:75","nodeType":"YulBlock","src":"11710:213:75","statements":[{"body":{"nativeSrc":"11752:22:75","nodeType":"YulBlock","src":"11752:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11754:16:75","nodeType":"YulIdentifier","src":"11754:16:75"},"nativeSrc":"11754:18:75","nodeType":"YulFunctionCall","src":"11754:18:75"},"nativeSrc":"11754:18:75","nodeType":"YulExpressionStatement","src":"11754:18:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"11730:4:75","nodeType":"YulIdentifier","src":"11730:4:75"},{"arguments":[{"name":"max","nativeSrc":"11740:3:75","nodeType":"YulIdentifier","src":"11740:3:75"},{"name":"base","nativeSrc":"11745:4:75","nodeType":"YulIdentifier","src":"11745:4:75"}],"functionName":{"name":"div","nativeSrc":"11736:3:75","nodeType":"YulIdentifier","src":"11736:3:75"},"nativeSrc":"11736:14:75","nodeType":"YulFunctionCall","src":"11736:14:75"}],"functionName":{"name":"gt","nativeSrc":"11727:2:75","nodeType":"YulIdentifier","src":"11727:2:75"},"nativeSrc":"11727:24:75","nodeType":"YulFunctionCall","src":"11727:24:75"},"nativeSrc":"11724:50:75","nodeType":"YulIf","src":"11724:50:75"},{"body":{"nativeSrc":"11807:29:75","nodeType":"YulBlock","src":"11807:29:75","statements":[{"nativeSrc":"11809:25:75","nodeType":"YulAssignment","src":"11809:25:75","value":{"arguments":[{"name":"power","nativeSrc":"11822:5:75","nodeType":"YulIdentifier","src":"11822:5:75"},{"name":"base","nativeSrc":"11829:4:75","nodeType":"YulIdentifier","src":"11829:4:75"}],"functionName":{"name":"mul","nativeSrc":"11818:3:75","nodeType":"YulIdentifier","src":"11818:3:75"},"nativeSrc":"11818:16:75","nodeType":"YulFunctionCall","src":"11818:16:75"},"variableNames":[{"name":"power","nativeSrc":"11809:5:75","nodeType":"YulIdentifier","src":"11809:5:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"11794:8:75","nodeType":"YulIdentifier","src":"11794:8:75"},{"kind":"number","nativeSrc":"11804:1:75","nodeType":"YulLiteral","src":"11804:1:75","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"11790:3:75","nodeType":"YulIdentifier","src":"11790:3:75"},"nativeSrc":"11790:16:75","nodeType":"YulFunctionCall","src":"11790:16:75"},"nativeSrc":"11787:49:75","nodeType":"YulIf","src":"11787:49:75"},{"nativeSrc":"11849:23:75","nodeType":"YulAssignment","src":"11849:23:75","value":{"arguments":[{"name":"base","nativeSrc":"11861:4:75","nodeType":"YulIdentifier","src":"11861:4:75"},{"name":"base","nativeSrc":"11867:4:75","nodeType":"YulIdentifier","src":"11867:4:75"}],"functionName":{"name":"mul","nativeSrc":"11857:3:75","nodeType":"YulIdentifier","src":"11857:3:75"},"nativeSrc":"11857:15:75","nodeType":"YulFunctionCall","src":"11857:15:75"},"variableNames":[{"name":"base","nativeSrc":"11849:4:75","nodeType":"YulIdentifier","src":"11849:4:75"}]},{"nativeSrc":"11885:28:75","nodeType":"YulAssignment","src":"11885:28:75","value":{"arguments":[{"kind":"number","nativeSrc":"11901:1:75","nodeType":"YulLiteral","src":"11901:1:75","type":"","value":"1"},{"name":"exponent","nativeSrc":"11904:8:75","nodeType":"YulIdentifier","src":"11904:8:75"}],"functionName":{"name":"shr","nativeSrc":"11897:3:75","nodeType":"YulIdentifier","src":"11897:3:75"},"nativeSrc":"11897:16:75","nodeType":"YulFunctionCall","src":"11897:16:75"},"variableNames":[{"name":"exponent","nativeSrc":"11885:8:75","nodeType":"YulIdentifier","src":"11885:8:75"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"11685:8:75","nodeType":"YulIdentifier","src":"11685:8:75"},{"kind":"number","nativeSrc":"11695:1:75","nodeType":"YulLiteral","src":"11695:1:75","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"11682:2:75","nodeType":"YulIdentifier","src":"11682:2:75"},"nativeSrc":"11682:15:75","nodeType":"YulFunctionCall","src":"11682:15:75"},"nativeSrc":"11674:249:75","nodeType":"YulForLoop","post":{"nativeSrc":"11698:3:75","nodeType":"YulBlock","src":"11698:3:75","statements":[]},"pre":{"nativeSrc":"11678:3:75","nodeType":"YulBlock","src":"11678:3:75","statements":[]},"src":"11674:249:75"}]},"name":"checked_exp_helper","nativeSrc":"11554:375:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"11582:5:75","nodeType":"YulTypedName","src":"11582:5:75","type":""},{"name":"exponent","nativeSrc":"11589:8:75","nodeType":"YulTypedName","src":"11589:8:75","type":""},{"name":"max","nativeSrc":"11599:3:75","nodeType":"YulTypedName","src":"11599:3:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"11607:5:75","nodeType":"YulTypedName","src":"11607:5:75","type":""},{"name":"base","nativeSrc":"11614:4:75","nodeType":"YulTypedName","src":"11614:4:75","type":""}],"src":"11554:375:75"},{"body":{"nativeSrc":"11993:843:75","nodeType":"YulBlock","src":"11993:843:75","statements":[{"body":{"nativeSrc":"12031:52:75","nodeType":"YulBlock","src":"12031:52:75","statements":[{"nativeSrc":"12045:10:75","nodeType":"YulAssignment","src":"12045:10:75","value":{"kind":"number","nativeSrc":"12054:1:75","nodeType":"YulLiteral","src":"12054:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12045:5:75","nodeType":"YulIdentifier","src":"12045:5:75"}]},{"nativeSrc":"12068:5:75","nodeType":"YulLeave","src":"12068:5:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12013:8:75","nodeType":"YulIdentifier","src":"12013:8:75"}],"functionName":{"name":"iszero","nativeSrc":"12006:6:75","nodeType":"YulIdentifier","src":"12006:6:75"},"nativeSrc":"12006:16:75","nodeType":"YulFunctionCall","src":"12006:16:75"},"nativeSrc":"12003:80:75","nodeType":"YulIf","src":"12003:80:75"},{"body":{"nativeSrc":"12116:52:75","nodeType":"YulBlock","src":"12116:52:75","statements":[{"nativeSrc":"12130:10:75","nodeType":"YulAssignment","src":"12130:10:75","value":{"kind":"number","nativeSrc":"12139:1:75","nodeType":"YulLiteral","src":"12139:1:75","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"12130:5:75","nodeType":"YulIdentifier","src":"12130:5:75"}]},{"nativeSrc":"12153:5:75","nodeType":"YulLeave","src":"12153:5:75"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"12102:4:75","nodeType":"YulIdentifier","src":"12102:4:75"}],"functionName":{"name":"iszero","nativeSrc":"12095:6:75","nodeType":"YulIdentifier","src":"12095:6:75"},"nativeSrc":"12095:12:75","nodeType":"YulFunctionCall","src":"12095:12:75"},"nativeSrc":"12092:76:75","nodeType":"YulIf","src":"12092:76:75"},{"cases":[{"body":{"nativeSrc":"12204:52:75","nodeType":"YulBlock","src":"12204:52:75","statements":[{"nativeSrc":"12218:10:75","nodeType":"YulAssignment","src":"12218:10:75","value":{"kind":"number","nativeSrc":"12227:1:75","nodeType":"YulLiteral","src":"12227:1:75","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"12218:5:75","nodeType":"YulIdentifier","src":"12218:5:75"}]},{"nativeSrc":"12241:5:75","nodeType":"YulLeave","src":"12241:5:75"}]},"nativeSrc":"12197:59:75","nodeType":"YulCase","src":"12197:59:75","value":{"kind":"number","nativeSrc":"12202:1:75","nodeType":"YulLiteral","src":"12202:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"12272:167:75","nodeType":"YulBlock","src":"12272:167:75","statements":[{"body":{"nativeSrc":"12307:22:75","nodeType":"YulBlock","src":"12307:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12309:16:75","nodeType":"YulIdentifier","src":"12309:16:75"},"nativeSrc":"12309:18:75","nodeType":"YulFunctionCall","src":"12309:18:75"},"nativeSrc":"12309:18:75","nodeType":"YulExpressionStatement","src":"12309:18:75"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"12292:8:75","nodeType":"YulIdentifier","src":"12292:8:75"},{"kind":"number","nativeSrc":"12302:3:75","nodeType":"YulLiteral","src":"12302:3:75","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"12289:2:75","nodeType":"YulIdentifier","src":"12289:2:75"},"nativeSrc":"12289:17:75","nodeType":"YulFunctionCall","src":"12289:17:75"},"nativeSrc":"12286:43:75","nodeType":"YulIf","src":"12286:43:75"},{"nativeSrc":"12342:25:75","nodeType":"YulAssignment","src":"12342:25:75","value":{"arguments":[{"name":"exponent","nativeSrc":"12355:8:75","nodeType":"YulIdentifier","src":"12355:8:75"},{"kind":"number","nativeSrc":"12365:1:75","nodeType":"YulLiteral","src":"12365:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"12351:3:75","nodeType":"YulIdentifier","src":"12351:3:75"},"nativeSrc":"12351:16:75","nodeType":"YulFunctionCall","src":"12351:16:75"},"variableNames":[{"name":"power","nativeSrc":"12342:5:75","nodeType":"YulIdentifier","src":"12342:5:75"}]},{"nativeSrc":"12380:11:75","nodeType":"YulVariableDeclaration","src":"12380:11:75","value":{"kind":"number","nativeSrc":"12390:1:75","nodeType":"YulLiteral","src":"12390:1:75","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"12384:2:75","nodeType":"YulTypedName","src":"12384:2:75","type":""}]},{"nativeSrc":"12404:7:75","nodeType":"YulAssignment","src":"12404:7:75","value":{"kind":"number","nativeSrc":"12410:1:75","nodeType":"YulLiteral","src":"12410:1:75","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"12404:2:75","nodeType":"YulIdentifier","src":"12404:2:75"}]},{"nativeSrc":"12424:5:75","nodeType":"YulLeave","src":"12424:5:75"}]},"nativeSrc":"12265:174:75","nodeType":"YulCase","src":"12265:174:75","value":{"kind":"number","nativeSrc":"12270:1:75","nodeType":"YulLiteral","src":"12270:1:75","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"12184:4:75","nodeType":"YulIdentifier","src":"12184:4:75"},"nativeSrc":"12177:262:75","nodeType":"YulSwitch","src":"12177:262:75"},{"body":{"nativeSrc":"12537:114:75","nodeType":"YulBlock","src":"12537:114:75","statements":[{"nativeSrc":"12551:28:75","nodeType":"YulAssignment","src":"12551:28:75","value":{"arguments":[{"name":"base","nativeSrc":"12564:4:75","nodeType":"YulIdentifier","src":"12564:4:75"},{"name":"exponent","nativeSrc":"12570:8:75","nodeType":"YulIdentifier","src":"12570:8:75"}],"functionName":{"name":"exp","nativeSrc":"12560:3:75","nodeType":"YulIdentifier","src":"12560:3:75"},"nativeSrc":"12560:19:75","nodeType":"YulFunctionCall","src":"12560:19:75"},"variableNames":[{"name":"power","nativeSrc":"12551:5:75","nodeType":"YulIdentifier","src":"12551:5:75"}]},{"nativeSrc":"12592:11:75","nodeType":"YulVariableDeclaration","src":"12592:11:75","value":{"kind":"number","nativeSrc":"12602:1:75","nodeType":"YulLiteral","src":"12602:1:75","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"12596:2:75","nodeType":"YulTypedName","src":"12596:2:75","type":""}]},{"nativeSrc":"12616:7:75","nodeType":"YulAssignment","src":"12616:7:75","value":{"kind":"number","nativeSrc":"12622:1:75","nodeType":"YulLiteral","src":"12622:1:75","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"12616:2:75","nodeType":"YulIdentifier","src":"12616:2:75"}]},{"nativeSrc":"12636:5:75","nodeType":"YulLeave","src":"12636:5:75"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12461:4:75","nodeType":"YulIdentifier","src":"12461:4:75"},{"kind":"number","nativeSrc":"12467:2:75","nodeType":"YulLiteral","src":"12467:2:75","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"12458:2:75","nodeType":"YulIdentifier","src":"12458:2:75"},"nativeSrc":"12458:12:75","nodeType":"YulFunctionCall","src":"12458:12:75"},{"arguments":[{"name":"exponent","nativeSrc":"12475:8:75","nodeType":"YulIdentifier","src":"12475:8:75"},{"kind":"number","nativeSrc":"12485:2:75","nodeType":"YulLiteral","src":"12485:2:75","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"12472:2:75","nodeType":"YulIdentifier","src":"12472:2:75"},"nativeSrc":"12472:16:75","nodeType":"YulFunctionCall","src":"12472:16:75"}],"functionName":{"name":"and","nativeSrc":"12454:3:75","nodeType":"YulIdentifier","src":"12454:3:75"},"nativeSrc":"12454:35:75","nodeType":"YulFunctionCall","src":"12454:35:75"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"12498:4:75","nodeType":"YulIdentifier","src":"12498:4:75"},{"kind":"number","nativeSrc":"12504:3:75","nodeType":"YulLiteral","src":"12504:3:75","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"12495:2:75","nodeType":"YulIdentifier","src":"12495:2:75"},"nativeSrc":"12495:13:75","nodeType":"YulFunctionCall","src":"12495:13:75"},{"arguments":[{"name":"exponent","nativeSrc":"12513:8:75","nodeType":"YulIdentifier","src":"12513:8:75"},{"kind":"number","nativeSrc":"12523:2:75","nodeType":"YulLiteral","src":"12523:2:75","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"12510:2:75","nodeType":"YulIdentifier","src":"12510:2:75"},"nativeSrc":"12510:16:75","nodeType":"YulFunctionCall","src":"12510:16:75"}],"functionName":{"name":"and","nativeSrc":"12491:3:75","nodeType":"YulIdentifier","src":"12491:3:75"},"nativeSrc":"12491:36:75","nodeType":"YulFunctionCall","src":"12491:36:75"}],"functionName":{"name":"or","nativeSrc":"12451:2:75","nodeType":"YulIdentifier","src":"12451:2:75"},"nativeSrc":"12451:77:75","nodeType":"YulFunctionCall","src":"12451:77:75"},"nativeSrc":"12448:203:75","nodeType":"YulIf","src":"12448:203:75"},{"nativeSrc":"12660:65:75","nodeType":"YulVariableDeclaration","src":"12660:65:75","value":{"arguments":[{"name":"base","nativeSrc":"12702:4:75","nodeType":"YulIdentifier","src":"12702:4:75"},{"name":"exponent","nativeSrc":"12708:8:75","nodeType":"YulIdentifier","src":"12708:8:75"},{"arguments":[{"kind":"number","nativeSrc":"12722:1:75","nodeType":"YulLiteral","src":"12722:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12718:3:75","nodeType":"YulIdentifier","src":"12718:3:75"},"nativeSrc":"12718:6:75","nodeType":"YulFunctionCall","src":"12718:6:75"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"12683:18:75","nodeType":"YulIdentifier","src":"12683:18:75"},"nativeSrc":"12683:42:75","nodeType":"YulFunctionCall","src":"12683:42:75"},"variables":[{"name":"power_1","nativeSrc":"12664:7:75","nodeType":"YulTypedName","src":"12664:7:75","type":""},{"name":"base_1","nativeSrc":"12673:6:75","nodeType":"YulTypedName","src":"12673:6:75","type":""}]},{"body":{"nativeSrc":"12770:22:75","nodeType":"YulBlock","src":"12770:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12772:16:75","nodeType":"YulIdentifier","src":"12772:16:75"},"nativeSrc":"12772:18:75","nodeType":"YulFunctionCall","src":"12772:18:75"},"nativeSrc":"12772:18:75","nodeType":"YulExpressionStatement","src":"12772:18:75"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"12740:7:75","nodeType":"YulIdentifier","src":"12740:7:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12757:1:75","nodeType":"YulLiteral","src":"12757:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"12753:3:75","nodeType":"YulIdentifier","src":"12753:3:75"},"nativeSrc":"12753:6:75","nodeType":"YulFunctionCall","src":"12753:6:75"},{"name":"base_1","nativeSrc":"12761:6:75","nodeType":"YulIdentifier","src":"12761:6:75"}],"functionName":{"name":"div","nativeSrc":"12749:3:75","nodeType":"YulIdentifier","src":"12749:3:75"},"nativeSrc":"12749:19:75","nodeType":"YulFunctionCall","src":"12749:19:75"}],"functionName":{"name":"gt","nativeSrc":"12737:2:75","nodeType":"YulIdentifier","src":"12737:2:75"},"nativeSrc":"12737:32:75","nodeType":"YulFunctionCall","src":"12737:32:75"},"nativeSrc":"12734:58:75","nodeType":"YulIf","src":"12734:58:75"},{"nativeSrc":"12801:29:75","nodeType":"YulAssignment","src":"12801:29:75","value":{"arguments":[{"name":"power_1","nativeSrc":"12814:7:75","nodeType":"YulIdentifier","src":"12814:7:75"},{"name":"base_1","nativeSrc":"12823:6:75","nodeType":"YulIdentifier","src":"12823:6:75"}],"functionName":{"name":"mul","nativeSrc":"12810:3:75","nodeType":"YulIdentifier","src":"12810:3:75"},"nativeSrc":"12810:20:75","nodeType":"YulFunctionCall","src":"12810:20:75"},"variableNames":[{"name":"power","nativeSrc":"12801:5:75","nodeType":"YulIdentifier","src":"12801:5:75"}]}]},"name":"checked_exp_unsigned","nativeSrc":"11934:902:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"11964:4:75","nodeType":"YulTypedName","src":"11964:4:75","type":""},{"name":"exponent","nativeSrc":"11970:8:75","nodeType":"YulTypedName","src":"11970:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"11983:5:75","nodeType":"YulTypedName","src":"11983:5:75","type":""}],"src":"11934:902:75"},{"body":{"nativeSrc":"12909:72:75","nodeType":"YulBlock","src":"12909:72:75","statements":[{"nativeSrc":"12919:56:75","nodeType":"YulAssignment","src":"12919:56:75","value":{"arguments":[{"name":"base","nativeSrc":"12949:4:75","nodeType":"YulIdentifier","src":"12949:4:75"},{"arguments":[{"name":"exponent","nativeSrc":"12959:8:75","nodeType":"YulIdentifier","src":"12959:8:75"},{"kind":"number","nativeSrc":"12969:4:75","nodeType":"YulLiteral","src":"12969:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"12955:3:75","nodeType":"YulIdentifier","src":"12955:3:75"},"nativeSrc":"12955:19:75","nodeType":"YulFunctionCall","src":"12955:19:75"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"12928:20:75","nodeType":"YulIdentifier","src":"12928:20:75"},"nativeSrc":"12928:47:75","nodeType":"YulFunctionCall","src":"12928:47:75"},"variableNames":[{"name":"power","nativeSrc":"12919:5:75","nodeType":"YulIdentifier","src":"12919:5:75"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"12841:140:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"12880:4:75","nodeType":"YulTypedName","src":"12880:4:75","type":""},{"name":"exponent","nativeSrc":"12886:8:75","nodeType":"YulTypedName","src":"12886:8:75","type":""}],"returnVariables":[{"name":"power","nativeSrc":"12899:5:75","nodeType":"YulTypedName","src":"12899:5:75","type":""}],"src":"12841:140:75"},{"body":{"nativeSrc":"13129:153:75","nodeType":"YulBlock","src":"13129:153:75","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13146:9:75","nodeType":"YulIdentifier","src":"13146:9:75"},{"arguments":[{"name":"value0","nativeSrc":"13161:6:75","nodeType":"YulIdentifier","src":"13161:6:75"},{"kind":"number","nativeSrc":"13169:4:75","nodeType":"YulLiteral","src":"13169:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"13157:3:75","nodeType":"YulIdentifier","src":"13157:3:75"},"nativeSrc":"13157:17:75","nodeType":"YulFunctionCall","src":"13157:17:75"}],"functionName":{"name":"mstore","nativeSrc":"13139:6:75","nodeType":"YulIdentifier","src":"13139:6:75"},"nativeSrc":"13139:36:75","nodeType":"YulFunctionCall","src":"13139:36:75"},"nativeSrc":"13139:36:75","nodeType":"YulExpressionStatement","src":"13139:36:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13195:9:75","nodeType":"YulIdentifier","src":"13195:9:75"},{"kind":"number","nativeSrc":"13206:2:75","nodeType":"YulLiteral","src":"13206:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13191:3:75","nodeType":"YulIdentifier","src":"13191:3:75"},"nativeSrc":"13191:18:75","nodeType":"YulFunctionCall","src":"13191:18:75"},{"kind":"number","nativeSrc":"13211:2:75","nodeType":"YulLiteral","src":"13211:2:75","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"13184:6:75","nodeType":"YulIdentifier","src":"13184:6:75"},"nativeSrc":"13184:30:75","nodeType":"YulFunctionCall","src":"13184:30:75"},"nativeSrc":"13184:30:75","nodeType":"YulExpressionStatement","src":"13184:30:75"},{"nativeSrc":"13223:53:75","nodeType":"YulAssignment","src":"13223:53:75","value":{"arguments":[{"name":"value1","nativeSrc":"13249:6:75","nodeType":"YulIdentifier","src":"13249:6:75"},{"arguments":[{"name":"headStart","nativeSrc":"13261:9:75","nodeType":"YulIdentifier","src":"13261:9:75"},{"kind":"number","nativeSrc":"13272:2:75","nodeType":"YulLiteral","src":"13272:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13257:3:75","nodeType":"YulIdentifier","src":"13257:3:75"},"nativeSrc":"13257:18:75","nodeType":"YulFunctionCall","src":"13257:18:75"}],"functionName":{"name":"abi_encode_string","nativeSrc":"13231:17:75","nodeType":"YulIdentifier","src":"13231:17:75"},"nativeSrc":"13231:45:75","nodeType":"YulFunctionCall","src":"13231:45:75"},"variableNames":[{"name":"tail","nativeSrc":"13223:4:75","nodeType":"YulIdentifier","src":"13223:4:75"}]}]},"name":"abi_encode_tuple_t_uint8_t_bytes_memory_ptr__to_t_uint8_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"12986:296:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13090:9:75","nodeType":"YulTypedName","src":"13090:9:75","type":""},{"name":"value1","nativeSrc":"13101:6:75","nodeType":"YulTypedName","src":"13101:6:75","type":""},{"name":"value0","nativeSrc":"13109:6:75","nodeType":"YulTypedName","src":"13109:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13120:4:75","nodeType":"YulTypedName","src":"13120:4:75","type":""}],"src":"12986:296:75"},{"body":{"nativeSrc":"13466:171:75","nodeType":"YulBlock","src":"13466:171:75","statements":[{"nativeSrc":"13476:26:75","nodeType":"YulAssignment","src":"13476:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13488:9:75","nodeType":"YulIdentifier","src":"13488:9:75"},{"kind":"number","nativeSrc":"13499:2:75","nodeType":"YulLiteral","src":"13499:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13484:3:75","nodeType":"YulIdentifier","src":"13484:3:75"},"nativeSrc":"13484:18:75","nodeType":"YulFunctionCall","src":"13484:18:75"},"variableNames":[{"name":"tail","nativeSrc":"13476:4:75","nodeType":"YulIdentifier","src":"13476:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13518:9:75","nodeType":"YulIdentifier","src":"13518:9:75"},{"arguments":[{"name":"value0","nativeSrc":"13533:6:75","nodeType":"YulIdentifier","src":"13533:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13549:3:75","nodeType":"YulLiteral","src":"13549:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"13554:1:75","nodeType":"YulLiteral","src":"13554:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13545:3:75","nodeType":"YulIdentifier","src":"13545:3:75"},"nativeSrc":"13545:11:75","nodeType":"YulFunctionCall","src":"13545:11:75"},{"kind":"number","nativeSrc":"13558:1:75","nodeType":"YulLiteral","src":"13558:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13541:3:75","nodeType":"YulIdentifier","src":"13541:3:75"},"nativeSrc":"13541:19:75","nodeType":"YulFunctionCall","src":"13541:19:75"}],"functionName":{"name":"and","nativeSrc":"13529:3:75","nodeType":"YulIdentifier","src":"13529:3:75"},"nativeSrc":"13529:32:75","nodeType":"YulFunctionCall","src":"13529:32:75"}],"functionName":{"name":"mstore","nativeSrc":"13511:6:75","nodeType":"YulIdentifier","src":"13511:6:75"},"nativeSrc":"13511:51:75","nodeType":"YulFunctionCall","src":"13511:51:75"},"nativeSrc":"13511:51:75","nodeType":"YulExpressionStatement","src":"13511:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13582:9:75","nodeType":"YulIdentifier","src":"13582:9:75"},{"kind":"number","nativeSrc":"13593:2:75","nodeType":"YulLiteral","src":"13593:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13578:3:75","nodeType":"YulIdentifier","src":"13578:3:75"},"nativeSrc":"13578:18:75","nodeType":"YulFunctionCall","src":"13578:18:75"},{"arguments":[{"name":"value1","nativeSrc":"13602:6:75","nodeType":"YulIdentifier","src":"13602:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13618:3:75","nodeType":"YulLiteral","src":"13618:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"13623:1:75","nodeType":"YulLiteral","src":"13623:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13614:3:75","nodeType":"YulIdentifier","src":"13614:3:75"},"nativeSrc":"13614:11:75","nodeType":"YulFunctionCall","src":"13614:11:75"},{"kind":"number","nativeSrc":"13627:1:75","nodeType":"YulLiteral","src":"13627:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13610:3:75","nodeType":"YulIdentifier","src":"13610:3:75"},"nativeSrc":"13610:19:75","nodeType":"YulFunctionCall","src":"13610:19:75"}],"functionName":{"name":"and","nativeSrc":"13598:3:75","nodeType":"YulIdentifier","src":"13598:3:75"},"nativeSrc":"13598:32:75","nodeType":"YulFunctionCall","src":"13598:32:75"}],"functionName":{"name":"mstore","nativeSrc":"13571:6:75","nodeType":"YulIdentifier","src":"13571:6:75"},"nativeSrc":"13571:60:75","nodeType":"YulFunctionCall","src":"13571:60:75"},"nativeSrc":"13571:60:75","nodeType":"YulExpressionStatement","src":"13571:60:75"}]},"name":"abi_encode_tuple_t_contract$_IInvestStrategy_$22374_t_contract$_IInvestStrategy_$22374__to_t_address_t_address__fromStack_reversed","nativeSrc":"13287:350:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13427:9:75","nodeType":"YulTypedName","src":"13427:9:75","type":""},{"name":"value1","nativeSrc":"13438:6:75","nodeType":"YulTypedName","src":"13438:6:75","type":""},{"name":"value0","nativeSrc":"13446:6:75","nodeType":"YulTypedName","src":"13446:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13457:4:75","nodeType":"YulTypedName","src":"13457:4:75","type":""}],"src":"13287:350:75"},{"body":{"nativeSrc":"13674:95:75","nodeType":"YulBlock","src":"13674:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13691:1:75","nodeType":"YulLiteral","src":"13691:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13698:3:75","nodeType":"YulLiteral","src":"13698:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"13703:10:75","nodeType":"YulLiteral","src":"13703:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13694:3:75","nodeType":"YulIdentifier","src":"13694:3:75"},"nativeSrc":"13694:20:75","nodeType":"YulFunctionCall","src":"13694:20:75"}],"functionName":{"name":"mstore","nativeSrc":"13684:6:75","nodeType":"YulIdentifier","src":"13684:6:75"},"nativeSrc":"13684:31:75","nodeType":"YulFunctionCall","src":"13684:31:75"},"nativeSrc":"13684:31:75","nodeType":"YulExpressionStatement","src":"13684:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13731:1:75","nodeType":"YulLiteral","src":"13731:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"13734:4:75","nodeType":"YulLiteral","src":"13734:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"13724:6:75","nodeType":"YulIdentifier","src":"13724:6:75"},"nativeSrc":"13724:15:75","nodeType":"YulFunctionCall","src":"13724:15:75"},"nativeSrc":"13724:15:75","nodeType":"YulExpressionStatement","src":"13724:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13755:1:75","nodeType":"YulLiteral","src":"13755:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"13758:4:75","nodeType":"YulLiteral","src":"13758:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13748:6:75","nodeType":"YulIdentifier","src":"13748:6:75"},"nativeSrc":"13748:15:75","nodeType":"YulFunctionCall","src":"13748:15:75"},"nativeSrc":"13748:15:75","nodeType":"YulExpressionStatement","src":"13748:15:75"}]},"name":"panic_error_0x12","nativeSrc":"13642:127:75","nodeType":"YulFunctionDefinition","src":"13642:127:75"},{"body":{"nativeSrc":"13903:145:75","nodeType":"YulBlock","src":"13903:145:75","statements":[{"nativeSrc":"13913:26:75","nodeType":"YulAssignment","src":"13913:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"13925:9:75","nodeType":"YulIdentifier","src":"13925:9:75"},{"kind":"number","nativeSrc":"13936:2:75","nodeType":"YulLiteral","src":"13936:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13921:3:75","nodeType":"YulIdentifier","src":"13921:3:75"},"nativeSrc":"13921:18:75","nodeType":"YulFunctionCall","src":"13921:18:75"},"variableNames":[{"name":"tail","nativeSrc":"13913:4:75","nodeType":"YulIdentifier","src":"13913:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13955:9:75","nodeType":"YulIdentifier","src":"13955:9:75"},{"arguments":[{"name":"value0","nativeSrc":"13970:6:75","nodeType":"YulIdentifier","src":"13970:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13986:3:75","nodeType":"YulLiteral","src":"13986:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"13991:1:75","nodeType":"YulLiteral","src":"13991:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13982:3:75","nodeType":"YulIdentifier","src":"13982:3:75"},"nativeSrc":"13982:11:75","nodeType":"YulFunctionCall","src":"13982:11:75"},{"kind":"number","nativeSrc":"13995:1:75","nodeType":"YulLiteral","src":"13995:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13978:3:75","nodeType":"YulIdentifier","src":"13978:3:75"},"nativeSrc":"13978:19:75","nodeType":"YulFunctionCall","src":"13978:19:75"}],"functionName":{"name":"and","nativeSrc":"13966:3:75","nodeType":"YulIdentifier","src":"13966:3:75"},"nativeSrc":"13966:32:75","nodeType":"YulFunctionCall","src":"13966:32:75"}],"functionName":{"name":"mstore","nativeSrc":"13948:6:75","nodeType":"YulIdentifier","src":"13948:6:75"},"nativeSrc":"13948:51:75","nodeType":"YulFunctionCall","src":"13948:51:75"},"nativeSrc":"13948:51:75","nodeType":"YulExpressionStatement","src":"13948:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14019:9:75","nodeType":"YulIdentifier","src":"14019:9:75"},{"kind":"number","nativeSrc":"14030:2:75","nodeType":"YulLiteral","src":"14030:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14015:3:75","nodeType":"YulIdentifier","src":"14015:3:75"},"nativeSrc":"14015:18:75","nodeType":"YulFunctionCall","src":"14015:18:75"},{"name":"value1","nativeSrc":"14035:6:75","nodeType":"YulIdentifier","src":"14035:6:75"}],"functionName":{"name":"mstore","nativeSrc":"14008:6:75","nodeType":"YulIdentifier","src":"14008:6:75"},"nativeSrc":"14008:34:75","nodeType":"YulFunctionCall","src":"14008:34:75"},"nativeSrc":"14008:34:75","nodeType":"YulExpressionStatement","src":"14008:34:75"}]},"name":"abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed","nativeSrc":"13774:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13864:9:75","nodeType":"YulTypedName","src":"13864:9:75","type":""},{"name":"value1","nativeSrc":"13875:6:75","nodeType":"YulTypedName","src":"13875:6:75","type":""},{"name":"value0","nativeSrc":"13883:6:75","nodeType":"YulTypedName","src":"13883:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13894:4:75","nodeType":"YulTypedName","src":"13894:4:75","type":""}],"src":"13774:274:75"},{"body":{"nativeSrc":"14182:119:75","nodeType":"YulBlock","src":"14182:119:75","statements":[{"nativeSrc":"14192:26:75","nodeType":"YulAssignment","src":"14192:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14204:9:75","nodeType":"YulIdentifier","src":"14204:9:75"},{"kind":"number","nativeSrc":"14215:2:75","nodeType":"YulLiteral","src":"14215:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"14200:3:75","nodeType":"YulIdentifier","src":"14200:3:75"},"nativeSrc":"14200:18:75","nodeType":"YulFunctionCall","src":"14200:18:75"},"variableNames":[{"name":"tail","nativeSrc":"14192:4:75","nodeType":"YulIdentifier","src":"14192:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14234:9:75","nodeType":"YulIdentifier","src":"14234:9:75"},{"name":"value0","nativeSrc":"14245:6:75","nodeType":"YulIdentifier","src":"14245:6:75"}],"functionName":{"name":"mstore","nativeSrc":"14227:6:75","nodeType":"YulIdentifier","src":"14227:6:75"},"nativeSrc":"14227:25:75","nodeType":"YulFunctionCall","src":"14227:25:75"},"nativeSrc":"14227:25:75","nodeType":"YulExpressionStatement","src":"14227:25:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14272:9:75","nodeType":"YulIdentifier","src":"14272:9:75"},{"kind":"number","nativeSrc":"14283:2:75","nodeType":"YulLiteral","src":"14283:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14268:3:75","nodeType":"YulIdentifier","src":"14268:3:75"},"nativeSrc":"14268:18:75","nodeType":"YulFunctionCall","src":"14268:18:75"},{"name":"value1","nativeSrc":"14288:6:75","nodeType":"YulIdentifier","src":"14288:6:75"}],"functionName":{"name":"mstore","nativeSrc":"14261:6:75","nodeType":"YulIdentifier","src":"14261:6:75"},"nativeSrc":"14261:34:75","nodeType":"YulFunctionCall","src":"14261:34:75"},"nativeSrc":"14261:34:75","nodeType":"YulExpressionStatement","src":"14261:34:75"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"14053:248:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14143:9:75","nodeType":"YulTypedName","src":"14143:9:75","type":""},{"name":"value1","nativeSrc":"14154:6:75","nodeType":"YulTypedName","src":"14154:6:75","type":""},{"name":"value0","nativeSrc":"14162:6:75","nodeType":"YulTypedName","src":"14162:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"14173:4:75","nodeType":"YulTypedName","src":"14173:4:75","type":""}],"src":"14053:248:75"},{"body":{"nativeSrc":"14443:164:75","nodeType":"YulBlock","src":"14443:164:75","statements":[{"nativeSrc":"14453:27:75","nodeType":"YulVariableDeclaration","src":"14453:27:75","value":{"arguments":[{"name":"value0","nativeSrc":"14473:6:75","nodeType":"YulIdentifier","src":"14473:6:75"}],"functionName":{"name":"mload","nativeSrc":"14467:5:75","nodeType":"YulIdentifier","src":"14467:5:75"},"nativeSrc":"14467:13:75","nodeType":"YulFunctionCall","src":"14467:13:75"},"variables":[{"name":"length","nativeSrc":"14457:6:75","nodeType":"YulTypedName","src":"14457:6:75","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"14495:3:75","nodeType":"YulIdentifier","src":"14495:3:75"},{"arguments":[{"name":"value0","nativeSrc":"14504:6:75","nodeType":"YulIdentifier","src":"14504:6:75"},{"kind":"number","nativeSrc":"14512:4:75","nodeType":"YulLiteral","src":"14512:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14500:3:75","nodeType":"YulIdentifier","src":"14500:3:75"},"nativeSrc":"14500:17:75","nodeType":"YulFunctionCall","src":"14500:17:75"},{"name":"length","nativeSrc":"14519:6:75","nodeType":"YulIdentifier","src":"14519:6:75"}],"functionName":{"name":"mcopy","nativeSrc":"14489:5:75","nodeType":"YulIdentifier","src":"14489:5:75"},"nativeSrc":"14489:37:75","nodeType":"YulFunctionCall","src":"14489:37:75"},"nativeSrc":"14489:37:75","nodeType":"YulExpressionStatement","src":"14489:37:75"},{"nativeSrc":"14535:26:75","nodeType":"YulVariableDeclaration","src":"14535:26:75","value":{"arguments":[{"name":"pos","nativeSrc":"14549:3:75","nodeType":"YulIdentifier","src":"14549:3:75"},{"name":"length","nativeSrc":"14554:6:75","nodeType":"YulIdentifier","src":"14554:6:75"}],"functionName":{"name":"add","nativeSrc":"14545:3:75","nodeType":"YulIdentifier","src":"14545:3:75"},"nativeSrc":"14545:16:75","nodeType":"YulFunctionCall","src":"14545:16:75"},"variables":[{"name":"_1","nativeSrc":"14539:2:75","nodeType":"YulTypedName","src":"14539:2:75","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"14577:2:75","nodeType":"YulIdentifier","src":"14577:2:75"},{"kind":"number","nativeSrc":"14581:1:75","nodeType":"YulLiteral","src":"14581:1:75","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"14570:6:75","nodeType":"YulIdentifier","src":"14570:6:75"},"nativeSrc":"14570:13:75","nodeType":"YulFunctionCall","src":"14570:13:75"},"nativeSrc":"14570:13:75","nodeType":"YulExpressionStatement","src":"14570:13:75"},{"nativeSrc":"14592:9:75","nodeType":"YulAssignment","src":"14592:9:75","value":{"name":"_1","nativeSrc":"14599:2:75","nodeType":"YulIdentifier","src":"14599:2:75"},"variableNames":[{"name":"end","nativeSrc":"14592:3:75","nodeType":"YulIdentifier","src":"14592:3:75"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"14306:301:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"14419:3:75","nodeType":"YulTypedName","src":"14419:3:75","type":""},{"name":"value0","nativeSrc":"14424:6:75","nodeType":"YulTypedName","src":"14424:6:75","type":""}],"returnVariables":[{"name":"end","nativeSrc":"14435:3:75","nodeType":"YulTypedName","src":"14435:3:75","type":""}],"src":"14306:301:75"},{"body":{"nativeSrc":"14693:170:75","nodeType":"YulBlock","src":"14693:170:75","statements":[{"body":{"nativeSrc":"14739:16:75","nodeType":"YulBlock","src":"14739:16:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14748:1:75","nodeType":"YulLiteral","src":"14748:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14751:1:75","nodeType":"YulLiteral","src":"14751:1:75","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14741:6:75","nodeType":"YulIdentifier","src":"14741:6:75"},"nativeSrc":"14741:12:75","nodeType":"YulFunctionCall","src":"14741:12:75"},"nativeSrc":"14741:12:75","nodeType":"YulExpressionStatement","src":"14741:12:75"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14714:7:75","nodeType":"YulIdentifier","src":"14714:7:75"},{"name":"headStart","nativeSrc":"14723:9:75","nodeType":"YulIdentifier","src":"14723:9:75"}],"functionName":{"name":"sub","nativeSrc":"14710:3:75","nodeType":"YulIdentifier","src":"14710:3:75"},"nativeSrc":"14710:23:75","nodeType":"YulFunctionCall","src":"14710:23:75"},{"kind":"number","nativeSrc":"14735:2:75","nodeType":"YulLiteral","src":"14735:2:75","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"14706:3:75","nodeType":"YulIdentifier","src":"14706:3:75"},"nativeSrc":"14706:32:75","nodeType":"YulFunctionCall","src":"14706:32:75"},"nativeSrc":"14703:52:75","nodeType":"YulIf","src":"14703:52:75"},{"nativeSrc":"14764:29:75","nodeType":"YulVariableDeclaration","src":"14764:29:75","value":{"arguments":[{"name":"headStart","nativeSrc":"14783:9:75","nodeType":"YulIdentifier","src":"14783:9:75"}],"functionName":{"name":"mload","nativeSrc":"14777:5:75","nodeType":"YulIdentifier","src":"14777:5:75"},"nativeSrc":"14777:16:75","nodeType":"YulFunctionCall","src":"14777:16:75"},"variables":[{"name":"value","nativeSrc":"14768:5:75","nodeType":"YulTypedName","src":"14768:5:75","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14827:5:75","nodeType":"YulIdentifier","src":"14827:5:75"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14802:24:75","nodeType":"YulIdentifier","src":"14802:24:75"},"nativeSrc":"14802:31:75","nodeType":"YulFunctionCall","src":"14802:31:75"},"nativeSrc":"14802:31:75","nodeType":"YulExpressionStatement","src":"14802:31:75"},{"nativeSrc":"14842:15:75","nodeType":"YulAssignment","src":"14842:15:75","value":{"name":"value","nativeSrc":"14852:5:75","nodeType":"YulIdentifier","src":"14852:5:75"},"variableNames":[{"name":"value0","nativeSrc":"14842:6:75","nodeType":"YulIdentifier","src":"14842:6:75"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14612:251:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14659:9:75","nodeType":"YulTypedName","src":"14659:9:75","type":""},{"name":"dataEnd","nativeSrc":"14670:7:75","nodeType":"YulTypedName","src":"14670:7:75","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14682:6:75","nodeType":"YulTypedName","src":"14682:6:75","type":""}],"src":"14612:251:75"},{"body":{"nativeSrc":"14900:95:75","nodeType":"YulBlock","src":"14900:95:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14917:1:75","nodeType":"YulLiteral","src":"14917:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14924:3:75","nodeType":"YulLiteral","src":"14924:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"14929:10:75","nodeType":"YulLiteral","src":"14929:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14920:3:75","nodeType":"YulIdentifier","src":"14920:3:75"},"nativeSrc":"14920:20:75","nodeType":"YulFunctionCall","src":"14920:20:75"}],"functionName":{"name":"mstore","nativeSrc":"14910:6:75","nodeType":"YulIdentifier","src":"14910:6:75"},"nativeSrc":"14910:31:75","nodeType":"YulFunctionCall","src":"14910:31:75"},"nativeSrc":"14910:31:75","nodeType":"YulExpressionStatement","src":"14910:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14957:1:75","nodeType":"YulLiteral","src":"14957:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"14960:4:75","nodeType":"YulLiteral","src":"14960:4:75","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"14950:6:75","nodeType":"YulIdentifier","src":"14950:6:75"},"nativeSrc":"14950:15:75","nodeType":"YulFunctionCall","src":"14950:15:75"},"nativeSrc":"14950:15:75","nodeType":"YulExpressionStatement","src":"14950:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14981:1:75","nodeType":"YulLiteral","src":"14981:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"14984:4:75","nodeType":"YulLiteral","src":"14984:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14974:6:75","nodeType":"YulIdentifier","src":"14974:6:75"},"nativeSrc":"14974:15:75","nodeType":"YulFunctionCall","src":"14974:15:75"},"nativeSrc":"14974:15:75","nodeType":"YulExpressionStatement","src":"14974:15:75"}]},"name":"panic_error_0x21","nativeSrc":"14868:127:75","nodeType":"YulFunctionDefinition","src":"14868:127:75"},{"body":{"nativeSrc":"15036:218:75","nodeType":"YulBlock","src":"15036:218:75","statements":[{"nativeSrc":"15046:23:75","nodeType":"YulVariableDeclaration","src":"15046:23:75","value":{"arguments":[{"name":"y","nativeSrc":"15061:1:75","nodeType":"YulIdentifier","src":"15061:1:75"},{"kind":"number","nativeSrc":"15064:4:75","nodeType":"YulLiteral","src":"15064:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15057:3:75","nodeType":"YulIdentifier","src":"15057:3:75"},"nativeSrc":"15057:12:75","nodeType":"YulFunctionCall","src":"15057:12:75"},"variables":[{"name":"y_1","nativeSrc":"15050:3:75","nodeType":"YulTypedName","src":"15050:3:75","type":""}]},{"body":{"nativeSrc":"15101:111:75","nodeType":"YulBlock","src":"15101:111:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15122:1:75","nodeType":"YulLiteral","src":"15122:1:75","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15129:3:75","nodeType":"YulLiteral","src":"15129:3:75","type":"","value":"224"},{"kind":"number","nativeSrc":"15134:10:75","nodeType":"YulLiteral","src":"15134:10:75","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15125:3:75","nodeType":"YulIdentifier","src":"15125:3:75"},"nativeSrc":"15125:20:75","nodeType":"YulFunctionCall","src":"15125:20:75"}],"functionName":{"name":"mstore","nativeSrc":"15115:6:75","nodeType":"YulIdentifier","src":"15115:6:75"},"nativeSrc":"15115:31:75","nodeType":"YulFunctionCall","src":"15115:31:75"},"nativeSrc":"15115:31:75","nodeType":"YulExpressionStatement","src":"15115:31:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15166:1:75","nodeType":"YulLiteral","src":"15166:1:75","type":"","value":"4"},{"kind":"number","nativeSrc":"15169:4:75","nodeType":"YulLiteral","src":"15169:4:75","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"15159:6:75","nodeType":"YulIdentifier","src":"15159:6:75"},"nativeSrc":"15159:15:75","nodeType":"YulFunctionCall","src":"15159:15:75"},"nativeSrc":"15159:15:75","nodeType":"YulExpressionStatement","src":"15159:15:75"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15194:1:75","nodeType":"YulLiteral","src":"15194:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"15197:4:75","nodeType":"YulLiteral","src":"15197:4:75","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15187:6:75","nodeType":"YulIdentifier","src":"15187:6:75"},"nativeSrc":"15187:15:75","nodeType":"YulFunctionCall","src":"15187:15:75"},"nativeSrc":"15187:15:75","nodeType":"YulExpressionStatement","src":"15187:15:75"}]},"condition":{"arguments":[{"name":"y_1","nativeSrc":"15088:3:75","nodeType":"YulIdentifier","src":"15088:3:75"}],"functionName":{"name":"iszero","nativeSrc":"15081:6:75","nodeType":"YulIdentifier","src":"15081:6:75"},"nativeSrc":"15081:11:75","nodeType":"YulFunctionCall","src":"15081:11:75"},"nativeSrc":"15078:134:75","nodeType":"YulIf","src":"15078:134:75"},{"nativeSrc":"15221:27:75","nodeType":"YulAssignment","src":"15221:27:75","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"15234:1:75","nodeType":"YulIdentifier","src":"15234:1:75"},{"kind":"number","nativeSrc":"15237:4:75","nodeType":"YulLiteral","src":"15237:4:75","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"15230:3:75","nodeType":"YulIdentifier","src":"15230:3:75"},"nativeSrc":"15230:12:75","nodeType":"YulFunctionCall","src":"15230:12:75"},{"name":"y_1","nativeSrc":"15244:3:75","nodeType":"YulIdentifier","src":"15244:3:75"}],"functionName":{"name":"mod","nativeSrc":"15226:3:75","nodeType":"YulIdentifier","src":"15226:3:75"},"nativeSrc":"15226:22:75","nodeType":"YulFunctionCall","src":"15226:22:75"},"variableNames":[{"name":"r","nativeSrc":"15221:1:75","nodeType":"YulIdentifier","src":"15221:1:75"}]}]},"name":"mod_t_uint8","nativeSrc":"15000:254:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15021:1:75","nodeType":"YulTypedName","src":"15021:1:75","type":""},{"name":"y","nativeSrc":"15024:1:75","nodeType":"YulTypedName","src":"15024:1:75","type":""}],"returnVariables":[{"name":"r","nativeSrc":"15030:1:75","nodeType":"YulTypedName","src":"15030:1:75","type":""}],"src":"15000:254:75"},{"body":{"nativeSrc":"15416:214:75","nodeType":"YulBlock","src":"15416:214:75","statements":[{"nativeSrc":"15426:26:75","nodeType":"YulAssignment","src":"15426:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15438:9:75","nodeType":"YulIdentifier","src":"15438:9:75"},{"kind":"number","nativeSrc":"15449:2:75","nodeType":"YulLiteral","src":"15449:2:75","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"15434:3:75","nodeType":"YulIdentifier","src":"15434:3:75"},"nativeSrc":"15434:18:75","nodeType":"YulFunctionCall","src":"15434:18:75"},"variableNames":[{"name":"tail","nativeSrc":"15426:4:75","nodeType":"YulIdentifier","src":"15426:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15468:9:75","nodeType":"YulIdentifier","src":"15468:9:75"},{"arguments":[{"name":"value0","nativeSrc":"15483:6:75","nodeType":"YulIdentifier","src":"15483:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15499:3:75","nodeType":"YulLiteral","src":"15499:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"15504:1:75","nodeType":"YulLiteral","src":"15504:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15495:3:75","nodeType":"YulIdentifier","src":"15495:3:75"},"nativeSrc":"15495:11:75","nodeType":"YulFunctionCall","src":"15495:11:75"},{"kind":"number","nativeSrc":"15508:1:75","nodeType":"YulLiteral","src":"15508:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15491:3:75","nodeType":"YulIdentifier","src":"15491:3:75"},"nativeSrc":"15491:19:75","nodeType":"YulFunctionCall","src":"15491:19:75"}],"functionName":{"name":"and","nativeSrc":"15479:3:75","nodeType":"YulIdentifier","src":"15479:3:75"},"nativeSrc":"15479:32:75","nodeType":"YulFunctionCall","src":"15479:32:75"}],"functionName":{"name":"mstore","nativeSrc":"15461:6:75","nodeType":"YulIdentifier","src":"15461:6:75"},"nativeSrc":"15461:51:75","nodeType":"YulFunctionCall","src":"15461:51:75"},"nativeSrc":"15461:51:75","nodeType":"YulExpressionStatement","src":"15461:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15532:9:75","nodeType":"YulIdentifier","src":"15532:9:75"},{"kind":"number","nativeSrc":"15543:2:75","nodeType":"YulLiteral","src":"15543:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15528:3:75","nodeType":"YulIdentifier","src":"15528:3:75"},"nativeSrc":"15528:18:75","nodeType":"YulFunctionCall","src":"15528:18:75"},{"arguments":[{"name":"value1","nativeSrc":"15552:6:75","nodeType":"YulIdentifier","src":"15552:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15568:3:75","nodeType":"YulLiteral","src":"15568:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"15573:1:75","nodeType":"YulLiteral","src":"15573:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15564:3:75","nodeType":"YulIdentifier","src":"15564:3:75"},"nativeSrc":"15564:11:75","nodeType":"YulFunctionCall","src":"15564:11:75"},{"kind":"number","nativeSrc":"15577:1:75","nodeType":"YulLiteral","src":"15577:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15560:3:75","nodeType":"YulIdentifier","src":"15560:3:75"},"nativeSrc":"15560:19:75","nodeType":"YulFunctionCall","src":"15560:19:75"}],"functionName":{"name":"and","nativeSrc":"15548:3:75","nodeType":"YulIdentifier","src":"15548:3:75"},"nativeSrc":"15548:32:75","nodeType":"YulFunctionCall","src":"15548:32:75"}],"functionName":{"name":"mstore","nativeSrc":"15521:6:75","nodeType":"YulIdentifier","src":"15521:6:75"},"nativeSrc":"15521:60:75","nodeType":"YulFunctionCall","src":"15521:60:75"},"nativeSrc":"15521:60:75","nodeType":"YulExpressionStatement","src":"15521:60:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15601:9:75","nodeType":"YulIdentifier","src":"15601:9:75"},{"kind":"number","nativeSrc":"15612:2:75","nodeType":"YulLiteral","src":"15612:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15597:3:75","nodeType":"YulIdentifier","src":"15597:3:75"},"nativeSrc":"15597:18:75","nodeType":"YulFunctionCall","src":"15597:18:75"},{"name":"value2","nativeSrc":"15617:6:75","nodeType":"YulIdentifier","src":"15617:6:75"}],"functionName":{"name":"mstore","nativeSrc":"15590:6:75","nodeType":"YulIdentifier","src":"15590:6:75"},"nativeSrc":"15590:34:75","nodeType":"YulFunctionCall","src":"15590:34:75"},"nativeSrc":"15590:34:75","nodeType":"YulExpressionStatement","src":"15590:34:75"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"15259:371:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15369:9:75","nodeType":"YulTypedName","src":"15369:9:75","type":""},{"name":"value2","nativeSrc":"15380:6:75","nodeType":"YulTypedName","src":"15380:6:75","type":""},{"name":"value1","nativeSrc":"15388:6:75","nodeType":"YulTypedName","src":"15388:6:75","type":""},{"name":"value0","nativeSrc":"15396:6:75","nodeType":"YulTypedName","src":"15396:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15407:4:75","nodeType":"YulTypedName","src":"15407:4:75","type":""}],"src":"15259:371:75"},{"body":{"nativeSrc":"15764:145:75","nodeType":"YulBlock","src":"15764:145:75","statements":[{"nativeSrc":"15774:26:75","nodeType":"YulAssignment","src":"15774:26:75","value":{"arguments":[{"name":"headStart","nativeSrc":"15786:9:75","nodeType":"YulIdentifier","src":"15786:9:75"},{"kind":"number","nativeSrc":"15797:2:75","nodeType":"YulLiteral","src":"15797:2:75","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15782:3:75","nodeType":"YulIdentifier","src":"15782:3:75"},"nativeSrc":"15782:18:75","nodeType":"YulFunctionCall","src":"15782:18:75"},"variableNames":[{"name":"tail","nativeSrc":"15774:4:75","nodeType":"YulIdentifier","src":"15774:4:75"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15816:9:75","nodeType":"YulIdentifier","src":"15816:9:75"},{"arguments":[{"name":"value0","nativeSrc":"15831:6:75","nodeType":"YulIdentifier","src":"15831:6:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15847:3:75","nodeType":"YulLiteral","src":"15847:3:75","type":"","value":"160"},{"kind":"number","nativeSrc":"15852:1:75","nodeType":"YulLiteral","src":"15852:1:75","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"15843:3:75","nodeType":"YulIdentifier","src":"15843:3:75"},"nativeSrc":"15843:11:75","nodeType":"YulFunctionCall","src":"15843:11:75"},{"kind":"number","nativeSrc":"15856:1:75","nodeType":"YulLiteral","src":"15856:1:75","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"15839:3:75","nodeType":"YulIdentifier","src":"15839:3:75"},"nativeSrc":"15839:19:75","nodeType":"YulFunctionCall","src":"15839:19:75"}],"functionName":{"name":"and","nativeSrc":"15827:3:75","nodeType":"YulIdentifier","src":"15827:3:75"},"nativeSrc":"15827:32:75","nodeType":"YulFunctionCall","src":"15827:32:75"}],"functionName":{"name":"mstore","nativeSrc":"15809:6:75","nodeType":"YulIdentifier","src":"15809:6:75"},"nativeSrc":"15809:51:75","nodeType":"YulFunctionCall","src":"15809:51:75"},"nativeSrc":"15809:51:75","nodeType":"YulExpressionStatement","src":"15809:51:75"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15880:9:75","nodeType":"YulIdentifier","src":"15880:9:75"},{"kind":"number","nativeSrc":"15891:2:75","nodeType":"YulLiteral","src":"15891:2:75","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15876:3:75","nodeType":"YulIdentifier","src":"15876:3:75"},"nativeSrc":"15876:18:75","nodeType":"YulFunctionCall","src":"15876:18:75"},{"name":"value1","nativeSrc":"15896:6:75","nodeType":"YulIdentifier","src":"15896:6:75"}],"functionName":{"name":"mstore","nativeSrc":"15869:6:75","nodeType":"YulIdentifier","src":"15869:6:75"},"nativeSrc":"15869:34:75","nodeType":"YulFunctionCall","src":"15869:34:75"},"nativeSrc":"15869:34:75","nodeType":"YulExpressionStatement","src":"15869:34:75"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"15635:274:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15725:9:75","nodeType":"YulTypedName","src":"15725:9:75","type":""},{"name":"value1","nativeSrc":"15736:6:75","nodeType":"YulTypedName","src":"15736:6:75","type":""},{"name":"value0","nativeSrc":"15744:6:75","nodeType":"YulTypedName","src":"15744:6:75","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15755:4:75","nodeType":"YulTypedName","src":"15755:4:75","type":""}],"src":"15635:274:75"},{"body":{"nativeSrc":"15970:65:75","nodeType":"YulBlock","src":"15970:65:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15987:1:75","nodeType":"YulLiteral","src":"15987:1:75","type":"","value":"0"},{"name":"ptr","nativeSrc":"15990:3:75","nodeType":"YulIdentifier","src":"15990:3:75"}],"functionName":{"name":"mstore","nativeSrc":"15980:6:75","nodeType":"YulIdentifier","src":"15980:6:75"},"nativeSrc":"15980:14:75","nodeType":"YulFunctionCall","src":"15980:14:75"},"nativeSrc":"15980:14:75","nodeType":"YulExpressionStatement","src":"15980:14:75"},{"nativeSrc":"16003:26:75","nodeType":"YulAssignment","src":"16003:26:75","value":{"arguments":[{"kind":"number","nativeSrc":"16021:1:75","nodeType":"YulLiteral","src":"16021:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16024:4:75","nodeType":"YulLiteral","src":"16024:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"16011:9:75","nodeType":"YulIdentifier","src":"16011:9:75"},"nativeSrc":"16011:18:75","nodeType":"YulFunctionCall","src":"16011:18:75"},"variableNames":[{"name":"data","nativeSrc":"16003:4:75","nodeType":"YulIdentifier","src":"16003:4:75"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"15914:121:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"15953:3:75","nodeType":"YulTypedName","src":"15953:3:75","type":""}],"returnVariables":[{"name":"data","nativeSrc":"15961:4:75","nodeType":"YulTypedName","src":"15961:4:75","type":""}],"src":"15914:121:75"},{"body":{"nativeSrc":"16121:437:75","nodeType":"YulBlock","src":"16121:437:75","statements":[{"body":{"nativeSrc":"16154:398:75","nodeType":"YulBlock","src":"16154:398:75","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16175:1:75","nodeType":"YulLiteral","src":"16175:1:75","type":"","value":"0"},{"name":"array","nativeSrc":"16178:5:75","nodeType":"YulIdentifier","src":"16178:5:75"}],"functionName":{"name":"mstore","nativeSrc":"16168:6:75","nodeType":"YulIdentifier","src":"16168:6:75"},"nativeSrc":"16168:16:75","nodeType":"YulFunctionCall","src":"16168:16:75"},"nativeSrc":"16168:16:75","nodeType":"YulExpressionStatement","src":"16168:16:75"},{"nativeSrc":"16197:30:75","nodeType":"YulVariableDeclaration","src":"16197:30:75","value":{"arguments":[{"kind":"number","nativeSrc":"16219:1:75","nodeType":"YulLiteral","src":"16219:1:75","type":"","value":"0"},{"kind":"number","nativeSrc":"16222:4:75","nodeType":"YulLiteral","src":"16222:4:75","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"16209:9:75","nodeType":"YulIdentifier","src":"16209:9:75"},"nativeSrc":"16209:18:75","nodeType":"YulFunctionCall","src":"16209:18:75"},"variables":[{"name":"data","nativeSrc":"16201:4:75","nodeType":"YulTypedName","src":"16201:4:75","type":""}]},{"nativeSrc":"16240:57:75","nodeType":"YulVariableDeclaration","src":"16240:57:75","value":{"arguments":[{"name":"data","nativeSrc":"16263:4:75","nodeType":"YulIdentifier","src":"16263:4:75"},{"arguments":[{"kind":"number","nativeSrc":"16273:1:75","nodeType":"YulLiteral","src":"16273:1:75","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"16280:10:75","nodeType":"YulIdentifier","src":"16280:10:75"},{"kind":"number","nativeSrc":"16292:2:75","nodeType":"YulLiteral","src":"16292:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16276:3:75","nodeType":"YulIdentifier","src":"16276:3:75"},"nativeSrc":"16276:19:75","nodeType":"YulFunctionCall","src":"16276:19:75"}],"functionName":{"name":"shr","nativeSrc":"16269:3:75","nodeType":"YulIdentifier","src":"16269:3:75"},"nativeSrc":"16269:27:75","nodeType":"YulFunctionCall","src":"16269:27:75"}],"functionName":{"name":"add","nativeSrc":"16259:3:75","nodeType":"YulIdentifier","src":"16259:3:75"},"nativeSrc":"16259:38:75","nodeType":"YulFunctionCall","src":"16259:38:75"},"variables":[{"name":"deleteStart","nativeSrc":"16244:11:75","nodeType":"YulTypedName","src":"16244:11:75","type":""}]},{"body":{"nativeSrc":"16334:23:75","nodeType":"YulBlock","src":"16334:23:75","statements":[{"nativeSrc":"16336:19:75","nodeType":"YulAssignment","src":"16336:19:75","value":{"name":"data","nativeSrc":"16351:4:75","nodeType":"YulIdentifier","src":"16351:4:75"},"variableNames":[{"name":"deleteStart","nativeSrc":"16336:11:75","nodeType":"YulIdentifier","src":"16336:11:75"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"16316:10:75","nodeType":"YulIdentifier","src":"16316:10:75"},{"kind":"number","nativeSrc":"16328:4:75","nodeType":"YulLiteral","src":"16328:4:75","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"16313:2:75","nodeType":"YulIdentifier","src":"16313:2:75"},"nativeSrc":"16313:20:75","nodeType":"YulFunctionCall","src":"16313:20:75"},"nativeSrc":"16310:47:75","nodeType":"YulIf","src":"16310:47:75"},{"nativeSrc":"16370:41:75","nodeType":"YulVariableDeclaration","src":"16370:41:75","value":{"arguments":[{"name":"data","nativeSrc":"16384:4:75","nodeType":"YulIdentifier","src":"16384:4:75"},{"arguments":[{"kind":"number","nativeSrc":"16394:1:75","nodeType":"YulLiteral","src":"16394:1:75","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"16401:3:75","nodeType":"YulIdentifier","src":"16401:3:75"},{"kind":"number","nativeSrc":"16406:2:75","nodeType":"YulLiteral","src":"16406:2:75","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16397:3:75","nodeType":"YulIdentifier","src":"16397:3:75"},"nativeSrc":"16397:12:75","nodeType":"YulFunctionCall","src":"16397:12:75"}],"functionName":{"name":"shr","nativeSrc":"16390:3:75","nodeType":"YulIdentifier","src":"16390:3:75"},"nativeSrc":"16390:20:75","nodeType":"YulFunctionCall","src":"16390:20:75"}],"functionName":{"name":"add","nativeSrc":"16380:3:75","nodeType":"YulIdentifier","src":"16380:3:75"},"nativeSrc":"16380:31:75","nodeType":"YulFunctionCall","src":"16380:31:75"},"variables":[{"name":"_1","nativeSrc":"16374:2:75","nodeType":"YulTypedName","src":"16374:2:75","type":""}]},{"nativeSrc":"16424:24:75","nodeType":"YulVariableDeclaration","src":"16424:24:75","value":{"name":"deleteStart","nativeSrc":"16437:11:75","nodeType":"YulIdentifier","src":"16437:11:75"},"variables":[{"name":"start","nativeSrc":"16428:5:75","nodeType":"YulTypedName","src":"16428:5:75","type":""}]},{"body":{"nativeSrc":"16522:20:75","nodeType":"YulBlock","src":"16522:20:75","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"16531:5:75","nodeType":"YulIdentifier","src":"16531:5:75"},{"kind":"number","nativeSrc":"16538:1:75","nodeType":"YulLiteral","src":"16538:1:75","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"16524:6:75","nodeType":"YulIdentifier","src":"16524:6:75"},"nativeSrc":"16524:16:75","nodeType":"YulFunctionCall","src":"16524:16:75"},"nativeSrc":"16524:16:75","nodeType":"YulExpressionStatement","src":"16524:16:75"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"16472:5:75","nodeType":"YulIdentifier","src":"16472:5:75"},{"name":"_1","nativeSrc":"16479:2:75","nodeType":"YulIdentifier","src":"16479:2:75"}],"functionName":{"name":"lt","nativeSrc":"16469:2:75","nodeType":"YulIdentifier","src":"16469:2:75"},"nativeSrc":"16469:13:75","nodeType":"YulFunctionCall","src":"16469:13:75"},"nativeSrc":"16461:81:75","nodeType":"YulForLoop","post":{"nativeSrc":"16483:26:75","nodeType":"YulBlock","src":"16483:26:75","statements":[{"nativeSrc":"16485:22:75","nodeType":"YulAssignment","src":"16485:22:75","value":{"arguments":[{"name":"start","nativeSrc":"16498:5:75","nodeType":"YulIdentifier","src":"16498:5:75"},{"kind":"number","nativeSrc":"16505:1:75","nodeType":"YulLiteral","src":"16505:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"16494:3:75","nodeType":"YulIdentifier","src":"16494:3:75"},"nativeSrc":"16494:13:75","nodeType":"YulFunctionCall","src":"16494:13:75"},"variableNames":[{"name":"start","nativeSrc":"16485:5:75","nodeType":"YulIdentifier","src":"16485:5:75"}]}]},"pre":{"nativeSrc":"16465:3:75","nodeType":"YulBlock","src":"16465:3:75","statements":[]},"src":"16461:81:75"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"16137:3:75","nodeType":"YulIdentifier","src":"16137:3:75"},{"kind":"number","nativeSrc":"16142:2:75","nodeType":"YulLiteral","src":"16142:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"16134:2:75","nodeType":"YulIdentifier","src":"16134:2:75"},"nativeSrc":"16134:11:75","nodeType":"YulFunctionCall","src":"16134:11:75"},"nativeSrc":"16131:421:75","nodeType":"YulIf","src":"16131:421:75"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"16040:518:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"16093:5:75","nodeType":"YulTypedName","src":"16093:5:75","type":""},{"name":"len","nativeSrc":"16100:3:75","nodeType":"YulTypedName","src":"16100:3:75","type":""},{"name":"startIndex","nativeSrc":"16105:10:75","nodeType":"YulTypedName","src":"16105:10:75","type":""}],"src":"16040:518:75"},{"body":{"nativeSrc":"16648:81:75","nodeType":"YulBlock","src":"16648:81:75","statements":[{"nativeSrc":"16658:65:75","nodeType":"YulAssignment","src":"16658:65:75","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"16673:4:75","nodeType":"YulIdentifier","src":"16673:4:75"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16691:1:75","nodeType":"YulLiteral","src":"16691:1:75","type":"","value":"3"},{"name":"len","nativeSrc":"16694:3:75","nodeType":"YulIdentifier","src":"16694:3:75"}],"functionName":{"name":"shl","nativeSrc":"16687:3:75","nodeType":"YulIdentifier","src":"16687:3:75"},"nativeSrc":"16687:11:75","nodeType":"YulFunctionCall","src":"16687:11:75"},{"arguments":[{"kind":"number","nativeSrc":"16704:1:75","nodeType":"YulLiteral","src":"16704:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"16700:3:75","nodeType":"YulIdentifier","src":"16700:3:75"},"nativeSrc":"16700:6:75","nodeType":"YulFunctionCall","src":"16700:6:75"}],"functionName":{"name":"shr","nativeSrc":"16683:3:75","nodeType":"YulIdentifier","src":"16683:3:75"},"nativeSrc":"16683:24:75","nodeType":"YulFunctionCall","src":"16683:24:75"}],"functionName":{"name":"not","nativeSrc":"16679:3:75","nodeType":"YulIdentifier","src":"16679:3:75"},"nativeSrc":"16679:29:75","nodeType":"YulFunctionCall","src":"16679:29:75"}],"functionName":{"name":"and","nativeSrc":"16669:3:75","nodeType":"YulIdentifier","src":"16669:3:75"},"nativeSrc":"16669:40:75","nodeType":"YulFunctionCall","src":"16669:40:75"},{"arguments":[{"kind":"number","nativeSrc":"16715:1:75","nodeType":"YulLiteral","src":"16715:1:75","type":"","value":"1"},{"name":"len","nativeSrc":"16718:3:75","nodeType":"YulIdentifier","src":"16718:3:75"}],"functionName":{"name":"shl","nativeSrc":"16711:3:75","nodeType":"YulIdentifier","src":"16711:3:75"},"nativeSrc":"16711:11:75","nodeType":"YulFunctionCall","src":"16711:11:75"}],"functionName":{"name":"or","nativeSrc":"16666:2:75","nodeType":"YulIdentifier","src":"16666:2:75"},"nativeSrc":"16666:57:75","nodeType":"YulFunctionCall","src":"16666:57:75"},"variableNames":[{"name":"used","nativeSrc":"16658:4:75","nodeType":"YulIdentifier","src":"16658:4:75"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"16563:166:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"16625:4:75","nodeType":"YulTypedName","src":"16625:4:75","type":""},{"name":"len","nativeSrc":"16631:3:75","nodeType":"YulTypedName","src":"16631:3:75","type":""}],"returnVariables":[{"name":"used","nativeSrc":"16639:4:75","nodeType":"YulTypedName","src":"16639:4:75","type":""}],"src":"16563:166:75"},{"body":{"nativeSrc":"16830:1203:75","nodeType":"YulBlock","src":"16830:1203:75","statements":[{"nativeSrc":"16840:24:75","nodeType":"YulVariableDeclaration","src":"16840:24:75","value":{"arguments":[{"name":"src","nativeSrc":"16860:3:75","nodeType":"YulIdentifier","src":"16860:3:75"}],"functionName":{"name":"mload","nativeSrc":"16854:5:75","nodeType":"YulIdentifier","src":"16854:5:75"},"nativeSrc":"16854:10:75","nodeType":"YulFunctionCall","src":"16854:10:75"},"variables":[{"name":"newLen","nativeSrc":"16844:6:75","nodeType":"YulTypedName","src":"16844:6:75","type":""}]},{"body":{"nativeSrc":"16907:22:75","nodeType":"YulBlock","src":"16907:22:75","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16909:16:75","nodeType":"YulIdentifier","src":"16909:16:75"},"nativeSrc":"16909:18:75","nodeType":"YulFunctionCall","src":"16909:18:75"},"nativeSrc":"16909:18:75","nodeType":"YulExpressionStatement","src":"16909:18:75"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"16879:6:75","nodeType":"YulIdentifier","src":"16879:6:75"},{"kind":"number","nativeSrc":"16887:18:75","nodeType":"YulLiteral","src":"16887:18:75","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16876:2:75","nodeType":"YulIdentifier","src":"16876:2:75"},"nativeSrc":"16876:30:75","nodeType":"YulFunctionCall","src":"16876:30:75"},"nativeSrc":"16873:56:75","nodeType":"YulIf","src":"16873:56:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"16982:4:75","nodeType":"YulIdentifier","src":"16982:4:75"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"17020:4:75","nodeType":"YulIdentifier","src":"17020:4:75"}],"functionName":{"name":"sload","nativeSrc":"17014:5:75","nodeType":"YulIdentifier","src":"17014:5:75"},"nativeSrc":"17014:11:75","nodeType":"YulFunctionCall","src":"17014:11:75"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"16988:25:75","nodeType":"YulIdentifier","src":"16988:25:75"},"nativeSrc":"16988:38:75","nodeType":"YulFunctionCall","src":"16988:38:75"},{"name":"newLen","nativeSrc":"17028:6:75","nodeType":"YulIdentifier","src":"17028:6:75"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"16938:43:75","nodeType":"YulIdentifier","src":"16938:43:75"},"nativeSrc":"16938:97:75","nodeType":"YulFunctionCall","src":"16938:97:75"},"nativeSrc":"16938:97:75","nodeType":"YulExpressionStatement","src":"16938:97:75"},{"nativeSrc":"17044:18:75","nodeType":"YulVariableDeclaration","src":"17044:18:75","value":{"kind":"number","nativeSrc":"17061:1:75","nodeType":"YulLiteral","src":"17061:1:75","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"17048:9:75","nodeType":"YulTypedName","src":"17048:9:75","type":""}]},{"nativeSrc":"17071:17:75","nodeType":"YulAssignment","src":"17071:17:75","value":{"kind":"number","nativeSrc":"17084:4:75","nodeType":"YulLiteral","src":"17084:4:75","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"17071:9:75","nodeType":"YulIdentifier","src":"17071:9:75"}]},{"cases":[{"body":{"nativeSrc":"17134:642:75","nodeType":"YulBlock","src":"17134:642:75","statements":[{"nativeSrc":"17148:35:75","nodeType":"YulVariableDeclaration","src":"17148:35:75","value":{"arguments":[{"name":"newLen","nativeSrc":"17167:6:75","nodeType":"YulIdentifier","src":"17167:6:75"},{"arguments":[{"kind":"number","nativeSrc":"17179:2:75","nodeType":"YulLiteral","src":"17179:2:75","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17175:3:75","nodeType":"YulIdentifier","src":"17175:3:75"},"nativeSrc":"17175:7:75","nodeType":"YulFunctionCall","src":"17175:7:75"}],"functionName":{"name":"and","nativeSrc":"17163:3:75","nodeType":"YulIdentifier","src":"17163:3:75"},"nativeSrc":"17163:20:75","nodeType":"YulFunctionCall","src":"17163:20:75"},"variables":[{"name":"loopEnd","nativeSrc":"17152:7:75","nodeType":"YulTypedName","src":"17152:7:75","type":""}]},{"nativeSrc":"17196:49:75","nodeType":"YulVariableDeclaration","src":"17196:49:75","value":{"arguments":[{"name":"slot","nativeSrc":"17240:4:75","nodeType":"YulIdentifier","src":"17240:4:75"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"17210:29:75","nodeType":"YulIdentifier","src":"17210:29:75"},"nativeSrc":"17210:35:75","nodeType":"YulFunctionCall","src":"17210:35:75"},"variables":[{"name":"dstPtr","nativeSrc":"17200:6:75","nodeType":"YulTypedName","src":"17200:6:75","type":""}]},{"nativeSrc":"17258:10:75","nodeType":"YulVariableDeclaration","src":"17258:10:75","value":{"kind":"number","nativeSrc":"17267:1:75","nodeType":"YulLiteral","src":"17267:1:75","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"17262:1:75","nodeType":"YulTypedName","src":"17262:1:75","type":""}]},{"body":{"nativeSrc":"17338:165:75","nodeType":"YulBlock","src":"17338:165:75","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"17363:6:75","nodeType":"YulIdentifier","src":"17363:6:75"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"17381:3:75","nodeType":"YulIdentifier","src":"17381:3:75"},{"name":"srcOffset","nativeSrc":"17386:9:75","nodeType":"YulIdentifier","src":"17386:9:75"}],"functionName":{"name":"add","nativeSrc":"17377:3:75","nodeType":"YulIdentifier","src":"17377:3:75"},"nativeSrc":"17377:19:75","nodeType":"YulFunctionCall","src":"17377:19:75"}],"functionName":{"name":"mload","nativeSrc":"17371:5:75","nodeType":"YulIdentifier","src":"17371:5:75"},"nativeSrc":"17371:26:75","nodeType":"YulFunctionCall","src":"17371:26:75"}],"functionName":{"name":"sstore","nativeSrc":"17356:6:75","nodeType":"YulIdentifier","src":"17356:6:75"},"nativeSrc":"17356:42:75","nodeType":"YulFunctionCall","src":"17356:42:75"},"nativeSrc":"17356:42:75","nodeType":"YulExpressionStatement","src":"17356:42:75"},{"nativeSrc":"17415:24:75","nodeType":"YulAssignment","src":"17415:24:75","value":{"arguments":[{"name":"dstPtr","nativeSrc":"17429:6:75","nodeType":"YulIdentifier","src":"17429:6:75"},{"kind":"number","nativeSrc":"17437:1:75","nodeType":"YulLiteral","src":"17437:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17425:3:75","nodeType":"YulIdentifier","src":"17425:3:75"},"nativeSrc":"17425:14:75","nodeType":"YulFunctionCall","src":"17425:14:75"},"variableNames":[{"name":"dstPtr","nativeSrc":"17415:6:75","nodeType":"YulIdentifier","src":"17415:6:75"}]},{"nativeSrc":"17456:33:75","nodeType":"YulAssignment","src":"17456:33:75","value":{"arguments":[{"name":"srcOffset","nativeSrc":"17473:9:75","nodeType":"YulIdentifier","src":"17473:9:75"},{"kind":"number","nativeSrc":"17484:4:75","nodeType":"YulLiteral","src":"17484:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17469:3:75","nodeType":"YulIdentifier","src":"17469:3:75"},"nativeSrc":"17469:20:75","nodeType":"YulFunctionCall","src":"17469:20:75"},"variableNames":[{"name":"srcOffset","nativeSrc":"17456:9:75","nodeType":"YulIdentifier","src":"17456:9:75"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"17292:1:75","nodeType":"YulIdentifier","src":"17292:1:75"},{"name":"loopEnd","nativeSrc":"17295:7:75","nodeType":"YulIdentifier","src":"17295:7:75"}],"functionName":{"name":"lt","nativeSrc":"17289:2:75","nodeType":"YulIdentifier","src":"17289:2:75"},"nativeSrc":"17289:14:75","nodeType":"YulFunctionCall","src":"17289:14:75"},"nativeSrc":"17281:222:75","nodeType":"YulForLoop","post":{"nativeSrc":"17304:21:75","nodeType":"YulBlock","src":"17304:21:75","statements":[{"nativeSrc":"17306:17:75","nodeType":"YulAssignment","src":"17306:17:75","value":{"arguments":[{"name":"i","nativeSrc":"17315:1:75","nodeType":"YulIdentifier","src":"17315:1:75"},{"kind":"number","nativeSrc":"17318:4:75","nodeType":"YulLiteral","src":"17318:4:75","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17311:3:75","nodeType":"YulIdentifier","src":"17311:3:75"},"nativeSrc":"17311:12:75","nodeType":"YulFunctionCall","src":"17311:12:75"},"variableNames":[{"name":"i","nativeSrc":"17306:1:75","nodeType":"YulIdentifier","src":"17306:1:75"}]}]},"pre":{"nativeSrc":"17285:3:75","nodeType":"YulBlock","src":"17285:3:75","statements":[]},"src":"17281:222:75"},{"body":{"nativeSrc":"17551:166:75","nodeType":"YulBlock","src":"17551:166:75","statements":[{"nativeSrc":"17569:43:75","nodeType":"YulVariableDeclaration","src":"17569:43:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"17596:3:75","nodeType":"YulIdentifier","src":"17596:3:75"},{"name":"srcOffset","nativeSrc":"17601:9:75","nodeType":"YulIdentifier","src":"17601:9:75"}],"functionName":{"name":"add","nativeSrc":"17592:3:75","nodeType":"YulIdentifier","src":"17592:3:75"},"nativeSrc":"17592:19:75","nodeType":"YulFunctionCall","src":"17592:19:75"}],"functionName":{"name":"mload","nativeSrc":"17586:5:75","nodeType":"YulIdentifier","src":"17586:5:75"},"nativeSrc":"17586:26:75","nodeType":"YulFunctionCall","src":"17586:26:75"},"variables":[{"name":"lastValue","nativeSrc":"17573:9:75","nodeType":"YulTypedName","src":"17573:9:75","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"17636:6:75","nodeType":"YulIdentifier","src":"17636:6:75"},{"arguments":[{"name":"lastValue","nativeSrc":"17648:9:75","nodeType":"YulIdentifier","src":"17648:9:75"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17675:1:75","nodeType":"YulLiteral","src":"17675:1:75","type":"","value":"3"},{"name":"newLen","nativeSrc":"17678:6:75","nodeType":"YulIdentifier","src":"17678:6:75"}],"functionName":{"name":"shl","nativeSrc":"17671:3:75","nodeType":"YulIdentifier","src":"17671:3:75"},"nativeSrc":"17671:14:75","nodeType":"YulFunctionCall","src":"17671:14:75"},{"kind":"number","nativeSrc":"17687:3:75","nodeType":"YulLiteral","src":"17687:3:75","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"17667:3:75","nodeType":"YulIdentifier","src":"17667:3:75"},"nativeSrc":"17667:24:75","nodeType":"YulFunctionCall","src":"17667:24:75"},{"arguments":[{"kind":"number","nativeSrc":"17697:1:75","nodeType":"YulLiteral","src":"17697:1:75","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"17693:3:75","nodeType":"YulIdentifier","src":"17693:3:75"},"nativeSrc":"17693:6:75","nodeType":"YulFunctionCall","src":"17693:6:75"}],"functionName":{"name":"shr","nativeSrc":"17663:3:75","nodeType":"YulIdentifier","src":"17663:3:75"},"nativeSrc":"17663:37:75","nodeType":"YulFunctionCall","src":"17663:37:75"}],"functionName":{"name":"not","nativeSrc":"17659:3:75","nodeType":"YulIdentifier","src":"17659:3:75"},"nativeSrc":"17659:42:75","nodeType":"YulFunctionCall","src":"17659:42:75"}],"functionName":{"name":"and","nativeSrc":"17644:3:75","nodeType":"YulIdentifier","src":"17644:3:75"},"nativeSrc":"17644:58:75","nodeType":"YulFunctionCall","src":"17644:58:75"}],"functionName":{"name":"sstore","nativeSrc":"17629:6:75","nodeType":"YulIdentifier","src":"17629:6:75"},"nativeSrc":"17629:74:75","nodeType":"YulFunctionCall","src":"17629:74:75"},"nativeSrc":"17629:74:75","nodeType":"YulExpressionStatement","src":"17629:74:75"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"17522:7:75","nodeType":"YulIdentifier","src":"17522:7:75"},{"name":"newLen","nativeSrc":"17531:6:75","nodeType":"YulIdentifier","src":"17531:6:75"}],"functionName":{"name":"lt","nativeSrc":"17519:2:75","nodeType":"YulIdentifier","src":"17519:2:75"},"nativeSrc":"17519:19:75","nodeType":"YulFunctionCall","src":"17519:19:75"},"nativeSrc":"17516:201:75","nodeType":"YulIf","src":"17516:201:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"17737:4:75","nodeType":"YulIdentifier","src":"17737:4:75"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17751:1:75","nodeType":"YulLiteral","src":"17751:1:75","type":"","value":"1"},{"name":"newLen","nativeSrc":"17754:6:75","nodeType":"YulIdentifier","src":"17754:6:75"}],"functionName":{"name":"shl","nativeSrc":"17747:3:75","nodeType":"YulIdentifier","src":"17747:3:75"},"nativeSrc":"17747:14:75","nodeType":"YulFunctionCall","src":"17747:14:75"},{"kind":"number","nativeSrc":"17763:1:75","nodeType":"YulLiteral","src":"17763:1:75","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"17743:3:75","nodeType":"YulIdentifier","src":"17743:3:75"},"nativeSrc":"17743:22:75","nodeType":"YulFunctionCall","src":"17743:22:75"}],"functionName":{"name":"sstore","nativeSrc":"17730:6:75","nodeType":"YulIdentifier","src":"17730:6:75"},"nativeSrc":"17730:36:75","nodeType":"YulFunctionCall","src":"17730:36:75"},"nativeSrc":"17730:36:75","nodeType":"YulExpressionStatement","src":"17730:36:75"}]},"nativeSrc":"17127:649:75","nodeType":"YulCase","src":"17127:649:75","value":{"kind":"number","nativeSrc":"17132:1:75","nodeType":"YulLiteral","src":"17132:1:75","type":"","value":"1"}},{"body":{"nativeSrc":"17793:234:75","nodeType":"YulBlock","src":"17793:234:75","statements":[{"nativeSrc":"17807:14:75","nodeType":"YulVariableDeclaration","src":"17807:14:75","value":{"kind":"number","nativeSrc":"17820:1:75","nodeType":"YulLiteral","src":"17820:1:75","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"17811:5:75","nodeType":"YulTypedName","src":"17811:5:75","type":""}]},{"body":{"nativeSrc":"17856:67:75","nodeType":"YulBlock","src":"17856:67:75","statements":[{"nativeSrc":"17874:35:75","nodeType":"YulAssignment","src":"17874:35:75","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"17893:3:75","nodeType":"YulIdentifier","src":"17893:3:75"},{"name":"srcOffset","nativeSrc":"17898:9:75","nodeType":"YulIdentifier","src":"17898:9:75"}],"functionName":{"name":"add","nativeSrc":"17889:3:75","nodeType":"YulIdentifier","src":"17889:3:75"},"nativeSrc":"17889:19:75","nodeType":"YulFunctionCall","src":"17889:19:75"}],"functionName":{"name":"mload","nativeSrc":"17883:5:75","nodeType":"YulIdentifier","src":"17883:5:75"},"nativeSrc":"17883:26:75","nodeType":"YulFunctionCall","src":"17883:26:75"},"variableNames":[{"name":"value","nativeSrc":"17874:5:75","nodeType":"YulIdentifier","src":"17874:5:75"}]}]},"condition":{"name":"newLen","nativeSrc":"17837:6:75","nodeType":"YulIdentifier","src":"17837:6:75"},"nativeSrc":"17834:89:75","nodeType":"YulIf","src":"17834:89:75"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"17943:4:75","nodeType":"YulIdentifier","src":"17943:4:75"},{"arguments":[{"name":"value","nativeSrc":"18002:5:75","nodeType":"YulIdentifier","src":"18002:5:75"},{"name":"newLen","nativeSrc":"18009:6:75","nodeType":"YulIdentifier","src":"18009:6:75"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"17949:52:75","nodeType":"YulIdentifier","src":"17949:52:75"},"nativeSrc":"17949:67:75","nodeType":"YulFunctionCall","src":"17949:67:75"}],"functionName":{"name":"sstore","nativeSrc":"17936:6:75","nodeType":"YulIdentifier","src":"17936:6:75"},"nativeSrc":"17936:81:75","nodeType":"YulFunctionCall","src":"17936:81:75"},"nativeSrc":"17936:81:75","nodeType":"YulExpressionStatement","src":"17936:81:75"}]},"nativeSrc":"17785:242:75","nodeType":"YulCase","src":"17785:242:75","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"17107:6:75","nodeType":"YulIdentifier","src":"17107:6:75"},{"kind":"number","nativeSrc":"17115:2:75","nodeType":"YulLiteral","src":"17115:2:75","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"17104:2:75","nodeType":"YulIdentifier","src":"17104:2:75"},"nativeSrc":"17104:14:75","nodeType":"YulFunctionCall","src":"17104:14:75"},"nativeSrc":"17097:930:75","nodeType":"YulSwitch","src":"17097:930:75"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"16734:1299:75","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"16815:4:75","nodeType":"YulTypedName","src":"16815:4:75","type":""},{"name":"src","nativeSrc":"16821:3:75","nodeType":"YulTypedName","src":"16821:3:75","type":""}],"src":"16734:1299:75"}]},"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_decode_tuple_t_bytes4(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, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := 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 panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string(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 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_string_memory_ptrt_string_memory_ptrt_addresst_contract$_IERC20_$8656t_contract$_IInvestStrategy_$22374t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_string(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_string(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 value_2 := calldataload(add(headStart, 128))\n        validator_revert_address(value_2)\n        value4 := value_2\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value5 := abi_decode_string(add(headStart, offset_2), dataEnd)\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 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_decode_tuple_t_bytes32t_bytes32(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_decode_tuple_t_bytes32(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_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_bytes32t_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_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_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_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_string(add(headStart, offset), dataEnd)\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_$22374__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_string(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_contract$_IInvestStrategy_$22374t_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_string(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_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 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_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_$22374_t_contract$_IInvestStrategy_$22374__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_address_t_bytes32__to_t_address_t_bytes32__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 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 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_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 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":75,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"2884":[{"length":32,"start":5140},{"length":32,"start":5181},{"length":32,"start":5536}]},"linkReferences":{},"object":"60806040526004361061025f575f3560e01c806370a082311161013f578063baaf36b5116100b3578063d547741f11610078578063d547741f1461072a578063d905777e14610749578063d9221bb514610768578063dd62ed3e14610787578063e1d39450146107a6578063ef8b30f7146106cd575f5ffd5b8063baaf36b51461067b578063c63d75b6146106ae578063c6e6f592146106cd578063ce96cb77146106ec578063d4f391101461070b575f5ffd5b8063a8c62e7611610104578063a8c62e76146105b3578063a9059cbb146105cf578063ad3cb1cc146105ee578063b3d7f6b91461061e578063b460af941461063d578063ba0876521461065c575f5ffd5b806370a082311461052f57806391d148541461054e57806394bf804d1461056d57806395d89b411461058c578063a217fddf146105a0575f5ffd5b806324ea54f4116101d6578063402d267d1161019b578063402d267d146104ab57806347e57533146104ca5780634cdad506146102fb5780634f1ef286146104e957806352d1902d146104fc5780636e553f6514610510575f5ffd5b806324ea54f4146103e85780632f2ff15d1461041b578063313ce5671461043a57806336568abe1461046057806338d52e0f1461047f575f5ffd5b8063095ea7b311610227578063095ea7b31461031a5780630a28a4771461033957806318160ddd146103585780631e4e00911461038b57806323b872dd146103aa578063248a9ca3146103c9575f5ffd5b806301e1d1141461026357806301ffc9a71461028a57806302a602e9146102b957806306fdde03146102da57806307a2d13a146102fb575b5f5ffd5b34801561026e575f5ffd5b506102776107d9565b6040519081526020015b60405180910390f35b348015610295575f5ffd5b506102a96102a4366004612724565b6107f3565b6040519015158152602001610281565b3480156102c4575f5ffd5b506102d86102d3366004612804565b610829565b005b3480156102e5575f5ffd5b506102ee610941565b60405161028191906128f6565b348015610306575f5ffd5b50610277610315366004612908565b610a01565b348015610325575f5ffd5b506102a961033436600461291f565b610a0c565b348015610344575f5ffd5b50610277610353366004612908565b610a23565b348015610363575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610277565b348015610396575f5ffd5b506102d86103a5366004612949565b610a2f565b3480156103b5575f5ffd5b506102a96103c4366004612969565b610a48565b3480156103d4575f5ffd5b506102776103e3366004612908565b610a6d565b3480156103f3575f5ffd5b506102777f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b348015610426575f5ffd5b506102d86104353660046129a7565b610a8d565b348015610445575f5ffd5b5061044e610aaf565b60405160ff9091168152602001610281565b34801561046b575f5ffd5b506102d861047a3660046129a7565b610ade565b34801561048a575f5ffd5b50610493610b11565b6040516001600160a01b039091168152602001610281565b3480156104b6575f5ffd5b506102776104c53660046129d5565b610b2c565b3480156104d5575f5ffd5b506102ee6104e4366004612908565b610b53565b6102d86104f73660046129f0565b610c70565b348015610507575f5ffd5b50610277610c8f565b34801561051b575f5ffd5b5061027761052a3660046129a7565b610caa565b34801561053a575f5ffd5b506102776105493660046129d5565b610d07565b348015610559575f5ffd5b506102a96105683660046129a7565b610d2d565b348015610578575f5ffd5b506102776105873660046129a7565b610d63565b348015610597575f5ffd5b506102ee610daf565b3480156105ab575f5ffd5b506102775f81565b3480156105be575f5ffd5b505f546001600160a01b0316610493565b3480156105da575f5ffd5b506102a96105e936600461291f565b610ded565b3480156105f9575f5ffd5b506102ee604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610629575f5ffd5b50610277610638366004612908565b610dfa565b348015610648575f5ffd5b50610277610657366004612a3d565b610e06565b348015610667575f5ffd5b50610277610676366004612a3d565b610e5c565b348015610686575f5ffd5b506102777f2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb54881565b3480156106b9575f5ffd5b506102776106c83660046129d5565b610ea9565b3480156106d8575f5ffd5b506102776106e7366004612908565b610ed8565b3480156106f7575f5ffd5b506102776107063660046129d5565b610ee3565b348015610716575f5ffd5b506102ee610725366004612a7c565b610f05565b348015610735575f5ffd5b506102d86107443660046129a7565b610f1e565b348015610754575f5ffd5b506102776107633660046129d5565b610f3a565b348015610773575f5ffd5b506102d8610782366004612a9d565b610f69565b348015610792575f5ffd5b506102776107a1366004612af6565b610fd7565b3480156107b1575f5ffd5b506102777fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b5f80546107ee906001600160a01b0316611020565b905090565b5f6001600160e01b03198216637965db0b60e01b148061082357506301ffc9a760e01b6001600160e01b03198316145b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561086e5750825b90505f8267ffffffffffffffff16600114801561088a5750303b155b905081158015610898575080155b156108b65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108e057845460ff60401b1916600160401b1785555b6108ee8b8b8b8b8b8b611089565b831561093457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020612e645f395f51905f529161097f90612b22565b80601f01602080910402602001604051908101604052809291908181526020018280546109ab90612b22565b80156109f65780601f106109cd576101008083540402835291602001916109f6565b820191905f5260205f20905b8154815290600101906020018083116109d957829003601f168201915b505050505091505090565b5f610823825f6110af565b5f33610a19818585611106565b5060019392505050565b5f610823826001611113565b5f610a3981611161565b610a43838361116e565b505050565b5f33610a558582856111ce565b610a60858585611218565b60019150505b9392505050565b5f9081525f516020612ea45f395f51905f52602052604090206001015490565b610a9682610a6d565b610a9f81611161565b610aa98383611275565b50505050565b5f805f516020612ec45f395f51905f5290505f8154610ad89190600160a01b900460ff16612b6e565b91505090565b6001600160a01b0381163314610b075760405163334bd91960e11b815260040160405180910390fd5b610a438282611316565b5f516020612ec45f395f51905f52546001600160a01b031690565b5f805461082390610b45906001600160a01b031661138f565b610b4e846113bd565b6113fa565b5f5460408051635b9a4c3560e01b815290516060926001600160a01b031691635b9a4c359160048083019260209291908290030181865afa158015610b9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbe9190612b87565b8214610bdd5760405163213109dd60e11b815260040160405180910390fd5b815482908190610bec90612b22565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1890612b22565b8015610c635780601f10610c3a57610100808354040283529160200191610c63565b820191905f5260205f20905b815481529060010190602001808311610c4657829003601f168201915b5050505050915050919050565b610c78611409565b610c81826114af565b610c8b82826114d9565b5050565b5f610c98611595565b505f516020612e845f395f51905f5290565b5f5f610cb583610b2c565b905080841115610ce757828482604051633c8097d960e11b8152600401610cde93929190612b9e565b60405180910390fd5b5f610cf185610ed8565b9050610cff338587846115de565b949350505050565b6001600160a01b03165f9081525f516020612e645f395f51905f52602052604090205490565b5f9182525f516020612ea45f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f610d6e83610ea9565b905080841115610d975782848260405163284ff66760e01b8152600401610cde93929190612b9e565b5f610da185610dfa565b9050610cff338583886115de565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020612e645f395f51905f529161097f90612b22565b5f33610a19818585611218565b5f6108238260016110af565b5f5f610e1183610ee3565b905080851115610e3a57828582604051633fa733bb60e21b8152600401610cde93929190612b9e565b5f610e4486610a23565b9050610e53338686898561160b565b95945050505050565b5f5f610e6783610f3a565b905080851115610e9057828582604051632e52afbb60e21b8152600401610cde93929190612b9e565b5f610e9a86610a01565b9050610e53338686848a61160b565b5f80548190610ec0906001600160a01b031661138f565b9050610a66610ecf825f611113565b610b4e856113bd565b5f610823825f611113565b5f805461082390610efc906001600160a01b0316611633565b610b4e84611661565b5f54606090610a66906001600160a01b03168484611674565b610f2782610a6d565b610f3081611161565b610aa98383611316565b5f80548190610f51906001600160a01b0316611633565b9050610a66610f60825f611113565b610b4e856116c6565b7f2e704739166abb26e88a93c0d60bae654bea582d8d8fa53cd8580ca0878fb548610f9381611161565b5f54610fb2906001600160a01b03168585610fac610b11565b866116d0565b50505f80546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b60405163f3e0ffbf60e01b81523060048201525f906001600160a01b0383169063f3e0ffbf906024015b602060405180830381865afa158015611065573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108239190612b87565b61109161181e565b61109d86868686611867565b6110a782826118c4565b505050505050565b5f610a666110bb6107d9565b6110c6906001612bbf565b6110d15f600a612cb5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546110fd9190612bbf565b85919085611916565b610a438383836001611958565b5f610a6661112282600a612cb5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461114e9190612bbf565b6111566107d9565b6110fd906001612bbf565b61116b8133611a3b565b50565b5f516020612ea45f395f51905f525f61118684610a6d565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b5f6111d98484610fd7565b90505f198114610aa9578181101561120a57828183604051637dc7a0d960e11b8152600401610cde93929190612b9e565b610aa984848484035f611958565b6001600160a01b03831661124157604051634b637e8f60e11b81525f6004820152602401610cde565b6001600160a01b03821661126a5760405163ec442f0560e01b81525f6004820152602401610cde565b610a43838383611a74565b5f5f516020612ea45f395f51905f5261128e8484610d2d565b61130d575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556112c33390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610823565b5f915050610823565b5f5f516020612ea45f395f51905f5261132f8484610d2d565b1561130d575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610823565b60405163402d267d60e01b81523060048201525f906001600160a01b0383169063402d267d9060240161104a565b5f6113e87fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a683610d2d565b6113f357505f919050565b5f19610823565b5f828218828410028218610a66565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061148f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114835f516020612e845f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156114ad5760405163703e46dd60e11b815260040160405180910390fd5b565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041610c8b81611161565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611533575060408051601f3d908101601f1916820190925261153091810190612b87565b60015b61155b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610cde565b5f516020612e845f395f51905f52811461158b57604051632a87526960e21b815260048101829052602401610cde565b610a438383611b9a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114ad5760405163703e46dd60e11b815260040160405180910390fd5b6115ea84848484611bef565b5f8054611604916001600160a01b03909116908490611c6c565b5050505050565b5f8054611625916001600160a01b03909116908490611da8565b506116048585858585611ec9565b60405163ce96cb7760e01b81523060048201525f906001600160a01b0383169063ce96cb779060240161104a565b5f61082361166e83610d07565b5f6110af565b6060610cff838360405160240161168c929190612cc3565b60408051601f198184030181529190526020810180516001600160e01b03166304c0d8e160e11b1790526001600160a01b03861690611f7d565b5f61082382610d07565b6116da8483611fe6565b60405163f3e0ffbf60e01b815230600482015261174c9086906001600160a01b0382169063f3e0ffbf90602401602060405180830381865afa158015611722573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117469190612b87565b83611da8565b506117578582612078565b611761848461219d565b6040516370a0823160e01b81523060048201526117d39085906001600160a01b038516906370a0823190602401602060405180830381865afa1580156117a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117cd9190612b87565b83611c6c565b50604080516001600160a01b038088168252861660208201527f254c88e7a2ea123aeeb89b7cc413fb949188fefcdb7584c4f3d493294daf65c5910160405180910390a15050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166114ad57604051631afcd79f60e31b815260040160405180910390fd5b61186f61181e565b6118776121eb565b61187f6121eb565b6001600160a01b0381166118a8576040516337bce3c560e11b81525f6004820152602401610cde565b6118b1816121f3565b6118bb8484612204565b610aa982612216565b6118cc61181e565b5f80546001600160a01b0319166001600160a01b0384161790556119016118f1610b11565b6001600160a01b03841690611fe6565b5f54610c8b906001600160a01b03168261219d565b5f61194361192383612228565b801561193e57505f848061193957611939612cde565b868809115b151590565b61194e868686612254565b610e539190612bbf565b5f516020612e645f395f51905f526001600160a01b03851661198f5760405163e602df0560e01b81525f6004820152602401610cde565b6001600160a01b0384166119b857604051634a1406b160e11b81525f6004820152602401610cde565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561160457836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051611a2c91815260200190565b60405180910390a35050505050565b611a458282610d2d565b610c8b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610cde565b5f516020612e645f395f51905f526001600160a01b038416611aae5781816002015f828254611aa39190612bbf565b90915550611b0b9050565b6001600160a01b0384165f9081526020829052604090205482811015611aed5784818460405163391434e360e21b8152600401610cde93929190612b9e565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316611b29576002810180548390039055611b47565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b8c91815260200190565b60405180910390a350505050565b611ba38261230a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611be757610a438282611f7d565b610c8b61236d565b5f516020612ec45f395f51905f528054611c14906001600160a01b031686308661238c565b611c1e84836123f3565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051611a2c929190918252602082015260400190565b5f8115611d4e575f5f856001600160a01b031685604051602401611c9291815260200190565b60408051601f198184030181529181526020820180516001600160e01b031663b6b55f2560e01b17905251611cc79190612cf2565b5f60405180830381855af49150503d805f8114611cff576040519150601f19603f3d011682016040523d82523d5f602084013e611d04565b606091505b509150915081611d46577ff8e68f23d3b33772e986cc9861e94e8fd6b9461d62bc1fb21cd754bbaf726bd381604051611d3d91906128f6565b60405180910390a15b509050610a66565b611d9e83604051602401611d6491815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663b6b55f2560e01b1790526001600160a01b03861690611f7d565b5060019050610a66565b5f8115611e79575f5f856001600160a01b031685604051602401611dce91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b17905251611e039190612cf2565b5f60405180830381855af49150503d805f8114611e3b576040519150601f19603f3d011682016040523d82523d5f602084013e611e40565b606091505b509150915081611d46577fad0ad28a12a6ed800f1a7b398454913afe6826c175e6cc28f2e8e2c175b0d72881604051611d3d91906128f6565b611d9e83604051602401611e8f91815260200190565b60408051601f198184030181529190526020810180516001600160e01b0316632e1a7d4d60e01b1790526001600160a01b03861690611f7d565b5f516020612ec45f395f51905f526001600160a01b0386811690851614611ef557611ef58487846111ce565b611eff8483612427565b8054611f15906001600160a01b0316868561245b565b836001600160a01b0316856001600160a01b0316876001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8686604051611f6d929190918252602082015260400190565b60405180910390a4505050505050565b60605f5f846001600160a01b031684604051611f999190612cf2565b5f60405180830381855af49150503d805f8114611fd1576040519150601f19603f3d011682016040523d82523d5f602084013e611fd6565b606091505b5091509150610e5385838361248c565b604051634e2333d160e11b81523060048201526001600160a01b038083169190841690639c4667a290602401602060405180830381865afa15801561202d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120519190612d08565b6001600160a01b031614610c8b5760405163e76673ef60e01b815260040160405180910390fd5b801561215357604051600160248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b0316632d08ba2b60e11b179052516120cf9190612cf2565b5f60405180830381855af49150503d805f8114612107576040519150601f19603f3d011682016040523d82523d5f602084013e61210c565b606091505b509150915081610aa9577f9f864ace9f45c2734f9444cb9a0c1ade6f1b15a8c202c17175b759728a4a0bf88160405161214591906128f6565b60405180910390a150505050565b6040515f6024820152610a439060440160408051601f198184030181529190526020810180516001600160e01b0316632d08ba2b60e11b1790526001600160a01b03841690611f7d565b610a43816040516024016121b191906128f6565b60408051601f198184030181529190526020810180516001600160e01b031663139a8e2560e31b1790526001600160a01b03841690611f7d565b6114ad61181e565b6121fb61181e565b61116b816124e8565b61220c61181e565b610c8b8282612558565b61221e61181e565b610c8b5f82611275565b5f600282600381111561223d5761223d612d23565b6122479190612d37565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036122885783828161227e5761227e612cde565b0492505050610a66565b80841161229f5761229f60038515026011186125a8565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806001600160a01b03163b5f0361233f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610cde565b5f516020612e845f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b34156114ad5760405163b398979f60e01b815260040160405180910390fd5b6040516001600160a01b038481166024830152838116604483015260648201839052610aa99186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125b9565b6001600160a01b03821661241c5760405163ec442f0560e01b81525f6004820152602401610cde565b610c8b5f8383611a74565b6001600160a01b03821661245057604051634b637e8f60e11b81525f6004820152602401610cde565b610c8b825f83611a74565b6040516001600160a01b03838116602483015260448201839052610a4391859182169063a9059cbb906064016123c1565b6060826124a15761249c82612625565b610a66565b81511580156124b857506001600160a01b0384163b155b156124e157604051639996b31560e01b81526001600160a01b0385166004820152602401610cde565b5080610a66565b6124f061181e565b5f516020612ec45f395f51905f525f806125098461264e565b915091508161251957601261251b565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b61256061181e565b5f516020612e645f395f51905f527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036125998482612da8565b5060048101610aa98382612da8565b634e487b715f52806020526024601cfd5b5f5f60205f8451602086015f885af1806125d8576040513d5f823e3d81fd5b50505f513d915081156125ef5780600114156125fc565b6001600160a01b0384163b155b15610aa957604051635274afe760e01b81526001600160a01b0385166004820152602401610cde565b8051156126355780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b0387169161269491612cf2565b5f60405180830381855afa9150503d805f81146126cc576040519150601f19603f3d011682016040523d82523d5f602084013e6126d1565b606091505b50915091508180156126e557506020815110155b15612718575f818060200190518101906126ff9190612b87565b905060ff8111612716576001969095509350505050565b505b505f9485945092505050565b5f60208284031215612734575f5ffd5b81356001600160e01b031981168114610a66575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261276e575f5ffd5b8135602083015f5f67ffffffffffffffff84111561278e5761278e61274b565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156127bd576127bd61274b565b6040528381529050808284018710156127d4575f5ffd5b838360208301375f602085830101528094505050505092915050565b6001600160a01b038116811461116b575f5ffd5b5f5f5f5f5f5f60c08789031215612819575f5ffd5b863567ffffffffffffffff81111561282f575f5ffd5b61283b89828a0161275f565b965050602087013567ffffffffffffffff811115612857575f5ffd5b61286389828a0161275f565b9550506040870135612874816127f0565b93506060870135612884816127f0565b92506080870135612894816127f0565b915060a087013567ffffffffffffffff8111156128af575f5ffd5b6128bb89828a0161275f565b9150509295509295509295565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610a6660208301846128c8565b5f60208284031215612918575f5ffd5b5035919050565b5f5f60408385031215612930575f5ffd5b823561293b816127f0565b946020939093013593505050565b5f5f6040838503121561295a575f5ffd5b50508035926020909101359150565b5f5f5f6060848603121561297b575f5ffd5b8335612986816127f0565b92506020840135612996816127f0565b929592945050506040919091013590565b5f5f604083850312156129b8575f5ffd5b8235915060208301356129ca816127f0565b809150509250929050565b5f602082840312156129e5575f5ffd5b8135610a66816127f0565b5f5f60408385031215612a01575f5ffd5b8235612a0c816127f0565b9150602083013567ffffffffffffffff811115612a27575f5ffd5b612a338582860161275f565b9150509250929050565b5f5f5f60608486031215612a4f575f5ffd5b833592506020840135612a61816127f0565b91506040840135612a71816127f0565b809150509250925092565b5f5f60408385031215612a8d575f5ffd5b823560ff81168114612a0c575f5ffd5b5f5f5f60608486031215612aaf575f5ffd5b8335612aba816127f0565b9250602084013567ffffffffffffffff811115612ad5575f5ffd5b612ae18682870161275f565b92505060408401358015158114612a71575f5ffd5b5f5f60408385031215612b07575f5ffd5b8235612b12816127f0565b915060208301356129ca816127f0565b600181811c90821680612b3657607f821691505b602082108103612b5457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561082357610823612b5a565b5f60208284031215612b97575f5ffd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561082357610823612b5a565b6001815b6001841115612c0d57808504811115612bf157612bf1612b5a565b6001841615612bff57908102905b60019390931c928002612bd6565b935093915050565b5f82612c2357506001610823565b81612c2f57505f610823565b8160018114612c455760028114612c4f57612c6b565b6001915050610823565b60ff841115612c6057612c60612b5a565b50506001821b610823565b5060208310610133831016604e8410600b8410161715612c8e575081810a610823565b612c9a5f198484612bd2565b805f1904821115612cad57612cad612b5a565b029392505050565b5f610a6660ff841683612c15565b60ff83168152604060208201525f610cff60408301846128c8565b634e487b7160e01b5f52601260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215612d18575f5ffd5b8151610a66816127f0565b634e487b7160e01b5f52602160045260245ffd5b5f60ff831680612d5557634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b601f821115610a4357805f5260205f20601f840160051c81016020851015612d895750805b601f840160051c820191505b81811015611604575f8155600101612d95565b815167ffffffffffffffff811115612dc257612dc261274b565b612dd681612dd08454612b22565b84612d64565b6020601f821160018114612e08575f8315612df15750848201515b5f19600385901b1c1916600184901b178455611604565b5f84815260208120601f198516915b82811015612e375787850151825560209485019460019092019101612e17565b5084821015612e5457868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00a264697066735822122075956b98bfa24ac35cccace88420a64ce3eec8b3ebd9cf9d682d9327afaa762d64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25F JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x13F JUMPI DUP1 PUSH4 0xBAAF36B5 GT PUSH2 0xB3 JUMPI DUP1 PUSH4 0xD547741F GT PUSH2 0x78 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x72A JUMPI DUP1 PUSH4 0xD905777E EQ PUSH2 0x749 JUMPI DUP1 PUSH4 0xD9221BB5 EQ PUSH2 0x768 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x787 JUMPI DUP1 PUSH4 0xE1D39450 EQ PUSH2 0x7A6 JUMPI DUP1 PUSH4 0xEF8B30F7 EQ PUSH2 0x6CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBAAF36B5 EQ PUSH2 0x67B JUMPI DUP1 PUSH4 0xC63D75B6 EQ PUSH2 0x6AE JUMPI DUP1 PUSH4 0xC6E6F592 EQ PUSH2 0x6CD JUMPI DUP1 PUSH4 0xCE96CB77 EQ PUSH2 0x6EC JUMPI DUP1 PUSH4 0xD4F39110 EQ PUSH2 0x70B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xA8C62E76 GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA8C62E76 EQ PUSH2 0x5B3 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 DUP1 PUSH4 0xBA087652 EQ PUSH2 0x65C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x54E JUMPI DUP1 PUSH4 0x94BF804D EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x5A0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x24EA54F4 GT PUSH2 0x1D6 JUMPI DUP1 PUSH4 0x402D267D GT PUSH2 0x19B JUMPI DUP1 PUSH4 0x402D267D EQ PUSH2 0x4AB JUMPI DUP1 PUSH4 0x47E57533 EQ PUSH2 0x4CA JUMPI DUP1 PUSH4 0x4CDAD506 EQ PUSH2 0x2FB JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x4FC JUMPI DUP1 PUSH4 0x6E553F65 EQ PUSH2 0x510 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x24EA54F4 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x41B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0x38D52E0F EQ PUSH2 0x47F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x227 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0xA28A477 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x358 JUMPI DUP1 PUSH4 0x1E4E0091 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3AA JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3C9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x1E1D114 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x2A602E9 EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2DA JUMPI DUP1 PUSH4 0x7A2D13A EQ PUSH2 0x2FB JUMPI JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7D9 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 0x295 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x2A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2724 JUMP JUMPDEST PUSH2 0x7F3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x2D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0x829 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x941 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x306 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x315 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x325 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x291F JUMP JUMPDEST PUSH2 0xA0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x353 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x363 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x277 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x3A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2949 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2969 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xA6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x426 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x435 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xA8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x445 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x44E PUSH2 0xAAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x47A CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x493 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x4C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xB2C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xB53 JUMP JUMPDEST PUSH2 0x2D8 PUSH2 0x4F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x29F0 JUMP JUMPDEST PUSH2 0xC70 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x507 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0xC8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x52A CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xCAA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xD07 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x559 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x568 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xD2D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x587 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xD63 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x597 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0xDAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x493 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x5E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x291F JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE 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 0x277 PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xDFA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x648 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x657 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3D JUMP JUMPDEST PUSH2 0xE06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x667 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x676 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A3D JUMP JUMPDEST PUSH2 0xE5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x686 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0x2E704739166ABB26E88A93C0D60BAE654BEA582D8D8FA53CD8580CA0878FB548 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xEA9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2908 JUMP JUMPDEST PUSH2 0xED8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x706 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xEE3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x716 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2EE PUSH2 0x725 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A7C JUMP JUMPDEST PUSH2 0xF05 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x735 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x744 CALLDATASIZE PUSH1 0x4 PUSH2 0x29A7 JUMP JUMPDEST PUSH2 0xF1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x754 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x763 CALLDATASIZE PUSH1 0x4 PUSH2 0x29D5 JUMP JUMPDEST PUSH2 0xF3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x782 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A9D JUMP JUMPDEST PUSH2 0xF69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x792 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH2 0x7A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF6 JUMP JUMPDEST PUSH2 0xFD7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x277 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP2 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x7EE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1020 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x823 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x86E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x88A JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x898 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x8B6 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 0x8E0 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x8EE DUP12 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1089 JUMP JUMPDEST DUP4 ISZERO PUSH2 0x934 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 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x97F SWAP1 PUSH2 0x2B22 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 0x9AB SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x9CD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9F6 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 0x9D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH0 PUSH2 0x10AF JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA19 DUP2 DUP6 DUP6 PUSH2 0x1106 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH1 0x1 PUSH2 0x1113 JUMP JUMPDEST PUSH0 PUSH2 0xA39 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 PUSH2 0x116E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA55 DUP6 DUP3 DUP6 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0xA60 DUP6 DUP6 DUP6 PUSH2 0x1218 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xA96 DUP3 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xA9F DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xAA9 DUP4 DUP4 PUSH2 0x1275 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 POP PUSH0 DUP2 SLOAD PUSH2 0xAD8 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2B6E JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xB07 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA43 DUP3 DUP3 PUSH2 0x1316 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x823 SWAP1 PUSH2 0xB45 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x138F JUMP JUMPDEST PUSH2 0xB4E DUP5 PUSH2 0x13BD JUMP JUMPDEST PUSH2 0x13FA 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 0xB9A 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 0xBBE SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP3 EQ PUSH2 0xBDD 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 0xBEC SWAP1 PUSH2 0x2B22 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 0xC18 SWAP1 PUSH2 0x2B22 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC3A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC63 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 0xC46 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 0xC78 PUSH2 0x1409 JUMP JUMPDEST PUSH2 0xC81 DUP3 PUSH2 0x14AF JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0x14D9 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH0 PUSH2 0xC98 PUSH2 0x1595 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xCB5 DUP4 PUSH2 0xB2C JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xCE7 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3C8097D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH0 PUSH2 0xCF1 DUP6 PUSH2 0xED8 JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF CALLER DUP6 DUP8 DUP5 PUSH2 0x15DE 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 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH0 SWAP2 DUP3 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xD6E DUP4 PUSH2 0xEA9 JUMP JUMPDEST SWAP1 POP DUP1 DUP5 GT ISZERO PUSH2 0xD97 JUMPI DUP3 DUP5 DUP3 PUSH1 0x40 MLOAD PUSH4 0x284FF667 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xDA1 DUP6 PUSH2 0xDFA JUMP JUMPDEST SWAP1 POP PUSH2 0xCFF CALLER DUP6 DUP4 DUP9 PUSH2 0x15DE JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE04 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x97F SWAP1 PUSH2 0x2B22 JUMP JUMPDEST PUSH0 CALLER PUSH2 0xA19 DUP2 DUP6 DUP6 PUSH2 0x1218 JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH1 0x1 PUSH2 0x10AF JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE11 DUP4 PUSH2 0xEE3 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xE3A JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x3FA733BB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xE44 DUP7 PUSH2 0xA23 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 CALLER DUP7 DUP7 DUP10 DUP6 PUSH2 0x160B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH2 0xE67 DUP4 PUSH2 0xF3A JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0xE90 JUMPI DUP3 DUP6 DUP3 PUSH1 0x40 MLOAD PUSH4 0x2E52AFBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH0 PUSH2 0xE9A DUP7 PUSH2 0xA01 JUMP JUMPDEST SWAP1 POP PUSH2 0xE53 CALLER DUP7 DUP7 DUP5 DUP11 PUSH2 0x160B JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xEC0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x138F JUMP JUMPDEST SWAP1 POP PUSH2 0xA66 PUSH2 0xECF DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0xB4E DUP6 PUSH2 0x13BD JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x823 SWAP1 PUSH2 0xEFC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1633 JUMP JUMPDEST PUSH2 0xB4E DUP5 PUSH2 0x1661 JUMP JUMPDEST PUSH0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xA66 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x1674 JUMP JUMPDEST PUSH2 0xF27 DUP3 PUSH2 0xA6D JUMP JUMPDEST PUSH2 0xF30 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH2 0xAA9 DUP4 DUP4 PUSH2 0x1316 JUMP JUMPDEST PUSH0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0xF51 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1633 JUMP JUMPDEST SWAP1 POP PUSH2 0xA66 PUSH2 0xF60 DUP3 PUSH0 PUSH2 0x1113 JUMP JUMPDEST PUSH2 0xB4E DUP6 PUSH2 0x16C6 JUMP JUMPDEST PUSH32 0x2E704739166ABB26E88A93C0D60BAE654BEA582D8D8FA53CD8580CA0878FB548 PUSH2 0xF93 DUP2 PUSH2 0x1161 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xFB2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0xFAC PUSH2 0xB11 JUMP JUMPDEST DUP7 PUSH2 0x16D0 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 SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP 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 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 0x1065 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 0x823 SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST PUSH2 0x1091 PUSH2 0x181E JUMP JUMPDEST PUSH2 0x109D DUP7 DUP7 DUP7 DUP7 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0x10A7 DUP3 DUP3 PUSH2 0x18C4 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH2 0x10BB PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x10C6 SWAP1 PUSH1 0x1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x10D1 PUSH0 PUSH1 0xA PUSH2 0x2CB5 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x10FD SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST DUP6 SWAP2 SWAP1 DUP6 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1958 JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH2 0x1122 DUP3 PUSH1 0xA PUSH2 0x2CB5 JUMP JUMPDEST PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE02 SLOAD PUSH2 0x114E SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x1156 PUSH2 0x7D9 JUMP JUMPDEST PUSH2 0x10FD SWAP1 PUSH1 0x1 PUSH2 0x2BBF JUMP JUMPDEST PUSH2 0x116B DUP2 CALLER PUSH2 0x1A3B JUMP JUMPDEST POP JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 PUSH2 0x1186 DUP5 PUSH2 0xA6D JUMP JUMPDEST PUSH0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP5 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x1 ADD DUP7 SWAP1 SSTORE MLOAD SWAP2 SWAP3 POP DUP5 SWAP2 DUP4 SWAP2 DUP8 SWAP2 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP2 SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x11D9 DUP5 DUP5 PUSH2 0xFD7 JUMP JUMPDEST SWAP1 POP PUSH0 NOT DUP2 EQ PUSH2 0xAA9 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x120A JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E JUMP JUMPDEST PUSH2 0xAA9 DUP5 DUP5 DUP5 DUP5 SUB PUSH0 PUSH2 0x1958 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1241 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x126A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x128E DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x130D JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x12C3 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH0 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH0 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EA4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH2 0x132F DUP5 DUP5 PUSH2 0xD2D JUMP JUMPDEST ISZERO PUSH2 0x130D JUMPI PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 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 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 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 0x104A JUMP JUMPDEST PUSH0 PUSH2 0x13E8 PUSH32 0xB0296EA8DD3227371927B1C1CEA2B12EA394743DDF2F32F58024CE26F83A24A6 DUP4 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0x13F3 JUMPI POP PUSH0 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 NOT PUSH2 0x823 JUMP JUMPDEST PUSH0 DUP3 DUP3 XOR DUP3 DUP5 LT MUL DUP3 XOR PUSH2 0xA66 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x148F JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1483 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 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 0x14AD 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 PUSH32 0x55435DD261A4B9B3364963F7738A7A662AD9C84396D64BE3365284BB7F0A5041 PUSH2 0xC8B DUP2 PUSH2 0x1161 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 0x1533 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1530 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2B87 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x155B 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 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x158B JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xA43 DUP4 DUP4 PUSH2 0x1B9A JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x15EA DUP5 DUP5 DUP5 DUP5 PUSH2 0x1BEF JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x1604 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1C6C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 SLOAD PUSH2 0x1625 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 DUP5 SWAP1 PUSH2 0x1DA8 JUMP JUMPDEST POP PUSH2 0x1604 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1EC9 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 0x104A JUMP JUMPDEST PUSH0 PUSH2 0x823 PUSH2 0x166E DUP4 PUSH2 0xD07 JUMP JUMPDEST PUSH0 PUSH2 0x10AF JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCFF DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x168C SWAP3 SWAP2 SWAP1 PUSH2 0x2CC3 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 0x1F7D JUMP JUMPDEST PUSH0 PUSH2 0x823 DUP3 PUSH2 0xD07 JUMP JUMPDEST PUSH2 0x16DA DUP5 DUP4 PUSH2 0x1FE6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF3E0FFBF PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x174C 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 0x1722 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 0x1746 SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP4 PUSH2 0x1DA8 JUMP JUMPDEST POP PUSH2 0x1757 DUP6 DUP3 PUSH2 0x2078 JUMP JUMPDEST PUSH2 0x1761 DUP5 DUP5 PUSH2 0x219D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x17D3 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 0x17A9 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 0x17CD SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST DUP4 PUSH2 0x1C6C 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 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x186F PUSH2 0x181E JUMP JUMPDEST PUSH2 0x1877 PUSH2 0x21EB JUMP JUMPDEST PUSH2 0x187F PUSH2 0x21EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x18A8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BCE3C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0x18B1 DUP2 PUSH2 0x21F3 JUMP JUMPDEST PUSH2 0x18BB DUP5 DUP5 PUSH2 0x2204 JUMP JUMPDEST PUSH2 0xAA9 DUP3 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0x18CC PUSH2 0x181E 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 0x1901 PUSH2 0x18F1 PUSH2 0xB11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0x1FE6 JUMP JUMPDEST PUSH0 SLOAD PUSH2 0xC8B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH2 0x219D JUMP JUMPDEST PUSH0 PUSH2 0x1943 PUSH2 0x1923 DUP4 PUSH2 0x2228 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x193E JUMPI POP PUSH0 DUP5 DUP1 PUSH2 0x1939 JUMPI PUSH2 0x1939 PUSH2 0x2CDE JUMP JUMPDEST DUP7 DUP9 MULMOD GT JUMPDEST ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x194E DUP7 DUP7 DUP7 PUSH2 0x2254 JUMP JUMPDEST PUSH2 0xE53 SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x198F JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x19B8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE 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 0x1604 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 0x1A2C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A45 DUP3 DUP3 PUSH2 0xD2D JUMP JUMPDEST PUSH2 0xC8B JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1AAE JUMPI DUP2 DUP2 PUSH1 0x2 ADD PUSH0 DUP3 DUP3 SLOAD PUSH2 0x1AA3 SWAP2 SWAP1 PUSH2 0x2BBF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1B0B 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 0x1AED JUMPI DUP5 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCDE SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B9E 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 0x1B29 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1B47 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 0x1B8C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x1BA3 DUP3 PUSH2 0x230A 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 0x1BE7 JUMPI PUSH2 0xA43 DUP3 DUP3 PUSH2 0x1F7D JUMP JUMPDEST PUSH2 0xC8B PUSH2 0x236D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH2 0x1C14 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 ADDRESS DUP7 PUSH2 0x238C JUMP JUMPDEST PUSH2 0x1C1E DUP5 DUP4 PUSH2 0x23F3 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDCBC1C05240F31FF3AD067EF1EE35CE4997762752E3A095284754544F4C709D7 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1A2C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1D4E JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1C92 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 0x1CC7 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1CFF 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 0x1D04 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D46 JUMPI PUSH32 0xF8E68F23D3B33772E986CC9861E94E8FD6B9461D62BC1FB21CD754BBAF726BD3 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1D3D SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP SWAP1 POP PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x1D9E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1D64 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 0x1F7D JUMP JUMPDEST POP PUSH1 0x1 SWAP1 POP PUSH2 0xA66 JUMP JUMPDEST PUSH0 DUP2 ISZERO PUSH2 0x1E79 JUMPI PUSH0 PUSH0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1DCE 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 0x1E03 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1E3B 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 0x1E40 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1D46 JUMPI PUSH32 0xAD0AD28A12A6ED800F1A7B398454913AFE6826C175E6CC28F2E8E2C175B0D728 DUP2 PUSH1 0x40 MLOAD PUSH2 0x1D3D SWAP2 SWAP1 PUSH2 0x28F6 JUMP JUMPDEST PUSH2 0x1D9E DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1E8F 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 0x1F7D JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP1 DUP6 AND EQ PUSH2 0x1EF5 JUMPI PUSH2 0x1EF5 DUP5 DUP8 DUP5 PUSH2 0x11CE JUMP JUMPDEST PUSH2 0x1EFF DUP5 DUP4 PUSH2 0x2427 JUMP JUMPDEST DUP1 SLOAD PUSH2 0x1F15 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP6 PUSH2 0x245B JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFBDE797D201C681B91056529119E0B02407C7BB96A4A2C75C01FC9667232C8DB DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x1F6D 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 POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1F99 SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1FD1 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 0x1FD6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xE53 DUP6 DUP4 DUP4 PUSH2 0x248C 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 0x202D 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 0x2051 SWAP2 SWAP1 PUSH2 0x2D08 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xC8B 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 0x2153 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 0x20CF SWAP2 SWAP1 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x2107 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 0x210C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAA9 JUMPI PUSH32 0x9F864ACE9F45C2734F9444CB9A0C1ADE6F1B15A8C202C17175B759728A4A0BF8 DUP2 PUSH1 0x40 MLOAD PUSH2 0x2145 SWAP2 SWAP1 PUSH2 0x28F6 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 0xA43 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 0x1F7D JUMP JUMPDEST PUSH2 0xA43 DUP2 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x21B1 SWAP2 SWAP1 PUSH2 0x28F6 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 0x1F7D JUMP JUMPDEST PUSH2 0x14AD PUSH2 0x181E JUMP JUMPDEST PUSH2 0x21FB PUSH2 0x181E JUMP JUMPDEST PUSH2 0x116B DUP2 PUSH2 0x24E8 JUMP JUMPDEST PUSH2 0x220C PUSH2 0x181E JUMP JUMPDEST PUSH2 0xC8B DUP3 DUP3 PUSH2 0x2558 JUMP JUMPDEST PUSH2 0x221E PUSH2 0x181E JUMP JUMPDEST PUSH2 0xC8B PUSH0 DUP3 PUSH2 0x1275 JUMP JUMPDEST PUSH0 PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x223D JUMPI PUSH2 0x223D PUSH2 0x2D23 JUMP JUMPDEST PUSH2 0x2247 SWAP2 SWAP1 PUSH2 0x2D37 JUMP JUMPDEST PUSH1 0xFF AND PUSH1 0x1 EQ SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP4 DUP4 MUL DUP2 PUSH0 NOT DUP6 DUP8 MULMOD DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH0 SUB PUSH2 0x2288 JUMPI DUP4 DUP3 DUP2 PUSH2 0x227E JUMPI PUSH2 0x227E PUSH2 0x2CDE JUMP JUMPDEST DIV SWAP3 POP POP POP PUSH2 0xA66 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x229F JUMPI PUSH2 0x229F PUSH1 0x3 DUP6 ISZERO MUL PUSH1 0x11 XOR PUSH2 0x25A8 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 DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x233F 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 0xCDE JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E84 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 0x14AD JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xAA9 SWAP2 DUP7 SWAP2 DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x25B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x241C JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xC8B PUSH0 DUP4 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2450 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xCDE JUMP JUMPDEST PUSH2 0xC8B DUP3 PUSH0 DUP4 PUSH2 0x1A74 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH2 0xA43 SWAP2 DUP6 SWAP2 DUP3 AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x64 ADD PUSH2 0x23C1 JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x24A1 JUMPI PUSH2 0x249C DUP3 PUSH2 0x2625 JUMP JUMPDEST PUSH2 0xA66 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x24B8 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x24E1 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 0xCDE JUMP JUMPDEST POP DUP1 PUSH2 0xA66 JUMP JUMPDEST PUSH2 0x24F0 PUSH2 0x181E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2EC4 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH0 DUP1 PUSH2 0x2509 DUP5 PUSH2 0x264E JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH2 0x2519 JUMPI PUSH1 0x12 PUSH2 0x251B 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 0x2560 PUSH2 0x181E JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2E64 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0x52C63247E1F47DB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE03 PUSH2 0x2599 DUP5 DUP3 PUSH2 0x2DA8 JUMP JUMPDEST POP PUSH1 0x4 DUP2 ADD PUSH2 0xAA9 DUP4 DUP3 PUSH2 0x2DA8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH0 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x24 PUSH1 0x1C REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH0 DUP9 GAS CALL DUP1 PUSH2 0x25D8 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x25EF JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x25FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO 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 0xCDE JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2635 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH2 0x2694 SWAP2 PUSH2 0x2CF2 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x26CC 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 0x26D1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x2718 JUMPI PUSH0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x26FF SWAP2 SWAP1 PUSH2 0x2B87 JUMP JUMPDEST SWAP1 POP PUSH1 0xFF DUP2 GT PUSH2 0x2716 JUMPI PUSH1 0x1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST POP JUMPDEST POP PUSH0 SWAP5 DUP6 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2734 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xA66 JUMPI PUSH0 PUSH0 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 0x276E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP4 ADD PUSH0 PUSH0 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x278E JUMPI PUSH2 0x278E PUSH2 0x274B 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 0x27BD JUMPI PUSH2 0x27BD PUSH2 0x274B JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP8 LT ISZERO PUSH2 0x27D4 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x116B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2819 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x282F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x283B DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2857 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2863 DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x28AF JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x28BB DUP10 DUP3 DUP11 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 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 0xA66 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x28C8 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2918 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2930 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x293B DUP2 PUSH2 0x27F0 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 0x295A 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 0x297B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2986 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2996 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x29B8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x29CA DUP2 PUSH2 0x27F0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29E5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA66 DUP2 PUSH2 0x27F0 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A01 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A0C DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2A27 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2A33 DUP6 DUP3 DUP7 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A4F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A61 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x2A71 DUP2 PUSH2 0x27F0 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A8D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2A0C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2AAF JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2ABA DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2AD5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2AE1 DUP7 DUP3 DUP8 ADD PUSH2 0x275F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2A71 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B07 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2B12 DUP2 PUSH2 0x27F0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x29CA DUP2 PUSH2 0x27F0 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2B36 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2B54 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 0x823 JUMPI PUSH2 0x823 PUSH2 0x2B5A JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B97 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 0x823 JUMPI PUSH2 0x823 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x2C0D JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x2BF1 JUMPI PUSH2 0x2BF1 PUSH2 0x2B5A JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x2BFF JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x2BD6 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH2 0x2C23 JUMPI POP PUSH1 0x1 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH2 0x2C2F JUMPI POP PUSH0 PUSH2 0x823 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2C45 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2C4F JUMPI PUSH2 0x2C6B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x823 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2C60 JUMPI PUSH2 0x2C60 PUSH2 0x2B5A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x823 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2C8E JUMPI POP DUP2 DUP2 EXP PUSH2 0x823 JUMP JUMPDEST PUSH2 0x2C9A PUSH0 NOT DUP5 DUP5 PUSH2 0x2BD2 JUMP JUMPDEST DUP1 PUSH0 NOT DIV DUP3 GT ISZERO PUSH2 0x2CAD JUMPI PUSH2 0x2CAD PUSH2 0x2B5A JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0xA66 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x2C15 JUMP JUMPDEST PUSH1 0xFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0xCFF PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x28C8 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 0x2D18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA66 DUP2 PUSH2 0x27F0 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 0x2D55 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 0xA43 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2D89 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1604 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2D95 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DC2 JUMPI PUSH2 0x2DC2 PUSH2 0x274B JUMP JUMPDEST PUSH2 0x2DD6 DUP2 PUSH2 0x2DD0 DUP5 SLOAD PUSH2 0x2B22 JUMP JUMPDEST DUP5 PUSH2 0x2D64 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E08 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x2DF1 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 0x1604 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E37 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E17 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2E54 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 0xE1 DELEGATECALL PUSH30 0xB19D5CE0460030C497F067CA4CEBF71BA98EEADABE20BACE00360894A13B LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC02DD7BC7DEC4DCEEDDA775 0xE5 DUP14 0xD5 COINBASE 0xE0 DUP11 GT PUSH13 0x6C53815C0BD028192F7B626800 SMOD PUSH20 0xE532DFEDE91F04B12A73D3D2ACD361424F41F76B 0x4F 0xB7 SWAP16 MULMOD ADD PUSH2 0xE36B 0x4E STOP LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0x956B98BFA24AC35CCCACE88420A64CE3EEC8B3EBD9CF SWAP14 PUSH9 0x2D9327AFAA762D6473 PUSH16 0x6C634300081C00330000000000000000 ","sourceMap":"1665:6559:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4974:118;;;;;;;;;;;;;:::i;:::-;;;160:25:75;;;148:2;133:18;4974:118:73;;;;;;;;3443:202:6;;;;;;;;;;-1:-1:-1;3443:202:6;;;;;:::i;:::-;;:::i;:::-;;;652:14:75;;645:22;627:41;;615:2;600:18;3443:202:6;487:187:75;2900:308:73;;;;;;;;;;-1:-1:-1;2900:308:73;;;;;:::i;:::-;;:::i;:::-;;2716:144:9;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7511:148:10:-;;;;;;;;;;-1:-1:-1;7511:148:10;;;;;:::i;:::-;;:::i;5210:186:9:-;;;;;;;;;;-1:-1:-1;5210:186:9;;;;;:::i;:::-;;:::i;8777:147:10:-;;;;;;;;;;-1:-1:-1;8777:147:10;;;;;:::i;:::-;;:::i;3896:152:9:-;;;;;;;;;;-1:-1:-1;4027:14:9;;3896:152;;2040:134:56;;;;;;;;;;-1:-1:-1;2040:134:56;;;;;:::i;:::-;;:::i;5988:244:9:-;;;;;;;;;;-1:-1:-1;5988:244:9;;;;;:::i;:::-;;:::i;4759:191:6:-;;;;;;;;;;-1:-1:-1;4759:191:6;;;;;:::i;:::-;;:::i;1136:66:56:-;;;;;;;;;;;;1176:26;1136:66;;5246:136:6;;;;;;;;;;-1:-1:-1;5246:136:6;;;;;:::i;:::-;;:::i;6612:221:10:-;;;;;;;;;;;;;:::i;:::-;;;6002:4:75;5990:17;;;5972:36;;5960:2;5945:18;6612:221:10;5830:184:75;6348:245:6;;;;;;;;;;-1:-1:-1;6348:245:6;;;;;:::i;:::-;;:::i;6877:153:10:-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6183:32:75;;;6165:51;;6153:2;6138:18;6877:153:10;6019:203:75;4488:157:73;;;;;;;;;;-1:-1:-1;4488:157:73;;;;;:::i;:::-;;:::i;5830:255::-;;;;;;;;;;-1:-1:-1;5830:255:73;;;;;:::i;:::-;;:::i;4161:214:8:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;9168:392:10:-;;;;;;;;;;-1:-1:-1;9168:392:10;;;;;:::i;:::-;;:::i;4106:171:9:-;;;;;;;;;;-1:-1:-1;4106:171:9;;;;;:::i;:::-;;:::i;3732:207:6:-;;;;;;;;;;-1:-1:-1;3732:207:6;;;;;:::i;:::-;;:::i;9603:380:10:-;;;;;;;;;;-1:-1:-1;9603:380:10;;;;;:::i;:::-;;:::i;2973:148:9:-;;;;;;;;;;;;;:::i;2317:49:6:-;;;;;;;;;;-1:-1:-1;2317:49:6;2362:4;2317:49;;7856:87:73;;;;;;;;;;-1:-1:-1;7899:15:73;7929:9;-1:-1:-1;;;;;7929:9:73;7856:87;;4472:178:9;;;;;;;;;;-1:-1:-1;4472:178:9;;;;;:::i;:::-;;:::i;1819:58:8:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:8;;;;;8580:143:10;;;;;;;;;;-1:-1:-1;8580:143:10;;;;;:::i;:::-;;:::i;10030:413::-;;;;;;;;;;-1:-1:-1;10030:413:10;;;;;:::i;:::-;;:::i;10488:405::-;;;;;;;;;;-1:-1:-1;10488:405:10;;;;;:::i;:::-;;:::i;1857:74:73:-;;;;;;;;;;;;1901:30;1857:74;;4695:225;;;;;;;;;;-1:-1:-1;4695:225:73;;;;;:::i;:::-;;:::i;7309:148:10:-;;;;;;;;;;-1:-1:-1;7309:148:10;;;;;:::i;:::-;;:::i;3993:160:73:-;;;;;;;;;;-1:-1:-1;3993:160:73;;;;;:::i;:::-;;:::i;6598:153::-;;;;;;;;;;-1:-1:-1;6598:153:73;;;;;:::i;:::-;;:::i;5662:138:6:-;;;;;;;;;;-1:-1:-1;5662:138:6;;;;;:::i;:::-;;:::i;4205:230:73:-;;;;;;;;;;-1:-1:-1;4205:230:73;;;;;:::i;:::-;;:::i;7480:295::-;;;;;;;;;;-1:-1:-1;7480:295:73;;;;;:::i;:::-;;:::i;4708:195:9:-;;;;;;;;;;-1:-1:-1;4708:195:9;;;;;:::i;:::-;;:::i;1078:54:56:-;;;;;;;;;;;;1112:20;1078:54;;4974:118:73;5035:14;5064:9;;:23;;-1:-1:-1;;;;;5064:9:73;:21;:23::i;:::-;5057:30;;4974:118;:::o;3443:202:6:-;3528:4;-1:-1:-1;;;;;;3551:47:6;;-1:-1:-1;;;3551:47:6;;:87;;-1:-1:-1;;;;;;;;;;1134:40:12;;;3602:36:6;3544:94;3443:202;-1:-1:-1;;3443:202:6:o;2900:308:73:-;8870:21:7;4302:15;;-1:-1:-1;;;4302:15:7;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:7;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:7;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:7;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:7;-1:-1:-1;;;5013:22:7;;;4979:67;3114:89:73::1;3143:5;3150:7;3159:6;3167;3175:9;3186:16;3114:28;:89::i;:::-;5070:14:7::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:7;;;5142:14;;-1:-1:-1;9965:50:75;;5142:14:7;;9953:2:75;9938:18;5142:14:7;;;;;;;5066:101;4092:1081;;;;;2900:308:73;;;;;;:::o;2716:144:9:-;2846:7;2839:14;;2761:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;2839:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;7511:148:10:-;7581:7;7607:45;7624:6;7632:19;7607:16;:45::i;5210:186:9:-;5283:4;966:10:11;5337:31:9;966:10:11;5353:7:9;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:9;;5210:186;-1:-1:-1;;;5210:186:9:o;8777:147:10:-;8847:7;8873:44;8890:6;8898:18;8873:16;:44::i;2040:134:56:-;2362:4:6;3191:16;2362:4;3191:10;:16::i;:::-;2139:30:56::1;2153:4;2159:9;2139:13;:30::i;:::-;2040:134:::0;;;:::o;5988:244:9:-;6075:4;966:10:11;6131:37:9;6147:4;966:10:11;6162:5:9;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;6221:4;6214:11;;;5988:244;;;;;;:::o;4759:191:6:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:6;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6612:221:10:-;6704:5;;-1:-1:-1;;;;;;;;;;;6721:47:10;-1:-1:-1;13626:5:10;6785:21;;:41;;;-1:-1:-1;;;6785:21:10;;;;:41;:::i;:::-;6778:48;;;6612:221;:::o;6348:245:6:-;-1:-1:-1;;;;;6441:34:6;;966:10:11;6441:34:6;6437:102;;6498:30;;-1:-1:-1;;;6498:30:6;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;6877:153:10:-;-1:-1:-1;;;;;;;;;;;7014:8:10;-1:-1:-1;;;;;7014:8:10;;6877:153::o;4488:157:73:-;4561:7;4592:9;;4583:57;;4592:22;;-1:-1:-1;;;;;4592:9:73;:20;:22::i;:::-;4616:23;4633:5;4616:16;:23::i;:::-;4583:8;:57::i;5830:255::-;5930:9;;:23;;;-1:-1:-1;;;5930:23:73;;;;5898:12;;-1:-1:-1;;;;;5930:9:73;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5922:4;:31;5918:72;;5962:28;;-1:-1:-1;;;5962:28:73;;;;;;;;;;;5918:72;6066:14;;6055:4;;;;6066:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5830:255;;;:::o;4161:214:8:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:8;:::o;9168:392:10:-;9243:7;9262:17;9282:20;9293:8;9282:10;:20::i;:::-;9262:40;;9325:9;9316:6;:18;9312:110;;;9383:8;9393:6;9401:9;9357:54;;-1:-1:-1;;;9357:54:10;;;;;;;;;;:::i;:::-;;;;;;;;9312:110;9432:14;9449:22;9464:6;9449:14;:22::i;:::-;9432:39;-1:-1:-1;9481:48:10;966:10:11;9504:8:10;9514:6;9522;9481:8;:48::i;:::-;9547:6;9168:392;-1:-1:-1;;;;9168:392:10:o;4106:171:9:-;-1:-1:-1;;;;;4250:20:9;4171:7;4250:20;;;-1:-1:-1;;;;;;;;;;;4250:20:9;;;;;;;4106:171::o;3732:207:6:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:6;;;;;;;;-1:-1:-1;;;;;3901:31:6;;;;;;;;;;;;;;;3732:207::o;9603:380:10:-;9675:7;9694:17;9714;9722:8;9714:7;:17::i;:::-;9694:37;;9754:9;9745:6;:18;9741:107;;;9809:8;9819:6;9827:9;9786:51;;-1:-1:-1;;;9786:51:10;;;;;;;;;;:::i;9741:107::-;9858:14;9875:19;9887:6;9875:11;:19::i;:::-;9858:36;-1:-1:-1;9904:48:10;966:10:11;9927:8:10;9937:6;9945;9904:8;:48::i;2973:148:9:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:9;3098:16;;;:::i;4472:178::-;4541:4;966:10:11;4595:27:9;966:10:11;4612:2:9;4616:5;4595:9;:27::i;8580:143:10:-;8646:7;8672:44;8689:6;8697:18;8672:16;:44::i;10030:413::-;10121:7;10140:17;10160:18;10172:5;10160:11;:18::i;:::-;10140:38;;10201:9;10192:6;:18;10188:108;;;10260:5;10267:6;10275:9;10233:52;;-1:-1:-1;;;10233:52:10;;;;;;;;;;:::i;10188:108::-;10306:14;10323:23;10339:6;10323:15;:23::i;:::-;10306:40;-1:-1:-1;10356:56:10;966:10:11;10380:8:10;10390:5;10397:6;10405;10356:9;:56::i;:::-;10430:6;10030:413;-1:-1:-1;;;;;10030:413:10:o;10488:405::-;10577:7;10596:17;10616:16;10626:5;10616:9;:16::i;:::-;10596:36;;10655:9;10646:6;:18;10642:106;;;10712:5;10719:6;10727:9;10687:50;;-1:-1:-1;;;10687:50:10;;;;;;;;;;:::i;10642:106::-;10758:14;10775:21;10789:6;10775:13;:21::i;:::-;10758:38;-1:-1:-1;10806:56:10;966:10:11;10830:8:10;10840:5;10847:6;10855;10806:9;:56::i;4695:225:73:-;4765:7;4800:9;;4765:7;;4800:22;;-1:-1:-1;;;;;4800:9:73;:20;:22::i;:::-;4780:42;;4835:80;4844:48;4861:9;4872:19;4844:16;:48::i;:::-;4894:20;4908:5;4894:13;:20::i;7309:148:10:-;7379:7;7405:45;7422:6;7430:19;7405:16;:45::i;3993:160:73:-;4067:7;4098:9;;4089:59;;4098:23;;-1:-1:-1;;;;;4098:9:73;:21;:23::i;:::-;4123:24;4141:5;4123:17;:24::i;6598:153::-;6708:9;;6681:12;;6708:38;;-1:-1:-1;;;;;6708:9:73;6728:6;6736:9;6708:19;:38::i;5662:138:6:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4205:230:73:-:0;4277:7;4312:9;;4277:7;;4312:23;;-1:-1:-1;;;;;4312:9:73;:21;:23::i;:::-;4292:43;;4348:82;4357:48;4374:9;4385:19;4357:16;:48::i;:::-;4407:22;4423:5;4407:15;:22::i;7480:295::-;1901:30;3191:16:6;3202:4;3191:10;:16::i;:::-;7668:9:73::1;::::0;7632:109:::1;::::0;-1:-1:-1;;;;;7668:9:73::1;7679:11:::0;7692:16;7725:7:::1;:5;:7::i;:::-;7735:5;7632:35;:109::i;:::-;-1:-1:-1::0;;7747:9:73::1;:23:::0;;-1:-1:-1;;;;;;7747:23:73::1;-1:-1:-1::0;;;;;7747:23:73;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;7480:295:73:o;4708:195:9:-;-1:-1:-1;;;;;4867:20:9;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;7489:132:52:-;7581:35;;-1:-1:-1;;;7581:35:52;;7610:4;7581:35;;;6165:51:75;7559:7:52;;-1:-1:-1;;;;;7581:20:52;;;;;6138:18:75;;7581:35:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3263:367:73:-;6931:20:7;:18;:20::i;:::-;3494:58:73::1;3521:5;3528:7;3537:6;3545;3494:26;:58::i;:::-;3558:67;3597:9;3608:16;3558:38;:67::i;:::-;3263:367:::0;;;;;;:::o;11354:213:10:-;11451:7;11477:83;11491:13;:11;:13::i;:::-;:17;;11507:1;11491:17;:::i;:::-;11526:23;13626:5;11526:2;:23;:::i;:::-;4027:14:9;;11510:39:10;;;;:::i;:::-;11477:6;;:83;11551:8;11477:13;:83::i;10001:128:9:-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11017:213:10:-;11114:7;11140:83;11170:23;11114:7;11170:2;:23;:::i;:::-;4027:14:9;;11154:39:10;;;;:::i;:::-;11195:13;:11;:13::i;:::-;:17;;11211:1;11195:17;:::i;4148:103:6:-;4214:30;4225:4;966:10:11;4214::6;:30::i;:::-;4148:103;:::o;6718:318::-;-1:-1:-1;;;;;;;;;;;6801:30:6;6898:18;6911:4;6898:12;:18::i;:::-;6926:8;:14;;;;;;;;;;;:24;;:36;;;6977:52;6870:46;;-1:-1:-1;6953:9:6;;6870:46;;6935:4;;6977:52;;6926:8;6977:52;6791:245;;6718:318;;:::o;11745:477:9:-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:9;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12045:7;12054:16;12072:5;12018:60;;-1:-1:-1;;;12018:60:9;;;;;;;;;;:::i;11963:130::-;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:9;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:9;;6756:1;6729:30;;;6165:51:75;6138:18;;6729:30:9;6019:203:75;6684:86:9;-1:-1:-1;;;;;6783:16:9;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:9;;6851:1;6822:32;;;6165:51:75;6138:18;;6822:32:9;6019:203:75;6779:86:9;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;7270:387:6:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:6;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:6;;;;;;;;;:38;;-1:-1:-1;;7475:38:6;7509:4;7475:38;;;7559:12;966:10:11;;887:96;7559:12:6;-1:-1:-1;;;;;7532:40:6;7550:7;-1:-1:-1;;;;;7532:40:6;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:6;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:6;;;;;;;;;;:39;;-1:-1:-1;;8097:39:6;;;8155:40;966:10:11;;8097:14:6;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;7771:130:52;7862:34;;-1:-1:-1;;;7862:34:52;;7890:4;7862:34;;;6165:51:75;7840:7:52;;-1:-1:-1;;;;;7862:19:52;;;;;6138:18:75;;7862:34:52;6019:203:75;2227:167:56;2300:7;2320:23;1112:20;2337:5;2320:7;:23::i;:::-;2315:38;;-1:-1:-1;2352:1:56;;2227:167;-1:-1:-1;2227:167:56:o;2315:38::-;-1:-1:-1;;2366:23:56;7708:108:10;3371:111:42;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;4603:312:8;4683:4;-1:-1:-1;;;;;4692:6:8;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:8;:32;-1:-1:-1;;;;;;;;;;;1519:53:27;-1:-1:-1;;;;;1519:53:27;;1441:138;4753:32:8;-1:-1:-1;;;;;4753:42:8;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:8;;;;;;;;;;;4658:251;4603:312::o;1943:93:56:-;1176:26;3191:16:6;3202:4;3191:10;:16::i;6057:538:8:-;6174:17;-1:-1:-1;;;;;6156:50:8;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:8;;;;;;;;-1:-1:-1;;6156:52:8;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:8;;-1:-1:-1;;;;;6183:32:75;;6518:60:8;;;6165:51:75;6138:18;;6518:60:8;6019:203:75;6152:437:8;-1:-1:-1;;;;;;;;;;;6250:40:8;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:8;;;;;160:25:75;;;133:18;;6317:34:8;14:177:75;6246:120:8;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:8;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:8;;;;;;;;;;;5358:278:73;5543:48;5558:6;5566:8;5576:6;5584;5543:14;:48::i;:::-;5625:5;5597:9;;:34;;-1:-1:-1;;;;;5597:9:73;;;;5617:6;;5597:19;:34::i;:::-;;5358:278;;;;:::o;5096:258::-;5281:5;5252:9;;:35;;-1:-1:-1;;;;;5252:9:73;;;;5273:6;;5252:20;:35::i;:::-;;5293:56;5309:6;5317:8;5327:5;5334:6;5342;5293:15;:56::i;8054:132:52:-;8146:35;;-1:-1:-1;;;8146:35:52;;8175:4;8146:35;;;6165:51:75;8124:7:52;;-1:-1:-1;;;;;8146:20:52;;;;;6138:18:75;;8146:35:52;6019:203:75;8017:153:10;8082:7;8108:55;8125:16;8135:5;8125:9;:16::i;:::-;8143:19;8108:16;:55::i;4743:249:52:-;4844:12;4877:110;4967:6;4975:9;4916:70;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4916:70:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4916:70:52;-1:-1:-1;;;4916:70:52;;;-1:-1:-1;;;;;4877:38:52;;;;:110::i;8218:112:10:-;8281:7;8307:16;8317:5;8307:9;:16::i;5914:843:52:-;6103:39;6114:11;6135:5;6103:10;:39::i;:::-;6312:38;;-1:-1:-1;;;6312:38:52;;6344:4;6312:38;;;6165:51:75;6288:70:52;;6299:11;;-1:-1:-1;;;;;6312:23:52;;;;;6138:18:75;;6312:38:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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:52;;6686:4;6662:30;;;6165:51:75;6639:61:52;;6649:11;;-1:-1:-1;;;;;6662:15:52;;;;;6138:18:75;;6662:30:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6694:5;6639:9;:61::i;:::-;-1:-1:-1;6711:41:52;;;-1:-1:-1;;;;;13529:32:75;;;13511:51;;13598:32;;13593:2;13578:18;;13571:60;6711:41:52;;13484:18:75;6711:41:52;;;;;;;5914:843;;;;;:::o;7084:141:7:-;8870:21;8560:40;-1:-1:-1;;;8560:40:7;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:7;;;;;;;;;;;1296:404:56;6931:20:7;:18;:20::i;:::-;1459:24:56::1;:22;:24::i;:::-;1489:22;:20;:22::i;:::-;-1:-1:-1::0;;;;;1521:29:56;::::1;1517:66;;1559:24;::::0;-1:-1:-1;;;1559:24:56;;1580:1:::1;1559:24;::::0;::::1;6165:51:75::0;6138:18;;1559:24:56::1;6019:203:75::0;1517:66:56::1;1589:22;1604:6;1589:14;:22::i;:::-;1617:28;1630:5;1637:7;1617:12;:28::i;:::-;1651:44;1688:6;1651:36;:44::i;3685:254:73:-:0;6931:20:7;:18;:20::i;:::-;3835:9:73::1;:21:::0;;-1:-1:-1;;;;;;3835:21:73::1;-1:-1:-1::0;;;;;3835:21:73;::::1;;::::0;;3862:29:::1;3883:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;3862:20:73;::::1;::::0;::::1;:29::i;:::-;3897:9;::::0;:37:::1;::::0;-1:-1:-1;;;;;3897:9:73::1;3917:16:::0;3897:19:::1;:37::i;9351:238:42:-:0;9452:7;9506:76;9522:26;9539:8;9522:16;:26::i;:::-;:59;;;;;9580:1;9565:11;9552:25;;;;;:::i;:::-;9562:1;9559;9552:25;:29;9522:59;34914:9:43;34907:17;;34795:145;9506:76:42;9478:25;9485:1;9488;9491:11;9478:6;:25::i;:::-;:104;;;;:::i;10976:487:9:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:9;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:9;;11212:1;11183:32;;;6165:51:75;6138:18;;11183:32:9;6019:203:75;11137:89:9;-1:-1:-1;;;;;11239:21:9;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:9;;11311:1;11283:31;;;6165:51:75;6138:18;;11283:31:9;6019:203:75;11235:90:9;-1:-1:-1;;;;;11334:20:9;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:9;11424:5;-1:-1:-1;;;;;11415:31:9;;11440:5;11415:31;;;;160:25:75;;148:2;133:18;;14:177;11415:31:9;;;;;;;;11074:389;10976:487;;;;:::o;4381:197:6:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:6;;-1:-1:-1;;;;;13966:32:75;;4514:47:6;;;13948:51:75;14015:18;;;14008:34;;;13921:18;;4514:47:6;13774:274:75;7220:1170:9;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:9;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:9;;-1:-1:-1;7358:546:9;;-1:-1:-1;;;;;7574:17:9;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7680:4;7686:11;7699:5;7655:50;;-1:-1:-1;;;7655:50:9;;;;;;;;;;:::i;7605:115::-;-1:-1:-1;;;;;7840:17:9;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:9;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:9;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:9;8367:4;-1:-1:-1;;;;;8358:25:9;;8377:5;8358:25;;;;160::75;;148:2;133:18;;14:177;8358:25:9;;;;;;;;7295:1095;7220: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;11631:890:10:-;-1:-1:-1;;;;;;;;;;;12384:8:10;;12357:67;;-1:-1:-1;;;;;12384:8:10;12394:6;12410:4;12417:6;12357:26;:67::i;:::-;12434:23;12440:8;12450:6;12434:5;:23::i;:::-;12489:8;-1:-1:-1;;;;;12473:41:10;12481:6;-1:-1:-1;;;;;12473:41:10;;12499:6;12507;12473:41;;;;;;14227:25:75;;;14283:2;14268:18;;14261:34;14215:2;14200:18;;14053:248;3816:540:52;3913:4;3929:11;3925:427;;;4008:12;4022:23;4057:8;-1:-1:-1;;;;;4049:30:52;4129:6;4089:47;;;;;;160:25:75;;148:2;133:18;;14:177;4089:47:52;;;;-1:-1:-1;;4089:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4089:47:52;-1:-1:-1;;;4089:47:52;;;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:52;-1:-1:-1;4204:14:52;;3925:427;4239:87;4318:6;4278:47;;;;;;160:25:75;;148:2;133:18;;14:177;4278:47:52;;;;-1:-1:-1;;4278:47:52;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:47:52;-1:-1:-1;;;4278:47:52;;;-1:-1:-1;;;;;4239:38:52;;;;: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:52;3050:6;3009:48;;;;;;160:25:75;;148:2;133:18;;14:177;3009:48:52;;;;-1:-1:-1;;3009:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3009:48:52;-1:-1:-1;;;3009:48:52;;;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:75;;148:2;133:18;;14:177;3200:48:52;;;;-1:-1:-1;;3200:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;3200:48:52;-1:-1:-1;;;3200:48:52;;;-1:-1:-1;;;;;3161:38:52;;;;:88::i;12588:974:10:-;-1:-1:-1;;;;;;;;;;;;;;;;12822:15:10;;;;;;;12818:84;;12853:38;12869:5;12876:6;12884;12853:15;:38::i;:::-;13410:20;13416:5;13423:6;13410:5;:20::i;:::-;13463:8;;13440:50;;-1:-1:-1;;;;;13463:8:10;13473;13483:6;13440:22;:50::i;:::-;13533:5;-1:-1:-1;;;;;13506:49:10;13523:8;-1:-1:-1;;;;;13506:49:10;13515:6;-1:-1:-1;;;;;13506:49:10;;13540:6;13548;13506:49;;;;;;14227:25:75;;;14283:2;14268:18;;14261:34;14215:2;14200:18;;14053:248;13506:49:10;;;;;;;;12751:811;12588:974;;;;;:::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;5181:159:52:-;5266:29;;-1:-1:-1;;;5266:29:52;;5289:4;5266:29;;;6165:51:75;-1:-1:-1;;;;;5266:38:52;;;;:14;;;;;;6138:18:75;;5266:29:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5266:38:52;;5262:73;;5313:22;;-1:-1:-1;;;5313:22:52;;;;;;;;;;;1729:465;1808:5;1804:386;;;1962:48;;2005:4;1962:48;;;627:41:75;1881:12:52;;;;-1:-1:-1;;;;;1922:30:52;;;600:18:75;;1962:48:52;;;-1:-1:-1;;1962:48:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1962:48:52;-1:-1:-1;;;1962:48:52;;;1922:96;;;1962:48;1922:96;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1880:138;;;;2031:7;2026:47;;2045:28;2062:10;2045:28;;;;;;:::i;:::-;;;;;;;;1815:265;;4161:214:8;;:::o;1804:386:52:-;2133:49;;2176:5;2133:49;;;627:41:75;2094:89:52;;600:18:75;;2133:49:52;;;-1:-1:-1;;2133:49:52;;;;;;;;;;;;;;-1:-1:-1;;;;;2133:49:52;-1:-1:-1;;;2133:49:52;;;-1:-1:-1;;;;;2094:38:52;;;;:89::i;1120:193::-;1211:97;1290:16;1250:57;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1250:57:52;;;;;;;;;;;;;;-1:-1:-1;;;;;1250:57:52;-1:-1:-1;;;1250:57:52;;;-1:-1:-1;;;;;1211:38:52;;;;:97::i;2970:67:8:-;6931:20:7;:18;:20::i;5090:114:10:-;6931:20:7;:18;:20::i;:::-;5165:32:10::1;5190:6;5165:24;:32::i;2282:147:9:-:0;6931:20:7;:18;:20::i;:::-;2384:38:9::1;2407:5;2414:7;2384:22;:38::i;1755:137:56:-:0;6931:20:7;:18;:20::i;:::-;1849:38:56::1;2362:4:6;1880:6:56::0;1849:10:::1;:38::i;28183:122:42:-:0;28251:4;28292:1;28280:8;28274:15;;;;;;;;:::i;:::-;:19;;;;:::i;:::-;:24;;28297:1;28274:24;28267:31;;28183:122;;;:::o;4996:4226::-;5078:14;5449:5;;;5078:14;-1:-1:-1;;5453:1:42;5449;5621:20;5694:5;5690:2;5687:13;5679:5;5675:2;5671:14;5667:34;5658:43;;;5796:5;5805:1;5796:10;5792:368;;6134:11;6126:5;:19;;;;;:::i;:::-;;6119:26;;;;;;5792:368;6285:5;6270:11;:20;6266:143;;6310:84;3066:5;6330:16;;3065:36;940:4:38;3060:42:42;6310:11;:84::i;:::-;6664:17;6799:11;6796:1;6793;6786:25;7199:12;7229:15;;;7214:31;;7348:22;;;;;8094:1;8075;:15;;8074:21;;8327;;;8323:25;;8312:36;8397:21;;;8393:25;;8382:36;8469:21;;;8465:25;;8454:36;8540:21;;;8536:25;;8525:36;8613:21;;;8609:25;;8598:36;8687:21;;;8683:25;;;8672:36;7597:12;;;;7593:23;;;7618:1;7589:31;6913:20;;;6902:32;;;7709:12;;;;6960:21;;;;7446:16;;;;7700:21;;;;9163:15;;;;;-1:-1:-1;;4996:4226:42;;;;;:::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;;;;;6183:32:75;;1805:47:27;;;6165:51:75;6138:18;;1805:47:27;6019:203:75;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;;;;;;;;;;;1670:188:33;1797:53;;-1:-1:-1;;;;;15479:32:75;;;1797:53:33;;;15461:51:75;15548:32;;;15528:18;;;15521:60;15597:18;;;15590:34;;;1770:81:33;;1790:5;;1812:18;;;;;15434::75;;1797:53:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1797:53:33;;;;;;;;;;;1770:19;:81::i;8733:208:9:-;-1:-1:-1;;;;;8803:21:9;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:9;;8876:1;8847:32;;;6165:51:75;6138:18;;8847:32:9;6019:203:75;8799:91:9;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:9;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:9;;9400:1;9373:30;;;6165:51:75;6138:18;;9373:30:9;6019:203:75;9325:89:9;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;1271:160:33:-;1380:43;;-1:-1:-1;;;;;13966:32:75;;;1380:43:33;;;13948:51:75;14015:18;;;14008:34;;;1353:71:33;;1373:5;;1395:14;;;;;13921:18:75;;1380:43:33;13774:274:75;4421:582:34;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:34;;-1:-1:-1;;;;;6183:32:75;;4917:24:34;;;6165:51:75;6138:18;;4917:24:34;6019:203:75;4837:119:34;-1:-1:-1;4976:10:34;4969:17;;5210:304:10;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;5295:24:10::1;::::0;5390:28:::1;5411:6:::0;5390:20:::1;:28::i;:::-;5352:66;;;;5452:7;:28;;5478:2;5452:28;;;5462:13;5452:28;5428:52:::0;;-1:-1:-1;;;;;;5490:17:10;-1:-1:-1;;;5428:52:10::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;5490:17:10;;-1:-1:-1;;;;;5490:17:10;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;5210:304:10:o;2435:216:9:-;6931:20:7;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:9;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:9::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;1776:194:38:-:0;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;7738:720:33;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:33;8278:8;8234:16;;-1:-1:-1;8310:15:33;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:33;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:33;;-1:-1:-1;;;;;6183:32:75;;8401:40:33;;;6165:51:75;6138:18;;8401:40:33;6019:203:75;5543:487:34;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;5657:550:10;5851:43;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5851:43:10;-1:-1:-1;;;5851:43:10;;;5811:93;;5724:7;;;;;;;;-1:-1:-1;;;;;5811:26:10;;;:93;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:140;;;;5918:7;:39;;;;;5955:2;5929:15;:22;:28;;5918:39;5914:260;;;5973:24;6011:15;6000:38;;;;;;;;;;;;:::i;:::-;5973:65;-1:-1:-1;6076:15:10;6056:35;;6052:112;;6119:4;;6131:16;;-1:-1:-1;5657:550:10;-1:-1:-1;;;;5657:550:10:o;6052:112::-;5959:215;5914:260;-1:-1:-1;6191:5:10;;;;-1:-1:-1;5657:550:10;-1:-1:-1;;;5657:550:10:o;196:286:75:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:75;;391:43;;381:71;;448:1;445;438:12;679:127;740:10;735:3;731:20;728:1;721:31;771:4;768:1;761:15;795:4;792:1;785:15;811:889;854:5;907:3;900:4;892:6;888:17;884:27;874:55;;925:1;922;915:12;874:55;965:6;952:20;1004:4;996:6;992:17;1033:1;1055;1079:18;1071:6;1068:30;1065:56;;;1101:18;;:::i;:::-;-1:-1:-1;1256:2:75;1250:9;-1:-1:-1;;1169:2:75;1148:15;;1144:29;;1314:2;1302:15;1298:29;1286:42;;1379:22;;;1358:18;1343:34;;1340:62;1337:88;;;1405:18;;:::i;:::-;1441:2;1434:22;1491;;;1476:6;-1:-1:-1;1476:6:75;1528:16;;;1525:25;-1:-1:-1;1522:45:75;;;1563:1;1560;1553:12;1522:45;1613:6;1608:3;1601:4;1593:6;1589:17;1576:44;1668:1;1661:4;1652:6;1644;1640:19;1636:30;1629:41;1688:6;1679:15;;;;;;811:889;;;;:::o;1705:131::-;-1:-1:-1;;;;;1780:31:75;;1770:42;;1760:70;;1826:1;1823;1816:12;1841:1213;2014:6;2022;2030;2038;2046;2054;2107:3;2095:9;2086:7;2082:23;2078:33;2075:53;;;2124:1;2121;2114:12;2075:53;2164:9;2151:23;2197:18;2189:6;2186:30;2183:50;;;2229:1;2226;2219:12;2183:50;2252;2294:7;2285:6;2274:9;2270:22;2252:50;:::i;:::-;2242:60;;;2355:2;2344:9;2340:18;2327:32;2384:18;2374:8;2371:32;2368:52;;;2416:1;2413;2406:12;2368:52;2439;2483:7;2472:8;2461:9;2457:24;2439:52;:::i;:::-;2429:62;;;2541:2;2530:9;2526:18;2513:32;2554:31;2579:5;2554:31;:::i;:::-;2604:5;-1:-1:-1;2661:2:75;2646:18;;2633:32;2674:33;2633:32;2674:33;:::i;:::-;2726:7;-1:-1:-1;2785:3:75;2770:19;;2757:33;2799;2757;2799;:::i;:::-;2851:7;-1:-1:-1;2911:3:75;2896:19;;2883:33;2941:18;2928:32;;2925:52;;;2973:1;2970;2963:12;2925:52;2996;3040:7;3029:8;3018:9;3014:24;2996:52;:::i;:::-;2986:62;;;1841:1213;;;;;;;;:::o;3059:289::-;3101:3;3139:5;3133:12;3166:6;3161:3;3154:19;3222:6;3215:4;3208:5;3204:16;3197:4;3192:3;3188:14;3182:47;3274:1;3267:4;3258:6;3253:3;3249:16;3245:27;3238:38;3337:4;3330:2;3326:7;3321:2;3313:6;3309:15;3305:29;3300:3;3296:39;3292:50;3285:57;;;3059:289;;;;:::o;3353:220::-;3502:2;3491:9;3484:21;3465:4;3522:45;3563:2;3552:9;3548:18;3540:6;3522:45;:::i;3578:226::-;3637:6;3690:2;3678:9;3669:7;3665:23;3661:32;3658:52;;;3706:1;3703;3696:12;3658:52;-1:-1:-1;3751:23:75;;3578:226;-1:-1:-1;3578:226:75:o;3809:367::-;3877:6;3885;3938:2;3926:9;3917:7;3913:23;3909:32;3906:52;;;3954:1;3951;3944:12;3906:52;3993:9;3980:23;4012:31;4037:5;4012:31;:::i;:::-;4062:5;4140:2;4125:18;;;;4112:32;;-1:-1:-1;;;3809:367:75:o;4181:346::-;4249:6;4257;4310:2;4298:9;4289:7;4285:23;4281:32;4278:52;;;4326:1;4323;4316:12;4278:52;-1:-1:-1;;4371:23:75;;;4491:2;4476:18;;;4463:32;;-1:-1:-1;4181:346:75:o;4532:508::-;4609:6;4617;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4733:9;4720:23;4752:31;4777:5;4752:31;:::i;:::-;4802:5;-1:-1:-1;4859:2:75;4844:18;;4831:32;4872:33;4831:32;4872:33;:::i;:::-;4532:508;;4924:7;;-1:-1:-1;;;5004:2:75;4989:18;;;;4976:32;;4532:508::o;5458:367::-;5526:6;5534;5587:2;5575:9;5566:7;5562:23;5558:32;5555:52;;;5603:1;5600;5593:12;5555:52;5648:23;;;-1:-1:-1;5747:2:75;5732:18;;5719:32;5760:33;5719:32;5760:33;:::i;:::-;5812:7;5802:17;;;5458:367;;;;;:::o;6227:247::-;6286:6;6339:2;6327:9;6318:7;6314:23;6310:32;6307:52;;;6355:1;6352;6345:12;6307:52;6394:9;6381:23;6413:31;6438:5;6413:31;:::i;6702:456::-;6779:6;6787;6840:2;6828:9;6819:7;6815:23;6811:32;6808:52;;;6856:1;6853;6846:12;6808:52;6895:9;6882:23;6914:31;6939:5;6914:31;:::i;:::-;6964:5;-1:-1:-1;7020:2:75;7005:18;;6992:32;7047:18;7036:30;;7033:50;;;7079:1;7076;7069:12;7033:50;7102;7144:7;7135:6;7124:9;7120:22;7102:50;:::i;:::-;7092:60;;;6702:456;;;;;:::o;7768:508::-;7845:6;7853;7861;7914:2;7902:9;7893:7;7889:23;7885:32;7882:52;;;7930:1;7927;7920:12;7882:52;7975:23;;;-1:-1:-1;8074:2:75;8059:18;;8046:32;8087:33;8046:32;8087:33;:::i;:::-;8139:7;-1:-1:-1;8198:2:75;8183:18;;8170:32;8211:33;8170:32;8211:33;:::i;:::-;8263:7;8253:17;;;7768:508;;;;;:::o;8281:478::-;8356:6;8364;8417:2;8405:9;8396:7;8392:23;8388:32;8385:52;;;8433:1;8430;8423:12;8385:52;8472:9;8459:23;8522:4;8515:5;8511:16;8504:5;8501:27;8491:55;;8542:1;8539;8532:12;8764:650;8872:6;8880;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8996:9;8983:23;9015:31;9040:5;9015:31;:::i;:::-;9065:5;-1:-1:-1;9121:2:75;9106:18;;9093:32;9148:18;9137:30;;9134:50;;;9180:1;9177;9170:12;9134:50;9203;9245:7;9236:6;9225:9;9221:22;9203:50;:::i;:::-;9193:60;;;9305:2;9294:9;9290:18;9277:32;9354:7;9347:15;9340:23;9331:7;9328:36;9318:64;;9378:1;9375;9368:12;9419:388;9487:6;9495;9548:2;9536:9;9527:7;9523:23;9519:32;9516:52;;;9564:1;9561;9554:12;9516:52;9603:9;9590:23;9622:31;9647:5;9622:31;:::i;:::-;9672:5;-1:-1:-1;9729:2:75;9714:18;;9701:32;9742:33;9701:32;9742:33;:::i;10026:380::-;10105:1;10101:12;;;;10148;;;10169:61;;10223:4;10215:6;10211:17;10201:27;;10169:61;10276:2;10268:6;10265:14;10245:18;10242:38;10239:161;;10322:10;10317:3;10313:20;10310:1;10303:31;10357:4;10354:1;10347:15;10385:4;10382:1;10375:15;10239:161;;10026:380;;;:::o;10411:127::-;10472:10;10467:3;10463:20;10460:1;10453:31;10503:4;10500:1;10493:15;10527:4;10524:1;10517:15;10543:148;10631:4;10610:12;;;10624;;;10606:31;;10649:13;;10646:39;;;10665:18;;:::i;10696:184::-;10766:6;10819:2;10807:9;10798:7;10794:23;10790:32;10787:52;;;10835:1;10832;10825:12;10787:52;-1:-1:-1;10858:16:75;;10696:184;-1:-1:-1;10696:184:75:o;10885:345::-;-1:-1:-1;;;;;11105:32:75;;;;11087:51;;11169:2;11154:18;;11147:34;;;;11212:2;11197:18;;11190:34;11075:2;11060:18;;10885:345::o;11424:125::-;11489:9;;;11510:10;;;11507:36;;;11523:18;;:::i;11554:375::-;11642:1;11660:5;11674:249;11695:1;11685:8;11682:15;11674:249;;;11745:4;11740:3;11736:14;11730:4;11727:24;11724:50;;;11754:18;;:::i;:::-;11804:1;11794:8;11790:16;11787:49;;;11818:16;;;;11787:49;11901:1;11897:16;;;;;11857:15;;11674:249;;;11554:375;;;;;;:::o;11934:902::-;11983:5;12013:8;12003:80;;-1:-1:-1;12054:1:75;12068:5;;12003:80;12102:4;12092:76;;-1:-1:-1;12139:1:75;12153:5;;12092:76;12184:4;12202:1;12197:59;;;;12270:1;12265:174;;;;12177:262;;12197:59;12227:1;12218:10;;12241:5;;;12265:174;12302:3;12292:8;12289:17;12286:43;;;12309:18;;:::i;:::-;-1:-1:-1;;12365:1:75;12351:16;;12424:5;;12177:262;;12523:2;12513:8;12510:16;12504:3;12498:4;12495:13;12491:36;12485:2;12475:8;12472:16;12467:2;12461:4;12458:12;12454:35;12451:77;12448:203;;;-1:-1:-1;12560:19:75;;;12636:5;;12448:203;12683:42;-1:-1:-1;;12708:8:75;12702:4;12683:42;:::i;:::-;12761:6;12757:1;12753:6;12749:19;12740:7;12737:32;12734:58;;;12772:18;;:::i;:::-;12810:20;;11934:902;-1:-1:-1;;;11934:902:75:o;12841:140::-;12899:5;12928:47;12969:4;12959:8;12955:19;12949:4;12928:47;:::i;12986:296::-;13169:4;13161:6;13157:17;13146:9;13139:36;13211:2;13206;13195:9;13191:18;13184:30;13120:4;13231:45;13272:2;13261:9;13257:18;13249:6;13231:45;:::i;13642:127::-;13703:10;13698:3;13694:20;13691:1;13684:31;13734:4;13731:1;13724:15;13758:4;13755:1;13748:15;14306:301;14435:3;14473:6;14467:13;14519:6;14512:4;14504:6;14500:17;14495:3;14489:37;14581:1;14545:16;;14570:13;;;-1:-1:-1;14545:16:75;14306:301;-1:-1:-1;14306:301:75:o;14612:251::-;14682:6;14735:2;14723:9;14714:7;14710:23;14706:32;14703:52;;;14751:1;14748;14741:12;14703:52;14783:9;14777:16;14802:31;14827:5;14802:31;:::i;14868:127::-;14929:10;14924:3;14920:20;14917:1;14910:31;14960:4;14957:1;14950:15;14984:4;14981:1;14974:15;15000:254;15030:1;15064:4;15061:1;15057:12;15088:3;15078:134;;15134:10;15129:3;15125:20;15122:1;15115:31;15169:4;15166:1;15159:15;15197:4;15194:1;15187:15;15078:134;15244:3;15237:4;15234:1;15230:12;15226:22;15221:27;;;15000:254;;;;:::o;16040:518::-;16142:2;16137:3;16134:11;16131:421;;;16178:5;16175:1;16168:16;16222:4;16219:1;16209:18;16292:2;16280:10;16276:19;16273:1;16269:27;16263:4;16259:38;16328:4;16316:10;16313:20;16310:47;;;-1:-1:-1;16351:4:75;16310:47;16406:2;16401:3;16397:12;16394:1;16390:20;16384:4;16380:31;16370:41;;16461:81;16479:2;16472:5;16469:13;16461:81;;;16538:1;16524:16;;16505:1;16494:13;16461:81;;16734:1299;16860:3;16854:10;16887:18;16879:6;16876:30;16873:56;;;16909:18;;:::i;:::-;16938:97;17028:6;16988:38;17020:4;17014:11;16988:38;:::i;:::-;16982:4;16938:97;:::i;:::-;17084:4;17115:2;17104:14;;17132:1;17127:649;;;;17820:1;17837:6;17834:89;;;-1:-1:-1;17889:19:75;;;17883:26;17834:89;-1:-1:-1;;16691:1:75;16687:11;;;16683:24;16679:29;16669:40;16715:1;16711:11;;;16666:57;17936:81;;17097:930;;17127:649;15987:1;15980:14;;;16024:4;16011:18;;-1:-1:-1;;17163:20:75;;;17281:222;17295:7;17292:1;17289:14;17281:222;;;17377:19;;;17371:26;17356:42;;17484:4;17469:20;;;;17437:1;17425:14;;;;17311:12;17281:222;;;17285:3;17531:6;17522:7;17519:19;17516:201;;;17592:19;;;17586:26;-1:-1:-1;;17675:1:75;17671:14;;;17687:3;17667:24;17663:37;17659:42;17644:58;17629:74;;17516:201;-1:-1:-1;;;;17763:1:75;17747:14;;;17743:22;17730:36;;-1:-1:-1;16734:1299:75:o"},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","GUARDIAN_ROLE()":"24ea54f4","LP_ROLE()":"e1d39450","SET_STRATEGY_ROLE()":"baaf36b5","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","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(string,string,address,address,address,bytes)":"02a602e9","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","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setRoleAdmin(bytes32,bytes32)":"1e4e0091","setStrategy(address,bytes,bool)":"d9221bb5","strategy()":"a8c62e76","supportsInterface(bytes4)":"01ffc9a7","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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"InvalidAsset\",\"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\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GUARDIAN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LP_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SET_STRATEGY_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"adminRole\",\"type\":\"bytes32\"}],\"name\":\"setRoleAdmin\",\"outputs\":[],\"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\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC4626-asset}. \"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"convertToAssets(uint256)\":{\"details\":\"See {IERC4626-convertToAssets}. \"},\"convertToShares(uint256)\":{\"details\":\"See {IERC4626-convertToShares}. \"},\"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\":\"See {IERC4626-deposit}. \"},\"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.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(string,string,address,address,address,bytes)\":{\"details\":\"Initializes the SingleStrategyERC4626\",\"params\":{\"admin_\":\"User that will receive the DEFAULT_ADMIN_ROLE and later can assign other permissions.\",\"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\":\"See {IERC4626-mint}. \"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"previewDeposit(uint256)\":{\"details\":\"See {IERC4626-previewDeposit}. \"},\"previewMint(uint256)\":{\"details\":\"See {IERC4626-previewMint}. \"},\"previewRedeem(uint256)\":{\"details\":\"See {IERC4626-previewRedeem}. \"},\"previewWithdraw(uint256)\":{\"details\":\"See {IERC4626-previewWithdraw}. \"},\"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\":\"See {IERC4626-redeem}. \"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"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\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalAssets()\":{\"details\":\"See {IERC4626-totalAssets}.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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\":\"See {IERC4626-withdraw}. \"}},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xbb96dc9c468170c3224126e953de917e06332ec5909a3d85e6e5bb0df10c5139\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d14e6486e127e7e31c2ffccfc212c7ebaaecf8fb05677575128b449ee113def2\",\"dweb:/ipfs/QmabvyfStwBcum8mGfkmxcTV45rjyHmzHGCxfxyhmu48Yx\"]},\"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC4626Upgradeable.sol\":{\"keccak256\":\"0xa683afe511eb3a2e8a039c5aa18feda651c6de04b92e101532ac76661fdaad8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2117b118221d039e98d77bef9b0b68e95b600403f16aa1b565e3d6c0bcd6384\",\"dweb:/ipfs/QmZAhSMkC257uzT16gLkkuS1q7sLRos1Euj1oPMJXg8rSh\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4626.sol\":{\"keccak256\":\"0x666c704c58d4cf404eecd6e4a898a87e25b00b45416678de914e160582c3ff17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6def3cc823ae3f155da28a241a8ff91538222053ed9d78f415758a9133e211a1\",\"dweb:/ipfs/QmSriniszojh4UP4WQqxCJhq2XsbCAULcB4qRij4EYw9Gi\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@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\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@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/PermissionedERC4626.sol\":{\"keccak256\":\"0x2760466f73e34bf00a2710b08a47a9ca11d36ef8e965cc2a973613da91cffd21\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://2d05b8b13e64ea02b37f91980a0496e04e6d50a27fd0b708dc9a785d51732c15\",\"dweb:/ipfs/QmQjNATyUL5tuheXexHwZf4bZKDNp57GkcLth9xXxg1xes\"]},\"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\":\"0xc2fc30f353a5cd3ce8d36fdb35dd7fb87e27df6c1821fe4e6d65841be9f98161\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1adaff9bccb3b61e4763872a55735accfb72a643919d36fce016394621b30383\",\"dweb:/ipfs/QmaFEqXTr8hj2BGW6kNGrcwodyUsG3Vb8dm8xvPvZJMZH7\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":22831,"contract":"contracts/mock/SingleStrategyERC4626.sol:SingleStrategyERC4626","label":"_strategy","offset":0,"slot":"0","type":"t_contract(IInvestStrategy)22374"},{"astId":23222,"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)22374":{"encoding":"inplace","label":"contract IInvestStrategy","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}}}},"solidity-bytes-utils/contracts/BytesLib.sol":{"BytesLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122034ff36ff20504c4c1f0029a21ca14b3a81bc00270e55db41ff8aa9a2d7f15c7f64736f6c634300081c0033","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 CALLVALUE SELFDESTRUCT CALLDATASIZE SELFDESTRUCT KECCAK256 POP 0x4C 0x4C 0x1F STOP 0x29 LOG2 SHR LOG1 0x4B GASPRICE DUP2 0xBC STOP 0x27 0xE SSTORE 0xDB COINBASE SELFDESTRUCT DUP11 0xA9 LOG2 0xD7 CALL TLOAD PUSH32 0x64736F6C634300081C0033000000000000000000000000000000000000000000 ","sourceMap":"370:21307:74:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;370:21307:74;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040525f5ffdfea264697066735822122034ff36ff20504c4c1f0029a21ca14b3a81bc00270e55db41ff8aa9a2d7f15c7f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH0 PUSH0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLVALUE SELFDESTRUCT CALLDATASIZE SELFDESTRUCT KECCAK256 POP 0x4C 0x4C 0x1F STOP 0x29 LOG2 SHR LOG1 0x4B GASPRICE DUP2 0xBC STOP 0x27 0xE SSTORE 0xDB COINBASE SELFDESTRUCT DUP11 0xA9 LOG2 0xD7 CALL TLOAD PUSH32 0x64736F6C634300081C0033000000000000000000000000000000000000000000 ","sourceMap":"370:21307:74:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"solidity-bytes-utils/contracts/BytesLib.sol\":{\"keccak256\":\"0xa5b10f04797d5a10a9ba07855108b6bd695940e6a3d128927b2f74a0d359868a\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://a38d7680aacbb18dae659876b396b73bcc8f759672213f8a0efc4129e2648535\",\"dweb:/ipfs/QmfKFnwpTEGAnbRnZxMuv3mRCG9S9WMjFhFL23bftBT2Jq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}}